diff --git a/sdk/Darwin/2019.2/FBX_SDK_Online_Documentation.html b/sdk/Darwin/2019.2/FBX_SDK_Online_Documentation.html deleted file mode 100644 index eb6ff87..0000000 --- a/sdk/Darwin/2019.2/FBX_SDK_Online_Documentation.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/sdk/Darwin/2019.2/License.rtf b/sdk/Darwin/2019.2/License.rtf deleted file mode 100644 index 196ea14..0000000 --- a/sdk/Darwin/2019.2/License.rtf +++ /dev/null @@ -1,1128 +0,0 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1041\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} -{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} -{\f39\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbmajor\f31501\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} -{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbminor\f31505\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f50\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f51\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} -{\f53\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f54\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f55\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f56\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f57\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f58\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f152\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f150\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f151\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f153\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f154\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f157\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f432\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f430\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;} -{\f431\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f433\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f434\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f437\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;} -{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fdbmajor\f31520\fbidi \fmodern\fcharset0\fprq1 MS Gothic Western{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31518\fbidi \fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fdbmajor\f31519\fbidi \fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31521\fbidi \fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fdbmajor\f31522\fbidi \fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31525\fbidi \fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} -{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} -{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31560\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31558\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31559\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31561\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31562\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31565\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} -{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} -{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; -\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red31\green73\blue125;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 -\ltrch\fcs0 \fs22\lang1033\langfe1041\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1041\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 \snext11 \ssemihidden \sunhideused -Normal Table;}}{\*\rsidtbl \rsid4142109\rsid5905377}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Roberto Regalino}{\creatim\yr2017\mo1\dy30\hr11\min42} -{\revtim\yr2017\mo1\dy30\hr11\min43}{\version2}{\edmins1}{\nofpages20}{\nofwords14481}{\nofchars82543}{\nofcharsws96831}{\vern57441}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} -\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect -\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 -\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot5905377 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qr \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1041\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 { -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf2\insrsid4142109 -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk -\par \hich\af1\dbch\af31505\loch\f1 LICENSE AND SERVICES AGREEMENT -\par \hich\af1\dbch\af31505\loch\f1 Autodesk}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 FBX}{ -\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid5905377 \hich\af1\dbch\af31505\loch\f1 SDK 2019}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 -\par -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 READ CAREFULLY:}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 AUTODESK LICENSES THE SOFTWARE AND OTHER LICENSED MATERIALS ONLY ON THE CONDITION THAT LICENSEE ACCEPTS ALL OF THE TERMS CONTAINED OR REFERENCED IN THIS AGREEMENT. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 By selecting the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism designed to acknowledge agreement to the terms of an electronic copy of this Agreement, or by installing, downloading, accessing, or otherwise copying or using all or any portion of the Autod -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -sk Materials, (i) you accept this Agreement on behalf of the entity for which you are authorized to act (e.g., an employer) and acknowledge that such entity is legally bound by this Agreement (and you agree to act in a manner consistent with this Agreemen -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -) or, if there is no such entity for which you are authorized to act, you accept this Agreement on behalf of yourself as an individual and acknowledge that you are legally bound by this Agreement, and (ii) you represent and warrant that you have the right -,\hich\af1\dbch\af31505\loch\f1 - power and authority to act on behalf of and bind such entity (if any) or yourself. You may not accept this Agreement on behalf of another entity unless you are an employee or other agent of such other entity with the right, power and authority to act on -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 behalf of such other entity. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 -If Licensee is unwilling to accept this Agreement, or you do not have the right, power and authority to act on behalf of and bind such entity or yourself as an individual (if there is no such entity), (a) DO NOT SELECT THE \'93\loch\f1 I A -\hich\af1\dbch\af31505\loch\f1 \hich\f1 CCEPT\'94\loch\f1 - BUTTON OR OTHERWISE CLICK ON ANY BUTTON OR OTHER MECHANISM DESIGNED TO ACKNOWLEDGE AGREEMENT, AND DO NOT INSTALL, DOWNLOAD, ACCESS, OR OTHERWISE COPY OR USE ALL OR ANY PORTION OF THE AUTODESK MATERIALS; AND (b) WITHIN THIRTY (30) DAYS FROM THE DATE -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -OF ACQUIRING THE AUTODESK MATERIALS, LICENSEE MAY RETURN THE AUTODESK MATERIALS (INCLUDING ANY COPIES) TO THE ENTITY FROM WHICH THEY WERE ACQUIRED FOR A REFUND OF THE APPLICABLE LICENSE FEES PAID BY THE LICENSEE. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 The words \'93\loch\f1 \hich\f1 Autodesk", \'93\loch\f1 \hich\f1 Agreement\'94\loch\f1 \hich\f1 and \'93\loch\f1 Li\hich\af1\dbch\af31505\loch\f1 \hich\f1 censee\'94\loch\f1 - and other capitalized terms used in this Agreement are defined terms. The definitions can be found in Exhibit A (if the terms are not defined in the main body of the Agreement). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Grant}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Subject to and conditioned on Licensee\loch\af1\dbch\af31505\hich\f1 \rquote \loch\f1 -s continuous compliance with this Agreement, Autodesk grants Licensee a nonexclusive, nonsublicensable, nontransferable, limited license to Install and Access the Licensed SDK and User Documentation, in each case solely (a) in the Territory, (b) }{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 within th\hich\af1\dbch\af31505\loch\f1 e scope of the License Type and Permitted }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Number}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 specified in the applicable License Identification, and (c) in accordance with the other terms of this Agreement, to: - -\par }\pard \ltrpar\ql \li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.1\~\~\~\~\~\~ (a)\~\~\~\~ -use the SDK for development, research, internal, educational, or comme\hich\af1\dbch\af31505\loch\f1 rcial purposes: -\par }\pard \ltrpar\ql \fi1440\li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -(i) to create a software product with the capability to read and/or write and/or translate Licensee files, which software product links to the Library (\'93\loch\f1 \hich\f1 Developed Software\'94\loch\f1 ); and/or -\par \hich\af1\dbch\af31505\loch\f1 (ii) to modify the Sample Code(s) solely to create an obje\hich\af1\dbch\af31505\loch\f1 \hich\f1 ct code version(s) (\'93\loch\f1 \hich\f1 Modified Code(s)\'94\loch\f1 ); and/or -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (b)\~\~\~\~\~ -reproduce the Library to link to the Developed Software. -\par }\pard \ltrpar\ql \li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.2\~\~\~\~\~\~(a)\~\~\~\~\~ -incorporate the executable version of the Developed Software into; and/or -\par }\pard \ltrpar\ql \fi720\li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (b)\~\~\~\~\~\hich\af1\dbch\af31505\loch\f1 -incorporate the Modified Code(s) into; and/or -\par \hich\af1\dbch\af31505\loch\f1 (c)\~\~\~\~\~link the Library, in binary code form to; -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 software products developed by Licensee (\'93\loch\f1 -\hich\f1 Licensee Product(s)\'94\loch\f1 ) for Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs. -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.3\~\~\~reproduce, distribute and sublicense free of cha -\hich\af1\dbch\af31505\loch\f1 \hich\f1 rge or for a fee Licensee Product(s) provided that Licensee must sublicense the Software, the Developed Software, the Library, the Sample Code(s) and the Modified Code(s) \'93\loch\f1 \hich\f1 as is\'94\loch\f1 -, without warranty of any kind. -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Various License Types are described in Exhibit -\hich\af1\dbch\af31505\loch\f1 B. }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -In any case where the License Identification does not specify a License Type or Permitted Number or Territory, or there is no License Identification, the License Type will, by default, be the Stand-alone (Individual) License and the Territory will be -\hich\af1\dbch\af31505\loch\f1 worldwide, subject to the Export Control requirements herein. -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.4\~\~\~\~\~\~ - Licensee shall reproduce and apply any copyright or other proprietary rights notices included on or embedded in the Software, or any part thereof, to any copies of the Software or an\hich\af1\dbch\af31505\loch\f1 -y part thereof, or to the Developed Software, in any form.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid4142109 -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.5\~\~\~\~\~\~ - Licensee shall place the following statement in the copyright area of either: (i) the end-user License and/or terms of use for the Developed Software; or (ii) the \hich\f1 \lquote \loch\f1 About Box\hich\f1 \rquote \loch\f1 or similar -\hich\af1\dbch\af31505\loch\f1 - notice page of the Developed Software; and Licensee shall also include the following statement in the copyright area of either: (a) the on-line documentation regarding the Developed Software; or (b) any other document related to Developed Software that c -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 ntains copyright information:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid4142109 -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 \hich\f1 This software contains Autodesk\'ae\loch\f1 -\hich\f1 FBX\'ae\loch\f1 code developed }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 \hich\af1\dbch\af31505\loch\f1 by Autodesk, Inc. Copyright 2018}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 \hich\f1 Autodesk, Inc. All rights, reserved. Such code is provided \'93\loch\f1 \hich\f1 as is\'94\loch\f1 and Autodesk, Inc. disclaims any and all warranties, whether express or \hich\af1\dbch\af31505\loch\f1 -implied, including without limitation the implied warranties of merchantability, fitness for a particular purpose or non-infringement of third party rights. In no event shall Autodesk, Inc. be liable for any direct, indirect, incidental, special, exemplar -\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 -, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort -\hich\af1\dbch\af31505\loch\f1 (\hich\af1\dbch\af31505\loch\f1 \hich\f1 including negligence or otherwise) arising in any way out of such code.\'94}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Upgrades and Previous Versions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Upgrades}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If Autodesk or a Reseller provides Licensee with an Upgrade to other Licensed Materials previously licensed to License\hich\af1\dbch\af31505\loch\f1 \hich\f1 -e, the Licensed Materials previously licensed to Licensee and any other Autodesk Materials relating thereto will thereafter be deemed to be a \'93\loch\f1 \hich\f1 Previous Version.\'94\loch\f1 - Except as set forth in Section 1.2.2 (Exception for Relationship Program Licensees), the lic\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nse grant and other rights with respect to any Previous Version will terminate one hundred twenty (120) days after Installation of the Upgrade. Within such one hundred twenty (120) day period, except as set forth in Section 1.2.2 (Exception for Relations -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 -ip Program Licensees), (a) Licensee must cease all use of any Previous Version and Uninstall all copies of the Previous Version, and (b) upon expiration of such period, such Previous Version will no longer constitute Licensed Materials but rather will be -\hich\af1\dbch\af31505\loch\f1 d\hich\af1\dbch\af31505\loch\f1 eemed to be Excluded Materials and Licensee will no longer have a license for any such Previous Version. At Autodesk\hich\f1 \rquote \loch\f1 -s request, Licensee agrees to destroy or return to Autodesk or the Reseller from which they were acquired all copies of the Previous Vers\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -on. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of any Previous Version have been Uninstalled and, if so requested by Autodesk, destroyed or returned to Autodesk or the Reseller from which they were acquired -. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exception for Relationship Program Licensees}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The termination of rights as to Previous Versions described in Section 1.2.1 (Effect of Upgrades) may not apply to Licensee if and to the extent (a) Licensee participates in a Relationship Program and t\hich\af1\dbch\af31505\loch\f1 -he Relationship Program Terms authorize Licensee to retain such Previous Versions or (b) otherwise authorized in writing by Autodesk. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The Licensed Materials (or portions thereof) may be subject to terms (e.g., terms accompanying such Licensed Materials or made available in connection with ordering, installing, downloading, accessing, using or copying such Licensed Materials) that are -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 in addition to or different from the terms set forth in this Agreement, and Licensee agrees to comply with such terms. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Other Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If Autodesk provides or makes available to Licensee any additional materials associated with the Licensed Materials\hich\af1\dbch\af31505\loch\f1 -, including any corrections, patches, service packs, updates or upgrades to, or new versions of, the Licensed Materials (including Upgrades) or any Supplemental Materials or User Documentation for the Licensed Materials, (a) such additional materials may -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -nclude or be subject to other terms in addition to or different from the terms set forth in this Agreement (including, without limitation, additional or different fees, license terms, or restrictions on use), and Licensee agrees to comply with such terms, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -or (b) if there are no other terms for such additional materials, they will (except as otherwise provided by Section 1.2 (Upgrades and Previous Versions)) be subject to the same terms (including, without limitation, the licenses, applicable License Type a -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -d Permitted Number, and other terms of this Agreement) as the Licensed Materials to which such additional materials apply. In no event will the foregoing result in any rights with respect to Excluded Materials. -\par \hich\af1\dbch\af31505\loch\f1 1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Authorized Users}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee may permit t\hich\af1\dbch\af31505\loch\f1 he Licensed Materials to be Installed and/or Accessed only by Licensee\hich\f1 \rquote \loch\f1 -s Personnel (except as otherwise designated in the applicable License Type), and any such Installation or Access will be subject to any other requirements imposed by this Agreement and\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -the applicable License Type and Permitted Number. Licensee will be responsible for compliance with this Agreement by Licensee\hich\f1 \rquote \loch\f1 -s Personnel and any other persons who may have Access to the Autodesk Materials through Licensee (whether or not such Access is \hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -uthorized by Autodesk or within the scope of the applicable License Type and Permitted Number). -\par \hich\af1\dbch\af31505\loch\f1 1.6\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Third-Party Licensed Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . The Autodesk Materials may contain or be accompanied by third-party software, data or other materials that are subject to a\hich\af1\dbch\af31505\loch\f1 \hich\f1 -nd provided in accordance with terms that are in addition to or different from the terms set forth in this Agreement. Such terms may be included or referenced in or with such third-party software, data or other materials (e.g., in the \'93\loch\f1 -\hich\f1 About box\'94\loch\f1 ) or a w\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 b page specified by Autodesk (the URL for which may be obtained on Autodesk\hich\f1 \rquote \loch\f1 -s website or on request to Autodesk). Licensee agrees to comply with such terms. In addition, Licensee will take sole responsibility for obtaining and complying with any license\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 - that may be necessary to use third-party software, data or other materials that Licensee uses or obtains for use in conjunction with the Licensed Materials. Licensee acknowledges and agrees that Autodesk has no responsibility for, and makes no represent -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 tions or warranties regarding, such third-party software, data or other materials or Licensee\hich\f1 \rquote \loch\f1 s use of such third-party software, data or other materials. -\par \hich\af1\dbch\af31505\loch\f1 1.7\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relationship Programs}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk may offer to Licensee, and (if so) Licensee may participate in o\hich\af1\dbch\af31505\loch\f1 -ne (1) or more Relationship Programs applicable to the Licensed Materials licensed to Licensee under this Agreement (and such Relationship Programs may include rights in addition to or different from those set forth in this Agreement). Any Relationship P -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ograms are subject to Autodesk\hich\f1 \rquote \loch\f1 -s terms therefor, which terms are set forth in the applicable Relationship Program Terms. Licensee agrees that if it requests, accepts, or makes use of any Relationship Program, Licensee will be bound by such terms, as they\hich\af1\dbch\af31505\loch\f1 - \hich\af1\dbch\af31505\loch\f1 -may be modified from time to time in accordance with the applicable Relationship Program Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such ter -\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 s. Licensee acknowledges that Autodesk may require a further acceptance of such terms as a condition to participation in a Relationship Program. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.8\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk may provide, and Licensee may elect to receive or benefit from, certain Services from \hich\af1\dbch\af31505\loch\f1 time to time. Any Services are subject to Autodesk\hich\f1 \rquote \loch\f1 -s terms therefor, which terms are set forth in the applicable Services Terms. Licensee agrees that if it requests, accepts, or makes use of any Services, Licensee will be bound by such terms, as they ma\hich\af1\dbch\af31505\loch\f1 y -\hich\af1\dbch\af31505\loch\f1 - be modified from time to time in accordance with the applicable Services Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such terms. Licensee a -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 knowledges that Autodesk may require a further acceptance of such terms as a condition to providing Services. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.9\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Archival Copy}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Licensee\hich\f1 \rquote \loch\f1 -s license under Section 1.1 (License Grant) includes the right to make a single archival copy of the Licensed Materia\hich\af1\dbch\af31505\loch\f1 -ls in the Territory, provided that (a) the single-copy limitation will not apply to copies made as an incidental part of a routine backup of Licensee\hich\f1 \rquote \loch\f1 -s entire computer system on which the Licensed Materials are Installed in accordance with this Agreement,\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -where such backup includes the making of copies of substantially all other software on such computer system and (b) any archival copy may be Accessed or Installed (other than on a backup storage medium from which the Licensed Materials cannot be Accessed) -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -only when and for so long as the primary copy of the Licensed Materials is inaccessible and inoperable. Copies of the Licensed Materials that are Installed and are in excess of the Permitted Number at any time while the primary copy of the Licensed Mater -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 als is also Accessible are not "archival copies" as permitted under this Section 1.9 (Archival Copy). -\par \hich\af1\dbch\af31505\loch\f1 1.10\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Nature of Licenses}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that when Licensee acquires a license of Licensed Materials, (including through a Relationship \hich\af1\dbch\af31505\loch\f1 Program or Services), Licensee\hich\f1 \rquote \loch\f1 -s acquisition is neither contingent on the delivery of any future features or functionality nor subject to any public or other comments (oral, written or otherwise) made by Autodesk regarding future features or functionality. -\par \hich\af1\dbch\af31505\loch\f1 1.11\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Feedback}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 . -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee hereby grants Autodesk, under all of Licensee\hich\f1 \rquote \loch\f1 -s intellectual property and proprietary rights, the following worldwide, exclusive, transferable, perpetual, irrevocable, royalty-free, fully paid-up rights: (1) to make, have made, use\hich\af1\dbch\af31505\loch\f1 -, copy, modify, and create derivative works of the Feedback as part of or in connection with any Autodesk product, technology, service, content, material, specification or documentation (including without limitation in connection with the marketing or sal -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 - thereof); (2) to publicly perform or display, import, broadcast, transmit, distribute, license, offer to sell and sell, rent, lease or lend copies of the Feedback (and derivative works thereof and improvements thereon); and (3) to sublicense to third par -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ies the foregoing rights, including the right to sublicense to further third parties}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 .}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Feedback}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 shall mean all suggestions, comments, input, ideas, reports, information or know-how (whether in oral or written form) provided by Licensee to Autodesk or an \hich\af1\dbch\af31505\loch\f1 -Autodesk affiliate in connection with Licensee\hich\f1 \rquote \loch\f1 s evaluation of or use of the Licensed Materials. Feedback does not include any artwork or sample content created by Licensee using the Licensed Materials.}{\rtlch\fcs1 \af0\afs18 -\ltrch\fcs0 \f0\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Limitations; Prohibitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitations\hich\af1\dbch\af31505\loch\f1 and Exclusions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 .}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No License Granted; Unauthorized Activities}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The parties acknowledge and agree that, notwithstanding anything to the contrary in this Agreement, no license is granted (whether expressly, by implication or otherwise) under this Agree\hich\af1\dbch\af31505\loch\f1 -ment (and this Agreement expressly excludes any right) (a) to Excluded Materials, (b) to any Autodesk Materials that Licensee did not acquire lawfully or that Licensee acquired in violation of or in a manner inconsistent with this Agreement, (c) for Insta -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -lation of or Access to the Licensed Materials beyond the applicable license term (whether a fixed term or Relationship Program period or term) or outside the scope of the applicable License Type or Permitted Number, (d) for Installation of the Licensed Ma -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 erials on any Computer other than a Computer owned or leased, and controlled}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\uldb\cf2\insrsid4142109 ,}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 by Li\hich\af1\dbch\af31505\loch\f1 -censee, unless otherwise authorized in writing by Autodesk, (e) to distribute, rent, loan, lease, sell, sublicense, transfer or otherwise provide all or any portion of the Autodesk Materials to any person or entity except as expressly set forth in this Ag -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -eement or as expressly authorized in writing by Autodesk, (f) to provide or make available any features or functionality of the Autodesk Materials to any person or entity (other than to and for Licensee itself for the purpose specified in the applicable L -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -cense Type), whether or not over a network and whether or not on a hosted basis, (g) except as otherwise expressly provided with respect to a specific License Type, to Install or Access or allow the Installation of or Access to the Autodesk Materials over -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -the Internet or other non-local network, including, without limitation, use in connection with a wide area network (WAN), virtual private network (VPN), virtualization, Web hosting, time-sharing, service bureau, software as a service, cloud or other servi -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -e or technology, (h) to remove, alter or obscure any proprietary notices, labels or marks in the Autodesk Materials, (i) to decompile, disassemble or otherwise reverse engineer the Autodesk Materials, or (j) to translate, adapt, arrange, or create derivat -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 ve works based on, or otherwise modify the Autodesk Materials for any purpose. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensed Materials as a Single Product}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The Licensed Materials are licensed to Licensee as a single product and the applicable components may not be separated for Install\hich\af1\dbch\af31505\loch\f1 -ation or Access (and all such components must be Installed and Accessed on the same Computer except as authorized in writing by Autodesk). -\par \hich\af1\dbch\af31505\loch\f1 2.1.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Territory}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Except as otherwise authorized in writing by Autodesk, the licenses granted in this Agreement are g\hich\af1\dbch\af31505\loch\f1 ranted only for the Territory. Nothing in this Agreement permits Licensee (including, without limitation, Licensee -\hich\f1 \rquote \loch\f1 s Personnel, if any) to Install or Access the Licensed Materials outside of the Territory. -\par \hich\af1\dbch\af31505\loch\f1 2.1.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Unauthorized Use}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee will \hich\af1\dbch\af31505\loch\f1 \hich\f1 -not engage in, and will not permit or assist any third party to engage in any of the uses or activities prohibited (or any uses or activities inconsistent with the limitations described) in this Section 2.1 (Limitations and Exclusions) (collectively, \'93 -\loch\f1 Una\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 \hich\f1 thorized Uses\'94\loch\f1 ). Any such Unauthorized Use, and any Installation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 of or Access to the Licensed Materials provided under this Agreement, outside of the scope of the applicable license grants (including, without limitation, outside the applicable License Typ\hich\af1\dbch\af31505\loch\f1 -e and/or Permitted Number) or otherwise not in accordance with this Agreement, constitute or result in infringement of Autodesk\hich\f1 \rquote \loch\f1 -s intellectual property rights as well as a breach of this Agreement. Licensee will notify Autodesk promptly of any such Unaut\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 orized Uses or other unauthorized Installation or Access. -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang4105\langfe1041\langnp4105\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\lang4105\langfe1041\langnp4105\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Use of Open Source Software by Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang4105\langfe1041\langnp4105\insrsid4142109 .\~\hich\af1\dbch\af31505\loch\f1 - If Licensee uses any third party software (including free or Open Source Software), whether or not in conjunction with the Software, Licensee shall en\hich\af1\dbch\af31505\loch\f1 -sure that its use does not: (i) create, or purport to create, obligations of Autodesk or any of its affiliates with respect to the Software; (ii) grant, or purport to grant, to any third party any rights to or immunities under Autodesk\hich\f1 \rquote -\loch\f1 s or any of its aff\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 liates intellectual property rights; or (iii) cause the Software to be subject to any licensing terms other than those set forth in this Agreement.}{\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Circumvention}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2.1\tab -Licensee may not (i) utilize any equipment, device, software, or other means to (\hich\af1\dbch\af31505\loch\f1 -or designed to) circumvent or remove any form of technical protection used by Autodesk in connection with the Autodesk Materials, or (ii) Install or Access the Autodesk Materials with any product code, authorization code, serial number, or other copy-prot -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ction device not supplied by Autodesk directly or through a Reseller. Without limitation of the generality of the foregoing, Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove the Autodesk Li -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ense Manager or any tool or technical protection measure provided or made available by Autodesk for managing, monitoring or controlling Installation of or Access to Autodesk Materials. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2.2\tab \hich\af1\dbch\af31505\loch\f1 -Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove any usage restrictions, or to enable functionality disabled by Autodesk, in connection with the Excluded Materials. Licensee may not bypass -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -r delete any functionality or technical limitations of the Autodesk Materials that (or that are designed to) prevent or inhibit the unauthorized copying of, Installation or Access to the Excluded Materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 3.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 All Rights Reserved}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk and its licensors\hich\af1\dbch\af31505\loch\f1 - retain title to and ownership of, and all other rights with respect to, the Autodesk Materials and all copies thereof, including, without limitation, any related copyrights, trademarks, trade secrets, patents, and other intellectual property rights. Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee has only the limited licenses granted with respect to the Licensed Materials expressly set forth in this Agreement, and Licensee has no other rights, implied or otherwise. Licensee acknowledges and agrees that the Autodesk Materials are licensed, no -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - sold, and that rights to Install and Access the Licensed Materials are acquired only under the license from Autodesk. The structure and organization of Software included in the Autodesk Materials, any source code or similar materials relating to such So -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 -tware, any API Information and Development Materials (both as described in Section 1.11 (APIs)), and any other Licensed Materials identified as confidential or proprietary are valuable trade secrets of, and confidential and proprietary information of, Aut -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 desk and its suppliers, and (a) may not be distributed, disclosed or otherwise provided to third parties, and (b) may be used only internally and only in conjunction with and for Licensee -\hich\f1 \rquote \loch\f1 s own authorized internal use of the Licensed Materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 4.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Privac\hich\af1\dbch\af31505\loch\f1 y; Use of Information; Connectivity}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 4.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Privacy and Use of Information}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that Licensee (and third parties acting on Licensee\hich\f1 \rquote \loch\f1 s behalf) may provide, and Autodesk and its Resellers (and third parties acting on behalf of Autod\hich\af1\dbch\af31505\loch\f1 -esk and its Resellers) may obtain, certain information and data with respect to Licensee (including, without limitation, personal information) and Licensee\hich\f1 \rquote \loch\f1 -s business in connection with this Agreement, including, without limitation, information and data p\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ovided to or obtained by Autodesk and its Resellers (or third parties acting on behalf of Autodesk and its Resellers) through the Customer Information Form and otherwise, in connection with ordering, registration, activation, updating, validating entitlem -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nt to, auditing, monitoring Installation of and Access to Autodesk Materials, Relationship Programs and Services and managing the relationship with Licensee. Licensee hereby consents to Autodesk maintaining, using, storing and disclosing such information -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 and data (including, without limitation, personal information, if any) in conformity with Autodesk\hich\f1 \rquote \loch\f1 -s policies on privacy and data protection, as such policies may be updated from time to time, including without limitation Autodesk\hich\f1 \rquote \loch\f1 s Privacy Statement, as \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -urrently located at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://usa.autodesk.com/privacy/"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5a00000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0070007200690076006100630079002f000000795881f43b1d7f48af2c825dc4852763 -00000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/privacy/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Without limitation of the generality of the foregoing, Licensee acknowledges and agrees that: (a) Autodesk may from time to time prompt Licensee (and thir\hich\af1\dbch\af31505\loch\f1 -d parties acting on Licensee\hich\f1 \rquote \loch\f1 s behalf) to provide express agreement to the terms of Autodesk\hich\f1 \rquote \loch\f1 -s Privacy Statement and/or express agreement to specific uses of information and data (including, without limitation, personal information); (b) Autodesk may prov\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -de information and data, including, without limitation, information and data about Licensee\hich\f1 \rquote \loch\f1 s use of Autodesk Materials, Relationship Programs, and Licensee\hich\f1 \rquote \loch\f1 -s support requests, to Autodesk subsidiaries and affiliates, Resellers and other third parties in \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -onnection with the provision, maintenance, administration or usage of Licensed Materials, Relationship Programs or Services or in connection with enforcement of any agreements relating to Licensed Materials, Relationship Programs or Services; and (c) Auto -\hich\af1\dbch\af31505\loch\f1 d\hich\af1\dbch\af31505\loch\f1 -esk may make cross-border transfers of such information and data, including to jurisdictions with privacy or data protection laws that are less protective of Licensee than the jurisdiction in which Licensee is domiciled. Licensee acknowledges and agrees -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 hat such policies may be changed from time to time by Autodesk and that, effective upon posting on Autodesk\hich\f1 \rquote \loch\f1 -s website or other written notice from Autodesk, Licensee will be subject to such changes. -\par \hich\af1\dbch\af31505\loch\f1 4.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Connectivity}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Certain Licensed Materials may facil\hich\af1\dbch\af31505\loch\f1 itate or require Licensee\hich\f1 \rquote \loch\f1 -s access to and use of content and services that are hosted on websites maintained by Autodesk or by third parties. In some cases, such content and services may appear to be a feature or function within, or extension of, the Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 nsed Materials on Licensee\hich\f1 \rquote \loch\f1 s Computer even though hosted on such websites. Accessing such content or services and use of Licensed Materials may cause Licensee -\hich\f1 \rquote \loch\f1 s Computer, without additional notice, to connect automatically to the Internet (transitorily, \hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -ntermittently or on a regular basis) and to communicate with an Autodesk or third-party website\hich\f1 \emdash \loch\f1 -for example, for purposes of providing Licensee with additional information, features and functionality or to validate that the Licensed Materials and/or conte\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -t or services are being used as permitted under this Agreement or other applicable terms. Such connectivity to Autodesk websites is governed by Autodesk\hich\f1 \rquote \loch\f1 -s policies on privacy and data protection described in this Section 4 (Privacy; Use of Information; C\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -nnectivity). Such connectivity to websites of third parties is governed by the terms (including the disclaimers and notices) found on such sites or otherwise associated with the third-party content or services. Autodesk does not control, endorse, or acc -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -pt responsibility for any such third-party content or services, and any dealings between Licensee and any third party in connection with such content or services, including, without limitation, such third party\hich\f1 \rquote \loch\f1 -s privacy policies, use of personal informat\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -on, delivery of and payment for goods and services, and any other terms associated with such dealings, are solely between Licensee and such third party. Autodesk may at any time, for any reason, modify or discontinue the availability of any third-party c -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 ntent or services. Access to and use of certain content and services (whether of Autodesk or third parties) may require assent to separate terms and/or payment of additional fees. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limited Warranty and Disclaimers }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limited Warranty}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Autodesk warrant\hich\af1\dbch\af31505\loch\f1 \hich\f1 -s that, as of the date on which the Licensed Materials are delivered to Licensee and for ninety (90) days thereafter or if the license term is shorter, such shorter period (\'93\loch\f1 \hich\f1 Warranty Period\'94\loch\f1 -), the Licensed Materials will provide the general features and f\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 nctions described in the User Documentation portion of the Licensed Materials. Autodesk's entire liability and Licensee -\hich\f1 \rquote \loch\f1 \hich\f1 s exclusive remedy during the Warranty Period (\'93\loch\f1 \hich\f1 Limited Warranty\'94\loch\f1 ) will be, with the exception of any statutory warranty or remedy tha\hich\af1\dbch\af31505\loch\f1 t -\hich\af1\dbch\af31505\loch\f1 - cannot be excluded or limited under law, at Autodesk's option, (i) to attempt to correct or work around errors, if any, or (ii) to refund the license fees, if any, paid by Licensee and terminate this Agreement or the license specific to such Licensed Mat -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 rials. Such refund is subject to the return, during the Warranty Period, of the Autodesk Materials, with a copy of Licensee\hich\f1 \rquote \loch\f1 s License Identification, to Licensee -\hich\f1 \rquote \loch\f1 s local Autodesk office or the Reseller from which Licensee acquired the Autodesk Materials.\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 - THE LIMITED WARRANTY SET FORTH IN THIS SECTION GIVES LICENSEE SPECIFIC LEGAL RIGHTS. LICENSEE MAY HAVE ADDITIONAL LEGAL RIGHTS UNDER LAW WHICH VARY FROM JURISDICTION TO JURISDICTION. AUTODESK DOES NOT SEEK TO LIMIT LICENSEE\hich\f1 \rquote \loch\f1 -S WARRANTY RIGHTS TO ANY EXT\hich\af1\dbch\af31505\loch\f1 E\hich\af1\dbch\af31505\loch\f1 NT NOT PERMITTED BY LAW. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Disclaimer}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. EXCEPT FOR THE EXPRESS LIMITED WARRANTY PROVIDED IN SECTION 5.1 (LIMITED WARRANTY), AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, AUTODESK AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, NO WARRANTIES, REPR\hich\af1\dbch\af31505\loch\f1 -ESENTATIONS, OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED (INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT, OR WARRANTIES OTHERWISE IMPLIED BY STATUTE OR FROM A COURSE OF DEAL -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -NG OR USAGE OF TRADE) WITH RESPECT TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES (PURSUANT TO A RELATIONSHIP PROGRAM OR OTHERWISE). ANY STATEMENTS OR REPRESENTATIONS ABOUT THE AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES AND THEI -\hich\af1\dbch\af31505\loch\f1 R\hich\af1\dbch\af31505\loch\f1 - FEATURES OR FUNCTIONALITY IN THE LICENSED MATERIALS OR ANY COMMUNICATION WITH LICENSEE ARE FOR INFORMATION PURPOSES ONLY, AND DO NOT CONSTITUTE A WARRANTY, REPRESENTATION, OR CONDITION. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT: (a) THA -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 - THE OPERATION OR OUTPUT OF THE LICENSED MATERIALS OR SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, SECURE, ACCURATE, RELIABLE, OR COMPLETE, WHETHER OR NOT UNDER A RELATIONSHIP PROGRAM OR SUPPORT BY AUTODESK OR ANY THIRD PARTY; (b) THAT ERRORS WILL BE CORRE -\hich\af1\dbch\af31505\loch\f1 C\hich\af1\dbch\af31505\loch\f1 TED BY AUTODESK OR ANY THIRD PARTY; OR (c) THAT AUTODESK OR ANY THIRD PARTY WILL RESOLVE ANY PARTICULAR SUPPORT REQUEST OR THAT SUCH RESOLUTION WILL MEET LICENSEE\hich\f1 \rquote \loch\f1 -S REQUIREMENTS OR EXPECTATIONS. NOTHING IN THE FOREGOING RESTRICTS THE EFFECT OF WARRANTIES\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -OR CONDITIONS WHICH MAY BE IMPLIED BY LAW WHICH CANNOT BE EXCLUDED, RESTRICTED OR MODIFIED NOTWITHSTANDING A CONTRACTUAL RESTRICTION TO THE CONTRARY.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \caps\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 - WITHOUT LIMITING THE FOREGOING, Autodesk }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \caps\f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 no warranties that\hich\af1\dbch\af31505\loch\f1 -: (I) future versions of the SDK, Library and/or Sample Code(s), if any, will contain features similar to or the same as the SDK, Library and/or Sample Code(s), respectively or will be compatible with the SDK, Library and/or Sample Code(s), respectively; -\hich\af1\dbch\af31505\loch\f1 (\hich\af1\dbch\af31505\loch\f1 II) the Software or the SDK, Library and/or Sample Code(s) will meet LICENSEE requirements; or (iii) operation of the SDK, Library or Sample Code(s) will be uninterrupted or error-free.}{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Warnings}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Functionality Limitations}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . The Licensed Materials and\hich\af1\dbch\af31505\loch\f1 - Services (except for Licensed Materials designed for non-commercial use, such as Autodesk Materials designed to be used for household or other consumer purposes or licensed only for purposes of educational or individual learning) are commercial professio -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 al tools intended to be used by trained professionals only. Particularly in the case of commercial professional use, the Licensed Materials and Services are not a substitute for Licensee -\hich\f1 \rquote \loch\f1 s professional judgment or independent testing. The Licensed Mater\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -als and Services are intended only to assist Licensee with its design, analysis, simulation, estimation, testing and/or other activities and are not a substitute for Licensee\hich\f1 \rquote \loch\f1 -s own independent design, analysis, simulation, estimation, testing, and/or othe\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - activities, including those with respect to product stress, safety and utility. Due to the large variety of potential applications for the Licensed Materials and Services, the Licensed Materials and Services have not been tested in all situations under -\hich\af1\dbch\af31505\loch\f1 w\hich\af1\dbch\af31505\loch\f1 -hich they may be used. Autodesk will not be liable in any manner whatsoever for the results obtained through use of the Licensed Materials or Services. Persons using the Licensed Materials or Services are responsible for the supervision, management, and -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -control of the Licensed Materials and Services and the results of using the Licensed Materials and Services. This responsibility includes, without limitation, the determination of appropriate uses for the Licensed Materials and Services and the selection -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -of the Licensed Materials, Services and other computer programs and materials to help achieve intended results. Persons using the Licensed Materials or Services are also responsible for establishing the adequacy of independent procedures for testing the -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -eliability, accuracy, completeness, and other characteristics of any output of the Licensed Materials or Services, including, without limitation, all items designed with the assistance of the Licensed Materials or Services. Licensee further acknowledges -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 nd agrees that the Licensed Materials form part of Licensee\hich\f1 \rquote \loch\f1 -s total unique hardware and software environment to deliver specific functionality, and that the Licensed Materials and Services provided by Autodesk may not achieve the results Licensee desires \hich\af1\dbch\af31505\loch\f1 w -\hich\af1\dbch\af31505\loch\f1 ithin Licensee\hich\f1 \rquote \loch\f1 s design, analysis, simulation, estimation, and/or testing constraints. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Activation Codes and Security}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par \hich\af1\dbch\af31505\loch\f1 6.2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Activation Code Required for Installation/Access and Continued Use}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Installation of and Access to the Licensed Materials requir\hich\af1\dbch\af31505\loch\f1 -e, and the continued use thereof may from time to time require, activation codes issued by Autodesk. Registration may be required before an activation code is issued by Autodesk. Licensee will provide Autodesk and its Reseller with any information requi -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ed for such registration and agrees that any information provided to Autodesk or its Reseller will be accurate and current. Licensee will also maintain and update Licensee\hich\f1 \rquote -\loch\f1 s registration information, on an ongoing basis, through customer data registratio\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 - processes, including without limitation the Customer Information Form, which may be provided by Autodesk. Licensee acknowledges and agrees that Autodesk may use such information in accordance with its Privacy Statement (as described or referenced in Sec -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ion 4 (Privacy; Use of Information; Connectivity)). -\par \hich\af1\dbch\af31505\loch\f1 6.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Disabling Access}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. LICENSEE ACKNOWLEDGES AND AGREES THAT INSTALLATION OF AND ACCESS TO LICENSED MATERIALS MAY BE DISABLED BY THE ACTIVATION, SECURITY, AND TECHNICAL PROTECTION MECHANISMS IF LICENSEE TRIES TO TRANSFER ALL OR A PART OF THE LICENSED MATERIALS TO ANOTHER COM -\hich\af1\dbch\af31505\loch\f1 P\hich\af1\dbch\af31505\loch\f1 -UTER, IF LICENSEE TAMPERS WITH THE TECHNICAL PROTECTION MECHANISMS OR DATE-SETTING MECHANISMS ON A COMPUTER OR IN THE LICENSED MATERIALS, IF LICENSEE USES THE LICENSED MATERIALS PAST AN APPLICABLE RELATIONSHIP PROGRAM PERIOD OR FIXED TERM, OR IF LICENSEE -\hich\af1\dbch\af31505\loch\f1 U\hich\af1\dbch\af31505\loch\f1 NDERTAKES CERTAIN OTHER ACTIONS THAT AFFECT THE SECURITY MODE OR UNDER OTHER CIRCUMSTANCES AND THAT, IN ANY SUCH EVENT, LICENSEE\hich\f1 \rquote \loch\f1 S ACCESS TO LICENSEE\hich\f1 \rquote -\loch\f1 S WORK PRODUCT AND OTHER DATA MAY BE AFFECTED. MORE INFORMATION IS CONTAINED IN THE APPLICABLE LICENSED \hich\af1\dbch\af31505\loch\f1 M\hich\af1\dbch\af31505\loch\f1 ATERIALS OR AVAILABLE FROM AUTODESK ON REQUEST. -\par \hich\af1\dbch\af31505\loch\f1 6.2.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Activation Codes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that receipt of an activation code (whether or not provided to Licensee in error) will not constitute evidence of or affect the scope of Lic\hich\af1\dbch\af31505\loch\f1 ensee\hich\f1 \rquote \loch\f1 -s license rights. Those rights will be only as set forth in this Agreement and the applicable License Identification. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Affected Data}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Work product and other data created with Licensed Materials made available under certain License Types, includi\hich\af1\dbch\af31505\loch\f1 -ng licenses that limit the permitted purpose to educational purposes or personal learning purposes, may contain certain notices and limitations that make the work product and other data usable only in certain circumstances (e.g., only in the education fie -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -d). In addition, if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created, then such other work product or data may also be affected by these notices and limitations. -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Autodesk will have no responsibility or liability whatsoever if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created. In addition, Licensee will not }{\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 remove, }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 alter or o\hich\af1\dbch\af31505\loch\f1 bscure}{\rtlch\fcs1 \af1\afs18 -\ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 any such notices or limitations.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitations of Liability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitation on Type and Amount of Liability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. IN NO EVENT WILL AUTODESK OR ITS SUPPLIERS HAVE ANY LIABILITY (DIRECTLY OR INDIRECTLY) FOR ANY INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL\hich\af1\dbch\af31505\loch\f1 - OR PUNITIVE DAMAGES; FOR LOSS OF PROFITS, USE, REVENUE, OR DATA; OR FOR BUSINESS INTERRUPTION (REGARDLESS OF THE LEGAL THEORY FOR SEEKING SUCH DAMAGES OR OTHER LIABILITY). IN ADDITION, THE LIABILITY OF AUTODESK AND ITS SUPPLIERS ARISING OUT OF OR RELATI -\hich\af1\dbch\af31505\loch\f1 N\hich\af1\dbch\af31505\loch\f1 -G TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES WILL NOT EXCEED THE AMOUNT PAID OR PAYABLE BY LICENSEE FOR SUCH AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES, RESPECTIVELY. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Application of and Basis for Limitations}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . THE LIMITA\hich\af1\dbch\af31505\loch\f1 -TIONS OF LIABILITY IN THIS SECTION 7 (LIMITATIONS OF LIABILITY) WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW TO ANY DAMAGES OR OTHER LIABILITY, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT ( -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -NCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE, EVEN IF AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LIABILITY AND REGARDLESS OF WHETHER THE LIMITED REMEDIES AVAILABLE HEREUNDER FAIL OF THEIR ESSENTIAL PURPOSE. ALSO, LICENSEE AGREES THAT -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 -HE LICENSE, RELATIONSHIP PROGRAMS AND SERVICES FEES AND OTHER FEES CHARGED BY AUTODESK AND PAID BY LICENSEE ARE BASED ON AND REFLECTIVE OF THE ALLOCATION OF RISK CONTEMPLATED BY THIS SECTION 7 (LIMITATIONS OF LIABILITY) AND THAT THE LIABILITY LIMITATIONS -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 N THIS SECTION 7 (LIMITATIONS OF LIABILITY) ARE AN ESSENTIAL ELEMENT OF THE AGREEMENT BETWEEN THE PARTIES. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Term and Termination}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Term; Termination or Suspension}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Each license under this Agreement, with respect to each specific set of Licensed Materials covered by this Agreement, will become effective as of the latest to occur of: (a) this Agreement becoming effective, (b) payment by Licensee of the applicable f -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -es, excluding licenses (such as evaluation licenses) where no fees are required, (c) delivery of the specific Licensed Materials, and (d) in the case of Autodesk Materials provided in connection with a Relationship Program, upon commencement of the applic -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 ble Relationship Program period or fixed term. Each of Autodesk or Licensee may terminate this Agreement, Licensee\hich\f1 \rquote \loch\f1 s license as to Licensed Materials, Licensee -\hich\f1 \rquote \loch\f1 s Relationship Program, and/or the provision of Services relating to the Licensed Materials if \hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he other party is in breach of this Agreement and fails to cure such breach within ten (10) days after written notice of the breach; however, if Licensee is in breach of Section 1 (License) or Section 2 (License Limitations; Prohibitions), Autodesk may te -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 minate this Agreement, Licensee\hich\f1 \rquote \loch\f1 s license as to Licensed Materials, Licensee\hich\f1 \rquote \loch\f1 -s Relationship Program, and/or the provision of Services relating to the Licensed Materials immediately upon written notice of the breach. In addition, Autodesk may, as an alter\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ative to termination, suspend Licensee\hich\f1 \rquote \loch\f1 s license as to the Licensed Materials, Licensee\hich\f1 \rquote \loch\f1 -s Relationship Program, the provision of Services relating to the Licensed Materials, and/or other Autodesk obligations or Licensee rights under this Agreement (or und\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -r other terms, if any, relating to materials associated with the Licensed Materials), if Licensee fails to make a payment to Autodesk or a Reseller or otherwise fails to comply with the provisions of this Agreement or other terms relating to any such lice -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -se, Relationship Program, Services, or other associated materials. Autodesk may also terminate this Agreement if Licensee becomes subject to bankruptcy proceedings, becomes insolvent, or makes an arrangement with Licensee\hich\f1 \rquote \loch\f1 -s creditors. This Agreement wil\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 terminate automatically without further notice or action by Autodesk if Licensee goes into liquidation. -\par \hich\af1\dbch\af31505\loch\f1 Licensee acknowledges and agrees that Autodesk may assign or sub-contract any of its rights or obligations under this Agreement. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Termin\hich\af1\dbch\af31505\loch\f1 ation of Agreement or License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Upon termination or expiration of this Agreement, the licenses granted hereunder will terminate. Upon termination or expiration of any license granted to Licensee, Licensee must cease all use of Autodesk Materials to which -\hich\af1\dbch\af31505\loch\f1 such license applies, any Relationship Program (including, without limitation, associated services), and any Services and Uninstall all copies of the Autodesk Materials. At Autodesk\hich\f1 \rquote \loch\f1 -s request, Licensee agrees to destroy or return to Autodesk or the Resel\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -er from which they were acquired all Autodesk Materials. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of the Autodesk Materials have been Uninstalled and, if so requested by Autodesk, destroyed or returned to -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 Autodesk or the Reseller from which they were acquired. If Licensee\hich\f1 \rquote \loch\f1 s Relationship Program is terminated or expires, but this Agreement and Licensee\hich\f1 \rquote -\loch\f1 s license to the Licensed Materials remains in effect, any rights of Licensee based on the Relationship P\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ogram (including, without limitation, rights with respect to Previous Versions) will terminate, and (unless otherwise authorized by the Relationship Program Terms) Licensee must comply with the obligations of Section 1.2.1 (Effect of Upgrades) with respec -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 to (including the obligations to cease use of, Uninstall and destroy or return) all copies of such Previous Versions. -\par \hich\af1\dbch\af31505\loch\f1 8.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Survival}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Sections 1.3 (Additional Terms), 1.4 (Other Materials), 1.5 (Authorized Users), 1.6 (Third-Party Licensed Materials), 1.11\hich\af1\dbch\af31505\loch\f1 - (APIs), 2.1.1 (No License Granted;Unauthorized Activities), 2.1.4 (Effect of Unauthorized Use), 2.2 (Circumvention), 3 (All Rights Reserved), 4 (Privacy; Use of Information; Connectivity), 5.2 (Disclaimer), 6 (Warnings), 7 (Limitations of Liability), 8 ( -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 erm and Termination), and 9 (General Provisions) and Exhibit A will survive any termination or expiration of this Agreement.}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 - -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 General Provisions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Notices}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Notices in connection with this Agreement by either party will be in writing and will be sent b -\hich\af1\dbch\af31505\loch\f1 -y electronic mail, postal service, or a delivery service (such as UPS, FedEx or DHL), except that Licensee may not provide notice to Autodesk of an Autodesk breach or provide notice of termination of this Agreement by electronic mail. Notices from Autode -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 -k to Licensee will be effective (a) in the case of notices by email, one (1) day after sending to the email address provided to Autodesk, or (b) in the case of notices by mail or delivery service, five (5) days after sending by regular post or delivery se -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 vice to the address provided to Autodesk. Licensee hereby consents to service of process being effected on Licensee by registered mail sent to the address set forth on Licensee\hich\f1 -\rquote \loch\f1 s Customer Information Form (or, if no Customer Information Form has been pro\hich\af1\dbch\af31505\loch\f1 v\hich\af1\dbch\af31505\loch\f1 ided, Licensee\hich\f1 \rquote \loch\f1 -s last address known by Autodesk) if so permitted by applicable law. Notices from Licensee to Autodesk will be effective (a) in the case of notices by email, one (1) day after sending to (and receipt by Autodesk at) CopyrightAgent@autodesk. -\hich\af1\dbch\af31505\loch\f1 -com, or (b) in the case of notices by mail or delivery service, when received by Autodesk at Autodesk, Inc., 111 McInnis Parkway, San Rafael, California 94903, USA, Attention: Copyright Agent. If Licensee participates in a Relationship Program, either pa -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ty may also provide notice as set forth in the Relationship Program Terms. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Governing Law and Jurisdiction}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. This Agreement will be governed by and construed in accordance with the laws of (a) Switzerland if Licensee acquired the Autodesk Materials in a\hich\af1\dbch\af31505\loch\f1 - country in Europe, Africa or the Middle East, (b) Singapore if Licensee acquired the Autodesk Materials in a country in Asia, Oceania or the Asia-Pacific region, or (c) the State of California (and, to the extent controlling, the federal laws of the Unit -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -d States) if Licensee acquired the Autodesk Materials in a country in the Americas (including the Caribbean) or any other country not specified in this Section 9.2 (Governing Law and Jurisdiction). The laws of such jurisdictions shall govern without refe -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ence to the conflicts-of-laws rules thereof. The UN Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transaction Act shall not apply to (and are excluded from the laws governing) this Agreement. In additio -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -, each party agrees that any claim, action or dispute arising under or relating to this Agreement will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the Superior Court of the State of California, County of Ma -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -in, or the United States District Court for the Northern District of California in San Francisco, except that if Licensee has acquired the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, any such claim or dispute will be brought -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -xclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Switzerland, or (b) a country in Asia, Oceania or the Asia-Pacific region, any such claim or dispute will be brought exclusively in (and the parties will be sub -\hich\af1\dbch\af31505\loch\f1 j\hich\af1\dbch\af31505\loch\f1 -ect to the exclusive jurisdiction of) the courts of Singapore. Nothing in the foregoing will prevent Autodesk from bringing an action for infringement of intellectual property rights in any country where such infringement is alleged to occur. -\par \hich\af1\dbch\af31505\loch\f1 9.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No Assig\hich\af1\dbch\af31505\loch\f1 nment; Insolvency}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 -. Licensee may not assign this Agreement or any rights hereunder (whether by purchase of stock or assets, merger, change of control, operation of law, or otherwise) without Autodesk's prior written consent, which may be withheld in Autode -\hich\af1\dbch\af31505\loch\f1 -sk's sole and absolute discretion, and any unauthorized purported assignment by Licensee will be void. In the context of any bankruptcy or similar proceeding, Licensee acknowledges and agrees this Agreement is and shall be treated as an executory contrac -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - that may not be assumed and/or assigned without Autodesk's prior written consent, which consent may be withheld in Autodesk's sole and absolute discretion whether pursuant to Section 365(c)(1) of Title 11 of the United States Code or any other applicable -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -law respecting the treatment of executory contracts within bankruptcy. Any assignment (regardless of how or on what basis the assignment may occur) will be conditioned on compliance with the following: at least thirty (30) days before assigning or agreein -\hich\af1\dbch\af31505\loch\f1 g\hich\af1\dbch\af31505\loch\f1 - to any assignment of rights under this Agreement (including transferring any copies of or right to use the Software), (a) Licensee must provide written notice to Autodesk, Uninstall all copies of the Software, and (without limitation of the generality of -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Section 9.7 (Audits)) allow Autodesk or its designee to inspect the records, systems and facilities of (or operated for) Licensee and its subsidiaries and affiliates to verify (by any means available to Autodesk, whether remotely or on premises) that all -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -opies of the Software have been Uninstalled, (b) the proposed assignee must agree to comply (and Licensee must ensure that the assignee will comply) with all of the obligations of this Agreement with respect to such Software, which agreement must provide -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 hat Autodesk is a third-party beneficiary of the assignee\hich\f1 \rquote \loch\f1 -s agreement, and the assignee must provide a copy of the agreement to Autodesk, and (c) Licensee and proposed assignee must comply with all other transfer procedures identified by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 9.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Auto\hich\af1\dbch\af31505\loch\f1 desk Subsidiaries and Affiliates}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that Autodesk may arrange to have its subsidiaries and affiliates engage in activities in connection with this Agreement, including, without limitation, delivering Autodesk Materials and p\hich\af1\dbch\af31505\loch\f1 -roviding Relationship Programs and Services, provided that Autodesk (and not such subsidiaries and affiliates) will remain subject to the obligations of Autodesk under this Agreement. Licensee also agrees that Autodesk\hich\f1 \rquote \loch\f1 -s subsidiaries and affiliates may e\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 force (including taking actions for breach of) this Agreement. -\par \hich\af1\dbch\af31505\loch\f1 9.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions to Prohibitions; Severability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.5.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions to Prohibitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The prohibitions contained in this Agreement will not apply where and to the extent applicable law does not all\hich\af1\dbch\af31505\loch\f1 -ow such prohibitions to be enforced. Licensee may have other rights under the laws of the state or country within the Territory where the Licensed Materials are acquired, and this Agreement does not change Licensee\hich\f1 \rquote \loch\f1 -s rights under the laws of such state o\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - country if and to the extent the laws of such state or country do not permit this Agreement to do so. Licensee will bear the burden of proof to demonstrate that applicable law does not allow (i) the enforcement of such prohibitions; or (ii) this Agreeme -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 t to change particular rights in a state or country (and that Licensee has not exceeded the bounds of the unenforceable prohibitions and unchangeable rights). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.5.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Severability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . If and to the extent any provision of this Agreement is held illegal, invalid -\hich\af1\dbch\af31505\loch\f1 -, or unenforceable in whole or in part under applicable law, such provision or such portion thereof will be ineffective as to the jurisdiction in which it is illegal, invalid, or unenforceable to the extent of its illegality, invalidity, or unenforceabili -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -y and will be deemed modified to the extent necessary to conform to applicable law so as to give the maximum effect to the intent of the parties. The illegality, invalidity, or unenforceability of such provision in that jurisdiction will not in any way a -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 fect the legality, validity, or enforceability of such provision or any other provision of this Agreement in any other jurisdiction. -\par \hich\af1\dbch\af31505\loch\f1 9.6\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No Waiver}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. No term or provision of this Agreement will be considered waived, and no breach excused, unless such waiver\hich\af1\dbch\af31505\loch\f1 - is in writing signed on behalf of the party against which the waiver is asserted. No waiver (whether express or implied) will constitute consent to, waiver of, or excuse of any other, different, or subsequent breach. -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.7\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Audits}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Licensee agrees that Aut\hich\af1\dbch\af31505\loch\f1 -odesk has the right to require an audit (electronic or otherwise) of the Autodesk Materials and the Installation thereof and Access thereto. As part of any such audit, Autodesk or its authorized representative will have the right, on fifteen (15) days -\hich\f1 \rquote \loch\f1 p\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ior notice to Licensee, to inspect Licensee\hich\f1 \rquote \loch\f1 -s records, systems and facilities, including machine IDs, serial numbers and related information, to verify that the use of any and all Autodesk Materials is in conformance with this Agreement. Licensee will pr\hich\af1\dbch\af31505\loch\f1 o -\hich\af1\dbch\af31505\loch\f1 vide full cooperation to enable any such audit. If Autodesk determines that Licensee\hich\f1 \rquote \loch\f1 -s use is not in conformity with the Agreement, Licensee will obtain immediately and pay for valid license(s) to bring Licensee\hich\f1 \rquote \loch\f1 s use into compliance with this Agreement \hich\af1\dbch\af31505\loch\f1 a -\hich\af1\dbch\af31505\loch\f1 -nd other applicable terms and pay the reasonable costs of the audit. In addition to such payment rights, Autodesk reserves the right to seek any other remedies available at law or in equity, whether under this Agreement or otherwise. -\par \hich\af1\dbch\af31505\loch\f1 9.8\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Language}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . The En -\hich\af1\dbch\af31505\loch\f1 -glish language version of this Agreement is legally binding in case of any inconsistencies between the English version and any translations. If Licensee purchased the license for the Licensed Materials in Canada, Licensee agrees to the following: The par -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ies hereto confirm that it is their wish that this Agreement, as well as other documents relating hereto, including notices, have been and shall be written in the English language only. }{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang3084\langfe1041\langnp3084\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 Les parties ci-dessus confirment leur d\'e9\loch\f1 sir que cet accord ainsi que t\hich\af1\dbch\af31505\loch\f1 \hich\f1 -ous les documents, y compris tous avis qui s'y rattachent, soient r\'e9\loch\f1 \hich\f1 dig\'e9\loch\f1 s en langue anglaise. -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.9\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Construction}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Ambiguities in this Agreement will not be construed against the drafter. -\par \hich\af1\dbch\af31505\loch\f1 9.10\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Force Majeure}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk will not be liable for any loss, damage \hich\af1\dbch\af31505\loch\f1 or penalty resulting from delays or failures in performance resulting from acts of God, supplier delay or other causes beyond Autodesk's reasonable control. -\par \hich\af1\dbch\af31505\loch\f1 9.11\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 U.S. Government Rights}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. For U.S. Government procurements, all Autodesk Materials are deemed t\hich\af1\dbch\af31505\loch\f1 \hich\f1 -o be commercial computer software as defined in FAR 12.212 and subject to restricted rights as defined in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights" and DFARS 227.7202, \'93\loch\f1 -Rights in Commercial Computer Software or Commercial Co\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 \hich\f1 puter Software Documentation\'94\loch\f1 -, as applicable, and any successor regulations. Any use, modification, reproduction release, performance, display or disclosure of the Autodesk Materials by the U.S. Government shall be solely in accordance with license rights -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 and restrictions described herein. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.12\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Export Control}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that the Autodesk Materials and Services (including any data submitted by Licensee in connection with a Service and any Licensee-specific output generated by a Servic\hich\af1\dbch\af31505\loch\f1 -e) are subject to compliance with United States and other applicable country export control and trade sanctions laws, rules and regulations, including, without limitation the regulations promulgated by the U.S. Department of Commerce and the U.S. Departme -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 t of the Treasury (collectively, "Export Control Laws"). Licensee represents, warrants and covenants that neither Licensee nor Licensee\hich\f1 \rquote \loch\f1 -s Personnel (i) are a citizen or resident of, or located within, a nation that is subject to U.S. trade sanctions or o\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -her significant trade restrictions (including, without limitation, Cuba, Iran, Sudan, Syria and North Korea), (ii) are identified on any of the U.S. government restricted party lists (including, without limitation, the U.S. Treasury Department's List of S -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 ecially Designated Nationals and Blocked Persons, the U.S. Department of Commerce\hich\f1 \rquote \loch\f1 s Denied Party List, Entity List and Unverified List and the U.S. Department of State -\hich\f1 \rquote \loch\f1 s proliferation-related lists), (iii) will, unless otherwise authorized under the Expor\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - Control Laws, use Autodesk Materials or Services in any restricted end use, including, without limitation, design, analysis, simulation, estimation, testing, or other activities related to nuclear, chemical/biological weapons, rocket systems or unmanned -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -ir vehicles applications, or (iv) will use the Autodesk Materials or Services to disclose, transfer, download, export, or re-export, directly or indirectly, any Licensee-specific output generated by the Autodesk Materials or Services, Licensee content, th -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -rd party content, or any other content or material to any country, entity, or party that is ineligible to receive such items under the Export Control Laws or other laws or regulations to which Licensee may be subject. Licensee understands that the requir -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ments and restrictions of the Export Control Laws as applicable to Licensee may vary depending on the Autodesk Materials or Services provided under this Agreement and may change over time. Licensee shall be solely responsible for (i) determining the prec -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 se controls applicable to the Autodesk Materials or Services, and (ii) complying with the Export Control Laws and monitoring any modifications to them. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.13\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Entire Agreement}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . This Agreement and any other terms referenced in this Agreement (such as the Rel -\hich\af1\dbch\af31505\loch\f1 -ationship Program Terms and the Services Terms) constitute the entire agreement between the parties (and merge and supersede any prior or contemporaneous agreements, discussions, communications, agreements, representations, warranties, advertising or unde -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -standings) with respect to the subject matter hereof, except that particular Autodesk Materials may be subject to additional or different terms associated with such Autodesk Materials. The parties acknowledge that, in entering into this Agreement, they a -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -e not relying on any agreements, discussions, communications, agreements, representations, warranties, advertising or understandings other than as expressly set forth in this Agreement. Licensee acknowledges and agrees that Autodesk may add to or change -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he Relationship Program Terms and the Services Terms from time to time, provided that Autodesk will provide written notice of the additions or changes (and may allow Licensee not to renew, may permit Licensee to terminate, and may offer other options with -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -respect to Relationship Programs or Services) before the additions or changes are effective as to Licensee. In the event of a conflict between this Agreement and any other terms of Autodesk (including, without limitation, the Relationship Program Terms, -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he Services Terms, or such additional or different terms), the other terms will apply. Terms stipulated by Licensee in any communication by Licensee which purport to vary this Agreement or such other terms will be void and of no effect unless agreed in a -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -writing signed by an authorized representative of Autodesk. Any other modifications to this Agreement will also be invalid unless agreed to in a writing signed by an authorized representative of Autodesk. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\tx1080\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.\tab \tab }{\rtlch\fcs1 \ab\af1\afs18 -\ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -This Section 10 (Additional Terms) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Maya; (ii) Autodesk Softimage; (iii) Autodesk 3ds Max; and (iv) Autodesk 3ds Max Design. -\par \hich\af1\dbch\af31505\loch\f1 10.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Rendering}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.1.1\tab With regar\hich\af1\dbch\af31505\loch\f1 -d to the Rendering Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the Rendering Software to be Installed or Accessed on a Networked Basis, solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs, specificall\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 - to render files created with the Software. However, if the Rendering Software is mental ray, and the Software is provided with a finite number of mental ray rendering nodes, then with regard to mental ray the foregoing is restricted to that number of me -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 tal ray rendering nodes. -\par \hich\af1\dbch\af31505\loch\f1 10.1.2\tab -With regard to the mental ray Batch Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the mental ray Batch Software to be Installed or Accessed on a Networked Basis, sol\hich\af1\dbch\af31505\loch\f1 -ely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs, and used (i) specifically to render files created with the Software; or (ii) by the Rendering Software specifically to render files created with the Software. The total number of CPUs used by the mental ray Batc -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 Software cannot exceed the number specified in the License Identification. -\par \hich\af1\dbch\af31505\loch\f1 10.1.3\tab With regard to the mental ray Standalone (defined below), Licensee may allow the mental ray Standalone to be Installed or Accessed, on a Networked Basis, solely on Computing\hich\af1\dbch\af31505\loch\f1 - Device(s) (defined below) solely for Licensee\hich\f1 \rquote \loch\f1 \hich\f1 -s Internal Business Needs specifically to render files created with the Software. With regard to mental ray Standalone, any reference in the Agreement to Computer is hereby deleted and \'93\loch\f1 \hich\f1 Computing Device(s)\'94\loch\f1 -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 ubstituted therefor. -\par \hich\af1\dbch\af31505\loch\f1 10.1.4\tab -With regard to the mental ray Satellite (defined below) for each of Autodesk 3ds Max, Autodesk Maya and Autodesk Softimage Software each mental ray Satellite executable(s) may run on one (1) or more host no more than four (4) cl -\hich\af1\dbch\af31505\loch\f1 \hich\f1 ient Computing Devices. With regard to mental ray Satellite, any reference in the Agreement to Computer is hereby deleted and \'93\loch\f1 \hich\f1 Computing Device(s)\'94\loch\f1 substituted therefor. -\par \hich\af1\dbch\af31505\loch\f1 10.1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (1)\tab \hich\f1 \'93\loch\f1 \hich\f1 mental ray Standalone\'94 -\loch\f1 means the mental ray Standalone client\hich\af1\dbch\af31505\loch\f1 /server executable, including the mental ray standard shader libraries and utility programs, used specifically for rendering files created with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (2)\tab \hich\f1 \'93\loch\f1 \hich\f1 Rendering Software\'94\loch\f1 means a subset of the Software used specifically for rendering files crea\hich\af1\dbch\af31505\loch\f1 ted with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (3)\tab \hich\f1 \'93\loch\f1 \hich\f1 mental ray Batch Software\'94\loch\f1 - means a subset of the Software used: (i) specifically for rendering files created with the Software or (ii) by the Rendering Software specifically for rendering files created with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (4)\tab \hich\f1 \'93\loch\f1 me\hich\af1\dbch\af31505\loch\f1 \hich\f1 ntal ray Satellite\'94\loch\f1 - means the mental ray Satellite server executable, including the mental ray standard shader libraries. mental ray Satellite is functionally equivalent to the mental ray Standalone server executable, used specifically for rendering file -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 created with the Software except it is not able to read and write files in the complete mi2 format. -\par \hich\af1\dbch\af31505\loch\f1 (5)\tab \hich\f1 \'93\loch\f1 \hich\f1 Computing Device\'94\loch\f1 means (i) a single electronic assembly with a maximum of: (a) four (4) CPUs (regardless of the number of cores in each CPU) each CPU -\hich\af1\dbch\af31505\loch\f1 - having one or more microprocessors, (b) four (4) discrete GPU-based computing boards; or (ii) a software implementation of the single electronic assembly, (a so-called 'virtual machine') described in (i) above, which single electronic assembly accepts i -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 formation in digital or similar form and manipulates the information for a specific result based on a sequence of instructions. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par \hich\af1\dbch\af31505\loch\f1 10.2.1\tab This Section 10.2 (Exceptions) applies to the Autodesk Media & Entertainment 3D entertainment Software\hich\af1\dbch\af31505\loch\f1 - that may be included within the Licensed Materials. Notwithstanding the provisions set forth in Section 2.1.1 (No License Granted; Unauthorized Activities) if: (i) the Redistributable Component (defined below) operates with the Software and with Licensee -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Application; and (ii) the Redistributable Component is linked to Licensee Application; then Licensee may reproduce and distribute the Redistributable Component and Licensee Application together, subject to Licensee\hich\f1 \rquote \loch\f1 -s strict adherence to all of the followi\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 g terms and conditions: -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (a)\tab -the class identifications for any classes of objects Licensee created shall be different from and clearly distinguishable from the class identifications used by Autodesk; -\par \hich\af1\dbch\af31505\loch\f1 (b)\tab modified Sample (defined below) code and any resultin\hich\af1\dbch\af31505\loch\f1 g binary files in Licensee Application are identified as developed by Licensee, and not by Autodesk; -\par \hich\af1\dbch\af31505\loch\f1 (c)\tab Licensee Application has Licensee\hich\f1 \rquote \loch\f1 s copyright notice; -\par \hich\af1\dbch\af31505\loch\f1 (d)\tab any Modification (defined below), and resulting binary files, shall include the copyright not\hich\af1\dbch\af31505\loch\f1 -ices of Autodesk, Inc. as well as the following statement: "This software contains copyrighted code owned by Autodesk, Inc. but has been modified and is not endorsed by Autodesk, Inc." The language of the copyright notice and the statement shall be in th -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 same language as the Software language; -\par \hich\af1\dbch\af31505\loch\f1 (e)\tab distribution is strictly for not-for-profit purposes; -\par \hich\af1\dbch\af31505\loch\f1 (f)\tab distribution is either in binary form or text form; -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (g)\tab \hich\af1\dbch\af31505\loch\f1 -distribution is subject to a standard form of click-through end-user license agreement which license agreement, among other things: (1) protects Autodesk's interests consistent with the terms of this Agreement; and (2) prohibits the redistribution of the -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 Redistributable Component; -\par \hich\af1\dbch\af31505\loch\f1 (h)\tab -if the Redistributable Component operates with the Autodesk 3ds Max Software and/or Autodesk 3ds Max Design Software and with Licensee Application then prior to reproduction and distribution of the Redistributable Component a -\hich\af1\dbch\af31505\loch\f1 nd Licensee Application all MIDI files have been excluded from the Redistributable Component and Licensee Application; and -\par \hich\af1\dbch\af31505\loch\f1 (i)\tab Licensee agrees to defend, indemnify and hold harmless Autodesk and its subsidiaries and affiliates from and against any and all\hich\af1\dbch\af31505\loch\f1 - damages, costs, losses, liabilities, expenses and settlement amounts incurred in connection with any suit, claim or action by any third party alleging that the Redistributable Component and/or Licensee Application infringes or misappropriates any patent, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -copyrights, moral rights, trademark, trade secret and design rights, whether registered or unregistered, and including any application for registration of any of the foregoing and all rights or forms of protections of a similar nature having equivalent or -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 similar effect to any of these, which may subsist anywhere in the world, of such third party. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (1)\tab \hich\af1\dbch\af31505\loch\f1 -"Licensee Application" means, with regard to the Software, a Modification made by Licensee for designing, developing, and testing an application program made by Licensee. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (2)\tab -"Modification" means any: (i) addition to the substance of a Sample or any additi\hich\af1\dbch\af31505\loch\f1 -on to the substance of the contents of a file containing a Sample; (ii) any deletion from the structure of a Sample, or any deletion from the structure of the contents of a file containing a Sample; and/or (iii) any new file that contains any part of a Sa -\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 ple; all of which, in Autodesk\hich\f1 \rquote \loch\f1 s sole discretion, ensures that the Sample is not the primary source of value. -\par \hich\af1\dbch\af31505\loch\f1 (3)\tab "Redistributable Component" means the Sample(s) and/or a Modification. -\par \hich\af1\dbch\af31505\loch\f1 (4)\tab "Sample(s)" means sample source code, or individual animations, sti\hich\af1\dbch\af31505\loch\f1 -ll images, and/or audio files contained in the Software, and located in the samples directory, the examples subdirectory, samples files or any similar type directory or file. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms; Certain Softimage Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . This Section 10.3 (Additiona -\hich\af1\dbch\af31505\loch\f1 l Terms; Certain Softimage Materials) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Softimage Mod Tool software; and (ii) Autodesk Softimage Mod Tool Pro software. -\par \hich\af1\dbch\af31505\loch\f1 10.3.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Softimage Mod Tool Soft\hich\af1\dbch\af31505\loch\f1 ware}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . In the event the Software is Autodesk Softimage Mod Tool Software then the applicable Exhibit B License Type is B. 4. (}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Educational Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 ). -\par \hich\af1\dbch\af31505\loch\f1 10.3.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Softimage Mod Tool Pro Software}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . In the event the Software is Auto\hich\af1\dbch\af31505\loch\f1 desk Softimage Mod Tool Pro Software, then the applicable Exhibit B License Type is B. 1. (Stand-alone (Individual) License), however, Licensee\hich\f1 -\rquote \loch\f1 s Internal Business Needs are limited to the design, development and testing of an application program designed\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 to function with the Software for Licensee\hich\f1 \rquote -\loch\f1 s internal use in producing multimedia content in conjunction with Licensee\hich\f1 \rquote \loch\f1 s valid XNA}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \af1\afs18 -\ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Creators Club Online Premium Membership. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.\tab \tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms: Quantity Take Off}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -This Section 11 (Additional Terms; Quantity Take Off) applies to the Quantity Take Off Software that may be included within the Licensed Materials (\'93\loch\f1 \hich\f1 QTO Software\'94\loch\f1 ): -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.1\tab -The QTO Software is based in part on the work of the Independent JPEG Group. -\par \hich\af1\dbch\af31505\loch\f1 11.2\tab Port\hich\af1\dbch\af31505\loch\f1 \hich\f1 ions of the QTO Software include Crystal Reports Runtime Software (\'93\loch\f1 \hich\f1 Runtime Software\'94\loch\f1 \hich\f1 -) licensed from Business Objects Software Ltd (\'93\loch\f1 \hich\f1 Business Objects\'94\loch\f1 ). Licensee\hich\f1 \rquote \loch\f1 s use of the Runtime Software is subject to the following terms: -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (a)\tab Licensee agrees not to al -\hich\af1\dbch\af31505\loch\f1 ter disassemble, decompile, translate, adapt or reverse-engineer the Runtime Software or the report file (.RPT) format; -\par \hich\af1\dbch\af31505\loch\f1 (b)\tab Licensee agrees not to distribute the Runtime Software with any general-purpose report writing, data analysis or report delivery pr\hich\af1\dbch\af31505\loch\f1 -oduct or any other product that performs the same or similar functions as Business Objects\hich\f1 \rquote \loch\f1 product offerings; -\par \hich\af1\dbch\af31505\loch\f1 (c)\tab Licensee agrees not to use the Runtime Software to create for distribution a product that is generally competitive with Business Objects' pr\hich\af1\dbch\af31505\loch\f1 oduct offerings; -\par \hich\af1\dbch\af31505\loch\f1 (d)\tab -Licensee agrees not to use the Runtime Software to create for distribution a product that converts the report file (.RPT) format to an alternative report file format used by any general-purpose report writing, data analysis or report -\hich\af1\dbch\af31505\loch\f1 delivery product that is not the property of Business Objects; and -\par \hich\af1\dbch\af31505\loch\f1 (e)\tab Licensee agrees not to use the Crystal Reports Software on a rental or timesharing basis or to operate a service bureau facility for the benefit of third-parties. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.3\tab BUSINESS OBJECTS\hich\af1\dbch\af31505\loch\f1 - AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. BUSINESS OBJECTS AND ITS SUPPLIERS SHALL HAVE NO L -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 ABILITY WHATSOEVER UNDER THIS AGREEMENT OR IN CONNECTION WITH THE CRYSTAL REPORTS SOFTWARE. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx360\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 12.\tab -Autodesk download technology may use the Akamai NetSession Interface, which may utilize a limited amount of your upload bandwidth and PC resources to connect yo\hich\af1\dbch\af31505\loch\f1 -u to a peered network and improve speed and reliability of Web content. The Akamai NetSession Interface is secure client-side networking technology that harnesses the power of your computer to deliver software and media available on the Akamai network. Yo -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 -r Akamai NetSession Interface works collectively with other Akamai NetSession Interfaces, along with thousands of Akamai edge servers, and runs as a networking service utilizing a limited amount of your computer's available resources. More information abo -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 t the Akamai NetSession Interface is available here: }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://www.akamai.com/client"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5200000068007400740070003a002f002f007700770077002e0061006b0061006d00610069002e0063006f006d002f0063006c00690065006e0074000000795881f43b1d7f48af2c825dc485276300000000a5ab0000} -}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.akamai.com/client}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . By clicking "Accept" and using the Autodesk download technology, you accept the Akamai License Agreement }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf17\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (} -{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://www.ak\hich\af1\dbch\af31505\loch\f1 amai.com/eula"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4e00000068007400740070003a002f002f007700770077002e0061006b0061006d00610069002e0063006f006d002f00650075006c0061000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}} -}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.akamai.com/eula}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf17\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 )}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 in addition to the Autodesk License and Service Agreement.}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\kerning28\insrsid4142109 -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\kerning28\insrsid4142109 -\par \hich\af1\dbch\af31505\loch\f1 Exhibit A -\par }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\ul\kerning28\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Access}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 \hich\f1 or \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Accessible}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, with respect to a computer program or other materials, (a) to use or execute the computer prog -\hich\af1\dbch\af31505\loch\f1 ram or other materials or (b) to use or otherwise benefit from the features or functionality of the computer program or other materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Agreement}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means this License and Services Agreement, including all exhibits and schedules thereto, as the License \hich\af1\dbch\af31505\loch\f1 and Services Agreement may be amended from time to time in accordance with the terms thereof. -\par \hich\af1\dbch\af31505\loch\f1 3.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Authorized User}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means any individual person who Installs or Accesses, or is authorized to Install or Access, any of the Licensed Materials. -\par \hich\af1\dbch\af31505\loch\f1 4.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 mea\hich\af1\dbch\af31505\loch\f1 \hich\f1 ns Autodesk, Inc., a Delaware corporation, except that if, Licensee acquires a license to the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, \'93\loch\f1 \hich\f1 Autodesk\'94 -\loch\f1 \hich\f1 means Autodesk Development S\'e0\loch\f1 rl or (b) a country in Asia, Oceania or the Asi\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 \hich\f1 -Pacific region, \'93\loch\f1 \hich\f1 Autodesk\'94\loch\f1 - means Autodesk Asia Pte Ltd. -\par \hich\af1\dbch\af31505\loch\f1 5.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk License Manager}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the tool known as Autodesk License Manager or any future Autodesk tool for managing, monitoring or controlling Installation of or Access to Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 6.\tab \loch\af1\dbch\af31505\hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means any materials distributed or made available by Autodesk, directly or indirectly, including Software, Supplemental Materials, User Documentation and Excluded Materials (whether or not licensed to Licensee). -\par \hich\af1\dbch\af31505\loch\f1 7.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Computer}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (i)\hich\af1\dbch\af31505\loch\f1 - a single electronic device, with one or more central processing units (CPUs), that accepts information in digital or similar form and manipulates the information for a specific result based on a sequence of instructions, or (ii) a software implementation -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 of such a device (or so-called virtual machine). -\par \hich\af1\dbch\af31505\loch\f1 8.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Customer Information Form}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a form completed by or on behalf of Licensee and submitted to Autodesk or a Reseller, directly or indirectly, in connection with Licensee\hich\f1 \rquote \loch\f1 s order for a license of Autodes -\hich\af1\dbch\af31505\loch\f1 k Materials, Relationship Program or Services. -\par \hich\af1\dbch\af31505\loch\f1 9.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a Licensee who is also (a) a Qualified Educational Institution, (b) Faculty, (c) Student or (d) Other Authorized Educational Licensee. An Educational Licensee may be required t -\hich\af1\dbch\af31505\loch\f1 o show proof of eligibility if requested by Autodesk. Autodesk, in its sole discretion, retains the right to determine the eligibility of an Educational Licensee. -\par \hich\af1\dbch\af31505\loch\f1 10. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) in the case of a Qualified Educational Institution, F\hich\af1\dbch\af31505\loch\f1 -aculty or Other Authorized Educational Licensees, purposes directly related to learning, teaching, training, research and development that are part of the instructional functions performed by a Qualified Educational Institution or Other Authorized Educati -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 \hich\f1 nal Licensee and (ii) in the case of Students, purposes related to learning, training, research or development. \'93\loch\f1 \hich\f1 Educational Purposes\'94\loch\f1 - does not include commercial, professional or any other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 11.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Evaluation Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means purposes of \hich\af1\dbch\af31505\loch\f1 -evaluation and demonstration of the capabilities of the Software or Supplemental Materials but excludes competitive analysis and any commercial, professional, or other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 12.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Excluded Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\hich\af1\dbch\af31505\loch\f1 - means any materials, including Software, Supplemental Materials or User Documentation (and including, without limitation, any computer programs, modules or components of a computer program, functionality or features of a computer program, explanatory pri -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ted or electronic materials, content or other materials, if any), that may be provided or become available to Licensee, by any means, or that are on any media delivered to Licensee, for which (a) Licensee does not have a License Identification, or (b) Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee has not paid (and continued to pay) the applicable fees. Licensee acknowledges that Excluded Materials are included on media or via download for convenience of the licensing mechanism used by Autodesk, and inclusion does not in any way authorize, ex -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 ressly or impliedly, a right to use such Excluded Materials. -\par \hich\af1\dbch\af31505\loch\f1 13.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Faculty}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means an individual person who is an employee or independent contractor working for a Qualified Educational Institution. -\par \hich\af1\dbch\af31505\loch\f1 14.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Install}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 \hich\f1 and \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Installation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means, with respect to a co\hich\af1\dbch\af31505\loch\f1 mputer program or other materials, to copy the program or other materials onto a hard disk or other storage medium. -\par \hich\af1\dbch\af31505\loch\f1 15.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Identification}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means one or more designations by Autodesk that set forth the License Type (among other things) for Licensee\hich\f1 \rquote \loch\f1 s \hich\af1\dbch\af31505\loch\f1 \hich\f1 -license of the Licensed Materials. The License Identification may be (a) located (i) in the Licensed Materials (e.g., in an \'93\loch\f1 \hich\f1 About\'94\loch\f1 - box, license information dialog box, or text file of Software), (ii) on or with Autodesk packaging, or (iii) in a written \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -onfirmation or other notice issued to Licensee by Autodesk and transmitted via email, facsimile, physical delivery, or otherwise, or (b) obtained from Autodesk on request. For clarification, License Identification does not include a designation, confirma -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ion, packaging or other document provided by a Reseller or other third party. -\par \hich\af1\dbch\af31505\loch\f1 16.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Type}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a type of license specified by Autodesk for Autodesk Materials, including the types set forth in Exhibit B. License Type includes the terms specified by\hich\af1\dbch\af31505\loch\f1 - Autodesk for each type of license, including the applicable terms set forth in Exhibit B. License Type is determined by Autodesk and may be specified in the applicable License Identification. -\par \hich\af1\dbch\af31505\loch\f1 17.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensed Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means Software, Supplemental Material\hich\af1\dbch\af31505\loch\f1 \hich\f1 s and User Documentation (a) downloaded by clicking on the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism associated with this Agreement or by otherwise indicating assent to this Agreement, (b) delivered prepackaged with this Agreement, or (c) otherwise a\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -companied by this Agreement, provided that (i) in the case of Software, the Software is identified in an applicable License Identification, and (ii) Licensee has paid (and continues to pay) the applicable fees. Licensed Materials also includes Supplement -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -l Materials and User Documentation that Autodesk provides or makes available to Licensee for use with Software licensed under this Agreement if there are no separate terms for such materials specified by Autodesk. Licensed Materials includes, without lim -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 tation, any error corrections, patches, service packs, updates and upgrades to, and new versions of, the Licensed Materials that Autodesk provides or makes available to Licensee under Licensee -\hich\f1 \rquote \loch\f1 s then-current license. Licensee acknowledges that availabili\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -y of Upgrades and new versions may be subject to additional fees and the Relationship Program Terms. In addition, Licensed Materials includes, without limitation, any Previous Versions and other Autodesk Materials that Licensee receives or retains pursua -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -t to the Relationship Program Terms, but only for so long as and to the extent expressly authorized by the Relationship Program Terms. Notwithstanding the foregoing (or any other provision of this Agreement), Licensed Materials in all cases excludes Excl -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 ded Materials. -\par \hich\af1\dbch\af31505\loch\f1 18.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (a) the company or other legal entity on behalf of which Autodesk Materials are acquired, if the Autodesk Materials are acquired on behalf of such an entity (e.g., by an employee, independent contractor, or other authori -\hich\af1\dbch\af31505\loch\f1 \hich\f1 zed representative), or (b) if there is no such entity, the individual who accepts this Agreement (e.g., by selecting the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism associated with this Agreement or otherwise indicating assent to this Agreement, or by\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -installing, downloading, accessing, or otherwise copying or using all or any portion of the Autodesk Materials). For clarification, \'93\loch\f1 \hich\f1 Licensee\'94\loch\f1 - refers only to a single, specifically identified legal entity or individual, and does not include any subsidiar\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 - or affiliate of any such legal entity or individual or any other related person. -\par \hich\af1\dbch\af31505\loch\f1 19.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, in reference to Licensed Materials, the use of such Licensed Materials (and the features and functionality thereof) by License\hich\af1\dbch\af31505\loch\f1 e\hich\f1 \rquote -\loch\f1 s own Personnel to meet the internal requirements of Licensee\hich\f1 \rquote \loch\f1 -s business in the ordinary course of such business, provided that Internal Business Needs will in no event include providing or making available such Licensed Materials (or the features or fu\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ctionality thereof) to any third party. -\par \hich\af1\dbch\af31505\loch\f1 20.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Networked Basis}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means a computing environment that includes a Computer acting as a file server which allows the Licensed Materials Installed on such Computer to be uploaded and Installed to, and operated, viewe\hich\af1\dbch\af31505\loch\f1 -d or otherwise Accessed from, other Computers through a local area network connection or through a VPN connection subject to compliance with the VPN Requirements. -\par \hich\af1\dbch\af31505\loch\f1 21.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Open Source}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means any software code that: (a) contains, or is derived in any manner, (i\hich\af1\dbch\af31505\loch\f1 -n whole or in part), from any software that is distributed as free software, open source software, shareware (e.g., Linux), or similar licensing or distribution models; and (b) is subject to any agreement with terms requiring that using, copying, modifyin -\hich\af1\dbch\af31505\loch\f1 g\hich\af1\dbch\af31505\loch\f1 - or redistributing the software requires that such software and/or the derivative works of such software be: (i) disclosed and/or distributed in source code form; (ii) be licensed for the purpose of making derivative works; and/or (iii) be redistributed f -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ee of charge; including, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models similar to, GNU -\hich\f1 \rquote \loch\f1 s General Public License (GPL) or Lesser/Library GPL (LGPL). -\par \hich\af1\dbch\af31505\loch\f1 22.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 O\hich\af1\dbch\af31505\loch\f1 ther Authorized Educational Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a Licensee described at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://www.autodesk.com/educationterms"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e006100750074006f006400650073006b002e0063006f006d002f0065006400750063006100740069006f006e007400650072006d0073000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.autodesk.com/educationterms}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 23.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Permitted Number}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means a maximum number\hich\af1\dbch\af31505\loch\f1 - (e.g., number of authorized users, number of concurrent users, number of computers, sessions, etc.) applicable to a license of the Licensed Materials and to the License Type associated with such license. Such number is determined by Autodesk and may be -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 pecified in the applicable License Identification. -\par \hich\af1\dbch\af31505\loch\f1 24.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personal Learning Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) personal learning as a Student or (ii) in the case of a non-Student, personal learning, excluding (a) in-person or online classroom learning in any degree-grantin\hich\af1\dbch\af31505\loch\f1 -g or certificate granting program, and (b) learning related to any commercial, professional or other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 25.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personnel}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (a) Licensee\hich\f1 \rquote \loch\f1 s individual employees and (b) individual persons who are independent contractors working on Licens\hich\af1\dbch\af31505\loch\f1 ee\hich\f1 \rquote \loch\f1 -s premises and who Install and Access the Licensed Materials only on and through Computers owned or leased and controlled by Licensee. -\par \hich\af1\dbch\af31505\loch\f1 26.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Previous Versions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, as to any then-current release of Licensed Materials, a prior release of the Licensed M\hich\af1\dbch\af31505\loch\f1 -aterials as to which such then-current release is a successor or substitute (as determined by Autodesk). -\par \hich\af1\dbch\af31505\loch\f1 27.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Qualified Educational Institution}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means an educational institution which has been accredited by an authorized governmental agency within its appl\hich\af1\dbch\af31505\loch\f1 -icable local, state, provincial, federal, or national government and has the primary purpose of teaching its enrolled students. Examples, without limitation, of entities that are included and excluded from this definition are described at } -{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http:/\hich\af1\dbch\af31505\loch\f1 /www.autodesk.com/educationterms"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 -{\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e006100750074006f006400650073006b002e0063006f006d002f0065006400750063006100740069006f006e007400650072006d0073000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.autodesk.com/educationterms}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par \hich\af1\dbch\af31505\loch\f1 28.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relationship Program}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) Subscription or (ii) a rental program offered generally by Autodesk pursuant to which Autodesk makes available Licensed Materials. -\par \hich\af1\dbch\af31505\loch\f1 29. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relat\hich\af1\dbch\af31505\loch\f1 ionship Program Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the terms for a Relationship Program set forth at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/support-terms-and-conditions"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90bc400000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f0073007500700070006f00720074002d007400650072006d0073002d0061006e0064002d0063006f006e0064006900740069006f006e0073000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/support-terms-and-condi\hich\af1\dbch\af31505\loch\f1 tions}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 or any successor or supplemental web page of Autodesk (the URL for which may be obtained on Autodesk\hich\f1 \rquote \loch\f1 s website or on request). -\par \hich\af1\dbch\af31505\loch\f1 30. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Reseller}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a distributor or reseller authorized directly or indirectly by Autodesk to distribute authentic Au\hich\af1\dbch\af31505\loch\f1 todesk Materials to Licensee. -\par \hich\af1\dbch\af31505\loch\f1 31.\tab \hich\f1 \'94}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means services (including the results of services) provided or made available by Autodesk, including, without limitation, support services, storage, simulation and testing services, training and other benefits, \hich\af1\dbch\af31505\loch\f1 -but excluding services provided or made available as part of a Relationship Program. -\par \hich\af1\dbch\af31505\loch\f1 32.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means the terms for Services set forth at a location where a user may order or register for, or that is displayed in connection with ordering or regis\hich\af1\dbch\af31505\loch\f1 -tering for, such Services (e.g., a web page) or, if there are no such terms, at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-service"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90bac00000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f007400650072006d0073002d006f0066002d0073006500720076006900630065000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-service}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 (if the Servic\hich\af1\dbch\af31505\loch\f1 es are web services) or }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-use"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90ba400000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f007400650072006d0073002d006f0066002d007500730065000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-use}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 - for all other Services) or any successor or supplemental web pages of Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 33.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Software}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 \hich\f1 means the Autodesk FBX SDK computer program, or a module or component of a computer program, including the software development kit (\'93\loch\f1 \hich\f1 SDK\'94\loch\f1 \hich\f1 ) distributed or made available by Autodesk. The term -\'93\loch\f1 \hich\f1 Software\'94\hich\af1\dbch\af31505\loch\f1 may also refer to functions and features of a computer program. -\par \hich\af1\dbch\af31505\loch\f1 34.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Stand-alone Basis}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) the Licensed Materials are Installed on a single Computer and (ii) the Licensed Materials cannot be Installed on, or operated, viewed or otherwise Accessed f\hich\af1\dbch\af31505\loch\f1 -rom or through any other Computer (e.g., through a network connection of any kind). -\par \hich\af1\dbch\af31505\loch\f1 35.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Student}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means an individual person enrolled as a student at a Qualified Educational Institution. -\par \hich\af1\dbch\af31505\loch\f1 36.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Subscription}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 is the program offered generally by Autodesk unde\hich\af1\dbch\af31505\loch\f1 -r which Autodesk provides (among other things) updates and upgrades to, new versions of, and certain other support, services and training relating to Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 37.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Supplemental Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means materials, other than Software and related User Doc\hich\af1\dbch\af31505\loch\f1 -umentation, that are distributed or made available by Autodesk for use with Software. Supplemental Materials include, without limitation, (a) content, such as sample drawings and designs, modules for drawings and designs, and representations of elements -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 -sed in drawings and designs (e.g., buildings, parts of buildings, fixtures, furniture, bridges, roads, characters, backgrounds, settings and animations), (b) background materials, such as building codes and descriptions of building practices, (c) tools fo -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - rendering the output of the Software, such as fonts, and (d) Development Materials, application programming interfaces (APIs), and other similar developer materials (including API Information). -\par \hich\af1\dbch\af31505\loch\f1 37\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Territory}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 (a) means the country, countries or jurisdicti\hich\af1\dbch\af31505\loch\f1 -on(s) specified in the License Identification, or (b) if there is no such License Identification, or no country or jurisdiction is specified in the License Identification, means the country in which Licensee acquires a license to the Autodesk Materials. -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -f the License Identification specifies, or Licensee acquires the Autodesk Materials in, a member country of the European Union or the European Free Trade Association, Territory means all the countries of the European Union and the European Free Trade Asso -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 iation. -\par \hich\af1\dbch\af31505\loch\f1 38.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Uninstall}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means to remove or disable a copy of Autodesk Materials from a hard drive or other storage medium through any means or otherwise to destroy or make unusable a copy of the Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 39.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Upgrade}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a full commercial ver\hich\af1\dbch\af31505\loch\f1 -sion of Licensed Materials (a) which is a successor to or substitute for a qualifying prior release (and may incorporate error corrections, patches, service packs and updates and upgrades to, and may enhance or add to the features or functionality of, the -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -prior release) or different release of Licensed Materials, (b) is provided to a Licensee who has previously licensed the applicable qualifying prior or different release from Autodesk and (c) for which Autodesk generally charges a separate fee or makes av -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -ilable solely to customers under a Relationship Program. Whether Autodesk Materials are an Upgrade may be specified in the applicable License Identification. Whether Autodesk Materials are an Upgrade and whether Licensee has met the qualifications to li -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ense particular Autodesk Materials as an Upgrade are determined by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 40.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 User Documentation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the explanatory or instructional materials for Software or Supplemental Materials (including materials regarding use of the Software or Supplemental\hich\af1\dbch\af31505\loch\f1 - Materials), whether in printed or electronic form, that Autodesk or a Reseller incorporates in the Software or Supplemental Materials (or the packaging for the Software or Supplemental Materials) or otherwise provides to its customers when or after such -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ustomers license, acquire or Install the Software or Supplemental Materials. -\par \hich\af1\dbch\af31505\loch\f1 41.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 VPN Requirements}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 \hich\f1 means (i) the Licensed Materials are Accessed through a secure virtual private network (\'93\loch\f1 \hich\f1 VPN\'94\loch\f1 ); (ii) the maximum number of concurrent users Accessing the Li\hich\af1\dbch\af31505\loch\f1 -censed Materials (on a Networked Basis or through the VPN) does not exceed the Permitted Number at any time; (iii) all copies of the Licensed Materials are Installed and Accessed exclusively in conjunction with the technical protection device (if any) sup -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 lied with the Licensed Materials; and (iv) the VPN connection is secure and complies with current industry standard encryption and protection mechanisms. -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 -\par -\par \hich\af1\dbch\af31505\loch\f1 Exhibit B -\par }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Types -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -. If the License Identification identifies the License Type as a \'93\loch\f1 \hich\f1 Stand-alone License\'94\loch\f1 \hich\f1 or as an \'93\loch\f1 -Individual License," Licensee may Install a single primary copy of the specific release of the Licensed Materials designated in the applicable License Identi\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 -ication on one (1) Computer, on a Stand-alone Basis, and permit Access to such primary copy of the Licensed Materials solely by Licensee\hich\f1 \rquote \loch\f1 s Personnel, and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs. Licensee may also Install a single additional copy of\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -such Licensed Materials on one (1) additional Computer, on a Stand-alone Basis; provided that (i) such additional copy of the Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an ind -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 vidual) or an employee of Licensee; (iii) such person Accesses the additional copy solely to perform work while away from that person\hich\f1 \rquote \loch\f1 -s usual work location and solely for Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs; and (iv) the primary and additional copies are n\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -t Accessed at the same time. Stand-alone (Individual) License is for a perpetual term, except as otherwise provided in this Agreement. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Multi-seat Stand-alone License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 . If the License Identification identifies the License Type as a -\'93\loch\f1 Multi-seat Stand-alo\hich\af1\dbch\af31505\loch\f1 -ne License," Licensee may Install primary copies of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, on a Stand-alone Basis, and permit Access to such copies of -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 he Licensed Materials solely by Licensee\hich\f1 \rquote \loch\f1 s Personnel, and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs. Licensee may also Install additional copies of such Licensed Materials on additional Computers in an amount up to the Permitted Number of Computers, \hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -n a Stand-alone Basis; provided that (i) each additional copy of such Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an individual) or an employee of Licensee; (iii) such person A -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 cesses the additional copy solely to perform work while away from that person\hich\f1 \rquote \loch\f1 s usual work location and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs; and (iv) the primary and additional copies are not Accessed at the same time. Multi-seat Stand-alone Li\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -ense is for a perpetual term, except as otherwise provided in this Agreement. -\par \hich\af1\dbch\af31505\loch\f1 3.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -. If the License Identification identifies the License Type for the Licensed Materials as a \'93\loch\f1 Network License," Licensee may Install copies of the specific rele\hich\af1\dbch\af31505\loch\f1 -ase of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials on multiple Computers, on a Networked Basis, solely by Licensee\hich\f1 \rquote \loch\f1 -s Personnel, solely for Licensee\hich\f1 \rquote \loch\f1 s Internal Busine\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 -s Needs, only so long as the maximum number of concurrent Authorized Users does not exceed the Permitted Number of Authorized Users or other limits imposed by the Autodesk License Manager (if any). Licensee may, at Licensee\hich\f1 \rquote \loch\f1 -s option, also Install the Lic\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsed Materials on a Hot Backup Server; provided that Licensee may Access the Licensed Materials on the Hot Backup Server only during the time period when, and solely for as long as, the primary Installed copy of the Licensed Materials is inoperable and on -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 \hich\f1 y subject to the same terms and conditions as are applicable to the primary Installed copy. A \'93\loch\f1 \hich\f1 Hot Backup Server\'94\loch\f1 - means a file server Computer that has a second copy of the Software and Supplemental Materials Installed but that is not permitted to be Acc\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ssible except when the primary Installed copy of the Software and Supplemental Materials are inoperable and only for so long as such primary Installed copy is inoperable. A Network License is for a perpetual term, except as otherwise provided in this Agr -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 ement. -\par \hich\af1\dbch\af31505\loch\f1 4.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 .\~ -\hich\af1\dbch\af31505\loch\f1 \hich\f1 If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Stand-alone (Individual) License,\'94\loch\f1 - an Educational Licensee may Install a copy of the specific release of the Licensed Mate\hich\af1\dbch\af31505\loch\f1 -rials designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by a -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 Educational Licensee solely for Educational Purposes.\~ - An Educational Stand-alone (Individual) License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Instal\hich\af1\dbch\af31505\loch\f1 l -\hich\af1\dbch\af31505\loch\f1 ation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 5.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Multi-seat Stand-alone License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 \hich\f1 . If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Multi-seat Stand-alone License,\'94\loch\f1 an Educational Licensee may Install copie -\hich\af1\dbch\af31505\loch\f1 -s of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes. An Educational Multi-seat Stand-alone License is for a fixed term specified in the applicable License Identification or, if no suc -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 term is specified, the term is thirty-six (36) months from Installation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 6.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Network License,\'94\loch\f1 an E\hich\af1\dbch\af31505\loch\f1 -ducational Licensee may Install copies of the specific release of the Licensed Materials designated in the applicable License Identification on a single file server Computer, subject to certain functional limitations described in Section 6.3 (Affected Dat -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -), and Access such Licensed Materials on multiple Computers on a Networked Basis, and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes, only so long as the maximum number of concurrent -\hich\af1\dbch\af31505\loch\f1 A\hich\af1\dbch\af31505\loch\f1 -uthorized Users does not exceed the Permitted Number of Authorized Users. An Educational Network License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Inst -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 llation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 7.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personal Learning License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If the License Identification identifies the License Type as a \'93\loch\f1 \hich\f1 Personal Learning License\'94\loch\f1 , Licensee may Install a copy of the specific release of the Licensed Materi\hich\af1\dbch\af31505\loch\f1 -als designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee, as an individual, solely for Personal Learning Purposes and only at and from locations that are not labs or classrooms and are not operated for commercial, professional or for-profit purposes. A Personal Learning License Stand-alone is for a fixed -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 erm specified in the applicable License Identification. If no such term is specified, the term is thirteen (13) months from Installation. -\par \hich\af1\dbch\af31505\loch\f1 8.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Evaluation/Demonstration/Trial}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If Autodesk identifies the License Type as a \'93\loch\f1 \hich\f1 demonstration\'94\loch\f1 \hich\f1 , \'93\loch\f1 \hich\f1 evaluation\'94\loch\f1 \hich\f1 , \'93\loch\f1 tria\hich\af1\dbch\af31505\loch\f1 \hich\f1 l,\'94\loch\f1 \hich\f1 -\'93\loch\f1 \hich\f1 not for resale\'94\loch\f1 \hich\f1 or \'93\loch\f1 \hich\f1 NFR\'94\loch\f1 \hich\f1 version (each, an \'93\loch\f1 \hich\f1 Evaluation License\'94\loch\f1 -) in the applicable License Identification, Licensee may Install a copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Co\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 -puter, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials, solely by Licensee\hich\f1 \rquote \loch\f1 -s Personnel, solely for Evaluation Purposes, only so long as th\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 maximum number of concurrent Authorized Users does not exceed one (1), and only from Licensee\hich\f1 \rquote \loch\f1 -s work location. An Evaluation License is for a fixed term specified in the applicable License Identification, or if no such term is specified, the term is thi\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ty (30) days from Installation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 9.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Fixed Term/Limited Duration/Rental License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration \hich\af1\dbch\af31505\loch\f1 or as having a fixed term or as a rental license, Licensee -\hich\f1 \rquote \loch\f1 s right to Install and Access the Licensed Materials will continue only for the period, duration or term specified in the License Identification. Such Installation and Access will be in accordanc\hich\af1\dbch\af31505\loch\f1 e -\hich\af1\dbch\af31505\loch\f1 - with and subject to the applicable License Type and Permitted Number. If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration, or as having a fixed term, or a rental license but no pe -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -iod, duration or term is specified in the License Identification, the period, duration or term will be ninety (90) days from Installation (or the period specified in Sections B.6 (Educational Network License), B.7 (Personal Learning License) or B.8 (Evalu -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 tion/Demonstration/Trial) of this Exhibit B with respect to the licenses described in those sections). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Session Specific Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If the License Identification identifies the License Type as a "Session Specific Network License", Licensee may in\hich\af1\dbch\af31505\loch\f1 -stall one (1) copy of the specific release of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials from multiple Computers through a Supported Virtualization Application, on -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 - Networked Basis, solely by Licensee's Personnel, solely for Licensee's Internal Business needs, only so long as the maximum number of concurrent Sessions does not exceed the Permitted Number or other limits imposed by the Autodesk License Manager tool (i -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 \hich\f1 any). For purposes of this Session Specific Network License, (a) a \'93\loch\f1 \hich\f1 Session\'94\loch\f1 \hich\f1 - is defined as a single interactive information exchange between two Computers that are connected through a Supported Virtualization Application, and (b) \'93\loch\f1 Supported Virtualizati\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -\hich\f1 n Application(s)\'94\loch\f1 - are those third party virtualization applications or methods that are specifically identified as supported by Autodesk in the User Documentation for the Licensed Materials. With respect to the applicable Supported Virtualization Applica -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -ion, Licensee agrees to activate any available session tracking mechanism, not disable any such session tracking mechanism and to retain all records generated by such session tracking mechanism. A Session Specific Network License is for a perpetual term, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 except as otherwise provided in this Agreement. -\par -\par -\par -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a -9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad -5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 -b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 -0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 -a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f -c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 -0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 -a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 -6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b -4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b -4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100aa5225dfc60600008b1a0000160000007468656d652f7468656d652f -7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb -43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f -f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44 -f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14 -7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917dda7 -dfaab7dafe02ab81d2438bef76b55d2e1a78cd7f798373d3973f03af40a97f6f03dfed06104503af4029dedfc07b5eb51478065e81527c65035f2d34db5ed5c0 -2b5048497cb8812ef89572b05c6d061933ba6785d77daf5b2d2d9caf50500d5975c929c62c16db6a2d42f758d2058004522448ec88f9148fd110aa3840940c12 -e2ec93490885374531e3305c2815ba8532fc973f4f1da988a01d8c346bc90b98f08d21c9c7e1c3844c45c3fd18bcba1ae4cdcb1fdfbc7cee9c3c7a71f2e89793 -c78f4f1efd9c3a32acf6503cd1ad5e7fffc5df4f3f75fe7afeddeb275fd9f15cc7fffed367bffdfaa51d082b5d85e0d5d7cffe78f1ecd5379ffff9c3130bbc99 -a0810eef930873e73a3e766eb10816a6426032c783e4ed2cfa2122ba45339e701423398bc57f478406fafa1c5164c1b5b019c13b09488c0d787576cf20dc0b93 -9920168fd7c2c8001e30465b2cb146e19a9c4b0b737f164fec9327331d770ba123dbdc018a8dfc766653d05662731984d8a07993a258a0098eb170e4357688b1 -6575770931e27a408609e36c2c9cbbc46921620d499f0c8c6a5a19ed9108f232b711847c1bb139b8e3b418b5adba8d8f4c24dc15885ac8f73135c27815cd048a -6c2efb28a27ac0f791086d247bf364a8e33a5c40a6279832a733c29cdb6c6e24b05e2de9d7405eec693fa0f3c84426821cda7cee23c674649b1d06218aa6366c -8fc4a18efd881f428922e7261336f80133ef10790e7940f1d674df21d848f7e96a701b9455a7b42a107965965872791533a37e7b733a4658490d08bfa1e71189 -4f15f73559f7ff5b5907217df5ed53cbaa2eaaa0371362bda3f6d6647c1b6e5dbc03968cc8c5d7ee369ac53731dc2e9b0decbd74bf976ef77f2fdddbeee7772f -d82b8d06f9965bc574abae36eed1d67dfb9850da13738af7b9daba73e84ca32e0c4a3bf5cc8ab3e7b8690887f24e86090cdc2441cac64998f88488b017a229ec -ef8bae7432e10bd713ee4c19876dbf1ab6fa96783a8b0ed8287d5c2d16e5a3692a1e1c89d578c1cfc6e15143a4e84a75f50896b9576c27ea51794940dabe0d09 -6d329344d942a2ba1c9441520fe610340b09b5b277c2a26e615193ee97a9da6001d4b2acc0d6c9810d57c3f53d30012378a242148f649ed2542fb3ab92f92e33 -bd2d984605c03e625901ab4cd725d7adcb93ab4b4bed0c99364868e566925091513d8c87688417d52947cf42e36d735d5fa5d4a02743a1e683d25ad1a8d6fe8d -c579730d76ebda40635d2968ec1c37dc4ad9879219a269c31dc3633f1c4653a81d2eb7bc884ee0ddd95024e90d7f1e6599265cb4110fd3802bd149d520220227 -0e2551c395cbcfd24063a5218a5bb104827061c9d541562e1a3948ba99643c1ee3a1d0d3ae8dc848a7a7a0f0a95658af2af3f383a5259b41ba7be1e8d819d059 -720b4189f9d5a20ce0887078fb534ca33922f03a3313b255fdad35a685eceaef13550da5e3884e43b4e828ba98a77025e5191d7596c5403b5bac1902aa8564d1 -080713d960f5a01add34eb1a2987ad5df7742319394d34573dd35015d935ed2a66ccb06c036bb13c5f93d7582d430c9aa677f854bad725b7bed4bab57d42d625 -20e059fc2c5df70c0d41a3b69acca026196fcab0d4ecc5a8d93b960b3c85da599a84a6fa95a5dbb5b8653dc23a1d0c9eabf383dd7ad5c2d078b9af549156df3d -f44f136c700fc4a30d2f81675470954af8f09020d810f5d49e24950db845ee8bc5ad0147ce2c210df741c16f7a41c90f72859adfc97965af90abf9cd72aee9fb -e562c72f16daadd243682c228c8a7efacda50bafa2e87cf1e5458d6f7c7d89966fdb2e0d599467eaeb4a5e11575f5f8aa5ed5f5f1c02a2f3a052ead6cbf55625 -572f37bb39afddaae5ea41a5956b57826abbdb0efc5abdfbd0758e14d86b9603afd2a9e52ac520c8799582a45fabe7aa5ea9d4f4aacd5ac76b3e5c6c6360e5a9 -7c2c6201e155bc76ff010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f -7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be -9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980 -ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5b -babac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e -745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f -2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f74 -68656d654d616e616765722e786d6c504b01022d0014000600080000002100aa5225dfc60600008b1a00001600000000000000000000000000d6020000746865 -6d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cb0a00000000} -{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d -617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 -6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 -656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} -{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; -\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; -\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; -\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; -\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; -\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; -\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; -\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; -\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; -\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; -\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; -\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; -\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; -\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; -\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; -\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; -\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; -\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; -\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; -\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; -\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; -\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; -\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; -\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; -\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; -\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; -\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; -\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; -\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; -\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 -4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 -d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000003013 -e2fa177bd201feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/sdk/Darwin/2019.2/include/fbxsdk.h b/sdk/Darwin/2019.2/include/fbxsdk.h deleted file mode 100644 index 7998fe8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk.h +++ /dev/null @@ -1,277 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk.h -#ifndef _FBXSDK_H_ -#define _FBXSDK_H_ - -/** - * \mainpage FBX SDK Reference - *

- * \section welcome Welcome to the FBX SDK Reference - * The FBX SDK Reference contains reference information on every header file, - * namespace, class, method, enum, typedef, variable, and other C++ elements - * that comprise the FBX software development kit (SDK). - *

- * The FBX SDK Reference is organized into the following sections: - *

- *

- * \section otherdocumentation Other Documentation - * Apart from this reference guide, an FBX SDK Programming Guide and many FBX - * SDK examples are also provided. - *

- * \section aboutFBXSDK About the FBX SDK - * The FBX SDK is a C++ software development kit (SDK) that lets you import - * and export 3D scenes using the Autodesk FBX file format. The FBX SDK - * reads FBX files created with FiLMBOX version 2.5 and later and writes FBX - * files compatible with MotionBuilder version 6.0 and up. - */ - -#pragma pack(push, 8) //FBXSDK is compiled with default value (8) - -#include - -#ifndef FBXSDK_NAMESPACE_USING - #define FBXSDK_NAMESPACE_USING 1 -#endif - -//--------------------------------------------------------------------------------------- -//Core Base Includes -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Math Includes -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Sync Includes -#ifndef FBXSDK_ENV_WINSTORE - #include - #include - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ - -//--------------------------------------------------------------------------------------- -//Core Includes -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include - -//--------------------------------------------------------------------------------------- -//File I/O Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Animation Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Constraint Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Geometry Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Shading Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Utilities Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -#if defined(FBXSDK_NAMESPACE) && (FBXSDK_NAMESPACE_USING == 1) - using namespace FBXSDK_NAMESPACE; -#endif - -#pragma pack(pop) - -#endif /* _FBXSDK_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxalloc.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxalloc.h deleted file mode 100644 index 656c85d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxalloc.h +++ /dev/null @@ -1,420 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxalloc.h - * Allocation functions definition. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * The Microsoft Windows implementation in debug mode allows to specify where the - * allocations happen by providing the standard block type, file name and line number. - */ -#ifndef _FBXSDK_CORE_ARCH_ALLOC_H_ -#define _FBXSDK_CORE_ARCH_ALLOC_H_ - -#include - -#if defined(_DEBUG) && defined(FBXSDK_ENV_WIN) - #include -#endif - -#if defined(FBXSDK_ENV_MAC) - #include -#else - #include -#endif - -#include - -#if defined(FBXSDK_CPU_32) && !defined(FBXSDK_ENV_IOS) - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)8U) -#else - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)16U) -#endif - -#define FBXSDK_MEMORY_COPY(dst, src, size) {memcpy(dst,src,size);} - -typedef void* (*FbxMallocProc)(size_t); //! Function pointer signature used to replace "malloc" -typedef void* (*FbxCallocProc)(size_t, size_t); //! Function pointer signature used to replace "calloc" -typedef void* (*FbxReallocProc)(void*, size_t); //! Function pointer signature used to replace "realloc" -typedef void (*FbxFreeProc)(void*); //! Function pointer signature used to replace "free" - -/** Set the global memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate memory in the system. */ -FBXSDK_DLL void FbxSetMallocHandler(FbxMallocProc pHandler); - -/** Set the global zero'd memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate zero'd memory in the system. */ -FBXSDK_DLL void FbxSetCallocHandler(FbxCallocProc pHandler); - -/** Set the global memory re-allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to re-allocate memory in the system. */ -FBXSDK_DLL void FbxSetReallocHandler(FbxReallocProc pHandler); - -/** Set the global memory freeing function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to free memory in the system. */ -FBXSDK_DLL void FbxSetFreeHandler(FbxFreeProc pHandler); - -/** Get the global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetMallocHandler(); - -/** Get the global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetCallocHandler(); - -/** Get the global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetReallocHandler(); - -/** Get the global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetFreeHandler(); - -/** Get the default global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetDefaultMallocHandler(); - -/** Get the default global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetDefaultCallocHandler(); - -/** Get the default global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetDefaultReallocHandler(); - -/** Get the default global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetDefaultFreeHandler(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FBXSDK_DLL size_t FbxAllocSize(size_t pNbItems, size_t pItemSize); - FBXSDK_DLL void* FbxMalloc(size_t pSize); - FBXSDK_DLL void* FbxCalloc(size_t pCount, size_t pSize); - FBXSDK_DLL void* FbxRealloc(void* pData, size_t pSize); - FBXSDK_DLL void FbxFree(void* pData); - FBXSDK_DLL char* FbxStrDup(const char* pString); - FBXSDK_DLL wchar_t* FbxStrDupWC(const wchar_t* pString); - - //These versions of allocators use the default system mallocs, and on Windows we also pass the debugging parameters. - //If you define FBXSDK_ALLOC_DEBUG in your project, the FBX SDK will use these debug versions everywhere. - FBXSDK_DLL void* FbxMallocDebug(size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxCallocDebug(size_t pCount, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxReallocDebug(void* pData, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void FbxFreeDebug(void* pData, int pBlock); - - //When FBXSDK_ALLOC_DEBUG is defined, redirect allocation calls to the debug version. - #if defined(FBXSDK_ALLOC_DEBUG) - #define FbxMalloc(s) FbxMallocDebug(s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxCalloc(c, s) FbxCallocDebug(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxRealloc(p, s) FbxReallocDebug(p, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxFree(p) FbxFreeDebug(p, _NORMAL_BLOCK) - #endif -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -//! Deletion policy for pointer template classes that uses the delete operator. -template class FbxDeletionPolicyDefault -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - delete *pPtr; - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxDelete() function. -template void FbxDelete(T* p); -template void FbxDelete(const T* p); -template class FbxDeletionPolicyDelete -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** mPtr) - { - if( *mPtr ) - { - FbxDelete(*mPtr); - *mPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxFree() function. -template class FbxDeletionPolicyFree -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - FbxFree(*pPtr); - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the Destroy() function. -template class FbxDeletionPolicyObject -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - (*pPtr)->Destroy(); - *pPtr = NULL; - } - } -}; - -/** FbxAutoPtr mimics the \c auto_ptr class template implementation available in the C++ Standard Library. The \c auto_ptr template -* class describes an object that stores a pointer to a single allocated object of type Type* that ensures that the object to which -* it points gets destroyed automatically when control leaves a scope. */ -template > class FbxAutoPtr -{ -public: - //! Construct from a pointer. - explicit FbxAutoPtr(Type* pPtr=0) : mPtr(pPtr){} - - //! Destructor. - ~FbxAutoPtr() { Policy::DeleteIt(&mPtr); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - //! Reset the scoped pointer by swapping with another pointer. - inline void Reset(Type* pPtr=0) - { - FBX_ASSERT(pPtr == 0 || pPtr != mPtr); //Catch self-reset errors - FbxAutoPtr(pPtr).Swap(*this); - } - - //! Swap with another pointer. - inline void Swap(FbxAutoPtr& pOther) - { - Type* TmpPtr = pOther.mPtr; - pOther.mPtr = mPtr; - mPtr = TmpPtr; - } - - //! Release the pointer, so that it won't perform deletion in its destruction. - inline Type* Release() - { - Type* TmpPtr = mPtr; - mPtr = NULL; - return TmpPtr; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAutoPtr(const FbxAutoPtr&); - FbxAutoPtr& operator=(const FbxAutoPtr&); - - Type* mPtr; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxAutoFreePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoFreePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxAutoDeletePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDeletePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxAutoDestroyPtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDestroyPtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - - -/** FbxSharedPtr class describes an object that stores a pointer to a single allocated object of type -* Type* that ensures that the object to which it points gets destroyed automatically when the control -* leaves a scope and the reference count is 0. */ -class RefCount -{ -public: - RefCount() { Init(); }; - ~RefCount() { Init(); }; - - void Init() { count = 0; } - void IncRef() { count++; } - int DecRef() { count--; if (count < 0) count = 0; return count; } - -private: - int count; -}; - -template > class FbxSharedPtr -{ -public: - // Default constructor. - FbxSharedPtr() : - mPtr(0), - mRef(0) - {} - - //! Construct from a pointer. - explicit FbxSharedPtr(Type* pPtr) : - mPtr(pPtr), - mRef(0) - { - if (pPtr != 0) - { - mRef = (RefCount*)FbxMalloc(sizeof(RefCount)); - mRef->Init(); - mRef->IncRef(); - } - } - - //! Copy constructor - FbxSharedPtr(const FbxSharedPtr& pSPtr) : - mPtr(pSPtr.mPtr), - mRef(pSPtr.mRef) - { - if (pSPtr.mPtr != 0 && mRef != 0) - mRef->IncRef(); - } - - // Assignment operator - FbxSharedPtr& operator=(const FbxSharedPtr& pSPtr) - { - if (this != &pSPtr) // avoid self assignment - { - Reset(); - - if (pSPtr.mPtr) - { - mPtr = pSPtr.mPtr; - mRef = pSPtr.mRef; - FBX_ASSERT(mRef != NULL); - mRef->IncRef(); - } - } - return *this; - } - - //! Destructor. - ~FbxSharedPtr() { Destroy(); } - - void Destroy() { Reset(); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void Reset() - { - if (mRef) - { - FBX_ASSERT(mPtr != 0); - if (mRef->DecRef() == 0) - { - Policy::DeleteIt(&mPtr); - FbxFree(mRef); - mRef = NULL; - } - } - } - - Type* mPtr; - RefCount* mRef; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxSharedFreePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedFreePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxSharedDeletePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDeletePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxSharedDestroyPtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDestroyPtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - - - -#include - -#endif /* _FBXSDK_CORE_ARCH_ALLOC_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxarch.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxarch.h deleted file mode 100644 index b5246e1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxarch.h +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxarch.h - * Architecture definition. - * - * List of available preprocessor defines that can appear on various systems: - * - * Operating System Environment: - * FBXSDK_ENV_WIN (Windows) - * FBXSDK_ENV_WINSTORE (Windows Store App) - * FBXSDK_ENV_MAC (MacOSX) - * FBXSDK_ENV_IOS (iOS) - * FBXSDK_ENV_LINUX (Linux) - * - * Architecture: - * FBXSDK_ARCH_IX86 (Intel x86) - * FBXSDK_ARCH_AMD64 (AMD64) - * FBXSDK_ARCH_ARM (Advanced RISC Machine) - * - * Processor: - * FBXSDK_CPU_32 (32bit processor) - * FBXSDK_CPU_64 (64bit processor) - * - * Compiler: - * FBXSDK_COMPILER_MSC (Microsoft Compiler) - * FBXSDK_COMPILER_GNU (GNU Compiler) - * FBXSDK_COMPILER_INTEL (Intel Compiler) - * FBXSDK_COMPILER_CLANG (Clang Compiler) - * - * These definitions are based on the information found here: - * http://predef.sourceforge.net/index.php - * - */ -#ifndef _FBXSDK_CORE_ARCH_ARCH_H_ -#define _FBXSDK_CORE_ARCH_ARCH_H_ - -#if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------ - - #define FBXSDK_ENV_WIN 1 - - #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) - #define FBXSDK_ENV_WINSTORE 1 - #endif - - #if defined(_M_X64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(_M_IX86) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(_M_ARM) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #else - #error Unsupported architecture! - #endif - - #if defined(_MSC_VER) - #define FBXSDK_COMPILER_MSC 1 - #elif defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(__ICL) - #define FBXSDK_COMPILER_INTEL 1 - #else - #error Unsupported compiler! - #endif - -#elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X --------------------------- - - #include "TargetConditionals.h" - - #define FBXSDK_ENV_MAC 1 - - #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - #define FBXSDK_ENV_IOS 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(__arm64__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #endif - - #if defined(__clang__) - #define FBXSDK_COMPILER_CLANG 1 - #endif - - #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG) - #error Unsupported compiler! - #endif - -#elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux --------------------------------- - - #define FBXSDK_ENV_LINUX 1 - - #if defined(EMSCRIPTEN) - #define FBXSDK_ENV_EMSCRIPTEN 1 - #endif - - #if defined(ANDROID) - #define FBXSDK_ENV_ANDROID 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_COMPILER_EMSCRIPTEN 1 - #else - #error Unsupported compiler! - #endif - #else - #error Unsupported platform! -#endif - -//--------------------------------------------------------------------------------------- -//Compiler Specifics -#if defined(FBXSDK_SHARED) - #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL) - #define FBXSDK_DLLIMPORT __declspec(dllimport) - #define FBXSDK_DLLEXPORT __declspec(dllexport) - #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4) - #define FBXSDK_DLLIMPORT __attribute__((visibility("default"))) - #define FBXSDK_DLLEXPORT __attribute__((visibility("default"))) - #else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT - #endif -#else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT -#endif - -#ifndef FBXSDK_DLL - #define FBXSDK_DLL FBXSDK_DLLIMPORT -#endif - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' - #if _MSC_VER >= 1300 // 7.1 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN) - #define FBX_DEPRECATED __attribute__((deprecated)) -#elif defined(FBXSDK_COMPILER_INTEL) - #if __INTEL_COMPILER >= 810 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#else - #error Unsupported compiler! -#endif - -#ifdef FBXSDK_COMPILER_CLANG - #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p))) -#else - #define FBX_UNUSED(p) (void)(p) -#endif - -//--------------------------------------------------------------------------------------- -//Platform Standardization -#ifndef NULL - #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) - #define NULL (__null) - #else - #if defined(__cplusplus) - #define NULL 0 - #else - #define NULL ((void*)0) - #endif - #endif -#endif - -#if !defined(_MAX_PATH) - #define _MAX_PATH 260 -#endif - -#if defined(FBXSDK_ENV_WIN) - #define snprintf _snprintf //for stdio.h platform compatibility -#endif - -#if !defined(FBXSDK_COMPILER_MSC) - #ifndef strcmpi - #define strcmpi strcasecmp - #endif - #ifndef stricmp - #define stricmp strcasecmp - #endif - #ifndef strncmpi - #define strncmpi strncasecmp - #endif - #ifndef strnicmp - #define strnicmp strncasecmp - #endif -#endif - -#endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxdebug.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxdebug.h deleted file mode 100644 index 9e348b7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxdebug.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxdebug.h - * Debugging macros and functions. - * - * All macros and functions are removed in release builds. To enable asserts, a debug build is required as well - * as the environment variable "FBXSDK_ASSERT" set to 1 is also required. By default, assertions will pop-up - * a window. It is possible to disable the pop-up on the Windows platform by calling the following code: - * \code - * _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG); - * \endcode - */ -#ifndef _FBXSDK_CORE_ARCH_DEBUG_H_ -#define _FBXSDK_CORE_ARCH_DEBUG_H_ - -#include - -#include - -/** If this environment variable is set to 1, the FBX SDK will assert in debug builds */ -#define FBXSDK_ASSERT_ENVSTR "FBXSDK_ASSERT" - -/** The assertion procedure signature. If a different assertion procedure must be provided, it should have this signature. -* \param pFileName The file name where the assertion occurred. -* \param pFunctionName The function name where the assertion occurred. -* \param pLineNumber The line number in the file where the assertion occurred. -* \param pMessage The message to display when the assertion occurs. */ -typedef void (*FbxAssertProc)(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, const char* pMessage); - -/** Change the procedure used when assertion occurs. -* \param pAssertProc The procedure to be called when assertions occurs. */ -FBXSDK_DLL void FbxAssertSetProc(FbxAssertProc pAssertProc); - -//! Change the procedure back to the default one. -FBXSDK_DLL void FbxAssertSetDefaultProc(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -FBXSDK_DLL void _FbxAssert(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, bool pFormat, const char* pMessage, ...); -FBXSDK_DLL void _FbxTrace(const char* pMessage, ...); - -#ifdef _DEBUG - template struct FbxStaticAssertType; - template<> struct FbxStaticAssertType {enum{value=1};}; - template<> struct FbxStaticAssertType {enum{value=-1};}; - #define FBX_ASSERT(Condition) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,false,#Condition);}} - #define FBX_ASSERT_MSG(Condition, Message, ...) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__);}} - #define FBX_ASSERT_NOW(Message, ...) _FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__); - #define FBX_ASSERT_RETURN(Condition) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return;}} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return Value;}} - #define FBX_ASSERT_STATIC(Condition) typedef char FbxBuildBreakIfFalse[FbxStaticAssertType<(bool)(Condition)>::value]; - #define FBX_TRACE(Message, ...) {_FbxTrace(Message,##__VA_ARGS__);} -#else - #define FBX_ASSERT(Condition) ((void)0) - #define FBX_ASSERT_MSG(Condition, Message, ...) ((void)0) - #define FBX_ASSERT_NOW(Message, ...) ((void)0) - #define FBX_ASSERT_RETURN(Condition) if(!(Condition)){return;} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) if(!(Condition)){return Value;} - #define FBX_ASSERT_STATIC(Condition) - #define FBX_TRACE(Message, ...) ((void)0) -#endif - -template struct FbxIncompatibleWithArray{ enum {value = 0}; }; - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T)\ - struct FbxIncompatibleWithArray< T >{\ - union {\ - T t();\ - } catcherr;\ - enum {value = 1};} - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY(T)\ - template<> FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T) - -#define FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T) ((bool) FbxIncompatibleWithArray::value) - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_ARCH_DEBUG_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxnew.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxnew.h deleted file mode 100644 index d1575f4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxnew.h +++ /dev/null @@ -1,511 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxnew.h - * New operator override templates. - * - * Instead of overloading the operator new in the FBX SDK, we provide a set of templates - * that are used internally to create objects. This mechanic allows the FBX SDK to call - * a different memory allocator. - * \see FbxSetMallocHandler FbxSetCallocHandler FbxSetReallocHandler FbxSetFreeHandler FbxSetMSizeHandler - */ -#ifndef _FBXSDK_CORE_ARCH_NEW_H_ -#define _FBXSDK_CORE_ARCH_NEW_H_ - -#include - -#include - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(push) - #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized -#endif - -#include - -//Type traits for primitive types -template struct FbxSimpleType { enum {value = 0}; }; -template struct FbxSimpleType { enum {value = 1}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; - -#define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType{ union {T t;} catcherr; enum {value = 1};} - -FBXSDK_DEFINE_SIMPLE_TYPE(bool); -FBXSDK_DEFINE_SIMPLE_TYPE(char); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned char); -FBXSDK_DEFINE_SIMPLE_TYPE(short); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short); -FBXSDK_DEFINE_SIMPLE_TYPE(int); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned int); -FBXSDK_DEFINE_SIMPLE_TYPE(long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long); -FBXSDK_DEFINE_SIMPLE_TYPE(float); -FBXSDK_DEFINE_SIMPLE_TYPE(double); -FBXSDK_DEFINE_SIMPLE_TYPE(long double); -FBXSDK_DEFINE_SIMPLE_TYPE(long long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long); - -#define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType::value) - -template T* FbxNew() -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(); -} - -template T* FbxNew(T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(const T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9); -} - -template void FbxDelete(T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(p); - } -} - -template void FbxDelete(const T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(const_cast(p)); - } -} - -template T* FbxNewArray(const int n) -{ - size_t lSize = FbxAllocSize((size_t)n, sizeof(T)); - if( FBXSDK_IS_SIMPLE_TYPE(T) ) - { - return (T*)FbxMalloc(lSize); - } - else - { - void* pTmp = FbxMalloc(lSize + sizeof(int)); - T* p = (T*)((int*)pTmp+1); - *((int*)pTmp) = n; - for( int i = 0; i < n; ++i ) - { - new((T*)p+i)T; //in-place new, not allocating memory so it is safe. - } - return p; - } -} - -template void FbxDeleteArray(T* p) -{ - if( p ) - { - if( !FBXSDK_IS_SIMPLE_TYPE(T) ) - { - for( int i = 0; i < ((int*)p)[-1]; ++i ) - { - ((T*)p)[i].~T(); - } - FbxFree((int*)p-1); - } - else - { - FbxFree((void*)p); - } - } -} - -#define FBXSDK_FRIEND_NEW()\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew();\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p); - -#ifdef FBXSDK_COMPILER_MSC - #pragma warning(pop) -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_NEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h deleted file mode 100644 index 059dc4a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxstdcompliant.h -* Macros to properly support the CRT secure functions. */ -#ifndef _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ -#define _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ - -#include - -#include - -#if defined(FBXSDK_ENV_WIN) - #define FBXSDK_printf printf_s - #define FBXSDK_fprintf fprintf_s - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf_s(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf_s(dst, dstsize, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); } - #define FBXSDK_stricmp(dst, src) _stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) _strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy_s(dst, size, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy_s(dst, size, src, count) - #define FBXSDK_strcat(dst, size, src) strcat_s(dst, size, src) - #define FBXSDK_strtok(str, delim, ctx) strtok_s(str, delim, ctx) - #define FBXSDK_wcscpy(dst, size, src) wcscpy_s(dst, size, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, size, src) -#if !defined(FBXSDK_ENV_WINSTORE) - #define FBXSDK_getpid _getpid - #define FBXSDK_getcwd _getcwd -#else - inline int FBXSDK_getpid(){ return 0; } - inline char* FBXSDK_getcwd(char*,int){ return NULL; } -#endif - #define FBXSDK_localtime(ptm, time) { struct tm tms; ptm = &tms; localtime_s(ptm, time); } - #define FBXSDK_gmtime(ptm, time) { struct tm tms; ptm = &tms; gmtime_s(ptm, time); } - #define FBXSDK_fopen(fp, name, mode) fopen_s(&fp, name, mode) - -#elif defined(FBXSDK_ENV_MAC) || defined(FBXSDK_ENV_LINUX) - #define FBXSDK_printf printf - #define FBXSDK_fprintf fprintf - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf(dst, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf(dst, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf(dst, dstsize, format, vl); } - #define FBXSDK_stricmp(dst, src) stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy(dst, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy(dst, src, count) - #define FBXSDK_strcat(dst, size, src) strcat(dst, src) - #define FBXSDK_strtok(str, delim, ctx) strtok(str, delim) - #define FBXSDK_wcscpy(dst, size, src) wcscpy(dst, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, src) - #define FBXSDK_getpid getpid - #define FBXSDK_getcwd getcwd - #define FBXSDK_localtime(tm, time) tm=localtime(time) - #define FBXSDK_gmtime(tm, time) tm=gmtime(time) - #define FBXSDK_fopen(fp, name, mode) fp=fopen(name, mode) - -#else - #error Unsupported platform! -#endif - -#define FBXSDK_strdup FbxStrDup - -//The scanf family functions cannot easily be used in both secure and non-secure versions because -//Microsoft's secure version expects the size of the string/char* arguments following their address. -//On Unix machines the scanf family functions do not have this behavior and trying to use the same -//calls would result in compiler errors because the arguments would not match the format string. -//Using the following macros in the code will simply desable the warning at compile time. -#if defined(FBXSDK_COMPILER_MSC) && (_MSC_VER >= 1300) - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN\ - {\ - __pragma(warning(push))\ - __pragma(warning(disable : 4996))\ - } - - #define FBXSDK_CRT_SECURE_NO_WARNING_END\ - {\ - __pragma(warning(pop))\ - } -#else - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - #define FBXSDK_CRT_SECURE_NO_WARNING_END -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxtypes.h b/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxtypes.h deleted file mode 100644 index 35252d4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/arch/fbxtypes.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxtypes.h - * Basic types definition. - * - * Standard basic types used across the FBX SDK. There is also platform independent - * definitions that guarantee size across operating systems. The FBXSDK_SYSTEM_IS_LP64 - * define is set to 1 when the operating system defines the "long" C++ type as 64-bit. - */ -#ifndef _FBXSDK_CORE_ARCH_TYPES_H_ -#define _FBXSDK_CORE_ARCH_TYPES_H_ - -#include - -//Note: On MacOSX and Linux 64-bit, long is defined as 64-bits while on Windows -//it is still a 32-bits for backward compatibility. We stick with Windows standard. -#if defined(FBXSDK_CPU_64) && !defined(FBXSDK_ENV_WIN) - #define FBXSDK_SYSTEM_IS_LP64 1 -#endif - -#include - -class FbxObject; - -typedef bool FbxBool; -typedef signed char FbxChar; -typedef unsigned char FbxUChar; -typedef signed short FbxShort; -typedef unsigned short FbxUShort; -typedef signed int FbxInt; -typedef unsigned int FbxUInt; -typedef float FbxFloat; -typedef double FbxDouble; - -typedef FbxBool* FbxBoolPtr; -typedef FbxChar* FbxCharPtr; -typedef FbxUChar* FbxUCharPtr; -typedef FbxShort* FbxShortPtr; -typedef FbxUShort* FbxUShortPtr; -typedef FbxInt* FbxIntPtr; -typedef FbxUInt* FbxUIntPtr; -typedef FbxFloat* FbxFloatPtr; -typedef FbxDouble* FbxDoublePtr; - -typedef FbxInt FbxEnum; -typedef FbxObject* FbxReference; - -//------------------------------------------------------------------------------------- -//Architecture independent defines (guarantee size) -#if defined(FBXSDK_COMPILER_MSC) - #define FBXSDK_LONGLONG(x) (x##i64) - #define FBXSDK_ULONGLONG(x) (x##Ui64) - - typedef signed __int8 FbxInt8; - typedef unsigned __int8 FbxUInt8; - typedef signed __int16 FbxInt16; - typedef unsigned __int16 FbxUInt16; - typedef signed __int32 FbxInt32; - typedef unsigned __int32 FbxUInt32; - typedef signed __int64 FbxInt64; - typedef unsigned __int64 FbxUInt64; -#else - #define FBXSDK_LONGLONG(x) (x##LL) - #define FBXSDK_ULONGLONG(x) (x##ULL) - - typedef signed char FbxInt8; - typedef unsigned char FbxUInt8; - typedef signed short FbxInt16; - typedef unsigned short FbxUInt16; - typedef signed int FbxInt32; - typedef unsigned int FbxUInt32; - typedef signed long long FbxInt64; - typedef unsigned long long FbxUInt64; -#endif - -#ifdef FBXSDK_SYSTEM_IS_LP64 - typedef signed int FbxLong; - typedef unsigned int FbxULong; -#else - typedef signed long FbxLong; - typedef unsigned long FbxULong; -#endif -typedef FbxInt64 FbxLongLong; -typedef FbxUInt64 FbxULongLong; - -typedef FbxLong* FbxLongPtr; -typedef FbxULong* FbxULongPtr; -typedef FbxLongLong* FbxLongLongPtr; -typedef FbxULongLong* FbxULongLongPtr; - - -#if defined(FBXSDK_ENV_EMSCRIPTEN) - typedef FbxInt32 __int32_t; - typedef FbxUInt32 __uint32_t; - typedef FbxInt64 __int64_t; - typedef FbxUInt64 __uint64_t; -#endif - -//------------------------------------------------------------------------------------- -//Minimum and Maximum values for types -#define FBXSDK_CHAR_MIN -128 -#define FBXSDK_CHAR_MAX 127 -#define FBXSDK_UCHAR_MIN 0 -#define FBXSDK_UCHAR_MAX 255 -#define FBXSDK_SHORT_MIN -32768 -#define FBXSDK_SHORT_MAX 32767 -#define FBXSDK_USHORT_MIN 0 -#define FBXSDK_USHORT_MAX 65535 -#define FBXSDK_INT_MIN 0x80000000 -#define FBXSDK_INT_MAX 0x7fffffff -#define FBXSDK_UINT_MIN 0 -#define FBXSDK_UINT_MAX 0xffffffff -#define FBXSDK_LONG_MIN FBXSDK_INT_MIN -#define FBXSDK_LONG_MAX FBXSDK_INT_MAX -#define FBXSDK_ULONG_MIN FBXSDK_UINT_MIN -#define FBXSDK_ULONG_MAX FBXSDK_UINT_MAX -#define FBXSDK_LONGLONG_MIN FBXSDK_LONGLONG(0x8000000000000000) -#define FBXSDK_LONGLONG_MAX FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_ULONGLONG_MIN FBXSDK_ULONGLONG(0) -#define FBXSDK_ULONGLONG_MAX FBXSDK_ULONGLONG(0xffffffffffffffff) -#define FBXSDK_FLOAT_MIN FLT_MIN -#define FBXSDK_FLOAT_MAX FLT_MAX -#define FBXSDK_FLOAT_EPSILON FLT_EPSILON -#define FBXSDK_DOUBLE_MIN DBL_MIN -#define FBXSDK_DOUBLE_MAX DBL_MAX -#define FBXSDK_DOUBLE_EPSILON DBL_EPSILON -#define FBXSDK_TOLERANCE (1.0e-6) - -//------------------------------------------------------------------------------------- -//Handle and atomic definition (size change depending of architecture) -#if defined(FBXSDK_CPU_32) - typedef FbxUInt32 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_UINT_MIN - #define FBXSDK_REF_MAX FBXSDK_UINT_MAX - - typedef FbxLong FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONG_MAX -#elif defined(FBXSDK_CPU_64) - typedef FbxUInt64 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_ULONGLONG_MIN - #define FBXSDK_REF_MAX FBXSDK_ULONGLONG_MAX - - typedef FbxInt64 FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONGLONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONGLONG_MAX -#else - #error Unsupported architecture! -#endif - -//------------------------------------------------------------------------------------- -//Various utility functions for fbxsdk basic types -inline FbxChar FbxMin(const FbxChar){ return FBXSDK_CHAR_MIN; } -inline FbxUChar FbxMin(const FbxUChar){ return FBXSDK_UCHAR_MIN; } -inline FbxShort FbxMin(const FbxShort){ return FBXSDK_SHORT_MIN; } -inline FbxUShort FbxMin(const FbxUShort){ return FBXSDK_USHORT_MIN; } -inline FbxInt FbxMin(const FbxInt){ return FBXSDK_INT_MIN; } -inline FbxUInt FbxMin(const FbxUInt){ return FBXSDK_UINT_MIN; } -inline FbxLongLong FbxMin(const FbxLongLong){ return FBXSDK_LONGLONG_MIN; } -inline FbxULongLong FbxMin(const FbxULongLong){ return FBXSDK_ULONGLONG_MIN; } -inline FbxFloat FbxMin(const FbxFloat){ return FBXSDK_FLOAT_MIN; } -inline FbxDouble FbxMin(const FbxDouble){ return FBXSDK_DOUBLE_MIN; } - -inline FbxChar FbxMax(const FbxChar){ return FBXSDK_CHAR_MAX; } -inline FbxUChar FbxMax(const FbxUChar){ return FBXSDK_UCHAR_MAX; } -inline FbxShort FbxMax(const FbxShort){ return FBXSDK_SHORT_MAX; } -inline FbxUShort FbxMax(const FbxUShort){ return FBXSDK_USHORT_MAX; } -inline FbxInt FbxMax(const FbxInt){ return FBXSDK_INT_MAX; } -inline FbxUInt FbxMax(const FbxUInt){ return FBXSDK_UINT_MAX; } -inline FbxLongLong FbxMax(const FbxLongLong){ return FBXSDK_LONGLONG_MAX; } -inline FbxULongLong FbxMax(const FbxULongLong){ return FBXSDK_ULONGLONG_MAX; } -inline FbxFloat FbxMax(const FbxFloat){ return FBXSDK_FLOAT_MAX; } -inline FbxDouble FbxMax(const FbxDouble){ return FBXSDK_DOUBLE_MAX; } - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxLong FbxMin(const FbxLong){ return FBXSDK_LONG_MIN; } - inline FbxULong FbxMin(const FbxULong){ return FBXSDK_ULONG_MIN; } - inline FbxLong FbxMax(const FbxLong){ return FBXSDK_LONG_MAX; } - inline FbxULong FbxMax(const FbxULong){ return FBXSDK_ULONG_MAX; } -#endif - -template inline T FbxMin(const T){}; -template inline T FbxMax(const T){}; - -template inline T FbxMin(const T x, const T y){ return (x < y) ? x : y; } -template inline T FbxMax(const T x, const T y){ return (x > y) ? x : y; } - -//------------------------------------------------------------------------------------- -//Vector Template Types -template class FBXSDK_DLL FbxVectorTemplate2 -{ -public: - inline FbxVectorTemplate2(){ *this = T(0); } - inline explicit FbxVectorTemplate2(T pValue){ *this = pValue; } - inline FbxVectorTemplate2(T pData0, T pData1){ mData[0] = pData0; mData[1] = pData1; } - inline ~FbxVectorTemplate2(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline FbxVectorTemplate2& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; return *this; } - inline FbxVectorTemplate2& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline bool operator==(const FbxVectorTemplate2& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1])); } - inline bool operator!=(const FbxVectorTemplate2& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[2]; -}; - -template class FBXSDK_DLL FbxVectorTemplate3 -{ -public: - inline FbxVectorTemplate3(){ *this = T(0); } - inline explicit FbxVectorTemplate3(T pValue){ *this = pValue; } - inline FbxVectorTemplate3(T pData0, T pData1, T pData2){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; } - inline ~FbxVectorTemplate3(){} - inline T& operator[](int pIndex) { return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate2& () const { return *((FbxVectorTemplate2*)this); } - inline FbxVectorTemplate3& operator=(T const &pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate3& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; return *this; } - inline bool operator==(const FbxVectorTemplate3& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2])); } - inline bool operator!=(const FbxVectorTemplate3& pVector) const { return !operator==(pVector); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[3]; -}; - -template class FBXSDK_DLL FbxVectorTemplate4 -{ -public: - inline FbxVectorTemplate4(){ *this = T(0); } - inline explicit FbxVectorTemplate4(T pValue){ *this = pValue; } - inline FbxVectorTemplate4(T pData0, T pData1, T pData2, T pData3){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3; } - inline ~FbxVectorTemplate4(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate3& () const { return *((FbxVectorTemplate3*)this); } - inline FbxVectorTemplate4& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate3& pValue){ mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate4& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; mData[3] = pVector.mData[3]; return *this; } - inline bool operator==(const FbxVectorTemplate4& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2]) && (mData[3] == pVector.mData[3])); } - inline bool operator!=(const FbxVectorTemplate4& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[4]; -}; - -typedef FbxVectorTemplate2 FbxDouble2; -typedef FbxVectorTemplate3 FbxDouble3; -typedef FbxVectorTemplate4 FbxDouble4; -typedef FbxVectorTemplate4 FbxDouble4x4; - -#include - -#endif /* _FBXSDK_CORE_ARCH_TYPES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxarray.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxarray.h deleted file mode 100644 index 55a5110..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxarray.h +++ /dev/null @@ -1,489 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxarray.h -#ifndef _FBXSDK_CORE_BASE_ARRAY_H_ -#define _FBXSDK_CORE_BASE_ARRAY_H_ - -#include - -#include - -/** Class for array of basic elements such as pointers and basic types. This class will not -* call constructor and destructor for elements, thus it is not suitable for object references. -* Memory allocations are always done in a single contiguous memory region. */ -template class FbxArray -{ -public: - //! Element compare function pointer definition - typedef int (*CompareFunc)(const void*, const void*); - - //! Constructor. - FbxArray() : mSize(0), mCapacity(0), mArray(NULL){} - - //! Reserve constructor. - FbxArray(const int pCapacity) : mSize(0), mCapacity(0), mArray(NULL){ if( pCapacity > 0 ) Reserve(pCapacity); } - - //! Copy constructor. - FbxArray(const FbxArray& pArray) : mSize(0), mCapacity(0), mArray(NULL){ *this = pArray; } - - /** Destructor. - * \remark The destructor for each element will not be called. */ - ~FbxArray(){ Clear(); } - - /** Insert an element at the given position, growing the array if capacity is not sufficient. - * \param pIndex Position where to insert the element. Must be a positive value. - * \param pElement Element to insert in the array. - * \param pCompact If \c true and capacity is exceeded, grow capacity by one, otherwise double capacity (default). - * \return -1 if insert failed, otherwise the position of the inserted element in the array. - * \remark If the given index is greater than Size(), the element is appended at the end. Use compact mode only if you need to save memory. */ - inline int InsertAt(const int pIndex, const T& pElement, bool pCompact=false) - { - FBX_ASSERT_RETURN_VALUE(pIndex >= 0, -1); - int lIndex = FbxMin(pIndex, mSize); - if( mSize >= mCapacity ) - { - T lElement = pElement; //Copy element because we might move memory - int lNewCapacity = FbxMax(pCompact ? mCapacity + 1 : mCapacity * 2, 1); //We always double capacity when not compacting - T* lArray = Allocate(lNewCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, -1); - mArray = lArray; - mCapacity = lNewCapacity; - return InsertAt(pIndex, lElement); //Insert copied element because reference might be moved - } - - if( lIndex < mSize ) //Move elements to leave a space open to insert the new element - { - //If pElement is inside memmove range, copy element and insert copy instead - if( (&pElement >= &mArray[lIndex]) && (&pElement < &mArray[mSize]) ) - { - T lElement = pElement; - return InsertAt(pIndex, lElement); - } - memmove(&mArray[lIndex + 1], &mArray[lIndex], (mSize - lIndex) * sizeof(T)); - } - - memcpy(&mArray[lIndex], &pElement, sizeof(T)); - mSize++; - - return lIndex; - } - - /** Append an element at the end of the array, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int Add(const T& pElement) - { - return InsertAt(mSize, pElement); - } - - /** Append an element at the end of array, if not already present, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddUnique(const T& pElement) - { - int lIndex = Find(pElement); - return ( lIndex == -1 ) ? Add(pElement) : lIndex; - } - - /** Append an element at the end of the array, growing the array by one element if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddCompact(const T& pElement) - { - return InsertAt(mSize, pElement, true); - } - - /** Retrieve the number of element contained in the array. To increase the capacity without increasing the size, please use Reserve(). - * \return The number of element in the array. - * \remark The size of the array cannot exceed its capacity. */ - inline int Size() const { return mSize; } - - /** Retrieve the current allocated memory capacity of the array. - * \return The capacity of the array in number of element. - * \remark The capacity will always be greater or equal to its size. */ - inline int Capacity() const { return mCapacity; } - - /** Retrieve a reference of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return A reference to the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T& operator[](const int pIndex) const - { - #ifdef _DEBUG - FBX_ASSERT_MSG(pIndex >= 0, "Index is out of range!"); - if( pIndex >= mSize ) - { - if( pIndex < mCapacity ) - { - FBX_ASSERT_NOW("Index is out of range, but not outside of capacity! Call SetAt() to use reserved memory."); - } - else FBX_ASSERT_NOW("Index is out of range!"); - } - #endif - return (T&)mArray[pIndex]; - } - - /** Retrieve a copy of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return The value of the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T GetAt(const int pIndex) const - { - return operator[](pIndex); - } - - /** Retrieve a copy of the first element. - * \return Copy of the first element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetFirst() const - { - return GetAt(0); - } - - /** Retrieve a copy of the last element. - * \return Copy of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetLast() const - { - return GetAt(mSize-1); - } - - /** Find first matching element, from first to last. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int Find(const T& pElement, const int pStartIndex=0) const - { - FBX_ASSERT_RETURN_VALUE(pStartIndex >= 0, -1); - for( int i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Find first matching element, from last to first. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int FindReverse(const T& pElement, const int pStartIndex=FBXSDK_INT_MAX) const - { - for( int i = FbxMin(pStartIndex, mSize-1); i >= 0; --i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Request for allocation of additional memory without inserting new elements. After the memory has been reserved, please use SetAt() to initialize elements. - * \param pCapacity The number of additional element memory allocation requested. - * \return \c true if the memory allocation succeeded or if the capacity is unchanged, \c false otherwise. - * \remark If the requested capacity is less than or equal to the current capacity, this call has no effect. In either case, Size() is unchanged. */ - inline bool Reserve(const int pCapacity) - { - FBX_ASSERT_RETURN_VALUE(pCapacity > 0, false); - if( pCapacity > mCapacity ) - { - T* lArray = Allocate(pCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - mCapacity = pCapacity; - - //Initialize new memory to zero - memset(&mArray[mSize], 0, (mCapacity - mSize) * sizeof(T)); - } - return true; - } - - /** Set the element at given position in the array. - * \param pIndex Position of element in the array. - * \param pElement The new element. - * \remark If the index is outside range, and outside capacity, this call has no effect. However, if index is - * within capacity range, element count is increased such that Size() will become pIndex + 1. */ - inline void SetAt(const int pIndex, const T& pElement) - { - FBX_ASSERT_RETURN(pIndex >= 0 && pIndex < mCapacity); - if( pIndex >= mSize ) mSize = pIndex + 1; - if( mArray ) memcpy(&mArray[pIndex], &pElement, sizeof(T)); - } - - /** Set the value of the first element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetFirst(const T& pElement) - { - SetAt(0, pElement); - } - - /** Set the value of the last element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetLast(const T& pElement) - { - SetAt(mSize-1, pElement); - } - - /** Remove an element at the given position in the array. - * \param pIndex Position of the element to remove. - * \return Removed element. - * \remark No error will be thrown if the index is out of bounds. */ - inline T RemoveAt(const int pIndex) - { - T lElement = GetAt(pIndex); - if( pIndex + 1 < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + 1], (mSize - pIndex - 1) * sizeof(T)); - } - mSize--; - return lElement; - } - - /** Remove the first element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveFirst() - { - return RemoveAt(0); - } - - /** Remove the last element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveLast() - { - return RemoveAt(mSize-1); - } - - /** Remove first matching element in the array. - * \param pElement Element to be removed. - * \return \c true if a matching element is found and removed, \c false otherwise. */ - inline bool RemoveIt(const T& pElement) - { - int Index = Find(pElement); - if( Index >= 0 ) - { - RemoveAt(Index); - return true; - } - return false; - } - - /** Remove a range of elements at the given position in the array. - * \param pIndex Begin position of the elements to remove. - * \param pCount The count of elements to remove. - * \return \c true if successful, otherwise \c false. */ - inline void RemoveRange(const int pIndex, const int pCount) - { - FBX_ASSERT_RETURN(pIndex >= 0); - FBX_ASSERT_RETURN(pCount >= 0); - if( pIndex + pCount < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + pCount], (mSize - pIndex - pCount) * sizeof(T)); - } - mSize -= pCount; - } - - /** Inserts or erases elements at the end such that Size() becomes pSize, increasing capacity if needed. Please use SetAt() to initialize any new elements. - * \param pSize The new count of elements to set the array to. Must be greater or equal to zero. - * \return \c true if the memory (re)allocation succeeded, \c false otherwise. - * \remark If the requested element count is less than or equal to the current count, elements are freed from memory. Otherwise, the array grows and elements are unchanged. */ - inline bool Resize(const int pSize) - { - if( pSize == mSize && mSize == mCapacity ) return true; - - if( pSize == 0 ) - { - Clear(); - return true; - } - - FBX_ASSERT_RETURN_VALUE(pSize > 0, false); - if( pSize != mCapacity ) - { - T* lArray = Allocate(pSize); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - } - - if( pSize > mCapacity ) //Initialize new memory to zero - { - memset(&mArray[mSize], 0, (pSize - mSize) * sizeof(T)); - } - - mSize = pSize; - mCapacity = pSize; - return true; - } - - /** Increase size of array by the specified size. - * \param pSize The size to add to the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Grow(const int pSize) - { - return Resize(mSize + pSize); - } - - /** Reduce size of array by the specified size. - * \param pSize The size to remove from the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Shrink(const int pSize) - { - return Resize(mSize - pSize); - } - - /** Compact the array so that its capacity is the same as its size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Compact() - { - return Resize(mSize); - } - - /** Reset the number of element to zero and free the memory allocated. - * \remark This only free the memory allocated by the array, and doesn't call the destructor of each element. */ - inline void Clear() - { - if( mArray != NULL ) - { - mSize = 0; - mCapacity = 0; - FbxFree(mArray); - mArray = NULL; - } - } - - /** Sort the array using the specified compare function pointer - * \param pCompareFunc The compare function to use to sort elements. */ - inline void Sort(CompareFunc pCompareFunc) - { - qsort(mArray, mSize, sizeof(T), pCompareFunc); - } - - //! Get pointer to internal array of elements. - inline T* GetArray() const { return mArray ? (T*)mArray : NULL; } - - //! Cast operator. - inline operator T* (){ return mArray ? (T*)mArray : NULL; } - - /** Append another array at the end of this array. - * \param pOther The other array to append to this array. */ - inline void AddArray(const FbxArray& pOther) - { - if( Grow(pOther.mSize) ) - { - memcpy(&mArray[mSize - pOther.mSize], pOther.mArray, pOther.mSize * sizeof(T)); - } - } - - /** Append the elements of another array at the end of this array if they are not present. - * \param pOther Another array. */ - inline void AddArrayNoDuplicate(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - AddUnique(pOther[i]); - } - } - - /** Remove the elements of another array from this array is they are present. - * \param pOther Another array. */ - inline void RemoveArray(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - RemoveIt(pOther[i]); - } - } - - /** Operator to copy elements of an array. - * \return this array containing a copy of pOther elements. */ - inline FbxArray& operator=(const FbxArray& pOther) - { - if( this != &pOther ) - { - if( Resize(pOther.mSize) ) - { - memcpy(mArray, pOther.mArray, pOther.mSize * sizeof(T)); - } - } - return *this; - } - - /** Operator to compare elements of an array. - * \return \c true if the two arrays are equal, otherwise \c false. */ - inline bool operator==(const FbxArray& pOther) const - { - if( this == &pOther ) return true; - if( mSize != pOther.mSize ) return false; - return memcmp(mArray, pOther.mArray, sizeof(T) * mSize) == 0; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline int GetCount() const { return mSize; } - -private: - inline T* Allocate(const int pCapacity) - { - return (T*)FbxRealloc(mArray, FbxAllocSize(pCapacity, sizeof(T))); - } - - int mSize; - int mCapacity; - T* mArray; - -#if defined(FBXSDK_COMPILER_MSC) - //Previously class FbxArray is for pointers. Somehow, it's used to store other types. Here's a compile-time checking for known incompatible classes. - //If it happens you find new incompatible ones, declare them with macro FBXSDK_INCOMPATIBLE_WITH_ARRAY. Also see file fbxstring.h. - FBX_ASSERT_STATIC(FBXSDK_IS_SIMPLE_TYPE(T) || __is_enum(T) || (__has_trivial_constructor(T)&&__has_trivial_destructor(T)) || !FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T)); -#endif - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Call FbxFree on each element of the array, and then clear it. -template inline void FbxArrayFree(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxFree(pArray[i]); - } - pArray.Clear(); -} - -//! Call FbxDelete on each element of the array, and then clear it. -template inline void FbxArrayDelete(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxDelete(pArray[i]); - } - pArray.Clear(); -} - -//! Call Destroy on each element of the array, and then clear it. -template inline void FbxArrayDestroy(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - (pArray[i])->Destroy(); - } - pArray.Clear(); -} - -//! Make sure to break build if someone try to make FbxArray>, which is not supported. -template FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(FbxArray); - -#include - -#endif /* _FBXSDK_CORE_BASE_ARRAY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxbitset.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxbitset.h deleted file mode 100644 index 798b1bb..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxbitset.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbitset.h -#ifndef _FBXSDK_CORE_BASE_BITSET_H_ -#define _FBXSDK_CORE_BASE_BITSET_H_ - -#include - -#include - -/** An automatic growing array of bit. - * - * The bit array will automatically grow when specifying bit indexes that are greater - * than the array size when calling SetBit or UnsetBit. Indexes can vary from 0 to - * FBXSDK_UINT_MAX-1. When an invalid index is returned from any functions, FBXSDK_UINT_MAX - * is returned. The bit array is not thread safe. - */ -class FBXSDK_DLL FbxBitSet -{ -public: - /** Constructor. - * \param pInitialSize Initial bit array size in bit count (not in byte count!). - */ - FbxBitSet(const FbxUInt pInitialSize=0); - - //! Destructor. - virtual ~FbxBitSet(); - - /** Set the bit at the specified bit index to true regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void SetBit(const FbxUInt pBitIndex); - - /** Set all the bits to the specified value regardless of their current value. - * \param pValue The boolean value to set to all bits. - */ - void SetAllBits(const bool pValue); - - /** Set the bit at the specified bit index to false regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void UnsetBit(const FbxUInt pBitIndex); - - /** Get the bit boolean value at the specified bit index. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return True if the bit is set, false otherwise. - */ - bool GetBit(const FbxUInt pBitIndex) const; - - /** Get the bit index of the first bit that is currently set. - * \return The bit index of the first set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetFirstSetBitIndex() const; - - /** Get the bit index of the last bit that is currently set. - * \return The bit index of the last set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetLastSetBitIndex() const; - - /** Get the bit index of the next set bit after the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the next set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetNextSetBitIndex(const FbxUInt pBitIndex) const; - - /** Get the bit index of the previous set bit before the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the previous set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetPreviousSetBitIndex(const FbxUInt pBitIndex) const; - -private: - void Grow(const FbxUInt pNewSize); - - void* mData; - FbxUInt mSize; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_BITSET_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcharptrset.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcharptrset.h deleted file mode 100644 index 6c6d140..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcharptrset.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharptrset.h -#ifndef _FBXSDK_CORE_BASE_CHARPTRSET_H_ -#define _FBXSDK_CORE_BASE_CHARPTRSET_H_ - -#include - -#include - -/** This class contains the data structure support for char pointer set. - */ -class FBXSDK_DLL FbxCharPtrSet -{ -public: - /** Class constructor - * \param pItemPerBlock Number of item per block. Default is 20. */ - FbxCharPtrSet(int pItemPerBlock=20); - - //! Class destructor - ~FbxCharPtrSet(); - - /** Add a new item. - * \param pReference char pointer reference to the item. - * \param pItem FbxHandle to the item. */ - void Add(const char* pReference, FbxHandle pItem); - - /** Removes an item. - * \param pReference char reference to the item. - * \return true if successful. */ - bool Remove(const char* pReference); - - /** Get an item's reference. - * \param pReference char reference to the item. - * \param PIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle Get(const char* pReference, int* PIndex=NULL); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle& operator[](int pIndex); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \param pReference char reference to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle GetFromIndex(int pIndex, const char** pReference=NULL); - - /** Removes an item by index. - * \param pIndex index to the item. */ - void RemoveFromIndex(int pIndex); - - /** Get the number of item in the array. - * \return the number of element in the set. */ - inline int GetCount() const { return mCharPtrSetCount; } - - //! Sorts the array. - void Sort(); - - //! Clears the array. - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct CharPtrSet; - - inline void SetCaseSensitive(bool pIsCaseSensitive){ mIsCaseSensitive = pIsCaseSensitive; } - -private: - CharPtrSet* FindEqual(const char* pReference) const; - - CharPtrSet* mCharPtrSetArray; - int mCharPtrSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; - bool mIsCaseSensitive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CHARPTRSET_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h deleted file mode 100644 index 7eb99e1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainerallocators.h -#ifndef _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ -#define _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ - -#include - -#include - -/** An allocator class for use as a template parameter to one of the - * container class (FbxMap, FbxSet, FbxDynamicArray...) must implement these. - */ -class FBXSDK_DLL FbxBaseAllocator -{ -public: - /** The class constructor. - * \param pRecordSize the size of one record held by the container. - * \remarks The parameter pRecordSize is not necessarily the same - * size as of the value type, since the - * container may wrap the value into a private class. - */ - FbxBaseAllocator(const size_t pRecordSize) : - mRecordSize(pRecordSize) - { - } - - /** This tells the allocator that we are about to call AllocateRecords - * one or many times to allocate pRecordCount records. - * \param pRecordCount - * \remarks This gives the allocator a chance to do whatever it deems necessary - * to optimize subsequent allocations, for example, by preallocating a - * sufficiently large pool of memory. - */ - void Reserve(const size_t /*pRecordCount*/) - { - // By default, ignore all preallocating requests. - } - - /** Returns a pointer to a uninitialized continuous block of memory - * able to hold pRecordCount * pRecordSize bytes. - * \param pRecordCount - * \remarks pRecordSize was defined in the Constructor description, above. - */ - void* AllocateRecords(const size_t pRecordCount=1) - { - return FbxMalloc(FbxAllocSize(pRecordCount, mRecordSize)); - } - - /** Frees a block of memory returned by AllocateRecords. - * \param pRecord - */ - void FreeMemory(void* pRecord) - { - FbxFree(pRecord); - } - - /** \return the size of each record allocated. - */ - size_t GetRecordSize() const - { - return mRecordSize; - } - -private: - size_t mRecordSize; -}; - -/** This allocator only frees the allocated memory when it is deleted. - * This is a good allocator for building dictionaries, where we only - * add things to a container, but never remove them. - */ -class FbxHungryAllocator -{ -public: - FbxHungryAllocator(size_t pRecordSize) : - mRecordSize(pRecordSize), - mRecordPoolSize(0), - mData(NULL) - { - } - - FbxHungryAllocator(const FbxHungryAllocator& pOther) : - mRecordSize(pOther.mRecordSize), - mRecordPoolSize(pOther.mRecordPoolSize), - mData(NULL) - { - } - - ~FbxHungryAllocator() - { - MemoryBlock* lCurrent = mData; - MemoryBlock* lNext = lCurrent ? lCurrent->mNextBlock : 0; - while (lCurrent) - { - FbxDelete(lCurrent); - lCurrent = lNext; - lNext = lCurrent ? lCurrent->mNextBlock : 0; - } - } - - void Reserve(const size_t pRecordCount) - { - MemoryBlock* lMem = FbxNew< MemoryBlock >(pRecordCount* mRecordSize); - lMem->mNextBlock = mData; - mData = lMem; - mRecordPoolSize += pRecordCount; - } - - void* AllocateRecords(const size_t pRecordCount = 1) - { - MemoryBlock* lBlock = mData; - void* lRecord = NULL; - - while( (lBlock != NULL) && ((lRecord = lBlock->GetChunk(pRecordCount * mRecordSize)) == NULL) ) - { - lBlock = lBlock->mNextBlock; - } - - if( lRecord == NULL ) - { - size_t lNumRecordToAllocate = mRecordPoolSize / 8 == 0 ? 2 : mRecordPoolSize / 8; - if( lNumRecordToAllocate < pRecordCount ) - { - lNumRecordToAllocate = pRecordCount; - } - Reserve(lNumRecordToAllocate); - lRecord = AllocateRecords(pRecordCount); - } - return lRecord; - } - - void FreeMemory(void* /*pRecord*/) - { - // "Hungry": release memory only when the allocator is destroyed. - } - - size_t GetRecordSize() const - { - return mRecordSize; - } - - FbxHungryAllocator& operator=(const FbxHungryAllocator& pOther) - { - if( this != &pOther ) - { - // The next call to AllocateRecords() may skip over currently reserved - // records if the size changes drastically, but otherwise GetChunk() - // is size-oblivious. - if( mRecordSize < pOther.mRecordSize ) - { - mRecordPoolSize = 0; - } - - mRecordSize = pOther.mRecordSize; - } - return(*this); - } - -private: - class MemoryBlock - { - public: - MemoryBlock(size_t pSize) : - mNextBlock(NULL), - mData(NULL), - mFreeData(NULL), - mEnd(NULL) - { - mData = FbxMalloc(pSize); - mFreeData = mData; - mEnd = reinterpret_cast(mData) + pSize; - } - - ~MemoryBlock() - { - FbxFree(mData); - } - - void* GetChunk(const size_t pSize) - { - if( reinterpret_cast(mFreeData) + pSize < mEnd ) - { - void* lChunk = mFreeData; - mFreeData = reinterpret_cast(mFreeData) + pSize; - return lChunk; - } - return NULL; - } - - MemoryBlock* mNextBlock; - void* mData; - void* mFreeData; - void* mEnd; - }; - - size_t mRecordSize; - size_t mRecordPoolSize; - MemoryBlock* mData; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h deleted file mode 100644 index edaa45f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdynamicarray.h -#ifndef _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ -#define _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ - -#include - -#include - -#include - -/** Template class for dynamic array holding objects. - * \nosubgrouping - * \see FbxStaticArray - */ -template class FbxDynamicArray -{ -public: - //! Default constructor. - FbxDynamicArray() : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - } - - /** Constructor. - * \param pInitialSize initial capacity of this array */ - FbxDynamicArray(const size_t pInitialSize) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pInitialSize); - } - - /** Copy constructor. - * \remarks The copy constructor of \c Type will be - * invoked in order to copy the value of elements to the - * new array. - */ - FbxDynamicArray(const FbxDynamicArray& pArray) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - } - - //! Destructor. - ~FbxDynamicArray() - { - for( size_t i = 0; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mAllocator.FreeMemory(mArray); - } - - //! Gets the current capacity of the array. - size_t Capacity() const - { - return mCapacity; - } - - //! Gets the size of the array. - size_t Size() const - { - return mSize; - } - - /** Assures that sufficient memory is allocated to hold n objects in the array, and increases the capacity if necessary. - * \param pCount Number of objects to reserve */ - void Reserve(const size_t pCount) - { - if( pCount > mCapacity ) - { - //We don't use mAllocator.PreAllocate, because we want our array to be continuous in memory. - Type* lNewArray = (Type*)mAllocator.AllocateRecords(pCount); - MoveArray(lNewArray, mArray, mSize); - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mCapacity = pCount; - } - } - - /** Appends n objects at the end of the array. - * \param pItem object to append - * \param pNCopies number of copies to append */ - void PushBack(const Type& pItem, const size_t pNCopies = 1) - { - if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - Reserve(lNewSize); - } - FBX_ASSERT(mSize + pNCopies <= mCapacity); - Fill(mArray + mSize, pItem, pNCopies); - mSize += pNCopies; - } - - /** Inserts n objects at the specified position. - * \param pIndex position index - * \param pItem object to insert - * \param pNCopies number of copies to append */ - void Insert(const size_t pIndex, const Type& pItem, const size_t pNCopies=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - Type lValue = pItem; // in case pItem is in array - if( pNCopies == 0 ) - { - } - else if( pIndex >= mSize ) - { - PushBack(pItem, pNCopies); - } - else if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //not enough room, grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - - Type* lNewArray = (Type*)mAllocator.AllocateRecords(lNewSize); - MoveArray(lNewArray, mArray, pIndex); // copy prefix - Fill(lNewArray + pIndex, pItem, pNCopies); // copy values - MoveArray(lNewArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); // copy suffix - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mSize += pNCopies; - mCapacity = lNewSize; - } - else - { - // copy suffix backwards - MoveArrayBackwards(mArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); - Fill(mArray + pIndex, pItem, pNCopies); // copy values - mSize += pNCopies; - } - } - - /** Removes n objects at the end. - * \param pNElements number of objects to remove */ - void PopBack(size_t pNElements=1) - { - FBX_ASSERT(pNElements <= mSize); - for( size_t i = mSize - pNElements; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mSize -= pNElements; - } - - /** Removes n objects at the specified position. - * \param pIndex position index - * \param pNElements number of objects to remove */ - void Remove(const size_t pIndex, size_t pNElements=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - FBX_ASSERT(pIndex + pNElements <= mSize); - if( pIndex + pNElements >= mSize ) - { - PopBack(pNElements); - } - else - { - for( size_t i = pIndex; i < pIndex + pNElements; ++i ) - { - mArray[i].~Type(); - } - MoveOverlappingArray(&mArray[pIndex], &mArray[pIndex + pNElements], mSize - pIndex - pNElements); - mSize -= pNElements; - } - } - - /** Gets nth object in the array. - * \param pIndex position index */ - Type& operator[](const size_t pIndex) - { - return mArray[pIndex]; - } - - /** Gets nth object in the array. - * \param pIndex position index */ - const Type& operator[](const size_t pIndex) const - { - return mArray[pIndex]; - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - Type& First() - { - return operator[](0); - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - const Type& First() const - { - return operator[](0); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - Type& Last() - { - return operator[](mSize-1); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - const Type& Last() const - { - return operator[](mSize-1); - } - - /** Find first matching element, from first to last. - * \param pItem The item to try to find in the array. - * \param pStartIndex The index to start searching from. - * \return Index of the first matching item, otherwise returns -1 (equivalent of SIZE_MAX for size_t). */ - size_t Find(const Type& pItem, const size_t pStartIndex=0) const - { - for( size_t i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pItem ) return i; - } - return -1; - } - - /** Assignment operator. - * \remarks The copy constructor of \c Type will be invoked in order to copy the value of elements to the new array. */ - FbxDynamicArray& operator=(const FbxDynamicArray& pArray) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - return *this; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - static void CopyArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - } - - static void MoveArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - - for( int i = 0; i < int(pCount); i++ ) - { - pSrc[i].~Type(); - } - } - - static void MoveOverlappingArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - pSrc[i].~Type(); - } - } - - static void MoveArrayBackwards(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); ++i ) - { - new(&(pDest[pCount-1-i])) Type(pSrc[pCount-1-i]); //in-place new won't allocate memory, so it is safe - pSrc[pCount-1-i].~Type(); - } - } - - static void Fill(Type* pDest, const Type& pItem, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pItem); //in-place new won't allocate memory, so it is safe - } - } - - Type* mArray; - size_t mCapacity; - size_t mSize; - Allocator mAllocator; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfile.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfile.h deleted file mode 100644 index 6a80834..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfile.h +++ /dev/null @@ -1,257 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfile.h -#ifndef _FBXSDK_CORE_BASE_FILE_H_ -#define _FBXSDK_CORE_BASE_FILE_H_ - -#include - -#include - -#include - -class FbxStream; - -/** - Class for interfacing with files, providing a similar interface for files independant of the OS or filesystem. -*/ -class FBXSDK_DLL FbxFile -{ -public: - enum EMode {eNone, eReadOnly, eReadWrite, eCreateWriteOnly, eCreateReadWrite, eCreateAppend}; - enum ESeekPos {eBegin, eCurrent, eEnd}; - - FbxFile(); - virtual ~FbxFile(); - - /** Opens a file on disk using the specified read/write mode. - * \param pFileName_UTF8 Filename in UTF8 (compatible with ASCII) - * \param pMode Mode in which to open the file, e.g. eReadOnly, eCreateReadWrite, etc. - * \param pBinary Whether the file is to be opened in binary or text mode. - * \return True if opening is successful. - */ - virtual bool Open(const char* pFileName_UTF8, const EMode pMode=eCreateReadWrite, const bool pBinary=true); - - /** Opens a file from a data stream using the specified read/write mode. - * \param pStream Stream instance with which the file will be read/written - * \param pStreamData User-defined data to pass as a parameter to the stream's Open() method. - * \param pMode Deprecated/Unused. - * \return True if opening is successful. - */ - virtual bool Open(FbxStream* pStream, void* pStreamData, const char* pMode); - - /** Closes a file, freeing its handle. - * \return True if closing is successful. - */ - virtual bool Close(); - - /** Seek to a specific position in the file, starting from either beginning, current position or end - * \param pOffset Offset to seek to (advance the file position cursor) starting from pSeekPos - * \param pSeekPos Starting position from which to seek to. Beginning, current position or end. - */ - virtual void Seek(const FbxInt64 pOffset, const ESeekPos pSeekPos=eBegin); - - /** Returns the position at which the file cursor currently is. For example, will be ==0 for beginning and ==FileSize for end. - * \return The position at which the file cursor currently is. - */ - virtual FbxInt64 Tell() const; - - /** Read a part of the file into a buffer - * \param pDstBuf Pre-allocated buffer in which to read data - * \param pSize Size of the data chunk to be read in bytes - * \return Number of bytes read. - */ - virtual size_t Read(void* pDstBuf, const size_t pSize); - - /** Read a part of the file as a string into a buffer - * \param pDstBuf Pre-allocated buffer in which to read the string - * \param pDstSize Size of the data chunk to be read in characters - * \param pStopAtFirstWhiteSpace If true, will stop reading at first white space, otherwise it will stop at the first line feed (\n) - * \return Pointer on the data read. Equivalent to parameter pDstBuf - */ - virtual char* ReadString(char* pDstBuf, const size_t pDstSize, bool pStopAtFirstWhiteSpace=false); - - /** Write a buffer to an opened file - * \param pSrcBuf Pre-allocated buffer from which to write data - * \param pSize Size of the data chunk to be written in bytes - * \return Number of bytes written. - */ - virtual size_t Write(const void* pSrcBuf, const size_t pSize); - - /** Write a formatted string to an opened file - * \param pFormat Pre-allocated format buffer from which to write data - * \param ... Variable number of arguments describing the values in the previous parameter. - * \return True if data was successfully written - */ - virtual bool WriteFormat(const char* pFormat, ...); - - /** Modify the size of a file. Null characters ('\0') are appended if the file is extended. - * If the file is truncated, all data from the end of the shortened file to the original length of the file is lost. - * Please note that this function considers the current file cursor as the beginning of the file. - * It is therefore required to use Seek(0) prior to calling it if we want the size specified by the - * pSize parameter to be absolute. - * \param pSize New desired file size - * \return True if file was successfully truncated - */ - virtual bool Truncate(const FbxInt64 pSize); - - /** Checks whether the current file cursor position is at the end of file. - * \return True if the cursor is at the end of file, false otherwise. - */ - virtual bool EndOfFile() const; - - /** Gets the size of the currently opened file. - * \return File size - */ - virtual FbxInt64 GetSize(); - - /** Unused function in this default implementation. Must be implemented by memory files. - * \param pMemPtr Unused - * \param pSize Unused - */ - virtual void GetMemoryFileInfo(void** pMemPtr, size_t pSize); - - /** Checks whether the file is currently opened. - * \return True if file is opened, false otherwise - */ - bool IsOpen() const; - - /** Checks whether the file is currently opened with a user-provided streaming interface instead of just the file name - * \return True if file has been opened with a stream interface, false otherwise - */ - bool IsStream() const; - - /** Returns the full file path name, as provided when opening it. - * \return File full path - */ - const char* GetFilePathName() const; - - /** Returns the mode with which the file was opened, when calling the Open() method. - * \return Mode with which the file was opened - */ - EMode GetFileMode() const; - - /** Returns last encountered error when performing any operation on the file. - * \return Last error code - */ - int GetLastError(); - - /** Resets the current error code and the end of file indicator of the opened file - */ - void ClearError(); - -protected: - FILE* mFilePtr; - FbxStream* mStreamPtr; - bool mIsOpen; - bool mIsStream; - EMode mMode; - FbxString mFileName; -}; - -class FBXSDK_DLL FbxFileUtils -{ -public: - /** Delete a file from disk. - * \param pFileName_UTF8 The file to be deleted. - * \return True if delete is successful. - */ - static bool Delete(const char* pFileName_UTF8); - - /** Rename a file on disk. - * \param pFileName_UTF8 The file to be renamed. - * \param pNewName_UTF8 The new file name upon rename. - * \return True if rename is successful. - */ - static bool Rename(const char* pFileName_UTF8, const char* pNewName_UTF8); - - /** Copy one file's content to another file (if the destination file not exist, it will be created). - * \param pDestination_UTF8 The destination file path - * \param pSource_UTF8 The source file path - * \return Return true if copy is successfully. - */ - static bool Copy(const char* pDestination_UTF8, const char* pSource_UTF8); - - //! Get given file's size. - static FbxInt64 Size(const char* pFilePath_UTF8); - - /** Find if the specified file exist. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file exist. - */ - static bool Exist(const char* pFilePath_UTF8); - - /** Find if the specified file is in read-only mode. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file is in read-only mode. - */ - static bool IsReadOnly(const char* pFilePath_UTF8); - - // We return a KLong that in fact is a cast of a time_t. - //! Get given file's last date. - static FbxLong GetLastDate(const char* pPath_UTF8); - - //! Set the given file's last date as the given date. - static bool SetLastDate(const char* pPath_UTF8, FbxLong pTime); - - /** Get some content of a file. - * \param pStr The content get from file. - * \param pSize The size of content. - * \param pStream The opened stream of file. - */ - static char* FGets(char* pStr, int pSize, FILE* pStream); -}; - -template inline const T FbxSwab(const T x) -{ - switch( sizeof(x) ) - { - case 2: - { - FbxUInt8 t[2]; - t[0] = ((FbxUInt8*)&x)[1]; - t[1] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 4: - { - FbxUInt8 t[4]; - t[0] = ((FbxUInt8*)&x)[3]; - t[1] = ((FbxUInt8*)&x)[2]; - t[2] = ((FbxUInt8*)&x)[1]; - t[3] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 8: - { - FbxUInt8 t[8]; - t[0] = ((FbxUInt8*)&x)[7]; - t[1] = ((FbxUInt8*)&x)[6]; - t[2] = ((FbxUInt8*)&x)[5]; - t[3] = ((FbxUInt8*)&x)[4]; - t[4] = ((FbxUInt8*)&x)[3]; - t[5] = ((FbxUInt8*)&x)[2]; - t[6] = ((FbxUInt8*)&x)[1]; - t[7] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - default: - return x; - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_FILE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfolder.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfolder.h deleted file mode 100644 index b9af90f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxfolder.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfolder.h -#ifndef _FBXSDK_CORE_BASE_FOLDER_H_ -#define _FBXSDK_CORE_BASE_FOLDER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -#include - -/** Class for iterating into file system folders and the items contained. */ -class FBXSDK_DLL FbxFolder -{ -public: - //! The different entry type that can be found in folders. - enum EEntryType - { - eRegularEntry, //!< Regular entry, such as file. - eFolderEntry //!< Folder entry that potentially contain more files. - }; - - /** Open the specified folder for browsing its content. - * \param pFolderPath_UTF8 The folder path to open. - * \return True if the folder path was successfully open, false otherwise. */ - bool Open(const char* pFolderPath_UTF8); - - /** Get the next item in the folder. - * \return True if another item was found after the current one. */ - bool Next(); - - /** Get the type of the current entry in the folder. - * \return The entry type. */ - EEntryType GetEntryType() const; - - /** Retrieve the name of the current entry in the folder. - * \return The name of the current entry. */ - FbxString GetEntryName() const; - - /** Retrieve the extension name of the current entry. - * \return The extension name of the current entry. */ - char* GetEntryExtension() const; - - /** Close the folder when done browsing its content. */ - void Close(); - - /** Find out if the folder was successfully opened the last time Open was called. - * \return True if the folder is currently open. */ - bool IsOpen() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFolder(); - ~FbxFolder(); - -private: - struct FolderImpl; - FolderImpl* mImpl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_BASE_FOLDER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxhashmap.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxhashmap.h deleted file mode 100644 index 1cefa6f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxhashmap.h +++ /dev/null @@ -1,411 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhashmap.h -#ifndef _FBXSDK_CORE_BASE_HASHMAP_H_ -#define _FBXSDK_CORE_BASE_HASHMAP_H_ - -#include - -#include -#include - -#include - -template class FbxNoOpDestruct { public: static inline void DoIt(T&) {} }; -template class FbxPtrDestruct { public: static inline void DoIt(T& v) { FbxDelete(v); v = NULL; } }; - -//True if equal, false otherwise -template class FbxDefaultComparator{ public: static inline bool CompareIt( const T& t1, const T& t2 ) { return t1 == t2; } }; - -/** \brief This object represents a standard hash map. You must provide the typename of KEY and VALUE as well - as the typename of the class that contains the hash function to use to hash values. The hash class must - overload operator() and be built like this. - \code - class SimpleHash - { - public: - inline unsigned int operator() ( const int pKey ) const - { - return pKey; - } - }; - \endcode - * \nosubgrouping - */ -template< typename KEY, typename VALUE, typename HASH, class Destruct = FbxNoOpDestruct, class Comparator = FbxDefaultComparator > -class FbxHashMap -{ -public: - typedef KEY KeyType; - typedef VALUE ValueType; - typedef HASH HashFunctorType; - -private: - - class ListItem - { - public: - ListItem* mNext; - ValueType mValue; - KeyType mKey; - - ListItem() - : - mNext(NULL) - { - } - - ~ListItem() - { - Destruct::DoIt(mValue); - } - }; - -public: - /** - Iterate through every element in a hash map. - */ - class Iterator - { - public: - - typedef ListItem ListItemType; - typedef FbxPair< KeyType, ValueType > KeyValuePair; - - /** - Copy constructor - */ - Iterator( const Iterator& pOther ) - : - mMap( pOther.mMap ), - mBucketIndex( pOther.mBucketIndex ), - mCurrentItem( pOther.mCurrentItem ) - { - - } - - /** - Destructor - */ - ~Iterator(){}; - - /** - Used to dereference an iterator and give it a behavior more similar to a pointer. - \return The KeyValuePair currently referenced by the iterator - */ - KeyValuePair operator*() const - { - KeyValuePair lItem; - - if( mCurrentItem ) - { - lItem.mFirst = mCurrentItem->mKey; - lItem.mSecond = mCurrentItem->mValue; - return lItem; - } - - FBX_ASSERT_NOW("Accessing out of bounds iterator"); - - return lItem; - } - - /** - Advances the iterator to the next keyvaluepair in the hashmap. It does not wrap around so - advancing after reaching the last element will not point back to the first one. - */ - void Next() - { - if( !mCurrentItem ) - return; - - if( mCurrentItem->mNext ) - { - mCurrentItem = mCurrentItem->mNext; - return; - } - else - { - mBucketIndex++; - for( ; mBucketIndex < mMap->mBuckets.GetCount(); ++mBucketIndex ) - { - if( mMap->mBuckets[ mBucketIndex ] ) - { - mCurrentItem = mMap->mBuckets[ mBucketIndex ]; - return; - } - } - - if( mBucketIndex >= mMap->mBuckets.GetCount() ) - { - *this = mMap->End(); - return; - } - } - } - - /** - Check equivalence between two iterators. There are 3 conditions for equivalence between 2 iterators: - 1) Item being referenced by the iterator must be equivalent - 2) They must point at the same index - 3) They must point on the same map - \return true if both iterators are equal, false otherwise - */ - bool operator==( const Iterator& pOther ) const - { - return mCurrentItem == pOther.mCurrentItem && - mBucketIndex == pOther.mBucketIndex && - mMap == pOther.mMap; - } - - /** - Check inequivalence between 2 iterators. Please see operator== for more information. - \return true if both iterators are NOT equal, false if they are - */ - bool operator!=( const Iterator& pOther ) const - { - return !(*this == pOther); - } - - /** - Assign the current iterator to the one on the right hand side of the operator. After assignment they will - reference the same object, at the same index, in the same map. - \return The new iterator - */ - Iterator& operator=( const Iterator& pOther ) - { - this->mBucketIndex = pOther.mBucketIndex; - this->mMap = pOther.mMap; - this->mCurrentItem = pOther.mCurrentItem; - return *this; - } - - private: - const FbxHashMap* mMap; - - int mBucketIndex; - ListItemType* mCurrentItem; - - Iterator(const FbxHashMap* pMap, int pBucketIndex, ListItemType* pCurrentItem) - : - mMap( pMap ), - mBucketIndex(pBucketIndex), - mCurrentItem(pCurrentItem) - { - - } - - friend class FbxHashMap; - }; - - /** - Construct a FbxHashMap with an user-defined maximum number of elements. - \param pBucketSize Initial maximum number of elements. - */ - FbxHashMap( int pBucketSize ) - { - mBuckets.Resize( pBucketSize ); - } - - /** - Construct a FbxHashMap with the default maximum number of elements (30) - */ - FbxHashMap() - { - mBuckets.Resize(30); - } - - /** - Clear all elements in the hash map before destroying itself - */ - ~FbxHashMap() - { - Clear(); - mBuckets.Clear(); - } - - /** - Calls operator delete on all elements of the hashmap, de-allocating all memory and destroying them - */ - void Clear() - { - for( int i = 0; i < mBuckets.GetCount(); ++i) - { - if( mBuckets[i] ) - { - ListItem* lNext = mBuckets[i]->mNext; - while( lNext ) - { - ListItem* lNextNext = lNext->mNext; - FbxDelete(lNext); - lNext = lNextNext; - } - - FbxDelete(mBuckets[i]); - mBuckets[i] = NULL; - } - } - } - - /** - Find an element in the hashmap. If no element exist with the specified key, returns an iterator pointing on the - end of the map (not an actual KeyValuePair). - \param pKey The value of the key corresponding to the element - \return An Iterator referencing that element - */ - const Iterator Find( const KeyType& pKey ) const - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - /** - Remove an element in the hashmap. - \param pKey The key value of the element to remove - \return The value of the element that was just deleted. If the element does not exist, a value created with its default constructor will be returned - */ - VALUE Remove( const KEY& pKey ) - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets.GetAt(lIndex); - ListItem* lLastItem = NULL; - - while( lItem ) - { - if( lItem->mKey == pKey ) - { - if( lLastItem ) - lLastItem->mNext = lItem->mNext; - - if( mBuckets.GetAt(lIndex) == lItem ) - mBuckets.SetAt(lIndex, lItem->mNext ); - - VALUE lValue = lItem->mValue; - FbxDelete(lItem); - - return lValue; - } - - lLastItem = lItem; - lItem = lItem->mNext; - } - - return VALUE(); - } - - /** Add or retrieve a KeyValuePair from the Hashmap. If there is already an entry in the map for an element - with key value specified in parameter, the value will be returned. Otherwise, a new entry will be created - with this key value and the default value for ValueType will be returned. It can be modified using the - assignment operator - \param pKey The key for which to retrieve/add a value. - \return Value of the element referenced by the key specified in parameter. - */ - ValueType& operator[]( const KeyType& pKey ) - { - unsigned int lIndex = 0; - Iterator lIt = InternalFind( pKey, lIndex); - if( lIt != End() ) - { - return lIt.mCurrentItem->mValue; - } - - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = FbxNew< ListItem >(); - lItem->mNext = NULL; - lItem->mKey = pKey; - - if( !mBuckets.GetAt(lIndex) ) - { - mBuckets.SetAt(lIndex, lItem); - } - else - { - lItem->mNext = mBuckets.GetAt(lIndex); - mBuckets.SetAt(lIndex, lItem); - } - - return lItem->mValue; - } - - /** Returns an iterator pointing on the first non-null element in the map - \return An iterator pointing on the first non-null element in the map. - */ - Iterator Start() const - { - for( int i = 0; i < mBuckets.GetCount(); ++i ) - { - if( mBuckets[i] ) - { - Iterator lIt( this, i, mBuckets[i] ); - return lIt; - } - } - - return End(); - } - - /** Returns an iterator pointing on the last element in the map. This is not an actual KeyValuePair but - * but an iterator pointing on a null element. - \return Iterator pointing on a null value at the end of the map - */ - Iterator End() const - { - Iterator lIt( this, 0, NULL ); - return lIt; - } - -private: - - // Avoid calculating the hashvalue twice - const Iterator InternalFind( const KeyType& pKey, unsigned int& pOutCalculatedIndex ) const - { - pOutCalculatedIndex = mHashFunctor(pKey); - unsigned int lIndex = pOutCalculatedIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - - // not implemented yet! - FbxHashMap( const FbxHashMap& pOther ) {}; - - FbxArray mBuckets; - HashFunctorType mHashFunctor; - - friend class Iterator; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_HASHMAP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h deleted file mode 100644 index e001cf7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxintrusivelist.h -#ifndef _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ -#define _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#define FBXSDK_INTRUSIVE_LIST_NODE(Class, NodeCount)\ - public: inline FbxListNode& GetListNode(int index = 0){ return this->mNode[index]; }\ - private: FbxListNode mNode[NodeCount]; - -template class FbxListNode -{ - typedef FbxListNode NodeT; - -public: - explicit FbxListNode(T* pData = 0):mNext(0),mPrev(0),mData(pData){} - ~FbxListNode(){ Disconnect(); } - - void Disconnect() - { - if ( mPrev != 0 ) - mPrev->mNext = mNext; - - if ( mNext != 0 ) - mNext->mPrev = mPrev; - - mPrev = mNext = 0; - } - - NodeT* mNext; - NodeT* mPrev; - T* mData; -}; - -//----------------------------------------------------------------- -// template arg T: Type listed -// arg NodeIndex: If an object listed has multiple list node, which -// index corresponds to the right node -template class FbxIntrusiveList -{ -public: - typedef T allocator_type; - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T* pointer; - typedef const T* const_pointer; - - typedef FbxListNode NodeT; - - // Construction / Destruction - FbxIntrusiveList():mHead(0) - { - mHead.mNext = mHead.mPrev = &mHead; - } - ~FbxIntrusiveList() - { - while(!Empty()) - Begin().Get()->Disconnect(); // LINUXNote: should be Erase(Begin()); but there's an issue with gcc 4.2 - }; - - // true if the list's size is 0. - bool Empty() const - { - return ((mHead.mNext==&mHead)&&(mHead.mPrev==&mHead)); - } - - // Back Insertion Sequence Inserts a new element at the end. - void PushBack(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = &mHead; - pNode->mPrev = mHead.mPrev; - - pNode->mPrev->mNext = pNode; - mHead.mPrev = pNode; - } - } - - void PushFront(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = mHead.mNext; - pNode->mPrev = &mHead; - - pNode->mNext->mPrev = pNode; - mHead.mNext = pNode; - } - } - - void PopFront() - { - iterator begin = Begin(); - Erase(begin); - } - - void PopBack() - { - Erase(--(End())); - } - -public: - class IntrusiveListIterator - { - public: - explicit IntrusiveListIterator(NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListIterator operator++(int) - { - IntrusiveListIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListIterator operator--(int) - { - IntrusiveListIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListIterator& operator=(const IntrusiveListIterator &other){mPtr = other.mPtr; return *this;} - - reference operator*() const { return *(mPtr->mData); } - pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListIterator& other)const{ return !(*this == other); } - - inline NodeT* Get()const { return mPtr; } - - private: - NodeT* mPtr; - }; - - class IntrusiveListConstIterator - { - public: - explicit IntrusiveListConstIterator(const NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListConstIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListConstIterator operator++(int) - { - IntrusiveListConstIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListConstIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListConstIterator operator--(int) - { - IntrusiveListConstIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListConstIterator& operator=(const IntrusiveListConstIterator &other){mPtr = other.mPtr; return *this;} - - const_reference operator*() const { return *(mPtr->mData); } - const_pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListConstIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListConstIterator& other)const{ return !(*this == other); } - - inline const NodeT* Get()const { return mPtr; } - - private: - mutable const NodeT* mPtr; - }; - - // --- Iterator definitions --- - typedef IntrusiveListIterator iterator; - typedef IntrusiveListConstIterator const_iterator; - - // iterator support - inline iterator Begin() { return iterator(mHead.mNext); } - inline const_iterator Begin() const { return const_iterator(mHead.mNext); } - inline iterator End() { return iterator(&mHead); } - inline const_iterator End() const { return const_iterator(&mHead); } - - // Because there is no real use, for the reverse iterators, - // they have not been implemented. - - reference Front(){return (*Begin());} - const_reference Front() const { return (*Begin()); } - reference Back(){ return (*(--End())); } - const_reference Back() const{ return (*(--End())); } - - iterator& Erase(iterator& it) - { - it.Get()->Disconnect(); - return (++it); - } -private: - NodeT mHead; - - // Not copyable - FbxIntrusiveList(const FbxIntrusiveList&); - FbxIntrusiveList& operator=(const FbxIntrusiveList& Right){return (*this);} -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmap.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmap.h deleted file mode 100644 index d8708fc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmap.h +++ /dev/null @@ -1,408 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmap.h -#ifndef _FBXSDK_CORE_BASE_MAP_H_ -#define _FBXSDK_CORE_BASE_MAP_H_ - -#include - -#include -#include - -#include - -class FbxObject; - -/** Default compare functor for FbxMap and FbxSet, which assumes operator < is defined. -Here is examples of different compare class implementations: -With Key = int -\code -class IntCompare -{ - inline int operator()(int pKeyA, int pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = Class -\code -class ClassCompare -{ - inline int operator()(const Class& pKeyA, const Class& pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = char* -\code -class StrCompare -{ - inline int operator()(const char* pKeyA, const char* pKeyB) const - { - return strcmp(pKeyA, pKeyB); - } -}; -\endcode -*/ -template struct FbxLessCompare -{ - inline int operator()(const Type& pLeft, const Type& pRight) const - { - return (pLeft < pRight) ? -1 : ((pRight < pLeft) ? 1 : 0); - } -}; - -/** This class implements an efficient map based on key comparison, which stores key-value pairs. -It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxMap -{ -protected: - //! This class defines the key-value pairs used by the map. - class KeyValuePair : private FbxPair - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Key KeyType; - typedef const Key ConstKeyType; - typedef Type ValueType; - typedef const Type ConstValueType; - - KeyValuePair(const Key& pFirst, const Type& pSecond) : FbxPair(pFirst, pSecond){} - ConstKeyType& GetKey() const { return this->mFirst; } - KeyType& GetKey(){ return this->mFirst; } - ConstValueType& GetValue() const { return this->mSecond; } - ValueType& GetValue(){ return this->mSecond; } - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the map. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef Key KeyType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of key-value pairs it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a key-value pair. - * \param pKey The key. - * \param pValue The value. - * \return If the key is already present in the map, returns the existing pair and false; else returns the pointer to the new key-value and true. */ - inline FbxPair Insert(const KeyType& pKey, const ValueType& pValue) - { - return mTree.Insert(KeyValuePair(pKey, pValue)); - } - - /** Delete a key-value pair. - * \param pKey The key. - * \return \c true if success, \c false if key is not found. */ - inline bool Remove(const KeyType& pKey) - { - return mTree.Remove(pKey); - } - - //! Clear the map. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the map is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the map. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the map. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if the key is not found. */ - inline const RecordType* Find(const KeyType& pKey) const - { - return mTree.Find(pKey); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if it's not found. */ - inline RecordType* Find(const KeyType& pKey) - { - return mTree.Find(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - return mTree.UpperBound(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline RecordType* UpperBound(const KeyType& pKey) - { - return mTree.UpperBound(pKey); - } - - /** Retrieve the reference of the value in the key-value pairs in map. - * \param pKey The key. - * \return The reference of the value. - * \remark If the key is not found, a new key-value pair will be inserted. */ - inline ValueType& operator[](const KeyType& pKey) - { - RecordType* lRecord = Find(pKey); - - if( !lRecord ) - { - lRecord = Insert(pKey, ValueType()).mFirst; - } - - return lRecord->GetValue(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxMap(){} - inline FbxMap(const FbxMap& pMap) : mTree(pMap.mTree){} - inline ~FbxMap(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A simple map class representing a dictionary-like data structure. -* \nosubgrouping */ -template class FbxSimpleMap -{ -public: - typedef typename FbxMap::RecordType* Iterator; - - /** Add a key-value pair as an element. - * \param pKey The new key. - * \param pValue The new value. */ - inline void Add(const Key& pKey, const Type& pValue) - { - mMap.Insert(pKey, pValue); - } - - /** Find an element with a given key. - * \param pKey The given key. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Key& pKey) const - { - return (Iterator)mMap.Find(pKey); - } - - /** Find an element with a given value. - * \param pValue The given value. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Type& pValue) const - { - Iterator lIterator = GetFirst(); - while( lIterator ) - { - if( lIterator->GetValue() == pValue ) - { - return lIterator; - } - lIterator = GetNext(lIterator); - } - return 0; - } - - /** Remove an element from the map. - * \param pIterator The given element. */ - inline void Remove(Iterator pIterator) - { - if( pIterator ) mMap.Remove(pIterator->GetKey()); - } - - /** Get the first element. - * \return The the heading element. */ - inline Iterator GetFirst() const - { - return (Iterator)mMap.Minimum(); - } - - /** Get the next element of a given element. - * \param pIterator The given element. - * \return The next element. */ - inline Iterator GetNext(Iterator pIterator) const - { - return (Iterator)pIterator ? pIterator->Successor() : 0; - } - - //! Remove all of the elements. - inline void Clear() - { - mMap.Clear(); - } - - /** Reserve the space for given number elements. - * \param pSize The given number. */ - inline void Reserve(int pSize) - { - mMap.Reserve(pSize); - } - - /** Query the count of elements in the map. - * \return The count of elements. */ - inline int GetCount() const - { - return mMap.GetSize(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSimpleMap(){} - -private: - FbxMap mMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** This class template declare a simple FbxObject map. -* \nosubgrouping */ -template class FbxObjectMap : public FbxSimpleMap -{ -public: - //! Constructor - inline FbxObjectMap(){} - - /** Get the object contained in an element. - * \param pIterator The given element. - * \return The object. - */ - inline FbxObject* Get(typename FbxSimpleMap::Iterator pIterator) - { - return pIterator ? pIterator->GetValue() : 0; - } -}; - -/** A class that maps strings to objects with a basic string comparator. -* \nosubgrouping */ -class FbxObjectStringMap : public FbxObjectMap -{ -public: - //! Constructor - inline FbxObjectStringMap(){} -}; - -//! Call FbxFree on each element of the map, and then clear it. -template inline void FbxMapFree(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxFree(i->GetValue()); - } - pMap.Clear(); -} - -//! Call FbxDelete on each element of the map, and then clear it. -template inline void FbxMapDelete(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxDelete(i->GetValue()); - } - pMap.Clear(); -} - -//! Call Destroy on each element of the map, and then clear it. -template inline void FbxMapDestroy(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - i->GetValue()->Destroy(); - } - pMap.Clear(); -} - -template class FbxSimpleMap; -template class FbxObjectMap; - -#include - -#endif /* _FBXSDK_CORE_BASE_MAP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmemorypool.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmemorypool.h deleted file mode 100644 index 4665683..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmemorypool.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmemorypool.h -#ifndef _FBXSDK_CORE_BASE_MEMORY_H_ -#define _FBXSDK_CORE_BASE_MEMORY_H_ - -#include - -#include - -#include - -/** \brief Class to create a simple fixed-size-blocks memory pool to allocate memory dynamically. */ -class FBXSDK_DLL FbxMemoryPool -{ -public: - /** Memory pool constructor. - * \param pBlockSize The size of one memory block. - * \param pBlockCount The count of block that should be pre-allocated. - * \param pResizable Whether memory pool can grow if no block are availalbe upon calling Allocate. - * \param pConcurrent Whether the pool supports concurrent allocation and release operations. - * \remark All memory blocks must be released before the memory pool is destroyed, otherwise a memory leak will occur. */ - FbxMemoryPool(size_t pBlockSize, FbxInt64 pBlockCount=0, bool pResizable=true, bool pConcurrent=true); - - /** Memory pool destructor. Upon destruction, all memory blocks of the pool will be de-allocated. */ - ~FbxMemoryPool(); - - /** Free memory of all memory blocks from this memory pool, also effectively resetting the block count to zero. - * \remark The block size and alignment/resize/concurrent support will remain unchanged. */ - void Reset(); - - /** Allocate or lock a memory block for usage. - * \return An memory block pointer that can be NULL if the memory pool cannot grow in size and no blocks are available. */ - void* Allocate(); - - /** Dispose or unlock a memory block. - * \param pMemBlock A pointer to the memory block to release. This will not free the block's memory, instead simply putting it back in the available stack. */ - void Release(void* pMemBlock); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void* Pop(); - - FbxInt64 mMaxBlockCount; - FbxAtomic mFreeBlockCount; - void* mFreeBlocksStack; - size_t mBlockSize; - bool mResizable; - bool mSupportConcurrentAccess; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MEMORY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmultimap.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmultimap.h deleted file mode 100644 index a5901ed..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxmultimap.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmultimap.h -#ifndef _FBXSDK_CORE_BASE_MULTIMAP_H_ -#define _FBXSDK_CORE_BASE_MULTIMAP_H_ - -#include - -#include - -/** Class to manipulate a map that can contain multiple times the same key. -* \nosubgrouping */ -class FBXSDK_DLL FbxMultiMap -{ -public: - struct Pair - { - FbxHandle mKey; - FbxHandle mItem; - }; - - /** If can't find the matching item,append a item at the end of the array. - * If find the matching item ,insert the new item before the matching item. - * \param pKey The value of Key in new item, also is the character for matching. - * \param pItem The value of Item in new item. - * \return If add successfully return true,otherwise return false. - */ - bool Add(FbxHandle pKey, FbxHandle pItem); - - /** Remove the first matching item, whose reference is the same as given. - * \param pKey The given reference. - * \return If remove successfully return true,otherwise return false. - */ - bool Remove(FbxHandle pKey); - - /** Remove all the matching item, whose item is the same as given. - * \param pItem The given item. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveItem(FbxHandle pItem); - - /** Set first matching item with the given parameter. - * \param pKey The character for matching. - * \param pItem The value of Item that the matching item will be set. - * \return If set successfully return true,otherwise return false. - */ - bool SetItem(FbxHandle pKey, FbxHandle pItem); - - /** Get first matching item with the given parameter. - * \param pKey The character for matching. - * \param pIndex The pointer to the index of the matching item. - * \return The value of Item in the matching item. - * \remarks If there are multiple elements that match the character, the index returned is unspecified. - */ - FbxHandle Get(FbxHandle pKey, int* pIndex=NULL); - - //! Delete the array. - void Clear(); - - /** Get the item of the given index. - * \param pIndex The index for matching. - * \param pKey The pointer to the Key of the matching item. - * \return The value of Item in the matching item. - */ - FbxHandle GetFromIndex(int pIndex, FbxHandle* pKey=NULL); - - /** Remove the item of the given index - * \param pIndex The given index. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveFromIndex(int pIndex); - - /** Get number of items in the array. - * \return The number of items in the array. */ - int GetCount() const { return mSetCount; } - - /** Swap the value of Key and Item in every item of array, and sort the new array with the value of Key. */ - void Swap(); - - /** Sort the array according the value of Key in each item. */ - void Sort(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiMap(int pItemPerBlock=20); - FbxMultiMap(const FbxMultiMap& pOther); - ~FbxMultiMap(); - - FbxMultiMap& operator=(const FbxMultiMap&); - -private: - Pair* FindEqual(FbxHandle pKey) const; - - Pair* mSetArray; - int mSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MULTIMAP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxpair.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxpair.h deleted file mode 100644 index b1cebfb..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxpair.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpair.h -#ifndef _FBXSDK_CORE_BASE_PAIR_H_ -#define _FBXSDK_CORE_BASE_PAIR_H_ - -#include - -#include - -/** This class template holds a pair of objects. -* \nosubgrouping */ -template class FbxPair -{ -public: - //! Constructor. - inline FbxPair() : mFirst(), mSecond() {} - - /** Constructor. - * \param pFirst The first object. - * \param pSecond The second object. */ - inline FbxPair(const First& pFirst, const Second& pSecond) : mFirst(pFirst), mSecond(pSecond) {} - - /** Assignment operator. - * \param pOther The pair to be copied. */ - inline FbxPair& operator=(const FbxPair& pOther) - { - mFirst = pOther.mFirst; - mSecond = pOther.mSecond; - return *this; - } - - /** Comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator==(const FbxPair& pOther) - { - return mFirst == pOther.mFirst && mSecond == pOther.mSecond; - } - - /** Inverse comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator!=(const FbxPair& pOther) - { - return !operator==(pOther); - } - - First mFirst; //!< The first object in the pair. - Second mSecond; //!< The second object in the pair. -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_PAIR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxredblacktree.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxredblacktree.h deleted file mode 100644 index 5d7d4ee..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxredblacktree.h +++ /dev/null @@ -1,1398 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxredblacktree.h -#ifndef _FBXSDK_CORE_BASE_REDBLACKTREE_H_ -#define _FBXSDK_CORE_BASE_REDBLACKTREE_H_ - -#include - -#include -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxRedBlackConstIterator; - -template class FbxRedBlackIterator -{ -public: - FbxRedBlackIterator() : mRecord(0) {} - FbxRedBlackIterator(RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackIterator& operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackIterator operator++(int) - { - FbxRedBlackIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackIterator& operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackIterator operator--(int) - { - FbxRedBlackIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - RecordType* mRecord; - - friend class FbxRedBlackConstIterator; -}; - -template class FbxRedBlackConstIterator -{ -public: - FbxRedBlackConstIterator() : mRecord(0) {} - FbxRedBlackConstIterator(const RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackConstIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackConstIterator & operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackConstIterator operator++(int) - { - FbxRedBlackConstIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackConstIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackConstIterator & operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackConstIterator operator--(int) - { - FbxRedBlackConstIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackConstIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - const RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackConstIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackConstIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - const RecordType* mRecord; - - friend class FbxRedBlackIterator; -}; - -//! Implements an efficient ordered data storage. -template class FbxRedBlackTree -{ -public: - typedef Type DataType; - typedef typename Type::KeyType KeyType; - typedef typename Type::ConstKeyType ConstKeyType; - typedef typename Type::ValueType ValueType; - typedef typename Type::ConstValueType ConstValueType; - typedef Allocator AllocatorType; - - /** - This class represents a node in the tree. It contains the key, - the value, and internal tree management data. - */ - class RecordType - { - public: - inline ConstKeyType& GetKey() const { return mData.GetKey(); } - inline ConstValueType& GetValue() const { return mData.GetValue(); } - inline ValueType& GetValue() { return mData.GetValue(); } - - inline const RecordType* Minimum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline RecordType* Minimum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline const RecordType* Maximum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline RecordType* Maximum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline const RecordType* Predecessor() const - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mLefttChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Predecessor() - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mLeftChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline const RecordType* Successor() const - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Successor() - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline int GetBlackDepth() { return mBlackDepth; } - - private: - enum ETreeType {eRed, eBlack}; - - inline RecordType(const DataType& pData) - : mData(pData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(eRed) - , mBlackDepth(0) - { - } - - inline RecordType(const RecordType& pRecordType) - : mData(pRecordType.mData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(pRecordType.mColor) - , mBlackDepth(pRecordType.mBlackDepth) - { - } - - DataType mData; - - friend class FbxRedBlackTree; - - RecordType* mParent; - RecordType* mLeftChild; - RecordType* mRightChild; - unsigned int mColor:2; - unsigned int mBlackDepth:30; - }; - -public: - typedef FbxRedBlackConstIterator ConstIteratorType; - typedef FbxRedBlackIterator IteratorType; - - inline FbxRedBlackTree() : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) {} - inline FbxRedBlackTree(const FbxRedBlackTree& pTree) : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) { operator=(pTree); } - inline ~FbxRedBlackTree() { Clear(); } - - /** Deep copy pTree in this. - * \param pTree The tree to copy in this tree. */ - inline FbxRedBlackTree& operator=(const FbxRedBlackTree& pTree) - { - if( this != &pTree ) - { - Clear(); - - mAllocator = pTree.mAllocator; - - if( pTree.mRoot ) - { - void* lBuffer = mAllocator.AllocateRecords(); - mRoot = new(lBuffer) RecordType(*(pTree.mRoot)); //in-place new won't allocate memory, so it is safe - mRoot->mLeftChild = DuplicateSubTree(pTree.mRoot->mLeftChild); - mRoot->mRightChild = DuplicateSubTree(pTree.mRoot->mRightChild); - - if (mRoot->mLeftChild) - { - mRoot->mLeftChild->mParent = mRoot; - } - - if (mRoot->mRightChild) - { - mRoot->mRightChild->mParent = mRoot; - } - } - else - { - FBX_ASSERT( pTree.mSize == 0 ); - FBX_ASSERT( mRoot == 0 ); - } - - mSize = pTree.mSize; - } - - return *this; - } - - inline bool operator==(const FbxRedBlackTree& pTree) const - { - // Check a few quick shortcuts - if( this == &pTree ) - return true; - - if( GetSize() != pTree.GetSize() ) - return false; - - // Iterator through all nodes; if we reach the end of both iterators at the same - // time then we have two iterators that match. - ConstIteratorType End; - ConstIteratorType Iter1(Minimum()); - ConstIteratorType Iter2(pTree.Minimum()); - - while( (Iter1 != End) && (Iter2 != End) && - (Iter1->GetKey() == Iter2->GetKey()) && - (Iter1->GetValue() == Iter2->GetValue()) ) - { - ++Iter1; - ++Iter2; - } - - return Iter1 == End && Iter2 == End; - } - - /** Ask Allocator to reserve space to hold pRecordCount elements. - * \param pRecordCount - */ - inline void Reserve(unsigned int pRecordCount) - { - mAllocator.Reserve(pRecordCount); - } - - /** Get the number of elements in the tree. Takes O(1) time. - * \return The number of elements in the tree. - */ - inline int GetSize() const { return mSize; } - - inline bool Empty() const { return mSize == 0; } - - /** Insert a new element in the tree. Takes O(log n) time. - * \param pData The element to insert. - * \return If pData.GetKey() is already present in the tree, returns the - * existing record and false; else returns the new record and true. - */ - inline FbxPair Insert(const DataType& pData) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lParent = 0; - RecordType* lNode = mRoot; - while (lNode != 0) - { - const KeyType& lNodeKey = lNode->GetKey(); - const KeyType& lDataKey = pData.GetKey(); - - if (lCompareKeys(lNodeKey, lDataKey) < 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNodeKey, lDataKey) > 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode == 0) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNode = new(lBuffer) RecordType(pData); //in-place new won't allocate memory, so it is safe - mSize++; - - FBX_ASSERT(lNode == lBuffer); - - if (lParent) - { - if (lCompareKeys(lParent->GetKey(), pData.GetKey()) < 0) - { - FBX_ASSERT(lParent->mRightChild == 0); - lParent->mRightChild = lNode; - lNode->mParent = lParent; - } - else - { - FBX_ASSERT(lParent->mLeftChild == 0); - lParent->mLeftChild = lNode; - lNode->mParent = lParent; - } - } - else - { - mRoot = lNode; - } - - // Fix red black tree property - FixNodesAfterInsertion(lNode); - - lResult = true; - } - - return FbxPair(lNode, lResult); - } - - /** Remove an element identified by a key from the tree. Takes O(log n) time. - * \param pKey The key identifying the element to remove. - */ - inline bool Remove(const KeyType& pKey) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode) - { - RemoveNode(lNode); - mSize--; - lNode->~RecordType(); - mAllocator.FreeMemory(lNode); - - lResult = true; - } - - return lResult; - } - - /** Remove all elements from the tree. Takes O(n) time. Recursive. - */ - inline void Clear() - { - if (mRoot) - { - ClearSubTree(mRoot->mLeftChild); - ClearSubTree(mRoot->mRightChild); - mRoot->~RecordType(); - mAllocator.FreeMemory(mRoot); - mRoot = 0; - mSize = 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Minimum() const - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Minimum() - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Maximum() const - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Maximum() - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* Find(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* Find(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - const RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* UpperBound(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - -protected: - RecordType* mRoot; - int mSize; - - AllocatorType mAllocator; - - inline RecordType* DuplicateSubTree(const RecordType* pNode) - { - RecordType* lNewSubTree = 0; - - if (pNode) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNewSubTree = new(lBuffer) RecordType(*pNode); //in-place new won't allocate memory, so it is safe - lNewSubTree->mLeftChild = DuplicateSubTree(pNode->mLeftChild); - lNewSubTree->mRightChild = DuplicateSubTree(pNode->mRightChild); - - if (lNewSubTree->mLeftChild) - { - lNewSubTree->mLeftChild->mParent = lNewSubTree; - } - - if (lNewSubTree->mRightChild) - { - lNewSubTree->mRightChild->mParent = lNewSubTree; - } - } - - return lNewSubTree; - } - - inline void FixNodesAfterInsertion(RecordType* pNode) - { - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (lNode->mParent == 0) - { - lNode->mColor = RecordType::eBlack; - } - else if (lNode->mParent->mColor == RecordType::eRed) - { - RecordType* lUncle = 0; - if (lNode->mParent == lNode->mParent->mParent->mLeftChild) - { - lUncle = lNode->mParent->mParent->mRightChild; - } - else if (lNode->mParent == lNode->mParent->mParent->mRightChild) - { - lUncle = lNode->mParent->mParent->mLeftChild; - } - - // since lNode->mParent is red, lNode->mParent->mParent exists - - if (lUncle && lUncle->mColor == RecordType::eRed) - { - lNode->mParent->mColor = RecordType::eBlack; - lUncle->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - lNode = lNode->mParent->mParent; - - lDone = false; - } - else - { - if ((lNode == lNode->mParent->mRightChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - LeftRotate(lNode->mParent); - lNode = lNode->mLeftChild; - } - else if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mRightChild)) - { - RightRotate(lNode->mParent); - lNode = lNode->mRightChild; - } - - lNode->mParent->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - RightRotate(lNode->mParent->mParent); - } - else - { - LeftRotate(lNode->mParent->mParent); - } - } - } - } - - mRoot->mColor = RecordType::eBlack; - } - - inline void LeftRotate(RecordType* pNode) - { - FBX_ASSERT_RETURN(pNode); - - RecordType* lNode = pNode->mRightChild; - FBX_ASSERT_RETURN(lNode); - - #ifdef _DEBUG - RecordType* A = pNode->mLeftChild; - RecordType* B = lNode->mLeftChild; - RecordType* C = lNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mRightChild = lNode->mLeftChild; - if (pNode->mRightChild) - { - pNode->mRightChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mLeftChild) - { - pNode->mParent->mLeftChild = lNode; - } - else - { - pNode->mParent->mRightChild = lNode; - } - pNode->mParent = lNode; - lNode->mLeftChild = pNode; - - FBX_ASSERT(pNode->mLeftChild == A); - FBX_ASSERT(pNode->mRightChild == B); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(lNode->mLeftChild == pNode); - FBX_ASSERT(lNode->mRightChild == C); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(A == 0 || A->mParent == pNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == lNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RightRotate(RecordType* pNode) - { - RecordType* lNode = pNode->mLeftChild; - - #ifdef _DEBUG - RecordType* A = lNode->mLeftChild; - RecordType* B = lNode->mRightChild; - RecordType* C = pNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mLeftChild = lNode->mRightChild; - if (pNode->mLeftChild) - { - pNode->mLeftChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mRightChild) - { - pNode->mParent->mRightChild = lNode; - } - else - { - pNode->mParent->mLeftChild = lNode; - } - pNode->mParent = lNode; - lNode->mRightChild = pNode; - - FBX_ASSERT(lNode->mLeftChild == A); - FBX_ASSERT(lNode->mRightChild == pNode); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(pNode->mLeftChild == B); - FBX_ASSERT(pNode->mRightChild == C); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(A == 0 || A->mParent == lNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == pNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RemoveNode(RecordType* pNode) - { - if (pNode->mLeftChild == 0) - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = 0; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = 0; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mParent, 0); - } - } - else - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mRightChild; - pNode->mRightChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mRightChild->mParent, pNode->mRightChild); - } - } - } - else - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mLeftChild; - pNode->mLeftChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mLeftChild->mParent, pNode->mLeftChild); - } - } - else - { - RecordType* lMinRightNode = pNode->mRightChild->Minimum(); - RemoveNode(lMinRightNode); - - lMinRightNode->mColor = pNode->mColor; - ReplaceNode(pNode, lMinRightNode); - } - } - - pNode->mParent = 0; - pNode->mLeftChild = 0; - pNode->mRightChild = 0; - } - - inline void ReplaceNode(RecordType* pNodeToReplace, RecordType* pReplacement) - { - pReplacement->mParent = pNodeToReplace->mParent; - if (pNodeToReplace->mParent) - { - if (pNodeToReplace->mParent->mLeftChild == pNodeToReplace) - { - pNodeToReplace->mParent->mLeftChild = pReplacement; - } - else if (pNodeToReplace->mParent->mRightChild == pNodeToReplace) - { - pNodeToReplace->mParent->mRightChild = pReplacement; - } - } - else - { - FBX_ASSERT(mRoot == pNodeToReplace); - mRoot = pReplacement; - } - - pReplacement->mLeftChild = pNodeToReplace->mLeftChild; - if (pReplacement->mLeftChild) - { - pReplacement->mLeftChild->mParent = pReplacement; - } - - pReplacement->mRightChild = pNodeToReplace->mRightChild; - if (pReplacement->mRightChild) - { - pReplacement->mRightChild->mParent = pReplacement; - } - } - - inline RecordType* Sibling(const RecordType* pParent, const RecordType* pNode) const - { - if (pParent) - { - if (pParent->mLeftChild == pNode) - { - return pParent->mRightChild; - } - else if (pParent->mRightChild == pNode) - { - return pParent->mLeftChild; - } - } - - return 0; - } - - inline bool IsBlack(const RecordType* pNode) - { - return ((pNode == 0) || (pNode->mColor == RecordType::eBlack)); - } - - inline void FixNodesAfterRemoval(RecordType* pParent, RecordType* pNode) - { - RecordType* lParent = pParent; - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (!IsBlack(lNode)) - { - lNode->mColor = RecordType::eBlack; - } - else if (lParent != NULL) - { - RecordType* lSibling = Sibling(lParent, lNode); - - if (!IsBlack(lSibling)) - { - lParent->mColor = RecordType::eRed; - lSibling->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - LeftRotate(lParent); - } - else - { - RightRotate(lParent); - } - - // update sibling: it may have change after rotation - // parent was not affected by this rotation - lSibling = Sibling(lParent, lNode); - } - - /* check this for null sibling */ - if (lSibling && - IsBlack(lParent) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lNode = lParent; - lParent = lParent->mParent; - lDone = false; - } - else - { - if (!IsBlack(lParent) && - IsBlack(lSibling) && - ((lSibling == 0) || IsBlack(lSibling->mLeftChild)) && - ((lSibling == 0) || IsBlack(lSibling->mRightChild))) - { - if (lSibling) - { - lSibling->mColor = RecordType::eRed; - } - lParent->mColor = RecordType::eBlack; - } - else if( lSibling != 0 ) - { - if ((lNode == lParent->mLeftChild) && - IsBlack(lSibling) && - !IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mLeftChild->mColor = RecordType::eBlack; - RightRotate(lSibling); - } - else if ((lNode == lParent->mRightChild) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - !IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mRightChild->mColor = RecordType::eBlack; - LeftRotate(lSibling); - } - - // update sibling: it may have change after rotation - lSibling = Sibling(lParent, lNode); - FBX_ASSERT(lSibling != 0 && lParent != 0); // lSibling is now - // the former red - // child of the - // former sibling - - if( lSibling != 0 && lParent != 0 ) - { - lSibling->mColor = lParent->mColor; - lParent->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - if (lSibling->mRightChild) - { - lSibling->mRightChild->mColor = RecordType::eBlack; - } - LeftRotate(lParent); - } - else - { - if (lSibling->mLeftChild) - { - lSibling->mLeftChild->mColor = RecordType::eBlack; - } - RightRotate(lParent); - } - } - } - } - } - } - - if (mRoot) - { - mRoot->mColor = RecordType::eBlack; - } - } - - inline void ClearSubTree(RecordType* pNode) - { - if (pNode) - { - ClearSubTree(pNode->mLeftChild); - ClearSubTree(pNode->mRightChild); - pNode->~RecordType(); - mAllocator.FreeMemory(pNode); - } - } - - inline int GetSubTreeSize(RecordType* pNode) const - { - if (pNode) - { - return GetSubTreeSize(pNode->mLeftChild) + GetSubTreeSize(pNode->mRightChild) + 1; - } - else - { - return 0; - } - } - -#if 0 - inline void IsSane() - { - FBX_ASSERT((mRoot == 0) || (mRoot->mColor == RecordType::eBlack)); - FBX_ASSERT(((mRoot == 0) && (mSize == 0)) || (mRoot != 0) && (mSize != 0)); - IsSubTreeSane(mRoot); - - ComputeBlackDepth(mRoot, 0); - - RecordType* lNode = mRoot; - unsigned int lLeafBlackDepth = 0; - while (lNode) - { - if (lNode->mLeftChild == 0) - { - lLeafBlackDepth = lNode->mBlackDepth + ((lNode->mColor == RecordType::eBlack) ? 1 : 0); - } - - lNode = lNode->mLeftChild; - } - - CheckLeavesBlackDepth(mRoot, lLeafBlackDepth); - } - - inline void IsSubTreeSane(const RecordType* pNode) const - { - Compare lCompareKeys; - - if (pNode) - { - FBX_ASSERT(pNode != pNode->mParent); - FBX_ASSERT(pNode != pNode->mLeftChild); - FBX_ASSERT(pNode != pNode->mRightChild); - - // Check for two consecutive red nodes - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mLeftChild == NULL) || - (pNode->mLeftChild->mColor == RecordType::eBlack)); - - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mRightChild == NULL) || - (pNode->mRightChild->mColor == RecordType::eBlack)); - - // Check key ordering - FBX_ASSERT((pNode->mLeftChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mLeftChild->GetKey()) > 0)); - - FBX_ASSERT((pNode->mRightChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mRightChild->GetKey()) < 0)); - - IsSubTreeSane(pNode->mLeftChild); - IsSubTreeSane(pNode->mRightChild); - } - } - - inline void ComputeBlackDepth(RecordType* pNode, unsigned int pDepth) - { - if( pNode ) - { - pNode->mBlackDepth = pDepth; - if( pNode->mColor == RecordType::eBlack ) - { - pDepth++; - } - ComputeBlackDepth(pNode->mLeftChild, pDepth); - ComputeBlackDepth(pNode->mRightChild, pDepth); - } - } - - inline void CheckLeavesBlackDepth(RecordType* pNode, unsigned int pBlackDepth) - { - if( pNode ) - { - if( pNode->mLeftChild == 0 || pNode->mRightChild == 0 ) - { - FBX_ASSERT((pNode->mBlackDepth + ((pNode->mColor == RecordType::eBlack) ? 1 : 0)) == pBlackDepth); - } - CheckLeavesBlackDepth(pNode->mLeftChild, pBlackDepth); - CheckLeavesBlackDepth(pNode->mRightChild, pBlackDepth); - } - } -#endif -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /*_FBXSDK_CORE_BASE_REDBLACKTREE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxset.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxset.h deleted file mode 100644 index b1231a2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxset.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxset.h -#ifndef _FBXSDK_CORE_BASE_SET_H_ -#define _FBXSDK_CORE_BASE_SET_H_ - -#include - -#include -#include - -#include - -/** This class implements an efficient set based on value comparison, which stores values. -* It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxSet -{ -protected: - //! This class defines the value type used by the set. - class Value - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Type KeyType; - typedef const Type ConstKeyType; - typedef const Type ValueType; - typedef const Type ConstValueType; - - inline Value(const Type& pValue) : mValue(pValue){} - inline KeyType& GetKey() const { return mValue; } - inline ConstKeyType& GetKey(){ return mValue; } - inline ValueType& GetValue() const { return mValue; } - inline ConstValueType& GetValue(){ return mValue; } - - protected: - ValueType mValue; - - private: - Value& operator=(const Value&); - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the set. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. - */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of values it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a value. - * \param pValue The value. - * \return If the value is already present in the map, returns the existing value and false; else returns the pointer to the new value and true. */ - inline FbxPair Insert(const ValueType& pValue) - { - return mTree.Insert(Value(pValue)); - } - - /** Delete a value. - * \param pValue The value. - * \return \c true if success, \c false if value is not found. */ - inline int Remove(const ValueType& pValue) - { - return mTree.Remove(pValue); - } - - //! Clear the set. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the set is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the set. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the set. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline const RecordType* Find(const ValueType& pValue) const - { - return mTree.Find(pValue); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline RecordType* Find(const ValueType& pValue) - { - return mTree.Find(pValue); - } - - //! Retrieve the minimum value in the set. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the minimum value in the set. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the maximum value in the set. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the maximum value in the set. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - - //! Equality operator. - inline bool operator==(const FbxSet& pOther) const - { - return (this == &pOther) || (mTree == pOther.mTree); - } - - //! Inequality operator. - inline bool operator != (const FbxSet& pOther) const - { - return !(*this == pOther); - } - - /** Intersect with another set. - * \param pOther The other set. - * \return The intersection set of the two sets. */ - inline FbxSet Intersect(const FbxSet& pOther) const - { - FbxSet lReturn; - ConstIterator lBegin = Begin(); - for (; lBegin != End(); ++lBegin) - { - if (pOther.Find(lBegin->GetValue()) != NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - - /** Unite with another set. - * \param pOther The other set. - * \return The union set of the two sets (no duplicated items). */ - inline FbxSet Union(const FbxSet& pOther) const - { - FbxSet lReturn(*this); - ConstIterator lBegin = pOther.Begin(); - for (; lBegin != End(); ++lBegin) - { - if (Find(lBegin->GetValue()) == NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSet(){} - inline FbxSet(const FbxSet& pSet) : mTree(pSet.mTree){} - inline ~FbxSet(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_SET_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstatus.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstatus.h deleted file mode 100644 index 3e67a68..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstatus.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatus.h -#ifndef _FBXSDK_CORE_BASE_STATUS_H_ -#define _FBXSDK_CORE_BASE_STATUS_H_ - -#include - -#include - -#include - -/** This class facilitates the testing/reporting of errors. It encapsulates the - * status code and the internal FBXSDK error code as returned by the API functions. - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatus -{ -public: - - - //! Available status codes. - enum EStatusCode { - eSuccess = 0, //!< Operation was successful - eFailure, //!< Operation failed - eInsufficientMemory, //!< Operation failed due to insufficient memory - eInvalidParameter, //!< An invalid parameter was provided - eIndexOutOfRange, //!< Index value outside the valid range - ePasswordError, //!< Operation on FBX file password failed - eInvalidFileVersion, //!< File version not supported (anymore or yet) - eInvalidFile, //!< Operation on the file access failed - eSceneCheckFail //!< Scene validation failure - }; - - //! Default constructor. - FbxStatus(); - - FbxStatus(EStatusCode pCode); - FbxStatus(const FbxStatus& rhs); - - FbxStatus& operator=(const FbxStatus& rhs); - - /** Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if all the members of \e rhs are equal to this instance members and \c False otherwise. - */ - bool operator==(const FbxStatus& rhs) const { return (mCode == rhs.mCode); } - /** Equivalence operator. - * \param pCode Status code to compare. - * \return \c True if the code member of this instance equals \e pCode and \c False otherwise. - */ - bool operator==(const EStatusCode pCode) const { return (mCode == pCode); } - /** Non-Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if at least one member of \e rhs is not equal to this instance member and \c True otherwise. - */ - bool operator!=(const FbxStatus& rhs) const { return (mCode != rhs.mCode); } - /** Non-Equivalence operator. - * \param rhs Status code to compare. - * \return \c True if the code member of this instance equals \e rhs and \c False otherwise. - */ - bool operator!=(const EStatusCode rhs) const { return (mCode != rhs); } - - /** The conversion operator that converts a FbxStatus object to bool. - * The result it returns will be \c True if the FbxStatus does not contain - * an error, and \c False if it does. - */ - operator bool() const { return mCode==eSuccess; } - - /** Determines whether there is an error. - * \return \c True if an error occured and \c False if the operation was sucessful. - */ - bool Error() const { return !this->operator bool(); } - - //! Clear error code and message from the instance. After this call, it will behave as if it contained eSuccess. - void Clear(); - - //! Retrieve the type of error that occurred, as specified in the enumeration. - EStatusCode GetCode() const { return mCode; } - - /** Change the current code of the instance. - * \param rhs New code value. - */ - void SetCode(const EStatusCode rhs); - - /** Change the current code of the instance. - * \param rhs New code value. - * \param pErrorMsg Optional error description string. This string can have formatting characters - * The function will use the vsnprintf function to assemble the final string - * using an internal buffer of 4096 characters. - */ - void SetCode(const EStatusCode rhs, const char* pErrorMsg, ...); - - //! Get the error message string corresponding to the current code. - const char* GetErrorString() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -private: - EStatusCode mCode; - FbxString mErrorString; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS */ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STATUS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstring.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstring.h deleted file mode 100644 index a604e67..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstring.h +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstring.h -#ifndef _FBXSDK_CORE_BASE_STRING_H_ -#define _FBXSDK_CORE_BASE_STRING_H_ - -#include - -#include - -/** Convert string from UTF8 to wide-char -* \param pInUTF8 Input string -* \param pOutWideChar output string -* \param pOutWideCharSize size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxUTF8ToWC(const char* pInUTF8, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - -/** Convert string from wide-char to UTF8 -* \param pInWideChar input string -* \param pOutUTF8 output string -* \param pOutUTF8Size size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxWCToUTF8(const wchar_t* pInWideChar, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - -#if defined(FBXSDK_ENV_WIN) - /** Convert string from wide-char to ANSI - * \param pInWideChar input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxWCToAnsi(const wchar_t* pInWideChar, char*& pOutANSI, size_t* pOutANSISize=NULL); - - /** Convert string from ANSI to wide-char - * \param pInANSI input string - * \param pOutWideChar output string - * \param pOutWideCharSize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToWC(const char* pInANSI, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - - /** Convert string from ANSI to UTF8 - * \param pInANSI input string - * \param outUTF8 output string - * \param pOutUTF8Size size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToUTF8(const char* pInANSI, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - - /** Convert string from UTF8 to ANSI - * \param pInUTF8 input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxUTF8ToAnsi(const char* pInUTF8, char*& pOutANSI, size_t* pOutANSISize=NULL); -#endif - -/** Utility class to manipulate strings. -* \nosubgrouping */ -class FBXSDK_DLL FbxString -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxString(); - - /** Copy constructor. - * \param pString The FbxString to be copied. */ - FbxString(const FbxString& pString); - - /** String constructor. - * \param pString The string used to construct FbxString. */ - FbxString(const char* pString); - - /** Character constructor. - * \param pChar The character used to construct FbxString. - * \param pNbRepeat The number of times to repeat the character. Default value is 1 */ - FbxString(char pChar, size_t pNbRepeat=1); - - /** String constructor with maximum length. - * \param pCharPtr The string used to construct FbxString. - * \param pLength Maximum length. */ - FbxString(const char* pCharPtr, size_t pLength); - - /** Integer constructor. - * \param pValue The int value used to construct FbxString. */ - FbxString(const int pValue); - - /** Float constructor. - * \param pValue The float value used to construct FbxString. */ - FbxString(const float pValue); - - /** Double constructor. - * \param pValue The double value used to construct FbxString. */ - FbxString(const double pValue); - - //! Destructor. - ~FbxString(); - //@} - - /** - * \name Buffer Access and Validation - */ - //@{ - //! Get string length like "C" strlen(). - size_t GetLen() const; - - //! Get string length like "C" strlen(). - size_t Size() const; - - //! Return \c true if string length equal zero. - bool IsEmpty() const; - - //! Discard the content of the string. - FbxString& Clear(); - - /** Access by reference. - * \param pIndex The index. - * \return The reference of the char at pIndex. */ - char& operator[](int pIndex); - - /** Access by copy. - * \param pIndex The index. - * \return The char at pIndex. */ - char operator[](int pIndex) const; - - //! Non-const buffer access. - char* Buffer(); - - //! Const buffer access. - const char* Buffer()const; - //@} - - /** - * \name String Operations - */ - //@{ - /** FbxString assignment operator. - * \param pString The FbxString to be assigned. */ - const FbxString& operator=(const FbxString& pString); - - /** Character assignment operator. - * \param pChar The character to be assigned. */ - const FbxString& operator=(char pChar); - - /** String assignment operator. - * \param pString The string to be assigned. */ - const FbxString& operator=(const char* pString); - - /** Int assignment operator. - * \param pValue The int value to be assigned. */ - const FbxString& operator=(int pValue); - - /** Float assignment operator. - * \param pValue The float value to be assigned. */ - const FbxString& operator=(float pValue); - - /** Double assignment operator. - * \param pValue The double value to be assigned. */ - const FbxString& operator=(double pValue); - - /** FbxString append. - * \param pString The FbxString to be appended. */ - const FbxString& operator+=(const FbxString& pString); - - /** Character append. - * \param pChar The character to be appended. */ - const FbxString& operator+=(char pChar); - - /** String append. - * \param pString The string to be appended. */ - const FbxString& operator+=(const char* pString); - - /** Integer append. - * \param pValue The int value to be appended. */ - const FbxString& operator+=(int pValue); - - /** Float append. - * \param pValue The float value to be appended. */ - const FbxString& operator+=(float pValue); - - /** Double append. - * \param pValue The double value to be appended. */ - const FbxString& operator+=(double pValue); - - /** Equality operator. - * \param pString The FbxString to be compared. */ - bool operator== (const FbxString& pString) const; - - /** Inequality operator. - * \param pString The FbxString to be compared. */ - bool operator!= (const FbxString& pString) const; - - /** Inferior to operator. - * \param pString The FbxString to be compared. */ - bool operator< (const FbxString& pString) const; - - /** Inferior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator<= (const FbxString& pString) const; - - /** Superior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator>= (const FbxString& pString) const; - - /** Superior to operator. - * \param pString The FbxString to be compared. */ - bool operator> (const FbxString& pString) const; - - /** Equality operator. - * \param pString The string to be compared. */ - bool operator== (const char* pString) const; - - /** Inequality operator. - * \param pString The string to be compared. */ - bool operator!= (const char* pString) const; - - /** Inferior to operator. - * \param pString The string to be compared. */ - bool operator< (const char* pString) const; - - /** Inferior or equal to operator. - * \param pString The string to be compared. */ - bool operator<= (const char* pString) const; - - /** Superior or equal to operator. - * \param pString The string to be compared. */ - bool operator>= (const char* pString) const; - - /** Superior to operator. - * \param pString The string to be compared. */ - bool operator> (const char* pString) const; - - /** FbxString concatenation. - * \param pString1 FbxString 1 to be concatenated to FbxString 2. - * \param pString2 FbxString 2 to be concatenated to FbxString 1 */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - - /** Character concatenation. - * \param pString FbxString to be concatenated to Character. - * \param pChar Character to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - - /** Character concatenation. - * \param pChar Character to be concatenated to FbxString - * \param pString FbxString to be concatenated to Character. */ - friend FBXSDK_DLL FbxString operator+(char pChar, const FbxString& pString); - - /** String concatenation. - * \param pString1 FbxString to be concatenated to String. - * \param pString2 String to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - - /** String concatenation. - * \param pString1 String to be concatenated to FbxString - * \param pString2 FbxString to be concatenated to String. */ - friend FBXSDK_DLL FbxString operator+(const char* pString1, const FbxString& pString2); - - /** Integer concatenation. - * \param pString FbxString to be concatenated to Integer. - * \param pValue Integer to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - - /** Integer concatenation. - * \param pValue Integer to be concatenated to FbxString - * \param pString FbxString to be concatenated to Integer. */ - friend FBXSDK_DLL FbxString operator+(int pValue, const FbxString& pString); - - /** Float concatenation. - * \param pString FbxString to be concatenated to Float. - * \param pValue Float to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - - /** Float concatenation. - * \param pValue Float to be concatenated to FbxString - * \param pString FbxString to be concatenated to Float. */ - friend FBXSDK_DLL FbxString operator+( float pValue, const FbxString& pString); - - /** Double concatenation. - * \param pString FbxString to be concatenated to Double. - * \param pValue Double to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - - //! Cast operator. - operator const char*() const; - - /** String assignment function with maximum length. - * \param pString The string to be assigned. - * \param pLength The maximum length of string to be assigned. */ - const FbxString& Copy(const char* pString, size_t pLength); - - /** Append as "C" strncat(). - * \param pString The string to be appended. - * \param pLength The length of chars to be appended. */ - const FbxString& Append(const char* pString, size_t pLength); - - /** Compare as "C" strcmp(). - * \param pString The string to be compared. */ - int Compare(const char* pString) const; - - /** Compare as "C" stricmp(). - * \param pString The string to be compared. */ - int CompareNoCase(const char* pString) const; - - /** Swap the contents of two strings. - * \param pString The FbxString to be swapped. */ - void Swap(FbxString& pString); - - //! Uppercase conversion. - FbxString Upper() const; - - //! Lowercase conversion. - FbxString Lower() const; - //@} - - /** - * \name Substring Extraction - */ - //@{ - /** Extract middle string for a given length. - * \param pFirst The start index of FbxString to be extracted. - * \param pCount The length of sub-string to be extracted. */ - FbxString Mid(size_t pFirst, size_t pCount) const; - - /** Extract middle string up to the end. - * \param pFirst The start index of FbxString to be extracted. */ - FbxString Mid(size_t pFirst) const; - - /** Extract left string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Left(size_t pCount) const; - - /** Extract right string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Right(size_t pCount) const; - //@} - - /** - * \name Padding - */ - //@{ - /** \enum EPaddingType Padding types. - * - \e eRight - * - \e eLeft - * - \e eBoth */ - enum EPaddingType {eRight, eLeft, eBoth}; - - /** Add padding characters. - * \param pPadding The padding type. - * \param pLen The length limit of FbxString after padding. - * \param pCar The character to be padded. */ - FbxString Pad(EPaddingType pPadding, size_t pLen, char pCar=' ') const; - - /** Remove padding characters. - * \param pPadding The padding type. - * \param pCar The character to be padded. - * \remark If pCar == '\0' the function will remove all the characters that are tested by isspace(). */ - FbxString UnPad(EPaddingType pPadding, char pCar='\0') const; - //@} - - /** - * \name Search - */ - //@{ - /** Look for a single character match, like "C" strchr(). - * \param pChar The character to look for. - * \param pStartPosition Start position to look for. - * \return Index or -1 if not found. */ - int Find(char pChar, size_t pStartPosition=0) const; - - /** Look for a substring match, like "C" strstr(). - * \param pStrSub The substring to look for. - * \param pStartPosition Start position to look for. - * \return Starting index or -1 if not found. */ - int Find(const char* pStrSub, size_t pStartPosition=0) const; - - /** Look for the last occurrence of character in string, like "C" strrchr(). - * \param pChar The character to look for. - * \return Index or -1 if not found. */ - int ReverseFind(char pChar) const; - - /** Look for a single character match, like "C" strpbrk(). - * \param pStrCharSet The character set. - * \param pStartPosition The start position. - * \return Index or -1 if not found. */ - int FindOneOf(const char* pStrCharSet, size_t pStartPosition=0) const; - - /** Replace a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \param pStartPosition The start position. - * \return \c true if substring found and replaced. */ - bool FindAndReplace(const char* pFind, const char* pReplaceBy, size_t pStartPosition=0); - - /** Replace all occurrence of a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \return \c true if something got replaced. */ - bool ReplaceAll(const char* pFind, const char* pReplaceBy); - - /** Replace all occurrence of character to find by replacement character. - * \param pFind The character to look for. - * \param pReplaceBy The character to replace by. - * \return \c true if character found and replaced. */ - bool ReplaceAll(char pFind, char pReplaceBy); - //@} - - /** - * \name Token Extraction - */ - //@{ - /** Get number of tokens. - * \param pSpans The span - * \return The number of tokens. */ - int GetTokenCount(const char* pSpans) const; - - /** Get token at given index. - * \param pTokenIndex The token index. - * \param pSpans The span */ - FbxString GetToken(int pTokenIndex, const char* pSpans) const; - //@} - -private: - // Lengths/sizes in characters. - // Note: an extra character is always allocated. - char* mData; // Actual string (zero terminated). - - FbxString(size_t pSrc1Len, const char* pSrc1Data, size_t pSrc2Len, const char* pSrc2Data); // Previously ConcatCopy - void Init(); - - //! Invalidate string. - void Invalidate(); - - void FreeBuffer(); - void FreeBuffer(char *&pOldData); - - bool AllocCopy(FbxString& pDest, size_t pCopyLen, size_t pCopyIndex) const; - bool AllocBuffer(size_t pLen); - bool AllocBuffer(size_t pLen, char*& pOldData); - - bool AssignCopy(size_t pSrcLen, const char* pSrcData); - bool ConcatInPlace(size_t pSrcLen, const char* pSrcData); - - bool IsIn(char pChar, const char* pString) const; - bool InternalFindAndReplace(const char* pFind, const char* pReplaceBy, size_t& pStartPosition); -}; - -FBXSDK_INCOMPATIBLE_WITH_ARRAY(FbxString); - -//! FbxString concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - -//! Character concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - -//! String concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - -//! Integer concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - -//! Float concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - -//! Double concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - -//! Functor to compare FbxString -struct FbxStringCompare { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.Compare(pKeyB); } }; - -//! Functor to compare FbxString without case sensitivity -struct FbxStringCompareNoCase { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.CompareNoCase(pKeyB); } }; - -//! Functor to compare "C" strings -struct FbxCharPtrCompare { inline int operator()(const char* pKeyA, const char* pKeyB) const { return strcmp(pKeyA, pKeyB); } }; - -//! Functor to compare "C" strings without case sensitivity -struct FbxCharPtrCompareNoCase { inline int operator()(const char* pKeyA, const char* pKeyB) const { return FBXSDK_stricmp(pKeyA, pKeyB); } }; - -/** Remove the given char in the given string. -* \param pString The given string. -* \param pToRemove The given char that ought to be removed. -* \remarks Strings used in this function are case-sensitive. */ -inline void FbxRemoveChar(FbxString& pString, char pToRemove) -{ - int lPos = pString.ReverseFind(pToRemove); - while( lPos >= 0 ) - { - pString = pString.Left(lPos) + pString.Mid(lPos + 1); - lPos = pString.ReverseFind(pToRemove); - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstringlist.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstringlist.h deleted file mode 100644 index 8a34cf2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxstringlist.h +++ /dev/null @@ -1,368 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstringlist.h -#ifndef _FBXSDK_CORE_BASE_STRING_LIST_H_ -#define _FBXSDK_CORE_BASE_STRING_LIST_H_ - -#include - -#include -#include - -#include - -//! Wraps a string (FbxString) and a pointer (FbxHandle). -class FbxStringListItem -{ -public: - FbxStringListItem(){ mReference = 0; } - FbxStringListItem(const char* pString, FbxHandle pRef=0){ mString = pString; mReference = pRef; } - - FbxString mString; - FbxHandle mReference; -}; - -inline int FbxCompareStringListSort(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem**)E1)->mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareStringListFindEqual(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareCaseSensitiveStringList(const void *E1,const void *E2) -{ - return strcmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -//! Base class of FbxStringList. -template class FbxStringListT -{ -protected: - FbxArray mList; - -public: - /** - * \name Operation With The Array - */ - //@{ - - /** Append a item at the end of the array. - * \return Index of appended pointer. - */ - int AddItem( Type* pItem ) { return mList.Add( pItem ); } - - /** Insert a item in the array. - * \param pIndex Position where to insert the item. - * \param pItem Item to insert. - * \return Position of the inserted item in the array. - * \remarks If the given index is out of range, the pointer is appended at the end of the array. - */ - int InsertItemAt( int pIndex, Type* pItem ) { return mList.InsertAt( pIndex, pItem ); } - - //! Access item at given index. - Type* GetItemAt( int pIndex ) const { return mList[pIndex]; } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no matching element. - */ - int FindItem( Type* pItem ) const { return mList.Find( pItem ); } - //}@ - -public : - /** - * \name Constructor and Destructor - */ - //@{ - - //! Default constructor. - FbxStringListT() - { - } - - //! Destructor. - virtual ~FbxStringListT() { Clear(); } - //}@ - - //!Remove the item at the end of the array and delete the associated object. - void RemoveLast() { RemoveAt( mList.GetCount()-1 ); } - - /** Get number of items in the array. - * \return The number of items in the array. - */ - inline int GetCount() const { return mList.GetCount(); } - - //! Access the string in the item at given index. - FbxString& operator[](int pIndex) { return mList[pIndex]->mString; } - - //! Access the value of reference in the item at given index. - FbxHandle GetReferenceAt(int pIndex) const { return mList[pIndex]->mReference; } - - //! Set the value of reference at given index. - void SetReferenceAt(int pIndex, FbxHandle pRef) { mList[pIndex]->mReference = pRef; } - - //! Access the pointer of string at given index. - char* GetStringAt(int pIndex) const { if (pIndexmString.Buffer(); else return NULL; } - - //! Set string at given index. - virtual bool SetStringAt(int pIndex, const char* pString) - { - if (pIndexmString = pString; - return true; - } else return false; - } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int Find( Type& pItem ) const - { - for (int Count=0; CountmReference==pReference) { - return Count; - } - } - return -1; - } - - /** Find first matching item in array whose string address is the same as given pointer. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int FindIndex( const char* pString ) const - { - for (int lCount=0; lCountmString==pString) { - return lCount; - } - } - return -1; - } - - /** Access the value of reference of the first matching item in array - * whose string address is the same as given pointer. - * \return The value of reference of the first matching item found or NULL if there is no - * matching element. - */ - FbxHandle FindReference(const char* pString ) const - { - int lIndex = FindIndex( pString ); - if (lIndex!=-1) { - return mList[lIndex]->mReference; - } - return 0; // NULL - } - - //! Remove first matching item. - bool Remove ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item in array whose string address is the same as given pointer. - bool Remove (const char* pString ) - { - int lIndex = FindIndex( pString ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item. - bool RemoveIt ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Sort the array by the string of every item,not case sensitive. - void Sort( ) - { - qsort( &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListSort ); - } - - /** Find first matching item which has the same string as given parameter,not case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindEqual(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListFindEqual ); - } - else - { - return NULL ; - } - } - - /** Find first matching item which has the same string as given parameter, case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindCaseSensitive(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*), FbxCompareCaseSensitiveStringList); - } - else - { - return NULL ; - } - - } - - - //! Add a new item at the end of array. - int Add( const char* pString, FbxHandle pItem=0 ) - { - return InsertAt( mList.GetCount(),pString,pItem ); - } - - virtual int InsertAt( int pIndex, const char* pString, FbxHandle pItem=0 ) - { - return mList.InsertAt( pIndex,FbxNew< Type >( pString,(FbxHandle)pItem )); - } - - /** Remove the item at the given position in the array and delete the associated object. - * \param pIndex Position of the item to remove. - * \remarks If the index is not valid, nothing is performed. Otherwise, - * the item is removed from the array and the items are shifted to fill the - * empty slot. - */ - virtual void RemoveAt(int pIndex) - { - FbxDelete(mList.RemoveAt(pIndex)); - } - - //! Delete the array. - virtual void Clear() - { - FbxArrayDelete(mList); - } - - /** Get the string of all the item. - * \return The text of string, each item's string separated by '~'. - */ - virtual void GetText(FbxString& pText) const - { - int lCount; - for (lCount=0; lCountmString; - if (lCount -{ -public: - /** - * \name Constructors - */ - //@{ - //! Default constructor. - FbxStringList(); - - //! Copy constructor. - FbxStringList( const FbxStringList& pOriginal ); - //@} - - /** - * \name Assignment Operators - */ - //@{ - //! FbxStringList assignment function. - void CopyFrom( const FbxStringList* pOriginal ); - - //! FbxStringList assignment operator. - FbxStringList& operator=(const FbxStringList& pOriginal); - //@} -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_LIST_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtime.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtime.h deleted file mode 100644 index 1deb3bf..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtime.h +++ /dev/null @@ -1,648 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtime.h -#ifndef _FBXSDK_CORE_BASE_TIME_H_ -#define _FBXSDK_CORE_BASE_TIME_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_TIME_INFINITE FbxTime(FBXSDK_TC_INFINITY) -#define FBXSDK_TIME_MINUS_INFINITE FbxTime(FBXSDK_TC_MINFINITY) -#define FBXSDK_TIME_ZERO FbxTime(FBXSDK_TC_ZERO) -#define FBXSDK_TIME_EPSILON FbxTime(FBXSDK_TC_EPSILON) -#define FBXSDK_TIME_ONE_SECOND FbxTime(FBXSDK_TC_SECOND) -#define FBXSDK_TIME_ONE_MINUTE FbxTime(FBXSDK_TC_MINUTE) -#define FBXSDK_TIME_ONE_HOUR FbxTime(FBXSDK_TC_HOUR) -#define FBXSDK_TIME_ASSERT_EPSILON 0.5 -#define FBXSDK_TIME_FORWARD 1 -#define FBXSDK_TIME_BACKWARD -1 - -class FbxTimeModeObject; - -/** Class to encapsulate time units. - * \nosubgrouping - * FbxTime can measure time in hour, minute, second, frame, field, residual and also combination of these units. - * It is recommended to use FbxTime for all time related operations. For example, currently it is used in FbxGlobalSettings, - * FbxGlobalTimeSettings, FbxCache, all curve filters and all animation-related classes, etc. - * FbxTime is just used to represent a moment, to represent a period of time, FbxTimeSpan should be used. - * \see FbxTimeSpan - */ -class FBXSDK_DLL FbxTime -{ -public: - /** Long long constructor. - * \param pTime Initial value defined as a 64bit integer. - */ - FbxTime(const FbxLongLong pTime=0){ mTime = pTime; } - - /** - * \name Time Modes and Protocols - */ - //@{ - /** Time modes. - * \remarks - * EMode \c eNTSCDropFrame is used for broadcasting operations where - * clock time must be (almost) in sync with time code. To bring back color - * NTSC time code with clock time, this mode drops 2 frames per minute - * except for every 10 minutes (00, 10, 20, 30, 40, 50). 108 frames are - * dropped per hour. Over 24 hours the error is 2 frames and 1/4 of a - * frame. A time-code of 01:00:03:18 equals a clock time of 01:00:00:00 - * - * \par - * EMode \c eNTSCFullFrame represents a time address and therefore is NOT - * IN SYNC with clock time. A time code of 01:00:00:00 equals a clock time - * of 01:00:03:18. - * - * - \e eDefaultMode - * - \e eFrames120 120 frames/s - * - \e eFrames100 100 frames/s - * - \e eFrames60 60 frames/s - * - \e eFrames50 50 frames/s - * - \e eFrames48 48 frame/s - * - \e eFrames30 30 frames/s (black and white NTSC) - * - \e eFrames30Drop 30 frames/s (use when display in frame is selected, equivalent to NTSC drop) - * - \e eNTSCDropFrame ~29.97 frames/s drop color NTSC - * - \e eNTSCFullFrame ~29.97 frames/s color NTSC - * - \e ePAL 25 frames/s PAL/SECAM - * - \e eFrames24 24 frames/s Film/Cinema - * - \e eFrames1000 1000 milli/s (use for date time) - * - \e eFilmFullFrame ~23.976 frames/s - * - \e eCustom Custom frame rate value - * - \e eFrames96 96 frames/s - * - \e eFrames72 72 frames/s - * - \e eFrames59dot94 ~59.94 frames/s - * - \e eModesCount Number of time modes - */ - enum EMode - { - eDefaultMode, - eFrames120, - eFrames100, - eFrames60, - eFrames50, - eFrames48, - eFrames30, - eFrames30Drop, - eNTSCDropFrame, - eNTSCFullFrame, - ePAL, - eFrames24, - eFrames1000, - eFilmFullFrame, - eCustom, - eFrames96, - eFrames72, - eFrames59dot94, - eModesCount - }; - - /** Time protocols enumaration - * - \e eSMPTE SMPTE EProtocol - * - \e eFrameCount Frame count - * - \e eDefaultProtocol Default protocol (initialized to eFRAMES) - */ - enum EProtocol {eSMPTE, eFrameCount, eDefaultProtocol}; - - /** Set default time mode. - * \param pTimeMode Time mode identifier. - * \param pFrameRate Custom framerate, only have effect in case of pTimeMode = FbxTime::eCustom - * \remarks It is meaningless to set default time mode to \c eDefaultMode. - */ - static void SetGlobalTimeMode(EMode pTimeMode, double pFrameRate=0.0); - - /** Get default time mode. - * \return Currently set time mode identifier. - * \remarks Default time mode initial value is eFrames30. - */ - static EMode GetGlobalTimeMode(); - - /** Set default time protocol. - * \param pTimeProtocol Time protocol identifier. - * \remarks It is meaningless to set default time protocol to \c eDefaultProtocol. - */ - static void SetGlobalTimeProtocol(EProtocol pTimeProtocol); - - /** Get default time protocol. - * \return Currently set time protocol identifier. - * \remarks Default time protocol initial value is eSMPTE. - */ - static EProtocol GetGlobalTimeProtocol(); - - /** Get frame rate associated with time mode, in frames per second. - * \param pTimeMode Time mode identifier. - * \return Frame rate value. - */ - static double GetFrameRate(EMode pTimeMode); - - /** Get time mode associated with frame rate. - * \param pFrameRate The frame rate value. - * \param pPrecision The tolerance value. - * \return The corresponding time mode identifier or \c eDefaultMode if no time - * mode associated to the given frame rate is found. - */ - static EMode ConvertFrameRateToTimeMode(double pFrameRate, double pPrecision=0.00000001); - //@} - - /** - * \name Time Conversion - */ - //@{ - /** Set time in internal format. - * \param pTime Time value to set. - */ - inline void Set(FbxLongLong pTime){ mTime = pTime; } - - /** Get time in internal format. - * \return Time value. - */ - inline FbxLongLong Get() const { return mTime; } - - /** Set time in milliseconds. - * \param pMilliSeconds Time value to set. - */ - inline void SetMilliSeconds(FbxLongLong pMilliSeconds){ mTime = pMilliSeconds * FBXSDK_TC_MILLISECOND; } - - /** Get time in milliseconds. - * \return Time value. - */ - inline FbxLongLong GetMilliSeconds() const { return mTime / FBXSDK_TC_MILLISECOND; } - - /** Set time in seconds. - * \param pTime Time value to set. - */ - void SetSecondDouble(double pTime); - - /** Get time in seconds. - * \return Time value. - */ - double GetSecondDouble() const; - - /** Set time in hour/minute/second/frame/field format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame and pField are summed together. - * For example, it is possible to set the time to 83 seconds in the following - * ways: SetTime(0,1,23) or SetTime(0,0,83). - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame=0, int pField=0, EMode pTimeMode=eDefaultMode); - - /** Set time in hour/minute/second/frame/field/residual format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pResidual The hundredths of frame value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame, pField and pResidual - * are summed together, just like above. - * pResidual represents hundredths of frame, and won't necessarily - * correspond to an exact internal value. - * - * \remarks The time mode can't have a default value, because - * otherwise SetTime(int, int, int, int, int, int) - * would be ambiguous. Please specify DEFAULT_MODE. - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame, int pField, int pResidual, EMode pTimeMode); - - /** Get time in hour/minute/second/frame/field/residual format. - * \param pHour The returned hours value. - * \param pMinute The returned minutes value. - * \param pSecond The returned seconds value. - * \param pFrame The returned frames values. - * \param pField The returned field value. - * \param pResidual The returned hundredths of frame value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - * \return \c true if the pTimeMode parameter is a valid identifier and thus the extraction - * succeeded. If the function returns \c false, all the values are set to 0. - */ - bool GetTime(int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField, int& pResidual, EMode pTimeMode=eDefaultMode) const; - - /** Snaps a time value to the time value associated with the nearest frame. - * \param pRound If \c true the return value is rounded to the nearest integer. - * \return The snapped time value. - */ - FbxTime GetFramedTime(bool pRound=true) const; - - /** Set time in frame format. - * \param pFrames The number of frames. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFrame(FbxLongLong pFrames, EMode pTimeMode=eDefaultMode); - - /** Set time in frame format, including fractions. - * \param pFrames The number of frames in decimal value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFramePrecise(FbxDouble pFrames, EMode pTimeMode=eDefaultMode); - - /** Get number of hours in time. - * \return Hours value. - */ - int GetHourCount() const; - - /** Get number of minutes in time. - * \return Minutes value. - */ - int GetMinuteCount() const; - - /** Get number of seconds in time. - * \return Seconds value. - */ - int GetSecondCount() const; - - /** Get number of frames in time. - * \param pTimeMode Time mode identifier. - * \return Integer value representing the frame count. - */ - FbxLongLong GetFrameCount(EMode pTimeMode=eDefaultMode) const; - - /** Get precise number of frames in time, including fractions. - * \param pTimeMode Time mode identifier. - * \return Decimal value representing the frame count, including fractions. - */ - FbxDouble GetFrameCountPrecise(EMode pTimeMode=eDefaultMode) const; - - /** Get number of fields in time. - * \param pTimeMode Time mode identifier. - * \return Fields value. - */ - FbxLongLong GetFieldCount(EMode pTimeMode=eDefaultMode) const; - - /** Get residual time exceeding last full field. - * \param pTimeMode Time mode identifier. - * \return Residual value. - */ - int GetResidual(EMode pTimeMode=eDefaultMode) const; - - /** Test for Drop Frame mode - * \param pTimeMode Time mode identifier. - * \return True if the pTimeMode is a Drop Frame mode. - */ - static bool IsDropFrame(EMode pTimeMode=eDefaultMode); - - /** Separator char between second and frame. - * \param pTimeMode Time mode identifier. - * \return ';' is returned if pTimeMode is a DropFrame mode otherwise ':'. - */ - char GetFrameSeparator(EMode pTimeMode=eDefaultMode) const; - - /** Get time in a human readable format. - * \param pTimeString An array large enough to contain a minimum of 19 characters. - * \param pTimeStringSize Size of the pTimeString buffer used with secure functions. - * \param pInfo The amount of information if time protocol is \c eSMPTE: - *

- * \param pTimeMode Requested time mode. - * \param pTimeFormat Requested time protocol. - * \return pTimeString parameter filled with a time value or set to a empty string - * if parameter pInfo is not valid. - */ - char* GetTimeString(char* pTimeString, const FbxUShort& pTimeStringSize, int pInfo=5, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - enum EElement {eHours, eMinutes, eSeconds, eFrames, eField, eResidual}; - - /** Get the time in a human readable format. - * \param pStart The starting element type used to format the time string. - * \param pEnd The last element type used to format the time string. - * \param pTimeMode The time mode requested. - * \param pTimeFormat The time format requested. - * \return The human readable time string. */ - FbxString GetTimeString(EElement pStart=eHours, EElement pEnd=eResidual, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - /** Set time in a human readable format. - * \param pTime An array of a maximum of 18 characters. - * If time protocol is \c eSMPTE, pTimeString must be formatted this way: - * "[hours:]minutes[:seconds[.frames[.fields]]]". Hours, minutes, seconds, - * frames and fields are parsed as integers and brackets indicate optional - * parts. - * If time protocol is \c eFRAME, pTimeString must be formatted this way: - * "frames". Frames is parsed as a 64 bits integer. - * \param pTimeMode Given time mode. - * \param pTimeFormat Given time protocol. - * \return True if the set time string succeed, otherwise return false. - */ - bool SetTimeString(const char* pTime, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol); - //@} - - /** - * \name Time Operators - */ - //@{ - /** Equality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if equal, \c false otherwise. - */ - inline bool operator==(const FbxTime& pTime) const { return mTime == pTime.mTime; } - - /** Inequality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if unequal, \c false otherwise. - */ - inline bool operator!=(const FbxTime& pTime) const { return mTime != pTime.mTime; } - - /** Superior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator>=(const FbxTime& pTime) const { return mTime >= pTime.mTime; } - - /** Inferior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator<=(const FbxTime& pTime) const { return mTime <= pTime.mTime; } - - /** Superior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior to the passed FbxTime, \c false otherwise. - */ - inline bool operator>(const FbxTime& pTime) const { return mTime > pTime.mTime; } - - /** Inferior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior to the passed FbxTime, \c false otherwise. - */ - inline bool operator<(const FbxTime& pTime) const { return mTime < pTime.mTime; } - - /** Assignment operator. - * \param pTime The FbxTime to be assigned. - */ - inline FbxTime& operator=(const FbxTime& pTime) { mTime = pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return This FbxTime after addition. - */ - inline FbxTime& operator+=(const FbxTime& pTime) { mTime += pTime.mTime; return *this; } - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return This FbxTime after subtraction. - */ - inline FbxTime& operator-=(const FbxTime& pTime) { mTime -= pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return A temporary FbxTime after addition. - */ - FbxTime operator+(const FbxTime& pTime) const; - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return A temporary FbxTime after subtraction. - */ - FbxTime operator-(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param Mult Multiply this FbxTime by int Mult. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const int Mult) const; - - /** Division operator. - * \param pTime Divide this FbxTime by pTime. - * \return A temporary FbxTime after division. - */ - FbxTime operator/(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param pTime Multiply this FbxTime by pTime. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const FbxTime& pTime) const; -/* - //! Increment time of one unit of the internal format (prefix form). - inline FbxTime& operator++() { mTime += 1; return (*this); } - - //! Increment time of one unit of the internal format (postfix form). - inline const FbxTime operator++(int) { FbxTime lOld = *this; ++(*this); return lOld; } - - //! Decrement time of one unit of the internal format (prefix form). - inline FbxTime& operator--() { mTime -= 1; return (*this); } - - //! Decrement time of one unit of the internal format (postfix form). - inline const FbxTime operator--(int) { FbxTime lOld = *this; --(*this); return lOld; }*/ - //@} - - /** One frame value for a specified time mode. - * \param pTimeMode Time mode identifier. - * \return the time code of a one frame. - */ - static FbxLongLong GetOneFrameValue(EMode pTimeMode=eDefaultMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Keep compatibility with old fbx format - enum EOldMode - { - eOLD_DEFAULT_MODE, //Default mode set using FbxTime::SetGlobalTimeMode(EMode pTimeMode) - eOLD_CINEMA, //24 frameOLD_s/s - eOLD_PAL, //25 frameOLD_s/s PAL/SECAM - eOLD_FRAMES30, //30 frameOLD_s/s BLACK & WHITE NTSC - eOLD_NTSC_DROP_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES50, //50 frameOLD_s/s - eOLD_FRAMES60, //60 frameOLD_s/s - eOLD_FRAMES100, //100 frameOLD_s/s - eOLD_FRAMES120, //120 frameOLD_s/s - eOLD_NTSC_FULL_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES30_DROP, //30 frameOLD_s/s - eOLD_FRAMES1000 //1000 frameOLD_s/s - }; - -private: - FbxLongLong mTime; //In 1 / 46,186,158,000 Seconds - - static EMode gsGlobalTimeMode; - static EProtocol gsGlobalTimeProtocol; - static FbxTimeModeObject* gsTimeObject; - - void InternalSetTime(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField, EMode pTimeMode); - - friend FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); - friend FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); - friend FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); - friend FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate); - friend FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FbxTime in seconds constructor. - * \param pTime - */ -FBXSDK_DLL inline FbxTime FbxTimeSeconds(const FbxDouble& pTime=0.0) -{ - FbxTime lTime; - lTime.SetSecondDouble(pTime); - return lTime; -} - -/** Class to encapsulate time intervals. - * \nosubgrouping - * \see FbxTime - */ -class FBXSDK_DLL FbxTimeSpan -{ -public: - //! Constructor. - FbxTimeSpan() {} - - /** Constructor. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - FbxTimeSpan(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start and stop time. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - inline void Set(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start time. - * \param pStart Beginning of the time interval. - */ - inline void SetStart(FbxTime pStart){ mStart = pStart; } - - /** Set stop time. - * \param pStop Ending of the time interval. - */ - inline void SetStop(FbxTime pStop){ mStop = pStop; } - - /** Get start time. - * \return Beginning of time interval. - */ - inline FbxTime GetStart() const { return mStart; } - - /** Get stop time. - * \return Ending of time interval. - */ - inline FbxTime GetStop() const { return mStop; } - - /** Get time interval in absolute value. - * \return Time interval. - */ - inline FbxTime GetDuration() const { if( mStop > mStart ) return mStop - mStart; else return mStart - mStop; } - - /** Get time interval. - * \return Signed time interval. - */ - inline FbxTime GetSignedDuration() const { return mStop - mStart; } - - /** Get direction of the time interval. - * \return \c FBXSDK_TIME_FORWARD if time interval is forward, \c FBXSDK_TIME_BACKWARD if backward. - */ - inline int GetDirection() const { if( mStop >= mStart ) return FBXSDK_TIME_FORWARD; else return FBXSDK_TIME_BACKWARD; } - - /** Return \c true if the time is inside the timespan. - * \param pTime Judge whether pTime is inside the timespan. - * \return \c True if is, \c false otherwise. - */ - bool IsInside(FbxTime pTime) const; - - /** Return the intersection of the two time spans. - * \param pTime - * \return The intersection of pTime and this FbxTimeSpan. - */ - FbxTimeSpan Intersect(const FbxTimeSpan& pTime) const; - - /** Inequality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxTimeSpan& pTime) const; - - /** Equality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxTimeSpan& pTime) const; - - /** Unite with another FbxTimeSpan - * \param pSpan The FbxTimeSpan - * \param pDirection FBXSDK_TIME_FORWARD or FBXSDK_TIME_BACKWARD - * \remarks This function assumes both of the FbxTimeSpan objects are in the same direction. - * Use FBXSDK_TIME_FORWARD when start < stop in both timespan - * Use FBXSDK_TIME_BACKWARD when start > stop in both timespan - */ - void UnionAssignment(const FbxTimeSpan& pSpan, int pDirection=FBXSDK_TIME_FORWARD); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mStart; - FbxTime mStop; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxLocalTime -{ -public: - FbxLocalTime(); - - int mYear; - int mMonth; - int mDay; - int mHour; - int mMinute; - int mSecond; - int mMillisecond; -}; - -FBXSDK_DLL void FbxGetCurrentLocalTime(FbxLocalTime& pLocalTime); - -FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); -FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); -FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); -FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate=0.0); -FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); - -// Use those functions to keep the compatibility with old time mode since we added new time mode. -FBXSDK_DLL FbxTime::EOldMode FbxGetOldTimeModeCorrespondance(FbxTime::EMode pMode); -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromOldValue(FbxTime::EOldMode pOldMode); - -// We now store the framerate instead of the time mode. -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromFrameRate(char* pFrameRate); -FBXSDK_DLL void FbxGetControlStringList(char* pControlString, FbxTime::EProtocol pTimeFormat); -FBXSDK_DLL const char* FbxGetGlobalFrameRateString(FbxTime::EMode pTimeMode); -FBXSDK_DLL const char* FbxGetGlobalTimeModeString(FbxTime::EMode pTimeMode); -FBXSDK_DLL double FbxGetFrameRate(FbxTime::EMode pTimeMode); - -// Time format -FBXSDK_DLL FbxTime::EProtocol FbxSelectionToTimeFormat(int pSelection); -FBXSDK_DLL FbxTime::EMode FbxSelectionToTimeMode(int pSelection); -FBXSDK_DLL int FbxTimeToSelection(FbxTime::EMode pTimeMode=FbxTime::eDefaultMode, int pTimeFormat=FbxTime::eDefaultProtocol); -FBXSDK_DLL const char* FbxGetTimeModeName(FbxTime::EMode pTimeMode); -FBXSDK_DLL int FbxGetFrameRateStringListIndex(FbxTime::EMode pTimeMode); -FBXSDK_DLL bool FbxIsValidCustomFrameRate(double pFramerate); -FBXSDK_DLL bool FbxGetNearestCustomFrameRate(double pFramerate, double& pNearestRate); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIME_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtimecode.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtimecode.h deleted file mode 100644 index 4861b91..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxtimecode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtimecode.h -#ifndef _FBXSDK_CORE_BASE_TIMECODE_H_ -#define _FBXSDK_CORE_BASE_TIMECODE_H_ - -#include - -#include - -#define FBXSDK_TC_ZERO FBXSDK_LONGLONG(0) -#define FBXSDK_TC_EPSILON FBXSDK_LONGLONG(1) -#define FBXSDK_TC_MINFINITY FBXSDK_LONGLONG(-0x7fffffffffffffff) -#define FBXSDK_TC_INFINITY FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_TC_FIX_DEN FBXSDK_LONGLONG(100000000) - -#define FBXSDK_TC_MILLISECOND FBXSDK_LONGLONG(46186158) -#define FBXSDK_TC_SECOND FbxLongLong(FBXSDK_TC_MILLISECOND*1000) -#define FBXSDK_TC_MINUTE FbxLongLong(FBXSDK_TC_SECOND*60) -#define FBXSDK_TC_HOUR FbxLongLong(FBXSDK_TC_MINUTE*60) -#define FBXSDK_TC_DAY FbxLongLong(FBXSDK_TC_HOUR*24) - -// Frame @ 30 Hz -#define FBXSDK_TC_NTSC_FIELD FbxLongLong(FBXSDK_TC_SECOND/30/2) -#define FBXSDK_TC_NTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30) - -// Frame @ 29.9700299700 Hz -#define FBXSDK_TC_MNTSC_FIELD FbxLongLong(FBXSDK_TC_MNTSC_FRAME/2) -#define FBXSDK_TC_MNTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30*1001/1000) -#define FBXSDK_TC_MNTSC_2_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*2) -#define FBXSDK_TC_MNTSC_30_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) -#define FBXSDK_TC_MNTSC_1798_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1798) // leap minute -#define FBXSDK_TC_MNTSC_1800_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1800) // ~1 minute -#define FBXSDK_TC_MNTSC_17982_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*17982) // ~10 minutes -#define FBXSDK_TC_MNTSC_107892_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*107892) // ~1 hour -#define FBXSDK_TC_MNTSC_108000_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*108000) - -// For 29.9700299700 non-drop, btw : same values as with 23.976 -#define FBXSDK_TC_MNTSC_1_SECOND FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) // 1 frame * 30 -#define FBXSDK_TC_MNTSC_1_MINUTE FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*60) // 1 minute (1800 frames) -#define FBXSDK_TC_MNTSC_1_HOUR FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MNTSC_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*30/1001) -#define FBXSDK_TC_MNTSC_DEN FBXSDK_TC_FIX_DEN - -// Frame @ 25 Hz -#define FBXSDK_TC_PAL_FIELD FbxLongLong(FBXSDK_TC_SECOND/25/2) -#define FBXSDK_TC_PAL_FRAME FbxLongLong(FBXSDK_TC_SECOND/25) - -// Frame @ 24 Hz -#define FBXSDK_TC_FILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24) - -// Frame @ 23.9760239760 Hz -#define FBXSDK_TC_MFILM_FIELD FbxLongLong(FBXSDK_TC_MFILM_FRAME/2) -#define FBXSDK_TC_MFILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24*1001/1000) -#define FBXSDK_TC_MFILM_1_SECOND FbxLongLong(FBXSDK_TC_MFILM_FRAME*24) // 1 frame * 24 -#define FBXSDK_TC_MFILM_1_MINUTE FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*60) // 1 minute (1440 frames) -#define FBXSDK_TC_MFILM_1_HOUR FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MFILM_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*24/1001) -#define FBXSDK_TC_MFILM_DEN FBXSDK_TC_FIX_DEN - -////////////////////////////////////////////////////////////////////////////////////////// - -#define FBXSDK_TC_REM(quot, num, den) ((quot) = (num) / (den), (quot) * (den)) -#define FBXSDK_TC_HOUR_REM(quot, num, den) ((quot) = ((num - (-FbxLongLong(num < 0) & (den - 1))) / (den)), (quot) * (den)) - -FBXSDK_DLL FbxLongLong FbxTCSeconds(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCMinutes(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCHours(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCSetRate(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCGetRate(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCSetNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSCnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSCnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC_2Xnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC_2Xnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetPAL(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetPAL(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetFILM(int pHour, int pMinute, int pSecond, FbxLongLong pFrame); -FBXSDK_DLL FbxLongLong FbxTCGetFILM(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame); -FBXSDK_DLL FbxLongLong FbxTCSetFILMND(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetFILMND(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIMECODE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxutils.h b/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxutils.h deleted file mode 100644 index eb17d28..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/base/fbxutils.h +++ /dev/null @@ -1,172 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxutils.h -#ifndef _FBXSDK_CORE_BASE_UTILITIES_H_ -#define _FBXSDK_CORE_BASE_UTILITIES_H_ - -#include - -#include -#include - -#include - -#ifndef FBXSDK_ENV_WINSTORE - /** Retrieve the environment variable value. - * \return A new string containing the environment variable value. */ - FBXSDK_DLL FbxString FbxGetEnv(const char* pEnvVar); - - /** Get the application directory - * \return The application directory. */ - FBXSDK_DLL FbxString FbxGetApplicationDirectory(); -#endif - -/** Retrieve the system temporary folder path name. -* \return A new string containing the system temporary folder path name. */ -FBXSDK_DLL FbxString FbxGetSystemTempPath(); - -/** Override the system temporary folder path name. - * \param pPathUTF8 The system temporary folder to use for override. - * \return True if the system temporary folder path has been set and False otherwise. - * \remark The system temporary folder is limited to _MAX_PATH characters. Trying to set - * a longer value will fail and the current system temporary folder path is left unchanged. - */ -FBXSDK_DLL bool FbxSetSystemTempPath(const char* pPathUTF8); - -/** Retrieve the working directory of the system in UTF8 format. -* \return A string that contain the current working directory of the system. */ -FBXSDK_DLL FbxString FbxGetCurrentWorkPath(); - -/** Change the working directory of the system. */ -FBXSDK_DLL void FbxSetCurrentWorkPath(const char* pPath_UTF8); - -class FBXSDK_DLL FbxPathUtils -{ -public: - /** Bind together a root path with a file path. - * \param pRootPath The root path that will get binded to the file path. - * \param pFilePath The file path to bind to the root path. - * \param pCleanPath If true, the resulting path will be cleaned via FbxPathUtils::Clean(). - * \return Both paths binded together forming a new file path. - * \remark If the file path is already a full valid path, pFilePath is returned. - */ - static FbxString Bind(const char* pRootPath, const char* pFilePath, bool pCleanPath=true); - - /** Extract the folder name from the given file path. - * \param pFilePath The given file path. - * \return The folder name. If there isn't any '\\' or '/' in the given file path, it will return pFilePath. - */ - static FbxString GetFolderName(const char* pFilePath); - - /** Extract file name from the given file path. - * \param pFilePath The given file path. - * \param pWithExtension Decide the file name with extension or without extension. - * If it is true, return the file name with extension; - * if it is false, return the file name without extension. - */ - static FbxString GetFileName(const char* pFilePath, bool pWithExtension=true); - - /** Extract the file extension in the given file path. - * \param pFilePath The file path to extract the extension. - * \return The file extension without the '.' character. - * \remark Return empty string if the file path doesn't contain a valid extension. - */ - static FbxString GetExtensionName(const char* pFilePath); - - /** Change or append a file extension to the specified file path. - * \param pFilePath The file path to change the file extension - * \param pExtension The extension to change or append to the file path. - * \return The file path with the file extension changed/added. - * \remark If the file path doesn't end with a valid file name, pFilePath is returned. - */ - static FbxString ChangeExtension(const char* pFilePath, const char* pExtension); - - //! Test if the given path is relative path, if it is return true. - static bool IsRelative(const char* pPath); - - /** Get the given new path's relative path to the given root path. - * \param pRootPath The given root path - * \param pNewPath The given new path. If it is only file name, the default directory is work directory. - * \return The relative path. - * \remarks If the given two paths have the same drive, the function will turn '\\' in the relative path to '/'. - */ - static FbxString GetRelativePath(const char* pRootPath, const char* pNewPath); - - //! Get the given new path's relative path to the given root path. - static FbxString GetRelativeFilePath(const char* pRootPath, const char* pNewFilePath); - - /** Get the full path of given path (if the given path is relative path, - * it will take current directory as default root path.) - */ - static FbxString Resolve(const char* pRelPath); - - //! Clean the redundant and useless denotations in given path name. - static FbxString Clean(const char* pPath); - - /** Generate full safe file path name you can use to create new file. - * \param pFolder The folder where the file name should be attempted to be created. - * \param pPrefix The prefix of generated file name. - * \return A valid file path that can safely be used to create a new file. - */ - static FbxString GenerateFileName(const char* pFolder, const char* pPrefix); - - /** Verify if the specified folder path exist. - * \param pFolderPathUTF8 The folder path to test its existance. - * \return True if the folder path exist, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Exist(const char* pFolderPathUTF8); - - /** Create the specified folder path if it doesn't exist. - * \param pFolderPathUTF8 The folder path to create, in UTF8 encoding. - * \return True if folder path already exist, or if it was successfully created, false otherwise. - * \remark This function will create multiple folders if needed, and it also work for relative paths. */ - static bool Create(const char* pFolderPathUTF8); - - /** Delete the specified folder path and all its content recursively. - * \param pFolderPathUTF8 The folder path to delete, in UTF8 encoding. - * \return True if folder path was successfully deleted, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Delete(const char* pFolderPathUTF8); - -#ifndef FBXSDK_ENV_WINSTORE - /** Verify if the folder contains items or not. - * \param pFolderPath_UTF8 The folder path to test if it contains items. - * \return True if the folder contain any kind of entry type. */ - static bool IsEmpty(const char* pFolderPath_UTF8); -#endif -}; - -/** Global accessor to an FbxStatus object. -* This object is not used internally by the FBX SDK. It is provided for convenience and its usage is shown in the custom reader/writers samples. */ -class FBXSDK_DLL FbxStatusGlobal -{ -public: - static FbxStatus& GetRef() - { - if( !mStatusPtr ) - { - mStatusPtr = FbxNew(); - } - return *mStatusPtr; - } - -private: - FbxStatusGlobal(){ mStatusPtr = NULL; } - ~FbxStatusGlobal(){ FbxDelete(mStatusPtr); } - static FbxStatusGlobal sgFbxStatusGlobal; - static FbxStatus* mStatusPtr; -}; - - -#include - -#endif /* _FBXSDK_CORE_BASE_UTILITIES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxclassid.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxclassid.h deleted file mode 100644 index a98eed1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxclassid.h +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclassid.h -#ifndef _FBXSDK_CORE_CLASSID_H_ -#define _FBXSDK_CORE_CLASSID_H_ - -#include - -#include - -class FbxClassIdInfo; -class FbxObject; -class FbxPropertyHandle; -class FbxManager; - -//! The function pointer type for object constructor functions. -typedef FbxObject* (*FbxObjectCreateProc)(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - -/** Internal class used to differentiate objects during run-time. Essentially, each class has an unique ClassId, that the -* system can request in order to test if the class match the description. This class implement the necessary tools to be able -* to perform hierarchic class testing. This means that a class B that inherits from the class A will answer yes to a "Is A" -* query of type A or B, but will answer no to a class C that can still inherit from A. All class must inherit from FbxObject -* before they can have their own ClassId. When using the standard macros to create new types of objects in the FBX SDK, a -* static ClassId will automatically be generated for that new class. -* -* When objects are exported to an FBX file, their class type is maintained using 3 sort of strings. They are the Object Type -* string, the Object Sub Type string and the Object Type Prefix. There is no good or bad way to choose the value of these -* identifiers, but it is preferable to use meaningful values to keep the ASCII version of FBX readable and easy to understand. -* \see FbxObject */ -class FBXSDK_DLL FbxClassId -{ -public: - //! Constructor. - FbxClassId(); - - /** Advanced constructor were we can specify the general parameters for this ClassId. - * \param pClassName The name of the class represented. - * \param pParentClassId The parent ClassId of this class. - * \param pConstructor A function pointer to a construction method for this ClassId. - * \param pFBXType The FBX file Object Type string associated to this class. - * \param pFBXSubType The FBX file Object Sub Type string associated to this class. */ - FbxClassId(const char* pClassName, const FbxClassId& pParentClassId, FbxObjectCreateProc pConstructor=0, const char* pFBXType=NULL, const char* pFBXSubType=NULL); - - //! Destructor. - void Destroy(); - - /** Retrieve the class name. - * \return The class identification string name. */ - const char* GetName() const; - - /** Retrieve the parent ClassId. - * \return The parent ClassId. */ - FbxClassId GetParent() const; - - /** Create an instance of this class. - * \param pManager The FBX SDK Manager to be used to instantiate this object. This allow the object to use the same memory manager as the provided manager. - * \param pName The name to assign to this new object instance. - * \param pFrom An object to clone if it matches the same ClassId. This is an optional parameter. - * \return The newly created instance of this class. */ - FbxObject* Create(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - - /** Override the function pointer method to construct this object. - * \param pConstructor A newly defined function pointer to a construction method to replace the existing one. - * \return True if the operation was successful. */ - bool Override(FbxObjectCreateProc pConstructor); - - /** Test if this class is a hierarchical children of the specified class type. This is the standard method to differentiate object classes. - * \param pId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool Is(const FbxClassId& pId) const; - - /** Equivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is exactly the same, \c false otherwise. - * \remark This function only perform direct equality test, and doesn't test hierarchic children. */ - bool operator==(const FbxClassId& pClassId) const; - - /** Inequivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is not the same, \c false otherwise. - * \remark This function only perform direct inequality test, and doesn't test hierarchic children. */ - bool operator!=(const FbxClassId& pClassId) const; - - /** Retrieve the FBX file Object Type string associated to this class. - * \param pAskParent If \c true, retrieve the parent ClassId, but only if self ClassId is not valid. - * \return The FBX file Object Type string associated to this class. */ - const char* GetFbxFileTypeName(bool pAskParent=false) const; - - /** Retrieve the FBX file Object Sub Type string associated to this class. - * \return The FBX file Object Sub Type string associated to this class. */ - const char* GetFbxFileSubTypeName() const; - - /** Find out if self ClassId is valid or not. - * \return \c true if self ClassId is valid, \c false otherwise. */ - inline bool IsValid() const { return mClassInfo ? true : false; } - - /** Set the Object Type Prefix string associated to this class. This will change the "ObjectTypePrefix::" found in front - * of object name in the FBX file. This is useful to differentiate objects by their name without using the Object Type or - * Sub Type strings in the file. - * \param pObjectTypePrefix The Object Type prefix string. */ - void SetObjectTypePrefix(const char* pObjectTypePrefix); - - /** Retrieve the Object Type Prefix string associated to this class. - * \return The Object Type Prefix string. */ - const char* GetObjectTypePrefix(); - - /** Retrieve the root property handle of this class. This is useful to access the default property hierarchy for this - * class. This allow users to retrieve information such as the default value for all properties of this class. - * \return The root property handle for this class. */ - FbxPropertyHandle* GetRootClassDefaultPropertyHandle(); - - /** Increase the instance reference count for this class type. - * \return the new count of reference to this class after increment. */ - int ClassInstanceIncRef(); - - /** Decrease the instance reference count for this class type. - * \return the new count of reference to this class after decrement. */ - int ClassInstanceDecRef(); - - /** Retrieve the instance reference count for this class type. - * \return The reference count of this class type. */ - int GetInstanceRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxClassIdInfo* GetClassIdInfo() { return mClassInfo; } - inline const FbxClassIdInfo* GetClassIdInfo() const { return mClassInfo; } - -private: - FbxClassId(FbxClassIdInfo* mClassInfo); - - bool SetFbxFileTypeName(const char* pName); - bool SetFbxFileSubTypeName(const char* pName); - - FbxClassIdInfo* mClassInfo; - - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxClassId -struct FbxClassIdCompare -{ - inline int operator()(const FbxClassId& pKeyA, const FbxClassId& pKeyB) const - { - const FbxClassIdInfo* lKeyA = pKeyA.GetClassIdInfo(); - const FbxClassIdInfo* lKeyB = pKeyB.GetClassIdInfo(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -#include - -#endif /* _FBXSDK_CORE_CLASSID_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxconnectionpoint.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxconnectionpoint.h deleted file mode 100644 index 21057b6..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxconnectionpoint.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconnectionpoint.h -#ifndef _FBXSDK_CORE_CONNECTION_POINT_H_ -#define _FBXSDK_CORE_CONNECTION_POINT_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxConnection -{ -public: - enum EType - { - eNone = 0, - // System or user - eSystem = 1 << 0, - eUser = 1 << 1, - eSystemOrUser = eUser | eSystem, - // Type of Link - eReference = 1 << 2, - eContains = 1 << 3, - eData = 1 << 4, - eLinkType = eReference | eContains | eData, - eDefault = eUser | eReference, - eUnidirectional = 1 << 7 - }; -}; - -class FbxConnectionPointFilter; - -class FBXSDK_DLL FbxConnectionPoint -{ -public: - enum EDirection - { - eDirSrc = 1 << 0, // Contains sources - eDirDst = 1 << 1, // Contains destinations - eDirUni = 1 << 2, // Connection is not 2 ways - eDirBoth = eDirSrc | eDirDst, - eDirMask = eDirSrc | eDirDst | eDirUni - }; - - enum EType - { - eStandard = 0, - eSubConnection = 1 << 3, // Connect is a sub Connect of another - eTypeMask = eSubConnection - }; - - enum EAttribute - { - eDefault = 0, - eCache = 1 << 4, - eAttributeMask = eCache - }; - - enum EAllocFlag - { - eNotAllocated = 0, - eAllocated = 1 << 5, - eAllocFlagMask = eAllocated - }; - - enum ECleanedFlag - { - eNotCleaned = 0, - eCleaned = 1 << 6, - eCleanedFlagMask = eCleaned - }; - - enum EEvent - { - eSrcConnectRequest, - eDstConnectRequest, - eSrcConnect, - eDstConnect, - eSrcConnected, - eDstConnected, - eSrcDisconnect, - eDstDisconnect, - eSrcDisconnected, - eDstDisconnected, - eSrcReplaceBegin, - eSrcReplaceEnd, - eDstReplaceBegin, - eDstReplaceEnd, - eSrcReorder, - eSrcReordered - }; - - // Constructor/Destructor - FbxConnectionPoint(void* pData=0); - virtual ~FbxConnectionPoint(); - - void SetFilter(FbxConnectionPointFilter* pConnectFilter, EType pType=eStandard); - void InternalClear(); - - //! Clear the ConnectList without any regards to what is connected - void WipeConnectionList(); - void Destroy(); - void SubConnectRemoveAll(); - - inline FbxConnectionPoint* GetSubOwnerConnect(){ return GetConnectType() == eSubConnection ? mOwner : NULL; } - inline FbxConnectionPointFilter* GetFilter(){ return mFilter; } - - virtual bool IsInReplace(FbxConnectionPoint* p1, FbxConnectionPoint* p2); - - inline void SetConnectType(EType pType){ mFlags = (mFlags & ~eTypeMask) | pType; } - inline EType GetConnectType(){ return EType(mFlags & eTypeMask); } - inline void SetDirection(int pDirections){ mFlags = (mFlags & ~eDirMask) | pDirections; } - inline EDirection GetDirection(){ return EDirection(mFlags & eDirMask); } - inline void SetAttribute(int pAttributes){ mFlags = (mFlags & ~eAttributeMask) | pAttributes; } - inline EAttribute GetAttribute(){ return EAttribute(mFlags & eAttributeMask); } - inline void SetAllocatedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eAllocated : mFlags & ~eAllocFlagMask; } - inline bool GetAllocatedFlag(){ return ( mFlags & eAllocFlagMask ) ? true : false; } - inline void SetCleanedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eCleaned : mFlags & ~eCleanedFlagMask; } - inline bool GetCleanedFlag(){ return ( mFlags & eCleanedFlagMask ) ? true : false; } - - bool IsValidSrc(FbxConnectionPoint* pConnect); - bool IsValidDst(FbxConnectionPoint* pConnect); - bool IsValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool IsValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool RequestValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - bool RequestValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - - bool ConnectSrc(FbxConnectionPoint* pSrc,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDst(FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectSrcAt(int pDst_SrcIndex, FbxConnectionPoint* pSrc, FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDstAt(int pSrc_DstIndex, FbxConnectionPoint* pDst, FbxConnection::EType pConnectionType=FbxConnection::eNone); - static bool ConnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType); - static bool ConnectAt(FbxConnectionPoint* pSrc, int pSrc_DstIndex, FbxConnectionPoint* pDst, int pDst_SrcIndex, FbxConnection::EType pConnectionType); - - bool DisconnectDst(FbxConnectionPoint* pSrc); - bool DisconnectSrc(FbxConnectionPoint* pSrc); - void DisconnectAllSrc(); - void DisconnectAllDst(); - static bool DisconnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst); - bool DisconnectDstAt(int pIndex); - bool DisconnectSrcAt(int pIndex); - - bool ReplaceInDst(FbxConnectionPoint* pDstOld, FbxConnectionPoint* pDstNew, int pIndexInNew); - bool ReplaceInSrc(FbxConnectionPoint* pSrcOld, FbxConnectionPoint* pSrcNew, int pIndexInNew); - bool ReplaceDstAt(int pIndex, FbxConnectionPoint* pDst); - bool ReplaceSrcAt(int pIndex, FbxConnectionPoint* pSrc); - bool SwapSrc(int pIndexA, int pIndexB); - - /** Change the position of a source Connect. - * \param pIndex Position of the Connect to move. - * \param pAtIndex Position where to move the Connect. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at position pAtIndex. - */ - bool MoveSrcAt(int pIndex, int pAtIndex); - - /** Change the position of a source Connect. - * \param pSrc Connect to move. - * \param pAtSrc Connect at which position to move. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at the position where pAtSrc was before the move. - */ - bool MoveSrcAt(FbxConnectionPoint* pSrc, FbxConnectionPoint* pAtSrc); - - // Access services - bool IsConnectedSrc(FbxConnectionPoint*); - bool IsConnectedDst(FbxConnectionPoint*); - inline bool IsConnected(FbxConnectionPoint* pConnect) { return IsConnectedSrc(pConnect) || IsConnectedDst(pConnect); } - - inline int GetSrcCount() const { return mConnectionList.GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex) const { return mConnectionList.GetSrc(pIndex);} - inline FbxConnection::EType GetSrcType(int pIndex) const { return mConnectionList.GetSrcType(pIndex);} - inline int GetDstCount() const { return mConnectionList.GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex) const { return mConnectionList.GetDst(pIndex);} - inline FbxConnection::EType GetDstType(int pIndex) const { return mConnectionList.GetDstType(pIndex);} - - inline int FindSrc(FbxConnectionPoint* pConnect){ return mConnectionList.FindSrc(pConnect); } - inline int FindDst(FbxConnectionPoint* pConnect){ return mConnectionList.FindDst(pConnect); } - - // Filtered versions - inline int GetSrcCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcCount() : GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrc(pIndex) : GetSrc(pIndex); } - inline FbxConnection::EType GetSrcType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcType(pIndex) : GetSrcType(pIndex); } - inline int GetDstCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstCount() : GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDst(pIndex): GetDst(pIndex); } - inline FbxConnection::EType GetDstType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstType(pIndex) : GetDstType(pIndex); } - - void* GetData(){ return mData; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class ConnectionList - { - public: - ConnectionList(); - ~ConnectionList(); - - void Clear(); - - void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddSrc(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveSrcAt(int pIndex); - int FindSrc(FbxConnectionPoint* pConnect) const; - int GetSrcCount() const; - FbxConnectionPoint* GetSrc(int pIndex) const; - FbxConnection::EType GetSrcType(int pIndex) const; - - void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddDst(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveDstAt(int pIndex); - int FindDst(FbxConnectionPoint* pConnect) const; - int GetDstCount() const; - FbxConnectionPoint* GetDst(int pIndex) const; - FbxConnection::EType GetDstType(int pIndex) const; - - protected: - struct Connection { - Connection(FbxConnectionPoint* pPoint, FbxConnection::EType pType) : mPoint(pPoint), mType(pType){} - FbxConnectionPoint* mPoint; FbxConnection::EType mType; - }; - FbxArray mSrcList; - FbxArray mDstList; - }; - - void SubConnectAdd(FbxConnectionPoint* pConnect); - void SubConnectRemove(FbxConnectionPoint* pConnect); - FbxConnectionPoint* SubConnectFind(FbxConnectionPointFilter* pFilter); - FbxConnectionPoint* SubConnectGetOrCreate(FbxConnectionPointFilter* pFilter); - void SubConnectFill(FbxConnectionPoint* pConnect); - - virtual bool ConnectNotify(EEvent pAction, FbxConnectionPoint* pThis, int pIndex, FbxConnectionPoint* pConnect=NULL, FbxConnection::EType pConnectionType=FbxConnection::eNone, FbxConnectionPoint* pNewConnect=NULL); - virtual void ConnectCleanUp(FbxConnectionPoint* pThis); - - int FindSrcIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - int FindDstIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - - bool InternalMoveSrcBefore(int pIndex, int pBeforeIndex); - -private: - inline void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertSrcAt(pIndex, pConnect, pConnectionType); } - inline void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertDstAt(pIndex, pConnect, pConnectionType); } - inline void RemoveSrcAt(int pIndex){ mConnectionList.RemoveSrcAt(pIndex); } - inline void RemoveDstAt(int pIndex){ mConnectionList.RemoveDstAt(pIndex); } - - static bool InternalConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool UserConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool EmitReplaceNotify(FbxConnectionPoint* pDstOwner, FbxConnectionPoint* pSrcOwner, FbxConnectionPoint* pDst, FbxConnectionPoint* pSrc, EEvent pConnectAction, FbxConnectionPoint* pNew); - - virtual bool SetOwnerConnect(FbxConnectionPoint* pConnect); - inline FbxConnectionPoint* GetOwnerConnect(){ return mOwner; } - bool ConnectOwnedConnect(FbxConnectionPoint* pConnect); - bool DisconnectOwnedConnect(FbxConnectionPoint* pConnect); - - void* mData; - int mFlags; - FbxConnectionPoint* mOwner; - ConnectionList mConnectionList; - FbxArray mSubConnectList; - FbxArray mSubConnectCreatedList; - FbxConnectionPointFilter* mFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Class to manage Connect Filter */ -class FBXSDK_DLL FbxConnectionPointFilter -{ -public: - virtual ~FbxConnectionPointFilter() {}; - - //! Return reference ConnectionPoint filter. - virtual FbxConnectionPointFilter* Ref(); - - //! Cancel reference - virtual void Unref(); - - //! Get unique filter ID - virtual FbxInt GetUniqueId() const { return 0; } - - /** Judge if the given Connection Point is valid - * \param pConnect The given Connection Point. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValid(FbxConnectionPoint* pConnect) const; - - /** Judge if the given Connection Point is a valid connection - * \param pConnect The given Connection Point. - * \param pType Connection type. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValidConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pType) const; - - /** Judge if it is equal with the given ConnectionPoint filter. - * \param pConnectFilter The given ConnectionPoint filter. - * \return \c True if equal, \c false if unequal. */ - virtual bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; -}; - -#include - -#endif /* _FBXSDK_CORE_CONNECTION_POINT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxdatatypes.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxdatatypes.h deleted file mode 100644 index 1b2552c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxdatatypes.h +++ /dev/null @@ -1,267 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdatatypes.h -#ifndef _FBXSDK_CORE_DATA_TYPES_H_ -#define _FBXSDK_CORE_DATA_TYPES_H_ - -#include - -#include -#include - -#include - -/** FBX SDK data type class - * \nosubgrouping - */ -class FBXSDK_DLL FbxDataType -{ -public: - static FbxDataType Create(const char* pName, const EFbxType pType); - static FbxDataType Create(const char* pName, const FbxDataType& pDataType); - - /** - *\name Constructor and Destructor. - */ - //@{ - //! Constructor. - FbxDataType(); - - /** Copy constructor. - * \param pDataType Another FbxDataType object copied to this one. - */ - FbxDataType(const FbxDataType& pDataType); - - //! Destroy this datatype. - void Destroy(); - - /** Constructor. - * \param pTypeInfoHandle Type information handle - */ - FbxDataType(const FbxPropertyHandle& pTypeInfoHandle); - - //! Destructor. - ~FbxDataType(); - //@} - - /** Assignment operator - * \param pDataType Datatype whose value is assigned to this datatype. - * \return This datatype - */ - inline FbxDataType& operator=(const FbxDataType& pDataType){ mTypeInfoHandle=pDataType.mTypeInfoHandle; return *this; } - - /** - * \name boolean operation - */ - //@{ - /** Equality operator - * \param pDataType Datatype to compare to. - * \return \c true if equal,\c false otherwise. - */ - inline bool operator==(const FbxDataType& pDataType) const { return mTypeInfoHandle==pDataType.mTypeInfoHandle; } - - /** Non-equality operator - * \param pDataType Datatype to compare to. - * \return \c true if unequal,\c false otherwise. - */ - inline bool operator!=(const FbxDataType& pDataType) const { return mTypeInfoHandle!=pDataType.mTypeInfoHandle; } - //@} - - /** Test whether this datatype is a valid datatype. - * \return \c true if valid, \c false otherwise. - */ - inline bool Valid() const { return mTypeInfoHandle.Valid(); } - - /** Test if this datatype is the specified datatype. - * \param pDataType Datatype to compare to. - * \return \c true if this datatype is the specified datatype, \c false otherwise. - */ - inline bool Is(const FbxDataType& pDataType) const { return mTypeInfoHandle.Is(pDataType.mTypeInfoHandle); } - - /** Retrieve this data type. - * \return This data type. - */ - EFbxType GetType() const; - - /** Retrieve data type name. - * \return Data type name. - */ - const char* GetName() const; - - /** Retrieve the information handle of this data type. - * \return Information handle of this data type. - */ - inline const FbxPropertyHandle& GetTypeInfoHandle() const { return mTypeInfoHandle; } - -private: - FbxPropertyHandle mTypeInfoHandle; - friend class FbxManager; -}; - -/** Retrieve data type from type enumeration index - * \param pType The type enumeration index - * \return The corresponding data type - */ -FBXSDK_DLL const FbxDataType& FbxGetDataTypeFromEnum(const EFbxType pType); - -/** Retrieve data type name string used by I/O operations - * \param pDataType The data type instance to retrieve its I/O name string - * \return The data type name string - * \remark This function is only used during I/O operations. It is not equal - * to the actual data type name. - */ -FBXSDK_DLL const char* FbxGetDataTypeNameForIO(const FbxDataType& pDataType); - -//! \name Basic Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxBoolDT; - extern FBXSDK_DLL FbxDataType FbxCharDT; - extern FBXSDK_DLL FbxDataType FbxUCharDT; - extern FBXSDK_DLL FbxDataType FbxShortDT; - extern FBXSDK_DLL FbxDataType FbxUShortDT; - extern FBXSDK_DLL FbxDataType FbxIntDT; - extern FBXSDK_DLL FbxDataType FbxUIntDT; - extern FBXSDK_DLL FbxDataType FbxLongLongDT; - extern FBXSDK_DLL FbxDataType FbxULongLongDT; - extern FBXSDK_DLL FbxDataType FbxFloatDT; - extern FBXSDK_DLL FbxDataType FbxHalfFloatDT; - extern FBXSDK_DLL FbxDataType FbxDoubleDT; - extern FBXSDK_DLL FbxDataType FbxDouble2DT; - extern FBXSDK_DLL FbxDataType FbxDouble3DT; - extern FBXSDK_DLL FbxDataType FbxDouble4DT; - extern FBXSDK_DLL FbxDataType FbxDouble4x4DT; - extern FBXSDK_DLL FbxDataType FbxEnumDT; - extern FBXSDK_DLL FbxDataType FbxStringDT; - extern FBXSDK_DLL FbxDataType FbxTimeDT; - extern FBXSDK_DLL FbxDataType FbxReferenceDT; - extern FBXSDK_DLL FbxDataType FbxBlobDT; - extern FBXSDK_DLL FbxDataType FbxDistanceDT; - extern FBXSDK_DLL FbxDataType FbxDateTimeDT; -//@} - -//! \name Extended Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxColor3DT; - extern FBXSDK_DLL FbxDataType FbxColor4DT; - extern FBXSDK_DLL FbxDataType FbxCompoundDT; - extern FBXSDK_DLL FbxDataType FbxReferenceObjectDT; - extern FBXSDK_DLL FbxDataType FbxReferencePropertyDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityInheritanceDT; - extern FBXSDK_DLL FbxDataType FbxUrlDT; - extern FBXSDK_DLL FbxDataType FbxXRefUrlDT; -//@} - -//! \name Transform Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxTranslationDT; - extern FBXSDK_DLL FbxDataType FbxRotationDT; - extern FBXSDK_DLL FbxDataType FbxScalingDT; - extern FBXSDK_DLL FbxDataType FbxQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxLocalTranslationDT; - extern FBXSDK_DLL FbxDataType FbxLocalRotationDT; - extern FBXSDK_DLL FbxDataType FbxLocalScalingDT; - extern FBXSDK_DLL FbxDataType FbxLocalQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxTransformMatrixDT; - extern FBXSDK_DLL FbxDataType FbxTranslationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxRotationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxScalingMatrixDT; -//@} - -//! \name Material Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveDT; - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialBumpDT; - extern FBXSDK_DLL FbxDataType FbxMaterialNormalMapDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparentColorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparencyFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialShininessDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialVectorDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonTextureDT; -//@} - -//! \name Layer Element Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxLayerElementUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementNormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementBinormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTangentDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementMaterialDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTextureDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementPolygonGroupDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUVDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVertexColorDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementSmoothingDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementCreaseDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementHoleDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUserDataDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVisibilityDT; -//@} - -//! \name I/O Specialized Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxAliasDT; - extern FBXSDK_DLL FbxDataType FbxPresetsDT; - extern FBXSDK_DLL FbxDataType FbxStatisticsDT; - extern FBXSDK_DLL FbxDataType FbxTextLineDT; - extern FBXSDK_DLL FbxDataType FbxUnitsDT; - extern FBXSDK_DLL FbxDataType FbxWarningDT; - extern FBXSDK_DLL FbxDataType FbxWebDT; -//@} - -//! \name External Support Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxActionDT; - extern FBXSDK_DLL FbxDataType FbxCameraIndexDT; - extern FBXSDK_DLL FbxDataType FbxCharPtrDT; - extern FBXSDK_DLL FbxDataType FbxConeAngleDT; - extern FBXSDK_DLL FbxDataType FbxEventDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewXDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewYDT; - extern FBXSDK_DLL FbxDataType FbxFogDT; - extern FBXSDK_DLL FbxDataType FbxHSBDT; - extern FBXSDK_DLL FbxDataType FbxIKReachTranslationDT; - extern FBXSDK_DLL FbxDataType FbxIKReachRotationDT; - extern FBXSDK_DLL FbxDataType FbxIntensityDT; - extern FBXSDK_DLL FbxDataType FbxLookAtDT; - extern FBXSDK_DLL FbxDataType FbxOcclusionDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterXDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterYDT; - extern FBXSDK_DLL FbxDataType FbxOrientationDT; - extern FBXSDK_DLL FbxDataType FbxRealDT; - extern FBXSDK_DLL FbxDataType FbxRollDT; - extern FBXSDK_DLL FbxDataType FbxScalingUVDT; - extern FBXSDK_DLL FbxDataType FbxShapeDT; - extern FBXSDK_DLL FbxDataType FbxStringListDT; - extern FBXSDK_DLL FbxDataType FbxTextureRotationDT; - extern FBXSDK_DLL FbxDataType FbxTimeCodeDT; - extern FBXSDK_DLL FbxDataType FbxTimeWarpDT; - extern FBXSDK_DLL FbxDataType FbxTranslationUVDT; - extern FBXSDK_DLL FbxDataType FbxWeightDT; -//@} - -#include - -#endif /* _FBXSDK_CORE_DATA_TYPES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxemitter.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxemitter.h deleted file mode 100644 index 32f6170..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxemitter.h +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxemitter.h -#ifndef _FBXSDK_CORE_EMITTER_H_ -#define _FBXSDK_CORE_EMITTER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Base class to emit event with the specified event type. -* The event type could be a specific class which derived from FbxEvent. Please read FbxEmitter::Emit() for more details. -* Event emitter contains a list of event handlers. -* FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. -* Before using emitter to emit an event, one or more event handlers must be added to the handlers list of current emitter. -* In other words, it's "bind event handlers to emitter". -* There are two ways to bind event handlers to emitter. -* \li 1. If you already got an event handler and would like to bind it to current emitter, please call FbxEmitter::AddListener(). -* \li 2. Or you can create an event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the specified emitter. -* It's similar to unbind or remove an even handler. For more details, -* \see FbxEmitter::RemoveListener() -* \see FbxListener::Unbind() -* \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventHandler FbxEvent FbxEventBase -*/ -class FBXSDK_DLL FbxEmitter -{ -public: - /** Add the specified event handler to current emitter list. - * \param pHandler The event handler will be added to the handlers list of current emitter. */ - void AddListener(FbxEventHandler& pHandler); - - /** Remove the specified event handler from current emitter list. - * \param pHandler The event handler will be removed from the handlers list of current emitter. */ - void RemoveListener(FbxEventHandler& pHandler); - - /** Emit an event with the specified the event type. One the event is emitted, the listener to this event will receive a signal. - * \param pEvent Specify the event type to emit. Could be a specific class which derived from FbxEvent, such as FbxObjectPropertyChanged. - * \see FbxEventBase FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport - * \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary */ - template void Emit(const EventType& pEvent) const - { - if( !mData ) return; - EventHandlerList::iterator itBegin = mData->mEventHandlerList.Begin(); - EventHandlerList::iterator itEnd = mData->mEventHandlerList.End(); - for( EventHandlerList::iterator it = itBegin; it != itEnd; ++it ) - { - if ((*it).GetHandlerEventType() == pEvent.GetTypeId()) - { - (*it).FunctionCall(pEvent); - } - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEmitter(); - ~FbxEmitter(); - -protected: - typedef FbxIntrusiveList EventHandlerList; - struct EventData { EventHandlerList mEventHandlerList; }; - EventData* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_EMITTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxevent.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxevent.h deleted file mode 100644 index b0c02f1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxevent.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxevent.h -#ifndef _FBXSDK_CORE_EVENT_H_ -#define _FBXSDK_CORE_EVENT_H_ - -#include - -#include - -#include - -/** FBX SDK event base class. - * An event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. - * You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return - * it to you with the right information in it. FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. - * Meanwhile, plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * The derived class of FbxEventBase contains a type ID to distinguish different types of events. - * FBX object can emit different types of FBX events at different conditions. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * For example, if a certain property of a FBX object is changed, the FBX object(emitter) can emit an event which type is FbxObjectPropertyChanged. - * The plug-in(listener) who are listening to FbxObjectPropertyChanged, will receive a signal and take action to process the event data. - * \nosubgrouping - * \see FbxEvent FbxEventHandler FbxListener FbxEmitter - */ -class FBXSDK_DLL FbxEventBase -{ - public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor - virtual ~FbxEventBase(); - //@} - - /** Retrieve the event type ID - * \return type id - */ - virtual int GetTypeId() const = 0; - - /** Force events to give us a name - * \return event name - */ - virtual const char* GetEventName() const = 0; - - protected: - static int GetStaticTypeId(const char*); -}; - -// Force events to declare a name by using an abstract method, and force them to use -// the proper name by making the call from FbxEvent<> go through the private static -// method. -#define FBXSDK_EVENT_DECLARE(Class) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: static const char* FbxEventName() { return #Class; } \ - friend class FbxEvent; \ - -// -// Similar to above, but to be used when you've got an event template, and the -// type is something know to FBX -// -#define FBXSDK_EVENT_TYPE_DECLARE(Class, FBXType) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: \ - static const char* FbxEventName() { \ - static FbxString lEventName = FbxString(#Class) + FbxString("<") + \ - FbxGetDataTypeFromEnum(FbxTypeOf(FBXType())).GetName() + ">"; \ - \ - return lEventName.Buffer(); \ - } \ - friend class FbxEvent< Class >; - - - -//This is for templates classes that will uses non fbxtypes in their templates -//We force the the creation of an UNIQUE string for each types so that we can -//retrieve the event within multiple DLLs - -//to be able to use this, the char EventName[] = "uniqueEventName"; must be declared -//globally. - -#define FBXSDK_EVENT_TEMPLATE_HEADER(ClassName, TemplateName)\ -template < class TemplateName, const char* T > \ -class ClassName: public FbxEvent< ClassName >\ -{\ - public: virtual const char* GetEventName() const {return FbxEventName();}\ - private: static const char* FbxEventName() {\ - static FbxString lEventName = (FbxString(#ClassName) +"<"+ FbxString(T) +">");\ - return lEventName.Buffer();\ - }\ - friend class FbxEvent< ClassName >; - - -//This is the footer macro, to put at the end to close the template class -//created by FBXSDK_EVENT_TEMPLATE_HEADER -#define FBXSDK_EVENT_TEMPLATE_FOOTER()\ -}; - -/** FBX event class, derived from FbxEventBase, and it contains a type ID for event. -* It's a template class. You can derive your own types of even. Such as: -* \code class FbxEventCustom : public FbxEvent \endcode -* \see FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport -* \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary -* \nosubgrouping -* \remarks A FBX event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. -* An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \see FbxEventBase FbxEventHandler FbxListener FbxEmitter -*/ -//--------------------------------------------------- -// T : We use the curiously recurring template pattern -// to initialize the typeId of each event type -template class FbxEvent : public FbxEventBase -{ -public: - //!Destructor - virtual ~FbxEvent(){} - - /** Update the type ID of current event with the given type ID. - * \param pTypeId the new type ID. - */ - static void ForceTypeId(int pTypeId) - { - // This is to handle specific cases where the type ID must be hard coded - // It is useful for shared event across DLL. We can then guarantee that - // The ID of a certain type will always have the same ID - smTypeId = pTypeId; - } - - /** Retrieve the event type ID - * \note This may be called from multiple threads. - * \return type id - */ - virtual int GetTypeId() const - { - return GetStaticTypeId(); - } - - /** Retrieve the event type ID - * \return type id - */ - static int GetStaticTypeId() - { - if( !smTypeId ) - { - if( !smTypeId ) - { - // If this does not compile, you need to add - // FBXSDK_EVENT_DECLARE(YourEventClassName) to your class declaration - smTypeId = FbxEventBase::GetStaticTypeId(T::FbxEventName()); - } - } - - return smTypeId; - } - -private: - //! The type ID of event - static int smTypeId; -}; - -// Static members implementation -template int FbxEvent::smTypeId = 0; - -#include - -#endif /* _FBXSDK_CORE_EVENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxeventhandler.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxeventhandler.h deleted file mode 100644 index 5cf4521..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxeventhandler.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxeventhandler.h -#ifndef _FBXSDK_CORE_EVENT_HANDLER_H_ -#define _FBXSDK_CORE_EVENT_HANDLER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Event handler class contains a listener and a callback function. -* Event handler is used to bind emitter and listener together. Its callback function can process event data. -* To generate a valid event handler, you can create an event emitter and event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the listener and the created emitter. -* After that, the emitter and listener are bound together via event handler. -* \remarks An object(emitter) can emit a certain type of event, the object(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventBase FbxEvent FbxEmitter -*/ -class FbxEventHandler -{ -public: - //! Event handler base type. - enum EType - { - eListener, //!< Listener event handler type. - eEmitter, //!< Emitter event handler type. - eCount //!< Count of different event handler types. - }; - - /** Get event type of current handler. - * \return The type ID of event. */ - virtual int GetHandlerEventType()=0; - - /** Call function that process event data. - * \param pEvent specify the event type. pEvent could be a specific class which derived from FbxEventBase. - * \see FbxEventBase */ - virtual void FunctionCall(const FbxEventBase& pEvent)=0; - - /** Get listener of current handler. - * \return A pointer to the listener object. */ - virtual FbxListener* GetListener()=0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEventHandler(){} - virtual ~FbxEventHandler(){} - - FBXSDK_INTRUSIVE_LIST_NODE(FbxEventHandler, eCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*); - -public: - FbxMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxConstMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*) const; - -public: - FbxConstMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxFuncEventHandler : public FbxEventHandler -{ - typedef void (*CallbackFnc)(const EventType*, FbxListener*); - -public: - FbxFuncEventHandler(FbxListener* pListener, CallbackFnc pFunction) : mListener(pListener), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mFunction)(reinterpret_cast(&pEvent), mListener); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - FbxListener* mListener; - CallbackFnc mFunction; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_EVENT_HANDLER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxlistener.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxlistener.h deleted file mode 100644 index 85b13c9..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxlistener.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlistener.h -#ifndef _FBXSDK_CORE_LISTENER_H_ -#define _FBXSDK_CORE_LISTENER_H_ - -#include - -#include -#include -#include - -#include - -/**FBX SDK listener class. Once an event is emitted by an emitter, a listener should be created to listen to the event. - * The listener could receive a signal and take action to process the event data. - * \note The data will be process by the callback function of FbxListener::Bind(). - * Plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * To emit event, you could create an emitter and a listener, and then bind them together via event handler. - * To listen to an event which is emitted by an emitter, you should bind current listener to the emitter by calling FbxListener::Bind(). - * Event listener contains a list of event handlers. - * \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, - * will receive a signal and take action to process the event data. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * \see FbxEmitter FbxEventHandler FbxEvent FbxEventBase - */ -class FBXSDK_DLL FbxListener -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor. - ~FbxListener(); - //!Constructor. - FbxListener(){} - //@} - - //////////////////////////////////////////////////////////////////////////////////////// - /** - * \name Bind and unbind methods - */ - //@{ - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)) - { - FbxMemberFuncEventHandler* eventHandler = - FbxNew< FbxMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)const) - { - FbxConstMemberFuncEventHandler* eventHandler = - FbxNew< FbxConstMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (*pFunc)(const EventType*,FbxListener*)) - { - FbxFuncEventHandler* eventHandler = - FbxNew< FbxFuncEventHandler >(this, pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Unbind an event handler. The specified event handler will be removed from the handlers list of current listener. - * \param aBindId The event handler to unbind. - */ - void Unbind(const FbxEventHandler* aBindId); - //@} - -private: - typedef FbxIntrusiveList EventHandlerList; - EventHandlerList mEventHandler; -}; - -#include - -#endif /* _FBXSDK_CORE_LISTENER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxloadingstrategy.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxloadingstrategy.h deleted file mode 100644 index 393defc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxloadingstrategy.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxloadingstrategy.h -#ifndef _FBXSDK_CORE_LOADING_STRATEGY_H_ -#define _FBXSDK_CORE_LOADING_STRATEGY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * Abstract class used to implemented some plug-in loading strategy. - * A loading strategy dictate how some plug-ins will be loaded for instance. - * We could have a simple strategy that loads only a single dll on PC. - * We could also implement a strategy that load multiple dlls from a directory. - */ -class FBXSDK_DLL FbxLoadingStrategy : public FbxPluginContainer -{ -public: - /** Result state of loading plug-in. - */ - enum EState - { - eAllLoaded, //!< Plug-ins are loaded. - eNoneLoaded, //!< No plug-ins are loaded. - eAllFailed, //!< Plug-ins failed to load. - eSomeFailed //!< Not all found plug-ins are loaded. - }; - - /** - *\name Public interface - */ - //@{ - /** Execute the operation of loading the plug-in(s). The way it is executed is determined by the specific implementations. - * \param pData Plug in data that can be access inside the plug-ins. - * \return The state of the loading action. - */ - EState Load(FbxPluginData& pData); - - /** Execute the operation of unloading the plug-in(s). The way it is executed is determined by the specific implementations. - */ - void Unload(); - //@} - -protected: - /** - *\name User implementation - */ - //@{ - /** Called by the Load method, it contains the specific user implementation strategy to load the desired plug-in(s). - * \param pData Plug in data that can be access inside the plug-ins. - * \return If the plugin loading is successful return \c true, otherwise return \c false - */ - virtual bool SpecificLoad(FbxPluginData& pData) = 0; - - /** Called by the Unload method, it contains the specific user implementation strategy to unload the desired plug-in(s). - */ - virtual void SpecificUnload(FbxPluginData& pData) = 0; - //@} - - //! Whether the plugin is loaded or not. - EState mPluginsLoadedState; - -private: - FbxPluginData mData; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_LOADING_STRATEGY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmanager.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmanager.h deleted file mode 100644 index 39340df..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmanager.h +++ /dev/null @@ -1,555 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanager.h -#ifndef _FBXSDK_CORE_MANAGER_H_ -#define _FBXSDK_CORE_MANAGER_H_ - -#include - -#include - -#include - -class FbxIOSettings; -class FbxIOPluginRegistry; -class FbxAnimEvaluator; -class FbxSceneReference; -class FbxUserNotification; -class FbxMessageEmitter; -class FbxLocalizationManager; -class FbxXRefManager; -class FbxManager_internal; - -#ifndef FBXSDK_ENV_WINSTORE - class FbxPlugin; -#endif - -/** SDK object manager. - * The SDK manager is in charge of: - * \li scene element allocation, for example, FbxScene::Create(pSdkManager, ""). - * \li scene element deallocation, call FbxManager::Destroy() to deallocates all object created by the SDK manager. - * \li scene element search and access, please see \ref GlobalObjectManagement section. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * It must be done before the first FbxManager creation. - * - * FbxSetMallocHandler(); - * FbxSetCallocHandler(); - * FbxSetReallocHandler(); - * FbxSetFreeHandler(); - * - * Upon destruction, all objects allocated by the SDK manager and not explicitly destroyed are destroyed as well. - * A derived class can be defined to allocate and deallocate specialized scene elements. - * \remarks You could create more than one SDK manager. However, it's better to NOT share the same object among different managers. - * \nosubgrouping - */ -class FBXSDK_DLL FbxManager -{ -public: - /** - * \name FBX SDK Manager Creation/Destruction - */ - //@{ - /** SDK manager allocation method. - * \return A pointer to the SDK manager or \c NULL if this is an - * evaluation copy of the FBX SDK and it is expired. - */ - static FbxManager* Create(); - - /** Destructor. - * Deallocates all object previously created by the SDK manager. - */ - virtual void Destroy(); - //@} - - /** - * \name Versions Queries - */ - //@{ - /** Get FBX SDK version string. - * \param pFull If true, the complete version string including revision number and release date will be returned, - * otherwise only the version numbering is returned. - */ - static const char* GetVersion(bool pFull=true); - - /** Get the current default FBX file format version number for this version of the FBX SDK. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - */ - static void GetFileFormatVersion(int& pMajor, int& pMinor, int& pRevision); - //@} - - - /** - * \name Object Registration, Definition and Management - */ - //@{ - /** Class registration. - * \param pName The class name. For example, "FbxMesh" for FbxMesh class. - * \param T1 FBX type of the specified class. - * \param T2 FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterFbxClass("FbxCamera", FBX_TYPE(FbxCamera), FBX_TYPE(FbxNodeAttribute)); \endcode - */ - template inline FbxClassId RegisterFbxClass(const char* pName, const T1* /*T1*/, const T2* /*T2*/, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0) - { - T1::ClassId = Internal_RegisterFbxClass(pName, T2::ClassId, (FbxObjectCreateProc)T1::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - return T1::ClassId; - } - - /** Runtime class registration. - * \param pName The class name. For example, "FbxUIWidgetBoolean". - * \param T FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterRuntimeFbxClass( "FbxUIWidgetBoolean", FBX_TYPE(FbxUIWidgetDefinition), NULL, "FbxUIWidgetBoolean"); \endcode - */ - template inline FbxClassId RegisterRuntimeFbxClass(const char* pName, const T* /*T*/, const char* pFbxFileTypeName=0,const char* pFbxFileSubTypeName=0) - { - return Internal_RegisterFbxClass(pName, T::ClassId, (FbxObjectCreateProc)T::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - } - - /** Runtime class unregistration. - * \param pName The class name. - */ - inline void UnregisterRuntimeFbxClass(const char* pName) - { - FbxClassId lClassId = FindClass(pName); - if( !(lClassId == FbxClassId()) ) - { - Internal_UnregisterFbxClass(lClassId); - } - } - - /** Override class. - * \param pFBX_TYPE_Class FBX type of class. - * \param pFBX_TYPE_OverridenClass FBX type of overridden class. - * \return The class Id - */ - template inline FbxClassId OverrideFbxClass(const T1* pFBX_TYPE_Class, const T2* pFBX_TYPE_OverridenClass) - { - T1::ClassId = Internal_OverrideFbxClass(T2::ClassId,(FbxObjectCreateProc)T1::Allocate ); - return T1::ClassId; - } - - /** Create a new object of the specified ClassId. - * \param pClassId The ClassId of the object to be created. - * \param pName The name given to the newly created object. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean - * the new object will become a source to the container, connection-wise. - * \param pCloneFrom A valid object pointer to use as the reference for cloning the object upon construction. - * \return If not null, a new instance of the specified class. - * \remark This function will return NULL if the ClassId used is invalid. New ClassId can be registered using - * the function RegisterFbxClass(). - */ - FbxObject* CreateNewObjectFromClassId(FbxClassId pClassId, const char* pName, FbxObject* pContainer=NULL, const FbxObject* pCloneFrom=NULL); - - /** Find class by the specified name. - * \param pClassName Class Name to find. - */ - FbxClassId FindClass(const char* pClassName) const; - - /** Find file class. - * \param pFbxFileTypeName Specify the type name in FBX file to find. - * \param pFbxFileSubTypeName Specify by The sub type name in FBX file to find. - */ - FbxClassId FindFbxFileClass(const char* pFbxFileTypeName, const char* pFbxFileSubTypeName) const; - - /** Class unregistration. - * \param pFBX_TYPE_Class FBX type of unregistered class. - */ - template inline void UnregisterFbxClass(const T*) - { - Internal_UnregisterFbxClass(T::ClassId); - T::ClassId = FbxClassId(); - } - //@} - - /** - * \name Data Type Management - */ - //@{ - /** Register a new data type to the manager - * \param pName The type name. - * \param pType The data type. - * \return The newly created FbxDataType - */ - FbxDataType CreateDataType(const char* pName, const EFbxType pType); - - /** List the data types - * \return the number of registered datatypes - */ - int GetDataTypeCount() const; - - /** Find a data types at pIndex. - * \param pIndex The data type index. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataType(const int pIndex) const; - - /** Find a data type from the type name. - * \param pDataType The type name. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataTypeFromName(const char* pDataType) const; - //@} - - /** - * \name User Notification Object - */ - //@{ - /** Access to the unique UserNotification object. - * \return The pointer to the user notification or \c NULL \c if the object - * has not been allocated. - */ - FbxUserNotification* GetUserNotification() const; - - /** Set the user notification - * \param pUN - */ - void SetUserNotification(FbxUserNotification* pUN); - //@} - - /** - * \name IOSettings Object - */ - //@{ - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings* GetIOSettings() const; - - /** Set the IOSettings pointer - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings* pIOSettings); - //@} - - - /** - * \name Message Emitter (for Message Logging) - */ - //@{ - /** Access to the unique FbxMessageEmitter object. - * \return The pointer to the message emitter. - */ - FbxMessageEmitter& GetMessageEmitter(); - /** Sets to the unique FbxMessageEmitter object. - * \param pMessageEmitter the emitter to use, passing NULL will reset to the default emitter. - * The object will be deleted when the SDK manager is destroyed, thus ownership is transfered. - */ - bool SetMessageEmitter(FbxMessageEmitter* pMessageEmitter); - //@} - - - /** - * \name Localization Hierarchy - */ - //@{ - /** Add a localization object to the known localization providers. - * \param pLocManager the localization object to register. - */ - void AddLocalization(FbxLocalizationManager* pLocManager); - - /** Remove a localization object from the known localization providers. - * \param pLocManager the localization object to remove. - */ - void RemoveLocalization(FbxLocalizationManager* pLocManager); - - /** Select the current locale for localization. - * \param pLocale the locale name, for example "fr" or "en-US". - */ - bool SetLocale(const char* pLocale); - - /** Localization helper function. Calls each registered localization manager - * until one can localizes the text. - * \param pID the identifier for the text to localize. - * \param pDefault the default text. Uses pID if NULL. - * \return the potentially localized text. May return the parameter passed in. - */ - const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name XRef Manager - */ - //@{ - /** Retrieve the manager responsible for managing object XRef resolution. - * \return The XRef manager for this SDK manager. - */ - FbxXRefManager& GetXRefManager(); - //@} - - /** - * \name Library Management - */ - //@{ - /** Retrieve the main object Libraries - * \return The Root library - */ - FbxLibrary* GetRootLibrary() const; - FbxLibrary* GetSystemLibraries() const; - FbxLibrary* GetUserLibraries() const; - //@} - - /** - * \name Plug-in Registry Object - */ - //@{ - /** Access to the unique FbxIOPluginRegistry object. - * \return The pointer to the user FbxIOPluginRegistry - */ - FbxIOPluginRegistry* GetIOPluginRegistry() const; - //@} - - /** - * \name Fbx Generic Plugins Management - */ - //@{ - #ifndef FBXSDK_ENV_WINSTORE - /** Load plug-ins directory - * \param pFilename The directory path. - * \param pExtensions The plug in extension. - * \return \c True - */ - bool LoadPluginsDirectory(const char* pFilename, const char* pExtensions=NULL); - - /** Load plug-in - * \param pFilename The file name - * \return \c True - */ - bool LoadPlugin(const char* pFilename); - - /** Unload all plug-ins - */ - bool UnloadPlugins(); - - /** Emit plugins event. - * \param pEvent The event to be emitted. - */ - bool EmitPluginsEvent(const FbxEventBase& pEvent); - - //!Get plugins. - FbxArray GetPlugins() const; - - /** get plugins count - * \return The number of plugins. - */ - int GetPluginCount() const; - - /** Find plug in. - * \param pName The plug in name. - * \param pVersion The plug in version. - * \return The plugin, \c null if not found. - */ - FbxPlugin* FindPlugin(const char* pName, const char* pVersion) const; - #endif /* !FBXSDK_ENV_WINSTORE */ - //@} - - - /** - * \name IO Settings - */ - //@{ - // Add IOSettings in hierarchy from different modules - - /** Fill IO Settings for registered readers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings& pIOS); - - /** Fill IO Settings for registered writers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings& pIOS); - - /** Fill common IO Settings - * \param pIOS The properties hierarchies to fill. - * \param pImport If \c true, import properties are set, otherwise export properties are set. - */ - void FillCommonIOSettings(FbxIOSettings& pIOS, bool pImport); - //@} - - /** - * \name Global Object Management - */ - //@{ - /** Register object with the manager. - * \internal - * \param pObject The object to be registered. - * \anchor GlobalObjectManagement - */ - void RegisterObject(FbxObject* pObject); - - /** Unregister object with the manager. - * \internal - * \param pObject The object to be unregistered. - */ - void UnregisterObject(FbxObject* pObject); - - /** Register a list of objects with the manager. - * \internal - * \param pArray The list of object to be registered. - */ - void RegisterObjects(const FbxArray& pArray); - - /** Unregister a list of objects with the manager. - * \internal - * \param pArray The list of object to be unregistered. - */ - void UnregisterObjects(const FbxArray& pArray); - - /** Increment the scene destroying counter. - * \remarks Call this function before the destroying list is changed. - */ - void IncreaseDestroyingSceneFlag(); - /** Shrink the object list and decrements the scene destroying counter. - * \remarks Call this function after the destroying is changed. - * Use IncreasDestroyingSceneFlag() and DecreaseDestroyingSceneFlag() in pairs. - */ - void DecreaseDestroyingSceneFlag(); - /** - * \name Reference Management - */ - //@{ - /** Get number of references. - * \return Number of references. - */ - int GetReferenceCount() const; - - /** Get reference at given index. - * \param pIndex Position in the list of references. - * \return Pointer to the reference or \c NULL if index is out of bounds. - */ - FbxSceneReference* GetReference(int pIndex) const; - - /** Add a reference. - * \param pReference The reference to be added. - * \return If the reference is correctly added to the scene, return \c true otherwise, if the reference is - * already there, returns \c false. - */ - int AddReference(FbxSceneReference* pReference); - - /** Remove the specified reference from reference list. - * \param pReference The reference to be removed. - * \return If the reference was successfully removed, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool RemoveReference(FbxSceneReference* pReference); - - /** Clear the specified reference from the SDK manager. - * \param pReference The reference to be removed. - * \return If the reference was successfully cleared from the SDK manager, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool ClearReference(FbxSceneReference* pReference); - //@} - - /** Add a prefix to a name. - * \param pPrefix The prefix to be added to the \c pName. This - * string must contain the "::" characters in order to be considered - * as a prefix. - * \param pName The name to be prefix. - * \return The prefixed string - * \remarks If a prefix already exists, it is removed before - * adding \c pPrefix. - */ - static FbxString PrefixName(const char* pPrefix, const char* pName); - - /** Get the count of document available in this manager - * \return The count of document owned by this manager. - */ - int GetDocumentCount(); - - /** Get the document at pIndex in the manager's list. - * \param pIndex The index of the document to retrieve. - * \return The document at the specified index. Will return NULL if index is invalid. - */ - FbxDocument* GetDocument(int pIndex); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxManager* GetDefaultManager(); - void CreateMissingBindPoses(FbxScene* pScene); - int GetBindPoseCount(FbxScene *pScene) const; - int GetFbxClassCount() const; - FbxClassId GetNextFbxClass(FbxClassId pClassId /* invalid id: first one */) const; - -protected: - FbxManager(); - virtual ~FbxManager(); - - void Clear(); - void ClassInit(); - void ClassRelease(); - void DataTypeInit(); - void DataTypeRelease(); - -private: - bool CanAutoDestroySrcObject(FbxObject* pObject, FbxObject* pSrcObject, bool pRecursive) const; - - void Create_Common_Import_IOSettings_Groups(FbxIOSettings& pIOS); - void Create_Common_Export_IOSettings_Groups(FbxIOSettings& pIOS); - void Add_Common_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_Export_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Export_IOSettings(FbxIOSettings& pIOS); - - FbxClassId Internal_RegisterFbxClass(const char* pClassName, FbxClassId pParentClassId, FbxObjectCreateProc=0, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0); - bool Internal_RegisterFbxClass(FbxClassId pClassId); - FbxClassId Internal_OverrideFbxClass(FbxClassId pClassId, FbxObjectCreateProc=0); - void Internal_UnregisterFbxClass(FbxClassId pClassId); - - void RemoveObjectsOfType(const FbxClassId& pClassId); - - FbxAnimEvaluator* GetDefaultAnimationEvaluator(); - - FbxArray mObjects; - FbxArray mDocuments; - - FbxIOSettings* mIOSettings; - FbxIOPluginRegistry* mRegistry; - FbxUserNotification* mUserNotification; - FbxMessageEmitter* mMessageEmitter; - FbxArray mLocalizationManagerArray; - FbxArray mSceneReferenceArray; - FbxAnimEvaluator* mDefaultAnimationEvaluator; - - FbxArray mDestroyingObjects; - FbxArray mDestroyingDocuments; - int mIsDestroyingScene; - - FbxManager_internal* mInternal; - static FbxManager* smDefaultManager; - - FBXSDK_FRIEND_NEW(); - friend class FbxObject; - friend class FbxProperty; //For GetDefaultAnimationEvaluator() - friend class FbxNode; //For GetDefaultAnimationEvaluator() - friend class FbxScene; //For GetDefaultAnimationEvaluator() - friend class FbxAnimEvaluator; //For GetDefaultAnimationEvaluator() -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MANAGER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmodule.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmodule.h deleted file mode 100644 index cdac5bb..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxmodule.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmodule.h -#ifndef _FBXSDK_CORE_MODULE_H_ -#define _FBXSDK_CORE_MODULE_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -typedef void* FbxModule; - -/** Loads the specified module into the address space of the calling process. - * \param pFilePath The full file path name of the module to load. - * \return The module handle if it successfully loaded, otherwise NULL. - * \remark The specified module may cause other modules to be loaded. - */ -FBXSDK_DLL FbxModule FbxModuleLoad(const char* pFilePath); - -/** Retrieves the address of an exported function or variable from the specified module. - * \param pModuleHandle A valid module handle. - * \param pProcName The procedure name to search. - * \return The procedure handle if valid, otherwise NULL. - */ -FBXSDK_DLL void* FbxModuleGetProc(FbxModule pModuleHandle, const char* pProcName); - -/** Frees the loaded module and, if necessary, decrements its reference count. - * \param pModuleHandle A valid module handle. - * \return \c true on success, \c false otherwise. - * \remark When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid. - */ -FBXSDK_DLL bool FbxModuleFree(FbxModule pModuleHandle); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_MODULE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxobject.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxobject.h deleted file mode 100644 index 1508f42..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxobject.h +++ /dev/null @@ -1,1557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobject.h -#ifndef _FBXSDK_CORE_OBJECT_H_ -#define _FBXSDK_CORE_OBJECT_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxDocument; -class FbxImplementation; -class FbxImplementationFilter; -class FbxLibrary; -class FbxMessage; -class FbxPeripheral; -class FbxUserDataRecord; -class FbxConnectEvent; - -//! \internal Macro used to declare ClassId mechanics. -#define FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ -private:\ - Class(const Class&);\ - Class& operator=(const Class&);\ -protected:\ - virtual ~Class(){};\ -public:\ - static FbxClassId ClassId;\ - virtual FbxClassId GetClassId() Const_Override { return ClassId; }\ - friend class FBXSDK_NAMESPACE::FbxManager;\ - typedef Parent ParentClass;\ - static Class* Create(FbxManager* pManager, const char* pName);\ - -//! \internal Macro used to declare the FbxObject class. -#define FBXSDK_FBXOBJECT_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_FRIEND_NEW()\ - static Class* Create(FbxObject* pContainer, const char* pName);\ -protected:\ - static Class* Allocate(FbxManager* pManager, const char* pName, const Class* pFrom);\ - -//! Macro used to declare a new class derived from FbxObject. -#define FBXSDK_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_FBXOBJECT_DECLARE(Class, Parent, const override)\ -protected:\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to declare a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_CLASS_DECLARE(Class, Parent, const override)\ -protected:\ - static FbxObjectCreateProc Allocate;\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to implement a new class derived from FbxObject. -#define FBXSDK_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - Class* Class::Create(FbxObject* pContainer, const char* pName)\ - {\ - FBX_ASSERT_RETURN_VALUE(pContainer && pContainer->GetFbxManager(), NULL);\ - return (Class*)pContainer->GetFbxManager()->CreateNewObjectFromClassId(Class::ClassId, pName, pContainer);\ - }\ - Class* Class::Allocate(FbxManager* pManager, const char* pName, const Class* pFrom)\ - {\ - Class* lNewObject = FbxNew(*pManager, pName);\ - lNewObject->Construct(pFrom);\ - lNewObject->SetObjectFlags(FbxObject::eInitialized, true);\ - return lNewObject;\ - }\ - -//! Macro used to implement a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - FbxObjectCreateProc Class::Allocate = 0;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - -/** The base class of most FBX objects. Provides the benefits of connectivity, identity, run-time typing, - * properties, naming, copying, cloning, selection, and automated file IO. Most of - * the FBX SDK API deals with FbxObject pointers when it comes to manipulate objects in its simplest form. - * - * The ClassID mechanism replaces the dynamic_cast mechanism for efficient run-time type information. - * - * The FbxObject provides methods for managing the connections between objects. - * Using connections, objects can be related to each other to form hierarchies or structures. All of - * the FBX scene's object relations are expressed as connections between objects. Those connections can - * be altered as needed to reflect most kind of setups encountered in this world. For example, - * connections can be used to express parenting between transform nodes. Connections are not strict in - * the sense that we allow any type of objects to connect to any other type of objects. The meaning of - * the connection is purely semantic. As of yet, we do not provide the functionality to validate if - * the connections made by the users are allowed or not. - * - * FbxObject provide a property (FbxProperty) mechanism to describe characteristics of - * objects in a scene. Properties may be either static or dynamic. Static properties are defined in the class direction - * and can be accessed directly by their name on the object exposing them without - * the need for a search in the property list of the object. Dynamic properties can be added during run-time, - * while the program is running. Objects can have an unlimited amount of properties. - * Properties can be listed at run-time, allowing for a flexible support of custom data - * on objects, since they might be considered by the FBX file readers/writers depending on the flags set. - * - * Here is an example of a new empty minimal class template for FBX objects: - * \code - * //Declaration - * class MyClass : public FbxObject - * { - * FBXSDK_OBJECT_DECLARE(MyClass, FbxObject); //Be careful! The second parameter to this macro must be the parent class name! - * - * public: - * //Declare methods and properties here... - * }; - * \endcode - * \code - * //Implementation - * FBXSDK_OBJECT_IMPLEMENT(MyClass); - * \endcode - * Before the new class can be used, it needs to be registered to the manager with the following method: - * \code - * MyFbxManager->RegisterFbxClass("MyClassName", FBX_TYPE(MyClass), FBX_TYPE(FbxObject)); //Be careful! The 3rd parameter must be the parent class! If the parent class change, it must be updated here too! - * \endcode - * Then to create or delete instances of your new class, the following methods must be used: - * \code - * //Creating a new instance - * MyClass* MyObject = MyClass::Create(MyFbxManager, "Object Name"); - * - * //Deleting this instance - * MyObject->Destroy(); - * MyObject = NULL; - * \endcode - * \see FbxProperty - */ -class FBXSDK_DLL FbxObject : public FbxEmitter -{ - FBXSDK_FBXOBJECT_DECLARE(FbxObject, FbxEmitter, const); - -public: - //! \name General Object Management - //@{ - /** Templated test if this class is a hierarchical children of the specified class type. - * \return \c true if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - template inline bool Is() const { return GetClassId().Is(T::ClassId); } - - /** Retrieve the FbxManager this object belongs to. - * \return A pointer to the manager that this object belongs to. */ - FbxManager* GetFbxManager() const; - - /** Returns a const pointer to the document that contains this object. - * \return A const pointer to the document that contains this object or \c NULL if the object does not belong to any document. */ - FbxDocument* GetDocument() const; - - /** Returns a const pointer to the root document that contains this object. - * \return A const pointer to the root document that contains this object or \c NULL if the object does not belong to any document. - * \remarks It returns this pointer if this object is a document object and does not belong to any document. That means this object is the root document. */ - FbxDocument* GetRootDocument() const; - - /** Returns a const pointer to the scene that contains this object. - * \return A pointer to the scene that contains this object or \c NULL if the object does not belong to any scene. */ - FbxScene* GetScene() const; - - /** Unregister and delete this object from memory. This will also breaks all connections as well as removing all the instance of all the properties of this object with the object's class. - * \param pRecursive If true, all children (source) objects will also be unregistered and deleted. */ - void Destroy(bool pRecursive=false); - - /** Reset all the properties of this object to their default values. */ - void ResetProperties(); - //@} - - //! \name Object Flags Management - //@{ - //! Flags available to control objects. - enum EObjectFlag - { - eNone = 0, //!< No flags. - eInitialized = 1 << 0, //!< Automatically set when FbxObject::Construct() is completed. - eSystem = 1 << 1, //!< When set, object is deleted upon FbxManager destroy only. Use carefully! - eSavable = 1 << 2, //!< If set, object is stored in FBX file upon export. All objects are savable by default. - eSelected = 1 << 3, //!< Used by the selection mechanic to specify a selected object. - eHidden = 1 << 4, //!< Used for interface representation; if set, the object should not be visible. - eContentLoaded = 1 << 5, //!< Used by load-on-demand mechanic to specify if an object has its content loaded. - eDontLocalize = 1 << 6, //!< Used by asset builder; Do not localize this object - eCopyCalledByClone = 1 << 16 //!< Used internally. If set, modify the Copy behavior of the object - }; - - /** Set the state of object flags. - * \param pFlags Bit flags which value is going to be changed. - * \param pValue If \c true, bit flags will be set, otherwise bits will be un-set. */ - void SetObjectFlags(EObjectFlag pFlags, bool pValue); - - /** Get the state of object flags. - * \param pFlags Bit flags to query. - * \return \c true if the specified bit flags are all set. */ - bool GetObjectFlags(EObjectFlag pFlags) const; - - /** Override all object flags at once. - * \param pFlags The bit flags to set all the object flags to. - * \remark This function will override all flags; unspecified bit flags will be un-set. */ - void SetAllObjectFlags(FbxUInt pFlags); - - /** Get all object flags at once. - * \return All bit flags at once. */ - FbxUInt GetAllObjectFlags() const; - //@} - - //! \name Copying, Cloning and Referencing - //@{ - /** Copy an object content into this object. - * \param pObject The source object to copy data from. - * \return Returns the destination object being modified by the source. - * \remark This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied. */ - virtual FbxObject& Copy(const FbxObject& pObject); - - //! Types of clones that can be created for FbxObject. - enum ECloneType - { - eDeepClone, //!< A deep copy of the object. Changes to either the original or clone properties do not propagate to each other. - eReferenceClone //!< Changes to original object properties propagate to clone. Changes to clone properties do not propagate to original. - }; - - /** Creates a clone of this object. - * By default, the connections are NOT cloned. If the desired effect is to clone the connections as well, you must clone using the FbxCloneManager - * (refer to this class documentation for further details). - * - * \param pCloneType The type of clone to be created. By default, the clone type is eDeepClone. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean the new object - * will become a source to the container, connection-wise. - * \param pSet See remark section. - * \return The new clone, or NULL (if the specified clone type is not supported). - * \remark When doing either a "deep" or "reference" clone type, the clone will always get its properties values set from - * the source object properties values. - * \remark Since this is a virtual function, some classes might do additional tasks. - * \remark The \e pSet argument is not used in the default implementation of this method. Specialized implementations should - * cast this pointer to FbxCloneManager::CloneSet to have access to the cloned objects so far. Typically, this - * pointer is set by the clone manager. - */ - virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; - - /** Checks if this object is a reference clone of another object. - * \return \c True if this object is a clone of another object, \c false otherwise */ - bool IsAReferenceTo() const; - - /** If this object is a reference clone, returns the original object (from which the clone originates). - * \return The original object, or NULL (if this object is not a reference clone). */ - FbxObject* GetReferenceTo() const; - - /** Checks if any objects are reference cloned from this object. - * \return \c True if there are objects reference cloned from this object, \c false otherwise. */ - bool IsReferencedBy() const; - - /** Returns the number of objects that are reference clones of this object. - * \return The number of objects that are reference clones of this object. */ - int GetReferencedByCount() const; - - /** Returns a reference clone of this object at the specified index. - * \param pIndex The specified index, valid values are [0, GetReferencedByCount()) - * \return The reference clone, or NULL (if pIndex is out of range). */ - FbxObject* GetReferencedBy(int pIndex) const; - //@} - - /** - * \name Object Name Management - */ - //@{ - /** Sets the name of this object. - * \param pName The object name as a \c NULL terminated string. - */ - void SetName(const char* pName); - - /** Returns the full name of this object. - * \return The full name as a \c NULL terminated string. - */ - const char* GetName() const; - - /** Returns the name of the object without the namespace qualifier. - * \return The object name without the namespace qualifier. - */ - FbxString GetNameWithoutNameSpacePrefix() const; - - /** Returns the name of the object with the namespace qualifier. - * \return The object name with the namespace qualifier. - */ - FbxString GetNameWithNameSpacePrefix() const; - - /** Sets the initial name of the object. - * \param pName The object's initial name as a \c NULL terminated string. - */ - void SetInitialName(const char* pName); - - /** Returns the initial name of the object. - * \return The object's initial name as a \c NULL terminated string. - */ - const char* GetInitialName() const; - - /** Returns the namespace of the object. - * \return The object's namespace as a \c NULL terminated string. - */ - FbxString GetNameSpaceOnly(); - - /** Sets the namespace of the object. - * \param pNameSpace The object's namespace as a \c NULL terminated string. - */ - void SetNameSpace(FbxString pNameSpace); - - /** Returns an array of all the namespaces for this object - * \param identifier The identifier of the namespaces. - * \return The array of all namespaces. - */ - FbxArray GetNameSpaceArray(char identifier); - - /** Returns only the name (no namespace or prefix) of the object. - * \return The name only as a \c NULL terminated string. - */ - FbxString GetNameOnly() const; - - /** Returns the namespace qualifier. - * \return The namespace qualifier. - */ - FbxString GetNameSpacePrefix() const; - - /** Removes the prefix of pName - * \param pName Whose prefix is removed. - * \return A temporary string without prefix. - */ - static FbxString RemovePrefix(const char* pName); - - /** Strips the prefix of pName - * \param lName Whose prefix is stripped. - * \return lName stripped of its prefix. - */ - static FbxString StripPrefix(FbxString& lName); - - /** Strips the prefix of pName - * \param pName Whose prefix is stripped. - * \return A temporary string stripped of its prefix. - */ - static FbxString StripPrefix(const char* pName); - - //!Returns the unique ID of this object. - const FbxUInt64& GetUniqueID() const; - //@} - - /** - * \name Selection management - */ - //@{ - /** Returns if this object is currently in a selected state. - * \return \c True if this object is selected, \c false otherwise. - */ - virtual bool GetSelected(); - - /** Sets whether this object is currently selected. - * \param pSelected The selection flag. - */ - virtual void SetSelected(bool pSelected); - //@} - - /** - * \name User data - */ - //@{ - /** Sets the data pointer for an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - void SetUserDataPtr(const FbxUInt64& pUserID, void* pUserData); - - /** Returns the data pointer of an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - void* GetUserDataPtr(const FbxUInt64& pUserID) const; - - /** Sets the data pointer for the user data record whose ID is the object ID. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - inline void SetUserDataPtr(void* pUserData){ SetUserDataPtr(GetUniqueID(), pUserData); } - - /** Returns the data pointer of the user data record whose ID is the object ID. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - inline void* GetUserDataPtr() const { return GetUserDataPtr(GetUniqueID()); } - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this object to a source object. - * \param pObject The source object to which this object connects. - * \param pType The connection type between this object and the source object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectSrcObject(pObject,pType); } - - /** Judges whether this object connects with the source object. - * \param pObject The source object. - * \return \c True if this object connects with the source object, \c false otherwise. - */ - inline bool IsConnectedSrcObject(const FbxObject* pObject) const { return RootProperty.IsConnectedSrcObject(pObject); } - - /** Disconnects this object from a source object. - * \param pObject The source object from which this object will be disconnected. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcObject(FbxObject* pObject){ return RootProperty.DisconnectSrcObject(pObject); } - - /** Disconnects this object from all source objects. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(); } - - /** Disconnects this object from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(pCriteria); } - - /** Returns the number of source objects with which this object connects. - * \return The number of source objects with which this object connects. - */ - inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(); } - - /** Returns the number of source objects that satisfy the given criteria with which this object connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this object connects. - */ - inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(pCriteria); } - - /** Returns the source object with which this object connects at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(int pIndex=0) const { return RootProperty.GetSrcObject(pIndex); } - - /** Returns the source object that satisfies the criteria at the specified index with which this object connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetSrcObject(pCriteria,pIndex); } - - /** Searches the source object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pName,pStartIndex); } - - /** Searches the source object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all source objects of the specified class type. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all source objects that are of the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this object connects. - * \return The number of source objects of the specified class type with which this object connects. */ - template inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of source objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. */ - template inline T* GetSrcObject(int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that is of the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name that is the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this object to one destination object. - * \param pObject The destination object with which this object connects. - * \param pType The connection type between this object and the destination object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectDstObject(pObject,pType); } - - /** Judges whether this object connects with the destination object. - * \param pObject The destination object. - * \return \c True if this object connects with the destination object, \c false otherwise. - */ - inline bool IsConnectedDstObject(const FbxObject* pObject) const { return RootProperty.IsConnectedDstObject(pObject); } - - /** Disconnects this object from the destination object. - * \param pObject The destination object from which this object disconnects. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstObject(FbxObject* pObject) { return RootProperty.DisconnectDstObject(pObject); } - - /** Disconnects this object from all destination objects. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(); } - - /** Disconnects this object from all destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(pCriteria); } - - /** Returns the number of destination objects with which this object connects. - * \return The number of destination objects with which this object connects. - */ - inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(); } - - /** Returns the number of destination objects with which this object connects that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects with which this object connects that satisfy the given criteria. - */ - inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(pCriteria); } - - /** Returns the destination object at the specified index with which this object connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(int pIndex=0) const { return RootProperty.GetDstObject(pIndex); } - - /** Returns the destination object with which this object connects that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetDstObject(pCriteria,pIndex); } - - /** Searches the destination object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pName,pStartIndex); } - - /** Searches the destination object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all destination objects of the specified class type. - * \return \c true if it disconnects all destination objects of the specified class type successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all destination objects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all destination objects successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this object connects. - * \return The number of destination objects of the specified class type with which this object connects. */ - template inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object with which this object connects that is the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. */ - template inline T* GetDstObject(int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object with which this object connects that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that is the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name Property Management - */ - //@{ - /** Returns the first property of this object. - * \return The first property of this object. - */ - inline FbxProperty GetFirstProperty() const - { - return RootProperty.GetFirstDescendent(); - } - - /** Returns the next property of this object that follows the specified property. - * \param pProperty The specified property. - * \return The next property of this object that follows pProperty. - */ - inline FbxProperty GetNextProperty(const FbxProperty& pProperty) const - { - return RootProperty.GetNextDescendent(pProperty); - } - - /** Searches a property by name. - * \param pName The property name. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pCaseSensitive ); - } - - /** Searches a property by name and data type. - * \param pName The property name. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pDataType, pCaseSensitive ); - } - - /** Searches a property by full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pCaseSensitive ); - } - - /** Searches a property by full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pDataType, pCaseSensitive ); - } - - /** Returns the class root property. - * \return The class root property if it exists, else an invalid FbxProperty. See FbxProperty::IsValid(). - * \remarks Class FbxObject and its sub-classes all have a class root property. This class root property contains basic information about the class type, such as the class name. - */ - FbxProperty GetClassRootProperty(); - - /** Connects this object to a source property. - * \param pProperty The source property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.ConnectSrcProperty(pProperty); } - - /** Determines whether this object connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this object connects with the specified source property, \c false otherwise. - */ - inline bool IsConnectedSrcProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedSrcProperty(pProperty); } - - /** Disconnects this object from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectSrcProperty(pProperty); } - - /** Returns the number of source properties with which this object connects. - * \return The number of source properties with which this object connects. - */ - inline int GetSrcPropertyCount() const { return RootProperty.GetSrcPropertyCount(); } - - /** Returns the source property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - inline FbxProperty GetSrcProperty(int pIndex=0) const { return RootProperty.GetSrcProperty(pIndex); } - - /** Searches a source property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - inline FbxProperty FindSrcProperty(const char* pName,int pStartIndex=0) const { return RootProperty.FindSrcProperty(pName,pStartIndex); } - - /** Connects this object to a destination property. - * \param pProperty The destination property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstProperty(const FbxProperty& pProperty) { return RootProperty.ConnectDstProperty(pProperty); } - - /** Determines if this object connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this object connects with the specified destination property, \c false otherwise. - */ - inline bool IsConnectedDstProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedDstProperty(pProperty); } - - /** Disconnects this object from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectDstProperty(pProperty); } - - /** Returns the number of destination properties with which this object connects. - * \return The number of destination properties with which this object connects. - */ - inline int GetDstPropertyCount() const { return RootProperty.GetDstPropertyCount(); } - - /** Returns the destination property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - inline FbxProperty GetDstProperty(int pIndex=0) const { return RootProperty.GetDstProperty(pIndex); } - - /** Searches a destination property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - inline FbxProperty FindDstProperty(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstProperty(pName,pStartIndex); } - //@} - - /** - * \name Off-Loading Management - * \remarks You can modify the unloaded state flag using the SetObjectFlags() - * method. The ContentIsUnloaded() method below (implemented in this class) - * is simply a synonym of GetObjectFlags(eCONTENT_UNLOADED_FLAG) - */ - //@{ - /** Unloads this object's content using the offload peripheral that is currently set in the document - * then flushes it from memory. - * \return 2 if the object's content is already unloaded or 1 if - * this object's content has been successfully unloaded to the current - * peripheral. - * - * \remarks If the content is locked more than once, or the peripheral cannot handle - * this object's unloading, or if an error occurs, this method returns 0 and does not flush the content. - */ - int ContentUnload(); - - /** Loads this object's content using the offload peripheral that is currently set in the document. - * \return 1 if this object's content has been successfully loaded from the current - * peripheral, 2 if the content is already loaded, and 0 if an error occurs or - * the object's content is locked. - * \remarks On a successful Load attempt, the object content is locked. - */ - int ContentLoad(); - - /** Judges if this object's content is loaded. - * \return \c True if this object's content is loaded, \c false otherwise. - * \remarks An object that has not been filled yet must be considered - * unloaded. - */ - bool ContentIsLoaded() const; - - /** Decreases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentDecrementLockCount(); - - /** Increases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentIncrementLockCount(); - - /** Judges if this object's content is locked. The content is considered locked if the content lock count - * is greater than 0 - * \return \c True if this object's content is locked, \c false otherwise. - * \remarks A locked state prevents the object content from being unloaded from memory but - * does not block the loading. - */ - bool ContentIsLocked() const; - - /** Writes the content of the object to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - virtual bool ContentWriteTo(FbxStream& pStream) const; - - /** Reads the content of the object from the given stream. - * \param pStream The source stream. - * \return \c True if the object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - virtual bool ContentReadFrom(const FbxStream& pStream); - //@} - - /** - * \name Logging. - */ - //@{ - /** Emits a message in all available message emitters in the document or SDK manager. - * \param pMessage The message to emit. - * \remarks The ownership of the message is transferred, don't delete it. - */ - void EmitMessage(FbxMessage* pMessage) const; - //@} - - /** - * \name Localization helper. - */ - //@{ - /** Localization helper function, it calls the implementation of FBX SDK manager. - * Sub-classes that manage their own localization could over-ride this function. - * \param pID The identifier of the text to be localized. - * \param pDefault The default text. Uses pID as the default text if pDefault is NULL. - * \return The localized text or the default text if the text can't be localized, . - */ - virtual const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name Application Implementation Management - */ - //@{ - /** Returns a handle on the parent library of this object. - * \return The parent library of this object, or \c NULL if the parent library doesn't exist. - */ - FbxLibrary* GetParentLibrary() const; - - /** Adds an implementation. - * \param pImplementation The implementation to be added. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has not already been added to this node. - */ - bool AddImplementation(FbxImplementation* pImplementation); - - /** Removes an implementation. - * \param pImplementation The implementation to be removed. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - */ - bool RemoveImplementation(FbxImplementation* pImplementation); - - /** Determines if this shading node has a default implementation. - * \return \c True if this shading node has a default implementation, \c false otherwise. - */ - bool HasDefaultImplementation(void) const; - - /** Returns the default implementation of this shading node. - * \return The default implementation of this shading node. - */ - FbxImplementation* GetDefaultImplementation(void) const; - - /** Sets the default implementation of this shading node. - * \param pImplementation The implementation to be set. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - * Only the implementation which has already been added can be set as the default implementation. - */ - bool SetDefaultImplementation(FbxImplementation* pImplementation); - - /** Returns the number of implementations that satisfy a given criteria. - * \param pCriteria The given criteria. - * \returns The number of implementations. - */ - int GetImplementationCount(const FbxImplementationFilter* pCriteria=NULL) const; - - /** Returns the implementation at the specified index that satisfies the given criteria. - * \param pIndex The specified index. - * \param pCriteria The given criteria. - * \return The implementation at the specified index, NULL if not found. - */ - FbxImplementation* GetImplementation(int pIndex, const FbxImplementationFilter* pCriteria=NULL) const; - //@} - - /** - * \name Object Storage && Retrieval - */ - //@{ - /** Returns the URL of this object. - * \return The URL of this object. - * \remarks The URL indicates where the object is stored. - */ - virtual FbxString GetUrl() const; - - /** Sets the URL of this object. - * \param pUrl The URL to be set. - * \return \c True on success, \c false otherwise. - * \remarks The URL indicates where the object is stored. - */ - virtual bool SetUrl(const char* pUrl); - //@} - - /** \name Run-time ClassId Management */ - //@{ - /** Set the run-time ClassId for this class. In most contexts, users do not have to change the run-time ClassId, they are automatically generated when registered a new class during run-time. - * \param pClassId The ClassId to set as the run-time ClassId for this object. */ - void SetRuntimeClassId(const FbxClassId& pClassId); - - /** Retrieve the run-time ClassId for this object. - * \return The run-time ClassId for this object. */ - FbxClassId GetRuntimeClassId() const; - - /** Test if this class is a hierarchical children of the specified class type. This test will be performed on the run-time class registered with the FBX SDK Manager rather than the static ClassId generated at compile time. - * \param pClassId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remarks This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool IsRuntime(const FbxClassId& pClassId) const; - - /** Find out if the ClassId was registered during run-time rather than at compile time. - * \return True if the run-time ClassId is inequal to the ClassId. */ - bool IsRuntimePlug() const; - //@} - - /** Compact the memory used by this object. - * \remark Note that this function might not result in saved memory because it depends if the sub-class implements it, or if any memory can actually be saved. */ - virtual void Compact(); - - //! The root property that holds all children property for this object - FbxProperty RootProperty; - -protected: - /** Optional constructor override, automatically called by default constructor. - * \param pFrom If not null, the function must take it into account like a copy constructor. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Construct(pFrom) at the beginning. */ - virtual void Construct(const FbxObject* pFrom); - - /** Optional property constructor override, automatically called by default constructor. - * \param pForceSet If the property value must be set regardless of default value. - * \remark If your object have properties, they must be initialized in this function. */ - virtual void ConstructProperties(bool pForceSet); - - /** Optional destructor override, automatically called by default destructor. - * \param pRecursive If true, children objects should be destroyed as well. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Destruct(pResursive) at the end. */ - virtual void Destruct(bool pRecursive); - - /** Clears this object's content from memory. This method must be overridden in the derived classes. - * \remark This method is called by ContentUnload() if the object content's unloading is successful. */ - virtual void ContentClear(); - - /** Retrieves the peripheral of that object. - * \return The current peripheral for that object - * \remark A peripheral manipulates the content of an object. For instance, a peripheral can load the connections of an object on demand. */ - virtual FbxPeripheral* GetPeripheral(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - virtual bool Compare(FbxObject* pOtherObject); - - //Basic comparison operator implementation. It simply compare property values between source and target. - //NOTE: If a property cannot be found on one of the object, the comparison fails (return false). - //Different classid will fail comparison as well as different property count. Reference properties are not compared. - bool operator==(const FbxObject& pObject); - bool operator!=(const FbxObject& pObject); - - virtual void SetDocument(FbxDocument* pDocument); - - inline FbxPropertyHandle& GetPropertyHandle() { return RootProperty.mPropertyHandle; } - - //Important note: If this function is not implemented, the pFileSubTypeName string used when registering your - //class via FbxManager::RegisterFbxClass will be used instead. This makes it useless to re-implement this - //function if you do not intend to return a different string for the same class. - virtual const char* GetTypeName() const; - virtual FbxStringList GetTypeFlags() const; - - // This function will go as deep as possible to clear the Connection list without sending - // notifications to the connections to give them the chance to Disconnect themselves. - // This is a bypass of the intended workflow and should be used with care. - void WipeAllConnections(); - - //Used as global flag to modify the behavior of FbxObject::Destruct() during a ForceKill() on the scene. This is for internal use. - static void SetWipeMode(bool pState); - static bool GetWipeMode(); - -protected: - FbxObject(FbxManager& pManager, const char* pName); - - enum EPropertyNotifyType - { - ePropertySetRequest, - ePropertySet, - ePropertyGet - }; - - virtual bool ConnectNotify(const FbxConnectEvent& pEvent); - virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); - bool Copyable(const FbxObject& pObject); - -private: - void CopyPropertiesFrom(const FbxObject& pFrom); - void SetClassRootProperty(FbxProperty& lProperty); - int GetFlatPropertyCount() const; - - FbxNameHandler mName; - FbxClassId mRuntimeClassId; - FbxUserDataRecord* mUserData; - FbxManager* mManager; - FbxImplementation* mDefaultImplementation; - FbxUInt64 mUniqueID; - FbxInt32 mObjectFlags; - FbxInt32 mContentLockCount; - FbxInt32 mUserDataCount; - static bool mWipeMode; - - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A utility class for iterating over the properties (FbxProperty) of any FbxObject. -* \nosubgrouping -*/ -template class FbxIterator -{ -public: - /** Constructor. - *\param pObject The object whose properties are going to be iterated. - */ - FbxIterator(const FbxObject* pObject) : mObject(pObject) {} - - /** Get the first property of the object. - * \return The first property of the object. - */ - inline const FbxProperty& GetFirst() { mProperty = mObject->GetFirstProperty(); return mProperty; } - - /** Get next property of the object. - * \return The next property of the object. - */ - inline const FbxProperty& GetNext() { mProperty = mObject->GetNextProperty(mProperty); return mProperty; } - -private: - FbxProperty mProperty; - const FbxObject* mObject; -}; - -/** A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } - - FbxProperty mProperty; //! The property to iterate. If iterate an object, this is the root property of the object. - FbxClassId mClassId; //! The class ID specifies the type of the source objects to be retrieved. - int mSize; //! The number of source objects whose type is specified by mClassId. - int mIndex; //! Iterate index. -}; - -/** - * A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorSrcBase with template. - * \nosubgrouping - */ -template class FbxIteratorSrc : protected FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxObject* pObject) : FbxIteratorSrcBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxProperty& pProperty) : FbxIteratorSrcBase(pProperty,Type::ClassId) {} - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorSrcBase::GetFirst(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorSrcBase::GetNext(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorSrcBase::GetSafeNext(); } - - /** - * Get the last source object that connects to the property or object. - * \return The last source object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorSrcBase::GetLast(); } - - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorSrcBase::GetPrevious(); } - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last source object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorSrcBase::GetSafePrevious(); } -}; - -/** A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorDstBase -{ -protected: - /** The property to iterate. If iterate an object, this is the root property of the object. */ - FbxProperty mProperty; - /** The class ID specifies the type of the destination objects to be retrieved. */ - FbxClassId mClassId; - /** The number of destination objects whose type is specified by mClassId. */ - int mSize; - /** Iterate index. */ - int mIndex; - -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - * \param pClassId The class ID specifies the type of the destination objects. - */ - inline FbxIteratorDstBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorDstBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } -}; - -/** - * A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorDstBase with template. - * \nosubgrouping - */ -template class FbxIteratorDst : protected FbxIteratorDstBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxObject* pObject) : FbxIteratorDstBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxProperty& pProperty) : FbxIteratorDstBase(pProperty,Type::ClassId) {} - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorDstBase::GetFirst(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorDstBase::GetNext(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorDstBase::GetSafeNext(); } - - /** - * Get the last destination object that connects to the property or object. - * \return The last destination object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorDstBase::GetLast(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorDstBase::GetPrevious(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last destination object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorDstBase::GetSafePrevious(); } -}; - -/** Convert the class type parameter into a C class parameter for other function inputs. - * Usage example: - * \code - * //Assuming MyCamera is a valid FbxCamera object - * bool AreCamerasObject = MyCamera->Is(); //Should return true :) - * \endcode - */ -#define FBX_TYPE(class) ((const class*)0) - -/** Safe casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline T* FbxCast(FbxObject* pObject) -{ - return pObject && pObject->Is() ? (T*)pObject : 0; -} - -/** Safe const casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline const T* FbxCast(const FbxObject* pObject) -{ - return pObject && pObject->Is() ? (const T*)pObject : 0; -} - -//! Macro used to iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject). -#define FbxForEach(Iterator, Object) for((Object)=(Iterator).GetFirst();(Object)!=0;(Object)=(Iterator).GetNext()) - -//! Macro used to reversely iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject) -#define FbxForEachReverse(Iterator, Object) for(Object=(Iterator).GetLast();(Object)!=0;Object=(Iterator).GetPrevious()) - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxConnectEvent -{ -public: - enum EType - { - eConnectRequest, - eConnect, - eConnected, - eDisconnectRequest, - eDisconnect, - eDisconnected - }; - - enum EDirection - { - eSource, - eDestination - }; - - inline FbxConnectEvent(EType pType,EDirection pDir,FbxProperty *pSrc,FbxProperty *pDst) : - mType(pType), - mDirection(pDir), - mSrc(pSrc), - mDst(pDst) - { - } - inline EType GetType() const { return mType; } - inline EDirection GetDirection() const { return mDirection; } - inline FbxProperty& GetSrc() const { return *mSrc; } - inline FbxProperty& GetDst() const { return *mDst; } - template inline T* GetSrcIfObject() const { return mSrc->IsRoot() ? FbxCast(mSrc->GetFbxObject()) : (T*)0; } - template inline T* GetDstIfObject() const { return mDst->IsRoot() ? FbxCast(mDst->GetFbxObject()) : (T*)0; } - -private: - EType mType; - EDirection mDirection; - FbxProperty* mSrc; - FbxProperty* mDst; -}; - -class FbxObjectPropertyChanged : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxObjectPropertyChanged); - -public: - FbxObjectPropertyChanged(FbxProperty pProp) : mProp(pProp) {} - FbxProperty mProp; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_OBJECT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxperipheral.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxperipheral.h deleted file mode 100644 index d5e7265..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxperipheral.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxperipheral.h -#ifndef _FBXSDK_CORE_PERIPHERAL_H_ -#define _FBXSDK_CORE_PERIPHERAL_H_ - -#include - -#include - -class FbxObject; - -/** FbxPeripheral is an interface to load/unload content of FbxObject from memory to -somewhere you defined, for example, to a temporary file on disk . -* \nosubgrouping -* You need to inherited your own peripheral class from this class and overload -* the functions to control what information of a FbxObject you want to load/unload, -* and where you are going to load/unload these information to. -* For example, you can ask an object to dump itself on disk to free some memory and vice-versa -* when you want to load/unload this object from your scene flexibly. -*/ -class FBXSDK_DLL FbxPeripheral -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - //!Constructor. - FbxPeripheral(); - - //!Destructor. - virtual ~FbxPeripheral(); - //@} - - /** Reset the peripheral to its initial state. - */ - virtual void Reset() = 0; - - /** Unload the content of pObject. - * \param pObject Object whose content is to be offloaded into - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool UnloadContentOf(FbxObject* pObject) = 0; - - /** Load the content of pObject. - * \param pObject Object whose content is to be loaded from - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool LoadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can unload the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content and - * has enough space in its storage area.\c false otherwise. - */ - virtual bool CanUnloadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can load the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content. - * \c false otherwise. - */ - virtual bool CanLoadContentOf(FbxObject* pObject) = 0; - - /** Initialize the connections of an object - * \param pObject Object on which the request for connection is done. - */ - virtual void InitializeConnectionsOf(FbxObject* pObject) = 0; - - /** Uninitialize the connections of an object - * \param pObject Object on which the request for disconnection is done. - */ - virtual void UninitializeConnectionsOf(FbxObject* pObject) = 0; -}; - -// predefined offload peripherals -extern FBXSDK_DLL FbxPeripheral* NULL_PERIPHERAL; -extern FBXSDK_DLL FbxPeripheral* TMPFILE_PERIPHERAL; -#include - -#endif /* _FBXSDK_CORE_PERIPHERAL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugin.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugin.h deleted file mode 100644 index 960e4d9..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugin.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugin.h -#ifndef _FBXSDK_CORE_PLUGIN_H_ -#define _FBXSDK_CORE_PLUGIN_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include -#include - -#include - -class FbxManager; -class FbxPluginContainer; - -//! Plug-in declaration macro that must to be used when defining new FbxPlugin objects. -#define FBXSDK_PLUGIN_DECLARE(Plugin)\ - FBXSDK_FRIEND_NEW();\ -public:\ - static Plugin * Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle);\ - void Destroy(); - -//! Plug-in implementation macro that must be used when implementing new FbxPlugin objects. -#define FBXSDK_PLUGIN_IMPLEMENT(Plugin)\ - Plugin* Plugin::Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle){ return FbxNew(pDefinition, pModuleHandle); }\ - void Plugin::Destroy(){ FbxDelete(this); } - -/** Structure used by plug-ins for identification purposes. - * \note To avoid confusions in the system, it is recommended to choose an appropriate unique identifier string name when - * defining your plug-in, as well as incrementing the version string to a correct value whenever something changes in the - * implementation of the plug-in. Both of these string are used when comparing plug-ins for searches, as well as - * identification in FBX files. - */ -struct FBXSDK_DLL FbxPluginDef -{ - //! Constructor - FbxPluginDef() : - mName("Unknown Name"), - mVersion("Unknown Version") - { - } - - FbxString mName; //!< The identifier name string of the plug-in. If the name is already used by another plug-in, the plug-in will still register. - FbxString mVersion; //!< The version string of the plug-in. -}; - -/** Data used to communicate information between an application and the plug-in. - */ -struct FBXSDK_DLL FbxPluginData -{ - //! Constructor - FbxPluginData() : - mQueryEmitter(NULL), - mSDKManager(NULL), - mPluginContainer(NULL) - { - } - - //! Copy Constructor - explicit FbxPluginData(const FbxPluginData& pOther) : - mQueryEmitter(pOther.mQueryEmitter), - mSDKManager(pOther.mSDKManager), - mPluginContainer(pOther.mPluginContainer) - { - } - - FbxEmitter* mQueryEmitter; //!< The emitter on which the plug-in can listen to receive events. - FbxManager* mSDKManager; //!< The FBX SDK Manager on which the plug-in was instanced. - FbxPluginContainer* mPluginContainer; //!< The container which will have the ownership of the plug-in. -}; - -/** The base class to inherit from when creating new plug-ins for the FBX SDK. Plug-ins for the FBX SDK are extremely flexible - * allowing a wide-range of possibilities. For example, one can write his own plug-in to add new readers/writers to the current list - * of supported I/O formats, or add new dynamic classes to instantiate custom objects that can later be stored in FBX files. We also use the same - * interface for plug-ins written using the FBX Extension SDK, which allow additional callbacks for other various Autodesk products - * enabling greater interoperability with multiple various SDKs. - * - * Here is typical implementation of an FBX SDK plug-in that doesn't do anything else than just registering itself: - * \code - * class MyPlugin : public FbxPlugin - * { - * FBXSDK_PLUGIN_DECLARE(MyPlugin); //This macro is mandatory for any plug-in definition - * - * protected: - * explicit MyPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle) : FbxPlugin(pDefinition, pModuleHandle) - * { - * } - * - * //Abstract functions that *must* be implemented - * virtual bool SpecificInitialize() - * { - * //For example, here we could register as many new I/O readers/writers as we would like, or classes, etc. - * return true; - * } - * - * virtual bool SpecificTerminate() - * { - * //Here we would have to unregister whatever we registered to the FBX SDK - * return true; - * } - * }; - * - * FBXSDK_PLUGIN_IMPLEMENT(MyPlugin); //This macro is mandatory for any plug-in implementation - * - * //Standard C export needed for any new FBX SDK plug-in - * extern "C" - * { - * static MyPlugin* sMyPluginInstance = NULL; //The module is owner of the plug-in - * - * //This function will be called when an application will request the plug-in - * #ifdef FBXSDK_ENV_WIN - * __declspec(dllexport) void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #else - * void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #endif - * { - * if( sPlugin == NULL ) - * { - * //Create the plug-in definition which contains the information about the plug-in - * FbxPluginDef sPluginDef; - * sPluginDef.mName = "My Plugin"; - * sPluginDef.mVersion = "1.0"; - * - * //Create an instance of the plug-in - * sMyPluginInstance = MyPlugin::Create(sPluginDef, pLibHandle); - * - * //Register the plug-in with the FBX SDK - * pContainer.Register(*sPlugin); - * } - * } - * } - * \endcode - * \see FbxPluginDef, FbxPluginData - */ -class FBXSDK_DLL FbxPlugin : public FbxListener -{ - FBXSDK_INTRUSIVE_LIST_NODE(FbxPlugin, 1); - -public: - /** Abstract function called once at the end of the plug-in construction. At that moment, plug-in data have been properly initialized. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificInitialize()=0; - - /** Abstract function called once at the beginning of the plug-in destruction. At that moment, plug-in data is fully available. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificTerminate()=0; - - /** Virtual function called once when the FBX SDK is about to write an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be written in the FBX file. - */ - virtual void WriteBegin(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to write plug-in's parameters. Users can re-implement it in their plug-in if they need - * to store properties in the FBX file for their own usage. The object in parameter is used to store those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to store properties about the plug-in. - */ - virtual void WriteParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK wrote an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered, but the changes will not appear in the FBX file. - * If not re-implemented, this function does nothing. - * \param pScene The scene that was written in the FBX file. - */ - virtual void WriteEnd(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be read in the FBX file. - */ - virtual void ReadBegin(FbxScene& pScene); - - /** Virtual function called once after the FBX SDK reads the plug-in's parameters. Users can re-implement it in their plug-in if they need - * to retrieve properties for their own usage. The object in parameter is used to retrieve those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to read properties about the plug-in. - */ - virtual void ReadParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that was read in the FBX file. - */ - virtual void ReadEnd(FbxScene& pScene); - - /** Accessor to the plug-in definition structure that contains basic information on the plug-in like its name or version. This is - * the only method available to differentiate plug-ins. - * \return The definition structure for this plug-in. - */ - const FbxPluginDef& GetDefinition() const; - - /** Retrieve the module address pointer for this plug-in. With this module instance handle, for example someone can query procedures addresses, - * allowing more complex interactions, as well as other operating system module specific functions. - */ - FbxModule GetModuleHdl(); - -protected: - /** Use the Create() and Destroy() methods declared and implemented in the FBXSDK_PLUGIN_DECLARE and FBXSDK_PLUGIN_IMPLEMENT macros to construct and destroy FbxPlugin objects. - * \param pDefinition The definition associated with this plug-in. Each plug-in must have its own definition to differentiate it with other plug-ins. - * \param pModuleHandle A pointer to the plug-in module address. - */ - explicit FbxPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle); - - /** Accessor to the plug-in private data. - * \return The data for the current plug-in. - */ - FbxPluginData& GetData(); - - /** Const accessor to the plug-in private data. - * \return The const data for the current plug-in. - */ - const FbxPluginData& GetData() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - inline FbxObject& GetPluginSettings() { return *mPluginSettings; } - inline const FbxObject& GetPluginSettings() const { return *mPluginSettings; } - template inline FbxEventHandler* Bind(void (ListernerType::*pFunc)(const EventType*)) - { - return FbxListener::Bind(*(GetData().mQueryEmitter), pFunc ); - } - virtual void Destroy() = 0; - -protected: - virtual ~FbxPlugin(); - -private: - bool Initialize(const FbxPluginData& pData); - bool Terminate(); - - bool mInitialized; - FbxPluginData mData; - FbxPluginDef mDefinition; - FbxModule mModuleHandle; - FbxObject* mPluginSettings; - - friend class FbxLoadingStrategy; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugincontainer.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugincontainer.h deleted file mode 100644 index 4e5d389..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxplugincontainer.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugincontainer.h -#ifndef _FBXSDK_CORE_PLUGIN_CONTAINER_H_ -#define _FBXSDK_CORE_PLUGIN_CONTAINER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** Manages registration and ownership of FBX SDK plug-ins (FbxPlugin). - * The FBX SDK will provide a pointer to FbxPluginContainer as an argument - * to the FBXPluginRegistration() function exported from a plug-in's DLL. - * A plug-in must register itself explicitly with the FbxPluginContainer - * by calling FbxPluginContainer::Register() after it is constructed. - * For an example of this process see the code example in the FbxPlugin - * class documentation. - * \see FbxPlugin - */ -class FBXSDK_DLL FbxPluginContainer : public FbxEmitter -{ -public: - //! Definition of a plug-in list. - typedef FbxIntrusiveList PluginList; - - /** The registration function that must be called when the module containing the plug-in is loaded. - * \param pPlugin The plug-in to register. - */ - void Register(FbxPlugin& pPlugin); - - /** The unregistration function that must be called when the module containing the plug-in is unloaded. - * \param pPlugin The plug-in to unregister. - */ - void Unregister(FbxPlugin& pPlugin); - - /** Const accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - const PluginList& GetPlugins() const; - - /** Accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - PluginList& GetPlugins(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual ~FbxPluginContainer(); - PluginList mPlugins; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_CONTAINER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxproperty.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxproperty.h deleted file mode 100644 index e2d0511..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxproperty.h +++ /dev/null @@ -1,1240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproperty.h -#ifndef _FBXSDK_CORE_PROPERTY_H_ -#define _FBXSDK_CORE_PROPERTY_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxObject; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; -class FbxAnimEvaluator; - -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval = false); - -/** \brief Class to hold user properties. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProperty -{ -public: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Creates a runtime property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, parent property checks if it has a child property already with pName, if \c false, the new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pCompoundProperty already has a child property with pName. - */ - static FbxProperty Create(const FbxProperty& pCompoundProperty, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a runtime property on the specified object. - * \param pObject The object on which the property will be created. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, pObject checks whether it already has a property with pName, if \c false, a new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pObject already has a child property with pName. - */ - static FbxProperty Create(FbxObject* pObject, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a dynamic property from another property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, parent property checks if it already has a child property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(const FbxProperty& pCompoundProperty, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Creates a dynamic property from another property on the specified object. - * \param pObject The object that contains this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, pObject checks if it already has a property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(FbxObject* pObject, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Destroys a dynamic property. - */ - void Destroy(); - - /** Destroys a dynamic property and its children - * \remarks Destroy all children of current property, and current property will also be destroyed. - */ - void DestroyRecursively(); - - /** Destroys children of a dynamic property. - * \remarks Destroy all children of current property, and current property will not be destroyed. - */ - void DestroyChildren(); - - /** Static property constructor. - */ - FbxProperty(); - - /** Copy constructor for properties. - * \param pProperty The property copied to this one. - */ - FbxProperty(const FbxProperty& pProperty); - - /** Copy constructor for properties. - * \param pPropertyHandle The property handle copied to this property handle. - */ - FbxProperty(const FbxPropertyHandle& pPropertyHandle); - - /** Static property destructor. - */ - ~FbxProperty(); - //@} - - /** - * \name Property Identification. - */ - //@{ - /** Returns the property data type. - * \return The property data type. - */ - FbxDataType GetPropertyDataType() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - FbxString GetName() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - const char* GetNameAsCStr() const; - - /** Returns the hierarchical name of the property. - * \return Property hierarchical name string. - */ - FbxString GetHierarchicalName() const; - - /** Returns the property label. - * \param pReturnNameIfEmpty If \c true, lets this method return the internal name if the label is empty. - * \return The property label if set, or the property internal name if the pReturnNameIfEmpty - * flag is set to \c true and the label has not been defined. - * \remarks Some applications may ignore the label field and work uniquely with the - * internal name. Therefore, it should not be taken for granted that a label exists. Also, remember - * that the label does not get saved in the FBX file. It only exists while the property object is - * in memory. - */ - FbxString GetLabel(bool pReturnNameIfEmpty=true) const; - - - /** Sets a label for the property. - * \param pLabel Label string. - */ - void SetLabel(const FbxString& pLabel); - - /** Returns the object that contains the property. - * \return The property object owner (or null if the property is an orphan). - */ - FbxObject* GetFbxObject() const; - //@} - - /** - * \name User data - */ - //@{ - /** Sets the user tag. - * \param pTag The user tag to be set. - */ - void SetUserTag(int pTag); - - //! Gets the user tag. - int GetUserTag(); - - /** Sets the user data pointer. - * \param pUserData The user data pointer. - */ - void SetUserDataPtr(void* pUserData); - - /** Gets the user data pointer. - * \return The user data pointer. - */ - void* GetUserDataPtr(); - //@} - - /** - * \name Property Flags. - */ - //@{ - /** Changes the property attribute. - * \param pFlag Property attribute identifier. - * \param pValue New state of pFlag. - */ - void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue); - - /** Returns the state of the property attribute. - * \param pFlag Property attribute identifier. - * \return The state of the property attribute(pFlag). - */ - bool GetFlag(FbxPropertyFlags::EFlags pFlag) const; - - /** Returns the state of all of the property attributes. - * \return The state of the property attributes(pFlags). - */ - FbxPropertyFlags::EFlags GetFlags() const; - - /** Returns the inheritance type of the given flag, similar to GetValueInheritType(). - * \param pFlag The flag to be queried. - * \return The inheritance type of the specific flag. - */ - FbxPropertyFlags::EInheritType GetFlagInheritType( FbxPropertyFlags::EFlags pFlag ) const; - - /** Sets the inheritance type for the specific flag, similar to SetValueInheritType(). - * \param pFlag The flag to be set. - * \param pType The inheritance type to be set. - * \return \c True on success, \c false otherwise. - */ - bool SetFlagInheritType( FbxPropertyFlags::EFlags pFlag, FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property flag has been modified from its default value. - * \param pFlag The flag to be queried. - * \return \c True if the value of this property has changed, \c false otherwise - */ - bool ModifiedFlag( FbxPropertyFlags::EFlags pFlag ) const; - //@} - - /** - * \name Assignment and comparison operators - */ - //@{ - /** Assignment operator. - * \param pProperty The property assigned to this property. - * \return This property. - */ - FbxProperty& operator= (const FbxProperty& pProperty); - - /** Equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if equal, \c false otherwise. - */ - bool operator== (const FbxProperty& pProperty) const; - - /** Non-equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!= (const FbxProperty& pProperty) const; - - /** Lesser operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxProperty& pProperty) const; - - /** Greater operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxProperty& pProperty) const; - - /** Equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue doesn't equal zero, or this property is invalid and pValue equals zero, \c false otherwise. - */ - inline bool operator== (int pValue) const { return (pValue == 0) ? !IsValid() : IsValid(); } - - /** Non-equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue equals zero, or this property is invalid and pValue doesn't equal zero, \c false otherwise. - */ - inline bool operator!= (int pValue) const { return (pValue != 0) ? !IsValid() : IsValid(); } - - /** Compares this property's value to another property's value. - * \param pProperty The property whose value is compared with this property's value. - * \return \c True if equal, \c false otherwise. - */ - bool CompareValue(const FbxProperty& pProperty) const; - //@} - - /** Copies the value of a property. - * \param pProperty The property from which to derive the value. - * \return \c True if value has been copied successfully, \c false otherwise. - */ - bool CopyValue(const FbxProperty& pProperty); - - /** - * \name Value management. - */ - //@{ - /** Gets the value of the property. - * \tparam T The data type of the value. - * \return The property value. - */ - template inline T Get() const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Sets the value of the property. - * \param pValue The new value - * \return \c True if type is compatible and the value is set successfully, \c false otherwise. - */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** Judges the property's validity. - * \return \c True if this property is valid, \c false otherwise. - */ - bool IsValid() const; - - /** Checks if the specified property's value has changed from its default value. - * \param pProperty Property that is tested. - * \return \c True if the property value is still the default, \c false otherwise. - * \remarks If the inheritance type of pProperty's value is eOverride, pProperty's value should - * have been modified, so pProperty doesn't have the default value. - * If the inheritance type of pProperty's value is eInherit, that means pProperty's value inherits - * the referenced object's property value, so pProperty has the default value. - */ - static bool HasDefaultValue(FbxProperty& pProperty); - - /** Queries the inheritance type of the property. - * Use this method to determine if this property's value is overridden from the default - * value, or from the referenced object, if this object is a clone. - * \return The inheritance type of the property. - */ - FbxPropertyFlags::EInheritType GetValueInheritType() const; - - /** Sets the inheritance type of the property. - * Use the method to explicitly override the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * You can also use this to explicitly inherit the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * \param pType The new inheritance type. - * \return \c True on success, \c false otherwise. - */ - bool SetValueInheritType( FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property's value has been modified from its default value. - * \return \c True if the value of the property has changed, \c false otherwise. - * \remarks If the inheritance type of the property's value is eOverride, the property's value should - * have been modified, it returns \c true. - * If the inheritance type of the property's value is eInherit, that means the property's value inherits - * the referenced object's property value, so the property's value is not modified and it returns \c false. - */ - bool Modified() const; - //@} - - /** - * \name Property Limits. - * Property limits are provided for convenience if some applications desire to - * bound the range of possible values for a given type property. FBX will never - * apply these limits internally, however it will store and retrieve the limits values - * from files, and will assure that they are persistent in memory - * while the property exists. - * - * Notes: - * - The limit value is truncated to the property data type. - * - * - These limits are meaningless for the boolean type. It is the responsibility of the - * calling application to implement the necessary instructions to limit the property of boolean type. - * - * - The SetMinLimit/SetMaxLimit methods will do nothing if SupportSetLimitsAsDoube() returns false. - */ - //@{ - /** Returns whether setting limits as a double number on this property type is allowed. - * \return \c True if allowed, \c false otherwise. - */ - bool SupportSetLimitAsDouble() const; - - /** Sets a minimum property value limit. - * \param pMin Minimum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMinLimit(double pMin); - - /** Returns whether a minimum limit exists, if it returns false, - * calling GetMinLimit() produces undefined behavior. - * \return \c True when a minimum limit exists, \c false otherwise. - */ - bool HasMinLimit() const; - - /** Returns the minimum property value limit. - * \return The minimum value limit. - */ - double GetMinLimit() const; - - /** Returns whether a maximum limit exists, if it returns false, - * calling GetMaxLimit() produces undefined behavior. - * \return \c True when a maximum limit exists, \c false otherwise. - */ - bool HasMaxLimit() const; - - /** Sets a maximum property value limit. - * \param pMax Maximum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMaxLimit(double pMax); - - /** Returns the maximum property value. - * \return The maximum value limit. - */ - double GetMaxLimit() const; - - /** Sets the minimum and maximum value limit of the property. - * \param pMin Minimum value allowed. - * \param pMax Maximum value allowed. - \return \c True if both the min and max limit have been set, \c false otherwise. - */ - bool SetLimits(double pMin, double pMax); - //@} - - /** - * \name Enum and property list - */ - //@{ - /** Adds a string value at the end of the enumeration list. - * \param pStringValue The string value to be added. - * \return The index in the list where the string is added or -1 if the action failed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to add a value that is already - * in the enumeration list will fail. - * Empty strings are not allowed. - */ - int AddEnumValue(const char* pStringValue); - - /** Inserts a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value to be inserted. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to insert a value that is already - * in the enumeration list will fail. - * pIndex must be in the range [0, ListValueGetCount()]. - * Empty strings are not allowed. - */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Returns the number of elements in the enumeration list. - * \return The number of elements in the enumeration list. - * \remarks This function returns 0 if the property type is not eFbxEnum or eFbxEnumM. - */ - int GetEnumCount() const; - - /** Sets a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value at the specific index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to set a value that is already - * in the enumeration list will fail. - * The function assigns the string value to the specific index. - * A string value must exist at the specific index in order to be changed. - * Empty strings are not allowed. - */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Removes the string value at the specified index. - * \param pIndex Index of the string value to be removed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnuM. - */ - void RemoveEnumValue(int pIndex); - - /** Returns a string value at the specified index - * \param pIndex Zero bound index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - */ - const char* GetEnumValue(int pIndex) const; - //@} - - /** - * \name Hierarchical properties - */ - //@{ - /** Judges if this property is the root property. - * \return \c True when this property is a root property, \c false otherwise. - */ - inline bool IsRoot() const { return mPropertyHandle.IsRoot(); } - - /** Judges whether this property is a child of the specified property. - * \param pParent The specified property. - * \return \c True when this property is a child of the specified property, \c false otherwise. - */ - inline bool IsChildOf(const FbxProperty& pParent) const { return mPropertyHandle.IsChildOf(pParent.mPropertyHandle); } - - /** Judges whether this property is a descendant of the specified property. - * \param pAncestor The specified property. - * \return \c True when this property is a descendant of the specified property, \c false otherwise. - */ - inline bool IsDescendentOf(const FbxProperty& pAncestor) const { return mPropertyHandle.IsDescendentOf(pAncestor.mPropertyHandle); } - - /** Returns the parent property of this property. - * \return The parent of this property. - */ - inline FbxProperty GetParent() const { return FbxProperty(mPropertyHandle.GetParent()); } - - /** Returns the first child of this property. - * \return The first child of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetChild() const { return FbxProperty(mPropertyHandle.GetChild()); } - - /** Returns the sibling of this property. - * \return The sibling of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetSibling() const { return FbxProperty(mPropertyHandle.GetSibling()); } - - /** Returns the first property that is a descendant of this property. - * \return The first descendant of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetFirstDescendent() const { return FbxProperty(mPropertyHandle.GetFirstDescendent()); } - - /** Returns the property that follows pProperty that is a descendant of this property. - * \param pProperty The last found descendant. - * \return The property that follows pProperty, if there is none, an invalid property is returned. - */ - inline FbxProperty GetNextDescendent(const FbxProperty& pProperty) const { return FbxProperty(mPropertyHandle.GetNextDescendent(pProperty.mPropertyHandle)); } - - /** Searches a property using its name. - * \param pName The name of the property as a \c NULL terminated string. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pCaseSensitive)); } - - /** Searches a property using its name and data type. - * \param pName The name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - - /** Searches a property using its full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pCaseSensitive)); } - - /** Searches a property using its full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - //@} - - /** - * \name Optimizations - */ - //@{ - //! Internal function for building a property name map. - inline void BeginCreateOrFindProperty(){ mPropertyHandle.BeginCreateOrFindProperty(); } - - //! Internal function for clearing the property name map. - inline void EndCreateOrFindProperty(){ mPropertyHandle.EndCreateOrFindProperty(); } - - //!This is an internal class that you can use to build and clear the name map of properties. You can use the name map to speed up searching for property names. - class FbxPropertyNameCache - { - public: - /** Constructor, the name map is created in the constructor. - * \param prop Property for building and clearing the name map. - */ - FbxPropertyNameCache(const FbxProperty& prop) : mProp(const_cast(prop)){ mProp.BeginCreateOrFindProperty(); } - - //! Destructor, the name map is destroyed in destructor. - ~FbxPropertyNameCache(){ mProp.EndCreateOrFindProperty(); } - - private: - FbxProperty& mProp; - FbxPropertyNameCache& operator=(const FbxPropertyNameCache& pOther){ mProp = pOther.mProp; mProp.BeginCreateOrFindProperty(); return *this; } - }; - //@} - - /** - * \name Animation Curve Management - */ - //@{ - /** Retrieve the proper animation evaluator to use for this property. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Find out if the property is animated: has a curve node with curves. - * \param pAnimLayer The animation layer to test for curve presence. Set to NULL if you want to use the default animation layer of the default animation stack. - * \return \c true if the property is animated. */ - bool IsAnimated(FbxAnimLayer* pAnimLayer=NULL) const; - - /** Evaluate the value of a property if it has animation and return the result as the template type. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ - template T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - FbxPropertyValue& EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Creates a FbxAnimCurveNode on the specified layer. - * \param pAnimLayer The animation layer the FbxAnimCurveNode object is attached to. - * \return Pointer to the created FbxAnimCurveNode. - * \remarks This function check the property FbxPropertyFlags::eAnimatable flag and fails to execute if it is not set. - * \remarks If created, the FbxAnimCurveNode is automatically connected to the property and the animation layer. - * \remarks The created FbxAnimCurveNode does not automatically allocate anim curves. - * \remarks On the successful execution of this function, the property eAnimated flag is set to \c true. */ - FbxAnimCurveNode* CreateCurveNode(FbxAnimLayer* pAnimLayer); - - /** Get the property's animation curve node on the default animation stack and base layer. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(bool pCreate=false); - - /** Get the property's animation curve node on the specified animation stack, using its base layer. - * \param pAnimStack The animation stack to use to get or create the property's animation curve node. - * \c NULL can be passed to automatically specify the default animation stack. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimStack* pAnimStack, bool pCreate=false); - - /** Get the property's animation curve node on the specified animation layer. - * \param pAnimLayer The animation layer to use to get or create the property's animation curve node. Cannot be NULL. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimLayer* pAnimLayer, bool pCreate=false); - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), NULL, pCreate); - } - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pChannel, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), pChannel, pCreate); - } - - /** Get the FbxAnimCurve of the specified channel from the specified animation layer. - * This function looks for the FbxAnimCurveNode named pName and the channel pChannel. It - * will retrieves the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pName Name of the curve node. It is an error to leave this field empty. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL - * use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. - * \remark If pChannel is NULL, this function is the equivalent of GetCurve(FbxAnimLayer*, bool). */ - FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pName, const char* pChannel, bool pCreate); - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this property to one source object. - * \param pObject The source object to which this property connects. - * \param pType The connection type between the property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the source object. - * \param pObject The source object. - * \return \c True if this property connects with the source object, \c false otherwise. - */ - bool IsConnectedSrcObject(const FbxObject* pObject) const; - - /** Disconnects this property from one source object. - * \param pObject The source object from which this property will be disconnected. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcObject(FbxObject* pObject); - - /** Disconnects this property from all the source objects. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(); - - /** Disconnects this property from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(const FbxCriteria& pCriteria); - - /** Returns the number of source objects with which this property connects. - * \return The number of source objects with which this property connects. - */ - int GetSrcObjectCount() const; - - /** Returns the number of source objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this property connects. - */ - int GetSrcObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the source object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const int pIndex=0) const; - - /** Returns the source object that satisfies the criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the source object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the source object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all source objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all source objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this property connects. - * \tparam T The specified class type. - * \return The number of source objects of the specified class type with which this property connects. - */ - template inline int GetSrcObjectCount() const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of source objects which are of the specified class type and satisfy the given criteria. - */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object which is of the specified class type and satisfies the given criteria at the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this property to one destination object. - * \param pObject The destination object with which this property connects. - * \param pType The connection type between this property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the destination object. - * \param pObject The destination object. - * \return \c True if this property connects with the destination object, \c false otherwise. - */ - bool IsConnectedDstObject(const FbxObject* pObject) const; - - /** Disconnects this property from the destination object. - * \param pObject The destination object from which this property disconnects from. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstObject(FbxObject* pObject); - - /** Disconnects this property from all the destination objects. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(); - - /** Disconnects this property from all the destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(const FbxCriteria& pCriteria); - - /** Returns the number of destination objects with which this property connects. - * \return The number of destination objects with which this property connects. - */ - int GetDstObjectCount() const; - - /** Returns the number of destination objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of destination objects that satisfy given criteria with which this property connects. - */ - int GetDstObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the destination object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const int pIndex=0) const; - - /** Returns the destination object that satisfies given criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies given criteria at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the destination object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the destination object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all the destination objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all the destination objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this property connects. - * \tparam T The specified class type. - * \return The number of destination objects of the specified class type with which this property connects. - */ - template inline int GetDstObjectCount() const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object of the specified class type at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object which is of the specified class type and satisfies the given criteria at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name General Property Connection and Relationship Management - */ - //@{ - // Properties - /** Connects this property to a source property. - * \param pProperty The source property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcProperty(const FbxProperty& pProperty); - - /** Judges whether this property connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this property connects with the specified source property, \c false otherwise. - */ - bool IsConnectedSrcProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcProperty(const FbxProperty& pProperty); - - /** Returns the number of source properties with which this property connects. - * \return The number of source properties with which this property connects. - */ - int GetSrcPropertyCount() const; - - /** Connects this property to a destination property. - * \param pProperty The destination property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstProperty(const FbxProperty& pProperty); - - /** Judges if this property connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this property connects with the specified destination property, \c false otherwise. - */ - bool IsConnectedDstProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstProperty(const FbxProperty& pProperty); - - /** Returns the number of destination properties with which this property connects. - * \return The number of destination properties with which this property connects. - */ - int GetDstPropertyCount() const; - - //!Clears the connection cache of this property, this cache is used to store the connections that satisfy the given criteria. - void ClearConnectCache(); - - /** Returns the source property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - FbxProperty GetSrcProperty(const int pIndex=0) const; - - /** Searches the source property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - FbxProperty FindSrcProperty(const char* pName, const int pStartIndex=0) const; - - /** Returns the destination property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - FbxProperty GetDstProperty(const int pIndex=0) const; - - /** Searches the destination property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - FbxProperty FindDstProperty(const char* pName, const int pStartIndex=0) const; - //@} - - //! Hierarchical separator of properties. - static const char* sHierarchicalSeparator; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxProperty(FbxObject* pObject, const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - FbxProperty(const FbxProperty& pParent, const char* pName, const FbxDataType& pDataType, const char* pLabel); - - bool Set(const void* pValue, const EFbxType& pValueType, bool pCheckForValueEquality=true); - bool Get(void* pValue, const EFbxType& pValueType) const; - - bool NotifySetRequest(); - bool NotifySet(); - bool NotifyGet() const; - -private: - inline void* Get() const { FBX_ASSERT_NOW("Cannot get property value as void!"); return NULL; } - inline bool Set(const void* &){ FBX_ASSERT_NOW("Cannot set property value as void!"); return false; } - - bool ConnectSrc(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectSrc(const FbxProperty& pProperty); - bool DisconnectAllSrc(); - bool DisconnectAllSrc(const FbxCriteria& pCriteria); - bool IsConnectedSrc(const FbxProperty& pProperty) const; - int GetSrcCount() const; - int GetSrcCount(const FbxCriteria& pCriteria) const; - FbxProperty GetSrc(int pIndex=0) const; - FbxProperty GetSrc(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindSrc(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - bool ConnectDst(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectDst(const FbxProperty& pProperty); - bool DisconnectAllDst(); - bool DisconnectAllDst(const FbxCriteria& pCriteria); - bool IsConnectedDst(const FbxProperty& pProperty) const; - int GetDstCount() const; - int GetDstCount(const FbxCriteria& pCriteria) const; - FbxProperty GetDst(int pIndex=0) const; - FbxProperty GetDst(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindDst(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - mutable FbxPropertyHandle mPropertyHandle; - - friend class FbxObject; - friend class FbxIOSettings; - friend class FbxBindingOperator; - friend class FbxAnimEvalClassic; - friend void FbxMarkObject(FbxObject* pObject, FbxMap& pObjectDstDisconnectCount, FbxSet& pObjectsToDeleted, FbxArray& pObjectToDeletedInSequence); - friend void FbxCleanUpConnectionsAtDestructionBoundary(FbxScene* pObject, FbxArray& pObjectToDeletedInSequence); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief This template class is used to contain user properties of specific data types. -* \nosubgrouping -*/ -template class FbxPropertyT : public FbxProperty -{ -public: - /** - * \name Static initialization. - */ - //@{ - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pValue The value of the property. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(pValue)), pValue, pForceSet, pFlags); - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pCompound The parent property of this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals to the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxProperty pCompound, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pCompound, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - //@} - - /** \name Value Management */ - //@{ - /** Assignment function - * \param pValue The value assigned to this property. - * \return This property. */ - FbxPropertyT& Set(const T& pValue){ FbxProperty::Set(&pValue, FbxTypeOf(pValue)); return *this; } - - /** Retrieve function - * \return The value of the property. */ - T Get() const { T lValue; FbxProperty::Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Assignment operator - * \param pValue The value of type T assigned to this property. - * \return This property. */ - FbxPropertyT& operator=(const T& pValue){ return Set(pValue); } - - /** Type cast operator - * \return The value of the property of type T. */ - operator T() const { return Get(); } - //@} - - /** \name Animation Evaluation */ - //@{ - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false) - { - return EvaluatePropertyValue(*this, pTime, pForceEval); - } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -template <> class FbxPropertyT : public FbxProperty -{ -public: - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(eFbxReference), pValue, pForceSet, pFlags); - } - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - Set(pValue); // since we will trigger callbacks in there! - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - FbxReference Get() const - { - FbxProperty::NotifyGet(); - return GetSrcObject(); - } - - FbxPropertyT& Set(const FbxReference& pValue) - { - if( FbxProperty::NotifySetRequest() ) - { - DisconnectAllSrcObject(); - if( ConnectSrcObject(pValue) ) - { - FbxProperty::SetValueInheritType(FbxPropertyFlags::eOverride); - FbxProperty::NotifySet(); - } - } - return *this; - } - - operator FbxReference() const - { - return Get(); - } - - FbxPropertyT& operator=(const FbxReference& pValue) - { - return Set(pValue); - } -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertydef.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertydef.h deleted file mode 100644 index dbb82aa..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertydef.h +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertydef.h -#ifndef _FBXSDK_CORE_PROPERTY_DEFINITION_H_ -#define _FBXSDK_CORE_PROPERTY_DEFINITION_H_ - -#include - -#include - -#include - -#define FBXSDK_PROPERTY_ID_NULL -1 -#define FBXSDK_PROPERTY_ID_ROOT 0 - -class FbxPropertyPage; - -class FBXSDK_DLL FbxPropertyFlags -{ -public: - //! Property inherit types - enum EInheritType - { - eOverride, //!< Property override this flag from its reference property. - eInherit, //!< Property inherit this flag from its reference property. - eDeleted //!< Property has been deleted, so inheritance is invalid. - }; - - //! Property flags that affect their behaviors - enum EFlags - { - eNone = 0, //!< No flag. - eStatic = 1 << 0, //!< Property is defined in the class declaration, so it wasn't created dynamically. - eAnimatable = 1 << 1, //!< Property can be animated, thus is can have am animation curve node connected. - eAnimated = 1 << 2, //!< Property is animated, so it also has an animation curve node connected. - eImported = 1 << 3, //!< Property has been created during import process when reading FBX file. - eUserDefined = 1 << 4, //!< Property has been defined by user, not by the FBX SDK. - eHidden = 1 << 5, //!< Property should not be displayed on user interface. - eNotSavable = 1 << 6, //!< Property value must not be exported when writing FBX files. - - eLockedMember0 = 1 << 7, //!< This property has its member #0 locked. - eLockedMember1 = 1 << 8, //!< This property has its member #1 locked. - eLockedMember2 = 1 << 9, //!< This property has its member #2 locked. - eLockedMember3 = 1 << 10, //!< This property has its member #3 locked. - eLockedAll = eLockedMember0 | eLockedMember1 | eLockedMember2 | eLockedMember3, - eMutedMember0 = 1 << 11, //!< This property has its member #0 muted. - eMutedMember1 = 1 << 12, //!< This property has its member #1 muted. - eMutedMember2 = 1 << 13, //!< This property has its member #2 muted. - eMutedMember3 = 1 << 14, //!< This property has its member #3 muted. - eMutedAll = eMutedMember0 | eMutedMember1 | eMutedMember2 | eMutedMember3, - - //Private flags - eUIDisabled = 1 << 15, //!< Private flag for dynamic UI in FBX plug-ins. - eUIGroup = 1 << 16, //!< Private flag for dynamic UI in FBX plug-ins. - eUIBoolGroup = 1 << 17, //!< Private flag for dynamic UI in FBX plug-ins. - eUIExpanded = 1 << 18, //!< Private flag for dynamic UI in FBX plug-ins. - eUINoCaption = 1 << 19, //!< Private flag for dynamic UI in FBX plug-ins. - eUIPanel = 1 << 20, //!< Private flag for dynamic UI in FBX plug-ins. - eUILeftLabel = 1 << 21, //!< Private flag for dynamic UI in FBX plug-ins. - eUIHidden = 1 << 22, //!< Private flag for dynamic UI in FBX plug-ins. - - eCtrlFlags = eStatic | eAnimatable | eAnimated | eImported | eUserDefined | eHidden | eNotSavable | eLockedAll | eMutedAll, - eUIFlags = eUIDisabled | eUIGroup | eUIBoolGroup | eUIExpanded | eUINoCaption | eUIPanel | eUILeftLabel | eUIHidden, - eAllFlags = eCtrlFlags | eUIFlags, - - eFlagCount = 23, - }; - - bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetFlags() const; - FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const; - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const; - - bool SetMask(FbxPropertyFlags::EFlags pFlags); - bool UnsetMask(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetMask() const; - - bool Equal(const FbxPropertyFlags& pOther, FbxPropertyFlags::EFlags pFlags) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyFlags(); - explicit FbxPropertyFlags(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags Clone(FbxPropertyPage* pPage); - - static const int sLockedMembersMax = 4; //Maximum number of property sub-member that can be locked. - static const int sLockedMembersBitOffset = 7; //Number of bits to shift to get to the first locked member flag. - static const int sMutedMembersMax = 4; //Maximum number of property sub-member that can be muted. - static const int sMutedMembersBitOffset = 11; //Number of bits to shift to get to the first muted member flag. - -private: - FbxUInt32 mFlagData, mMaskData; - - FBX_ASSERT_STATIC(sizeof(FbxUInt32) * 8 >= FbxPropertyFlags::eFlagCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPropertyValue -{ -public: - static FbxPropertyValue* Create(void* pData, EFbxType pType); - void Destroy(); - FbxPropertyValue* Clone(FbxPropertyPage*); - - bool Get(void* pValue, EFbxType pValueType); - bool Set(const void* pValue, EFbxType pValueType); - size_t GetSizeOf() const; - size_t GetComponentCount() const; - - void IncRef(); - void DecRef(); - int GetRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyValue(); - -private: - FbxPropertyValue(void* pValue, EFbxType pType); - ~FbxPropertyValue(); - - int mRef; - EFbxType mType; - void* mValue; - - FBXSDK_FRIEND_NEW(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_DEFINITION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertyhandle.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertyhandle.h deleted file mode 100644 index 527a653..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertyhandle.h +++ /dev/null @@ -1,576 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyhandle.h -#ifndef _FBXSDK_CORE_PROPERTY_HANDLE_H_ -#define _FBXSDK_CORE_PROPERTY_HANDLE_H_ - -#include - -#include -#include -#include - -#include - -class FbxPropertyPage; -class FbxPropertyHandle; -class FbxConnectionPointFilter; - -//! \brief Class to manage property handle. -class FBXSDK_DLL FbxPropertyHandle -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //! Create an instance - static FbxPropertyHandle Create(); - - /** Create an instance with given instance. - * \param pInstanceOf The given instance. */ - static FbxPropertyHandle Create(const FbxPropertyHandle& pInstanceOf); - - /** Create an instance with given name and type. - * \param pName Property name. - * \param pType Property type. */ - static FbxPropertyHandle Create(const char* pName, EFbxType pType=eFbxUndefined); - - /** Create an instance with given name and type info. - * \param pName - * \param pTypeInfo */ - static FbxPropertyHandle Create(const char* pName, FbxPropertyHandle pTypeInfo); - - /** If this property is root property, delete the property page, otherwise delete the property. - * \return If succeed, return true. */ - bool Destroy(); - - //! Default constructor. - FbxPropertyHandle(); - - /** Copy constructor. - * \param pAddress FbxPropertyHandle copied to this one. */ - FbxPropertyHandle(const FbxPropertyHandle& pAddress); - - //! Destructor - ~FbxPropertyHandle(); - - /** Character constructor. - * \param pPage - * \param pId */ - FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT); - //@} - - /** - * \name Assignment and basic info - */ - //@{ - /** FbxPropertyHandle assignment operator. - * \param pHandle FbxPropertyHandle assigned to this one. */ - FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle); - - /** Equality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool operator==(const FbxPropertyHandle& pHandle) const; - - /** Inequality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if unequal, \c false otherwise. */ - bool operator!=(const FbxPropertyHandle& pHandle) const; - - /** Lesser operator, used to sort property handle in map. - * \param pHandle The property handle compared to this property handle. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxPropertyHandle& pHandle) const; - - /** Greater operator, used to sort property handle in map. - * \param pProperty The property handle compared to this property handle. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxPropertyHandle& pHandle) const; - - /** Compare type info together - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool Is(const FbxPropertyHandle& pHandle) const; - - //! Judge validity - bool Valid() const; - - //! Get the property name - const char* GetName() const; - - //! Get the property label - const char* GetLabel() const; - - /** Set a label to the property - * \param pLabel The given label string - * \return \c true if successful. */ - bool SetLabel(const char* pLabel); - - //! Get the property type - EFbxType GetType() const; - - //! Get the property type info - FbxPropertyHandle GetTypeInfo() const; - - //! Get the property attribute state - FbxPropertyFlags::EFlags GetFlags() const; - - /** Gets the inheritance type for the given flag. - * \param pFlags The flag to query - * \param pCheckReferences Decide whether check instance. If it is true, check instance. - * \return The inheritance type */ - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckReferences) const; - - /** According the given parameter Change the attributes of the property. - * \param pFlags The given flags used as mask. - * \param pValue If pValue is true, set mask with given flags, otherwise unset mask with given flags. - * \return If succeed, return true. */ - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - - /**Sets the inheritance type for the given flag - * \param pFlags The flag to set - * \param pType The inheritance type to set - * \return If succeed, return true. */ - bool SetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, FbxPropertyFlags::EInheritType pType); - - //! Get the property user data. - void* GetUserData() const; - - /** Set user data to the property - * \param pUserData The given user data - * \return If succeed, return true. */ - bool SetUserData(const void* pUserData); - - //! Get the property user tag - int GetUserTag() const; - - /** Set user tag to the property - * \param pUserData The given user tag - * \return If succeed, return true. */ - bool SetUserTag(int pUserData); - //@} - - /** - * \name Enum management - */ - //@{ - /** Add new value at the end of the enum list in the property. - * \param pStringValue The given new value - * \return The index of the value. */ - int AddEnumValue(const char* pStringValue); - - /** Insert new value at the given index of the enum list in property. - * \param pIndex The given index - * \param pStringValue The given new value */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Get the enum count of enum list in property - * \return The enum count of enum list in property */ - int GetEnumCount(); - - /** Set value at the given index of the enum list in the property. - * \param pIndex The given index - * \param pStringValue The given new value used to instead the old value. */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Remove the value at the index of the enum list in the property. - * \param pIndex The given index */ - void RemoveEnumValue(int pIndex); - - /** Get the value at the index of enum list in the property. - * \param pIndex The given index - * \return The value at the given index */ - char* GetEnumValue(int pIndex); - //@} - - /** - * \name Child and Struct management - */ - //@{ - //! Create the map for find property in the property page - void BeginCreateOrFindProperty(); - - //! Clear the map which created for find property. - void EndCreateOrFindProperty(); - - /** Judge if the property is the root property. - * \return Return true if this property is root property. */ - inline bool IsRoot() const { return ( mPage && mId == 0 ) ? true : false; } - - /** Judge if the property is the child property of the given parent property. - * \param pParent The given parent property handle - * \return Return true if this property is child of given property. */ - bool IsChildOf(const FbxPropertyHandle& pParent) const; - - /** Judge if the property is descendent property of the given property. - * \param pParent The given parent property handle - * \return Return true if this property is descendant of given property. */ - bool IsDescendentOf(const FbxPropertyHandle& pParent) const; - - /** Set parent property handle.No matter what enters,the result is always false. - * \param pOther - * \return False */ - bool SetParent(const FbxPropertyHandle& pOther ); - - /** Add a property to the property page. - * \param pName The name of property. - * \param pTypeInfo The added property's type info. - * \return The handle of the new added property */ - FbxPropertyHandle Add(const char* pName, const FbxPropertyHandle& pTypeInfo); - - /** Get parent property - * \return If the parent property exists, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetParent() const; - - /** Get child property - * \return If the child property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetChild() const; - - /** Get sibling property - * \return If the sibling property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetSibling() const; - - /** Get first descendent property - * \return If the descendent property is exist, return the first descendent property handle,otherwise return -1. */ - FbxPropertyHandle GetFirstDescendent() const; - - /** Get first descendent property which after the given property - * \param pHandle The given property handle - * \return If the descendent property can be found after the given property, - * return the first found property handle,otherwise return -1. */ - FbxPropertyHandle GetNextDescendent(const FbxPropertyHandle& pHandle) const; - - /** Find the property with given name - * \param pName The given property name - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, bool pCaseSensitive) const; - - /** Find the property with given name and type info. - * \param pName The given property name - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - //@} - - /** - * \name Connection management - */ - //@{ - /** Connect source property. - * \param pSrc The given source property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get source properties' count. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source count of the sub connection point. - * Otherwise, return the src count of this property. - * \return The count of source properties */ - int GetSrcCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get source property with the given index. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source property of the sub connection point. - * Otherwise, return the source property of this property. - * \param pIndex The given index - * \return The source property handle. */ - FbxPropertyHandle GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect source property. - * \param pSrc The given source property - * \return If disconnect successfully, return true, otherwise return false. */ - bool DisconnectSrc(const FbxPropertyHandle& pSrc); - - /** Judge if it is connected with the given source property. - * \param pSrc The given source property - * \return If it is connected, return true, otherwise return false. */ - bool IsConnectedSrc(const FbxPropertyHandle& pSrc); - - /** Connect destination property. - * \param pDst The given destination property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get destination properties' count. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination count of the sub connection point. - * Otherwise, return the destination count of this property. - * \return The count of destination properties */ - int GetDstCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get destination property with the given index. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination property of the sub connection point. - * Otherwise, return the destination property of this property. - * \param pIndex The given index - * \return The destination property handle. */ - FbxPropertyHandle GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect destination property. - * \param pDst The given destination property - * \return If disconnect successfully, return true,otherwise, return false. */ - bool DisconnectDst(const FbxPropertyHandle& pDst); - - /** Judge if it is connected with the given destination property. - * \param pDst The given destination property - * \return If it is connected, return true,otherwise, return false. */ - bool IsConnectedDst(const FbxPropertyHandle& pDst); - - //! Clear connect cache - void ClearConnectCache(); - - //! Clear all connect without sending any notification (Internal use ONLY) - void WipeAllConnections(); - //@} - - /** \name Limits Functions - * Minimum and maximum value limits can be associated with properties, but FBX - * will not verify that these limits are respected. FBX however will store and - * retrieve limits from files, and will assure that they are persistent in memory - * while the property handle object exists. - * - * Soft minimums and maximums values are specifying a second set of limits that can be - * used for UI objects such as sliders. FBX will handle them the same way it does - * with the normal limits. */ - //@{ - /** Judge if this property has a minimum value. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool HasMin() const; - - /** Get the minimum value and value type of this property. - * \param pValue The minimum value of this property. - * \param pValueType The value type of this property. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool GetMin(void* pValue, EFbxType pValueType) const; - - /** Set the minimum value and value type for this property. - * \param pValue The given minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. - */ - template inline bool SetMin(const T& pValue){ return SetMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The minimum value of this property */ - template inline T GetMin(const T* pFBX_TYPE) const { T lValue; GetMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft minimum value. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool HasSoftMin() const; - - /** Get the soft minimum value and value type of this property. - * \param pValue The soft minimum value of this property. - * \param pValueType The value type of this property. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool GetSoftMin(void* pValue, EFbxType pValueType) const; - - /** Set the soft minimum value and value type for this property. - * \param pValue The given soft minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMin(const T& pValue){ return SetSoftMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft minimum value of this property */ - template inline T GetSoftMin(const T* pFBX_TYPE) const { T lValue; GetSoftMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has maximum value. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool HasMax() const; - - /** Get the maximum value and value type of this property. - * \param pValue The maximum value of this property. - * \param pValueType The value type of this property. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool GetMax(void* pValue, EFbxType pValueType) const; - - /** Set the maximum value and value type for this property. - * \param pValue The given maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetMax(const T& pValue){ return SetMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The maximum value of this property */ - template inline T GetMax(const T* pFBX_TYPE) const { T lValue; GetMax(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft maximum value. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool HasSoftMax() const; - - /** Get the soft maximum value and value type of this property. - * \param pValue The soft maximum value of this property. - * \param pValueType The value type of this property. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool GetSoftMax(void* pValue, EFbxType pValueType) const; - - /** Set the soft maximum value and value type for this property. - * \param pValue The given soft maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMax(const T& pValue){ return SetSoftMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft maximum value of this property */ - template inline T GetSoftMax(const T* pFBX_TYPE) const { T lValue; GetSoftMax(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Value - */ - //@{ - /** Get value inherit type of this property. - * \param pCheckReferences If it is true,check instance of this property page,otherwise,only check this page. - * \return The value inherit type of this property */ - FbxPropertyFlags::EInheritType GetValueInheritType(bool pCheckReferences) const; - - /** Set value inherit type for this property . - * \param pType The given value inherit type. - * \return If set successfully, return true,otherwise, return false. */ - bool SetValueInheritType(FbxPropertyFlags::EInheritType pType); - - /** Get default value and value type of this property . - * \param pValue The gotten default value of this property. - * \param pValueType The gotten default value type of this property. - * \return If default value be gotten successfully, return true,otherwise, return false. */ - bool GetDefaultValue(void* pValue, EFbxType pValueType) const; - - /** Get value and value type of this property . - * \param pValue The gotten value of this property. - * \param pValueType The gotten value type of this property. - * \return If value be gotten successfully, return true,otherwise, return false. */ - bool Get(void* pValue, EFbxType pValueType) const; - - /** Set property value and value type for this property. - * \param pValue The given property value . - * \param pValueType The given property value type - * \param pCheckValueEquality If it is true, when the given value is equal with - * the property value, the property value will not be set. - * \return If the property value be set successfully, return true,otherwise, return false. */ - bool Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality); - - /** Set property value with the given value . - * \param pValue The given value . - * \return If set successfully, return true,otherwise, return false. */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** get property value. - * \param pFBX_TYPE Not be used. - * \return The gotten property value. */ - template inline T Get(const T* pFBX_TYPE) const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Page settings - */ - //@{ - /** Set the property page data pointer. - * \param pData The given page data pointer. */ - void SetPageDataPtr(void* pData); - - /** Get property page data pointer. - * \return The gotten property page data pointer. */ - void* GetPageDataPtr() const; - //@} - - /** - * \name Page Internal Entry Management - */ - //@{ - /** Push properties to parent instance. - * \return If push successful return true,otherwise,return false. */ - bool PushPropertiesToParentInstance(); - //@} - - /** - * \name Reference Management - */ - //@{ - /** Judge if this property page is a instance of other page. - * \return If this property page is a instance of other page, return true,otherwise,return false. */ - bool IsAReferenceTo(void) const; - - /** Get the property page which this property page make reference to - * \return The property page which this property page make reference to */ - void* GetReferenceTo(void) const; - - /** Judge if this property page is referenced by other pages. - * \return If this property page is referenced by other pages, return true,otherwise,return false. */ - bool IsReferencedBy(void) const; - - /** Get the count of property pages which make reference to this property page. - * \return The count of property pages which make reference to this property page. */ - int GetReferencedByCount(void) const; - - /** According the given index,get the property page which make reference to this property page. - * \param pIndex The given index - * \return The pointer to the property page which reference to this property page and be found by index. */ - void* GetReferencedBy(int pIndex) const; - //@} - -private: - FbxPropertyPage* mPage; - FbxInt mId; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertypage.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertypage.h deleted file mode 100644 index 89d7335..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertypage.h +++ /dev/null @@ -1,1747 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertypage.h -#ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_ -#define _FBXSDK_CORE_PROPERTY_PAGE_H_ - -#include - -#include -#include -#include -#include - -#include - -typedef FbxPair FbxNameMapKey; - -struct FbxNameMapCompare -{ - inline int operator()(const FbxNameMapKey& pKeyA, const FbxNameMapKey& pKeyB) const - { - if( pKeyA.mFirst < pKeyB.mFirst ) return -1; - else if( pKeyA.mFirst > pKeyB.mFirst ) return 1; - return strcmp(pKeyA.mSecond, pKeyB.mSecond); - } -}; - -class FBXSDK_DLL FbxPropertyInfo -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyInfo* Create(const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyInfo >(pName,pTypeInfo); } - static FbxPropertyInfo* Create(const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyInfo >(pName,pType); } - void Destroy() { FbxDelete(this); } - FbxPropertyInfo* Clone(FbxPropertyPage* /*pPage*/) - { - // @@@@@ Filter is missing - // @@@@@ Clone is incomplete - if (mTypeInfo) - { - return FbxNew< FbxPropertyInfo >(mName,mTypeInfo); - } - else - { - return FbxNew< FbxPropertyInfo >(mName,mType); - } - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - - // Labels and Types - - inline FbxStringSymbol GetName() const { return mName; } - EFbxType GetType() const; - FbxPropertyPage* GetTypeInfo() const { return mTypeInfo; } - - inline void SetLabel(const char* pLabel) { mLabel=pLabel; } - inline const char* GetLabel() const { return mLabel.IsEmpty() ? "" : ((const char*)mLabel); } - - inline void SetUserTag(int pUserTag) { mUserTag=pUserTag; } - inline int GetUserTag() const { return mUserTag; } - - inline void SetUserData(const void* pUserData) { mUserData=(void*)pUserData; } - inline void* GetUserData() const { return mUserData; } - - // Enum list - int AddEnumValue(const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - return mEnumList->Add((char*)pStringValue); - } - return -1; - } - - void InsertEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - mEnumList->InsertAt(pIndex,(char*)pStringValue); - } - } - - int GetEnumCount() - { - return mEnumList ? mEnumList->GetCount() : 0; - } - - void SetEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if (lCanAdd) - mEnumList->SetStringAt(pIndex,(char*)pStringValue); - } - } - - void RemoveEnumValue(int pIndex) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - mEnumList->RemoveAt(pIndex); - } - } - - char* GetEnumValue(int pIndex) - { - char* lValue = NULL; - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0; - } - return lValue; - } - - - // Min and Max values - enum EValueIndex {eValueMin, eValueSoftMin, eValueMax, eValueSoftMax, eValueCount}; - - bool HasMinMax(EValueIndex pId) const - { - return mMinMaxValue[pId] != NULL; - } - - bool GetMinMax(EValueIndex pId, void* pValue, EFbxType pValueType) const - { - if (mMinMaxValue[pId]) { - return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType()); - } - return false; - } - - bool SetMinMax(EValueIndex pId, const void* pValue, EFbxType pValueType) - { - if (!mMinMaxValue[pId]) { - size_t lSize = FbxTypeSizeOf(GetType()); - if (lSize) { - mMinMaxValue[pId] = FbxMalloc(lSize); - } - } - if (mMinMaxValue[pId]) { - return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType); - } - return false; - } - -private: - FbxPropertyInfo(const char* pName, FbxPropertyPage* pTypeInfo) - : mRef(0) - , mName(pName) - , mType(eFbxUndefined) - , mTypeInfo(pTypeInfo) - , mUserTag(0) - , mUserData(0) - , mFilter(0) - { - for (int i=0; i mEnumList; -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (push) - #pragma warning (disable: 4355) -#endif - -class FBXSDK_DLL FbxPropertyConnect -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyConnect* Create(FbxPropertyPage* pPage,FbxInt pId) { return FbxNew< FbxPropertyConnect >(pPage,pId); } - void Destroy() { FbxDelete(this); } - FbxPropertyConnect* Clone(FbxPropertyPage* pPage) - { - return FbxNew< FbxPropertyConnect >(pPage,mId); - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - -// Properties - FbxPropertyPage* GetPage() { return mPage; } - FbxInt GetPropertyId() { return mId; } - -// ClearConnectCache() -// ------------------------------------------------------ - inline void ClearConnectCache() - { - mConnectionPoint.SubConnectRemoveAll(); - } - - //! Clear all connect without sending any notification (Internal use ONLY) - inline void WipeAllConnections() - { - mConnectionPoint.WipeConnectionList(); - } - -// Properties - inline bool ConnectSrc(FbxPropertyConnect* pSrc, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectSrc(&pSrc->mConnectionPoint,pType); - } - inline bool DisconnectSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.DisconnectSrc(&pSrc->mConnectionPoint); - } - inline bool IsConnectedSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline int GetSrcCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetSrcCount(pFilter); - } - inline FbxPropertyConnect* GetSrc(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetSrc(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - inline bool ConnectDst(FbxPropertyConnect* pDst, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectDst(&pDst->mConnectionPoint,pType); - } - inline bool IsConnectedDst(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline bool DisconnectDst(FbxPropertyConnect* pDst) - { - return mConnectionPoint.DisconnectDst(&pDst->mConnectionPoint); - } - inline int GetDstCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetDstCount(pFilter); - } - inline FbxPropertyConnect* GetDst(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetDst(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - - int mRef; - FbxConnectionPoint mConnectionPoint; - FbxPropertyPage* mPage; - FbxInt mId; - -private: - FbxPropertyConnect(FbxPropertyPage* pPage,FbxInt pId) : - mRef(0), - mConnectionPoint(this), - mPage(pPage), - mId(pId) - { - } - - ~FbxPropertyConnect(){ if( FbxObject::GetWipeMode() ) mConnectionPoint.WipeConnectionList(); } -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (pop) -#endif - -class FBXSDK_DLL FbxPropertyEntry -{ -public: - static FbxPropertyEntry* Create(FbxInt pParentId, FbxPropertyInfo* pInfo, FbxPropertyValue* pValue, FbxPropertyConnect* pConnect){ return FbxNew(pParentId, pInfo, pValue, pConnect); } - - void Destroy() { FbxDelete(this); } - - inline FbxInt GetParentId(){ return mParentId; } - inline bool IsEmpty(){ return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ? false : true; } - - inline FbxPropertyInfo* Get(const FbxPropertyInfo* /*pType*/){ return mInfo; } - - void Set(FbxPropertyInfo* pInfo) - { - FbxPropertyInfo* lInfo = mInfo; - if( pInfo ) pInfo->IncRef(); - mInfo = pInfo; - if( lInfo ) lInfo->DecRef(); - } - - inline FbxPropertyValue* Get(const FbxPropertyValue* /*pType*/){ return mValue; } - - void Set(FbxPropertyValue* pValue) - { - FbxPropertyValue* lValue = mValue; - if( pValue ) pValue->IncRef(); - mValue = pValue; - if( lValue ) lValue->DecRef(); - } - - inline FbxPropertyConnect* Get(const FbxPropertyConnect* /*pType*/){ return mConnect; } - - void Set(FbxPropertyConnect* pConnect) - { - FbxPropertyConnect* lConnect = mConnect; - if( pConnect ) pConnect->IncRef(); - mConnect = pConnect; - if( lConnect ) lConnect->DecRef(); - } - - inline FbxPropertyFlags* Get(const FbxPropertyFlags* /*pType*/){ return &mFlags; } - inline void Set(FbxPropertyFlags pType){ mFlags = pType; } - inline void Set(FbxPropertyFlags* pType){ mFlags = pType ? *pType : FbxPropertyFlags(FbxPropertyFlags::eNone); } - -private: - FbxPropertyEntry(FbxInt pParentId,FbxPropertyInfo *pInfo,FbxPropertyValue *pValue,FbxPropertyConnect *pConnect) : - mInfo(pInfo), - mValue(pValue), - mConnect(pConnect), - mParentId(pParentId), - mFlags(FbxPropertyFlags::eNone) - { - if( mInfo ) mInfo->IncRef(); - if( mValue ) mValue->IncRef(); - if( mConnect ) mConnect->IncRef(); - } - - ~FbxPropertyEntry() - { - if( mInfo ) mInfo->DecRef(); - if( mValue ) mValue->DecRef(); - if( mConnect ) mConnect->DecRef(); - } - - FbxPropertyInfo* mInfo; - FbxPropertyValue* mValue; - FbxPropertyConnect* mConnect; - FbxInt mParentId; - FbxPropertyFlags mFlags; - - FBXSDK_FRIEND_NEW(); - friend class FbxPropertyPage; -}; - -class FBXSDK_DLL FbxPropertyIdGenerator -{ -public: - FbxPropertyIdGenerator() : mRef(0), mNextId(0) {} - - inline FbxInt GetNextId() const { return mNextId; } - inline FbxInt GetNextIdAndInc() { return mNextId++; } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if( mRef == 0 ) FbxDelete(this); } - -private: - FbxInt mRef, mNextId; -}; - -class FBXSDK_DLL FbxPropertyPage -{ - -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyPage* Create (FbxPropertyPage* pInstanceOf=0) { return FbxNew< FbxPropertyPage >(pInstanceOf); } - static FbxPropertyPage* Create (const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyPage >(pName,pTypeInfo); } - static FbxPropertyPage* Create (const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyPage >(pName,pType); } - void Destroy() { FbxDelete(this); } - - template inline T* GetPropertyItem(const T* pItemType,FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - if (pFoundIn) *pFoundIn = 0; - if (lReferenceEntry) { - T* lItem = lReferenceEntry->Get( FBX_TYPE(T) ); - if (lItem) { - if (pFoundIn) *pFoundIn = lReferencePage; - return lItem; - } else { - return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ; - } - } - return 0; - } - - template inline T* ChangePropertyItemState(const T* pItemType, FbxInt pIndex, FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = NULL; - T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage); - if( pInheritType == FbxPropertyFlags::eOverride ) - { - if( lReferencePage == this ) - { - return lItem; - } - else if( lItem ) - { - FbxPropertyEntry* lEntry = ChangePropertyEntryState(pIndex, FbxPropertyFlags::eOverride); - lEntry->Set(lItem->Clone(this)); - return lEntry->Get(FBX_TYPE(T)); - } - } - else - { - // can't inherit entries that were created on our page. - bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) == NULL); - if( lOwnEntry && FbxPropertyFlags::eInherit == pInheritType) return 0; - - if( lItem && (lReferencePage == this) ) - { - FbxPropertyEntry* lEntry = GetPropertyEntry(pIndex); - lEntry->Set((T*)0); - if( lEntry->IsEmpty() ) - { - ChangePropertyEntryState(pIndex, FbxPropertyFlags::eInherit); - } - } - return 0; - } - return 0; - } - - template FbxPropertyPage* GetFirstPropertyItem(FbxInt pId, const T* pItem) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(T), pId, &lReferencePage); - if( lReferencePage && lReferencePage->mInstanceOf ) - { - FbxPropertyPage* lReferencePage2 = lReferencePage->mInstanceOf->GetFirstPropertyItem(pId, pItem); - return lReferencePage2 ? lReferencePage2 : lReferencePage; - } - return lReferencePage; - } - - const char* GetName(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetName()) : ""; - } - - const char* GetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetLabel()) : ""; - } - - bool SetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const char* pLabel="") - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetLabel(pLabel); - return true; - } else { - return false; - } - } - - void* GetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserData() : 0; - } - - bool SetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const void* pUserData=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserData(pUserData); - return true; - } else { - return false; - } - } - - int GetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserTag() : 0; - } - - bool SetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,int pUserTag=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserTag(pUserTag); - return true; - } else { - return false; - } - } - - EFbxType GetType(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetType() : eFbxUndefined; - } - - FbxInt GetParent(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyEntry* lPropertyEntry = GetPropertyEntry( pId ); - return lPropertyEntry ? lPropertyEntry->GetParentId() : FBXSDK_PROPERTY_ID_NULL; - } - - FbxPropertyPage* GetTypeInfo(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetTypeInfo() : 0; - } - FbxInt Add(FbxInt pParentId, const char* pName, EFbxType pType) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pType),FbxPropertyValue::Create(0,pType),0); - } - FbxInt Add(FbxInt pParentId, const char* pName, FbxPropertyPage* pTypeInfo) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pTypeInfo),FbxPropertyValue::Create(0,pTypeInfo->GetType()),0); - } - - inline bool Reparent( FbxInt /*pChildId*/, FbxInt /*pNewParentId*/ ) - { - // Not implemented. - /* - if( GetParent(pChildId) != pNewParentId && pChildId < mEntries.GetCount() ) - { - FbxPropertyEntry* lChildEntry = mEntries[pChildId]; - lChildEntry->mParentId = pNewParentId; - - //@@@@@ TODO: propagate to instances - - return true; - } - */ - return false; - } - - inline bool IsChildOf(FbxInt pId,FbxInt pParentId) const - { - return GetParent(pId)==pParentId; - - } - - inline bool IsDescendentOf(FbxInt pId,FbxInt pAncestorId) const - { - if (pAncestorId>0) { - FbxInt lParentId = GetParent(pId); - while (lParentId != FBXSDK_PROPERTY_ID_NULL ) { - if (lParentId==pAncestorId) { - return true; - } - lParentId = GetParent(lParentId); - } - return false; - } else { - return true; - } - - } - - //#define PROPERTY_PAGE_SANITY_CHECK // Debug purpose only. Never enable it in a production release. - - /** Retrieves the first child property id of a specified property id. - * \param pParentId The specified property id - * \return the first child property id - */ - FbxInt GetChild(FbxInt pParentId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pParentId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pParentId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != pParentId); - ret1 = lId; - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next sibling property id of a specified property id. - * \param pId The specified property id - * \return the next sibling property id - */ - FbxInt GetSibling(FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lReferenceParentId = GetParent(pId); - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != lReferenceParentId); - - ret1 = pId; - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the first descendent property id of a specified property id. - * \param pAnscestorId The specified property id - * \return the first descendent property id - */ - FbxInt GetFirstDescendent(FbxInt pAnscestorId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pAnscestorId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pAnscestorId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(lId, pAnscestorId)) - { - ret1 = lId; - break; - } - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next descendent property id of a specified property id, with given a descendent property id. - * \param pAnscestorId The specified property id - * \param pId The descendent property id - * \return the next descendent property id - */ - FbxInt GetNextDescendent(FbxInt pAnscestorId, FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(pId, pAnscestorId) ) - { - ret1 = pId; - break; - } - } - - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - - } - - FbxInt FastFind (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive) - { - FbxInt lId = FBXSDK_PROPERTY_ID_NULL; - - bool lSlowQuery = true; - if( mNameMap.mSecond.GetSize() > 0 ) - { - lSlowQuery = false; - // try to use the map if we've got it - NameMap::RecordType* lIterator = mNameMap.mSecond.Find( FbxNameMapKey( pId, pName ) ); - if( !lIterator ) - { - lId = FBXSDK_PROPERTY_ID_NULL; - } - else - { - lId = lIterator->GetValue(); - if (lId != FBXSDK_PROPERTY_ID_NULL && pTypeInfo) - { - lSlowQuery = true; - - // Try to match types. - // If they are mismatched, fall back to the slow query, - // since we might have multiple property with the same name but different types - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if (lPropertyInfo) - { - FbxPropertyPage* lTypeInfo2 = lPropertyInfo->GetTypeInfo(); - if ( lTypeInfo2 && lTypeInfo2->Is(pTypeInfo) ) - { - lSlowQuery = false; - } - } - } - } - } - - if (!lSlowQuery) - return lId; - - // fall back if there's no map or we got one with a different type - - lId = GetChild(pId); - FbxStringSymbol lSearchSymbol( pName ); - while( lId != FBXSDK_PROPERTY_ID_NULL ) { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if ( (!pTypeInfo || lPropertyInfo->GetTypeInfo()->Is(pTypeInfo)) && - ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->GetName(),pName)==0) || - (pCaseSensitive && lPropertyInfo->GetName() == lSearchSymbol)) ) { - return lId; - } - lId = GetSibling(lId); - } - - return FBXSDK_PROPERTY_ID_NULL; - } - - FbxInt Find (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive, const char* pChildrenSeparators ) - { - if (pChildrenSeparators) - { - FbxInt lId; - size_t lFoundIndex = strcspn(pName,pChildrenSeparators); - - // Strip the first part of the name and search - if (lFoundIndexAddEnumValue(pStringValue) : - 1; - } - - void InsertEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->InsertEnumValue(pIndex,pStringValue); - } - - int GetEnumCount(FbxInt pId) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetEnumCount() : 0; - } - - void SetEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->SetEnumValue(pIndex,pStringValue); - } - - void RemoveEnumValue(FbxInt pId, int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->RemoveEnumValue(pIndex); - } - - char* GetEnumValue(FbxInt pId,int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetEnumValue(pIndex) : (char*)""; - } - - // Connection - // --------------------------------- - void ClearConnectCache(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - if (lPropertyConnect) { - lPropertyConnect->ClearConnectCache(); - } - } - - void WipeAllConnections(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - if (lPropertyConnect) { - lPropertyConnect->WipeAllConnections(); - } - } - - bool ConnectSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId, FbxConnection::EType pType) - { - FbxPropertyEntry* lDstEntry = ChangePropertyEntryState(pDstId,FbxPropertyFlags::eOverride); - FbxPropertyEntry* lSrcEntry = pSrcPage->ChangePropertyEntryState(pSrcId,FbxPropertyFlags::eOverride); - FbxPropertyConnect* lDstConnect= lDstEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - FbxPropertyConnect* lSrcConnect= lSrcEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - - // Make sure we have a connection point on both sides of the connection - if (!lDstConnect) { - lDstConnect = FbxPropertyConnect::Create( this,pDstId ); - lDstEntry->Set( lDstConnect ); - } - if (!lSrcConnect) { - lSrcConnect = FbxPropertyConnect::Create( pSrcPage,pSrcId ); - lSrcEntry->Set( lSrcConnect ); - } - - // Must @@@@@@@ Propagate to inherited children - return lDstConnect->ConnectSrc(lSrcConnect,pType); - - } - - bool DisconnectSrc(FbxInt pDstId,FbxPropertyPage* pSrcPage,FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->DisconnectSrc(lSrcConnect); - } - return false; - } - - bool IsConnectedSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->IsConnectedSrc(lSrcConnect); - } - return false; - } - - int GetSrcCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetSrcCount(pFilter) : 0; - } - - bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pSrcPage, FbxInt* pSrcId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lSrc = lPropertyConnect->GetSrc(pFilter,pIndex); - if (lSrc) - { - if (pSrcPage) *pSrcPage = lSrc->GetPage(); - if (pSrcId) *pSrcId = lSrc->GetPropertyId(); - return true; - } - } - return false; - } - - bool ConnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId, FbxConnection::EType pType) - { - return pDstPage->ConnectSrc(pDstId,this,pSrcId,pType); - } - - bool DisconnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->DisconnectSrc(pDstId,this,pSrcId); - } - - bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->IsConnectedSrc(pDstId,this,pSrcId); - } - - int GetDstCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetDstCount(pFilter) : 0; - } - - bool GetDst(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pDstPage, FbxInt* pDstId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lDst = lPropertyConnect->GetDst(pFilter,pIndex); - if (lDst) - { - if (pDstPage) *pDstPage = lDst->GetPage(); - if (pDstId) *pDstId = lDst->GetPropertyId(); - return true; - } - } - return false; - } - - // Min and Max - // --------------------------------- - enum EValueIndex { eValueMin,eValueSoftMin,eValueMax,eValueSoftMax,eValueCount }; - - bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - - return lPropertyInfo ? lPropertyInfo->HasMinMax(pValueId) : false; - } - - bool GetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetMinMax(pValueId,pValue,pValueType) : false; - } - - bool SetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, const void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->SetMinMax(pValueId,pValue,pValueType) : false; - } - - // Value - // --------------------------------- - bool Get(FbxInt pId, void* pValue, EFbxType pValueType) - { - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId ); - return lPropertyValue ? lPropertyValue->Get(pValue,pValueType) : 0; - } - - bool Set(FbxInt pId, const void* pValue, EFbxType pValueType, bool pCheckValueEquality) - { - if( pCheckValueEquality ) - { - FbxPropertyPage* lReferencePage = NULL; - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage ); - void* lCurrentValue = FbxTypeAllocate( pValueType ); - bool lValuesEqual = false; - bool lValueChanged = false; - if( lReferencePage && lReferencePage != this ) - { - // this page inherits, so check if we have to override the value. - if( lPropertyValue ) - { - lPropertyValue->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - } - } - else - { - FbxPropertyPage* lReferencePage2 = NULL; - FbxPropertyValue* lPropertyValue2 = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage2 ) : NULL; - if( lReferencePage2 && lPropertyValue2 ) - { - // this page is an override, but there is another page before us that overrides the value - lPropertyValue2->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - - if( lValuesEqual ) - { - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, FbxPropertyFlags::eInherit ); - lValueChanged = true; - } - - } - // else this page is the originator of the property, so no need to check, - } - - FbxTypeDeallocate(pValueType, lCurrentValue); - lCurrentValue = NULL; - - if( lValuesEqual ) - return lValueChanged; - } - - FbxPropertyValue* lPropertyValue = ChangePropertyItemState( FBX_TYPE(FbxPropertyValue),pId,FbxPropertyFlags::eOverride ); - return lPropertyValue ? lPropertyValue->Set(pValue,pValueType) : false; - } - - inline FbxPropertyFlags::EInheritType GetValueInherit(FbxInt pId, bool pCheckInstanceOf) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(FbxPropertyValue), pId, &lReferencePage); - - // check one level - if( !pCheckInstanceOf ) - { - return lReferencePage == this ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - else - { - if( lReferencePage == this ) return FbxPropertyFlags::eOverride; // this page is either an override, or the originator - else if( !lReferencePage->mInstanceOf ) return FbxPropertyFlags::eInherit; // the reference is the class root, so we must be inheriting - - // The reference page is not the class root, might be another override, or the originator. - FbxPropertyValue* lPropertyValue = lReferencePage->mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ); - - // if lReferencePage->mInstanceOf has the property value, - // lReferencePage is an override - // else - // its the originator, so this page inherits from it. - return lPropertyValue ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - } - - inline bool SetValueInherit(FbxInt pId, FbxPropertyFlags::EInheritType pType) - { - // no support for this mode yet - if( FbxPropertyFlags::eDeleted == pType ) - return false; - - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, pType ); - - // Above call doesn't return error codes, so just check that we match types. - return GetValueInherit(pId, false) == pType; - } - - inline bool GetDefaultValue(FbxInt pId, void* pValue, EFbxType pValueType) const - { - FbxPropertyPage* lReferencePage = GetFirstPropertyItem( pId, FBX_TYPE(FbxPropertyValue) ); - FbxPropertyValue* lPropertyValue = lReferencePage ? lReferencePage->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ) : NULL; - - return lPropertyValue ? lPropertyValue->Get( pValue, pValueType ) : false; - } - - - // useful set and get functions - template inline bool Set( FbxInt pId, const T& pValue ) { return Set( pId,&pValue,FbxTypeOf(pValue),true ); } - template inline T Get( FbxInt pId, const T* pFBX_TYPE) { T lValue; Get( pId,&lValue,FbxTypeOf(lValue) ); return lValue; } - - - void SetDataPtr(void* pDataPtr) { mDataPtr = pDataPtr; } - void* GetDataPtr() const { return mDataPtr; } - - // Instance and override management - // ------------------------------------------ - void PushPropertiesToParentInstance() - { - if (mInstanceOf) { - const int lCount = GetPropertyEntryCount(); - // push the existing properties into the parent - // ---------------------------------------------- - for( int i = 0; i < lCount; ++i ) - { - FbxPropertyEntry* lParentEntry = mInstanceOf->ChangePropertyEntryState( (FbxInt)i,FbxPropertyFlags::eOverride ); - FbxPropertyEntry* lEntry = GetPropertyEntry( (FbxInt)i ); - - if( !lParentEntry ) - { - lParentEntry = FbxPropertyEntry::Create( lEntry->GetParentId(), 0, 0, 0 ); - mInstanceOf->mEntryMap.Insert( i, lParentEntry ); - - //mInstanceOf->AddChild(i); - - } - - FBX_ASSERT( lParentEntry ); - - // Add it to the parent - // Don't touch the connections - // ----------------------------------------- - if (lParentEntry) { - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyInfo)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyValue)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyFlags)) ); - } - - /* - else { - mInstanceOf->Add( - lEntry->GetParentId(), - lEntry->Get(FBX_TYPE(FbxPropertyInfo)), // The info - lEntry->Get(FBX_TYPE(FbxPropertyValue)), // The Value - 0, // The connections - false, - false - ); - } - */ - - // Empty the current entry - // Don't touch the connections - // ----------------------------------------- - ChangePropertyItemState(FBX_TYPE(FbxPropertyInfo), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyValue), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), i,FbxPropertyFlags::eInherit); - } - } - } - - inline const FbxPropertyPage* GetInstanceOf() const { return mInstanceOf; } - inline FbxPropertyPage* GetInstanceOf() { return mInstanceOf; } - - inline const FbxArray& GetInstances() const { return mInstances; } - inline FbxArray& GetInstances() { return mInstances; } - - - // Flags - // ------------------------------------------ - FbxPropertyFlags::EFlags GetFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - FbxPropertyFlags::EFlags lFlags = FbxPropertyFlags::eNone; - - if( lPropertyFlags ) - { - if( !mInstanceOf ) // no inheritance. - lFlags = lPropertyFlags->GetFlags(); - else - { - lFlags = mInstanceOf->GetFlags(pId); - lFlags = lPropertyFlags->GetMergedFlags(lFlags); - } - } - return lFlags; - } - - bool ModifyFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone,bool pValue=true,bool pCheckFlagEquality=true) - { - if( pCheckFlagEquality ) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lFlag = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( lFlag ) - { - if( lFoundIn == this ) - { - // set them in us. - lFlag->ModifyFlags( pFlags, pValue ); - - // we override this entry, check if we need to revert - FbxPropertyFlags* lInheritedFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lInheritedFlags && lInheritedFlags->Equal( *lFlag, pFlags ) ) - { - lFlag->UnsetMask( pFlags ); - - if( lFlag->GetMask() == 0 ) - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - } - else - { - // its not us. Just check if we need to set. - FbxPropertyFlags lNewValues( pFlags ); - if( lFlag->Equal( lNewValues, pFlags ) ) - return true; - } - } - } - - FbxPropertyFlags* lPropertyFlags = ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride); - return lPropertyFlags ? lPropertyFlags->ModifyFlags( pFlags, pValue ) : false; - } - - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( !pCheckInstanceOf ) - return lFoundIn != this ? FbxPropertyFlags::eInherit : ( lPropertyFlags ? lPropertyFlags->GetFlagsInheritType(pFlags) : FbxPropertyFlags::eInherit ); - else - { - // This code basically counts the number of overrides for the - // given flags. The original entry is always considered an override. - // so if we see more than one, something overrode the original. - // and thus we are an override. - FbxPropertyPage* lRefPage = lFoundIn; - bool lFoundOverride = false; - while( lRefPage ) - { - lPropertyFlags = lRefPage->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ); - - if( !lPropertyFlags ) - break; // gone too far, break. - - if( lPropertyFlags->GetFlagsInheritType( pFlags ) == FbxPropertyFlags::eOverride ) - { - if( this == lRefPage || lFoundOverride ) - return FbxPropertyFlags::eOverride; // found two overrides or this page is the override. - else - lFoundOverride = true; // signal that we found the first override. - } - lRefPage = lRefPage->mInstanceOf; - } - - return FbxPropertyFlags::eInherit; - } - } - - bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = NULL; - - if( FbxPropertyFlags::eOverride == pInheritType ) - { - lPropertyFlags = ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride ); - - // we should initialize our flag to the inherited value, if any. - FbxPropertyFlags* lParentFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lParentFlags && lPropertyFlags ) - { - FbxPropertyFlags::EFlags lParentValues = lParentFlags->GetFlags(); - lPropertyFlags->SetFlags( pFlags, lParentValues ); - return lPropertyFlags->SetMask( pFlags ); - } - - return false; - } - else if( FbxPropertyFlags::eInherit == pInheritType ) - { - lPropertyFlags = GetPropertyItem(FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn); - if( !lPropertyFlags ) return false; - if( lFoundIn != this ) return true; // not us - lPropertyFlags->UnsetMask( pFlags ); - if( lPropertyFlags->GetMask() == 0 ) // revert - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - return false; - } - - inline void BeginCreateOrFindProperty() - { - if( 0 == mNameMap.mFirst ) - { - mNameMap.mSecond.Reserve(20); - - // push the existing properties into the map. Note: this includes the root property! - FbxInt lFoundId = FBXSDK_PROPERTY_ID_ROOT; - FbxPropertyEntry* lEntry = GetPropertyEntry(lFoundId); - while(lFoundId != FBXSDK_PROPERTY_ID_NULL) - { - FbxPropertyInfo* lInfo = lEntry->Get(FBX_TYPE(FbxPropertyInfo)); - //FBX_ASSERT( lInfo ); - if (lInfo) - { - mNameMap.mSecond.Insert(FbxNameMapKey(lEntry->GetParentId(), lInfo->GetName()), lFoundId); - } - lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry); - } - mNameMap.mFirst++; - } - } - - inline void EndCreateOrFindProperty() - { - if( mNameMap.mFirst > 0 ) - { - if( --(mNameMap.mFirst) == 0 ) - mNameMap.mSecond.Clear(); - } - } - -protected: - FbxPropertyPage(FbxPropertyPage* pInstanceOf=0) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - // instances don't need to create a root property - if( !pInstanceOf ) - { - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,"",eFbxUndefined); - } - - // Hook the instances - // ------------------------ - mInstanceOf = pInstanceOf; - if (mInstanceOf) { - mInstanceOf->mInstances.Add(this); - - mPropNextId = mInstanceOf->mPropNextId; - mPropNextId->IncRef(); - } - } - FbxPropertyPage(const char* pName, EFbxType pType) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pType); - } - FbxPropertyPage(const char* pName, FbxPropertyPage* pTypeInfo) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pTypeInfo); - } - ~FbxPropertyPage() - { - // Propagate our property entries. - int i = 0, j = 0; - for( i = 0; i < mInstances.GetCount(); ++i ) - { - for( j = 0; j < GetPropertyEntryCount(); ++j ) - { - if( mInstances[i]->ChangePropertyEntryState((FbxInt)j, FbxPropertyFlags::eOverride) ) - { - // Clone the info and values. Don't clone the connections, - // since they aren't propagated. - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyInfo), (FbxInt)j, FbxPropertyFlags::eOverride ); - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), (FbxInt)j, FbxPropertyFlags::eOverride ); - - // Since all entries have their own flags, just override the ones in the instance. - mInstances[i]->SetFlagsInheritType(FbxPropertyFlags::eOverride, FbxPropertyFlags::eAllFlags, (FbxInt)j ); - } - } - - // Instances become their own copies. - mInstances[i]->mInstanceOf = NULL; - } - - FbxMapDestroy(mEntryMap); - - if (mInstanceOf) { - int lIndex = mInstanceOf->mInstances.Find(this); - mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]); - mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1); - - //mInstanceOf->mInstances.RemoveIt(this); - } - - mPropNextId->DecRef(); - mPropNextId = NULL; - - mInstanceOf = NULL; - mInstances.Clear(); - } - - inline bool Is(FbxPropertyPage* pPage) - { - // @@@@@@@@@@@@@@@ Must complete for sub types - return this==pPage; - } - -// Internal entry management -private: - - /** Retrieves the smallest property id of which are larger than a specified one. - * \param pId The specified property id - * \param pIncrementIfNone Whether it returns FBXSDK_PROPERTY_ID_NULL or pId+1, if not found. - * \return The property id described above. - */ - FbxInt GetMinimumPropertyId(FbxInt pId, bool pIncrementIfNone = true) const - { - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - FbxInt lMin = FBXSDK_PROPERTY_ID_NULL; - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lMin = lElement->GetKey(); - } - - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyId(pId,false) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lMin == FBXSDK_PROPERTY_ID_NULL; - - if( lParentNull && lMinNull ) return pIncrementIfNone ? pId+1 : FBXSDK_PROPERTY_ID_NULL; - else if( lMinNull ) lMin = lParentMin; - else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin; - - return lMin; - } - - /** Retrieves the smallest property id of which are larger than a specified one, and retrieve its entry. - * \param pId The specified property id - * \param pEntry The returned property entry - * \return The property id described above. - */ - FbxInt GetMinimumPropertyIdAndEntry(FbxInt pId, FbxPropertyEntry** pEntry) const - { - FbxInt lFoundId = FBXSDK_PROPERTY_ID_NULL; - FbxPropertyEntry* lFoundEntry = NULL; - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lFoundId = lElement->GetKey(); - lFoundEntry = lElement->GetValue(); - } - - FbxPropertyEntry* lParentEntry = NULL; - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyIdAndEntry(pId, &lParentEntry) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lFoundId == FBXSDK_PROPERTY_ID_NULL; - - if( lMinNull && !lParentNull ) - { - lFoundId = lParentMin; - lFoundEntry = lParentEntry; - } - else if( !lMinNull && !lParentNull ) - { - lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin; - lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry; - } - - if (pEntry) - *pEntry = lFoundEntry; - return lFoundId; - } - - int GetPropertyEntryCount() const - { - int lCount = 0; - const EntryMap::RecordType* lElement = mEntryMap.Maximum(); - - if (NULL != lElement) - { - lCount = lElement->GetKey() + 1; - } - - int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0; - return lParentCount > lCount ? lParentCount : lCount; - } - - FbxPropertyEntry* GetPropertyEntry(FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex); - if (NULL != lElement) - { - if( pFoundIn ) - { - *pFoundIn = const_cast(this); - } - return lElement->GetValue(); - } - - if( pFoundIn ) - { - *pFoundIn = 0; - } - - return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0; - } - - FbxPropertyEntry* ChangePropertyEntryState(FbxInt pIndex,FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - - if (pInheritType==FbxPropertyFlags::eOverride) { - if (lReferencePage==this) { - return lReferenceEntry; - } else if (lReferenceEntry) { - // must create an entry - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(lReferenceEntry->GetParentId(),0,0,0); - mEntryMap.Insert( pIndex, lEntry ); - - return lEntry; - } - } else { - if (lReferenceEntry && (lReferencePage==this)) { - mEntryMap.Remove(pIndex); - lReferenceEntry->Destroy(); - } - } - return 0; - } - - FbxInt Add(FbxInt pParentId,FbxPropertyInfo* pInfo,FbxPropertyValue* pValue,FbxPropertyConnect* pConnect,bool pRecursive=true) - { - FbxInt lId = mPropNextId->GetNextIdAndInc(); - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(pParentId,pInfo,pValue,pConnect); - - // entries created through Add() are not overrides of another entry. - // Thus, set all of their flags by default. - FbxPropertyFlags* lFlags = lEntry->Get( FBX_TYPE(FbxPropertyFlags) ); - if( lFlags ) lFlags->ModifyFlags( FbxPropertyFlags::eAllFlags, false ); - - mEntryMap.Insert( lId, lEntry ); - - // We only add to the map if this Add is called after BeginCreateOrFindProperty() - // in which case the size is always > 0 because it includes the root property - if( mNameMap.mSecond.GetSize() > 0 ) - mNameMap.mSecond.Insert( FbxNameMapKey( pParentId, pInfo->GetName()), lId ); - - // If the entry has multiple children(Struct Datatype) - // Recurse for the entries and create an entry in this structure - if (pRecursive) { - FbxPropertyPage* lTypeInfo = pInfo->GetTypeInfo(); - if (lTypeInfo) { - FbxInt lChildId; - lChildId = lTypeInfo->GetChild(); - while (lChildId!=FBXSDK_PROPERTY_ID_NULL) { - FbxPropertyInfo* lPropertyInfo = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyInfo),lChildId ); - FbxPropertyValue* lPropertyValue = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyValue),lChildId ); - FbxPropertyConnect* lPropertyConnect = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),lChildId ); - - Add ( lId, lPropertyInfo ? lPropertyInfo->Clone(this) : 0 , lPropertyValue ? lPropertyValue->Clone(this) : 0, - lPropertyConnect ? lPropertyConnect->Clone(this) : 0 ); - lChildId = lTypeInfo->GetSibling(lChildId ); - } - } - } - return lId; - } - - // Property management - typedef FbxMap, FbxHungryAllocator> EntryMap; - EntryMap mEntryMap; - - // instance management - FbxPropertyPage* mInstanceOf; - FbxArray mInstances; - - void* mDataPtr; - - // speed up structure - typedef FbxMap NameMap; - typedef FbxPair NameLookupPair; - NameLookupPair mNameMap; - - FbxPropertyIdGenerator* mPropNextId; - - friend class FbxPropertyHandle; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_PAGE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertytypes.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertytypes.h deleted file mode 100644 index 9aa2d7c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxpropertytypes.h +++ /dev/null @@ -1,1178 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertytypes.h -#ifndef _FBXSDK_CORE_PROPERTY_TYPES_H_ -#define _FBXSDK_CORE_PROPERTY_TYPES_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -//! Type identifier constants -enum EFbxType -{ - eFbxUndefined, //!< Unidentified. - eFbxChar, //!< 8 bit signed integer. - eFbxUChar, //!< 8 bit unsigned integer. - eFbxShort, //!< 16 bit signed integer. - eFbxUShort, //!< 16 bit unsigned integer. - eFbxUInt, //!< 32 bit unsigned integer. - eFbxLongLong, //!< 64 bit signed integer. - eFbxULongLong, //!< 64 bit unsigned integer. - eFbxHalfFloat, //!< 16 bit floating point. - eFbxBool, //!< Boolean. - eFbxInt, //!< 32 bit signed integer. - eFbxFloat, //!< Floating point value. - eFbxDouble, //!< Double width floating point value. - eFbxDouble2, //!< Vector of two double values. - eFbxDouble3, //!< Vector of three double values. - eFbxDouble4, //!< Vector of four double values. - eFbxDouble4x4, //!< Four vectors of four double values. - eFbxEnum = 17, //!< Enumeration. - eFbxEnumM =-17, //!< Enumeration allowing duplicated items. - eFbxString = 18, //!< String. - eFbxTime, //!< Time value. - eFbxReference, //!< Reference to object or property. - eFbxBlob, //!< Binary data block type. - eFbxDistance, //!< Distance. - eFbxDateTime, //!< Date and time. - eFbxTypeCount = 24 //!< Indicates the number of type identifiers constants. -}; - -/** Class to represent colors in RGBA format using doubles. - * \nosubgrouping - */ -class FBXSDK_DLL FbxColor -{ -public: - //! Constructor. - FbxColor(); - - /** Constructor. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - FbxColor(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - FbxColor(const FbxDouble3& pRGB, const double pAlpha=1.0); - FbxColor(const FbxDouble4& pRGBA); - - //! Destructor. - ~FbxColor(); - - /** Re-initialize the color object with their new values. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - void Set(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - - /** Indicate if all the members in the color objects are within their valid range. - * \return \c true if all the members are within their valid range. - */ - bool IsValid() const; - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - double& operator[](int pIndex); - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - const double& operator[](int pIndex) const; - - /** - * \name Operators - */ - //@{ - /** Assignment operator. - * \param pColor FbxColor to be copied. - */ - FbxColor& operator=(const FbxColor& pColor); - FbxColor& operator=(const FbxDouble3& pColor); - FbxColor& operator=(const FbxDouble4& pColor); - - /** Equality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if equal, \c false if unequal. - */ - bool operator==(const FbxColor& pColor) const; - - /** Inequality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if unequal, \c false if equal. - */ - bool operator!=(const FbxColor& pColor) const; - //@} - - /** - * name Public Members - */ - //@{ - //! Valid range is from 0.0 to 1.0. - double mRed; - - //! Valid range is from 0.0 to 1.0. - double mGreen; - - //! Valid range is from 0.0 to 1.0. - double mBlue; - - //! Valid range is from 0.0 to 1.0. - double mAlpha; - //@} -}; - -/** FBX SDK half-float class. - * Property used to store half-float (16 bit float) number. - * This class only holds the value in 2 byte buffer (unsigned short). There is - * no direct math manipulation of this type except for the conversion to/from - * float. On disk, this type is also saved as an unsigned short. - * \nosubgrouping - */ -class FBXSDK_DLL FbxHalfFloat -{ -public: - /** - *\name Constructors - */ - //@{ - FbxHalfFloat(); - FbxHalfFloat(float pVal); - FbxHalfFloat(const FbxHalfFloat& pVal); - //@} - - /** Assign operator - * \param pValue The half-float to be assigned to this instance. - * \return This half-float. - */ - FbxHalfFloat& operator=(const FbxHalfFloat& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The half-float to be compared with this one. - * \return \c True, if the two values are equal, \c false otherwise. - */ - bool operator==(const FbxHalfFloat& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The half-float to be compared with this one - * \return \c True, if the two values are unequal, \c false otherwise. - */ - bool operator!=(const FbxHalfFloat& pRHS) const; - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve the value as a float. - */ - float value() const; - - /** Retrieve the value as it is stored. - */ - unsigned short internal_value() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef unsigned short half; - half mValue; - - // we want to extract the mantissa, exponent and sign from the float number. - // by the IEEE 754 binary standard, the float number is divided as: - // sign : 1 bit - // mantissa : 23 bits - // exponent : 8 bits - // exponent bias : 127 - // and the half-float is: - // sing : 1 bit - // mantissa : 10 bits - // exponent : 5 bits - // exponent bias : - - half FtoHF(float *f); - float HFtoF(half h) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FBX SDK blob class. - * Uninitialized data of a specified size, to be filled by the user. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBlob -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. Set attributes to 0. - FbxBlob(); - - /** Constructor. Construct a buffer with uninitialized data of a specified size, to be filled by the user. - * \param pSize Buffer size. - */ - FbxBlob(int pSize); - - /** Copy constructor. - * \param pRHS The blob to be copied to this blob. - */ - FbxBlob(const FbxBlob& pRHS); - - /** Constructor. - * \param pData The data to be filled in the buffer. - * \param pSize Buffer size. - */ - FbxBlob(const void* pData, int pSize); - - //! Destructor - ~FbxBlob(); - //@} - - /** - * \name Assignment. - */ - //@{ - /** Share the buffer of the specified blob with this blob. - * \param pValue The blob whose buffer is shared with this blob. - * \return This blob. - */ - FbxBlob& operator=(const FbxBlob& pValue); - - /** Copy the data in the buffer. - * \param pData The buffer to be copied data from. - * \param pSize Buffer size. - */ - void Assign(const void* pData, int pSize); // Always makes a copy. - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are equal, \c false otherwise. - */ - bool operator==(const FbxBlob& pRHS) const; // Compare the contents. - - /** Inequality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are unequal, otherwise false. - */ - bool operator!=(const FbxBlob& pRHS) const; - //@} - - //!Make a copy if the reference count > 1 (i.e. if the buffer is shared). - void* Modify(); - - /** - * \name Access - */ - //@{ - - /** Retrieve the buffer pointer. - * \return The buffer pointer. - */ - const void * Access() const; - - /** Retrieve the buffer size - * \return The buffer size. - */ - int Size() const; - //@} - - //! Free the memory if this blob is the last one to hold it. - void Clear(); - -protected: - int* mRefCount; - void* mData; - int mSize; -}; - -/** FBX SDK date&time class. - * Property used to store date and time information; not related to a FbxTime, which is - * used for film-related operations. - * The date and time property does not make any provisions for UTC, GMT or local - * zones; this is entirely up to client code to know what they are dealing with. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDateTime -{ -public: - /** - *\name Constructors - */ - //@{ - //! Default constructor. Set attributes to 0. - FbxDateTime(); - - /** Constructor. - * \param pDay Day - * \param pMonth Month - * \param pYear Year - * \param pHour Hour - * \param pMin Minute - * \param pSec Second - * \param pMillisecond Millisecond - * \remark If one or more argument is invalid, the object is reset to 0. - */ - FbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond=0); - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equivalence operator. - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are equal, \c false otherwise. - */ - bool operator==(const FbxDateTime& pRHS) const; - - /** Non-equivalence operator - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are not equal, \c false otherwise. - */ - bool operator!=(const FbxDateTime& pRHS) const; - //@} - - //! Set the attributes to 0. - void Clear(); - - /** Validates each field is within a normal range (month is 1-12, etc). - * \return \c True, if each field is within a normal range, \c false otherwise. - */ - bool isValid() const; - - /** - * \name Access - */ - //@{ - /** Set the date. - * \param pDay Day to be set. - * \param pMonth Month to be set. - * \param pYear Year to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setDate(int pDay, int pMonth, int pYear); - - /** Set the time. - * \param pHour Hour to be set. - * \param pMin Minute to be set. - * \param pSec Second to be set. - * \param pMillisecond Millisecond to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0); - //@} - - /** - * \name Operation with string - */ - //@{ - /** Get the string format from this date&time. - * \return The string format got from this date&time. - */ - FbxString toString() const; - - /** Get date&time from the string format. - * \return \c True, if get date&time from the string format successfully, \c false otherwise. - * \remarks ! This will only work with the format returned by toString(); if the format - * is not the same will return 'false' and the content of this object will - * remain unchanged. - */ - bool fromString(const char*); - //@} - - /** Get date&time from current date&time of GMT. - * \return The date&time equal to current date&time of GMT. - */ - static FbxDateTime currentDateTimeGMT(); - -private: - FbxShort mMillisecond; // 0-999 - FbxShort mYear; // No check - - FbxChar mMonth; // 1-12 - FbxChar mDay; // 1-31; no check with regards to the month - FbxChar mHour; // 0-23 - FbxChar mMinute; // 0-59 - FbxChar mSecond; // 0-59 -}; - -/** FBX SDK distance class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDistance -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxDistance(); - - /** Constructor with default values. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - */ - FbxDistance(float pValue, FbxSystemUnit pUnit); - - /** Constructor. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - * \remarks This constructor will convert string to FbxSystemUnit. - */ - FbxDistance(float pValue, const char* pUnit); - - //! Destructor. - ~FbxDistance(); - //@} - - /** Assign operator - * \param pValue The distance to be assigned to this distance. - * \return This distance. - */ - FbxDistance& operator=(const FbxDistance& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are equal, \c false otherwise. - */ - bool operator==(const FbxDistance& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are unequal, \c false otherwise. - */ - bool operator!=(const FbxDistance& pRHS) const; - //@} - - const FbxString unitName() const; - - /** - * \name Access - */ - //@{ - /** Retrieve the measurement unit - * \return The measure unit of the distance. - */ - const FbxSystemUnit unit() const; - - /** Retrieve the distance value - * \return The value of the distance in the defined measurement unit. - */ - float value() const; - //@} - - /** Get the value of distance when converting this measurement unit to inch. - * \return The value of distance when converting this measurement unit to inch. - */ - float internalValue() const; - - /** Get the value of distance when converting this measurement unit to the specified measurement unit. - * \param pUnit The measurement unit to be converted to. - * \return The value of distance when using the specified measurement unit. - */ - float valueAs(const FbxSystemUnit& pUnit) const; - -private: - float mValue; - FbxSystemUnit mUnit; -}; - -/** Retrieve a type enumeration memory footprint size -* \param pType The type enumeration -* \return The size of this type in memory */ -FBXSDK_DLL size_t FbxTypeSizeOf(const EFbxType pType); - -/** Retrieve a type enumeration component count -* \param pType The type enumeration -* \return The number of component used by this type */ -FBXSDK_DLL size_t FbxTypeComponentCount(const EFbxType pType); - -// Type management for properties -inline EFbxType FbxTypeOf(const FbxChar&){ return eFbxChar; } -inline EFbxType FbxTypeOf(const FbxUChar&){ return eFbxUChar; } -inline EFbxType FbxTypeOf(const FbxShort&){ return eFbxShort; } -inline EFbxType FbxTypeOf(const FbxUShort&){ return eFbxUShort; } -inline EFbxType FbxTypeOf(const FbxUInt&){ return eFbxUInt; } -inline EFbxType FbxTypeOf(const FbxLongLong&){ return eFbxLongLong; } -inline EFbxType FbxTypeOf(const FbxULongLong&){ return eFbxULongLong; } -inline EFbxType FbxTypeOf(const FbxHalfFloat&){ return eFbxHalfFloat; } -inline EFbxType FbxTypeOf(const FbxBool&){ return eFbxBool; } -inline EFbxType FbxTypeOf(const FbxInt&){ return eFbxInt; } -inline EFbxType FbxTypeOf(const FbxFloat&){ return eFbxFloat; } -inline EFbxType FbxTypeOf(const FbxDouble&){ return eFbxDouble; } -inline EFbxType FbxTypeOf(const FbxDouble2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxDouble3&){ return eFbxDouble3; } -inline EFbxType FbxTypeOf(const FbxDouble4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDouble4x4&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxVector2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxVector4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxQuaternion&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxAMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxString&){ return eFbxString; } -inline EFbxType FbxTypeOf(const FbxTime&){ return eFbxTime; } -inline EFbxType FbxTypeOf(const FbxReference&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxBlob&){ return eFbxBlob; } -inline EFbxType FbxTypeOf(const FbxColor&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDistance&){ return eFbxDistance; } -inline EFbxType FbxTypeOf(const FbxDateTime&){ return eFbxDateTime; } - -template inline EFbxType FbxTypeOf(const T&){ FBX_ASSERT_NOW("Unknown type!"); return eFbxUndefined; } - -bool FBXSDK_DLL FbxTypeCopyStr(FbxDouble& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxBool& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxLongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxULongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxHalfFloat& pDst, const FbxString& pSrc); - -// Copy types and conversions -template inline bool FbxTypeCopy(T1&, const T2&){ FBX_ASSERT_NOW("Incompatible type assignment!" ); return false; } - -//! Same type conversion -inline bool FbxTypeCopy(FbxChar& pDst, const FbxChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxUChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxLongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxULongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxBool& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble2& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4x4& pDst, const FbxDouble4x4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxString& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxTime& pDst, const FbxTime& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxReference& pDst, const FbxReference& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBlob& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDistance& pDst, const FbxDistance& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxDateTime& pSrc){ pDst = pSrc; return true; } - -//To FbxBool -inline bool FbxTypeCopy(FbxBool& pDst, const FbxChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxLongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxULongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxHalfFloat& /*pSrc */){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxFloat& pSrc){ pDst = pSrc == 0.f ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxDouble& pSrc){ pDst = pSrc == 0. ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxChar -inline bool FbxTypeCopy(FbxChar& pDst, const FbxUChar& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxBool& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxInt& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxFloat& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxDouble& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUChar -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxChar& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxBool& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxInt& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxFloat& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxDouble& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxShort -inline bool FbxTypeCopy(FbxShort& pDst, const FbxChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxUChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxBool& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxInt& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxFloat& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxDouble& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUShort -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxShort& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxBool& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxInt& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxFloat& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxDouble& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxInt -inline bool FbxTypeCopy(FbxInt& pDst, const FbxChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUInt& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxULongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxBool& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxFloat& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxDouble& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUInt -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxULongLong& pSrc) { pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxBool& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxInt& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxFloat& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxDouble& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxLongLong -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxULongLong& pSrc) { pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxBool& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxULongLong -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxLongLong& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxBool& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxHalfFloat -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxLongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxULongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxBool& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxFloat& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDouble& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDistance& pSrc){ FbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxFloat -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc.value() ; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxBool& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDouble& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble2& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble3& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4x4& pSrc){ pDst = (FbxDouble)pSrc[0][0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxTime& pSrc){ pDst = (FbxDouble)pSrc.GetSecondDouble(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } - -//To FbxDouble2 -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } - -//To FbxDouble3 -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble4 -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxString -inline bool FbxTypeCopy(FbxString& pDst, const FbxChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxLongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxULongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxHalfFloat& pSrc){ pDst=FbxString((float)pSrc.value()); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBool& pSrc){ pDst=pSrc ? "true" : "false"; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxFloat& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble2& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble3& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2])+","+FbxString(pSrc[3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4x4& pSrc){ pDst=FbxString(pSrc[0][0])+","+FbxString(pSrc[0][1])+","+FbxString(pSrc[0][2])+","+FbxString(pSrc[0][3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxTime& pSrc){ char lTimeStr[128]; pSrc.GetTimeString(lTimeStr, FbxUShort(128)); pDst=lTimeStr; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxReference& /*pSrc*/){ pDst=""; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBlob& /*pSrc*/){ pDst=""; return true; } // Or convert to ASCII-85? -inline bool FbxTypeCopy(FbxString& pDst, const FbxDistance& pSrc){ pDst= FbxString(pSrc.value()) + " " +pSrc.unitName(); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDateTime& pSrc){ pDst= pSrc.toString(); return true; } - -//To FbxBlob -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxLongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxULongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxHalfFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBool& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble2& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble3& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4x4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxString& pSrc) -{ - bool lCastable = pSrc.GetLen() == pSrc.GetLen(); - FBX_ASSERT( lCastable ); - if( lCastable ) - pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen()); - return lCastable; -} -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxTime& pSrc){ FbxLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDistance -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDateTime -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxString& pSrc){ return pDst.fromString(pSrc); } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } - -template inline bool FbxTypeCopy(T& pDst, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -template inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const T& pSrc) -{ - switch( pDstType ) - { - case eFbxChar: return FbxTypeCopy(*(FbxChar*)pDst, pSrc); - case eFbxUChar: return FbxTypeCopy(*(FbxUChar*)pDst, pSrc); - case eFbxShort: return FbxTypeCopy(*(FbxShort*)pDst, pSrc); - case eFbxUShort: return FbxTypeCopy(*(FbxUShort*)pDst, pSrc); - case eFbxUInt: return FbxTypeCopy(*(FbxUInt*)pDst, pSrc); - case eFbxLongLong: return FbxTypeCopy(*(FbxLongLong*)pDst, pSrc); - case eFbxULongLong: return FbxTypeCopy(*(FbxULongLong*)pDst, pSrc); - case eFbxHalfFloat: return FbxTypeCopy(*(FbxHalfFloat*)pDst, pSrc); - case eFbxBool: return FbxTypeCopy(*(FbxBool*)pDst, pSrc); - case eFbxInt: return FbxTypeCopy(*(FbxInt*)pDst, pSrc); - case eFbxFloat: return FbxTypeCopy(*(FbxFloat*)pDst, pSrc); - case eFbxDouble: return FbxTypeCopy(*(FbxDouble*)pDst, pSrc); - case eFbxDouble2: return FbxTypeCopy(*(FbxDouble2*)pDst, pSrc); - case eFbxDouble3: return FbxTypeCopy(*(FbxDouble3*)pDst, pSrc); - case eFbxDouble4: return FbxTypeCopy(*(FbxDouble4*)pDst, pSrc); - case eFbxDouble4x4: return FbxTypeCopy(*(FbxDouble4x4*)pDst, pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(*(FbxEnum*)pDst, pSrc); - case eFbxString: return FbxTypeCopy(*(FbxString*)pDst, pSrc); - case eFbxTime: return FbxTypeCopy(*(FbxTime*)pDst, pSrc); - case eFbxBlob: return FbxTypeCopy(*(FbxBlob*)pDst, pSrc); - case eFbxDistance: return FbxTypeCopy(*(FbxDistance*)pDst, pSrc); - case eFbxDateTime: return FbxTypeCopy(*(FbxDateTime*)pDst, pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, pDstType, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, pDstType, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, pDstType, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, pDstType, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, pDstType, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, pDstType, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, pDstType, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, pDstType, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, pDstType, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, pDstType, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, pDstType, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, pDstType, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, pDstType, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, pDstType, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, pDstType, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, pDstType, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, pDstType, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, pDstType, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, pDstType, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, pDstType, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -/** Creates a fbx primitive type and initializes its memory. - * \param pType The type of object to create. - * \return A pointer to the new primitive object. Note that the caller owns the returned object. - * The pointer returned is NULL if pType is eFbxUndefined or an unknown type. - */ -FBXSDK_DLL void* FbxTypeAllocate(const EFbxType pType); - -/** Destroys an fbx primitive type. If the return value is true - * the memory pointed to by pData has been deleted and should - * no longer be accessed. - * \param pType The type of object being deleted - * \param pData Pointer to the object being deleted. - * \return true if the object was destroyed, false otherwise. - */ -FBXSDK_DLL bool FbxTypeDeallocate(const EFbxType pType, void* pData); - -/** Compare two values of the same type - * \param pA first value - * \param pB second value - * \param pType The data type of both values - * \return \c true if equal, \c false otherwise - */ -FBXSDK_DLL bool FbxTypeCompare(const void* pA, const void* pB, const EFbxType pType); - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_TYPES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxquery.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxquery.h deleted file mode 100644 index 8a5d971..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxquery.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquery.h -#ifndef _FBXSDK_CORE_QUERY_H_ -#define _FBXSDK_CORE_QUERY_H_ - -#include - -#include -#include -#include -#include - -#include - -#define FBXSDK_QUERY_UNIQUE_ID 0x14000000 - -class FbxProperty; - -/** Base class to manage query. A query contains a filter and reference ID, which will be used to search and retrieve objects. -* The derived query classes are used to create FbxCriteria. -* \nosubgrouping */ -class FBXSDK_DLL FbxQuery -{ -public: - //! Get unique filter Id - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID; } - - /** Judge if the given property is valid. - * \param pProperty The given property. - * \return \c true always, not implemented. */ - virtual bool IsValid(const FbxProperty& pProperty) const; - - /** This compares whether two FbxQuery are the same, NOT whether the query matches or not. It's strictly the equivalent of an operator==, but virtual. - * \param pOtherQuery The given FbxQuery */ - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - - //! Add one to ref count. - void Ref(); - - //! Minus one to ref count, if ref count is zero, delete this query object. - void Unref(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxQuery(); - virtual ~FbxQuery(); - -private: - class InternalFilter : public FbxConnectionPointFilter - { - public: - InternalFilter(FbxQuery* pQuery); - ~InternalFilter(); - - public: - FbxConnectionPointFilter* Ref(); - void Unref(); - FbxInt GetUniqueId() const { return mQuery->GetUniqueId(); } - bool IsValid(FbxConnectionPoint* pConnect) const; - bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; - - FbxQuery* mQuery; - }; - - InternalFilter mFilter; - int mRefCount; - - FBXSDK_FRIEND_NEW(); - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Defines a filtering criteria for a query of objects, connections and properties, so that only those satisfying the criteria are -* affected by the query. Some examples of kinds of criteria are object type, connection type, or property. Criteria can be combined -* using logical operators such as "and" and "or". -* \note -* Objects are basic elements in FBX. Each of them has a hierarchy type and some properties. Objects and properties can be connected -* through a connection to represent a relationship between them. (e.g. child-parent, container membership, reference, etc.,). In a -* query, you could select object or properties based on these criteria. -* Here are some examples: -* \code -* FbxObject* lObject = FbxObject::Create(lManager, "Object"); -* int lSrcLightCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(FbxLight::ClassId)); -* int lSrcDeformerCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectTypeStrict(FbxDeformer::ClassId)); -* int lSrcPropertyCount = lObject->RootProperty.GetSrcCount(FbxCriteria::IsProperty()); -* \endcode -* \see FbxQuery -* \see FbxProperty::GetSrcObjectCount(const FbxCriteria&) const -* \see FbxCollection::GetMemberCount(const FbxCriteria&) const -* \nosubgrouping */ -class FBXSDK_DLL FbxCriteria -{ -public: - /** Creates a new query criteria that only selects objects which have a specific - * class ID or derive from a class with a specific class ID. - * \param pClassId The base type class ID */ - static FbxCriteria ObjectType(const FbxClassId& pClassId); - - /** Creates a new query criteria that only selects objects which have a specific class ID. - * \param pClassId The type class ID */ - static FbxCriteria ObjectTypeStrict(const FbxClassId& pClassId); - - //! Creates a new query criteria that only selects properties. - static FbxCriteria IsProperty(); - - /** Gets a logical conjunction (and) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator&&(const FbxCriteria& pCriteria) const; - - /** Gets a logical disjunction (or) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator||(const FbxCriteria& pCriteria) const; - - //! Returns a negated version of the criteria. - FbxCriteria operator!() const; - - /** Retrieves the query. - * \return The query of this criteria */ - FbxQuery* GetQuery() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxCriteria(); - FbxCriteria(const FbxCriteria& pCriteria); - FbxCriteria(FbxQuery* pQuery); - ~FbxCriteria(); - - FbxCriteria& operator=(const FbxCriteria& pCriteria); - -private: - FbxQuery* mQuery; - - static void FreeGlobalCache(); - - FBXSDK_FRIEND_NEW(); - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxCriteria -struct FbxCriteriaCompare -{ - inline int operator()(const FbxCriteria& pKeyA, const FbxCriteria& pKeyB) const - { - const FbxQuery* lKeyA = pKeyA.GetQuery(); - const FbxQuery* lKeyB = pKeyB.GetQuery(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxQueryOperator : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - enum EType {eAND, eOR}; - - static FbxQueryOperator* Create(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID+1; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperator(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual ~FbxQueryOperator(); - -private: - FbxQuery *mA, *mB; - EType mOperator; -}; - -class FBXSDK_DLL FbxQueryOperatorUnary : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryOperatorUnary* Create(FbxQuery* pA); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+2; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperatorUnary(FbxQuery* pA); - virtual ~FbxQueryOperatorUnary(); - -private: - FbxQuery* mA; -}; - -class FBXSDK_DLL FbxQueryClassId : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryClassId* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+3; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryClassId(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsA : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsA* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+4; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsA(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsProperty : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsProperty* Create(); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+5; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsProperty(); -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_QUERY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxqueryevent.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxqueryevent.h deleted file mode 100644 index 2608ed5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxqueryevent.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxqueryevent.h -#ifndef _FBXSDK_CORE_QUERY_EVENT_H_ -#define _FBXSDK_CORE_QUERY_EVENT_H_ - -#include - -#include - -#include - -/** A query event is something that is emitted by an entity, with the goal of being filled by someone that listen to it. -* You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return -* it to you with the right information in it. A query event is emitted, and plug-in who are listening to that type of query, -* fill the data that can be accessed by the query emitter. -*/ -template class FbxQueryEvent : public FbxEvent > -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * \param pData The requested data. - */ - explicit FbxQueryEvent(QueryT* pData):mData(pData){} - - /** Accessor to a mutable reference to the data. Event are usually const and can't be modified by listener. - * This special type of event can have is content modified via this accessor. - * \return A mutable reference the requested data. - */ - QueryT& GetData()const { return *mData; } - //@} - -private: - mutable QueryT* mData; - -private: - virtual const char* GetEventName() const { FBX_ASSERT(false); return ""; } - static const char* FbxEventName() { FBX_ASSERT(false); return ""; } - friend class FbxEvent< FbxQueryEvent >; -}; - -#include - -#endif /* _FBXSDK_CORE_QUERY_EVENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h deleted file mode 100644 index 38ebfee..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingdirectory.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -class FbxPluginHandle; - -//! A plug-in loading strategy that loads all DLLs with a specific extension from a specific directory. When this class is destroyed all of the plug-ins are unloaded. -class FBXSDK_DLL FbxScopedLoadingDirectory : public FbxLoadingStrategy -{ -public: - /** Constructor, which also load plug-ins in the folder specified. - * \param pDirectoryPath The directory path. - * \param pPluginExtension The plug-in extension. */ - FbxScopedLoadingDirectory(const char* pDirectoryPath, const char* pPluginExtension); - - /** Destructor. Unload plug-ins. */ - virtual ~FbxScopedLoadingDirectory(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxString mDirectoryPath; - FbxString mExtension; - - FbxArray mPluginHandles; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h deleted file mode 100644 index 66529e8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingfilename.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * A plug-in loading strategy that loads a single DLL by specifying the file name in the constructor, and unloads the DLL in its destructor. - */ -class FBXSDK_DLL FbxScopedLoadingFileName : public FbxLoadingStrategy -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * Load plug-in. - * \param pPath The file path. - */ - explicit FbxScopedLoadingFileName(const char* pPath); - - /** Destructor. - * Unload plug-in. - */ - virtual ~FbxScopedLoadingFileName(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxModule mInstance; - FbxString mPath; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxstream.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxstream.h deleted file mode 100644 index ef349a4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxstream.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstream.h -#ifndef _FBXSDK_CORE_STREAM_H_ -#define _FBXSDK_CORE_STREAM_H_ - -#include - -#include - -#include - -/** Abstract class for implementing I/O operations through a stream of data. -* For instance, it can be used to read data from a memory source, thus making it possible to import files from memory. However, -* for the time being, the FbxStream class is only supported with FBX files. -*/ -class FBXSDK_DLL FbxStream -{ -public: - /** Current stream state. */ - enum EState - { - eClosed, //!< The stream is closed. - eOpen, //!< The stream is open. - eEmpty //!< The stream is empty. - }; - - /** Query the current state of the stream. */ - virtual EState GetState() = 0; - - /** Open the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Open(void* pStreamData) = 0; - - /** Close the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Close() = 0; - - /** Empties the internal data of the stream. - * \return True if successful. */ - virtual bool Flush() = 0; - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. */ - virtual int Write(const void* /*pData*/, int /*pSize*/) = 0; - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. */ - virtual int Read(void* /*pData*/, int /*pSize*/) const = 0; - - /** Read a string from the stream. - * The default implementation is written in terms of Read() but does not cope with DOS line endings. - * Subclasses may need to override this if DOS line endings are to be supported. - * \param pBuffer Pointer to the memory block where the read bytes are stored. - * \param pMaxSize Maximum number of bytes to be read from the stream. - * \param pStopAtFirstWhiteSpace Stop reading when any whitespace is encountered. Otherwise read to end of line (like fgets()). - * \return pBuffer, if successful, else NULL. - * \remark The default implementation terminates the \e pBuffer with a null character and assumes there is enough room for it. - * For example, a call with \e pMaxSize = 1 will fill \e pBuffer with the null character only. */ - virtual char* ReadString(char* pBuffer, int pMaxSize, bool pStopAtFirstWhiteSpace=false); - - /** If not specified by KFbxImporter::Initialize(), the importer will ask - * the stream to select an appropriate reader ID to associate with the stream. - * FbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetReaderID() const = 0; - - /** If not specified by KFbxExporter::Initialize(), the exporter will ask - * the stream to select an appropriate writer ID to associate with the stream. - * KFbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetWriterID() const = 0; - - /** Adjust the current stream position. - * \param pSeekPos Pre-defined position where offset is added (FbxFile::eBegin, FbxFile::eCurrent:, FbxFile::eEnd) - * \param pOffset Number of bytes to offset from pSeekPos. */ - virtual void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos)=0; - - /** Get the current stream position. - * \return Current number of bytes from the beginning of the stream. */ - virtual long GetPosition() const = 0; - - /** Set the current stream position. - * \param pPosition Number of bytes from the beginning of the stream to seek to. */ - virtual void SetPosition(long pPosition)=0; - - /** Return 0 if no errors occurred. Otherwise, return 1 to indicate - * an error. This method will be invoked whenever FBX needs to verify - * that the last operation succeeded. */ - virtual int GetError() const = 0; - - /** Clear current error condition by setting the current error value to 0. */ - virtual void ClearError() = 0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStream(){}; - virtual ~FbxStream(){}; - - int Write(const char* pData, int pSize){ return Write((void*)pData, pSize); } - int Write(const int* pData, int pSize){ return Write((void*)pData, pSize); } - int Read(char* pData, int pSize) const { return Read((void*)pData, pSize); } - int Read(int* pData, int pSize) const { return Read((void*)pData, pSize); } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_STREAM_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsymbol.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsymbol.h deleted file mode 100644 index 260fe40..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsymbol.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsymbol.h -#ifndef _FBXSDK_CORE_SYMBOL_H_ -#define _FBXSDK_CORE_SYMBOL_H_ - -#include - -#include -#include - -#include - -/** Defines a symbol string. A symbol string is a string that is unique and stored in a global symbol table. -* \nosubgrouping */ -class FBXSDK_DLL FbxSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - * \param pRealm The real value for this symbol. - */ - FbxSymbol(const char* pName, const char* pRealm); - - //! Destructor. - ~FbxSymbol(); - //@} - - /** - * \name Access function. - */ - //@{ - /** - * Get ID in global symbol table. - * \return Symbol ID in global symbol table. - */ - unsigned int GetID() const; - //@} - - /** - * \name Symbol comparison - */ - //@{ - /** Equality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator==(FbxSymbol const& pSymbol) const; - - /** Inequality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator!=(FbxSymbol const& pSymbol) const; - //@} - -private: - unsigned int mID; -}; - -typedef FbxMap< FbxString, int, FbxStringCompare > FbxStringSymbolMap; - - -/** This class is to mark a string as symbol. - * String Symbol only has its name. - * /remarks Each symbol is unique. That means there are no symbols which have the same name. -* \nosubgrouping */ -class FBXSDK_DLL FbxStringSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - //! Default constructor. - FbxStringSymbol(); - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - */ - FbxStringSymbol(const char* pName); - - //! Copy constructor. - FbxStringSymbol(const FbxStringSymbol& pOther); - - //! Destructor. - ~FbxStringSymbol(); - //@} - - //! Cast operator to const char* type. - inline operator const char*() const { return mItem ? ((const char*) mItem->GetKey()) : NULL; } - - - /** Determine the symbol empty or not. - * \return \c true if empty. \c false otherwise. - */ - inline bool IsEmpty() const - { - return !mItem || mItem->GetKey().IsEmpty(); - } - - //! Static function to allocate global string symbol map. - static void AllocateGlobalStringSymbolMap(); - - //! Static function to deallocate global string symbol map. - static void FreeGlobalStringSymbolMap(); - - /** Assignment operator. - * \param pName The symbol value. - * \return The self after assignment. - */ - FbxStringSymbol& operator=(const char* pName); - -private: - FbxStringSymbolMap::RecordType* mItem; -}; - -#include - -#endif /* _FBXSDK_CORE_SYMBOL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsystemunit.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsystemunit.h deleted file mode 100644 index 92fa5e5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxsystemunit.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsystemunit.h -#ifndef _FBXSDK_CORE_SYSTEM_UNIT_H_ -#define _FBXSDK_CORE_SYSTEM_UNIT_H_ - -#include - -#include -#include - -#include - -class FbxAMatrix; -class FbxScene; -class FbxNode; -class FbxAnimCurveNode; - -/** \brief This class describes the units of measurement used within a particular scene. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSystemUnit -{ -public: - - /** Struct to define various options that you can use to convert the system unit of a scene. - * The default values are: - * mConvertRrsNodes = true - * mConvertLimits = true - * mConvertClusters = true - * mConvertLightIntensity = true - * mConvertPhotometricLProperties = true - * mConvertCameraClipPlanes = true - * - * The default configuration have been tested to give the best conversion results in the majority of the case. - * \remark Changing any of these values will have a direct impact on the whole scene behavior. - */ - struct ConversionOptions - { - //! This flag indicates whether or not to convert the nodes that do not inherit their parent's scale. - bool mConvertRrsNodes; - - //! This flag indicates whether or not to convert limits. - bool mConvertLimits; - - //! This flag indicates whether or not to convert clusters. - bool mConvertClusters; - - //! This flag indicates whether or not to convert the light intensity property. - bool mConvertLightIntensity; - - //! This flag indicates whether or not to convert photometric lights properties. - bool mConvertPhotometricLProperties; - - //! This flag indicates whether or not to convert the cameras clip planes. - bool mConvertCameraClipPlanes; - }; - - FbxSystemUnit(); - - /** Constructor. - * \param pScaleFactor The equivalent number of centimeters in the new system unit. - * For example, an inch unit uses a scale factor of 2.54. - * \param pMultiplier A multiplier factor of pScaleFactor. - */ - FbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0); - - /** Destructor. - */ - ~FbxSystemUnit(); - - //! Predefined system unit for millimeters. - static const FbxSystemUnit mm; - - //! Predefined system unit for decimeters. - static const FbxSystemUnit dm; - - //! Predefined system unit for centimeters. - static const FbxSystemUnit cm; - - //! Predefined system unit for meters. - static const FbxSystemUnit m; - - //! Predefined system unit for kilometers. - static const FbxSystemUnit km; - - //! Predefined system unit for inches. - static const FbxSystemUnit Inch; - - //! Predefined system unit for feet. - static const FbxSystemUnit Foot; - - //! Predefined system unit for miles. - static const FbxSystemUnit Mile; - - //! Predefined system unit for yards. - static const FbxSystemUnit Yard; - - #define FBXSDK_SYSTEM_UNIT_PREDEF_COUNT 9 - - //! Points to a FbxSystemUnit array to store the predefined system units. The array size is FBXSDK_SYSTEM_UNIT_PREDEF_COUNT. - static const FbxSystemUnit *sPredefinedUnits; - - //! Stores the default conversion options. - static const ConversionOptions DefaultConversionOptions; - - /** Converts a scene from its system units to this system unit. - * \param pScene The scene to convert. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertScene( FbxScene* pScene, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts the child (or children) of the given node from the system unit to this system unit. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene to which the pRoot node belongs. It also does not adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The given node. - * \param pSrcUnit The source system unit. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertChildren( FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts a scene from its system unit to this system unit, using the specified - * Fbx_Root node. This method is provided for backwards compatibility only - * and instead you should use ConvertScene( FbxScene* , const ConversionOptions& ) whenever possible. - * \param pScene The scene to convert. - * \param pFbxRoot The Fbx_Root node to use for conversion. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions - */ - void ConvertScene( FbxScene* pScene, FbxNode* pFbxRoot, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Returns the system unit's scale factor, relative to centimeters. - * This factor scales system unit values to centimeters. If you want to scale values to centimeters, use this value. - * Ignore the "multiplier" (returned by GetMultiplier()) value. - * \return The the system unit's scale factor, relative to centimeters. - */ - double GetScaleFactor() const; - - /** Returns a unit label for the current scale factor. - * \param pAbbreviated If \c true, returns abbreviated string. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString(bool pAbbreviated = true) const; - - /** Returns a unit label for the current scale factor. - * The first letter of the label is in upper case and the label should be pluralized. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString_Plurial() const; - - /** Returns the multiplier factor of the system unit. - */ - double GetMultiplier() const; - - /** Equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxSystemUnit& pOther) const; - - /** Non-equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxSystemUnit& pOther) const; - - /** Assignment operation. - * \param pSystemUnit Unit system assigned to this one. - */ - FbxSystemUnit& operator=(const FbxSystemUnit& pSystemUnit); - - /** Returns the conversion factor from this system unit to the target system unit, excluding the multiplier factor. - * \param pTarget The target system unit. - */ - double GetConversionFactorTo( const FbxSystemUnit& pTarget ) const; - - /** Returns the conversion factor from the source system unit to this system unit, excluding the multiplier factor. - * \param pSource The source system unit. - */ - double GetConversionFactorFrom( const FbxSystemUnit& pSource ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ApplyMultiplier(FbxNode* pRoot, bool pSubChildrenOnly) const; - void ConvertSTProperties(FbxArray& pNodes, double pConversionFactor) const; - void ConvertSProperty(FbxArray& pNodes, double pConversionFactor) const; - void ConvertAnimCurveNode(FbxArray& pFCurves, double pConversionFactor) const; - double GetConversionFactor(double pTargetScaleFactor, double pSourceScaleFactor) const; - void AdjustPivots(FbxNode* pNode, double pConversionFactor, FbxAMatrix& pOriginalGlobalM ) const; - void AdjustLimits(FbxNode* pNode, double pConversionFactor) const; - void AdjustPoses(FbxScene* pScene, double pConversionFactor) const; - void AdjustCluster(FbxNode* pNode, double pConversionFactor) const; - void AdjustLightIntensity(FbxNode* pNode, const double pConversionFactor) const; - void AdjustPhotometricLightProperties(FbxNode* pNode, const double pConversionFactor) const; - void AdjustCameraClipPlanes(FbxNode* pNode, const double pConversionFactor) const; - void ConvertChildren(FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const ConversionOptions& pOptions) const; - - double mScaleFactor; - double mMultiplier; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_SYSTEM_UNIT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxxref.h b/sdk/Darwin/2019.2/include/fbxsdk/core/fbxxref.h deleted file mode 100644 index cee8a59..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/fbxxref.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxxref.h -#ifndef _FBXSDK_CORE_XREF_H_ -#define _FBXSDK_CORE_XREF_H_ - -#include - -#include -#include - -#include - -class FbxProperty; -class FbxDocument; -class FbxXRefManagerProject; - -/** This class manages external references to files. - * \nosubgrouping - */ -class FBXSDK_DLL FbxXRefManager -{ -public: - //! Default constructor. - FbxXRefManager(); - - //! Destructor. - virtual ~FbxXRefManager(); - - /** - * \name Predefined Project Types - */ - //@{ - - //! This project represents an URL for storing temporary files. - static const char* sTemporaryFileProject; - - //! This project represents an URL for configuration files. - static const char* sConfigurationProject; - - //! This project represents an URL for storing localization files (that is not part of the asset library). - static const char* sLocalizationProject; - - /** This project is used for creating the ".fbm" folders that are used for - * storing embedded resources in FBX files. - * - * When not set, or if the folder is not writable, the ".fbm" - * folder is created alongside the FBX file. - * - * If we cannot write in that folder, we look at the sTemporaryFileProject location. - * If no folder is set in the sTemporaryFileProject location, or it is not - * writable, the operating system's Temp folder becomes the location. - */ - static const char* sEmbeddedFileProject; - //@} - - /** - * \name XRef URL properties - */ - //@{ - /** Returns the number of URLs that are stored in a property. - * \param pProperty The property. - * \return The URL count. - */ - static int GetUrlCount(FbxProperty const &pProperty); - - /** Returns the number of URLs that are stored in a string. - * \param pUrl The string. - * \return The URL count. - */ - - static int GetUrlCount(FbxString const& pUrl); - - /** Checks whether the URL at the given index stored in the property is relative or not. - * \param pProperty The property. - * \param pIndex The URL index. - * \return \c True if the URL is relative, \c false if the URL is not relative. - */ - static bool IsRelativeUrl (FbxProperty const &pProperty,int pIndex); - - /** Returns the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \return The URL - */ - static FbxString GetUrl(FbxProperty const &pProperty,int pIndex); - - /** Tries to resolve the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (FbxProperty const &pProperty,int pIndex,FbxString & pResolvedPath) const; - - /** Tries to resolve the specified URL. - * \param pUrl The specified URL. - * \param pDoc The document whose ".fbm" folder is used to resolve the URL. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl, FbxDocument* pDoc, FbxString& pResolvedPath) const; - //@} - - /** Looks for the first file that matches a specified "pattern", - * which is built as: - * - * if pOptExt is given: prefix*.ext - * If pOptExt is NULL: prefix* - * if pOptExt is "" or ".": prefix*. - * - * Returns the URL of the first matching files. This function cannot be - * used to resolve folders, only files. - * - * If a document is given, we start by looking at the document's ".fbm" folder. - * \param pPrefix The prefix of the pattern. - * \param pOptExt The extension of the pattern. - * \param pDoc The given document. - * \param pResolvedPath Filled with the first matching URL. - * \return \c True if one matching file is found, returns \c false if no matching file is found. - */ - bool GetFirstMatchingUrl(const char* pPrefix, const char* pOptExt, const FbxDocument* pDoc, FbxString& pResolvedPath) const; - - /** - * \name XRef Resolve URL and Projects - */ - //@{ - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pUrl); - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pExtension The extension of the project. - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, returns \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pExtension,const char *pUrl); - - /** Adds an XRef project based on the document's EmbeddedUrl - * property if set, if EmbeddedUrl is not set, based on its current URL property. - * \param pDoc The document used to name the project and to specify the URL. - * \return \c True if the project is added successfully, returns \c false if no project is added. - * \remarks The project name is set as the document name and the URL is set as EmbeddedUrl or URL of the document. - */ - bool AddXRefProject (FbxDocument* pDoc); - - /** Removes an XRef Projects. - * \param pName The name of the project to be removed. - * \return \c True if the project is removed successfully, returns \c false if the project with the name does not exist. - */ - bool RemoveXRefProject(const char *pName); - - /** Removes all XRef Projects. - * \return \c True always. - */ - bool RemoveAllXRefProjects(); - - /** Returns the number of XRef Projects. - * \return The number of XRef Projects. - */ - int GetXRefProjectCount() const; - - /** Returns the name of the XRef project at the specified index. - * \param pIndex The XRef project index. - * \return The XRef project name. - */ - const char *GetXRefProjectName(int pIndex) const; - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName); // FIXME: Should be const, will break AV. - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName) const; - - /** Returns the base URL for the given project. - * \param pIndex The index of the project. - * \return The base URL of the project or NULL if the index is out of bounds. - */ - const char* GetXRefProjectUrl(int pIndex) const; - - /** Checks if a project with the given name is defined in this manager. - * \param pName The name of the project. - * \return \c True if the project is defined in this manager, returns \c false if it isn't defined in this manager. - */ - inline bool HasXRefProject( const char* pName ) { return GetXRefProjectUrl(pName) != NULL; } - - /** Tries to resolve an relative URL - * \param pUrl The relative URL to be resolved. - * \param pResolvePath Filled with the resolved path. - * \return \c True if the URL is resolved, returns \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl,FbxString & pResolvePath) const; - - //@} -private: - FbxArray mProjects; - - static bool UrlExist(const char* pUrl); -}; - -#include - -#endif /* _FBXSDK_CORE_XREF_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h deleted file mode 100644 index 288d379..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h +++ /dev/null @@ -1,340 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaffinematrix.h -#ifndef _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ -#define _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ - -#include - -#include - -#include - -/** FBX SDK affine matrix class. - * \nosubgrouping - * Matrices are defined using the Column Major scheme. When a FbxAMatrix represents a transformation (translation, rotation and scale), - * the last row of the matrix represents the translation part of the transformation. - * - * \remarks It is important to realize that an affine matrix must respect a certain structure. To be sure the structure is respected, - * use SetT, SetR, SetS, SetQ, SetTRS or SetTQS. If by mistake bad data is entered in this affine matrix, some functions such as - * Inverse() will yield wrong results. If a matrix is needed to hold values that aren't associate with an affine matrix, please use FbxMatrix instead. - */ -class FBXSDK_DLL FbxAMatrix : public FbxDouble4x4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxAMatrix(); - - /** Copy constructor. - * \param pOther FbxAMatrix copied to this one. - */ - FbxAMatrix(const FbxAMatrix& pOther); - - /** Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. - */ - FbxAMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - //! Destructor. - ~FbxAMatrix(); - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Cell [ pX, pY ] value. - */ - double Get(int pY, int pX) const; - - /** Extract translation vector. - * \return Translation vector. - */ - FbxVector4 GetT() const; - - /** Extract rotation vector. - * \return Rotation vector. - * \remarks The returned rotation vector is in Euler angle and the rotation order is XYZ. - */ - FbxVector4 GetR() const; - - /** Extract quaternion vector. - * \return Quaternion vector. - */ - FbxQuaternion GetQ() const; - - /** Extract scale vector. - * \return Scale vector. - */ - FbxVector4 GetS() const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. - */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. - */ - FbxVector4 GetColumn(int pX) const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set matrix's translation. - * \param pT Translation vector. - */ - void SetT(const FbxVector4& pT); - - /** Set matrix's Euler rotation. - * \param pR X, Y and Z rotation values expressed as a vector. - * \remarks The rotation transform is constructed in rotation order XYZ. - */ - void SetR(const FbxVector4& pR); - - /** Set matrix's quaternion. - * \param pQ The new quaternion. - */ - void SetQ(const FbxQuaternion& pQ); - - /** Set matrix's scale. - * \param pS X, Y and Z scaling factors expressed as a vector. - */ - void SetS(const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Rotation vector. - * \param pS Scale vector. - */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion vector. - * \param pS Scale vector. - */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Assignment operator. - * \param pM FbxAMatrix assigned to this one. - */ - FbxAMatrix& operator=(const FbxAMatrix& pM); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return The scaled matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator*(double pValue) const; - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return The divided matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator/(double pValue) const; - - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the multiplication. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator*=(double pValue); - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the division. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Multiply matrix by a translation vector. - * \param pVector4 Translation vector. - * \return t' = M * t - */ - FbxVector4 MultT(const FbxVector4& pVector4) const; - - /** Multiply matrix by an Euler rotation vector. - * \param pVector4 Euler Rotation vector. - * \return r' = M * r - */ - FbxVector4 MultR(const FbxVector4& pVector4) const; - - /** Multiply matrix by a quaternion. - * \param pQuaternion Rotation value. - * \return q' = M * q - */ - FbxQuaternion MultQ(const FbxQuaternion& pQuaternion) const; - - /** Multiply matrix by a scale vector. - * \param pVector4 Scaling vector. - * \return s' = M * s - */ - FbxVector4 MultS(const FbxVector4& pVector4) const; - //@} - - /** - * \name Matrix Operations - */ - //@{ - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. - */ - FbxAMatrix operator-() const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return this * pMatrix. - * \remarks Transformations are pre-multiplied. - * That means to scale, then rotate, and then translate a vector V, the transform should be T * R * S * V. \n - * Below is an example of code that shows how to construct rotation transform in XYZ rotation order. - * \code - * FbxAMatrix lRotateXM, lRotateYM, lRotateZM, lRotateXYZM, lRotateM; - * // Construct rotation matrix around X, Y and Z axises separately and then combine them. - * FbxVector4 lRotateX(10, 0, 0); - * FbxVector4 lRotateY(0, 10, 0); - * FbxVector4 lRotateZ(0, 0, 10); - * lRotateXM.SetR(lRotateX); - * lRotateYM.SetR(lRotateY); - * lRotateZM.SetR(lRotateZ); - * lRotateXYZM = lRotateZM * lRotateYM * lRotateXM; - * - * // Alternatively, we can use SetR() directly. - * // lRotateXYZM and lRotateM will be the same. - * FbxVector4 lRotateXYZ (10, 10, 10); - * lRotateM.SetR(lRotateXYZ); - * \endcode - * \note Please refer to the FBX SDK programmers guide for more details. - */ - FbxAMatrix operator*(const FbxAMatrix& pOther) const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return \e this updated with the result of the multiplication. - */ - FbxAMatrix& operator*=(const FbxAMatrix& pOther); - - /** Calculate the matrix inverse. - * \return The inverse matrix of \e this. - */ - FbxAMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return The transposed matrix of \e this. - */ - FbxAMatrix Transpose() const; - - /** Calculate a spherical linear interpolation matrix. - * \param pOther The other rotation matrix to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. - * \remark This matrix and other matrix should contain only rotations, otherwise result may be undefined. */ - FbxAMatrix Slerp(const FbxAMatrix& pOther, double pWeight) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxAMatrix& pOther) const; - - /** Non-equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxAMatrix& pOther) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the matrix in a double pointer. - operator double* (); - //! Cast the matrix in a const double pointer. - operator const double* () const; - //! Define 4*4 array as a new type - typedef const double(kDouble44)[4][4] ; - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - /** Find out if the matrix is equal to identity matrix. - * \return \c true if the matrix is equal to identity matrix, \c false otherwise. */ - bool IsIdentity(const double pThreshold=FBXSDK_TOLERANCE); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS); - void SetRow(int pY, const FbxVector4& pRow); - void SetTOnly(const FbxVector4& pT); - void SetROnly(const FbxVector4& pR); - void SetQOnly(const FbxQuaternion& pQ); - FbxVector4 GetROnly() const; - FbxQuaternion GetUnnormalizedQ() const; - - // pOrd is assumed to be an FbxEuler::EOrder (or its synonym EFbxRotationOrder) - void SetR(const FbxVector4& pV, const int pOrd); - FbxVector4 GetR(const int pOrd) const; - - void MultRM(const FbxVector4& pR); - void MultSM(const FbxVector4& pS); - bool IsRightHand() const; - double Determinant() const; - int Compare(const FbxAMatrix pM, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h deleted file mode 100644 index 234866a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h +++ /dev/null @@ -1,325 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdualquaternion.h -#ifndef _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK dual quaternion class to represent rigid transformation, which is combined by two quaternions. - * A transformation is said to be rigid if it preserves relative distances and angles. - * That means rotation and translation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDualQuaternion -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxDualQuaternion(); - - /** Constructor. - * \param pV1 FbxQuaternion object. - * \param pV2 FbxQuaternion object. - */ - FbxDualQuaternion(const FbxQuaternion& pV1, const FbxQuaternion& pV2); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxDualQuaternion(const FbxDualQuaternion& pV); - - /** Constructor. - * \param pRotation The rotation the dual quaternion is going to represent. - * \param pTranslation The translation the dual quaternion is going to represent. - */ - FbxDualQuaternion(const FbxQuaternion& pRotation, const FbxVector4& pTranslation); - - /** Constructor. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - FbxDualQuaternion(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - //! Destructor. - ~FbxDualQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pDualQuaternion FbxDualQuaternion object assigned to this one. - */ - FbxDualQuaternion& operator=(const FbxDualQuaternion& pDualQuaternion); - - /** Set vector. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - void Set(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - FbxQuaternion& GetFirstQuaternion(); - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - FbxQuaternion& GetSecondQuaternion(); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - const FbxQuaternion& GetFirstQuaternion() const; - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - const FbxQuaternion& GetSecondQuaternion() const; - - /** Get the rotation part from the dual quaternion. - * \return FbxQuaternion object to represent rotation. - */ - FbxQuaternion GetRotation() const; - - /** Get the translation part from the dual quaternion. - * \return FbxVector4 object to represent translation. - * \remarks A dual quaternion can represent rotation followed by translation, or translation followed by rotation. - * This method assumes that the rotation is expressed first, followed by translation, as is done by most DCC tools. - */ - FbxVector4 GetTranslation() const; - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A dual quaternion where each component is multiplied by -1. - */ - FbxDualQuaternion operator-() const; - - /** Add two vectors together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator+(const FbxDualQuaternion& pDualQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator-(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise multiplication of two vectors. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise division of a dual quaternion with another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator/(const FbxDualQuaternion& pDualQuaternion) const; - - /** Add two quaternions together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator+=(const FbxDualQuaternion& pDualQuaternion); - - /** Subtract a dual quaternion from another vector. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator-=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise multiplication of two quaternions. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator*=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise division of a dual quaternion by another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator/=(const FbxDualQuaternion& pDualQuaternion); - - /** Multiplication of a dual quaternion by a FbxVector4. - * \param pVector The FbxVector4 to multiply with. - * \return The dual quaternion v' = FbxDualQuaternion(mQ1, (mQ1 * pVector) + mQ2). - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxVector4 pVector) const; - - /** Return dual quaternion product. - * \param pDualQuaternion Product dual quaternion. - * \return The dual quaternion that is the product of this and pDualQuaternion. - */ - FbxDualQuaternion Product(const FbxDualQuaternion& pDualQuaternion) const; - - /** Normalize the dual quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the dual quaternion's inverse. - * \return The inverse of this dual quaternion. - */ - void Inverse(); - - /** Deform a point by this dual quaternion. - * \return The inverse of this quaternion. - */ - FbxVector4 Deform(FbxVector4& pPoint); - //@} - - /** - * \name Conjugate Operations - * \brief Dual quaternion has three types of conjugate. - */ - //@{ - /** Conjugate both quaternions of this dual quaternion. - */ - void Conjugate(); - - /** Conjugate in dual space. - */ - void Dual(); - - /** Conjugate both quaternions of this dual quaternion in dual space. - */ - void DualConjugate(); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxDualQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxDualQuaternion & pV) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxQuaternion mQ1; - FbxQuaternion mQ2; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmath.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmath.h deleted file mode 100644 index d55e741..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmath.h +++ /dev/null @@ -1,512 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmath.h -#ifndef _FBXSDK_CORE_MATH_H_ -#define _FBXSDK_CORE_MATH_H_ - -#include - -#include -#include -#include -#include - -//On Mac OS, cmath will include math.h and undef "isnan" -#if defined(FBXSDK_ENV_MAC) - #include - extern "C" int isnan (double); -#endif - -#include - -#if defined(FBXSDK_ENV_WIN) - #ifndef isnan - #define isnan _isnan - #endif - #ifndef finite - #define finite _finite - #endif -#endif - -//--------------------------------------------------------------------------------------- -//Common Constants -#define FBXSDK_PI 3.1415926535897932384626433832795028841971693993751 //!< PI mathematic constant -#define FBXSDK_PI_DIV_2 1.5707963267948966192313216916397514420985846996875 //!< PI divided by 2 -#define FBXSDK_PI_DIV_180 0.017453292519943295769236907684886127134428718885417 //!< PI divived by 180 -#define FBXSDK_180_DIV_PI 57.295779513082320876798154814105170332405472466565 //!< 180 divided by PI -#define FBXSDK_1_DIV_LN2 1.4426950408889634073599246810018921374266459541530 //!< 1 divided by LogN2 - -//--------------------------------------------------------------------------------------- -//Unit Convertion Ratio -#define FBXSDK_DEG_TO_RAD FBXSDK_PI_DIV_180 //!< Degree to Radian -#define FBXSDK_RAD_TO_DEG FBXSDK_180_DIV_PI //!< Radian to Degree -#define FBXSDK_IN_TO_CM 2.54 //!< Inch to Centimeter -#define FBXSDK_MM_TO_CM 0.1 //!< Millimeter to Centimeter -#define FBXSDK_CM_TO_IN 0.393700787 //!< Centimeter to Inch -#define FBXSDK_IN_TO_MM 25.4 //!< Inch to Millimeter -#define FBXSDK_MM_TO_IN 0.0393700787 //!< Millimeter to Inch -#define FBXSDK_FT_TO_M 0.3048 //!< Feet to Meter -#define FBXSDK_M_TO_FT 3.2808399 //!< Meter to Feet -#define FBXSDK_YD_TO_FT 3 //!< Yard to Feet -#define FBXSDK_FT_TO_YD 0.333333333 //!< Feet to Yard -#define FBXSDK_KM_TO_MILE 0.621371192 //!< Kilometer to Mile -#define FBXSDK_MILE_TO_KM 1.609344 //!< Mile to Kilometer -#define FBXSDK_YD_TO_M 0.9144 //!< Yard to Meter -#define FBXSDK_M_TO_YD 1.0936133 //!< Meter to Yard - -//--------------------------------------------------------------------------------------- -//Euler Definition -#define FBXSDK_EULER_DEGENERATE FbxEuler::DegenerateThreshold() //!< Euler degenerate threshold can be changed with a call to FbxEuler::SetDegenerateThreshold. - -class FBXSDK_DLL FbxEuler -{ -public: - enum EAxis {eAxisX=0, eAxisY=1, eAxisZ=2}; - - enum EOrder - { - eOrderXYZ, - eOrderXZY, - eOrderYZX, - eOrderYXZ, - eOrderZXY, - eOrderZYX, - eOrderSphericXYZ - }; - - static bool IsParityOdd(EOrder pOrder); - static bool IsRepeat(EOrder pOrder); - - static const int AxisTableSize; - static const int AxisTable[][3]; - - // Used to detect Euler gimbal locks when extracting the rotation vector from - // the FbxAMatrix. This value should only be changed when the user system stores - // single floating point values into the FbxAMatrix with a very low precision. - // In this case, the default threshold value would be too small for a proper detection - // and the extracted values can quickly become off target by a huge amount. - static void SetDegenerateThreshold(double pThreshold=16.0*FBXSDK_FLOAT_EPSILON); - static inline double DegenerateThreshold() { return FbxEuler::mDegenerateThreshold; } - -private: - static double mDegenerateThreshold; -}; - -/** Rotation order flags. - * Each rotate order produces a different end orientation. For example, if the rotation order for an object is set to XYZ, - * the object first rotates about its X-axis, then its Y-axis, and finally its Z-axis. - */ - -#define EFbxRotationOrder FbxEuler::EOrder -#define eEulerXYZ FbxEuler::eOrderXYZ -#define eEulerXZY FbxEuler::eOrderXZY -#define eEulerYZX FbxEuler::eOrderYZX -#define eEulerYXZ FbxEuler::eOrderYXZ -#define eEulerZXY FbxEuler::eOrderZXY -#define eEulerZYX FbxEuler::eOrderZYX -#define eSphericXYZ FbxEuler::eOrderSphericXYZ - - - -/** Quaternion interpolation modes. */ -enum EFbxQuatInterpMode -{ - eQuatInterpOff, //!< Do not evaluate using quaternion interpolation. - eQuatInterpClassic, //!< Legacy quaternion interpolation mode. - eQuatInterpSlerp, //!< Spherical linear interpolation. - eQuatInterpCubic, //!< Cubic interpolation. - eQuatInterpTangentDependent, //!< Mix between Slerp and cubic interpolation, depending on the specified tangents for each key. - eQuatInterpCount //!< Number of quaternion interpolation modes. Mark the end of this enum. -}; - -extern FBXSDK_DLL const FbxDouble FbxIdentityMatrix[4][4]; -extern FBXSDK_DLL const FbxVector4 FbxZeroVector4; - -inline float FbxFloor(const float x) -{ - return float(floor(x)); -} - -inline double FbxFloor(const double x) -{ - return floor(x); -} - -inline float FbxCeil(const float x) -{ - return float(ceil(x)); -} - -inline double FbxCeil(const double x) -{ - return ceil(x); -} - -template inline T FbxSign(const T x) -{ - return (x < 0) ? T(-1) : T(1); -} - -template inline T FbxRound(const T x) -{ - T y = FbxFloor(x); - return (x - y < T(0.5)) ? y : y + T(1); -} - -inline FbxUChar FbxAbs(const FbxUChar x) -{ - return x; -} - -inline FbxUShort FbxAbs(const FbxUShort x) -{ - return x; -} - -inline FbxUInt FbxAbs(const FbxUInt x) -{ - return x; -} - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxULong FbxAbs(const FbxULong x) - { - return x; - } -#endif - -inline FbxULongLong FbxAbs(const FbxULongLong x) -{ - return x; -} - -inline FbxFloat FbxAbs(const FbxFloat x) -{ - return (FbxFloat)fabs(x); -} - -inline FbxDouble FbxAbs(const FbxDouble x) -{ - return fabs(x); -} - -template inline T FbxAbs(const T x) -{ - return (x >= 0) ? x : ((x > FbxMin(x)) ? -x : FbxMax(x)); -} - -template inline T FbxClamp(const T value, const T min, const T max) -{ - return (value < min) ? min : ((value > max) ? max : value); -} - -template inline bool FbxEqual(const T x, const T y, const T e=(T)FBXSDK_TOLERANCE) -{ - return FbxAbs(x - y) <= e; -} - -inline bool FbxEqual(const FbxDouble2& x, const FbxDouble2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxDouble3& x, const FbxDouble3& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) ); -} - -inline bool FbxEqual(const FbxDouble4& x, const FbxDouble4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxDouble4x4& x, const FbxDouble4x4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxVector2& x, const FbxVector2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxVector4& x, const FbxVector4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxMatrix& x, const FbxMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxAMatrix& x, const FbxAMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline FbxDouble FbxMod(const FbxFloat x, FbxFloat& i) -{ - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x, FbxDouble& i) -{ - return modf(x, &i); -} - -inline FbxDouble FbxMod(const FbxFloat x) -{ - FbxFloat i; - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x) -{ - FbxDouble i; - return modf(x, &i); -} - -template inline T FbxReciprocal(const T x) -{ - return T(1) / x; -} - -inline double FbxSqrt(const double x) -{ - return sqrt(x); -} - -inline float FbxSqrt(const float x) -{ - return sqrtf(x); -} - -template inline T FbxSqrt(const T x) -{ - if( x > 1 ) - { - T z, y = x >> 1; - do - { - z = y; - y = (y + (x / y)) >> 1; - } - while(y < z); - - return z; - } - else - { - return x; - } -} - -inline float FbxExp(const float x) -{ - return expf(x); -} - -inline double FbxExp(const double x) -{ - return exp(x); -} - -inline float FbxLog(const float x) -{ - return float(log(x)); -} - -inline double FbxLog(const double x) -{ - return log(x); -} - -template inline T FbxPow(const T x, const T y) -{ - return (T)FbxExp(y * FbxLog((double)x)); -} - -template inline T FbxLog2(const T x) -{ - return (T)(FbxLog(x) * FBXSDK_1_DIV_LN2); -} - -inline float FbxSin(const float x) -{ - return sinf(x); -} - -inline double FbxSin(const double x) -{ - return sin(x); -} - -inline float FbxCos(const float x) -{ - return cosf(x); -} - -inline double FbxCos(const double x) -{ - return cos(x); -} - -inline float FbxTan(const float x) -{ - return tanf(x); -} - -inline double FbxTan(const double x) -{ - return tan(x); -} - -// *y = cos(x), sin(x) -template inline T FbxSinCos(const T x, T* y) -{ - return *y = FbxCos(x), FbxSin(x); -} - -// *y = cos(x * pi/180), sin(x * pi/180) -template inline T FbxSinCosd(const T x, T* y) -{ - return FbxSinCos(T(x * FBXSDK_PI_DIV_180), y); -} - -inline float FbxASin(const float x) -{ - return asinf(x); -} - -inline double FbxASin(const double x) -{ - return asin(x); -} - -template inline T FbxASind(const T x) -{ - return (T)(FbxASin((double)x) * FBXSDK_180_DIV_PI); -} - -inline float FbxACos(const float x) -{ - return acosf(x); -} - -inline double FbxACos(const double x) -{ - return acos(x); -} - -template inline T FbxACosd(const T x) -{ - return (T)(FbxACos(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float x) -{ - return atanf(x); -} - -inline double FbxATan(const double x) -{ - return atan(x); -} - -template inline T FbxATand(const T x) -{ - return (T)(FbxATan(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float y, const float x) -{ - return atan2f(y, x); -} - -inline double FbxATan(const double y, const double x) -{ - return atan2(y, x); -} - -template inline T FbxATand(const T y, const T x) -{ - return (T)(FbxATan(y, x) * FBXSDK_180_DIV_PI); -} - -template inline T FbxNorm(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxNorm(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxNorm(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -template inline T FbxHypot(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxHypot(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxHypot(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -inline FbxVector4 FbxRejection(const FbxVector4& a, const FbxVector4& b) -{ - return a - b * (a.DotProduct(b) / b.DotProduct(b)); -} - -template inline int FbxBitCount(const T x) -{ - int n = 0; - T c = x; - while( c ) - { - n += int(c & 1); - c = (c >> 1); - } - return n; -} - -template inline void FbxFixInfinite(T& x) -{ - if( x != x || x > FbxMax(x) || x < -FbxMax(x) ) - { - x = T(0); - } -} - -template inline T FbxExp(const T x); -template inline T FbxLog(const T x); -template inline T FbxSin(const T x); -template inline T FbxCos(const T x); -template inline T FbxASin(const T x); -template inline T FbxACos(const T x); -template inline T FbxATan(const T x); -template inline T FbxATan(const T y, const T x); - -#include - -#endif /* _FBXSDK_CORE_MATH_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmatrix.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmatrix.h deleted file mode 100644 index 8ecf815..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxmatrix.h +++ /dev/null @@ -1,281 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmatrix.h -#ifndef _FBXSDK_CORE_MATH_MATRIX_H_ -#define _FBXSDK_CORE_MATH_MATRIX_H_ - -#include - -#include - -#include - -class FbxAMatrix; - -/** FBX SDK basic 4x4 double matrix class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMatrix : public FbxDouble4x4 -{ -public: - //! \name Constructors and Destructor - //@{ - //! Constructor (initialize to an identity matrix) - FbxMatrix(); - - /** Copy constructor. - * \param pM Another FbxMatrix object copied to this one. */ - FbxMatrix(const FbxMatrix& pM); - - /** Copy constructor for affine matrix. - * \param pM Affine matrix */ - FbxMatrix(const FbxAMatrix& pM); - - /** TRS Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** TQS Constructor. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** 16 double constructor. - * \param p00 Value at column 0 row 0. - * \param p10 Value at column 1 row 0. - * \param p20 Value at column 2 row 0. - * \param p30 Value at column 3 row 0. - * \param p01 Value at column 0 row 1. - * \param p11 Value at column 1 row 1. - * \param p21 Value at column 2 row 1. - * \param p31 Value at column 3 row 1. - * \param p02 Value at column 0 row 2. - * \param p12 Value at column 1 row 2. - * \param p22 Value at column 2 row 2. - * \param p32 Value at column 3 row 2. - * \param p03 Value at column 0 row 3. - * \param p13 Value at column 1 row 3. - * \param p23 Value at column 2 row 3. - * \param p33 Value at column 3 row 3. */ - FbxMatrix( const double p00, const double p10, const double p20, const double p30, - const double p01, const double p11, const double p21, const double p31, - const double p02, const double p12, const double p22, const double p32, - const double p03, const double p13, const double p23, const double p33); - - //! Destructor. - ~FbxMatrix(); - //@} - - //! \name Access - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Value at element [ pX, pY ] of the matrix. */ - double Get(int pY, int pX) const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. */ - FbxVector4 GetColumn(int pX) const; - - /** Set matrix element. - * \param pY Row index. - * \param pX Column index. - * \param pValue New component value. */ - void Set(int pY, int pX, double pValue); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Set a matrix row. - * \param pY Row index. - * \param pRow Row vector. */ - void SetRow(int pY, const FbxVector4& pRow); - - /** Set a matrix column. - * \param pX Column index. - * \param pColumn Column vector. */ - void SetColumn(int pX, const FbxVector4& pColumn); - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxQuaternion& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxVector4& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - //@} - - //! \name Operators - //@{ - /** Assignment operator. - * \param pMatrix Source matrix. */ - FbxMatrix& operator=(const FbxMatrix& pMatrix); - - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. */ - FbxMatrix operator-() const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix. */ - FbxMatrix operator+(const FbxMatrix& pMatrix) const; - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix. */ - FbxMatrix operator-(const FbxMatrix& pMatrix) const; - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix. */ - FbxMatrix operator*(const FbxMatrix& pMatrix) const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix, replacing this matrix. */ - FbxMatrix& operator+=(const FbxMatrix& pMatrix); - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix, replacing this matrix. */ - FbxMatrix& operator-=(const FbxMatrix& pMatrix); - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix, replacing this matrix. */ - FbxMatrix& operator*=(const FbxMatrix& pMatrix); - - /** Equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxMatrix& pM) const; - - /** Equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxAMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxAMatrix& pM) const; - //@} - - //! \name Casting - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - - //! Define 4*4 array as a new type. - typedef const double(kDouble44)[4][4] ; - - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - //! \name Math Operations - //@{ - /** Calculate the matrix inverse. - * \return The inverse matrix. */ - FbxMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return This matrix transposed. */ - FbxMatrix Transpose() const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set the matrix to a "Look To" left handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToLH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look To" right handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToRH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look At" left handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtLH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Set the matrix values as a "Look At" right handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtRH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Multiply this matrix by pVector, the w component is normalized to 1. - * \param pVector A vector. - * \return The result of this matrix * pVector. */ - FbxVector4 MultNormalize(const FbxVector4& pVector) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - int Compare(const FbxAMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - - FbxMatrix operator*(double pValue) const; - FbxMatrix& operator*=(double pValue); - - double LUDecomposition(FbxVector4& pVector); - FbxMatrix LUMult(FbxMatrix pM, const FbxVector4& pVector) const; - double Determinant() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_MATRIX_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxquaternion.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxquaternion.h deleted file mode 100644 index 9f02f4d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxquaternion.h +++ /dev/null @@ -1,333 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquaternion.h -#ifndef _FBXSDK_CORE_MATH_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK quaternion class. - * \nosubgrouping - * Quaternions form a four-dimensional normed division algebra over the real numbers. - * It is for calculations involving three-dimensional rotations. - */ -class FBXSDK_DLL FbxQuaternion : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - /** Constructor. - * Initialize to the multiplicative identity. - */ - FbxQuaternion(); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxQuaternion(const FbxQuaternion& pV); - - /** Constructor. - * \param pX The X component. - * \param pY The Y component. - * \param pZ The Z component. - * \param pW The W component. - */ - FbxQuaternion(double pX, double pY, double pZ, double pW = 1.0); - - /** From axis degree constructor - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - FbxQuaternion(const FbxVector4& pAxis, double pDegree); - - //! Destructor. - ~FbxQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pQuaternion FbxQuaternion object assigned to this one. - */ - FbxQuaternion& operator=(const FbxQuaternion& pQuaternion); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double& operator[](int pIndex); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The const reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - const double& operator[](int pIndex) const; - - /** Get a vector element. - * \param pIndex The index of the component to access. - * \return The value of the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double GetAt(int pIndex) const; - - /** Set a vector element. - * \param pIndex The index of the component to set. - * \param pValue The new value to set the component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - void SetAt(int pIndex, double pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW = 1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** The addition operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar value to be added. - * \return The sum of addition. - */ - FbxQuaternion operator+(double pValue) const; - - /** The subtraction operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator/(double pValue) const; - - /** The in place addition operator between the real part of this quaternion and a scalar value. - * \param pValue The value to be added. - * \return The sum of addition. - */ - FbxQuaternion& operator+=(double pValue); - - /** The subtraction operator between the real part of this quaternion and a scalar value. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A quaternion where each component is multiplied by -1. - */ - FbxQuaternion operator-() const; - - /** Add two vectors together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator+(const FbxQuaternion& pQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator-(const FbxQuaternion& pQuaternion) const; - - /** The quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion operator*(const FbxQuaternion& pOther) const; - - /** The quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion operator/(const FbxQuaternion& pOther) const; - - /** Add two quaternions together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator+=(const FbxQuaternion& pQuaternion); - - /** Subtract a quaternion from another vector. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator-=(const FbxQuaternion& pQuaternion); - - /** The in place quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion& operator*=(const FbxQuaternion& pOther); - - /** The in place quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion& operator/=(const FbxQuaternion& pOther); - - /** Return quaternion product. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - */ - FbxQuaternion Product(const FbxQuaternion& pOther) const; - - /** Return quaternion dot product. - * \param pQuaternion Dot product quaternion. - * \return The dot product of this quaternion and pQuaternion. - */ - double DotProduct(const FbxQuaternion& pQuaternion) const; - - /** Normalize the quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the quaternion conjugate. - * \return The conjugate of this quaternion. - */ - void Conjugate(); - - /** Calculate the length (norm) of the quaternion. - * \return The length of the quaternion. - */ - double Length(); - - /** Calculate the inverse of the quaternion. - * \return The inverse of this quaternion. - * \remarks If this quaternion has a zero length, retain the original value. - * \remarks If the quaternion is normalized, then its inverse is equal to its conjugate. - */ - void Inverse(); - - /** Set the quaternion rotation from an axis degree angle. - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - void SetAxisAngle(const FbxVector4& pAxis, double pDegree); - - /** Calculate a spherical linear interpolation quaternion. - * \param pOther The other quaternion to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. */ - FbxQuaternion Slerp(const FbxQuaternion& pOther, double pWeight) const; - - /** Create a Quaternion equivalent to the supplied Euler XYZ in spherical coordinate. - * \param pEuler The Euler XYZ angle (in degrees). - */ - void ComposeSphericalXYZ(const FbxVector4 pEuler); - - /** Create an Euler XYZ equivalent to the current quaternion. - * \return The Euler XYZ angle (in degrees) equivalent to the current quaternion in spherical coordinate. - */ - FbxVector4 DecomposeSphericalXYZ() const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxQuaternion & pV) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** - * \name Comparison methods - */ - //@{ - /** Comparison method. - * \param pQ2 Quaternion to compare with this - * \param pThreshold Epsilon for small number comparison - * \return 0 if quaternions are equal, non-zero value otherwise. - */ - int Compare(const FbxQuaternion &pQ2, const double pThreshold = FBXSDK_TOLERANCE) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void GetQuaternionFromPositionToPosition(const FbxVector4 &pP0, const FbxVector4 &pP1); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_QUATERNION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxtransforms.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxtransforms.h deleted file mode 100644 index d73ce5c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxtransforms.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtransforms.h -#ifndef _FBXSDK_CORE_MATH_TRANSFORMS_H_ -#define _FBXSDK_CORE_MATH_TRANSFORMS_H_ - -#include - -#include -#include - -#include - -/** FbxLimits defines a limit range for one transform component, either translation, rotation or scaling. - * One transform component limit contains two part: a min value and a max value limit, which means - * that each value of the corresponding transform component cannot go beyond the range set by the - * min and max values. Although the members are identified as X, Y and Z (the W component is ignored) - * at this level, they are unitless values and will only have meaning within the context they are queried. - * - * For each limit, there is one flag to indicate if the limit is active or not. Before accessing the - * limit info, the caller need to query the flag first to make sure that the retrieved values will be - * meaningful. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLimits -{ -public: - //! Constructor - FbxLimits(); - - //! Assignment Operator - FbxLimits& operator=(const FbxLimits& pLimits); - - /** Retrieve the active state of this limit. - * \return True if the limit is active. - */ - bool GetActive() const; - - /** Set the active state of this limit. - * \param pActive If true, this limit will become globally active. - */ - void SetActive(const bool pActive); - - /** Get the active state of the minimum X component. - * \return True if the X component minimum limit is active. - */ - bool GetMinXActive() const; - - /** Get the active state of the minimum Y component. - * \return True if the Y component minimum limit is active. - */ - bool GetMinYActive() const; - - /** Get the active state of the minimum Z component. - * \return True if the Z component minimum limit is active. - */ - bool GetMinZActive() const; - - /** Get the active states of the three components of the minimum limit. - * \param pXActive \c True if the X component minimum limit is active. - * \param pYActive \c True if the Y component minimum limit is active. - * \param pZActive \c True if the Z component minimum limit is active. - */ - void GetMinActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the minimum limits. - * \return The current X, Y and Z values for the minimum limits. - */ - FbxDouble3 GetMin() const; - - /** Set the active state of the minimum X component. - * \param pActive If true, the X component minimum limit will be active. - */ - void SetMinXActive(bool pActive); - - /** Set the active state of the minimum Y component. - * \param pActive If true, the Y component minimum limit will be active. - */ - void SetMinYActive(bool pActive); - - /** Set the active state of the minimum Z component. - * \param pActive If true, the Z component minimum limit will be active. - */ - void SetMinZActive(bool pActive); - - /** Set the active states of the three components of the minimum limits. - * \param pXActive If true, the X component minimum limit will be active. - * \param pYActive If true, the Y component minimum limit will be active. - * \param pZActive If true, the Z component minimum limit will be active. - */ - void SetMinActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the minimum limits. - * \param pMin The X, Y and Z values for the minimum limits. - */ - void SetMin(const FbxDouble3& pMin); - - /** Get the active state of the maximum X component. - * \return True if the X component maximum limit is active. - */ - bool GetMaxXActive() const; - - /** Get the active state of the maximum Y component. - * \return True if the Y component maximum limit is active. - */ - bool GetMaxYActive() const; - - /** Get the active state of the maximum Z component. - * \return True if the Z component maximum limit is active. - */ - bool GetMaxZActive() const; - - /** Get the active states of the three components of the maximum limit. - * \param pXActive \c True if the X component maximum limit is active. - * \param pYActive \c True if the Y component maximum limit is active. - * \param pZActive \c True if the Z component maximum limit is active. - */ - void GetMaxActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the maximum limits. - * \return The current X, Y and Z values for the maximum limits. - */ - FbxDouble3 GetMax() const; - - /** Set the active state of the maximum X component. - * \param pActive If true, the X component maximum limit will be active. - */ - void SetMaxXActive(bool pActive); - - /** Set the active state of the maximum Y component. - * \param pActive If true, the Y component maximum limit will be active. - */ - void SetMaxYActive(bool pActive); - - /** Set the active state of the maximum Z component. - * \param pActive If true, the Z component maximum limit will be active. - */ - void SetMaxZActive(bool pActive); - - /** Set the active states of the three components of the maximum limits. - * \param pXActive If true, the X component maximum limit will be active. - * \param pYActive If true, the Y component maximum limit will be active. - * \param pZActive If true, the Z component maximum limit will be active. - */ - void SetMaxActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the maximum limits. - * \param pMax The X, Y and Z values for the maximum limits. - */ - void SetMax(const FbxDouble3& pMax); - - /** Find if any of the minimum or maximum active state are set. - * \return If any component of the minimum or maximum active state are set, true is returned. - * \remarks The global active state will not count when resolving this. - */ - bool GetAnyMinMaxActive() const; - - /** Apply the active limits to the components of the vector provided. - * \return The new vector clamped by active limits. - */ - FbxDouble3 Apply(const FbxDouble3& pVector); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - enum EMask {eActive=1<<0, eMinX=1<<1, eMinY=1<<2, eMinZ=1<<3, eMaxX=1<<4, eMaxY=1<<5, eMaxZ=1<<6, eAll=eMinX|eMinY|eMinZ|eMaxX|eMaxY|eMaxZ}; - - FbxUInt8 mMask; - FbxDouble3 mMin; - FbxDouble3 mMax; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxRotationOrder -{ -public: - FbxRotationOrder(FbxEuler::EOrder pOrder=FbxEuler::eOrderXYZ); - - FbxEuler::EOrder GetOrder() const; - void SetOrder(FbxEuler::EOrder pOrder); - void V2M(FbxAMatrix& pRM, const FbxVector4& pV); - void M2V(FbxVector4& pV, const FbxAMatrix& pRM); - bool V2VRef(FbxVector4& pVOut, const FbxVector4& pVIn, const FbxVector4& pVRef); - -private: - FbxEuler::EOrder mOrder; -}; - -/** Handle transform behaviors such as pivots, limits and offets, etc. - */ -class FBXSDK_DLL FbxTransform -{ -public: - enum EInheritType {eInheritRrSs, eInheritRSrs, eInheritRrs}; - - FbxTransform(); - - EInheritType GetInheritType() const; - void SetInheritType(EInheritType pType); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - FbxRotationOrder& GetRotationOrder(); - bool HasROffset() const; - bool HasRPivot() const; - bool HasSOffset() const; - bool HasSPivot() const; - bool HasPreRM() const; - bool HasPostRM() const; - void SetROffset(const FbxVector4& pROffset); - void SetRPivot(const FbxVector4& pRPivot); - void SetSOffset(const FbxVector4& pSOffset); - void SetSPivot(const FbxVector4& pSPivot); - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - bool GetRotationSpaceForLimitOnly() const; - void SetRotationSpaceForLimitOnly(bool pRotationSpaceForLimitOnly); - - void DoF2LT(FbxVector4& pLT, const FbxVector4& pDoF, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void LT2DoF(FbxVector4& pDoF, const FbxVector4& pLT, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF, bool pForLimit=false); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM, bool pForLimit=false); - void LSM2GSM(FbxAMatrix& pGSM, const FbxAMatrix& pPGSM, const FbxAMatrix& pLSM, const FbxAMatrix& pLRM, const FbxVector4& pPLS); - void GTRSM2GX(FbxAMatrix& pGX, const FbxVector4& pGT, const FbxAMatrix& pGRM, const FbxAMatrix& pGSM); - -private: - void SumPivots(FbxVector4& pSum, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - - class RotationSpace - { - public: - enum EMask {eHasNothing=0, eHasPreRotM=1<<0, eHasPostRotM=1<<1}; - - RotationSpace(); - - bool HasPreRM() const; - bool HasPostRM() const; - void GetPreRM(FbxAMatrix& pPreRM) const; - void GetPostRM(FbxAMatrix& pPostRM) const; - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM); - - FbxUInt8 mMask; - FbxAMatrix mPreRM; - FbxAMatrix mPostRM; - FbxRotationOrder mRotationOrder; - }; - - enum EMask {eHasNothing=0, eHasRotOffset=1<<0, eHasRotPivot=1<<1, eHasScaleOffset=1<<2, eHasScalePivot=1<<3}; - - FbxUInt8 mMask; - EInheritType mInheritType; - FbxVector4 mROffset; - FbxVector4 mRPivot; - FbxVector4 mSOffset; - FbxVector4 mSPivot; - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - bool mRotationSpaceForLimitOnly; - RotationSpace mRotationSpace; -}; - -FBXSDK_DLL bool FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef, const int* pOrder); -FBXSDK_DLL void FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef); - -#include - -#endif /* _FBXSDK_CORE_MATH_TRANSFORMS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector2.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector2.h deleted file mode 100644 index acd71c3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector2.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector2.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_2_H_ -#define _FBXSDK_CORE_MATH_VECTOR_2_H_ - -#include - -#include - -/** A two double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector2 : public FbxDouble2 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector2(); - - /** Copy constructor. - * \param pVector2 The vector copied to this one. - */ - FbxVector2(const FbxVector2& pVector2); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - */ - FbxVector2(double pX, double pY); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector2 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector2& operator=(const FbxVector2& pVector2); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - */ - void Set(double pX, double pY); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return A new vector with the result of adding pValue to each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return A new vector with the result of subtracting pValue from each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return A new vector with the result of multiplying each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return A new vector with the result of dividing each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector2 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator+(const FbxVector2& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator-(const FbxVector2& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator*(const FbxVector2& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The result of this vector / pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator/(const FbxVector2& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator+=(const FbxVector2& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator-=(const FbxVector2& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator*=(const FbxVector2& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \remarks The values in pVector are not checked. - * \return The result of this vector / pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator/=(const FbxVector2& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - */ - double DotProduct(const FbxVector2& pVector) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxVector2 & pVector) const; - - /** Non-equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxVector2 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - */ - double Distance(const FbxVector2& pVector) const; - - //! Normalize the vector, length set to 1. - void Normalize(); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 2]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=2) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_2_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector4.h b/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector4.h deleted file mode 100644 index 83e4761..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/math/fbxvector4.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector4.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_4_H_ -#define _FBXSDK_CORE_MATH_VECTOR_4_H_ - -#include - -#include - -class FbxQuaternion; - -/** A four double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector4 : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector4(); - - /** Copy constructor. - * \param pVector4 The vector copied to this one. - */ - FbxVector4(const FbxVector4& pVector4); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - * \param pZ Z component. - * \param pW W component. - */ - FbxVector4(double pX, double pY, double pZ, double pW=1.0); - - /** Constructor. - * \param pValue X,Y,Z,W components. - */ - FbxVector4(const double pValue[4]); - - /** Constructor. - * \param pValue X,Y,Z components. - * \remarks The fourth component of this object is assigned 1. - */ - FbxVector4(const FbxDouble3& pValue); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector4 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector4& operator=(const FbxVector4& pVector4); - - /** Assignment operation. - * \param pValue The pointer to an array whose elements are assigned to this vector. - * \return This vector after assignment. - */ - FbxVector4& operator=(const double* pValue); - - /** Assignment operation. - * \param pValue The vector with 3 elements assigned to this vector. - * \return This vector after assignment. - * \remarks The first three elements are assigned with pValue. The fourth element is set as 1.0 - */ - FbxVector4& operator=(const FbxDouble3& pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW=1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector4 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The vector v' = this + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator+(const FbxVector4& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The vector v' = this - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator-(const FbxVector4& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The vector v' = this * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator*(const FbxVector4& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The vector v[i]' = this[i] / pVector[i]. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator/(const FbxVector4& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator+=(const FbxVector4& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator-=(const FbxVector4& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator*=(const FbxVector4& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator/=(const FbxVector4& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double DotProduct(const FbxVector4& pVector) const; - - /** Calculate the cross product of two vectors. - * \param pVector The second vector. - * \return The cross product vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - FbxVector4 CrossProduct(const FbxVector4& pVector) const; - - /** Calculate the Euler rotation required to align axis pAB-pA on pAB-pB. - * \param pAB The intersection of the 2 axis. - * \param pA A point on axis to be aligned. - * \param pB A point on reference axis. - * \param pAngles Resulting euler angles. - * \return \c true on success. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - static bool AxisAlignmentInEulerAngle(const FbxVector4& pAB, const FbxVector4& pA, const FbxVector4& pB, FbxVector4& pAngles); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxVector4 & pVector) const; - - /** Non equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxVector4 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double Distance(const FbxVector4& pVector) const; - - /** Normalize the vector, length set to 1. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - void Normalize(); - - - /** Set the Euler XYZ from a Quaternion. - *\param pQuat Quaternion from which Euler XYZ information is got. - */ - void SetXYZ(const FbxQuaternion pQuat); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 4]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=4) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxVector4& pV, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_4_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxatomic.h b/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxatomic.h deleted file mode 100644 index 6e666f3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxatomic.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxatomic.h -#ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_ -#define _FBXSDK_CORE_SYNC_ATOMIC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FBXSDK_DLL FbxAtomOp -{ -public: - static void Inc(volatile FbxAtomic* pPtr); - static void Dec(volatile FbxAtomic* pPtr); - static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap); - static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap); - static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxclock.h b/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxclock.h deleted file mode 100644 index e419646..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxclock.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclock.h -#ifndef _FBXSDK_CORE_SYNC_CLOCK_H_ -#define _FBXSDK_CORE_SYNC_CLOCK_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -/** Put the current thread to sleep. - * \param pMilliseconds The duration of the sleep in milli-seconds. - */ -FBXSDK_DLL void FbxSleep(int pMilliseconds); - -/** Retrieves the current value of the high-resolution performance counter. - * \return The current value of the high-resolution performance counter, in "counts". - * \remarks To convert "counts" into time, divide it by the frequency available from FbxGetHighResFrequency(). - */ -FBXSDK_DLL FbxLongLong FbxGetHighResCounter(); - -/** Retrieves the frequency of the high-resolution performance counter. - * \return The frequency of the high-resolution performance counter value, in "counts" per second. - * \remarks The first time this function is called, the frequency is queried from the system and then cached - * so that further requests are fast. This means it is guaranteed to not change during run-time. - */ -FBXSDK_DLL FbxLongLong FbxGetHighResFrequency(); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SYNC_CLOCK_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxsync.h b/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxsync.h deleted file mode 100644 index 39b6a52..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxsync.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsync.h -#ifndef _FBXSDK_CORE_SYNC_H_ -#define _FBXSDK_CORE_SYNC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include -#include - -#include - -class FbxMutexImpl; -class FbxSemaphoreImpl; -class FbxGateImpl; - -/** A spinlock is the fastest and most simple thread lock mechanism available. - * It is very efficient since it does not use any operating system calls; it is only a test and set on an atomic variable, - * thus it is the fastest thread lock available. Spinlocks are efficient if threads are only likely to be blocked for a - * short period of time, as they avoid overhead from operating system process re-scheduling or context switching. However, - * spinlocks become wasteful if held for longer durations, both preventing other threads from running and requiring - * re-scheduling. - * \note Spinlocks does not support recursive locking. A thread attempting to lock the same spinlock twice will wait - * indefinitely. - */ -class FBXSDK_DLL FbxSpinLock -{ -public: - FbxSpinLock(); - - /** Acquire the lock; thread will wait indefinitely until it is available. */ - void Acquire(); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. */ - void Release(); - -private: - FbxAtomic mSpinLock; -}; - -/** Mutually excluding thread lock mechanism. - * While the mutex is a much heavier implementation than a spinlock, it supports recursive locking; the same thread - * can safely lock the same mutex more than once without blocking. But it will have to be released as many times as - * it as been acquired before other threads can acquire the context. It is sometimes referred as a critical section. - * This is the heaviest thread lock implementation, but also the most secure. - */ -class FBXSDK_DLL FbxMutex -{ -public: - /** Constructor - * \param pInitialOwnership If pInitialOwnership is true, the lock will be initialized as being locked by the - * current thread. - */ - FbxMutex(bool pInitialOwnership=false); - virtual ~FbxMutex(); //!< Destructor - - /** Acquire the lock; thread will wait indefinitely until it is available. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - void Acquire(); - - /** Try acquiring the lock; thread will not wait if it is not available. - * \param pRetryCount The number of retries in case the lock is not available. - * \return True if the lock is acquired, false otherwise. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - bool TryAcquire(unsigned int pRetryCount); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. - * \remarks Only the owner thread should call Release(), and it needs to be released as many times as it was - * acquired. - */ - void Release(); - -private: - FbxMutexImpl* mImpl; -}; - -/** Mutually excluding thread waiting mechanism with a counter. - * Semaphore are generally used in situations when the current thread needs to wait for other threads before - * proceeding to the next step. In other words, that thread waits a number of signals from other threads. This - * is the best mechanism to use to synchronize threads since it doesn't require an heavy critical section. - */ -class FBXSDK_DLL FbxSemaphore -{ -public: - FbxSemaphore(); //!< Constructor - virtual ~FbxSemaphore(); //!< Destructor - - /** Wait indefinitely until the semaphore as been signaled as many times as specified. - * \param pCount Number of signal to wait before this function returns. - * \return True if the wait exit without errors. - * \remarks If pCount is set to zero, this function returns immediately without waiting. - */ - bool Wait(unsigned int pCount=1); - - /** Signal the semaphore as many times as specified. - * \param pCount The number of signal to send to the semaphore. - * \return True if the semaphore was signaled without errors. - */ - bool Signal(unsigned int pCount=1); - -private: - FbxSemaphoreImpl* mImpl; -}; - -/** A gate thread locking mechanism is very similar to a semaphore, except that when it is opened, any - * further call to wait will not wait until it is closed. It is generally used to block multiple threads - * until one of them open the gate to release them all. - */ -class FBXSDK_DLL FbxGate -{ -public: - FbxGate(); //!< Constructor - virtual ~FbxGate(); //!< Destructor - - /** Open the gate to release all threads waiting. - * \remarks All waiting threads will unblock until the gate is closed. - */ - void Open(); - - /** Close the gate so that the next time a thread call Wait() it will be blocked. */ - void Close(); - - /** Check if the gate is open. - * \return True if the gate is open, otherwise false. - */ - bool IsOpen(); - - /** Wait indefinitely until the gate open. - * \return True if the wait completed without errors. - * \remarks If the gate is already open, this function returns immediately. - */ - bool Wait(); - -private: - FbxGateImpl* mImpl; -}; - -/** A simple stack of linked items that is multi-thread safe, protected by a spinlock. - */ -class FBXSDK_DLL FbxSyncStack -{ -public: - //! A single link item to be used to construct the stack - struct Item - { - Item* mNext; - inline Item(){ mNext = NULL; } - inline Item* Set(Item* pNext){ return mNext = pNext; } - inline Item* Next(){ return mNext; } - }; - - //! Constructor - FbxSyncStack(); - - /** Add an item on the top of the stack. - * \param pItem The item to add on top of the stack. - */ - void Push(Item* pItem); - - /** Remove the item on the top of the stack. - * \return Returns the item on top of the stack, otherwise NULL if stack empty. - */ - Item* Pop(); - -private: - FbxSpinLock mLock; - Item* mTop; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxthread.h b/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxthread.h deleted file mode 100644 index fcbde87..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/core/sync/fbxthread.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthread.h -#ifndef _FBXSDK_CORE_SYNC_THREAD_H_ -#define _FBXSDK_CORE_SYNC_THREAD_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FbxThreadImpl; - -//! Definition of a thread procedure function signature. -typedef void (*FbxThreadProc)(void*); - -/** This class implement a standard way to use threads across platforms. - */ -class FBXSDK_DLL FbxThread -{ -public: - enum EState {eUnknown, eRunning, eDead}; - enum EPriority {eNone, eIdle, eLowest, eLow, eNormal, eHigh, eHighest, eRealTime}; - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, bool pSuspend=false); - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pPriority The thread priority to set upon creation. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, EPriority pPriority, bool pSuspend=false); - - //! Destructor - virtual ~FbxThread(); - - /** Suspend the execution of the thread. - * \return Return true if the thread was successfully suspended, otherwise false. - * \remarks It should be used only if you can control where the thread will be suspended in its procedure, - * otherwise the state of the thread and its memory is unknown, since the code will stop anywhere. - */ - bool Suspend(); - - /** Resume the execution of the thread. - * \return Return true if the thread was successfully resumed, otherwise false. - */ - bool Resume(); - - /** Wait for the thread completion. - * \return True if the thread successfully returned from its procedure. - */ - bool Join(); - - /** Do not wait for the thread completion and terminate it. - * \return True if the thread successfully died. - */ - bool Kill(); - - /** Retrieve the priority of the thread. - * \return The thread's priority. - */ - EPriority GetPriority(); - - /** Set the thread priority. - * \param pPriority The priority to set to this thread. - * \return True if the thread priority was successfully changed. - */ - bool SetPriority(EPriority pPriority); - - /** Retrieve the thread current state. - * \return The state of the thread. - */ - EState GetState(); - -private: - FbxThreadImpl* mImpl; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_THREAD_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_def.h b/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_def.h deleted file mode 100644 index d84469d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_def.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_def.h - * FBX SDK environment definition. - * - * This file is the principal FBX SDK environment definition. It is used at the top of - * every header and source file so that every unit is using the same definitions. - */ -#ifndef _FBXSDK_DEFINITION_H_ -#define _FBXSDK_DEFINITION_H_ - -//--------------------------------------------------------------------------------------- -//System Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Define Version and Namespace -#include - -//--------------------------------------------------------------------------------------- -//Define Architecture -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Useful Macros -#define FBX_SAFE_DELETE(p) {FbxDelete(p);(p)=NULL;} -#define FBX_SAFE_DELETE_ARRAY(a) {FbxDeleteArray(a);(a)=NULL;} -#define FBX_SAFE_DESTROY(p) if(p){(p)->Destroy();(p)=NULL;} -#define FBX_SAFE_FREE(p) if(p){FbxFree(p);(p)=NULL;} - -#endif /* _FBXSDK_DEFINITION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsbegin.h b/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsbegin.h deleted file mode 100644 index 1b89186..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsbegin.h +++ /dev/null @@ -1,17 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsbegin.h -#include - -#if FBXSDK_DEFINE_NAMESPACE == 1 - namespace FBXSDK_NAMESPACE { -#endif diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsend.h b/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsend.h deleted file mode 100644 index 1aab836..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_nsend.h +++ /dev/null @@ -1,16 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsend.h - -#if FBXSDK_DEFINE_NAMESPACE == 1 - } -#endif diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_version.h b/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_version.h deleted file mode 100644 index ebb085a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fbxsdk_version.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2018 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_version.h - * FBX SDK version definition. - * - * This file defines the version string and numbers for this release of the FBX SDK. - * \note This file should never be included directly, please include fbxsdk_def.h - * instead. - */ -#ifndef _FBXSDK_VERSION_H_ -#define _FBXSDK_VERSION_H_ - -//FBX SDK version defines -#define FBXSDK_VERSION_MAJOR 2019 // - -#include - -#include - -#include - -/** Representing a COLLADA animation element. - */ -class AnimationElement : public ElementBase -{ -public: - typedef ElementBase base_type; - - AnimationElement(); - virtual ~AnimationElement(); - - /** Get the count of animation channels in the element. - * \return Return the channel count. - */ - int GetChannelCount() const; - - /** Initialize with the content of a COLLADA element. - * This method should be called before ToFBX. - */ - bool FromCOLLADA(xmlNode * pElement, const SourceElementMapType & pSourceElements); - - /** Initialize with an animation curve. - * This method should be called before ToCOLLADA. - * \param pCurve The specific animation curve. - * \param pUnitConversion The unit conversion for key value. - */ - bool FromFBX(const FbxAnimCurve * pCurve, double pUnitConversion = 1.0); - - /** Copy the channel with specific index to the FBX animation curve. - * \param pFBXCurve The destination FBX animation curve. - * \param pChannelIndex The index of the source channel. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxAnimCurve * pFBXCurve, int pChannelIndex, - double pUnitConversion = 1.0) const; - - /** Copy the matrix animation to the FBX node TRS properties. - * \param pFBXNode The destination FBX node. - * \param pAnimLayer The animation layer whose X, Y and Z curves will be set up. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxNode * pFBXNode, FbxAnimLayer * pAnimLayer, - double pUnitConversion = 1.0) const; - - /** Add the content to COLLADA animation library. - * \param pAnimationLibrary The COLLADA animation library element. - * \param pNodeID The ID of the element to who this curve is belong. - * \param pAttributeSID The ID the attribute to who this curve is belong. - */ - bool ToCOLLADA(xmlNode * pAnimationLibrary, const char * pNodeID, - const char * pAttributeSID); - -private: - int mKeyCount; - double * mInputArray; - double * mOutputArray; - int mOutputStride; - FbxString * mInterpolationArray; - int mInterpolationStride; - double * mInTangentArray; - int mInTangentStride; - double * mOutTangentArray; - int mOutTangentStride; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ANIMATION_ELEMENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h deleted file mode 100644 index 7018ea7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h +++ /dev/null @@ -1,275 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaelement.h -#ifndef _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ -#define _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ - -#include - -#include - -// Utility functions to convert type to array tag used in COLLADA source element -template -inline const FbxString TypeToArrayTag() -{ - return COLLADA_FLOAT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_BOOL_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_INT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_NAME_ARRAY_STRUCTURE; -} - -// Utility functions to convert type to parameter tag used in COLLADA source element -template -inline const FbxString TypeToParameterTag() -{ - return COLLADA_FLOAT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_BOOL_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_INT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_NAME_TYPE; -} - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of common COLLADA element. - */ -struct ElementContentAccessor -{ - ElementContentAccessor(); - ElementContentAccessor(xmlNode * pElement); - virtual ~ElementContentAccessor(); - - template - bool GetNext(TYPE * pData) - { - return FromString(pData, mPointer, &mPointer); - } - - template - int GetArray(TYPE * pArray, int pArraySize, - int pSourceUnitOffset = 0, int pSourceUnitValidCount = 1, int pSourceUnitSize = 1, - int pDestUnitOffset = 0, int pDestUnitValidCount = 1, int pDestUnitSize = 1, - TYPE pDefaultValue = TYPE()) - { - if (pArray) - { - return FromStringToArray(mPointer, pArray, pArraySize, - pSourceUnitOffset, pSourceUnitValidCount, pSourceUnitSize, - pDestUnitOffset, pDestUnitValidCount, pDestUnitSize, pDefaultValue); - } - return 0; - } - - xmlChar * mContent; - const char * mPointer; -}; - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of COLLADA source element. - */ -template -struct SourceElementContentAccessor : public ElementContentAccessor -{ - SourceElementContentAccessor(xmlNode * pSourceElement) - : mCount(0), mStride(1), mOffset(0) - { - bool lReadCount = true; - xmlNode* lTechniqueElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_TECHNIQUE_COMMON_ELEMENT); - if (lTechniqueElement) - { - xmlNode* lAccessorElement = DAE_FindChildElementByTag(lTechniqueElement, COLLADA_ACCESSOR_STRUCTURE); - if (lAccessorElement) - { - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_COUNT_PROPERTY, mCount); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_STRIDE_PROPERTY, mStride); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_OFFSET_PROPERTY, mOffset); - } - lReadCount = false; - } - - xmlNode * lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, TypeToArrayTag()); - // Some COLLADA exporters use IDREF_array instead of Name_array - if (!lDataArrayElement && TypeToArrayTag() == COLLADA_NAME_ARRAY_STRUCTURE) - lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_IDREF_ARRAY_STRUCTURE); - FBX_ASSERT(lDataArrayElement); - - if (lDataArrayElement && lReadCount) - DAE_GetElementAttributeValue(lDataArrayElement, COLLADA_COUNT_PROPERTY, mCount); - - mContent = xmlNodeGetContent(lDataArrayElement); - mPointer = (const char *)mContent; - } - - int mCount; - int mStride; - int mOffset; -}; - -//----------------------------------------------------------------------------// - -/** Representing a common COLLADA element. - */ -class ElementBase -{ -public: - enum - { - MATRIX_STRIDE = 16, - }; - - // The name of user property in FBX which is used to preserve the ID of COLLADA element - static const char* smID_PROPERTY_NAME; - - /** Constructor & Destructor. - */ - ElementBase(); - virtual ~ElementBase(); - - /** Access for XML element. - */ - void SetXMLElement(xmlNode * pElement) { mXMLElement = pElement; } - xmlNode * GetXMLElement() const { return mXMLElement; } - - /** Get the ID of the element. - * \return Return the ID string. - */ - const FbxString & GetID() const; - - /** Get the unit of the element, - * which takes effect in this element and its children elements. - * \return Return the unit. - */ - const FbxSystemUnit * GetUnit() const; - -private: - xmlNode * mXMLElement; - mutable FbxString * mID; - mutable FbxSystemUnit * mUnit; -}; - -/** Convert from ID to URL, just add a prefix "#". - * \param pID The ID string. - * \return Return the URL string. - */ -inline const FbxString URL(const FbxString & pID) -{ - return FbxString("#") + pID; -} - -/** Convert the array data to a source element under specific parent element. - * \param pParentElement The parent element. - * \param pID The ID of the new source element. - * \param pData The array data. - * \param pCount The length of the array. - * \param pStride The stride of each unit in the array. For example, when you - * export an array of FbxDouble3 of size 10, you convert it to a double array - * of size 30 with a stride 3 and call this method. - * \return The new source element. - */ -template -xmlNode * AddSourceElement(xmlNode * pParentElement, const char * pID, - const T * pData, int pCount, int pStride = 1) -{ - FBX_ASSERT(pParentElement && pData); - if (!pParentElement || !pData) - return NULL; - - xmlNode * lSourceElement = DAE_AddChildElement(pParentElement, COLLADA_SOURCE_STRUCTURE); - DAE_AddAttribute(lSourceElement, COLLADA_ID_PROPERTY, pID); - - FbxString lContent; - const int lDataCount = pCount * pStride; - for (int lIndex = 0; lIndex < lDataCount; ++lIndex) - { - lContent += ToString(pData[lIndex]); - if (lIndex != lDataCount - 1) - lContent += " "; - } - const FbxString lArrayID = FbxString(pID) + "-array"; - xmlNode * lArrayElement = DAE_AddChildElement(lSourceElement, TypeToArrayTag(), lContent); - DAE_AddAttribute(lArrayElement, COLLADA_ID_PROPERTY, lArrayID); - DAE_AddAttribute(lArrayElement, COLLADA_COUNT_PROPERTY, lDataCount); - - xmlNode * lTechniqueCommonElement = DAE_AddChildElement(lSourceElement, - COLLADA_TECHNIQUE_COMMON_ELEMENT); - xmlNode * lAccessElement = DAE_AddChildElement(lTechniqueCommonElement, - COLLADA_ACCESSOR_STRUCTURE); - DAE_AddAttribute(lAccessElement, COLLADA_SOURCE_PROPERTY, URL(lArrayID)); - DAE_AddAttribute(lAccessElement, COLLADA_COUNT_PROPERTY, pCount); - DAE_AddAttribute(lAccessElement, COLLADA_STRIDE_PROPERTY, pStride); - - for (int lStrideIndex = 0; lStrideIndex < pStride; ++lStrideIndex) - { - xmlNode * lParamElement = DAE_AddChildElement(lAccessElement, COLLADA_PARAMETER_STRUCTURE); - DAE_AddAttribute(lParamElement, COLLADA_TYPE_PROPERTY, TypeToParameterTag()); - } - - return lSourceElement; -} - -/** Populate the layer element with direct array and return index array for later use. - * \param pLayerElement The layer element to be populated. - * \param pSourceElement The source element containing the direct array data. - * \param pSize The count of double data of direct array element. - * \return Return the index array of the layer element. - */ -template FbxLayerElementArray * PopulateLayerElementDirectArray(FbxLayerElement * pLayerElement, xmlNode * pSourceElement, int pSize) -{ - SourceElementContentAccessor lSourceElementAccessor(pSourceElement); - - FbxLayerElementTemplate * lLayerElement = (FbxLayerElementTemplate *)pLayerElement; - lLayerElement->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lLayerElement->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayerElement->GetDirectArray().SetCount(lSourceElementAccessor.mCount); - - TYPE * lArray = NULL; - lArray = lLayerElement->GetDirectArray().GetLocked(lArray); - lSourceElementAccessor.GetArray((double *)lArray, lSourceElementAccessor.mCount*pSize, 0, pSize, - lSourceElementAccessor.mStride, 0, pSize, sizeof(TYPE)/sizeof(double), 1.0); - lLayerElement->GetDirectArray().Release(&lArray, lArray); - - return &(lLayerElement->GetIndexArray()); -} - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h deleted file mode 100644 index b0f79f5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaiostream.h -#ifndef _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ -#define _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ - -#include - -#include - -//----------------------------------------------------------------------------// - -/** Convert part of the source string into destination type. - * \param pDest The destination with a specific type. - * \param pSourceBegin The begin of the source string. - * \param pSourceEnd Return the end of the part of the source string. - * \return Return \c true on success and \c false if else. - */ -template bool FromString(T * pDest, const char * pSourceBegin, const char ** pSourceEnd = NULL); -template <> bool FromString(int * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(double * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxString * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble2 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble3 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxVector4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); - - - -/** Parse the string into an array. - * The source string is made up with many groups and each group contains pSourceGroupSize units separated by spaces; - * The destination array is also made up with many groups and each unit contains pDestGroupSize units. - * The valid unit range in each source group is [pSourceUnitOffset, pSourceUnitOffset + pSourceValidUnitCount). - * The valid unit range in each destination unit is [pDestUnitOffset, pDestUnitOffset + pDestValidUnitCount). - * The units in invalid range of destination is set to a default value. - */ -template int FromStringToArray(const char * pString, TYPE * pArray, int pArraySize, int pSourceUnitOffset, int pSourceValidUnitCount, int pSourceGroupSize, int pDestUnitOffset, int pDestValidUnitCount, int pDestGroupSize, TYPE pDefaultValue = TYPE()) -{ - if (pString == 0 || pArray == 0) - return 0; - - FBX_ASSERT(pSourceUnitOffset >= 0 && pSourceUnitOffset < pSourceGroupSize); - FBX_ASSERT(pSourceValidUnitCount >= 0 && pSourceUnitOffset + pSourceValidUnitCount <= pSourceGroupSize); - FBX_ASSERT(pDestUnitOffset >= 0 && pDestUnitOffset < pDestGroupSize); - FBX_ASSERT(pDestValidUnitCount >= 0 && pDestUnitOffset + pDestValidUnitCount <= pDestGroupSize); - const char * lSource = pString; - TYPE * lDest = pArray; - - int lReadCount = 0; - int lSourceCounter = 0; - int lDestCounter = 0; - const int lSourceUnitValidEnd = pSourceUnitOffset + pSourceValidUnitCount; - const int lDestUnitGap = pDestGroupSize - pDestValidUnitCount - pDestUnitOffset; - while (lSource && *lSource) - { - TYPE lData; - const char * lSourceStart = lSource; - if (FromString(&lData, lSource, &lSource) && lSourceCounter >= pSourceUnitOffset && lSourceCounter < lSourceUnitValidEnd) - { - if (lReadCount >= pArraySize) - { - // we are trying to write past the allocated buffer - return 0; - } - - if (lDestCounter == 0) - { - for (int lIndex = 0; lIndex < pDestUnitOffset; ++lIndex) - *(lDest++) = pDefaultValue; - } - - *lDest++ = lData; - ++lReadCount; - ++lDestCounter; - if (lDestCounter == pDestValidUnitCount) - { - lDestCounter = 0; - for (int lIndex = 0; lIndex < lDestUnitGap; ++lIndex) - *lDest++ = pDefaultValue; - } - } - else - { - // we met a stop condition of FromString. In the normal case, lSource should now be "" or ' '. If not, - // the converted string is corrupted and we have to break the loop. We can detect this by checking - // if lSource pointer has moved. - if (lSource == lSourceStart) - { - break; - } - } - ++lSourceCounter; - if (lSourceCounter == pSourceGroupSize) - lSourceCounter = 0; - } - return lReadCount; -} - -//----------------------------------------------------------------------------// - -template -const FbxString ToString(const T & pValue) -{ - return FbxString(pValue); -} -template <> -const FbxString ToString(const FbxVector4 & pValue); -template <> -const FbxString ToString(const FbxAMatrix & pValue); - -//----------------------------------------------------------------------------// - -/** Decode percent encoded characters, returns an empty string if there's an error. - * For example, a string like "abc%20abc" is converted into "abc abc". - * \param pEncodedString The percent encoded string. - * \return The decoded string. - */ -const FbxString DecodePercentEncoding(const FbxString & pEncodedString); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h deleted file mode 100644 index d9083e7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladanamespace.h -#ifndef _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ -#define _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ - -#include - -#include - -#include - -/** Containing the valid parameter definition and modification in local scope. - */ -struct FbxColladaNamespace -{ -public: - /** Push the newparam and setparam elements found in this element. - * Call this method at the beginning of importing an element. - * \param pElement The specific element. - */ - void Push(xmlNode * pElement); - - /** Pop the newparam and setparam elements found in this element. - * Call this method at the end of importing an element. - */ - void Pop(); - - /** Find the specific newparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamDefinition(const char * pSID) const; - - /** Find the specific setparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamModification(const char * pSID) const; - - /** Get the count of all the setparam elements in local scope. - * \return The count. - */ - int GetParamModificationCount() const; - - /** Get the setparam element with given index. - * \param pIndex The given index. - * \return The element. - */ - xmlNode * GetParamModification(int pIndex) const; - -private: - FbxArray mParamDefinition; - FbxArray mParamDefinitionCount; - - FbxArray mParamModification; - FbxArray mParamModificationCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h deleted file mode 100644 index bffd356..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h +++ /dev/null @@ -1,472 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladatokens.h -#ifndef _FBXSDK_FILEIO_COLLADA_TOKENS_H_ -#define _FBXSDK_FILEIO_COLLADA_TOKENS_H_ - -#define XML_STR (const xmlChar*) - -// In COLLADA, 1 means total control, while 100 means total control in FBX. -const int COLLADA_MORPH_WEIGHT_TO_FBX_RATIO = 100; - -#define COLLADA_VERSION_PROPERTY "version" -#define COLLADA_VERSION "1.4.1" -#define COLLADA_SCHEMA "http://www.collada.org/2005/11/COLLADASchema" - -// COLLADA 1.4 elements -#define COLLADA_LIBRARY_ANIMATION_ELEMENT "library_animations" -#define COLLADA_LIBRARY_ANIMATION_CLIP_ELEMENT "library_animation_clips" -#define COLLADA_LIBRARY_CAMERA_ELEMENT "library_cameras" -#define COLLADA_LIBRARY_CONTROLLER_ELEMENT "library_controllers" -#define COLLADA_LIBRARY_EFFECT_ELEMENT "library_effects" -#define COLLADA_LIBRARY_FFIELDS_ELEMENT "library_force_fields" -#define COLLADA_LIBRARY_GEOMETRY_ELEMENT "library_geometries" -#define COLLADA_LIBRARY_IMAGE_ELEMENT "library_images" -#define COLLADA_LIBRARY_LIGHT_ELEMENT "library_lights" -#define COLLADA_LIBRARY_MATERIAL_ELEMENT "library_materials" -#define COLLADA_LIBRARY_NODE_ELEMENT "library_nodes" -#define COLLADA_LIBRARY_PMATERIAL_ELEMENT "library_physics_materials" -#define COLLADA_LIBRARY_PMODEL_ELEMENT "library_physics_models" -#define COLLADA_LIBRARY_PSCENE_ELEMENT "library_physics_scenes" -#define COLLADA_LIBRARY_VSCENE_ELEMENT "library_visual_scenes" - -#define COLLADA_INSTANCE_ANIMATION_ELEMENT "instance_animation" -#define COLLADA_INSTANCE_CAMERA_ELEMENT "instance_camera" -#define COLLADA_INSTANCE_CONTROLLER_ELEMENT "instance_controller" -#define COLLADA_INSTANCE_EFFECT_ELEMENT "instance_effect" -#define COLLADA_INSTANCE_GEOMETRY_ELEMENT "instance_geometry" -#define COLLADA_INSTANCE_LIGHT_ELEMENT "instance_light" -#define COLLADA_INSTANCE_NODE_ELEMENT "instance_node" -#define COLLADA_INSTANCE_VSCENE_ELEMENT "instance_visual_scene" -#define COLLADA_INSTANCE_PSCENE_ELEMENT "instance_physics_scene" -#define COLLADA_INSTANCE_MATERIAL_ELEMENT "instance_material" - -#define COLLADA_ANIMCLIP_ELEMENT "animation_clip" -#define COLLADA_BINDMATERIAL_ELEMENT "bind_material" -#define COLLADA_EFFECT_ELEMENT "effect" -#define COLLADA_INITFROM_ELEMENT "init_from" -#define COLLADA_SAMPLER_ELEMENT "sampler" -#define COLLADA_SKELETON_ELEMENT "skeleton" -#define COLLADA_TARGETS_ELEMENT "targets" -#define COLLADA_TECHNIQUE_COMMON_ELEMENT "technique_common" -#define COLLADA_VSCENE_ELEMENT "visual_scene" -#define COLLADA_WEIGHTS_ELEMENT "vertex_weights" -#define COLLADA_VERTEXCOUNT_ELEMENT "vcount" - -#define COLLADA_FX_PROFILE_COMMON_ELEMENT "profile_COMMON" -#define COLLADA_FX_PROFILE_CG_ELEMENT "profile_CG" -#define COLLADA_FX_PROFILE_HLSL_ELEMENT "profile_HLSL" -#define COLLADA_FX_PROFILE_GLSL_ELEMENT "profile_GLSL" -#define COLLADA_FX_PROFILE_GLES_ELEMENT "profile_GLES" - -#define COLLADA_FXCMN_FLOAT_ELEMENT "float" -#define COLLADA_FXCMN_FLOAT4_ELEMENT "float4" -#define COLLADA_FXCMN_FLOAT4X4_ELEMENT "float4x4" -#define COLLADA_FXCMN_INCLUDE_ELEMENT "include" -#define COLLADA_FXCMN_SURFACE_ELEMENT "surface" -#define COLLADA_FXCMN_SAMPLER1D_ELEMENT "sampler1D" -#define COLLADA_FXCMN_SAMPLER2D_ELEMENT "sampler2D" -#define COLLADA_FXCMN_SAMPLER3D_ELEMENT "sampler3D" -#define COLLADA_FXCMN_SAMPLERCUBE_ELEMENT "samplerCUBE" -#define COLLADA_FXCMN_NEWPARAM_ELEMENT "newparam" -#define COLLADA_FXCMN_SETPARAM_ELEMENT "setparam" -#define COLLADA_FXCMN_STRING_ELEMENT "string" - -#define COLLADA_TECHNIQUE_STANDARD_PARAMETER "standard" - -#define COLLADA_FXSTD_CONSTANT_ELEMENT "constant" -#define COLLADA_FXSTD_LAMBERT_ELEMENT "lambert" -#define COLLADA_FXSTD_PHONG_ELEMENT "phong" -#define COLLADA_FXSTD_BLINN_ELEMENT "blinn" -#define COLLADA_FXSTD_COLOR_ELEMENT "color" -#define COLLADA_FXSTD_FLOAT_ELEMENT "float" -#define COLLADA_FXSTD_SAMPLER_ELEMENT "texture" -#define COLLADA_FXSTD_TEXTURE_ATTRIBUTE "texture" -#define COLLADA_FXSTD_TEXTURESET_ATTRIBUTE "texcoord" - -#define COLLADA_CONTROLLER_SKIN_ELEMENT "skin" -#define COLLADA_CONTROLLER_MORPH_ELEMENT "morph" - -#define COLLADA_CAMERA_PERSP_ELEMENT "perspective" -#define COLLADA_CAMERA_ORTHO_ELEMENT "orthographic" - -#define COLLADA_ASPECT_CAMERA_PARAMETER "aspect_ratio" -#define COLLADA_XFOV_CAMERA_PARAMETER "xfov" -#define COLLADA_YFOV_CAMERA_PARAMETER "yfov" -#define COLLADA_ZNEAR_CAMERA_PARAMETER "znear" -#define COLLADA_ZFAR_CAMERA_PARAMETER "zfar" -#define COLLADA_XMAG_CAMERA_PARAMETER "xmag" -#define COLLADA_YMAG_CAMERA_PARAMETER "ymag" -#define COLLADA_CAMERA_VERTICAL_APERTURE_PARAMETER "vertical_aperture" -#define COLLADA_CAMERA_HORIZONTAL_APERTURE_PARAMETER "horizontal_aperture" -#define COLLADA_CAMERA_LENS_SQUEEZE_PARAMETER "lens_squeeze" - -#define COLLADA_AMBIENT_MATERIAL_PARAMETER "ambient" -#define COLLADA_BUMP_MATERIAL_PARAMETER "bump" -#define COLLADA_DIFFUSE_MATERIAL_PARAMETER "diffuse" -#define COLLADA_EMISSION_MATERIAL_PARAMETER "emission" -#define COLLADA_TRANSPARENCY_MATERIAL_PARAMETER "transparency" -#define COLLADA_TRANSPARENT_MATERIAL_PARAMETER "transparent" -#define COLLADA_REFLECTIVE_MATERIAL_PARAMETER "reflective" -#define COLLADA_REFLECTIVITY_MATERIAL_PARAMETER "reflectivity" -#define COLLADA_SHININESS_MATERIAL_PARAMETER "shininess" -#define COLLADA_SPECULAR_MATERIAL_PARAMETER "specular" -#define COLLADA_INDEXOFREFRACTION_MATERIAL_PARAMETER "index_of_refraction" -#define COLLADA_OPAQUE_MODE_ATTRIBUTE "opaque" -#define COLLADA_OPAQUE_MODE_A_ONE "A_ONE" -#define COLLADA_OPAQUE_MODE_RGB_ONE "RGB_ONE" -#define COLLADA_OPAQUE_MODE_A_ZERO "A_ZERO" -#define COLLADA_OPAQUE_MODE_RGB_ZERO "RGB_ZERO" - -#define COLLADA_LIGHT_AMBIENT_ELEMENT "ambient" -#define COLLADA_LIGHT_POINT_ELEMENT "point" -#define COLLADA_LIGHT_DIRECTIONAL_ELEMENT "directional" -#define COLLADA_LIGHT_SPOT_ELEMENT "spot" - -#define COLLADA_COLOR_LIGHT_PARAMETER "color" -#define COLLADA_CONST_ATTENUATION_LIGHT_PARAMETER "constant_attenuation" -#define COLLADA_LIN_ATTENUATION_LIGHT_PARAMETER "linear_attenuation" -#define COLLADA_QUAD_ATTENUATION_LIGHT_PARAMETER "quadratic_attenuation" -#define COLLADA_FALLOFFEXPONENT_LIGHT_PARAMETER "falloff_exponent" -#define COLLADA_FALLOFFANGLE_LIGHT_PARAMETER "falloff_angle" - -#define COLLADA_BINDSHAPEMX_SKIN_PARAMETER "bind_shape_matrix" - -#define COLLADA_CONTRIBUTOR_ASSET_ELEMENT "contributor" -#define COLLADA_AUTHOR_ASSET_PARAMETER "author" -#define COLLADA_AUTHORINGTOOL_ASSET_PARAMETER "authoring_tool" -#define COLLADA_CREATED_ASSET_PARAMETER "created" -#define COLLADA_MODIFIED_ASSET_PARAMETER "modified" -#define COLLADA_REVISION_ASSET_PARAMETER "revision" -#define COLLADA_SOURCEDATA_ASSET_PARAMETER "source_data" -#define COLLADA_UNITS_ASSET_PARAMETER "unit" -#define COLLADA_UPAXIS_ASSET_PARAMETER "up_axis" - -#define COLLADA_SYMBOL_PROPERTY "symbol" - -// From Collada 1.3 -#define COLLADA_DOCUMENT_STRUCTURE "COLLADA" -#define COLLADA_ASSET_STRUCTURE "asset" -#define COLLADA_REVISION_STRUCTURE "revision" -#define COLLADA_AUTHORING_TOOL_STRUCTURE "authoring_tool" -#define COLLADA_CREATED_STRUCTURE "created" -#define COLLADA_MODIFIED_STRUCTURE "modified" -#define COLLADA_AUTHOR_STRUCTURE "author" -#define COLLADA_TITLE_STRUCTURE "title" -#define COLLADA_SUBJECT_STRUCTURE "subject" -#define COLLADA_KEYWORDS_STRUCTURE "keywords" -#define COLLADA_COMMENTS_STRUCTURE "comments" -#define COLLADA_UNIT_STRUCTURE "unit" -#define COLLADA_SOURCE_DATA_STRUCTURE "source_data" -#define COLLADA_UP_AXIS_STRUCTURE "up_axis" -#define COLLADA_LIBRARY_STRUCTURE "library" // Deprecated 1.4 -#define COLLADA_SCENE_STRUCTURE "scene" -#define COLLADA_NODE_STRUCTURE "node" -#define COLLADA_MATRIX_STRUCTURE "matrix" -#define COLLADA_TRANSFORM_STRUCTURE "transform" -#define COLLADA_TRANSLATE_STRUCTURE "translate" -#define COLLADA_TRANSLATION_STRUCTURE "translation" // For ColladaMax -#define COLLADA_TRANSLATE_ORIGIN "origin" //A fix for Poser(Bug 309548). Handle translate origin info exported from Poser. -#define COLLADA_TRANSLATE_LOCATION "location" //A fix for ? (Bug BARB-154). "location" is synonyn of "translate" ? -#define COLLADA_ROTATE_STRUCTURE "rotate" -#define COLLADA_SCALE_STRUCTURE "scale" -#define COLLADA_SKEW_STRUCTURE "skew" -#define COLLADA_ROTATE_X "rotateX" -#define COLLADA_ROTATE_Y "rotateY" -#define COLLADA_ROTATE_Z "rotateZ" -#define COLLADA_ROT_X "RotX" // For ColladaMax -#define COLLADA_ROT_Y "RotY" -#define COLLADA_ROT_Z "RotZ" -#define COLLADA_ROTATION_X "rotation_x" // For XSI -#define COLLADA_ROTATION_Y "rotation_y" -#define COLLADA_ROTATION_Z "rotation_z" -#define COLLADA_ROTATIONX "rotationX" // BARB-154 -#define COLLADA_ROTATIONY "rotationY" -#define COLLADA_ROTATIONZ "rotationZ" - -#define COLLADA_ROTATE_PIVOT "rotatePivot" // the next 6 subids are recognized by ColladaMaya -#define COLLADA_SCALE_PIVOT "scalePivot" -#define COLLADA_ROTATE_PIVOT_INVERSE "rotatePivotInverse" -#define COLLADA_SCALE_PIVOT_INVERSE "scalePivotInverse" -#define COLLADA_ROTATE_PIVOT_OFFSET "rotatePivotTranslation" -#define COLLADA_SCALE_PIVOT_OFFSET "scalePivotTranslation" -#define COLLADA_PRE_ROTATION_X "jointOrientX" // these 3 subids recognized by ColladaMaya -#define COLLADA_PRE_ROTATION_Y "jointOrientY" -#define COLLADA_PRE_ROTATION_Z "jointOrientZ" -#define COLLADA_POST_ROTATION_X "post-rotationX" // these 3 subids NOT recognized by ColladaMaya -#define COLLADA_POST_ROTATION_Y "post-rotationY" -#define COLLADA_POST_ROTATION_Z "post-rotationZ" -#define COLLADA_ROTATE_AXIS_X "rotateAxisX" // these 3 subids recognized by ColladaMaya -#define COLLADA_ROTATE_AXIS_Y "rotateAxisY" -#define COLLADA_ROTATE_AXIS_Z "rotateAxisZ" -#define COLLADA_LOOKAT_STRUCTURE "lookat" -#define COLLADA_PERSPECTIVE_STRUCTURE "perspective" -#define COLLADA_GEOMETRY_STRUCTURE "geometry" -#define COLLADA_MESH_STRUCTURE "mesh" -#define COLLADA_VERTICES_STRUCTURE "vertices" -#define COLLADA_POLYGONS_STRUCTURE "polygons" -#define COLLADA_POLYLIST_STRUCTURE "polylist" -#define COLLADA_TRIANGLES_STRUCTURE "triangles" -#define COLLADA_P_STRUCTURE "p" -#define COLLADA_ANIMATION_STRUCTURE "animation" -#define COLLADA_CONTROLLER_STRUCTURE "controller" -#define COLLADA_SKIN_STRUCTURE "skin" -#define COLLADA_COMBINER_STRUCTURE "combiner" -#define COLLADA_JOINTS_STRUCTURE "joints" -#define COLLADA_VALUE_STRUCTURE "v" -#define COLLADA_MATERIAL_STRUCTURE "material" -#define COLLADA_SHADER_STRUCTURE "shader" -#define COLLADA_PASS_STRUCTURE "pass" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_TEXTURE_STRUCTURE "texture" -#define COLLADA_IMAGE_STRUCTURE "image" -#define COLLADA_INPUT_STRUCTURE "input" -#define COLLADA_TECHNIQUE_STRUCTURE "technique" -#define COLLADA_SOURCE_STRUCTURE "source" -#define COLLADA_ACCESSOR_STRUCTURE "accessor" -#define COLLADA_EXTRA_STRUCTURE "extra" -#define COLLADA_BOUNDINGBOX_STRUCTURE "boundingbox" -#define COLLADA_MIN_STRUCTURE "min" -#define COLLADA_MAX_STRUCTURE "max" - -#define COLLADA_ARRAY_STRUCTURE "array" -#define COLLADA_FLOAT_ARRAY_STRUCTURE "float_array" -#define COLLADA_INT_ARRAY_STRUCTURE "int_array" -#define COLLADA_NAME_ARRAY_STRUCTURE "Name_array" -#define COLLADA_IDREF_ARRAY_STRUCTURE "IDREF_array" -#define COLLADA_BOOL_ARRAY_STRUCTURE "bool_array" - -#define COLLADA_SAMPLER_STRUCTURE "sampler" -#define COLLADA_CHANNEL_STRUCTURE "channel" -#define COLLADA_CAMERA_STRUCTURE "camera" -#define COLLADA_LIGHT_STRUCTURE "light" -#define COLLADA_OPTICS_STRUCTURE "optics" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_PARAMETER_STRUCTURE "param" - -#define COLLADA_TYPE_PROPERTY "type" -#define COLLADA_ID_PROPERTY "id" -#define COLLADA_SUBID_PROPERTY "sid" -#define COLLADA_NAME_PROPERTY "name" -#define COLLADA_LAYER_PROPERTY "layer" -#define COLLADA_COUNT_PROPERTY "count" -#define COLLADA_STRIDE_PROPERTY "stride" -#define COLLADA_URL_PROPERTY "url" -#define COLLADA_SEMANTIC_PROPERTY "semantic" -#define COLLADA_SOURCE_PROPERTY "source" -#define COLLADA_TARGET_PROPERTY "target" -#define COLLADA_PROFILE_PROPERTY "profile" -#define COLLADA_MATERIAL_PROPERTY "material" -#define COLLADA_METER_PROPERTY "meter" -#define COLLADA_IDX_PROPERTY "idx" -#define COLLADA_SET_PROPERTY "set" -#define COLLADA_OFFSET_PROPERTY "offset" -#define COLLADA_FLOW_PROPERTY "flow" -#define COLLADA_FORMAT_PROPERTY "format" -#define COLLADA_HEIGHT_PROPERTY "height" -#define COLLADA_WIDTH_PROPERTY "width" -#define COLLADA_DEPTH_PROPERTY "depth" -#define COLLADA_REF_PROPERTY "ref" - -#define COLLADA_GEOMETRY_LIBRARY_TYPE "GEOMETRY" -#define COLLADA_CONTROLLER_LIBRARY_TYPE "CONTROLLER" -#define COLLADA_ANIMATION_LIBRARY_TYPE "ANIMATION" -#define COLLADA_MATERIAL_LIBRARY_TYPE "MATERIAL" -#define COLLADA_TEXTURE_LIBRARY_TYPE "TEXTURE" -#define COLLADA_IMAGE_LIBRARY_TYPE "IMAGE" -#define COLLADA_LIGHT_LIBRARY_TYPE "LIGHT" -#define COLLADA_CAMERA_LIBRARY_TYPE "CAMERA" - -#define COLLADA_LAMBERT_SHADER_TYPE "LAMBERT" -#define COLLADA_PHONG_SHADER_TYPE "PHONG" -#define COLLADA_CONSTANT_SHADER_TYPE "CONSTANT" - -#define COLLADA_NAME_TYPE "name" -#define COLLADA_IDREF_TYPE "IDREF" -#define COLLADA_FLOAT_TYPE "float" -#define COLLADA_BOOL_TYPE "bool" -#define COLLADA_INT_TYPE "int" -#define COLLADA_FLOAT3_TYPE "float3" -#define COLLADA_FLOAT4_TYPE "float4" -#define COLLADA_FUNCTION_TYPE "function" -#define COLLADA_MATRIX_TYPE "float4x4" -#define COLLADA_STRING_TYPE "string" - -#define COLLADA_JOINT_NODE_TYPE "JOINT" -#define COLLADA_NODE_NODE_TYPE "NODE" - -#define COLLADA_TEXTURE_SEMANTIC "TEXTURE" -#define COLLADA_IMAGE_SEMANTIC "IMAGE" -#define COLLADA_INPUT_SEMANTIC "INPUT" -#define COLLADA_OUTPUT_SEMANTIC "OUTPUT" -#define COLLADA_IN_TANGENT_SEMANTIC "IN_TANGENT" -#define COLLADA_OUT_TANGENT_SEMANTIC "OUT_TANGENT" -#define COLLADA_INTERPOLATION_SEMANTIC "INTERPOLATION" -#define COLLADA_JOINT_SEMANTIC "JOINT" -#define COLLADA_BIND_POSITION_SEMANTIC "BIND_SHAPE_POSITION" -#define COLLADA_BIND_NORMAL_SEMANTIC "BIND_SHAPE_NORMAL" -#define COLLADA_JOINT_AND_WEIGHT_SEMANTIC "JOINTS_AND_WEIGHTS" -#define COLLADA_BIND_MATRIX_SEMANTIC "INV_BIND_MATRIX" -#define COLLADA_JOINT_PARAMETER "JOINT" -#define COLLADA_WEIGHT_PARAMETER "WEIGHT" -#define COLLADA_MORPH_TARGET_SEMANTIC "MORPH_TARGET" -#define COLLADA_MORPH_WEIGHT_SEMANTIC "MORPH_WEIGHT" - -#define COLLADA_GENERIC_TECHNIQUE "COMMON" - -#define COLLADA_TIME_TARGET "TIME" - -#define COLLADA_VERTEX_INPUT "VERTEX" -#define COLLADA_POSITION_INPUT "POSITION" -#define COLLADA_NORMAL_INPUT "NORMAL" -#define COLLADA_COLOR_INPUT "COLOR" -#define COLLADA_MAPPING_INPUT "UV" -#define COLLADA_TEXCOORD_INPUT "TEXCOORD" -#define COLLADA_TEXTANGENT_INPUT "TEXTANGENT" -#define COLLADA_TEXBINORMAL_INPUT "TEXBINORMAL" - -#define COLLADA_LIGHT_INTENSITY_PARAMETER_14 "intensity" -#define COLLADA_LIGHT_PENUMBRA_ANGLE_PARAMETER_14 "penumbra_angle" -#define COLLADA_LIGHT_DROPOFF_PARAMETER "dropoff" - -#define COLLADA_CAMERA_YFOV_PARAMETER "YFOV" -#define COLLADA_CAMERA_ZNEAR_PARAMETER "ZNEAR" -#define COLLADA_CAMERA_ZFAR_PARAMETER "ZFAR" -#define COLLADA_CAMERA_ORTHO_BOTTOM_PARAMETER "BOTTOM" -#define COLLADA_CAMERA_ORTHO_TOP_PARAMETER "TOP" -#define COLLADA_CAMERA_ORTHO_LEFT_PARAMETER "LEFT" -#define COLLADA_CAMERA_ORTHO_RIGHT_PARAMETER "RIGHT" - -#define COLLADA_TEXTURE_WRAPU_PARAMETER "wrapU" -#define COLLADA_TEXTURE_WRAPV_PARAMETER "wrapV" -#define COLLADA_TEXTURE_MIRRORU_PARAMETER "mirrorU" -#define COLLADA_TEXTURE_MIRRORV_PARAMETER "mirrorV" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER "BLEND_MODE" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER_14 "blend_mode" -#define COLLADA_TEXTURE_REPEATU_PARAMETER "repeatU" -#define COLLADA_TEXTURE_REPEATV_PARAMETER "repeatV" - -#define COLLADA_CONSTANT_FUNCTION "CONSTANT" -#define COLLADA_LINEAR_FUNCTION "LINEAR" -#define COLLADA_QUADRATIC_FUNCTION "QUADRATIC" - -#define COLLADA_INTERPOLATION_TYPE_LINEAR "LINEAR" -#define COLLADA_INTERPOLATION_TYPE_BEZIER "BEZIER" -#define COLLADA_INTERPOLATION_TYPE_CARDINAL "CARDINAL" -#define COLLADA_INTERPOLATION_TYPE_HERMITE "HERMITE" -#define COLLADA_INTERPOLATION_TYPE_BSPLINE "BSPLINE" -#define COLLADA_INTERPOLATION_TYPE_STEP "STEP" - -#define COLLADA_X_UP "X_UP" -#define COLLADA_Y_UP "Y_UP" -#define COLLADA_Z_UP "Z_UP" - -#define COLLADA_IN_FLOW "IN" -#define COLLADA_OUT_FLOW "OUT" -#define COLLADA_INOUT_FLOW "INOUT" - -// Obsolete, but kept here for backward compatibility. -#define COLLADA_RGB_TYPE "ColorRGB" // use float3 instead -#define COLLADA_RGBA_TYPE "ColorRGBA" // use float4 instead -#define COLLADA_RGB_INPUT "COLORRGB" // beta MAX exporter has been known to generate them -#define COLLADA_RGBA_INPUT "COLORRGBA" // beta MAX exporter has been known to generate them - -// Physics extension. Currently in prototype phase. -#define COLLADA_PHYSICS_LIBRARY_TYPE "PHYSICS" -#define COLLADA_SHAPE_STRUCTURE "shape" -#define COLLADA_RIGID_BODY_STRUCTURE "rigidbody" -#define COLLADA_DYNAMIC_STRUCTURE "dynamic" -#define COLLADA_MASS_STRUCTURE "mass" -#define COLLADA_PHYSICS_MATERIAL_STRUCTURE "physics_material" -#define COLLADA_STATIC_FRICTION_ATTRIBUTE "STATIC_FRICTION" -#define COLLADA_DYNAMIC_FRICTION_ATTRIBUTE "DYNAMIC_FRICTION" -#define COLLADA_ELASTICITY_ATTRIBUTE "ELASTICITY" -#define COLLADA_BOX_STRUCTURE "box" -#define COLLADA_SPHERE_STRUCTURE "sphere" -#define COLLADA_CAPSULE_STRUCTURE "capsule" -#define COLLADA_CYLINDER_STRUCTURE "cylinder" -#define COLLADA_ELLIPSOID_STRUCTURE "ellipsoid" -#define COLLADA_SIZE_STRUCTURE "size" -#define COLLADA_RADIUS_STRUCTURE "radius" -#define COLLADA_PHYSICS_ENVIRONMENT_STRUCTURE "physics_environment" -#define COLLADA_ENVIRONMENT_ID "Environment" -#define COLLADA_TIMESTEP_ATTRIBUTE "TIMESTEP" -#define COLLADA_GRAVITY_ATTRIBUTE "gravity" -#define COLLADA_INITIAL_VELOCITY_STRUCTURE "initial_velocity" -#define COLLADA_INITIAL_ANGULAR_VELOCITY_STRUCTURE "initial_angular_velocity" -#define COLLADA_CONVEX_MESH_STRUCTURE "convex_mesh" -#define COLLADA_INERTIA_STRUCTURE "inertia" -#define COLLADA_DENSITY_STRUCTURE "density" -#define COLLADA_CENTER_OF_MASS_STRUCTURE "center_of_mass" -#define COLLADA_DYNAMICS_STRUCTURE "dynamics" -#define COLLADA_RIGID_CONSTRAINT_STRUCTURE "rigid_constraint" -#define COLLADA_BODY_PROPERTY "body" -#define COLLADA_ATTACHMENT_STRUCTURE "attachment" -#define COLLADA_ROT_LIMIT_MIN_STRUCTURE "rot_limit_min" -#define COLLADA_ROT_LIMIT_MAX_STRUCTURE "rot_limit_max" -#define COLLADA_TRANS_LIMIT_MIN_STRUCTURE "trans_limit_min" -#define COLLADA_TRANS_LIMIT_MAX_STRUCTURE "trans_limit_max" -#define COLLADA_ENABLED_STRUCTURE "enabled" -#define COLLADA_INTERPENETRATE_STRUCTURE "interpenetrate" -#define COLLADA_SPRING_STRUCTURE "spring" -#define COLLADA_STIFFNESS_STRUCTURE "stiffness" -#define COLLADA_DAMPING_STRUCTURE "damping" -#define COLLADA_REST_LENGTH_STRUCTURE "rest_length" -#define COLLADA_P0_STRUCTURE "p0" -#define COLLADA_P1_STRUCTURE "p1" -#define COLLADA_TRUE_KEYWORD "TRUE" -#define COLLADA_FALSE_KEYWORD "FALSE" - -#define COLLADA_LINES_STRUCTURE "lines" -#define COLLADA_LINESTRIP_STRUCTURE "linestrips" -#define COLLADA_TRIFANS_STRUCTURE "trifans" -#define COLLADA_TRISTRIPS_STRUCTURE "tristrips" - -// Extensions - -// Feeling Software ColladaMaya extensions -#define COLLADA_MAYA_PROFILE "MAYA" - -#define COLLADA_MAYA_LAYER_ELEMENT "layer" - -// Feeling Software ColladaMax extensions -#define COLLADA_MAX3D_PROFILE "MAX3D" - -#define COLLADA_MAX3D_FRAMERATE_ELEMENT "frame_rate" - -// Feeling Software FCollada extensions -#define COLLADA_FCOLLADA_PROFILE "FCOLLADA" - -#define COLLADA_FCOLLADA_STARTTIME_ELEMENT "start_time" -#define COLLADA_FCOLLADA_ENDTIME_ELEMENT "end_time" -#define COLLADA_FCOLLADA_VISIBILITY_ELEMENT "visibility" - -// XSI COLLADA extensions -#define COLLADA_XSI_PROFILE "XSI" - -#define COLLADA_XSI_VISIBILITY_ELEMENT "SI_Visibility" - -// FBX COLLADA extensions -#define COLLADA_FBX_PROFILE "FBX" - -#define COLLADA_FBX_TARGET_ELEMENT "target" - -// NVidia FXComposer extension -----------------------------------------------// - -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE "NVIDIA_FXCOMPOSER" - -#define COLLADA_NVIDIA_FXCOMPOSER_IMPORT_ELEMENT "import" -#define COLLADA_NVIDIA_FXCOMPOSER_URL_ATTRIBUTE "url" -#define COLLADA_NVIDIA_FXCOMPOSER_COMPILER_OPTIONS_ATTRIBUTE "compiler_options" -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE_ATTRIBUTE "profile" - -#endif /* _FBXSDK_FILEIO_COLLADA_TOKENS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h deleted file mode 100644 index 29b62d8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h +++ /dev/null @@ -1,394 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladautils.h -#ifndef _FBXSDK_FILEIO_COLLADA_UTILS_H_ -#define _FBXSDK_FILEIO_COLLADA_UTILS_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyCollada : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyCollada(); - virtual ~FbxRenamingStrategyCollada(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName = false); -}; - - -#ifndef INT_MAX - #define INT_MAX 0x7FFFFFFF -#endif - -#ifndef CENTIMETERS_TO_INCHES - #define CENTIMETERS_TO_INCHES 2.54f -#endif - -#ifndef RADIANS_TO_DEGREES - #define RADIANS_TO_DEGREES 57.295799f -#endif - -enum DAE_Flow { kCOLLADAFlowIn, kCOLLADAFlowOut, kCOLLADAFlowInOut }; - -const int MATRIX_STRIDE = 16; -const int VECTOR_STRIDE = 3; - -#define COLLADA_ID_PROPERTY_NAME "COLLADA_ID" - -class XmlNodeDeletionPolicy -{ -public: - static inline void DeleteIt(xmlNode ** ptr) - { - if (*ptr != NULL) - { - xmlFreeNode(*ptr); - *ptr = NULL; - } - } -}; - -typedef FbxAutoPtr XmlNodePtr; -typedef FbxMap< FbxString, xmlNode* > SourceElementMapType; -typedef FbxMap< FbxString, xmlNode* > SkinMapType; - -// Some information connecting COLLADA layer string, such as "NORMAL" or "UV", to FBX layer element type. -struct ColladaLayerTraits -{ - ColladaLayerTraits() - : mLayerType(FbxLayerElement::eUnknown), mLayerElementLength(0) {} - - ColladaLayerTraits(FbxLayerElement::EType pType, int pLength) - : mLayerType(pType), mLayerElementLength(pLength) {} - - // Type of FBX element layer - FbxLayerElement::EType mLayerType; - // Count of double of each element in FBX element layer - int mLayerElementLength; - - /** Construct traits according to COLLADA layer string. - * \param pLabel COLLADA layer string. - * \return Return created traits. - */ - static const ColladaLayerTraits GetLayerTraits(const FbxString & pLabel); -}; - -/** Emit error message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pErrorMessage The message to be presented. - */ -void DAE_AddNotificationError(const FbxManager * pSdkManger, const FbxString & pErrorMessage); - -/** Emit warning message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pWarningMessage The message to be presented. - */ -void DAE_AddNotificationWarning(const FbxManager * pSdkManger, const FbxString & pWarningMessage); - -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxStringList& arr); - -// Syntax modification - for COLLADA 1.4 -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& accessorParams, FbxArray& arr, bool isCommonProfile=true); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& arr, const char* type, bool isCommonProfile=true); - - -void DAE_ExportSourceArray(xmlNode* sourceNode, const char* id, FbxArray& arr); -void DAE_ExportSourceArray14(xmlNode* sourceNode, const char* id, FbxArray& arr); - -xmlNode* DAE_ExportAccessor(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); -xmlNode* DAE_ExportAccessor14(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); - -void DAE_AddXYZAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddFlow(xmlNode* node, DAE_Flow flow); -void DAE_AddXYZAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); - -// AddParameter functions for COLLADA 1.3. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value, DAE_Flow flow); - -// Overload functions without DAE_Flow, for COLLADA 1.4. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxDouble3& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value); -xmlNode* DAE_AddTechnique(xmlNode* parentXmlNode, const char* technique); -void DAE_AddInput(xmlNode* parentXmlNode, const char* semantic, const char* source, int idx = -1); -void DAE_AddInput14(xmlNode* parentXmlNode, const char* semantic, const char* source, int offset = -1, int set=-1); - -FbxString matrixToString(const FbxAMatrix& mx); - -typedef FbxArray CNodeList; - -/** Find children elements whose type is included in a list of type. - * \param pParentElement The parent element. - * \param pTypes The list of types. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const FbxSet& pTypes, CNodeList& pChildrenElements); - -/** Find children elements of a specific type. - * \param pParentElement The parent element. - * \param pType The type. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const char * pType, CNodeList& pChildrenElements); - -xmlNode* getSourceAccessor(xmlNode* sourceNode); -xmlNode* getTechniqueNode(xmlNode* parent, const char * profile); - -// Conversions -inline double inchesToCentimeters(double val) { return FbxFloor(val / CENTIMETERS_TO_INCHES * 100000) / 100000; } -inline double centimetersToInches(double val) { return FbxFloor(val * CENTIMETERS_TO_INCHES * 100000) / 100000; } - -inline double degreesToRadians(double val) { return FbxFloor(val / RADIANS_TO_DEGREES * 100000) / 100000; } -inline double radiansToDegrees(double val) { return FbxFloor(val * RADIANS_TO_DEGREES * 100000) / 100000; } - -/** Find a child element with a given attribute value. - * \param pParentElement The parent element. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \param pDefaultAttributeValue The default value of the attribute used when the attribute is not found explicitly. - * \return Return NULL if no child element has the given attribute value. - */ -xmlNode* DAE_FindChildElementByAttribute(xmlNode* pParentElement, const char * pAttributeName, - const char * pAttributeValue, const char * pDefaultAttributeValue = ""); - -/** Find a child element with a given tag. - * \param pParentElement The parent element. - * \param pTag The value of the tag. - * \param pFindFrom Find from the next child after pFindFrom if pFindFrom is not NULL. - * \return Return NULL if no child element has the given tag. - */ -xmlNode* DAE_FindChildElementByTag(xmlNode* pParentElement, const char * pTag, xmlNode* pFindFrom = NULL); - -/** Get the content of a XML element. - * \param pElement The element whose content is returned. - * \param pData The returned data. - */ -template -void DAE_GetElementContent(xmlNode * pElement, TYPE & pData) -{ - if (pElement != NULL) - { - xmlChar* lContent = xmlNodeGetContent(pElement); - if (lContent) - { - FromString(&pData, (const char *)lContent); - xmlFree(lContent); - } - } -} - -/** Check whether this node is compatible to FBX transform structure. - * \param pNodeElement The specific node element. - * \return Return true if it is compatible. - */ -bool DAE_CheckCompatibility(xmlNode * pNodeElement); - -/** Get the tag of the specific element. - * \param pElement The specific element. - * \param pTag Return the tag of the element. - */ -void DAE_GetElementTag(xmlNode * pElement, FbxString & pTag); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \return The value of the attribute in the form of a string. If the attribute is not available, an empty string is returned. - */ -const FbxString DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \param pData The returned data. - * \return Return \c true on success and \c false if no attribute has the given name. - */ -template -bool DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName, TYPE & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue = xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - FromString(&pData, (const char *)lPropertyValue); - xmlFree(lPropertyValue); - return true; - } - return false; -} - -// Special instantiation for string; -// Omit the whitespaces, just return the whole string -template <> -inline bool DAE_GetElementAttributeValue(xmlNode * pElement, - const char * pAttributeName, - FbxString & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue =xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - pData = (const char *)lPropertyValue; - xmlFree(lPropertyValue); - return true; - } - return false; -} - -/** Compare the value of specific attribute of specific element with given value. - * \param pElement The specific element. - * \param pAttributeName The name of the specific attribute. - * \param pValue The value to compare with. - * \return Return true if values equal. - */ -bool DAE_CompareAttributeValue(xmlNode * pElement, - const char * pAttributeName, - const char * pValue); - -/** Get the ID of another element from the url attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \param pExternalRef The external reference part of the url (before the #) - * \return The ID of another element if success, or an empty string if no url attributes are found. - */ -const FbxString DAE_GetIDFromUrlAttribute(xmlNode * pElement, FbxString& pExternalRef); - -/** Get the ID of another element from the source attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no source attributes are found. - */ -const FbxString DAE_GetIDFromSourceAttribute(xmlNode * pElement); - -/** Get the ID of another element from the target attribute of the given element. - * Note that in target attribute, the URI identifier may or may not preceded with the pound sign. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no target attributes are found. - */ -const FbxString DAE_GetIDFromTargetAttribute(xmlNode * pElement); - -/** Set the name of the object with a given name. If the name is empty, use the ID. - * \param pObject The object whose name is to be set. - * \param pName The name string. - * \param pID The ID string. - */ -void DAE_SetName(FbxObject * pObject, const FbxString & pName, const FbxString & pID); - -/** Get the COLLADA source element with a semantic meaning and a consumer element; - * The COLLADA input element declares the input connections to a data source that a consumer requires. - * A data source is a container of raw data that lacks semantic meaning so that the data can be reused within the - * document. To use the data, a consumer declares a connection to it with the desired semantic information. - * \param pConsumerElement A consumer element, like sampler element in animation system or joints element in controller system. - * \param pSemantic A semantic meaning, like "INPUT", "OUTPUT" or "INTERPOLATION" in animation system. - * \param pSourceElements The container of raw data. - * \return Return \c NULL is failed. - */ -xmlNode * DAE_GetSourceWithSemantic(xmlNode * pConsumerElement, const char * pSemantic, - const SourceElementMapType & pSourceElements); - -/** Add a child element with specific content. - * \param pParentElement The parent element. - * \param pTag The tag string of the new child element. - * \param pContent The content of the child element. - * \return The created child element. - */ -template -xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag, - const T & pContent) -{ - const FbxString lRepr = ToString(pContent); - return xmlNewChild(pParentElement, NULL, (xmlChar *)pTag, - (xmlChar *)lRepr.Buffer()); -} - -// Create a child element with empty content. -inline xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag) -{ - return DAE_AddChildElement(pParentElement, pTag, FbxString()); -} - -// Create a new element with empty content. -inline xmlNode * DAE_NewElement(const char * pTag) -{ - return xmlNewNode(NULL, reinterpret_cast(const_cast(pTag))); -} - -/** Add an attribute for a element. - * \param pElement The element where the attribute is added. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \return The created attribute. - */ -template -xmlAttr * DAE_AddAttribute(xmlNode * pElement, const FbxString & pAttributeName, - const T & pAttributeValue) -{ - const FbxString lRepr = ToString(pAttributeValue); - return xmlNewProp(pElement, (xmlChar *)pAttributeName.Buffer(), - (xmlChar *)lRepr.Buffer()); -} - -/** Import a COLLADA unit element into a FBX system unit. - * \param pUnitElement The COLLADA unit element. - * \return The created FBX system unit. - */ -const FbxSystemUnit DAE_ImportUnit(xmlNode * pUnitElement); - -/** If the specific node has animation on its local translation, increase every key by the offset. - * \param pNode The specific node. - * \param pOffset The specific offset value. - */ -void IncreaseLclTranslationAnimation(FbxNode * pNode, FbxDouble3 & pOffset); - -/** Search the elements with given tag, push the found results to the end of the given array. - * \param pBaseElement Search from this element. - * \param pTag The given tag. - * \param pResult The array to return the found results. - */ -void RecursiveSearchElement(xmlNode * pBaseElement, const char * pTag, FbxArray & pResult); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_UTILS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h deleted file mode 100644 index d0a43b2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h +++ /dev/null @@ -1,557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreadercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_READER_H_ -#define _FBXSDK_FILEIO_COLLADA_READER_H_ - -#include - -#include -#include - -#include - - -/** Class to read a Collada file and import it to a FBX scene. - * - * Some terms about COLLADA (from the spec of the COLLADA). - * - * Element: An XML document consists primarily of elements. An element is a block of information that is - * bounded by tags at the beginning and end of the block. Elements can be nested, producing a hierarchical - * data set. - * - * Tag: Each XML element begins with a start tag and ends with an end tag. - * - * Attribute: An XML element can have zero or more attributes. Attributes are given within the start tag and - * follow the tag name. Each attribute is a name-value pair. The value portion of an attribute is always - * surrounded by quotation marks (" "). Attributes provide semantic information about the element on which - * they are bound. - * For example: - * \code - * - * \endcode - * - * URI Addressing: Refers to the id attribute of an element. Used in url, source or target attributes. - * In a url, source or target attribute, the URI fragment identifier is preceded with the pound sign ("#"). - * - * Markup and Content: The characters which make up an XML document are divided into markup and content. - * Markup and content may be distinguished by the application of simple syntactic rules. - * All strings which constitute markup either begin with the character "<" and end with a ">", - * or begin with the character "&" and end with a ";". - * Strings of characters which are not markup are content. - * \nosubgrouping - */ -class FbxReaderCollada : public FbxReader -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReaderCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxReaderCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is opened. - */ - virtual bool FileOpen(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Read Functions - */ - //@{ - - /** Get Collada import options settings. - * \param pParseFileAsNeeded whether parse file as needed, the default value is true. - * \return true - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true){ return true; } - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Read from Collada file and import it to the FBX document, according to the given options settings. - * \param pDocument FBX Document to import. - * \return true on success, false otherwise. - */ - virtual bool Read(FbxDocument* pDocument); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Import Functions - */ - //@{ - - /** Import Collada XML nodes tree to FBX scene. - * \param pScene The FBX scene object. - * \param pXmlNode The XML Node to import, it should be the root of Collada nodes tree. - * \return true on success, false otherwise. - */ - bool ReadCollada(FbxScene &pScene, xmlNode* pXmlNode); - - /** Import a Collada visual_scene element to the given FBX scene. - * \param pXmlNode The COLLADA visual_scene element. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualScene(xmlNode* pXmlNode, FbxScene * pScene); - - /** Import a Collada visual_scene MAX3D extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAX3D. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMax3DExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene FCOLLADA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneFCOLLADAExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene MAYA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAYA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMayaExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import Collada asset element. - * \param pXmlNode The XML Node, asset is read from pXmlNode and its children. - * \param pGlobalSettings The FBX global settings. - * \param pSceneInfo The FBX scene information object. - * \return Return true if asset is imported successfully. - * \remarks Imported asset has following contents: - * Axis System, system Unit, author, comments, title, subject, keywords, revision, etc. - */ - bool ImportAsset(xmlNode* pXmlNode, FbxGlobalSettings & pGlobalSettings, FbxDocumentInfo &pSceneInfo); - - /** Import a COLLADA node element. - * If the COLLADA node element contains only one node attribute (node attribute means instance_geometry, - * instance_camera, instance_light and instance_controller), node attribute will be attached directly under the node; - * If not, one child node will be created for each node attribute except the first one. - * \param pXmlNode The COLLADA node element. - * \return The created node and return \c NULL if failed. - */ - FbxNode * ImportNode(xmlNode* pXmlNode); - - /** Import a COLLADA node FCOLLADA extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFCOLLADAExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node XSI extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile XSI. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeXSIExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node FBX extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FBX. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFBXExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA geometry element. - * \param pGeometryID The COLLADA geometry ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \return The created geometry object and return \c NULL if failed. - * \remarks Except mesh, other types of geometry are not supported now. - */ - FbxGeometry * ImportGeometry(const FbxString & pGeometryID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA skin element. - * \param pSkinElement The COLLADA skin element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportSkin(xmlNode* pSkinElement); - - /** Import a COLLADA morph element or morphs recursively. - * \param pXmlNode The COLLADA morph element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportMorph(xmlNode * pMorphElement, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA controller element. - * \param pXmlNode The COLLADA controller ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportController(const FbxString & pControllerID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA camera element. - * \param pXmlNode The COLLADA camera element. - * \return The created camera object and return \c NULL if failed. - * \remarks Camera parameters will also be imported, such as FOV, aspect ratio, etc. - */ - FbxCamera * ImportCamera(xmlNode* pXmlNode); - - /** Import a COLLADA light element. - * \param pXmlNode The COLLADA light element. - * \return The created light object and return \c NULL if failed. - * Following types of light are supported now: ambient light, directional light, point light, and spot light. - */ - FbxLight * ImportLight(xmlNode* pXmlNode); - - /** Import a COLLADA material element. - * \param pXmlNode The COLLADA material element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportMaterial(xmlNode* pXmlNode); - - /** Import a COLLADA effect element. - * \param pEffectElement The COLLADA effect element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffect(xmlNode* pEffectElement); - - /** Import a COLLADA effect NVIDIA_FXCOMPOSER extension. - * \param pXmlNode The COLLADA technique element with profile - * NVIDIA_FXCOMPOSER. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffectNVidiaExtension(xmlNode * pEffectElement); - - /** Import a COLLADA texture element. - * \param pXmlNode The COLLADA texture element. - * \return The created texture object and return \c NULL if failed. - * \remarks Following types of texture are supported now: ambient, diffuse, emission, reflective, specular, transparent. - */ - FbxFileTexture * ImportTexture(xmlNode* pXmlNode); - - /** Import a COLLADA image element. - * \param pXmlNode The COLLADA image element. - * \return The created texture object and return \c NULL if failed. - */ - FbxFileTexture * ImportImage(xmlNode* pXmlNode); - - /** Import a COLLADA mesh element. - * If this mesh element contains polygons, polygon list or triangles elements, a FBX mesh will be created. - * If it contains lines or line strips elements, a FBX line will be created. - * \param pXmlNode The COLLADA mesh element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \param pObjects List of all the created objects. If this mesh contains lines or line strips as well as - * the polymesh, the array will be filled with: [mesh, line, line strip] - * \return The created geometry object and return \c NULL if failed. - */ - FbxGeometry * ImportMesh(xmlNode* pXmlNode, const FbxDynamicArray & pMaterialSequence, FbxArray& pObjects); - - /** Import a COLLADA vertices element. - * \param pVerticesElement The COLLADA vertices element. - * \param pGeometry The FBX geometry object to store the vertices. - * \return true on success, false otherwise. - * \remarks Besides vertex, the vertex colors and normals are also imported. - */ - bool ImportVertices(xmlNode* pVerticesElement, FbxGeometry * pGeometry); - - /** Import polygons of Collada mesh node to FBX mesh node. - * \param pXmlNode Pointer to XML mesh Node. - * \param pMesh The FBX mesh object. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the mesh. - * \return true on success, false otherwise. - * \remarks Vertex colors, normals, UVs, textures and materials which related to polygons, are also imported. - */ - bool ImportPolygons(xmlNode* pXmlNode, FbxMesh& pMesh, const FbxDynamicArray & pMaterialSequence); - - /** Import the transformation of Collada node to FBX node. - * \param pXmlNode Pointer to XML Node. - * \param pNode The FBX node. - * \return true on success, false otherwise. - * \remarks Transformation will cover matrix, translation, rotation, scale, skew, perspective, etc. - */ - bool ImportTransforms(xmlNode* pXmlNode, FbxNode* pNode); - - /** Import a COLLADA rotation element. - * \param pXmlNode The COLLADA rotation element. - * \param pRotationVector Vector4 value to return the rotation vector. - * \return Return the rotation axis index. - */ - int ImportRotationElement(xmlNode* pXmlNode, FbxVector4& pRotationVector); - - /** Extrapolate rotation order by the given int list. - * \param pNode The node whose rotation order is updated. - * \param pRotationOrder The int list representing the rotation order. - */ - void SetRotationOrder(FbxNode * pNode, const FbxArray & pRotationOrder); - - /** Import Collada look at node, and computed camera position, interest, up vector, etc. - * \param pXmlNode Pointer to XML look at Node. - * \param lCameraPosition Vector4 value to return camera position. - * \param lInterestPosition Vector4 value to return camera interest position. - * \param lUpVector Vector4 value to return camera up vector. - * \param lCameraTransformMatrix XMatrix value to return camera transform matrix. - * \return true on success, false otherwise. - * \remarks Computed camera parameters are saved in lCameraPosition, lInterestPosition, lUpVector, lCameraTransformMatrix. - */ - bool ImportLookAt(xmlNode* pXmlNode, FbxVector4& lCameraPosition, - FbxVector4& lInterestPosition, FbxVector4& lUpVector, - FbxAMatrix& lCameraTransformMatrix); - - //@} - - - /** - * \name Miscellaneous Functions - */ - //@{ - - /** Return false if we do not want to import a node with the given ID. - * \param lId The node ID. - * \return true for importable, false for in-importable. - * \remarks Do not import camera nodes with IDs (perspective, top, bottom, - * left, right, side, front or back), since they are global cameras already created in FBX. - */ - bool IsNodeExportable(FbxString lId); - - /** Check if the Collada version is 1.4.*. - * \param pVersionString The string representing the COLLADA version, like "1.4.1". - * \return \c true if the Collada version is 1.4.* or \c false otherwise. - */ - bool CheckColladaVersion(const FbxString & pVersionString); - - //@} - - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - //@} - - /** Import the whole scene from the root element of a COLLADA file. - * This is the main entry of COLLADA reader. - * \param pColladaNode The root element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportScene(xmlNode * pColladaNode); - - /** Preprocess the COLLADA scene. - * \param pColladaElement The root element of COLLADA scene. - */ - void Preprocess(xmlNode * pColladaElement); - - /** Build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - */ - void BuildUpLibraryMap(); - - /** Recursively build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - * /param pElement The parent element which may contain target elements. - * /param pElementTag The tag of target elements. - */ - void BuildUpLibraryMap(xmlNode * pElement, const FbxString & pElementTag); - - /** Retrieve the material map from the bind_material element under an instance_geometry or instance_controller. - * And connected the created materials to the node. - * \param pNode The node to which the materials connect. - * \param pElement The COLLADA instance_goemetry or instance_controller element. - * \param pMaterialSequence The ordered material symbols which is used to create geometries. - * \return Return \c true on success and \c false otherwise. - */ - bool ConnectMaterialsToNode(FbxNode * pNode, xmlNode * pElement, FbxDynamicArray & pMaterialSequence); - - /** Import COLLADA transparent and transparency attributes in a COLLADA effect element. - * \param pElement A COLLADA Lambert, Phong, constant or Blinn element. - * \param pSurfaceMaterial A FBX surface material. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportTransparent(xmlNode * pElement, FbxSurfaceLambert * pSurfaceMaterial); - - // Some traits with a typed element. - struct LibraryTypeTraits - { - FbxString library_tag; - FbxString element_tag; - }; - - /** Get a typed element from the library element with a given ID. - * \param pTypeTraits The traits of type. - * \param pID The ID of the element. - * \return The FBX object. - */ - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, const FbxString & pID); - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, xmlNode * pElement); - - /** Import the transform animation of a given node. - * \param pNode The node whose transform to be animated. - * \pAnimationChannelID The ID of animation element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportMatrixAnimation(FbxNode * pNode, const FbxString & pAnimationChannelID); - - /** Import the animation of a given attribute. - * \param pProperty The property to be animated. - * \param pAnimationChannelID The ID of animation element. - * \param pChannelName The channel name if the property has multiple channels. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportPropertyAnimation(FbxProperty & pProperty, const FbxString & pAnimationChannelID, const char * pChannelName = NULL); - - /** Get the animation layer to which the specific animation curve belongs. - * \param pAnimationID The ID of the animation curve. - * \return The animation layer. - */ - FbxAnimLayer * GetAnimLayer(const FbxString & pAnimationID); - - /** Import local unit conversion. - * \param pElement The specific element. - * \return Return the local unit conversion. - */ - double GetLocalUnitConversion(xmlNode * pElement); - - /** Set the value of the property. - * \param pPropertyElement The corresponding element. - * \param pProperty The specific property. - */ - void SetProperty(xmlNode* pPropertyElement, FbxProperty & pProperty); - - /** Create a property with given name and set the value. - * \param pObject The object as the parent of the property. - * \param pPropertyName The name of the property. - * \param pPropertyValueElement The element containing the value. - */ - void ImportPropertyValue(FbxObject * pObject, const char * pPropertyName, - xmlNode * pPropertyValueElement); - - FbxFile* mFileObject; - FbxString mFileName; - - // XML lib stuff - xmlDocPtr mXmlDoc; - - FbxAnimLayer* mAnimLayer; - FbxScene* mScene; - - // Save the global settings and document info in pre-reading - FbxGlobalSettings * mGlobalSettings; - FbxDocumentInfo * mDocumentInfo; - FbxArray mTakeInfo; - - xmlNode * mColladaElement; - - struct ColladaElementData - { - explicit ColladaElementData(xmlNode * pElement = NULL) - : mColladaElement(pElement), mFBXObject(NULL) {} - xmlNode * mColladaElement; - FbxObject * mFBXObject; - FbxArray mFBXObjects; - }; - typedef FbxMap ColladaElementMapType; - ColladaElementMapType mColladaElements; - - LibraryTypeTraits mEffectTypeTraits; - LibraryTypeTraits mMaterialTypeTraits; - LibraryTypeTraits mImageTypeTraits; - LibraryTypeTraits mGeometryTypeTraits; - LibraryTypeTraits mControllerTypeTraits; - LibraryTypeTraits mLightTypeTraits; - LibraryTypeTraits mCameraTypeTraits; - LibraryTypeTraits mNodeTypeTraits; - LibraryTypeTraits mAnimationTypeTraits; - - typedef FbxMap > AnimationMapType; - AnimationMapType mAnimationElements; - - SourceElementMapType mSourceElements; - - struct AnimationClipData - { - AnimationClipData(const FbxString & pID) : mID(pID), mAnimLayer(NULL) {} - AnimationClipData(const AnimationClipData& pOther){ *this = pOther; } - AnimationClipData& operator=(const AnimationClipData& pOther){ mID = pOther.mID; mAnimationElementIDs = pOther.mAnimationElementIDs; mAnimLayer = pOther.mAnimLayer; return *this; } - - FbxString mID; // ID of animation clip - FbxSet mAnimationElementIDs; // IDs of animation belong to this animation clip - FbxAnimLayer * mAnimLayer; // The corresponding animation layer - }; - FbxDynamicArray mAnimationClipData; - - // Map from skin ID to skin element. - SkinMapType mSkinElements; - - // There are two distinct namespaces for node ID & SID mapping. - // One with ID and the other with SID. - typedef FbxMap NodeMapType; - NodeMapType mIDNamespaceNodes; - NodeMapType mSIDNamespaceNodes; - - // Record the nodes which are to connect to its target node. - // Save the ID of the target node if a node has its target - typedef FbxMap TargetIDMapType; - TargetIDMapType mTargetIDs; - - FbxColladaNamespace mNamespace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_READER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h deleted file mode 100644 index 1674bd5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h +++ /dev/null @@ -1,570 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwritercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_WRITER_H_ -#define _FBXSDK_FILEIO_COLLADA_WRITER_H_ - -#include - -#include - -#include - -/** \brief Class to export FBX scene into a Collada file. -* \nosubgrouping -*/ -class FbxWriterCollada : public FbxWriter -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriterCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxWriterCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Create and open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is created and opened. - */ - virtual bool FileCreate(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Write Functions - */ - //@{ - - /** Get Collada export options settings. - */ - virtual void GetWriteOptions(){} - - /** Export the FBX document to Collada file, according to the given options settings. - * \param pDocument FBX Document to export. - * \return true on success, false otherwise. - */ - virtual bool Write(FbxDocument* pDocument); - - /** Process FBX scene before exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - * \remarks This function is processing name clash, special transformation conversion etc. - */ - virtual bool PreprocessScene(FbxScene &pScene); - - /** Process FBX scene after exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - */ - virtual bool PostprocessScene(FbxScene &pScene); - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Export Functions - */ - //@{ - - /** Export FBX scene info to Collada asset. - * \param pXmlNode the XML Node to export asset, asset nodes will be added as children to this XML node. - * \param pSceneInfo Pointer to the FBX scene information object. - * \return Return pointer to XML asset node. - * \remarks Asset here contains user-defined summary data, such as: - * contributor, author, authoring tool, created time, Axis System, etc. - */ - xmlNode* ExportAsset(xmlNode* pXmlNode, FbxDocumentInfo* pSceneInfo); - - /** Export FBX scene. - * \param pScene Pointer to the FBX scene object. - * \return The pointer to XML scene element. - */ - xmlNode * ExportScene(FbxScene* pScene); - - /** Export Libraries to the Collada document. - * \param pXmlNode Pointer to XML Node, it should be the asset node. - * \return Return true if all libraries are exported successfully. - * \remarks After the libraries are created, call this function to add libraries to the Collada document. - * Libraries are added as the siblings just after the given pXmlNode. - */ - bool ExportLibraries(xmlNode* pXmlNode); - - /** Export the given FBX node and its hierarchy to Collada XML nodes. - * \param pXmlNode Pointer to XML Node, created XML nodes hierarchy will be added as children to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode, - * this method is called recursively. - */ - xmlNode* ExportNodeRecursive(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export a Collada visual_scene MAX3D extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneMAX3DExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export a Collada visual_scene FCOLLADA extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneFCOLLADAExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export the given FBX node and its node attributes to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to the created XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNode(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export the given FBX node's default transformation. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if transformation is exported successfully. - * \remarks FBX node transformation info is exported to properties of pXmlNode and its children, - * according to the Collada transformation structures. - */ - bool ExportTransform(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export FBX node attributes, create different libraries according to different node attribute type. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if FBX node attributes is exported successfully, false otherwise. - * \remarks According to different FBX node attribute type, different libraries will be created, such as: - * light, camera, geometry. See more details in CreateMeshLibrary(FbxNode* pNode), CreateCameraLibrary(FbxNode* pNode), CreateLightLibrary(FbxNode* pNode). - */ - bool ExportNodeAttribute(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Create geometry library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh, or FbxNodeAttribute::eNurbs, or FbxNodeAttribute::ePatch. - * \return Return pointer to XML mesh library node. - * \remarks The returned XML node will be added to the geometry library, - * the geometry library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateMeshLibrary(const FbxNode* pNode); - - /** Create camera library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML camera library node. - * \remarks The returned XML node will be added to the camera library, - * the camera library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateCameraLibrary(const FbxNode* pNode); - - /** Create light library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML light library node. - * \remarks The returned XML node will be added to the light library, - * the light library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateLightLibrary(const FbxNode* pNode); - - /** Export the given FBX mesh node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh. - * \return Return pointer to XML mesh node. - * \remarks Vertex, polygons of the mesh will be exported. - * Textures, materials, controllers, and shapes which linked to the mesh will also be exported. - */ - xmlNode* ExportMesh(const FbxNode* pNode); - - /** Export the given shape's geometry to Collada XML node. - * \param pMeshShape, Pointer to FBX mesh, corresponding to shape. - * \param pShapeId, a string to identify shape from internal shape meshes list. - * \return Return pointer to XML shape geometry node. - * \remarks The geometry of shape will be exported, materials of shape will not be exported. - */ - xmlNode* ExportShapeGeometry(FbxMesh* pMeshShape, FbxString pShapeId); - - /** Export the given mesh's vertex position to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, position info of all the vertices of this mesh will be exported. - * \param pMeshName Name of the XML node to export, usually it's the name of FBX mesh node. - * \param pInGeometry True if vertices are inside an ordinary geometry, false if vertices are in a binded geometry. - * \param pExportControlPoints True if pMesh is an ordinary geometry, false if pMesh is a binded geometry. - * \return Return pointer to XML vertex position node, the returned XML node will be added as child to the given pXmlNode. - * \remarks In an ordinary geometry, pExportControlPoints should be true, export the position of the control points; - * in a binded geometry, pExportControlPoints should be false, export the position of the transformed control points. - */ - //Note why internally set pExportControlPoints to true? - xmlNode* ExportVertexPositions(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pMeshName, bool pInGeometry, bool pExportControlPoints); - - /** Export all layer elements of the given mesh to Collada XML node. - * \param pXmlMesh Pointer to XML Node, created XML layer elements nodes will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, all layer elements of this mesh node will be exported. - * \param pName String which used to construct the names of XML layer elements nodes. - * \return Return the modified pXmlMesh. - * \remarks Layer elements including Normals, UVs, Vertex Colors are covered, - * polygon groups and other undefined layer elements are NOT supported. - */ - xmlNode* ExportLayerElements(xmlNode* pXmlMesh, FbxMesh* pMesh, FbxString pName); - - /** Export Normals of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML Normals node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, normals layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML normals nodes. - * \param pExt Extension string which used to construct the names of XML normals nodes. - * \param pLayerIndex Specify an index of layers to export, normals of other layers will NOT be exported. - * \return Return pointer to XML Normals node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNormals(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, FbxString pExt, int pLayerIndex); - - /** Export UVs of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML UVs node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, UVs layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML UVs nodes. - * \param pLayerIndex Specify an index of layers to export, UVs of other layers will NOT be exported. - * \return Return pointer to XML UVs node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportUVs(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export VertexColors of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML VertexColors node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, VertexColors layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML VertexColors nodes. - * \param pLayerIndex Specify an index of layers to export, VertexColors of other layers will NOT be exported. - * \return Return pointer to XML VertexColors node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportVertexColors(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export the given mesh's vertex to Collada XML node. - * \param pXmlNode Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pName Name of the XML node to export, usually it's the name of FBX mesh node. - * \return Return pointer to the created XML vertex node. - */ - xmlNode* ExportVertices(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName); - - /** Export the given mesh's polygons to Collada XML node. - * \param pMeshElement Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pMaterialName Specify the name of materials property. - * \param pMaterialIndexInNode Specify the material index in the FBXNode (will be ignored if there is only 1 material in the node) - * \param pName String which used to construct the names of created XML nodes. - * \param pShape true for shape node, false for general node, the default value is false; - * don't write out the materials if pShape is true. - * \return Return pointer to the created XML Polygons node. - */ - xmlNode* ExportPolygons(xmlNode* pMeshElement, FbxMesh* pMesh, FbxString pMaterialName, int pMaterialIndexInNode, FbxString pName, bool pShape = false); - - /** Export all the materials used by the given mesh. - * \param pMesh FBX mesh to export. - * \param pNbMat materials count of pMesh. - * \return true on success, false otherwise. - */ - bool ExportMeshMaterials(FbxMesh *pMesh, int pNbMat); - - /** Export the given material to the Material library. - * \param pMaterial Specify the surface material to export. - * \return Return pointer to the corresponding XML material node. - * \remarks If the given material is already in the materials library, return the XML node; - * otherwise, create and add XML material node to the Material library. - */ - xmlNode* ExportMaterial(FbxSurfaceMaterial *pMaterial); - - /** Export the given material to the Effect library. - * \param pMaterial Specify the surface material to export. - * \param pEffectId Specify the effect ID to export. - * \return Return pointer to the corresponding XML effect node. - * \remarks Material is an instance of an effect. - * If the given material is already in the Effect library, return the XML node; - * otherwise, create and add XML effect node to the Effect library. - * Collada Effect support: Ambient Color, Diffuse Color, Emissive Color, Specular Color, Shiness, Reflective / Reflectivity, - * Opacity / Transparency. - */ - xmlNode* ExportEffect(FbxSurfaceMaterial *pMaterial, FbxString pEffectId); - - /** Add the given texture as input to the given XML material node. - * \param pXmlMaterial Pointer to XML material node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \param pLayerElementType Specify the layer element type. - * \return true on success, false otherwise. - */ - //Note why return true when failed and popped waring? - bool AddMaterialTextureInput(xmlNode *pXmlMaterial, FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex, int pLayerElementType); - - /** Export the given texture to Collada XML node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \return Return pointer to the created XML texture node. - */ - xmlNode* ExportTexture(FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex); - - /** Export all the textures used by the given mesh. - * \param pMesh FBX mesh to export. - * \return true on success, false otherwise. - * \remarks The materials will also be Exported if needed. - */ - bool ExportMeshTextures(FbxMesh *pMesh); - - /** Export the given FBX camera node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML node. - * \remarks Camera parameters and properties will be exported. - */ - xmlNode* ExportCamera(const FbxNode* pNode); - - /** Export the given FBX light node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML node. - * \remarks Light parameters and properties will be exported. - */ - xmlNode* ExportLight(const FbxNode* pNode); - - /** Export the global ambient to Collada XML light node. - */ - void ExportSceneAmbient(xmlNode * pVisualSceneElement); - - /** Export controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should be a binded skin. - * \return true on success. - * \remarks A morph controller will be exported by ExportControllerShape(). - */ - bool ExportController(FbxMesh *pMesh); - - /** Export morph controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should has more than one shape. - * \return true on success. - * \remarks Morph controller is also called shape deformer. - */ - bool ExportControllerShape(FbxMesh *pMesh); - - /** . - * \param . - * \param . - * \return . - * \remarks . - */ - //Note : empty method now - xmlNode* ExportJointWeights(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pExt); - - /** Update mesh library with the shapes found, and add shapes as nodes in the scene. - * \param pXmlNode Pointer to XML Node, created shape node will be added as child to this XML node. - * \return true on success, false otherwise. - * \remarks This method will create a geometry node in geometry library for every shape as needed, - * XML shape nodes will also be created and added to scene. - */ - bool UpdateMeshLibraryWithShapes(xmlNode* pXmlNode); - - /** Export animations of the given node and its children, if they are animated. - * \param pNode FBX node to export, it should be animated. - * \return true on success, false otherwise. - * \remarks This method is called recursively, the animations of all the children of pXmlNode will also be exported. - */ - bool ExportAnimation(FbxNode* pNode); - - /** Export all the animation curves of the given node to Collada XML node. - * \param pNode FBX node to export, it should be animated. - * \param pAnimationNode Pointer to XML Node, created sub-animation nodes will be added as children to this XML node. - * \return true on success. - */ - bool ExportAnimationCurves(FbxNode* pNode, xmlNode* pAnimationNode); - - /** Export the texture into library_images. - * \param pTexture The texture whose file name to be exported. - * \return Return the ID of the create image element. - */ - const FbxString ExportImage(FbxFileTexture * pTexture); - - /** Export the given animation curve (FCurve) to Collada XML node. - * \param pAnimationNode Pointer to XML Node, created sub-animation node will be added as child to this XML node. - * \param pCurve Animation Curve to export. - * \param pChannelName The name of animation channel. - * \param pSubChannelName The name of animation sub-channel. - * \param pExportShape Shape animation flag, default value is false; When it's true, Id nomenclature is a bit different. - * \param pExportIntensity Intensity flag, default value is false; When it's true, FCurve values are divided by 100. - * \param pExportLib Library flag, default value is false; When it's true, Id nomenclature is a bit different. - * \return true on success. - * \remarks When pExportShape or pExportIntensity is true, FCurve values are divided by 100. - */ - bool ExportCurve(xmlNode* pAnimationNode, FbxAnimCurve* pCurve, - const char* pChannelName, const char* pSubChannelName, - bool pExportShape=false, bool pExportIntensity=false, bool pExportLib=false); - - /** Check whether the first three elements of the given vector are both zero. - * \param pV the FBX vector4 to check. - * \return Return true if one of the first three elements of pV is not zero, return false if all of the three elements are both zero. - * \remarks If the absolute value of element is less than a tolerance, the element will be considered as zero. - */ - bool NotZero(FbxVector4 pV); - - /** Check whether the first three elements of the given vector are both equal to the given value. - * \param pV the FBX vector4 to check. - * \param pValue the value to check. - * \return Return true if one of the first three elements of pV is NOT equal to pValue, return false if all of the three elements are both equal to pValue. - */ - bool NotValue(FbxVector4 pV, double pValue); - - /** Check whether the given value is zero. - * \param pD the value to check. - * \return Return true if pD is NOT zero, return false if pD is zero. - * \remarks If the absolute value of pD is less than a tolerance, pD is considered as zero. - */ - bool NotZero(double pD); - - /** Check whether the given node's translation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Translation X/Y/Z is animated, return false if both of Translation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsTranslationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Rotation X/Y/Z is animated, return false if both of Rotation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation of specified axis is animated. - * \param pNode the FBX node to check. - * \param pAxis Specify index of rotation axis, 0 for Rotation X, 1 for Rotation Y, 2 for Rotation Z. - * \return Return true if the rotation of specified axis is animated, return false if it is not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode, int pAxis); - - /** Check whether the given node's scale is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Scale X/Y/Z is animated, return false if both of Scale X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsScaleAnimated(const FbxNode *pNode); - - /** Copy mesh parameters from pRefMesh to pNewMesh. - * \param lNewMesh New FBX mesh. - * \param lRefMesh Referenced FBX mesh. - * \remarks Vertices, polygons, layers will be copied. - */ - void CopyMesh(FbxMesh *lNewMesh, FbxMesh *lRefMesh); - - /** Convert camera focal length animation curve to camera field of view animation curve. - * \param pFOVCurve A curve that represents camera field of view. - * \param pFLCurve A curve that represents camera focal length animation. - * \param pCamera FBX camera to convert. - */ - void ConvertFocalLengthCurveToFOV(FbxAnimCurve *pFOVCurve, FbxAnimCurve *pFLCurve, FbxCamera *pCamera); - - /** Preprocess the given FBX node and its hierarchy. - * \param pNode Pointer to FBX node. - * \remarks To correctly export FBX scene to Collada, this method process FBX nodes, - * such as set pivot state for every FBX node, do special transformation conversion for FBX lights and cameras. - * This method is called recursively. - */ - void PreprocessNodeRecursive(FbxNode* pNode); - - /** Export the value of the specific property as a child element of an element. - * \param pProperty The property whose value to be exported. - * \param pParentElement The parent element of the created element. - */ - void ExportPropertyValue(const FbxProperty & pProperty, - xmlNode * pParentElement); - - //@} - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - - //@} - - FbxFile* mFileObject; - FbxString mFileName; - bool mStatus; - - // XML lib stuff - // - xmlDocPtr mXmlDoc; - - // Scene information - FbxScene* mScene; - - // AnimStack/Layer holding the animation - FbxAnimStack* mAnimStack; - FbxAnimLayer* mAnimLayer; - - // Libraries - // NB: CODE and PROGRAM libraries are unused, so they are not created. - xmlNode* mLibraryAnimation; - xmlNode* mLibraryCamera; - xmlNode* mLibraryController; - xmlNode* mLibraryGeometry; - xmlNode* mLibraryImage; - xmlNode* mLibraryLight; - xmlNode* mLibraryMaterial; - xmlNode* mLibraryEffect; - xmlNode* mLibraryTexture; - xmlNode* mLibraryVisualScene; - - // Shape information - FbxStringList *mShapeMeshesList; - - // export options - bool mTriangulate; - bool mSingleMatrix; - FbxTime mSamplingPeriod; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_WRITER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxio.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxio.h deleted file mode 100644 index edb8415..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxio.h +++ /dev/null @@ -1,1746 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxio.h -#ifndef _FBXSDK_FILEIO_FBX_IO_H_ -#define _FBXSDK_FILEIO_FBX_IO_H_ - -#include - -#include -#include -#include - -#include - -class FbxIO; -class FbxReader; -class FbxWriter; -class FbxFile; -class FbxStream; -class FbxXRefManager; - -/** - Defines the current FBX file version number in four digits. The first digit is the - major version number a the last three digits are the minor version number (e.g. 7100 = 7.1). - The following is the version history of FBX: - - \li Version 2000 - New KFCurve and embedded FBX, no FCurve/FCurve node storing. - No more .takf file like in earlier version, no history. - - \li Version 2001 - Version incremented to support FbxTime save in native (integer, not double) - format. - - \li Version 3000 - FiLMBOX 3.0 version, nothing changed in current class since version 2001. - FBX SDK 3.0 and 3.6 - - \li Version 3001 - FiLMBOX 3.0 encrypted version, only a trial. Encrypted files could only - be written in debug versions. Cannot switch to a higher version number now because any - file with a version number >= 3001 is read as encrypted. - Hence, this value now only gives file type. (3000 or less -> binary, 3001 or more -> encrypted) - FiLMBOX 3.2, FiLMBOX 3.5 and "Online" 3.51 have been released with version 3000. - - \li Version 4000 - MotionBuilder 4.0, new type in KFCurve tangents, supported in FiLMBOX 3.5 - but not by earlier versions. Version number is now stored in section footer. - Before September 3rd 2002, the version number was always 3000 in main section footer. - Now the main section footer has version number 4000. The minimum version number in footer of - an extension section is 4000. - - \li Version 4001 - ASCII Header is 4.1. MotionBuilder 4.01, to fix FCurveNode problem with - layer types in version 4000 the main section footer has version number 4001. - Now the footer for extension sections has version number 4001. - - \li Version 4050 - ASCII Header is 4.5. MotionBuilder 4.1 or 4.5 before - January 22nd 2003. This is because EvaluationProperties now have color. Now the main section footer - has version number 4050. - Now the footer for extension sections has version number 4050. - - \li Version 5000 - ASCII Header is not compatible anymore with MotionBuilder 4.0, 4.01 and 4.02 and FBX SDK 3.6 and 3.7 - MotionBuilder 4.03 and 4.1 or 4.5 from January 22nd 2003 - FBX SDK 3.6.1. New extended header to improve FBX file version management. Now the extended header and - the main section footer have version number 5000. Now the footer for extension sections has version number 5000. - - \li Version 5800 - This was a temporary version while waiting for version 6000 renders the previous versions - incompatible with MotionBuilder 6.0. For now, however, this format is needed to allow - some tools/plugins (For example Maya) to correctly detect that the file has some features that are not - completely backward compatible (For example: pivots defined with _pre/_post nodes which require a special - processing). By incrementing only the minor version we do not compromise the integrity of the - files. - - \li Version 6000 - Header version is now 6.0. - Extended header now contain a creation time stamp - that can be retrieve without parsing the main section of the file. - A creator tag (string) is now stored in the Extended header. This contain the originator (MB/FBXSDK) - of the file and the build number of the originator. - First release of the file format using the KProperties to store/retrieve information. - - \li Version 6100 - Added support for multiple attributes (mainly multiple geometry) at the node level. - The pointer to the node attribute have been replaced by a connection between the node and its attribute(s). - - \li Version 7000 - - First version of the 7.0 series; most likely very short-lived, developed for Protein, before ADP. - Supports reference cloning, external documents, blobs, unique IDs (per file), property templates. - So many changes that it was decided to break from 6.0 to keep Motion Builder intact. - - \li Version 7099 - Temporary version for FBX 2011 alpha releases. - - \li Version 7100 - Official file version for FBX 2011, add support for animation to FBX 7. - First version of FBX SDK with FBX 7 files as the default file format. - - \li Version 7200 - Added support for multiple blend shape deformers and In-Between blend-shapes on each geometry. - Moved shape(FbxShape) to its own section other than as a part of geometry section. - Add support to store blend shape deformer(FbxBlendShape), blend shape channel(FbxBlendShapeChannel), - Substance(FbxProceduralTexture) and Lines(FbxLine). - Add support to store 3 different smooth binding modes of FbxSkin, including classic linear, dual quaternion - and blended mode of previous two modes. - Added the CLAMP_PROGRESSIVE tangent mode. - The KFCurve::KeyAttrDataFloat data array now stores as integer values (ASCII mode) to to eliminate float to int precision errors. - FbxLayeredTexture now stores alphas for its sub textures. - - \li Version 7300 - Changed the way the CharacterPoses are written. - Changed light property name HotSpot and ConeAngle to InnerAngle and OuterAngle - - \li Version 7400 - Normals, tangents and binormals save the 4th component into a separate array - - \li Version 7500 - Added support for large files (>2GB). NOTE: This breaks forward compatibility (i.e. older products won't be able to open these files!!) - - */ - -//File version numbers -#define FBX_FILE_VERSION_2000 2000 //FBX 2.0 -#define FBX_FILE_VERSION_2001 2001 //FBX 2.01 -#define FBX_FILE_VERSION_3000 3000 //FBX 3.0 -#define FBX_FILE_VERSION_3001 3001 //FBX 3.01 -#define FBX_FILE_VERSION_4000 4000 //FBX 4.0 -#define FBX_FILE_VERSION_4001 4001 //FBX 4.01 -#define FBX_FILE_VERSION_4050 4050 //FBX 4.5 -#define FBX_FILE_VERSION_5000 5000 //FBX 5.0 -#define FBX_FILE_VERSION_5800 5800 //FBX 5.8 -#define FBX_FILE_VERSION_6000 6000 //FBX 6.0 -#define FBX_FILE_VERSION_6100 6100 //FBX 6.1 (guarantee compatibility with Autodesk 2010 products) -#define FBX_FILE_VERSION_7000 7000 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7099 7099 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7100 7100 //FBX 7.1 (guarantee compatibility with Autodesk 2011 products) -#define FBX_FILE_VERSION_7200 7200 //FBX 7.2 (guarantee compatibility with Autodesk 2012 products) -#define FBX_FILE_VERSION_7300 7300 //FBX 7.3 (guarantee compatibility with Autodesk 2013 products) -#define FBX_FILE_VERSION_7400 7400 //FBX 7.4 (guarantee compatibility with Autodesk 2014/2015 products) -#define FBX_FILE_VERSION_7500 7500 //FBX 7.5 (guarantee compatibility with Autodesk 2016 products) - -//File version compatibility strings -#define FBX_53_MB55_COMPATIBLE "FBX53_MB55" -#define FBX_60_COMPATIBLE "FBX60_MB60" -#define FBX_2005_08_COMPATIBLE "FBX200508_MB70" -#define FBX_2006_02_COMPATIBLE "FBX200602_MB75" -#define FBX_2006_08_COMPATIBLE "FBX200608" -#define FBX_2006_11_COMPATIBLE "FBX200611" -#define FBX_2009_00_COMPATIBLE "FBX200900" -#define FBX_2009_00_V7_COMPATIBLE "FBX200900v7" -#define FBX_2010_00_COMPATIBLE "FBX201000" -#define FBX_2011_00_COMPATIBLE "FBX201100" -#define FBX_2012_00_COMPATIBLE "FBX201200" -#define FBX_2013_00_COMPATIBLE "FBX201300" -#define FBX_2014_00_COMPATIBLE "FBX201400" -#define FBX_2016_00_COMPATIBLE "FBX201600" -#define FBX_2018_00_COMPATIBLE "FBX201800" -#define FBX_2019_00_COMPATIBLE "FBX201900" - -//Default file version number used when writing new FBX files -#define FBX_DEFAULT_FILE_VERSION FBX_FILE_VERSION_7500 -#define FBX_DEFAULT_FILE_COMPATIBILITY FBX_2019_00_COMPATIBLE - -/** Convert the FBX file version string to an integral number for <= or >= tests purposes. - * \param pFileVersion File version string. - * Some examples: - * \code - * int version; - * version = FileVersionStrToInt(FBX2012_00_COMPATIBLE); // version = 201200 - * version = FileVersionStrToInt(FBX60_COMPATIBLE); // version = 6000 - * version = FileVersionStrToInt("FBX200900"); // version = 200900 - * version = FileVersionStrToInt("Toto"); // version = 0 - * version = FileVersionStrToInt(""); // version = -1 - * \endcode - * \returns the file version number or 0 if an unsupported string value is passed. - */ -FBXSDK_DLL int FbxFileVersionStrToInt(const char* pFileVersion); - -/** \internal Used internally by readers to evaluate what is the current section */ -enum -{ - FBX_NO_SECTION = -1, //!< indicate not in a valid section - FBX_MAIN_SECTION, //!< indicate currently in the main section - FBX_EXTENSION_SECTION_0 //!< indicate currently in the extention section 0 -}; - -/** Render and resolution information. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxIODefaultRenderResolution -{ -public: - /** If the resolution data is ready. */ - bool mIsOK; - /** camera name. */ - FbxString mCameraName; - /** resolution mode. ex: "Fixed Resolution","Fixed Ratio","Fixed Width","Fixed Height","Window Size"*/ - FbxString mResolutionMode; - /** resolution width. */ - double mResolutionW; - /** resolution height. */ - double mResolutionH; - - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIODefaultRenderResolution(); - //@} - - /** - * \name Member Access - */ - //@{ - //! Reset values to default. - void Reset(); - //@} -}; - -/** FBX header information used at beginning of the FBX file -* to get or set important values like the file format version number (mFileVersion). -* The file version number will be used to select a particular Reader or Writer. -* \nosubgrouping */ -class FBXSDK_DLL FbxIOFileHeaderInfo -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIOFileHeaderInfo(); - - //! Destructor. - virtual ~FbxIOFileHeaderInfo(); - //@} - - /** - * \name Public Member - */ - //@{ - - //! Reset values to default. - virtual void Reset(); - - /** A derived class can override this function to read additional information from the file header. - * \return false in case of failure that should stop loading the file. - */ - virtual bool ReadExtendedHeaderInformation(FbxIO*); - //@} - - //! FbxIODefaultRenderResolution to handle default resolution values - FbxIODefaultRenderResolution mDefaultRenderResolution; - - //!Read only properties (not used for file write) - - //@{ - /** File version ex; 5000, 6000, 6100, 7000, 7099, 7100 - * the major part is the first digit, the minor part, 3 other digits - * ex: 7100 means version 7.1 - */ - int mFileVersion; - - /** Indicates whether a creation time stamp is preset */ - bool mCreationTimeStampPresent; - - /** Indicates whether the mCreationTimeStamp member variable contains the actual creation time of the file. */ - FbxLocalTime mCreationTimeStamp; - - /** Indicates who is the creator of the file - * Ex: "FBX SDK/FBX Plugins version 2011.2" - */ - FbxString mCreator; - - /** Indicates whether the file is created by a genuine Autodesk plug-in or not */ - bool mIOPlugin; - - /** The flag indicates that the header was created by a personal learning edition (PLE) of FBX. */ - bool mPLE; - //@} -}; - -/** FbxIO represents an FBX file. - * It is primarily used by FBX importers (FbxImporter) and exporter (FbxExporter) - * when reading or writing data from or to a disk or memory. - * Most users will not use the FbxIO class directly - * but will use an instance of either FbxImporter or FbxExporter - * to read or write FBX files. - * - * An FBX file may contain binary data or ASCII data. - * A good way to learn the internal structure of a FBX file - * is to open a FBX file saved in ASCII in a text editor. - * - * Ex: to read a FBX file content using FbxIO class directly - * \code - * // Create a FbxIO object with FbxIO::Create() - * // Open the file with ProjectOpen( ... ) a NULL pointer can be passed for (FbxReader)* param - * // ProjectOpen_xxx_Section() to open a particular section - * int nbSec = FieldGetCount(); // to get the number of fields of the current section opened - * for(int i=0; i < nbSec; i++) // read all fields - * { - * // check if the field is a block - * if(FieldReadIsBlock()){ } ... Read sub fields recursively ... may contain other blocks and fields - * else - * { - * FieldReadBegin(); // navigate on the field - * char fieldType = FieldReadGetType(); // get the data type - * - * // According to the Field data type, call the appropriate read functions - * - * if(fieldType == 'S') FieldReadS(...) to read a string - * else if(fieldType == 'B') FieldReadB(...) to read a bool - * else if(fieldType == 'I') FieldReadI(...) to read a int - * ... - * FieldReadEnd(); // navigate to next field - * } - * } - * - * ProjectCloseSection() // close the section opened - * // repeat for another section ... - * // finally close the Project - * ProjectClose(); // or delete the FbxIO object created. - * \endcode - */ -class FBXSDK_DLL FbxIO -{ -public: - - /** \internal Exception-safe way of setting/resetting the xref manager in a FbxIO object. - */ - struct FbxAutoResetXRefManager - { - FbxIO* mFbx; - const FbxXRefManager* mXRefManager; - - /** Default constructor */ - FbxAutoResetXRefManager(FbxIO* pFbx, FbxXRefManager& pXRefManager) - : mFbx(pFbx) - , mXRefManager(NULL) - { - if( mFbx ) - { - mXRefManager = mFbx->ProjectGetXRefManager(); - mFbx->ProjectSetXRefManager(&pXRefManager); - } - } - - /** Destructor */ - ~FbxAutoResetXRefManager() - { - if( mFbx ) - { - mFbx->ProjectSetXRefManager(mXRefManager); - } - } - }; - - enum BinaryType - { - BinaryNormal, //(pBinaryType, pStatus); } - - /** Default constructor */ - FbxIO(BinaryType pBinaryType, FbxStatus& pStatus); - - /** Destructor */ - virtual ~FbxIO(); - - /** - * \name Project Global - * The term "Project" here is an abstract name chosen to represent a group of data - * ex: a file, a stream, a memory buffer, etc. - */ - //@{ - - /** Open a project already in Memory - * \param pAddress - * \param pMaxLength - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(void* pAddress, FbxULong pMaxLength, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pStream - * \param pStreamData - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(FbxStream* pStream, void* pStreamData, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open project file without necessarily an .fbx extension. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenDirect(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project in Memory - * \param pAddress - * \param pSize - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(void* pAddress, FbxUInt pSize, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pStream - * \param pStreamData - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project without necessary an .fbx extension. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateDirect(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project, without writing out the header (yet) - * \param pName - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(const char* pName, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Create a project, without writing out the header (yet) - * \param pStream - * \param pStreamData - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Write FBX signature at the top of the file, prepare file for writing header information - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginFileHeader(); - - /** Open up the 'extended header' - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginExtendedHeader(); - - /** Write the contents of the extended header - * \param pExtendedHeader - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_WriteExtendedHeader(const FbxIOFileHeaderInfo* pExtendedHeader); - - /** Close the extended header - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndExtendedHeader(); - - /** Close up the header, prepare file for payload write. - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndFileHeader(); - - /** Close the project. - * \param pData - * \param pSize - * \return \c true on success, \c false otherwise. - */ - bool ProjectClose(void** pData=0, size_t* pSize=0); - - /** Provide the XRef Manager to use to create the .fbm folder. - * \remarks If NULL is used, the old behavior (using the .fbx's folder) is used instead. - */ - void ProjectSetXRefManager(const FbxXRefManager*); - - /** Get the XRef Manager to use. - * \return NULL if no XRef manager has been set. - */ - const FbxXRefManager* ProjectGetXRefManager() const; - - /** Select (and create) a folder to store embedded files (the .fbm - * file folder). Takes into account the settings from the XRef Manager. - * \param pXRefManager - * \param pCreatedFolder - * \param pUserDefinedFolder User defined "working folder" - * \return \c true on success, \c false otherwise. - * \remarks If this already been called successfully, uses the path - * previously created. - * - * Client application is responsible for cleaning up this folder. - * - * This will be automatically called if ProjectSetXRefManager() - * has been called before the .fbm folder needs to be created. - */ - bool ProjectCreateEmbeddedFolder(const FbxXRefManager& pXRefManager, FbxString& pCreatedFolder, const char* pUserDefinedFolder = NULL); - - /** On store event, use this function to tell if we are embedding. - * \param pValue - */ - void SetEmbedded(bool pValue); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractionFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractionFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Check if file is embedded or not. - * \return \c true if file is embedded, false otherwise. - */ - bool IsEmbedded() const; - - /** Check if file is binary or ASCII - * \return \c true if file is binary, false otherwise. - */ - bool IsBinary() const; - - /** Return if binary file is encrypted - * \return \c true if file is encrypted, false otherwise. - */ - bool IsEncrypted () const; - - /** Check CRC code. File must be open, binary and encrypted. - * \return \c true if CRC code is valid or file is not open, binary and encrypted. - */ - bool CheckCRC(); - - /** Return the file version number - * \return the file version number - */ - FbxUInt32 GetFileVersionNumber() const; - - /** Set the cache size for accelerated IO - * \param pCacheSize cache size to set (Kilo Byte) - */ - void CacheSize(FbxUInt32 pCacheSize); - - /** Return the current cache size - * \return the current cache size - */ - FbxUInt32 CacheSize() const; - - //@} - - /** - * \name FBX 7 Format specific functions. - - The FBX 7 format can compress internal arrays to make the file smaller. - The writer may decide not to compress all arrays, or it may even decide - not to compress anyway. Flags are written in the file to help the FBX7 reader - to know if a decompression is required, on a per-array basis. - The following functions address specific topics of the FBX 7 file format. - */ - //@{ - - //! \return Current state of the flag. - bool Fbx7Support() const; - - /** Set the flag state to tell the parser to handle FBX7 files. - * \param pSupport New flag state. - */ - void Fbx7Support(bool pSupport); - - //! \return Current State of the flag. - bool CompressArrays() const; - - /** Set the flag state. - * \param pCompress New flag state. - */ - void CompressArrays(bool pCompress); - - //! \return Current compression minimum size. - int CompressMinimumSize() const; - - /** Set the compression minimum size. - * \param pSize Threshold at which compression may embark. - */ - void CompressMinimumSize(int pSize); - - //! \return Current compression level. - int CompressLevel() const; - - /** Set the compression level. - * \param pLevel Value of the desired compression. - * \remarks The allowed range for pLevel is [0-9] where 0 equals no compression and - * 9 is as-much-as-we-can. - */ - void CompressLevel(int pLevel); - //@} - - /** - * \name Project related functions used to navigate on particular - * sections. - */ - //@{ - - /** Open the main section of a project. - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenMainSection(); - - /** Get the number of extension sections of a project. - * \return the number of extension sections of a project. - */ - int ProjectGetExtensionSectionCount() const; - - /** Open an extension section of a project. - * \param pExtensionSectionIndex - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenExtensionSection(int pExtensionSectionIndex); - - /** Create an extension section in a project, not allowed in ASCII and encrypted modes. - * \param pOverwriteLastExtensionSection - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateExtensionSection(bool pOverwriteLastExtensionSection = false); - - /** Close current section. - */ - void ProjectCloseSection(); - - /** Get current section. - * \return the current section. - */ - int ProjectGetCurrentSection() const; - - /** Get current section mode. - * \return the current section mode. - */ - int ProjectGetCurrentSectionMode() const; - - /** Get current section version. - * \return the current section version. - */ - int ProjectGetCurrentSectionVersion() const; - - /** Get the version number of a section. - * \param pSection - * \return the version number of a section. - * \remarks For main section it can be either 1000, 2000, 2001, 3000, 3001, 4000, 4001 or 4050. - * For the extension section it can be either 4000, 4001 or 4050. - * Returns 0 if section number does not exist. - */ - int ProjectGetSectionVersion(int pSection) const; - - /** Split a version number into major, minor and revision numbers. - * \param pVersion Version number to split. - * \param pMajor Integer to receive major version number. - * \param pMinor Integer to receive minor version number. - * \param pRevision Integer to receive revision version number. - */ - static void ProjectConvertVersionNumber(int pVersion, int& pMajor, int& pMinor, int& pRevision); - - /** Check the password protection flag. - * \return \c true if the current section has a password, \c false otherwise. - */ - bool IsPasswordProtected() const; - - /** Set password protection flag to \c false if the argument matches the password stored in the section. - * \param pPassword - * \return \c true if the argument matches the password stored in the section, \c false otherwise. - * \remarks This function only works in read mode. - */ - bool CheckPassword(const char* pPassword); - - /** Encrypt and store password in a section. - * \param pPassword - * \return \c true on success, \c false otherwise. - * \remarks This function only works in write mode and out of any enclosing block. - * \remarks This function must not be called more than once per section. - */ - bool WritePassword(const char* pPassword); - - //@} - - /** - * \name Directory related functions used to get or set file path information. - */ - //@{ - - /** Get project file name. - * \return project file name. - */ - const char* GetFilename() const; - - /** Get project data directory name. - * \param pAutoCreate - * \return project data directory name. - */ - FbxString GetDataDirectory(bool pAutoCreate = true); - - /** Get the current embedded folder used by this object. - * \param pCreate Whether create the media or not if no such folder is found - * \param pUserDefinedFolder User define working folder - * \return the current embedded folder used by this object. - * \remarks If ProjectCreateEmbeddedFolder has never been called this will - * return an empty string, unless we're explicitly asked to - * create it. - */ - FbxString GetMediaDirectory(bool pCreate = false, const char* pUserDefinedFolder = NULL); - - /** Get the full path of the directory to extract the template file. - * \param pTemplateName - * \param pCreate - * \return the full path of the directory to extract the template file. - */ - FbxString GetContainerTemplateDirectory(const char* pTemplateName, bool pCreate); - - /** Get the path relative to project directory. - * \param pPath - * \return the path relative to project directory. - */ - char* GetRelativePath(const char* pPath); - - /** Get the file path relative to project directory. - * \param pFilePath - * \return the file path relative to project directory. - */ - char* GetRelativeFilePath(const char* pFilePath); - - /** Get the full path of path relative to project directory. - * \param pRelativePath - * \return the full path of path relative to project directory. - */ - char* GetFullPath(const char* pRelativePath); - - /** Get the full file path of path relative to project directory. - * \param pRelativeFilePath - * \return the full file path of path relative to project directory. - */ - char* GetFullFilePath(const char* pRelativeFilePath); - - /** Get the temporary project name. - * \param pName - * \return the temporary project name. - */ - char* GetTmpProjectName(const char* pName) const; - - /** Swap from temporary project. - * \param pName - * \param pError - * \param pErrorSize - * \return \c true on success, \c false otherwise. - */ - bool SwapFromTmpProject(const char* pName, char* pError=NULL, int pErrorSize=0); - - //@} - - /** - * \name Read related functions used to get information of a field or a group of fields. - * Can be used to get the field content data or to navigate from field to field. - */ - //@{ - - /** Reset the field read position. - */ - void FieldReadResetPosition(); - - /** Get the number of fields. - * \return the number of fields. - */ - int FieldGetCount() const; - - /** Get the name of field indexed pFieldIndex. - * \param pFieldIndex - * \return the name of field indexed pFieldIndex. - */ - const char* FieldGetName(int pFieldIndex) const; - - /** Get number of instance field pFieldName has. - * \param pFieldName - * \return the number of instance field pFieldName has. - */ - int FieldGetInstanceCount(const char* pFieldName) const; - - /** Start to read field instance referred by field indexed pFieldIndex, instance indexed pInstance. - * \param pFieldIndex - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(int pFieldIndex, int pInstance); - - /** Start to read field pFieldName. - * \param pFieldName - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName); - - /** Start to read field instance referred field pFieldName, instance indexed pInstance. - * \param pFieldName - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName, int pInstance); - - //! Stop to read the current field. - void FieldReadEnd(); - - //! Return if current field is a block. - bool FieldReadIsBlock(); - - //! Start to read a field block. - bool FieldReadBlockBegin(); - - //! Stop to read a field block. - void FieldReadBlockEnd(); - - //! Return the number of read field. - int FieldReadGetCount() const; - - //! Return the number of field remaining to be read. - int FieldReadGetRemain() const; - - //! Return current field value type. - char FieldReadGetType() const; - - //! Return current field value as a char. - char FieldReadCH(); - - /** Return field pFieldName's value as a char. - * \param pFieldName - * \param pDefault - */ - char FieldReadCH(const char* pFieldName, char pDefault=0); - - //! Return current field value as a char pointer. - const char* FieldReadC(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadC(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as a string (a char pointer). - const char* FieldReadS(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadS(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as an bool. - bool FieldReadB(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - bool FieldReadB(const char* pFieldName, bool pDefault = false); - - //! Return current field value as an integer. - int FieldReadI(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */int FieldReadI(const char* pFieldName, int pDefault=0); - - //! Return current field value as an integer. - FbxLongLong FieldReadLL(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - FbxLongLong FieldReadLL(const char* pFieldName, FbxLongLong pDefault=0); - - //! Return current field value as a float. - float FieldReadF(); - - /** Return field pFieldName's value as a float. - * \param pFieldName - * \param pDefault - */ - float FieldReadF(const char* pFieldName, float pDefault=0); - - //! Return current field value as a double. - double FieldReadD(); - - /** Return field pFieldName's value as a double. - * \param pFieldName - * \param pDefault - */ - double FieldReadD(const char* pFieldName, double pDefault=0); - - /** Return field pFieldName's value as a time value. - * \param pFieldName - */ - FbxTime FieldReadT(const char* pFieldName); - - //! Return field pFieldName's value as a time value. - FbxTime FieldReadT(); - - /** Return field pFieldName's value as a timespan value. - * \param pFieldName - */ - FbxTimeSpan FieldReadTS(const char* pFieldName); - - //! Return field pFieldName's value as a timespan value. - FbxTimeSpan FieldReadTS(); - - /** Return current field value as a n floats array. - * \param pValue - * \param pn - */ - void FieldReadFn(float* pValue, FbxUInt pn); - - /** Return current field value as a 3 floats array. - * \param pValue - */ - void FieldRead3F(float* pValue); - - /** Return current field value as a 4 floats array. - * \param pValue - */ - void FieldRead4F(float* pValue); - - /** Return field pFieldName's value as n floats array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadFn(const char* pFieldName, float* pValue, const float *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return field pFieldName's value as 3 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return current field value as a n doubles array. - * \param pValue - * \param pn - */ - void FieldReadDn(double* pValue, FbxUInt pn); - - /** Return current field value as a 3 doubles array. - * \param pValue - */ - void FieldRead3D(double* pValue); - - /** Return current field value as a 4 doubles array. - * \param pValue - */ - void FieldRead4D(double* pValue); - - /** Return field pFieldName's value as n doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadDn(const char* pFieldName, double* pValue, const double *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return field pFieldName's value as 3 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return current field value as raw data. - * \param pByteSize - */ - void* FieldReadR(int* pByteSize); - - /** Return field pFieldName's value as raw data. - * \param pFieldName - * \param pByteSize - */ - void* FieldReadR(const char* pFieldName,int* pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - //! Return field pFieldName's value as byte. - FbxChar FieldReadByte(); - - /** Return field pFieldName's value as a byte value. - * \param pFieldName - * \param pDefault - */ - FbxChar FieldReadByte(const char* pFieldName, FbxChar pDefault=0); - - //! Return field pFieldName's value as unsigned byte. - FbxUChar FieldReadUByte(); - - /** Return field pFieldName's value as an unsigned byte value. - * \param pFieldName - * \param pDefault - */ - FbxUChar FieldReadUByte(const char* pFieldName, FbxUChar pDefault=0); - - //! Return field pFieldName's value as short. - FbxShort FieldReadShort(); - - /** Return field pFieldName's value as a short value. - * \param pFieldName - * \param pDefault - */ - FbxShort FieldReadShort(const char* pFieldName, FbxShort pDefault=0); - - //! Return field pFieldName's value as unsigned short. - FbxUShort FieldReadUShort(); - - /** Return field pFieldName's value as an unsigned short value. - * \param pFieldName - * \param pDefault - */ - FbxUShort FieldReadUShort(const char* pFieldName, FbxUShort pDefault=0); - - //! Return field pFieldName's value as unsigned integer. - unsigned int FieldReadUI(); - - /** Return field pFieldName's value as an unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - unsigned int FieldReadUI(const char* pFieldName, unsigned int pDefault=0); - - //! Return field pFieldName's value as 64 bit unsigned integer. - FbxULongLong FieldReadULL(); - - /** Return field pFieldName's value as an 64 bit unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - FbxULongLong FieldReadULL(const char* pFieldName, FbxULongLong pDefault=0); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArraySBytes( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArrayShort ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArrayUShort( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArrayUI ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArrayULL ( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArray(int &pCount, const FbxChar*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArray(int &pCount, const FbxShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArray(int &pCount, const FbxUShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArray(int &pCount, const unsigned int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArray(int &pCount, const FbxULongLong*); - //@} - - /** Read field and copy it into a file. - * \param pFileName Embedded file full path+name. - *\param pRelativeFileName Relative path+name of the embedded file. - * \param pEmbeddedMediaDirectory Directory of the embedded media. - * \param pIsFileCreated Status of the extraction of the embedded data. Set to \c true if the embedded media is correctly extracted in the media directory. - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - virtual bool FieldReadEmbeddedFile (FbxString& pFileName, FbxString& pRelativeFileName, const char* pEmbeddedMediaDirectory = "", bool *pIsFileCreated=NULL); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArrayD( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArrayF( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArrayI( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong*FieldReadArrayLL(int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArrayB( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArrayBytes( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArray(int& pCount, const int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArray(int& pCount, const float*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArray(int& pCount, const double*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong* FieldReadArray(int& pCount, const FbxLongLong*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArray(int& pCount, const bool*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArray(int& pCount, const FbxUChar*); - - //@} - - /** - * \name Write related functions used to write information of a field or a group of fields. - * Can be used to write the field content data or to navigate from field to field. - */ - //@{ - - /** Start to write a field called pFieldName. - * \param pFieldName - */ - void FieldWriteBegin(const char* pFieldName); - - //! Stop to write the current field. - void FieldWriteEnd(); - - //! Start to write a field block. - void FieldWriteBlockBegin(); - - /** Start to write an object reference field. - * \param pObjectType - * \param pName - * \param pSubType - */ - void FieldWriteObjectBegin(const char* pObjectType, const char* pName, const char* pSubType=NULL); - - //! Stop to write an object reference field. - void FieldWriteObjectEnd(); - - /** Start to write a field block in file pFileName. - * \param pFileName - * \remarks This function is disabled but kept accessible for the FBX SDK. - */ - void FieldWriteBlockBegin(const char* pFileName); - - //! Stop to write a block of field. - void FieldWriteBlockEnd (); - - /** Write field value as a char. - * \param pValue - */ - void FieldWriteCH(char pValue); - - /** Write field pFieldName field with a char as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteCH(const char* pFieldName, char pValue); - - /** Write field value as char pointer pValue. - * \param pValue - */ - void FieldWriteC(const char* pValue); - - /** Write field pFieldName with a char pointer as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteC(const char* pFieldName, const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const FbxString& pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const char* pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const FbxString& pValue); - - /** Write field value as bool. - * \param pValue - */ - void FieldWriteB(bool pValue); - - /** Write field pFieldName field with a bool value. - * \param pFieldName - * \param pValue - */ - void FieldWriteB(const char* pFieldName, bool pValue); - - /** Write field value as integer. - * \param pValue - */ - void FieldWriteI(int pValue); - - /** Write field pFieldName field with an int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteI(const char* pFieldName, int pValue); - - /** Write field value as 64 bit integer. - * \param pValue - */ - void FieldWriteLL(FbxLongLong pValue); - - /** Write field pFieldName field with an 64 bit int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteLL(const char* pFieldName, FbxLongLong pValue); - - /** Write field value as float. - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(float pValue); - - /** Write field pFieldName field with a float as a value. - * \param pFieldName - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(const char* pFieldName, float pValue); - - /** Write field value as double. - * \param pValue - */ - void FieldWriteD(double pValue); - - /** Write field pFieldName field with a double as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteD(const char* pFieldName, double pValue); - - /** Write field value as time value. - * \param pTime - */ - void FieldWriteT(FbxTime pTime); - - /** Write field pFieldName field with a time as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteT(const char* pFieldName,FbxTime pValue); - - /** Write field value as timespan value. - * \param pTimeSpan - */ - void FieldWriteTS(FbxTimeSpan pTimeSpan); - - /** Write field pFieldName field with a timespan as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteTS(const char* pFieldName,FbxTimeSpan pValue); - - /** Write field value as an array of n floats (nF vector). - * \param pValue - * \param pn - */ - void FieldWriteFn(const float* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n floats as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteFn(const char* pFieldName, const float* pValue, FbxUInt pn); - - /** Write field value as an array of 3 floats (3F vector). - * \param pValue - */ - void FieldWrite3F(const float* pValue); - - /** Write field pFieldName field with a array of 3 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of 4 floats (4F vector). - * \param pValue - */ - void FieldWrite4F(const float* pValue); - - /** Write field pFieldName field with a array of 4 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of n doubles (nD vector). - * \param pValue - * \param pn - */ - void FieldWriteDn(const double* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n doubles as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteDn(const char* pFieldName, const double* pValue, FbxUInt pn); - - /** Write field value as an array of 3 doubles (3D vector). - * \param pValue - */ - void FieldWrite3D(const double* pValue); - - /** Write field pFieldName field with a array of 3 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3D(const char* pFieldName, const double* pValue); - - /** Write field value as an array of 4 doubles (4D vector). - * \param pValue - */ - void FieldWrite4D(const double* pValue); - - /** Write field pFieldName field with a array of 4 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4D(const char* pFieldName, const double* pValue); - - // The maximum number of value entries is, in theory, 2**32. In practice it should be a lot less than that. - // pSize is the number of values to write from each pointer location, and stride is how much we - // advance to get to the next value; if the stride is zero, values are tighly packed together. - // So in total we'll write n * pSize items. - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayD( int n, const double* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayF( int n, const float* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayI( int n, const int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayLL(int n, const FbxLongLong* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayB( int n, const bool* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayBytes( int n, const FbxUChar* pValue, int pSize = 1, int pStride = 0 ); - - /** Write field value as a raw data. - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const void* pRawData, int pByteSize); - - /** Write field pFieldName field with raw data as a value. - * \param pFieldName - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const char* pFieldName, const void* pRawData, int pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - - /** Write field value as byte. - * \param pValue - */ - void FieldWriteByte(FbxChar pValue); - - /** Write field pFieldName field with a byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteByte(const char* pFieldName, FbxChar pValue); - - /** Write field value as unsigned byte. - * \param pValue - */ - void FieldWriteUByte(FbxUChar pValue); - - /** Write field pFieldName field with an unsigned byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUByte(const char* pFieldName, FbxUChar pValue); - - /** Write field value as short. - * \param pValue - */ - void FieldWriteShort(FbxShort pValue); - - /** Write field pFieldName field with a short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteShort(const char* pFieldName, FbxShort pValue); - - /** Write field value as unsigned short. - * \param pValue - */ - void FieldWriteUShort(FbxUShort pValue); - - /** Write field pFieldName field with an unsigned short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUShort(const char* pFieldName, FbxUShort pValue); - - /** Write field value as an unsigned integer. - * \param pValue - */ - void FieldWriteUI(unsigned int pValue); - - /** Write field pFieldName field with an unsigned int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUI(const char* pFieldName, unsigned int pValue); - - /** Write field value as 64 bit unsigned integer. - * \param pValue - */ - void FieldWriteULL(FbxULongLong pValue); - - /** Write field pFieldName field with an 64 bit unsigned int as a value. - * \param pFieldName - * \param pValue - * \return void - */ - void FieldWriteULL(const char* pFieldName, FbxULongLong pValue); - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArraySBytes( int n, const FbxChar* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayShort( int n, const FbxShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUShort( int n, const FbxUShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUI( int n, const unsigned int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayULL(int n, const FbxULongLong* pValue, int pSize = 1, int pStride = 0 ); - //@} - - /** ASCII files may limit how big you can write your raw data, forcing you to break it down into chunks. - * \return int - */ - int GetFieldRMaxChunkSize() const; - - /** Write object reference pName in the current field. - * \param pName - */ - void FieldWriteObjectReference(const char* pName); - - /** Write object reference pName in field pFieldName. - * \param pFieldName - * \param pName - */ - void FieldWriteObjectReference(const char* pFieldName, const char* pName); - - /** Write field with file content as a value. - * \param pFileName - * \param pRelativeFileName - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - bool FieldWriteEmbeddedFile (FbxString pFileName, FbxString pRelativeFileName); - - /** Write comments, only effective in ASCII mode. - * \param pFieldName - */ - void WriteComments(const char* pFieldName); - - //@} - -#ifdef _DEBUG - // Dump function for debugging purpose only - void StdoutDump(); -#endif - - /** Get if the embedded file is currently loaded - * \return true if loaded, false otherwise - * \remarks An embedded file is a file like a JPEG image used for texture or an AVI file for video. - * When files are embedded, the size of the FBX file can be very large since other files are embedded in it. - * FBX Version 6 and lower cannot embed files when saved in ASCII. - * FBX Version 7 and over can embed files even when saved in ASCII mode. - */ - bool GetHaveLoadedEmbededFile() const; - - /** Get the maximum byte count written - * \param pMemPtr The address of the memory file - * \param[out] pSize Stores the maximum byte count written - */ - void GetMemoryFileInfo(void** pMemPtr, size_t& pSize) const; - - /** Get a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - bool IsBeforeVersion6() const; - - /** Set a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - void SetIsBeforeVersion6(bool pIsBeforeVersion6); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProjectOpen (FbxFile * pFile, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - FbxStatus& GetStatus() { return mStatus; } - -private: - // to resolve warning C4512: 'class' : assignment operator could not be generated - FbxIO& operator=(const FbxIO& pOther); - - FbxStatus& mStatus; - - struct InternalImpl; - struct InternalImpl32; - struct InternalImpl64; - InternalImpl* mImpl; - - //! Project Global - - void ProjectClear(); - void ProjectReset(); - - bool ProjectReadHeader(bool pCheckASCIIHeader, bool pCheckCRC, bool pOpenMainSection, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectReadExtendedHeader(FbxInt64& pExtendedHeaderEnd, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool BinaryReadHeader(); - bool BinaryReadSectionPosition(); - bool ASCIIReadHeader(); - bool ASCIIReadSectionPosition(); - - bool ProjectWriteHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectWriteExtendedHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - void BinaryWriteHeader(); - void ASCIIWriteHeader(); - - void ReadEncryptionKey(char* pEncryptionKey); - void WriteEncryptionKey(char* pEncryptionKey); - - //! Project Section - - bool ProjectClearSection(); - bool ProjectOpenSection(int pSection); - bool BinaryReadSectionHeader(); - FbxInt64 BinaryReadSectionFooter(unsigned char* pSourceCheck); - bool BinaryReadExtensionCode(FbxInt64 pFollowingSectionStart, FbxInt64& pSectionStart, FbxUInt32& pSectionVersion); - void BinaryReadSectionPassword(); - - bool ProjectWriteSectionHeader(); - void BinaryWriteSectionFooter(); - bool BinaryWriteExtensionCode(FbxInt64 pSectionStart, FbxUInt32 pSectionVersion); - - FbxString GetCreationTime() const; - void SetCreationTime(FbxString pCreationTime); - void CreateSourceCheck(unsigned char* lSourceCheck); - bool TestSourceCheck(unsigned char* pSourceCheck, unsigned char* pSourceCompany); - FbxString GetMangledCreationTime(); - void EncryptSourceCheck(unsigned char* pSourceCheck, unsigned char* pEncryptionData); - void DecryptSourceCheck(unsigned char* pSourceCheck, const unsigned char* pEncryptionData); - - void EncryptPasswordV1(FbxString pOriginalPassword, FbxString &pEncryptedPassword); - void DecryptPasswordV1(FbxString pEncryptedPassword, FbxString &pDecryptedPassword); - - //! Read - - void CheckValidityOfFieldName(const char* pFieldName); - void GetUnusedEmbeddedName(const FbxString& pDirectory, const FbxString& pName, FbxString& pResult, bool pCreateSubdirectory); - - //! Get project media directory name - FbxString GetDirectory(bool pAutoCreate, const char* pExtension); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_IO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h deleted file mode 100644 index 2018a22..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h +++ /dev/null @@ -1,256 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX5_H_ - -#include - -#include - -class FbxAnimLayer; -class Fbx5ObjectTypeInfo; - -FbxReader* CreateFBXReader(FbxManager& pManager, - FbxImporter& pImporter, - int pID, - FbxStatus& pStatus); -void GetInfoFBXReader(int* pCount, - const char* * pExtensions, - const char* * pDescriptions); - -class FbxReaderFbx5 : public FbxReader -{ -public: - FbxReaderFbx5(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - virtual ~FbxReaderFbx5(); - - virtual bool FileOpen(char* pFileName, bool pIgnoredArg); - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags){ return FbxReader::FileOpen(pFileName, pFlags); } - virtual bool FileOpen(char* pFileName); - virtual bool FileOpen(FbxFile * pFile); - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EImportMode; - - EImportMode GetImportMode(); - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - virtual bool Read(FbxScene& pScene, FbxIO* pFbx); - - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - virtual bool SupportsStreams() const { return true; } - -private: - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - void ReadOptionsInGenericSection(); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - bool WriteThumbnail(FbxThumbnail*); - FbxDocumentInfo* ReadSceneInfo(); - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - void WriteSceneInfo(FbxDocumentInfo*); - void SetIsBeforeVersion6WithMainSection(bool pOpenMainSection); - - bool ReadDefinitionSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObjectSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObject(FbxScene& pScene, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId); - bool ReadNode(); - //bool ReadGenericNode(FbxScene& pScene); - bool ReadAnimation(FbxScene& pScene); - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - FbxThumbnail* ReadThumbnail(); - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool ReadHierarchy(FbxNode& pRootNode); - bool ResolveHierarchy(FbxNode& pRootNode); - bool ResolveLinks(FbxNode& pRootNode, FbxNode& pCurrentNode); - bool ResolveTargets(FbxNode& pRootNode); - bool ResolveUpNodes(FbxNode& pRootNode); - bool ResolveCameraBackgrounds(FbxScene& pScene); - void RemoveDuplicateTextures(FbxScene& pScene); - void RemoveDuplicateMaterials(FbxScene& pScene); - - void ReadPose(FbxScene& pScene); - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - void ReadCameraSwitcher(FbxScene& pScene); - void ReorderCameraSwitcherIndices(FbxScene& pScene); - - void ReadGobo(FbxScene& pScene); - void ReadGoboSection(FbxScene& pScene); - void ReadGobo(FbxGobo& pGobo); - - void ReadCharacter(FbxScene& pScene); - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - void ReadFilterSet(FbxCharacter& pCharacter); - void ReadControlSet(FbxControlSet& pControlSet); - void ReadControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId); - void ReadControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId); - void ReadEffector(FbxControlSet& pControlSet); - void ReadEffectorAux(FbxControlSet& pControlSet); - - int ReadCharacterPose(FbxScene& pScene); - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); - - void ReadGlobalLightSettings(FbxScene& pScene); - void ReadShadowPlane(FbxScene& pScene); - void ReadAmbientColor(FbxScene& pScene); - void ReadFogOption(FbxScene& pScene); - - void ReadGlobalCameraAndTimeSettings(FbxScene& pScene); // for pre v6 files - void ReadGlobalTimeSettings(FbxScene& pScene); - - void ReadGlobalCameraSettings(FbxScene& pScene); - - bool ReadMedia(FbxScene& pScene, const char* pEmbeddedMediaDirectory = ""); - FbxString ReadMediaClip(const char* pEmbeddedMediaDirectory); - - bool ReadNode ( FbxNode& pNode ); - bool ReadGenericNode ( FbxGenericNode& pNode ); - bool ReadNodeChildrenName ( FbxNode& pNode ); - bool ReadNodeShading ( FbxNode& pNode ); - bool ReadNodeCullingType ( FbxNode& pNode ); - bool ReadNodeLimits ( FbxNode& pNode ); - bool ReadNodeTarget ( FbxNode& pNode ); - bool ReadNodeAttribute ( FbxNode& pNode ); - bool ReadNodePivots ( FbxNode& pNode ); - bool ReadNodeDefaultAttributes ( FbxNode& pNode ); - bool ReadNodeProperties ( FbxNode& pNode ); - bool ReadGeometry ( FbxGeometry& pGeometry ); - bool ReadGeometryMaterial ( FbxGeometry& pGeometry ); - bool ReadGeometryTexture ( FbxGeometry& pGeometry ); - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - bool ReadGeometryLayer ( FbxGeometry& pGeometry ); - bool ReadGeometryTextureLayer ( FbxGeometry& pGeometry, int pLayerIndex ); - - bool ReadNull ( FbxNull& pNull ); - - bool ReadMarker ( FbxMarker& pMarker ); - - bool ReadCamera ( FbxCamera& pCamera ); - bool ReadCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool ReadLight ( FbxLight& pLight ); - - bool ReadMesh ( FbxMesh& pMesh ); - bool ReadMeshVertices ( FbxMesh& pMesh ); - bool ReadMeshNormals ( FbxMesh& pMesh ); - bool ReadMeshAssignation ( FbxMesh& pMesh ); - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - bool ReadMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool ReadMeshMaterialsID ( FbxMesh& pMesh ); - bool ReadMeshTexturesID ( FbxMesh& pMesh ); - bool ReadMeshTextureType ( FbxMesh& pMesh ); - bool ReadMeshTextureUV ( FbxMesh& pMesh ); - bool ReadMeshTextureIndex ( FbxMesh& pMesh ); - bool ReadMeshVertexColors ( FbxMesh& pMesh ); - - - // Layer elements - bool ReadLayerElements (FbxGeometry& pGeometry); - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture); - bool ReadLayerElementsUV (FbxGeometry* pGeometry, FbxArray& pElementsUV); - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - bool ReadNurb ( FbxNurbs& pNurbs ); - - bool ReadPatch ( FbxPatch& pPatch ); - int ReadPatchType ( FbxPatch& pPatch ); - - bool ReadTexture(FbxFileTexture& pTexture); - bool ReadSurfaceMaterial(FbxSurfacePhong& pMaterial); - bool ReadLink(FbxCluster& pLink); - bool ReadSkin(FbxSkin& pSkin); - bool ReadCluster(FbxCluster& pCluster); - bool ReadShape(FbxShape& pShape, FbxGeometry& pGeometry); - bool ReadVideo(FbxVideo& pVideo); - bool ReadConstraint(FbxConstraint& pPosition); - - bool ReadUserProperties (FbxNode& pNode); - bool ReadProperties(FbxObject *pObject); - - // - // 6.0 Format specific - // - bool ReadConnectionSection(); - void ReadPoses(FbxScene& pScene); - - FbxString ConvertCameraName(FbxString pCameraName); - - bool GenerateParametricGeometryLayer(FbxGeometry& pGeometry); - void CorrectTextureLayers(FbxMesh& pMesh); - - void TransferAnimation(void* pRootCurveNode, FbxProperty& pRootProperty, bool pValueOnly = false); - void ReadAnimation(FbxIO& pFileObject, void* pCurveNode); - void ReadAnimation(FbxIO& pFileObject, FbxObject* pObj); - - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet); - void DestroyTimeWarps(FbxMultiMap& pTimeWarpSet); - - FbxNode* FindNode (char* pName); - int FindString(FbxString pString, FbxArray& pStringArray); - FbxString FindFile(FbxString pFullFilePath, FbxString pRelativeFilePath = ""); - - bool ReadPassword(FbxString pPassword); - - void ReadSceneGenericPersistenceSection(FbxScene& pScene); - - - - -private: - FbxReaderFbx5& operator=(FbxReaderFbx5 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - - FbxCharPtrSet mNodeArrayName; - FbxCharPtrSet mTargetArrayName; - FbxCharPtrSet mUpNodeArrayName; - FbxCharPtrSet mCameraBackgroundArrayName; - - FbxObjectStringMap mObjectMap; - FbxArray mTakeInfo; - FbxDocumentInfo * mSceneInfo; - FbxAnimLayer* mAnimLayer; - - // Temporary storage - FbxArray mTemporaryTextures; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX5_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h deleted file mode 100644 index 55af3f4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h +++ /dev/null @@ -1,1102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX6_H_ - -#include - -#include - -class FbxAnimStack; -class FbxAnimLayer; -class Fbx6ObjectTypeInfo; -class Fbx6TypeReadReferences; - - -/** \brief Helper class to merge Class root property templates. - * Add class id and object to the template and search object by - * class id. - */ -class Fbx6ClassTemplateMap -{ -public: - - /** Constructor - * - */ - Fbx6ClassTemplateMap(); - - /** Destructor - * - */ - ~Fbx6ClassTemplateMap(); - - // Fbx6ClassTemplateMap will own this template object. - - /** Add the template object to template map - * \param pId Class Id - * \param pTemplateObject template object - * \return if the object is successfully added return \c true, otherwise return \c false. - */ - bool AddClassId( FbxClassId pId, FbxObject* pTemplateObject ); - - /** Merge the properties of FbxObject with the object with the same class id - * \param pObject The FbxObject to merge - * \return if the object is merged return \c true, otherwise return \c false. - */ - bool MergeWithTemplate( FbxObject* pObject ) const; - - /** Delete all FbxObject in template map - * - */ - void Clear(); - -private: - typedef FbxMap< FbxClassId, FbxObject*, FbxClassIdCompare > MapType; - MapType mClassMap; - - /** Whether the property is modified - * \param lProp The property to check - * \return If the property has been modified return \c true, otherwise return \c false - */ - bool HasModifiedFlags(FbxProperty lProp) const; - inline FbxPropertyFlags::EFlags IndexToFlag( int i ) const { return static_cast(1 << i); } -}; - - - -/** \brief This class is the FBX v6 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx6 : public FbxReader -{ -public: - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx6(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx6(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with FbxFile handle - * \param pFile the FbxFile handle - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(FbxFile * pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Get current Import mode - * \return return the EImportMode value - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - - /** Read all the properties and flags - * \param pParams settings to assign properties and flags - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - - /** Read scene information - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(); - - /** Read scene information by type - * \param pType the type to read - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - - /** Write scene information - * - */ - void WriteSceneInfo(FbxDocumentInfo*); - - /** Write thumbnail - * - */ - bool WriteThumbnail(FbxThumbnail*); - - /** - * \name FBX File sections - */ - //@{ - - /** Create generic object and connect with FbxIO document - * \param pDocument FbxDocument to connect with the generic object - * \param pObjectType type of generic object - * \param pObjectSubType Subtype of generic object - * \param pObjectName Name of generic object - * \param pFlags Object flag - * \return A pointer of the generic object. Return \c NULL if creation fails. - */ - FbxObject* CreateGenericObject(FbxDocument *pDocument, char* pObjectType, char* pObjectSubType, char* pObjectName, FbxObject::EObjectFlag pFlags=FbxObject::eSavable); - - /** Read description section and assign the document name - * \param pDocument Document to read - * \param pDocumentName Document name to assign - * \return if reading description section is successful return \c true, otherwise return \c false. - */ - bool ReadDescriptionSection(FbxDocument *pDocument, FbxString& pDocumentName); - - /** Read reference section and fill the external references - * \param pDocument Document to read - * \param pDocReferences External references to fill - * \return if reading reference section is successful return \c true, otherwise return \c false. - */ - bool ReadReferenceSection(FbxDocument *pDocument, Fbx6TypeReadReferences& pDocReferences); - - /** Read definition section and fill object type info array - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \return if reading definition section is successful return \c true, otherwise return \c false. - */ - bool ReadDefinitionSection(FbxDocument *pDocument, FbxArray& pObjectContent ); - - /** Read object section and fill object type info array and external reference - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \param pDocReferences External references to fill - * \return if reading object section is successful return \c true, otherwise return \c false. - */ - bool ReadObjectSection(FbxDocument *pDocument, FbxArray& pObjectContent, Fbx6TypeReadReferences& pDocReferences ); - - /** Read object information from document - * \param pDocument Document to read - * \param pObjectType Object type to assign - * \param pObjectSubType Object subtype to assign - * \param pObjectName Object Name - * \param pObjectUniqueId Object unique id - * \param pReferencedObject Reference object - * \param pDocReferences External reference - * \return if reading object is successful return \c true, otherwise return \c false. - */ - bool ReadObject(FbxDocument *pDocument, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject, Fbx6TypeReadReferences& pDocReferences); - - /** Read the connection section from document - * \param pDocument Document to read - * \return if reading connection section is successful return \c true, otherwise return \c false. - */ - bool ReadConnectionSection(FbxDocument *pDocument ); - //@} - - /** - * \name Takes and animation - */ - //@{ - - /** Read animation from document - * \param pDocument Document to read - * \return if reading animation is successful return \c true, otherwise return \c false. - */ - bool ReadDocumentAnimation(FbxDocument *pDocument); - - /** Read object animation from file object - * \param pFileObject File object handle - * \param pNode Fill this node with animation - * \param pAnimStack Animation stack to read from - * \param pExceptionFlag Exception flag - */ - void ReadObjectAnimation(FbxIO& pFileObject, FbxObject* pNode, FbxAnimStack& pAnimStack, int pExceptionFlag); - - /** Read property animation from file object - * \param pFileObject File object handle - * \param pProp Fill the property with animation - * \param pAnimStack Animation stack to read from - */ - void ReadPropertyAnimation(FbxIO& pFileObject, FbxProperty* pProp, FbxAnimStack& pAnimStack); - - /** Read take animation from fbx scene - * \param pScene Scene to read animation - * \param pTakeInfo Take info to read from - * \remarks This function will allocate the corresponding FbxAnimStack with the base animation layer. - */ - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - - /** Read node animation from file - * \param pFileObject File object to read - * \param pScene Scene to read animation - * \param pAnimStack The animation stack to read from - * \param pTakeInfo Take info to read from - */ - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxAnimStack& pAnimStack, FbxTakeInfo* pTakeInfo); - - - /** Read layer information from file - * \param pFileObject File object to read - * \param pTakeInfo Take info to read from - */ - void ReadLayers(FbxIO& pFileObject, FbxTakeInfo* pTakeInfo); - - /** Read time warps from file - * \param pFileObject File object to read - * \param pTimeWarpSet Time warp set to fill - * \param pScene Scene holding the time warp curves. - */ - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet, FbxScene& pScene); - - /** Read thumbnail - * \return A pointer of thumbnail. Return \c NULL if any error exist - */ - FbxThumbnail* ReadThumbnail(); - - /** Set time shift for node animation from take information - * \param pScene Scene to read - * \param pAnimStack The animation stack to modify - * \param pTimeOffsetType A value from the FbxTakeInfo::EImportOffsetType enumeration that indicates the time shift offset type - * \param pTimeOffset The time shift offset - * \return if time shifting is successful return \c true, otherwise return \c false. - */ - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxAnimStack& pAnimStack, int pTimeOffsetType, FbxTime pTimeOffset); - //@} - - /** - * \name Camera switcher - */ - //@{ - - /** Read camera switcher from scene - * \param pScene Scene to read from - */ - void ReadCameraSwitcher(FbxScene& pScene); - - /** Fill camera switcher object with data - * \param pCameraSwitcher Camera switcher to fill - */ - bool ReadCameraSwitcher( FbxCameraSwitcher& pCameraSwitcher ); - - /** Reorder camera switcher indices in the scene - * \param pScene Scene to read from - */ - void ReorderCameraSwitcherIndices(FbxScene& pScene); - //@} - - /** - * \name Global parameters - */ - //@{ - - /** Read global light settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalLightSettings(FbxScene& pScene); - - /** Read global time settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalTimeSettings(FbxScene& pScene); - - /** Read global camera settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalCameraSettings(FbxScene& pScene); - - /** Read shadow plane from scene - * \param pScene Scene to read from - */ - void ReadShadowPlane(FbxScene& pScene); - - /** Read ambient color from scene - * \param pScene Scene to read from - */ - void ReadAmbientColor(FbxScene& pScene); - - /** Read fog option from scene - * \param pScene Scene to read from - */ - void ReadFogOption(FbxScene& pScene); - //@} - - /** - * \name Character - */ - //@{ - - /** Read character information from file - * \param pCharacter Character object to fill - * \param pInputType Unused. - * \param pInputIndex Unused. - */ - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - - /** Read character link group information from file by group id - * \param pCharacter Character object to fill - * \param pCharacterGroupId Group id to read character link - */ - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - - /** Read character link information from file by node id - * \param pCharacter Character object to fill - * \param pCharacterNodeId Character node id - */ - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - - /** Read character link formation in rotation space - * \param pCharacterLink Character link object to fill - */ - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - /** Read character pose from file - * \param pCharacterPose Character pose to fill - * \return if reading character pose is successful return \c true, otherwise return \c false. - */ - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); // TBV - //@} - - /** - * \name Misc - */ - //@{ - /** Read pose object from scene - * \param pScene Scene to read from - * \param pPose Pose object - * \param pAsBindPose whether to treat the pose as BindPose - * \return if reading pose is successful return \c true, otherwise return \c false. - */ - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - /** Read media data from document - * \param pDocument Document to read from - * \param pEmbeddedMediaDirectory the directory path storing the embedded media - * \return if reading media is successful return \c true, otherwise return \c false. - */ - bool ReadMedia(FbxDocument *pDocument, const char* pEmbeddedMediaDirectory = ""); - - /** Read global settings from file - * \param pGlobalSettings global settings object to fill - * \return if reading global settings is successful return \c true, otherwise return \c false. - */ - bool ReadGlobalSettings(FbxGlobalSettings& pGlobalSettings); - //@} - - /** - * \name Objects - */ - //@{ - - /** Read node data from file - * \param pNode Node object to fill data - * \param pObjectSubType Subtype of object - * \param pDocReferences External reference - * \return if reading node data is successful return \c true, otherwise return \c false. - */ - bool ReadNode ( FbxNode& pNode, FbxString& pObjectSubType, Fbx6TypeReadReferences& pDocReferences ); - - /** Read properties and flags for fbx container - * \param pContainer container to fill data - * \return if reading data to container is successful return \c true, otherwise return \c false. - */ - bool ReadContainer ( FbxContainer& pContainer ); - - /** Read properties and flags for fbx generic node - * \param pNode generic node to fill data - * \return if reading data to generic node is successful return \c true, otherwise return \c false. - */ - bool ReadGenericNode ( FbxGenericNode& pNode ); - - /** Read shading information of node - * \param pNode fbx node to fill shading information - * \return if reading shading information to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeShading ( FbxNode& pNode ); - - /** Read back-face culling type for node - * \param pNode fbx node - * \return if reading culling type to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeCullingType ( FbxNode& pNode ); // TBV, probablement passe tout en property - - /** Read target transform for node - * \param pNode fbx node - * \return if reading target transform to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeTarget ( FbxNode& pNode ); - - /** Read node attribute according to object subtype - * \param pNode fbx node - * \param pObjectSubType object subtype - * \param pCreatedAttribute set to true if attribute exists - * \param pDocReferences external reference to search - * \return if reading node attribute is successful return \c true, otherwise return \c false. - */ - bool ReadNodeAttribute ( FbxNode& pNode , FbxString& pObjectSubType, bool& pCreatedAttribute, Fbx6TypeReadReferences& pDocReferences); - - /** Read node attribute according to object subtype - * \param pObjectSubType object subtype - * \param pObjectName object name - * \param pObjectUniqueId unique id of object - * \param pReferencedObject pointer of reference object - * \return A pointer of node attribute. Return \c NULL if the attribute does not exist - */ - FbxNodeAttribute* ReadNodeAttribute( FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject); - - /** Read node properties , flags and update the - * node pivot and limits according to properties - * \param pNode FBX node - * \param pReadNodeAttributeProperties whether to - * \return if reading node properties is successful return \c true, otherwise return \c false. - */ - bool ReadNodeProperties ( FbxNode& pNode, bool pReadNodeAttributeProperties ); - - /** Read layered texture from file - * \param pTex Layered texture to fill - * \return if reading layered texture is successful return \c true, otherwise return \c false. - */ - bool ReadLayeredTexture ( FbxLayeredTexture& pTex ); - - /** Read FBX links for geometry - * \param pGeometry FBX geometry - * \return if reading geometry links is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - - /** Read FBX shapes for geometry - * \param pGeometry FBX geometry - * \return if reading geometry shapes is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - - /** Read the null node from file - * \param pNull Null node - * \return if reading null node is successful return \c true, otherwise return \c false. - */ - bool ReadNull ( FbxNull& pNull ); - - /** Read the marker node from file - * \param pMarker Marker node - * \return if reading marker node is successful return \c true, otherwise return \c false. - */ - bool ReadMarker ( FbxMarker& pMarker ); - - /** Read the camera node from file - * \param pCamera Camera node - * \return if reading camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCamera ( FbxCamera& pCamera ); - - /** Read the stereo camera node from file - * \param pCameraStereo Stereo camera node - * \return if reading stereo camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereo ( FbxCameraStereo& pCameraStereo ); - - /** Read the precomp file from binary file - * \param pCameraStereo Stereo camera node - * \return if reading precomp file is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereoPrecomp (FbxCameraStereo& pCameraStereo); - - /** Read the light node from file - * \param pLight light node - * \return if reading light node is successful return \c true, otherwise return \c false. - */ - bool ReadLight ( FbxLight& pLight ); - - /** Read the binding table node from file. - * Create all the binding table entries and fill with embedded data - * \param pTable binding table - * \return if reading binding table is successful return \c true, otherwise return \c false. - */ - bool ReadBindingTable ( FbxBindingTable& pTable ); - - /** Read the binding operator from file - * \param pOperator binding operator - * \return if reading binding operator is successful return \c true, otherwise return \c false. - */ - bool ReadBindingOperator ( FbxBindingOperator& pOperator ); - - /** Read vertices, polygon indices, edges, layer elements, geometry links and shapes to mesh object - * \param pMesh fbx mesh - * \return if reading mesh object is successful return \c true, otherwise return \c false. - */ - bool ReadMesh ( FbxMesh& pMesh ); - - /** Read mesh smoothness factor from mesh - * \param pMesh fbx mesh - * \return if reading mesh smoothness is successful return \c true, otherwise return \c false. - */ - bool ReadMeshSmoothness ( FbxMesh& pMesh ); - - /** Read vertices of mesh object - * \param pMesh fbx mesh - * \return if reading mesh vertices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshVertices ( FbxMesh& pMesh ); - - /** Read polygon indices of mesh object - * \param pMesh fbx mesh - * \return if reading polygon indices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - - /** Read edges of mesh object - * \param pMesh fbx mesh - * \return if reading mesh edges is successful return \c true, otherwise return \c false. - */ - bool ReadMeshEdges ( FbxMesh& pMesh ); - - //** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - //* \param pSubdiv fbx subdiv - //* \param pObjectName Object Name - //* \param pReferencedObject pointer of reference object - //* \return if reading subdiv object is successful return \c true, otherwise return \c false. - //*/ - //bool ReadSubdiv( FbxSubDiv& pSubdiv, FbxString& pObjectName, FbxObject* pReferencedObject); - - /** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - * \param pSubdiv fbx subdiv - * \return if reading subdiv object is successful return \c true, otherwise return \c false. - */ - bool ReadSubdiv( FbxSubDiv& pSubdiv); - - /** Read properties and flags for fbx document - * \param pSubDocument fbx document - * \return if reading document information is successful return \c true, otherwise return \c false. - */ - bool ReadDocument ( FbxDocument& pSubDocument ); - - /** Read properties and flags for fbx collection - * \param pCollection fbx collection - * \return if reading fbx collection is successful return \c true, otherwise return \c false. - */ - bool ReadCollection ( FbxCollection& pCollection ); - - /** Read properties and flags for fbx selection set - * \param pSelectionSet fbx selection set - * \return if reading fbx selection set is successful return \c true, otherwise return \c false. - */ - bool ReadSelectionSet ( FbxSelectionSet& pSelectionSet); - - bool ReadSelectionNode (FbxSelectionNode& pSelectionNode); - - /** Read nurb data including surface types, nurb type, display type, steps, control points and UV. - * \param pNurbs Nurb object - * \return if reading nurb data is successful return \c true, otherwise return \c false. - */ - bool ReadNurb ( FbxNurbs& pNurbs ); - - /** Read nurb surface data including surface types, surface type, display type, steps, control points and UV vectors. - * \param pNurbs Nurb surface object - * \return if reading nurb surface data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsSurface ( FbxNurbsSurface& pNurbs ); - - /** Read patch data including patch type, dimension, display type, steps, UV cap and control points. - * \param pPatch Patch object - * \return if reading patch data is successful return \c true, otherwise return \c false. - */ - bool ReadPatch ( FbxPatch& pPatch ); - - /** Read patch type in string and return type in enum - * \param pPatch Patch object - * \return patch type in enum - */ - int ReadPatchType ( FbxPatch& pPatch ); - - - /** Read nurb curve data including types, dimension, rational-ness, control points and knots. - * \param pNurbsCurve Nurb curve - * \return if reading nurb curve data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsCurve ( FbxNurbsCurve& pNurbsCurve ); - - /** Read trim Nurb surface objects with properties - * \param pNurbs Trim nurb surface * \return if reading trim nurb surface is successful return \c true, otherwise return \c false. - */ - bool ReadTrimNurbsSurface ( FbxTrimNurbsSurface& pNurbs ); - - /** Read properties and flags of fbx boundary - * \param pBoundary Fbx boundary object - * \return if reading fbx boundary is successful return \c true, otherwise return \c false. - */ - bool ReadBoundary ( FbxBoundary& pBoundary ); - - /** Read shape object properties from file - * \param pShape Fbx Shape - * \param pGeometry Geometry contains the shape - * \return if reading shape object properties is successful return \c true, otherwise return \c false. - */ - bool ReadShape ( FbxShape& pShape, FbxGeometry& pGeometry); - - /** Read properties and flags of fbx implementation - * \param pImplementation Fbx implementation - * \return if reading fbx implementation is successful return \c true, otherwise return \c false. - */ - bool ReadImplementation ( FbxImplementation& pImplementation ); - - /** Read texture object data including name, UV transform, alpha and cropping. - * \param pTexture Fbx texture object - * \return if reading texture object is successful return \c true, otherwise return \c false. - */ - bool ReadFileTexture (FbxFileTexture& pTexture); - - /** Read surface material from file - * \param pName Material Name - * \param pMaterialType Material type - * \param pReferencedMaterial Reference material to clone from if it is not \c NULL - * \return A pointer of read surface material - */ - FbxSurfaceMaterial* ReadSurfaceMaterial(const char* pName, const char* pMaterialType, FbxSurfaceMaterial* pReferencedMaterial); - - /** Read video object from file - * \param pVideo Fbx video object - * \return if reading video object is successful return \c true, otherwise return \c false. - */ - bool ReadVideo (FbxVideo& pVideo); - - /** Read thumbnail object from file - * \param pThumbnail Fbx thumbnail - * \return if reading thumbnail is successful return \c true, otherwise return \c false. - */ - bool ReadThumbnail (FbxThumbnail& pThumbnail); - //@} - - - /** - * \name Layer elements - */ - //@{ - - /** Read all layer elements for geometry - * \param pGeometry geometry to fill - * \return if reading all layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElements (FbxGeometry& pGeometry); - - /** Read material layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsMaterial material layer element array - * \return if reading material layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - - /** Read normal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsNormal normal layer element array - * \return if reading normal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - - /** Read Tangent layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTangent Tangent layer element array - * \return if reading Tangent layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTangent (FbxGeometry* pGeometry, FbxArray& pElementsTangent); - - /** Read Binormal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsBinormal Binormal layer element array - * \return if reading Binormal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsBinormal (FbxGeometry* pGeometry, FbxArray& pElementsBinormal); - - /** Read vertex color layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexColor vertex color layer element array - * \return if reading vertex color layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - - /** Read texture layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTexture texture layer element array - * \param pTextureType the type of elements to read - * \return if reading texture layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture, FbxLayerElement::EType pTextureType); - - /** Read UV layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUV UV layer element array - * \param pTextureType the type of elements to read - * \return if reading UV layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsChannelUV (FbxGeometry* pGeometry, FbxArray& pElementsUV, FbxLayerElement::EType pTextureType); - - /** Read polygon group layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsPolygonGroup polygon group layer element array - * \return if reading polygon group layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - /** Read smoothing layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsSmoothing Smoothing group layer element array - * \return if reading smoothing layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsSmoothing (FbxGeometry* pGeometry, FbxArray& pElementsSmoothing); - - /** Read user data layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUserData User data layer element array - * \return if reading user data layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsUserData (FbxGeometry* pGeometry, FbxArray& pElementsUserData); - - /** Read visibility layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVisibility visibility layer element array - * \return if reading visibility layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVisibility (FbxGeometry* pGeometry, FbxArray& pElementsVisibility); - - /** Read edge crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsEdgeCrease edge crease layer element array - * \return if reading edge crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementEdgeCrease (FbxGeometry*pGeometry, FbxArray& pElementsEdgeCrease); - - /** Read vertex crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexCrease vertex crease layer element array - * \return if reading vertex crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementVertexCrease (FbxGeometry*pGeometry, FbxArray& pElementsVertexCrease); - - /** Read hole layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsHole hole layer element array - * \return if reading hole layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementHole (FbxGeometry*pGeometry, FbxArray& pElementsHole); - //@} - - /** - * \name Geometry weighted maps - */ - //@{ - - /** Read geometry weight map from file - * \param pGeometryWeightedMap geometry weighted - * \return if reading geometry weight map is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - //@} - - /** - * \name Deformers / Constraints - */ - //@{ - - /** Read link object from file - * \param pLink fbx link object - * \return if reading link object is successful return \c true, otherwise return \c false. - */ - bool ReadLink(FbxCluster& pLink); - - /** Read SDK skin from file - * \param pSkin SDK skin object - * \return if reading skin object is successful return \c true, otherwise return \c false. - */ - bool ReadSkin(FbxSkin& pSkin); - - /** Read properties and flags for vertex cache deformer from file - * \param pDeformer fbx vertex cache deformer - * \return if reading vertex cache deformer is successful return \c true, otherwise return \c false. - */ - bool ReadVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - - /** Read cluster object data from file - * \param pCluster fbx cluster object - * \return if reading cluster object is successful return \c true, otherwise return \c false. - */ - bool ReadCluster(FbxCluster& pCluster); - - /** Read constraint object from file - * \param pPosition fbx constraint object - * \return if reading constraint object is successful return \c true, otherwise return \c false. - */ - bool ReadConstraint(FbxConstraint& pPosition); - //@} - - // Cache - - /** Read fbx cache file - * \param pCache fbx cache - * \return if reading cache data is successful return \c true, otherwise return \c false. - */ - bool ReadCache(FbxCache& pCache); - - /** - * \name Post-processing / utility functions - */ - //@{ - - /** Make sure the Camera's background textures are properly connected - * \param pScene fbx scene - * \remarks This function only applies when it detects older file versions in - * which the background texture is connected directly to the object instead of - * the corresponding property. - */ - bool ResolveCameraBackgrounds(FbxScene& pScene); - - /** Remove duplicate textures in the same scene - * \param pScene fbx scene - */ - void RemoveDuplicateTextures(FbxScene& pScene); - - /** Replace textures in the geometry - * \param pTextureDuplicate texture array - * \param pTextureReplacement texture array to replace - * \param pGeometry geometry owns these textures - * \param pTextureType layer element type - */ - void ReplaceTextures(FbxArray const& pTextureDuplicate, - FbxArray const& pTextureReplacement, - FbxGeometry* pGeometry, FbxLayerElement::EType pTextureType); - - /** Remove duplicated materials in the same scene - * \param pScene FBX scene - */ - void RemoveDuplicateMaterials(FbxScene& pScene); - - /** convert camera name for naming convention - * \param pCameraName original camera name - * \return new name for the camera - */ - FbxString ConvertCameraName(FbxString pCameraName); - - /** Search string in a string array - * \param pString the string to search - * \param pStringArray string array - * \return return the index of the array if the string is found, otherwise return \c -1 - */ - int FindString(FbxString pString, FbxArray& pStringArray); - - /** Read password from string - * \param pPassword password in string - * \return if the password is valid return \c true, otherwise return \c false - */ - bool ReadPassword(FbxString pPassword); - - /** Publish properties - * \param pObject fbx object - */ - void PublishProperties(FbxObject& pObject); - - /** Read properties for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - */ - bool ReadProperties(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - - /** Read properties and flags for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - * \return if reading properties and flags is successful return \c true, otherwise return \c false. - */ - bool ReadPropertiesAndFlags(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - /** Read flags for fbx object from file object - * \param pFbxObject object to set flags - * \param pFbxFileObject file to read - * \return if reading flags is successful return \c true, otherwise return \c false. - */ - bool ReadFlags(FbxObject *pFbxObject, FbxIO* pFbxFileObject); - - /** Rebuild trim regions indices from the boundary connections - * \param pScene Fbx scene - */ - void RebuildTrimRegions(FbxScene& pScene) const; - - /** Rebuild subdivision object from subdiv-mesh connections - * \param pScene Fbx scene - */ - void SetSubdivision(FbxScene& pScene) const; - - /** Convert shape deform property to DeformPercent property of FbxBlendShapeChannel - * \param pScene Fbx scene - */ - void ConvertShapeDeformProperty(FbxScene& pScene) const; - - /** Rebuild layered texture alphas from sub texture connections. - * \param pScene Fbx scene - */ - void RebuildLayeredTextureAlphas(FbxScene& pScene) const; - - //---------------- in progress ------------------------------- - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - //--------------- end in progress ---------------------------- - - /** Read global settings, axis system, system unit from main section of file - * - */ - void ReadGlobalSettingsInMainSection(); - - /** Read statistic data from definition section - * - */ - void ReadDefinitionSectionForStats(); - //@} - -private: - - FbxReaderFbx6& operator=(FbxReaderFbx6 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - FbxCharPtrSet mNodeArrayName; - FbxObjectStringMap mObjectMap; - - bool mParseGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnit; - FbxTime::EMode mFrameRate; - - bool mRetrieveStats; - FbxStatistics* mDefinitionsStatistics; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxAnimLayer* mAnimLayer; - FbxMultiMap mNickToKFCurveNodeTimeWarpsSet; - FbxMultiMap* mNickToAnimCurveTimeWarpsSet; - - Fbx6ClassTemplateMap mClassTemplateMap; - FbxProgress* mProgress; - bool mProgressPause; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX6_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h deleted file mode 100644 index d8f420b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX7_H_ - -#include - -#include - -struct FbxReaderFbx7_Impl; - -/** \brief This class is the FBX v7 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx7 : public FbxReader -{ -public: - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx7(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx7(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with default flag - */ - virtual bool FileOpen(FbxFile* pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** Get current Import mode - * - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo(); - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxReaderFbx7(const FbxReaderFbx7&); - FbxReaderFbx7& operator=(FbxReaderFbx7 const&); - -private: - FbxReaderFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX7_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h deleted file mode 100644 index d1d2849..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ - -#include - -#include - -//Writable versions for this file type. -//Sync the functions PreProcessScene and PostProcessScene with these elements of this list. - -class FbxWriterFbx5 : public FbxWriter -{ -public: - FbxWriterFbx5(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx5(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - - virtual bool SupportsStreams() const { return true; } - -private: - bool WriteAnimation(FbxScene& pScene); - bool WriteAnimation(FbxNode& pRootNode, FbxAnimLayer* pAnimLayer); - void WriteTakeNode(KFCurveNode* pCurveNode, bool pRescaleShininess); - bool WriteTakeNode(FbxObject& pObj, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pRescaleShininess = false); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - void WriteSceneInfo(FbxDocumentInfo*); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - bool WriteNode(FbxNode* pNode); - - bool WriteCameraSwitcher(FbxScene& pScene); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - void WriteCharacter(FbxScene& pScene); - void WriteCharacter(FbxScene& pScene, int pCharacterIndex); - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene, bool pBackwardCompatible); - void WriteFilterSet(FbxCharacter& pCharacter); - void WriteControlSet(FbxControlSet& pControlSet, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId, FbxScene& pScene); - void WriteEffector(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - void WriteEffectorAux(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WritePose(FbxScene& pScene); - void WritePose(FbxPose& pPose); - - void WriteConstraint(FbxScene& pScene); - - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraAndTimeSettings(FbxScene& pScene); - - bool WriteMedia(FbxScene& pScene, bool pMediaEmbedded, int& pMediaCount); - bool WriteMediaClip(FbxString& pFileName, bool pEmbeddedMedia); - void WriteDefaultMedia(); - - bool WriteNode (FbxNode& pNode); - bool WriteNodeBegin (FbxNode& pNode); - bool WriteNodeParameters (FbxNode& pNode); - bool WriteNodeVersion (FbxNode& pNode); - bool WriteNodeShading (FbxNode& pNode); - bool WriteNodeAnimationSettings (FbxNode& pNode); - bool WriteNodeCullingType (FbxNode& pNode); - bool WriteNodeLimits (FbxNode& pNode); - bool WriteNodeProperties (FbxNode& pNode); - bool WriteNodeTarget (FbxNode& pNode); - bool WriteNodeAnimatedProperties(FbxNode& pNode); - bool WriteNodeAttribute (FbxNode& pNode); - bool WriteNodeDefaultAttributes (FbxNode& pNode); - bool WriteNodeChildrenList (FbxNode& pNode); - bool WriteNodeEnd (FbxNode& pNode); - - bool WriteNull ( FbxNull* pNull ); - - bool WriteMarker ( FbxNode& pNode ); - - bool WriteCamera ( FbxCamera& pCamera, bool pIsProducerCamera = false ); - - bool WriteCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool WriteLight ( FbxLight& pLight ); - - bool WriteGeometry ( FbxGeometry& pGeometry ); - bool WriteGeometryLayer ( FbxGeometry& pGeometry ); - bool WriteGeometryTextureLayer ( FbxGeometry& pGeometry, int pIndex ); - - bool WriteMesh ( FbxMesh& pMesh ); - bool WriteMeshVertices ( FbxMesh& pMesh ); - bool WriteMeshNormals ( FbxMesh& pMesh ); - bool WriteMeshMaterial ( FbxMesh& pMesh ); - bool WriteMeshTexture ( FbxMesh& pMesh ); - bool WriteMeshGeometryUVInfo ( FbxMesh& pMesh ); - bool WriteMeshPolyVertexIndex ( FbxMesh& pMesh ); - bool WriteMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool WriteMeshVertexColors ( FbxMesh& pMesh ); - - bool WriteNurb ( FbxNurbs& pNurbs ); - - bool WritePatch ( FbxPatch& pPatch ); - bool WritePatchType ( FbxPatch& pPatch, int pType ); - - bool WriteSkeleton ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonRoot ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimb ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimbNode ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonEffector ( FbxSkeleton& pSkeleton ); - - bool WriteOpticalReference ( FbxOpticalReference& pOpticalReference ); - - bool WriteTexture(FbxFileTexture& pTexture); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - bool WriteLink(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - - bool WriteProperties(FbxObject* pObject); - - int FindString(FbxString pString, FbxArray& pStringArray); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - void ConvertShapeNamesToV5Format(FbxNode& pNode); - void RevertShapeNamesToV6Format (FbxNode& pNode); - - void WritePassword(); - - void FindAnimatedChannels(FbxScene& pScene); - void ClearAnimatedChannels(); - - void WriteSceneGenericPersistenceSection(FbxScene& pScene); - - void ForceKFCurveNodesOnTRS(FbxNode* pNode); - void SetPivotStateRecursive(FbxNode* pNode); - -private: - FbxWriterFbx5& operator=(const FbxWriterFbx5&) { return *this; } - - FbxIO* mFileObject; - FbxExporter& mExporter; - - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h deleted file mode 100644 index de3ccf6..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ - -#include - -#include - -class Fbx6TypeDefinition; -class Fbx6TypeWriteReferences; -class Fbx6TypeObjectHierarchy; - -typedef FbxArray TakeInfoArray; - -class FbxWriterFbx6 : public FbxWriter -{ -public: - FbxWriterFbx6(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx6(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum {eASCII, eBINARY, eENCRYPTED} EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual bool SupportsStreams() const { return true; } - -private: - /*************************** new writer ***************************/ - void ConvertShapePropertyToOldStyle(FbxScene& pScene); - void ConvertShapePropertyToNewStyle(FbxScene& pScene); - void BuildObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void SetObjectWriteSupport(const Fbx6TypeDefinition& pDefinitions); - bool WriteDescriptionSection(FbxDocument* pDocument); - bool WriteReferenceSection(FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences); - void WriteObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void WriteObjectProperties(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - - void FlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy, bool pFirstCall=true); - void UnFlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy); - bool WriteObjectHeaderAndReferenceIfAny(FbxObject& pObj, const char* pObjectType) const; - - FbxObject* GetObjectIndirection(FbxObject* pObject); - void WriteObjectConnections(FbxDocument* pDocument); - void WriteTakesAndAnimation(FbxDocument* pDocument); - - void WriteConstraints(FbxScene& pScene); - void WriteConstraint(FbxConstraint& pConstraint, FbxScene& pScene); - - void WriteGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - void WriteNodeAttributes(const FbxDocument& pDocument); - void WriteAllGeometries(FbxScene& pScene); - - void WriteAllGeometryWeightedMaps(FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene); - void WriteCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - void WriteControlSetPlug(FbxScene& pScene); - - /*************************** new writer ***************************/ - bool WriteNodes(FbxScene& pScene, bool pIncludeRoot); - bool WriteNodes(const FbxDocument& pDocument); - - /*************************** kept functions ***************************/ - bool WriteObjectProperties(FbxObject* pObject); - bool WriteObjectPropertiesAndFlags(FbxObject* pObject); - - bool WriteContainers(FbxScene& pScene); - - bool WriteNode(FbxNode& pNode); - bool WriteNodeBegin(FbxNode& pNode); - bool WriteNodeEnd(FbxNode& pNode); - bool WriteNodeParameters(FbxNode& pNode); - bool WriteNodeVersion(FbxNode& pNode); - bool WriteNodeAnimationSettings(FbxNode& pNode); - bool WriteNodeShading(FbxNode& pNode); - bool WriteNodeCullingType(FbxNode& pNode); - bool WriteNodeAttribute(FbxNodeAttribute* pNodeAttribute); - bool WriteNodeProperties(FbxNode& pNode); - - bool WriteNodeType(FbxNode& pNode); - bool WriteNull(FbxNull* pNull); - bool WriteMarker(FbxNode& pNode); - bool WriteSkeleton(FbxSkeleton& pSkeleton); - bool WriteSkeletonRoot(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimb(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimbNode(FbxSkeleton& pSkeleton); - bool WriteSkeletonEffector(FbxSkeleton& pSkeleton); - bool WriteGenericNodes(FbxScene& pScene); - - bool WriteGeometry(FbxGeometry& pGeometry); - bool WriteMesh(FbxMesh& pMesh); - bool WriteMeshSmoothness(FbxMesh& pMesh); - bool WriteMeshVertices(FbxMesh& pMesh); - bool WriteMeshPolyVertexIndex(FbxMesh& pMesh); - bool WriteMeshEdges(FbxMesh& pMesh); - bool WriteNurb(FbxNurbs& pNurbs); - bool WriteNurbsSurface(FbxNurbsSurface& pNurbs); - bool WriteNurbsCurve(FbxNurbsCurve& pNurbsCurve); - bool WriteTrimNurbsSurface(FbxTrimNurbsSurface& pNurbs); - bool WriteBoundary(FbxBoundary& pBoundary); - bool WriteSubdiv(FbxSubDiv& pSubdiv); - - bool WritePatch(FbxPatch& pPatch); - bool WritePatchType(FbxPatch& pPatch, int pType); - - bool WriteDeformers(FbxScene& pScene); - bool WriteSkin(FbxSkin& pSkin); - bool WriteVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - bool WriteCluster(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - bool WriteFbxLayerElementNormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementBinormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTangents(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementMaterials(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTextures(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTexturesChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - bool WriteFbxLayerElementUVsChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - - bool WriteFbxLayerElementPolygonGroups(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexColors(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUVs(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementSmoothing(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUserData(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVisibility(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementEdgeCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementHole(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - - bool WriteLayers(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - int MapLayeredTextureIndexToConnectionIndex(FbxNode* pNode, void* pLET, int pIndex); - - bool WriteMaterials(FbxDocument* pDocument); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - - bool WritePose(FbxScene& pScene); - - // Write Connections - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrcObject, FbxDocument* pDstDocument); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxProperty& pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxProperty& pDst); - - void WriteObjectConnections(FbxDocument* pDocument, FbxObject* pObject, bool pRecursive); - - bool WriteCamera(FbxCamera& pCamera); - bool WriteCameraStereo(FbxCameraStereo& pCameraStereo); - bool WriteLight(FbxLight& pLight); - bool WriteCameraSwitcher(FbxScene& pScene); - bool WriteCameraSwitcher(FbxCameraSwitcher& pCameraSwitcher); - - bool WriteTextures(FbxDocument* pDocument); - bool WriteTexture(FbxFileTexture& pTexture); - - bool WriteTimeWarps(FbxDocument* pDocument, FbxAnimStack* pAnimStack); - bool WriteThumbnails(FbxDocument* pDocument); - bool WriteThumbnail(FbxThumbnail& pThumbnail); - - bool WriteCaches(FbxDocument* pDocument); - bool WriteCache(FbxCache& pCache); - - bool WriteBindingTables(FbxDocument* pDocument); - bool WriteBindingTable(FbxBindingTable& pTable); - - bool WriteBindingOperators(FbxDocument* pDocument); - bool WriteBindingOperator(FbxBindingOperator& pOperator); - - bool WriteImplementations(FbxDocument* pDocument); - bool WriteImplementation(FbxImplementation& pImplementation); - - bool WriteCollections(FbxDocument* pDocument); - bool WriteCollection(FbxCollection& pImplementation); - - bool WriteDocuments(FbxDocument* pDocument); - bool WriteDocument(FbxDocument& pSubDocument); - - bool WriteLayeredTextures(FbxDocument* pDocument); - bool WriteLayeredTexture(FbxLayeredTexture& pTexture); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - bool WriteVideos(FbxDocument* pDocument); - bool WriteVideo(FbxVideo& pVideo, FbxString& pFileName, bool pEmbeddedMedia); - - bool WriteAnimation(FbxDocument* pDocument); - bool WriteAnimation(FbxDocument* pDocument, FbxAnimLayer* pAnimLayer); - - bool WriteFCurves(FbxObject& pObject, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pKeepBlockOpen=false, bool pRescaleShininess=false); - - void WritePose(FbxPose& pPose); - - bool WriteSelectionNode(FbxScene& pScene); - void WriteSelectionNode(FbxSelectionNode& pSelectionNode); - - bool WriteSelectionSet(FbxScene& pScene); - void WriteSelectionSet(FbxSelectionSet& pSelectionSet); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - - void WriteSceneInfo(FbxDocumentInfo*); - void WriteGlobalSettings(FbxGlobalSettings& pGlobalSettings); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - int FindString(FbxString pString, FbxArray& pStringArray); - - /****************** Function that write in the v5 section******************/ - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraSettings(FbxScene& pScene); - void WriteGlobalTimeSettings(FbxScene& pScene); - /****************** Function that write in the v5 section******************/ - - void WritePassword(); - - void WriteLayeredAnimation(FbxScene& pScene); - -private: - void WritePropertyTemplate(FbxClassId pClassId, FbxDocument* pDocument, bool& pVisitedNodeClass); - void WriteProperty(FbxProperty& pProperty, bool lSetNodeAttributeFlag); - void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode); - - FbxWriterFbx6& operator=(const FbxWriterFbx6&); - - FbxScene* mScene; - FbxIO* mFileObject; - FbxExporter& mExporter; - Fbx6TypeObjectHierarchy* mDocumentHierarchy; - Fbx6TypeWriteReferences* mDocumentReferences; - - bool mWriteNonDefaultPropertiesOnly; - bool mWriteEnhancedProperties; - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - FbxMultiMap mTimeWarpsCurveNodes; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; - - FbxNode* mCurrentNode; - - struct ModifiedPropertyInfo { FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void ReplaceUnsupportedProperties(FbxScene* pScene, bool pPreprocessPass, int pFormatV); - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - bool IsLeafRoll(const FbxString& pNameWithoutNameSpacePrefix); - - FbxProgress* mProgress; - bool mProgressPause; -}; - -bool IsNameUnique(FbxScene& pScene, FbxObject* pObject); - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h deleted file mode 100644 index b62f34e..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ - -#include - -#include - -struct FbxWriterFbx7_Impl; - -class FbxWriterFbx7 : public FbxWriter -{ -public: - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, EExportMode pMode, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx7(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual void SetProgressHandler(FbxProgress *pProgress); - - void SetExportMode(EExportMode pMode); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxWriterFbx7(const FbxWriterFbx7&); - FbxWriterFbx7& operator=(const FbxWriterFbx7&); - - struct ModifiedPropertyInfo{ FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - - void MakeNonSavableAndRemember(FbxObject* pObj); - FbxArray mSwitchedToNonSavablesObjects; - FbxArray mAnimLayerInternallyAdded; - -private: - FbxWriterFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxbase64coder.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxbase64coder.h deleted file mode 100644 index abbd14c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxbase64coder.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbase64coder.h -#ifndef _FBXSDK_FILEIO_BASE64CODER_H_ -#define _FBXSDK_FILEIO_BASE64CODER_H_ - -#include - -#include - -#include - -/** This class decodes Base64 encoded data. */ -class FBXSDK_DLL FbxBase64Decoder -{ -public: - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data. - * \param pInSize the size of the input data in bytes (must be a multiple of 4) - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer, or -1 if the output buffer is too small, or contains invalid characters */ - int Decode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data; its length is computed using strlen(). - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer. */ - int Decode(const char* pInBuffer, void* pOutBuffer, int pOutSize); -}; - -/** This class encodes data in the Base64 format. */ -class FBXSDK_DLL FbxBase64Encoder -{ -public: - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer, receives data encoded in Base64. - * \param pOutSize the capacity of the output buffer in bytes, which should be at least 33% larger than the input buffer size, or 4 bytes whichever is more. - * \return the number of bytes put in the output buffer, or -1 if we ran out of room. */ - int Encode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer; data is set, not appended. - * \return the number of bytes put in the output buffer. */ - int Encode(const void* pInBuffer, int pInSize, FbxString& pOutBuffer); -}; - -#include - -#endif /* _FBXSDK_FILEIO_BASE64CODER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexporter.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexporter.h deleted file mode 100644 index 66cc21d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexporter.h +++ /dev/null @@ -1,304 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexporter.h -#ifndef _FBXSDK_FILEIO_EXPORTER_H_ -#define _FBXSDK_FILEIO_EXPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxThread; -class FbxWriter; - -struct FbxExportThreadArg; - -/** Class to export SDK objects into an FBX file. - * Normally this class is used as is. But for very special needs - * a user can override Initialize() for special purpose. - * - * An exporter will select the appropriate writer to a particular file. - * Ex: When an exporter must export an FBX 7 file, - * the exporter will ask for all registered writers if an FBX 7 file writer is available, - * then if a writer is found, the exporter will create - * the specialized FBX 7 writer and write the file. - * This way, an exporter can "write" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. - * \see FbxWriter - * - * Typical workflow for using the FbxExporter class: - * -# create a SDKManager - * -# create an IOSettings object - * -# create an empty scene - * -# create an exporter - * -# initialize it with a file name - * -# set numerous options to control how the exporter will behave.\n - * ex: set IOSettings values to export Materials or Textures. - * -# call FbxExporter::Export() with the entity to export. - * - * \code - * // ex: - * // create a SdkManager - * FbxManager* lSdkManager = FbxManager::Create(); - * - * // create an IOSettings object - * FbxIOSettings* ios = FbxIOSettings::Create(lSdkManager, IOSROOT); - * - * // set some IOSettings options - * ios->SetBoolProp(EXP_FBX_MATERIAL, true); - * ios->SetBoolProp(EXP_FBX_TEXTURE, true); - * - * // create an empty scene - * FbxScene* lScene = FbxScene::Create(lSdkManager, ""); - * - * // create an exporter. - * FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - * - * // initialize the exporter by providing a filename and the IOSettings to use - * lExporter->Initialize("C:\\myfile.fbx", -1, ios); - * - * // export the scene. - * lExporter->Export(lScene); - * - * // destroy the exporter - * lExporter->Destroy(); - * \endcode - * - * \remarks According to the file suffix, a specialized writer will be created internally.\n - * Ex: for .fbx files a FBX Writer, for .3ds files, a 3ds writer, etc.\n - * Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS - * \nosubgrouping - */ -class FBXSDK_DLL FbxExporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxExporter, FbxIOBase); - -public: - /** - * \name Export Functions - */ - //@{ - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Initialize(const char* pFileName, int pFileFormat = -1, FbxIOSettings* pIOSettings = NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, int pFileFormat = -1, FbxIOSettings * pIOSettings = NULL); - - /** Setup file export options settings. - * \return \c true on success, \c false otherwise. - */ - bool GetExportOptions(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Pointer on a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - - /** Export the document to the currently created file. - * \param pDocument Document to export. - * \param pNonBlocking If true, the export process will be executed in a new thread, allowing it to be non-blocking. - To determine if the export finished, refer to the function IsExporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Export(FbxDocument* pDocument, bool pNonBlocking=false); - - #if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the exporter is currently exporting. - * \param pExportResult This parameter, after the export finished, will contain the result of the export success or failure. - * \return Return true if the exporter is currently exporting. - * \remarks This function will always return false if Export() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the export finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsExporting(bool& pExportResult); - #endif /* !FBXSDK_ENV_WINSTORE && ! FBXSDK_ENV_EMSCRIPTEN */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload. - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - //@} - - /** - * \name File Format - */ - //@{ - /** Get the format of the exported file. - * \return File format identifier. - */ - int GetFileFormat(); - - /** Return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - - /** Get the list of writable versions for the current file format. - * \return \c NULL or a null terminated array of strings. - * \remarks the strings returned match the writers registered for the current format. - * The array items can be retrieved with the following code: - * \code - * char const* const* lWV = lExporter->GetCurrentWritableVersions(); - * if (lWV) - * { - * int i = 0; - * while (lWV[i] != NULL) - * { - * printf("fmt = %s\n", lWV[i]); - * i++; - * } - * } - * \endcode - * - */ - char const* const* GetCurrentWritableVersions(); - - /** Set file version for a given file format. - * \param pVersion String description of the file format. - * \param pRenamingMode Renaming mode. - * \return \c true if mode is set correctly - */ - bool SetFileExportVersion(FbxString pVersion, FbxSceneRenamer::ERenamingMode pRenamingMode=FbxSceneRenamer::eNone); - - /** Set the resampling rate (only used when exporting to FBX 5.3 and lower) - * \param pResamplingRate resampling rate - */ - inline void SetResamplingRate(double pResamplingRate){ mResamplingRate = pResamplingRate; } - - /** Set the default rendering resolution. - * \param pCamName name of the camera. - * \param pResolutionMode resolution mode. - * \param pW width. - * \param pH height. - * \remark These values are ignored when exporting to FBX 7.x and higher. With FBX version 6.x and lower, - * the HeaderInfo is still accessible for legacy reasons and any other custom writers. For FBX filles, - * these values are used by the FBX QuickTime plug-in (obsolete now) to help it get the window size - * without loading the whole file. The information contained in the FbxIOFileHeaderInfo is a duplicate - * of AspectRatioMode, AspectWidth and AspectHeight properties defined in the FbxCamera class. - * Retrieveing the FileHeaderInfo starting from FBX 7.x will always return the uninitialized structure. - */ - void SetDefaultRenderResolution(FbxString pCamName, FbxString pResolutionMode, double pW, double pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool GetExportOptions(FbxIO* pFbxObject); - bool Export(FbxDocument* pDocument, FbxIO* pFbxObject); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileCreate(); - void FileClose(); - -private: - bool ExportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxWriter* mWriter; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mExportThread; - FbxExportThreadArg* mExportThreadArg; - bool mExportThreadResult; - bool mIsThreadExporting; -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - FbxProgress mProgress; - FbxStream* mStream; - void* mStreamData; - FbxString mStrFileVersion; - double mResamplingRate; - FbxSceneRenamer::ERenamingMode mRenamingMode; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - friend void ExportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPreExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreExport); - -public: - FbxEventPreExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPostExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostExport); - -public: - FbxEventPostExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXPORTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h deleted file mode 100644 index 5075ca5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexternaldocreflistener.h -#ifndef _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ -#define _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ - -#include - -#include - -#include - -/** Contains data about an external document. - * The document is a FbxDocument object. - */ -struct FBXSDK_DLL FbxExternalDocumentInfo -{ - FbxString mDocumentName; //!< Bare name of external document in document hierarchy. - FbxString mClassName; //!< Class name of the document (FbxDocument, FbxLibrary...). - FbxString mParentFullName; //!< Full name of the parent document in document hierarchy. - FbxString mFilePathUrl; //!< File path of the external document. -}; - -/** Event that is emitted on loading document when a referenced document - * is encountered while loading external references. - */ -class FBXSDK_DLL FbxEventReferencedDocument : public FbxEvent, public FbxExternalDocumentInfo -{ - FBXSDK_EVENT_DECLARE(FbxEventReferencedDocument); -public: - FbxEventReferencedDocument() {} -}; - - -class FbxExternalDocRefListenerData; - -/** Typical handler for the referenced document events. -* -* Register it like so: -* FbxExternalDocRefListener lRefDocListener( sdkManager, fileName ); -* FbxEventHandler * lHandler = lRefDocListener.Bind(scene, -* &FbxExternalDocRefListener::HandleEvent); -* -* And later unregister it like so: -* lRefDocListener.Unbind(lHandler); -*/ -class FBXSDK_DLL FbxExternalDocRefListener : public FbxListener -{ -public: - /** Constructor. - * \param pManager - * \param pDocFilePath - * \remarks Keep a reference to the SDK and the path of the document - * to be able to resolve relative paths. - */ - FbxExternalDocRefListener( FbxManager & pManager, const FbxString & pDocFilePath ); - virtual ~FbxExternalDocRefListener(); - - /** Set the document file path used to resolve documents. - * \param pDocFilePath - * \remarks Allows re-using the same instance for multiple document loadings. - */ - virtual void SetDocumentFilePath( const FbxString & pDocFilePath ); - - /** Verify that all documents that were previously loaded in a previous - * load session are still valid. - * \return \c true if all documents are still valid, \c false otherwise. - */ - virtual bool AreAllExternalDocumentsStillValid() const; - - // - /** Verify that all documents that were referred to didn't change. - * \return \c true if all documents didn't change, \c false otherwise. - * \remarks This function should be called if at posteriori check is desired. - */ - virtual bool WereAllExternalDocumentsValid() const; - - /** Unload all documents that were loaded through this event handler. - */ - virtual void UnloadExternalDocuments(); - - // External document reference event handler. - // - // Operation: calls FindDocument() to find the specified external document - // and if not found calls LoadDocument() either directly, - // if it has not parent, or via ConnectToParentLibrary(). - // If its parent cannot be found, it's added to the dangling - // document list (and it is not loaded until it's parent is found). - // After, it tries to resolve dangling documents by calling - // TryConnectingDanglingLibraries(). - /** External document reference event handler. - * \param pEvent - * \remarks Operation: calls FindDocument() to find the specified external document - * and if not found calls LoadDocument() either directly, - * if it has not parent, or via ConnectToParentLibrary(). - * If its parent cannot be found, it's added to the dangling - * document list (and it is not loaded until it's parent is found). - * After, it tries to resolve dangling documents by calling - * TryConnectingDanglingLibraries(). - */ - virtual void HandleEvent(const FbxEventReferencedDocument * pEvent); - -protected: - /** - * Turn a relative path to an absolute path using the file path of the original document being loaded. - * If the path is already is absolute, it is returned as is. - */ - virtual FbxString MakeFilenameAbsolute(const FbxString & pFilename) const; - //! Locate a document by its document path. - virtual FbxDocument * FindDocument( const FbxString & pPathToDoc ); - //! Load a library, potentially under another library. - virtual FbxDocument * LoadDocument(FbxObject * pParent, const FbxString & pClassName, const FbxString & pFilename); - //! Try to connect a library to its parent given its document path. - virtual bool ConnectToParentLibrary(const FbxExternalDocumentInfo &); - //! Try to reconnect dangling libraries that didn't find their parent. - virtual void TryConnectingDanglingLibraries(); - -private: - FbxExternalDocRefListenerData * mData; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxfiletokens.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxfiletokens.h deleted file mode 100644 index 0b2b02c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxfiletokens.h +++ /dev/null @@ -1,1087 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletokens.h -#ifndef _FBXSDK_FILEIO_FILE_TOKENS_H_ -#define _FBXSDK_FILEIO_FILE_TOKENS_H_ - -#include - -#include - -// -// Summary -// -#define FIELD_SUMMARY "Summary" -#define FIELD_SUMMARY_VERSION "Version" -#define FIELD_SUMMARY_TEMPLATE "Template" -#define FIELD_SUMMARY_PASSWORD_PROTECTION "PasswordProtection" -#define FIELD_SUMMARY_CONTENT_COUNT "ContentCount" -#define FIELD_SUMMARY_CONTENT_COUNT_MODEL "Model" -#define FIELD_SUMMARY_CONTENT_COUNT_DEVICE "Device" -#define FIELD_SUMMARY_CONTENT_COUNT_CHARACTER "Character" -#define FIELD_SUMMARY_CONTENT_COUNT_ACTOR "Actor" -#define FIELD_SUMMARY_CONTENT_COUNT_CONSTRAINT "Constraint" -#define FIELD_SUMMARY_CONTENT_COUNT_MEDIA "Media" -#define FIELD_SUMMARY_CONTENT_COUNT_COMPONENT "Component" -#define FIELD_SUMMARY_TAKES "Takes" -#define FIELD_SUMMARY_TAKES_VERSION "Version" -#define FIELD_SUMMARY_TAKES_CURRENT "Current" -#define FIELD_SUMMARY_TAKES_TAKE "Take" -#define FIELD_SUMMARY_TAKES_TAKE_COMMENT "Comments" -#define FIELD_SUMMARY_TAKES_TAKE_LOCAL_TIME "LocalTime" -#define FIELD_SUMMARY_TAKES_TAKE_REFERENCE_TIME "ReferenceTime" - - -// -// FbxObject references, document ownership -// -#define FIELD_KFBXOBJECT_REFERENCE_TO "ReferenceTo" -#define FIELD_KFBXOBJECT_DOCUMENT "Doc" - -// (sic) -#define FIELD_KFBXOBECT_REFERENCE_TO FIELD_KFBXOBJECT_REFERENCE_TO - -// -// FbxContainer -// -#define FIELD_KFBXCONTAINER_VERSION "Version" -#define FIELD_KFBXCONTAINER_CONTAINER "Container" - - -// -// Thumbnail -// -#define FIELD_THUMBNAIL "Thumbnail" -#define FIELD_THUMBNAIL_VERSION "Version" -#define FIELD_THUMBNAIL_SIZE "Size" -#define FIELD_THUMBNAIL_FORMAT "Format" -#define FIELD_THUMBNAIL_ENCODING "ImageEncoding" -#define FIELD_THUMBNAIL_IMAGE "ImageData" - - -// -// FbxGlobalLightSettings -// -#define FIELD_KFBXGLOBALLIGHTSETTINGS_VERSION "Version" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWPLANES "ShadowPlanes" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_COUNT "Count" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_PLANE "Plane" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_USESHADOW "UseShadow" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWINTENSITY "ShadowIntensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTRENDER "AmbientRenderSettings" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTLIGHTCOLOR "AmbientLightColor" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGOPTIONS "FogOptions" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGENABLE "FlogEnable" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGMODE "FogMode" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGDENSITY "FogDensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGSTART "FogStart" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGEND "FogEnd" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGCOLOR "FogColor" - - -// -// FbxGlobalCameraSettings -// -#define FIELD_KFBXGLOBALCAMERASETTINGS_RENDERER_SETTINGS "RendererSetting" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_CAMERA "DefaultCamera" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_VIEWING_MODE "DefaultViewingMode" -#define FIELD_KFBXGLOBALCAMERASETTINGS_SETTINGS "Settings" -#define FIELD_KFBXGLOBALCAMERASETTINGS_CAMERA "Camera" - - -// -// FbxGlobalTimeSettings -// -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_MODE "TimeMode" -#define FIELD_KFBXGLOBALTIMESETTINGS_FRAMERATE "FrameRate" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_PROTOCOL "TimeFormat" -#define FIELD_KFBXGLOBALTIMESETTINGS_SNAP_ON_FRAMES "SnapOnFrames" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_INDEX "ReferenceTimeIndex" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_MARKER "TimeMarker" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME "Time" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_LOOP "Loop" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_START_TIME "TimeLineStartTime" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_STOP_TIME "TimeLineStopTime" - - -// -// Media -// -#define FIELD_MEDIA_MEDIA "Media" -#define FIELD_MEDIA_AUDIO "Audio" -#define FIELD_MEDIA_VIDEO "Video" -#define FIELD_MEDIA_TYPE "Type" -#define TOKEN_MEDIA_CLIP "Clip" -#define FIELD_MEDIA_VERSION "Version" -#define FIELD_MEDIA_ORIGINAL_FORMAT "OriginalFormat" -#define FIELD_MEDIA_ORIGINAL_FILENAME "OriginalFilename" -#define FIELD_MEDIA_FILENAME "Filename" -#define FIELD_MEDIA_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_MEDIA_CONTENT "Content" - - -// -// Properties -// -#define FIELD_PROPERTIES "Properties" -#define FIELD_PROPERTIES_VERSION "Version" -#define FIELD_USERPROPERTIES "UserProperty" -#define FIELD_USERPROPERTIES_NAME "Name" -#define FIELD_USERPROPERTIES_TYPE "Type" -#define FIELD_USERPROPERTIES_LABEL "Label" -#define FIELD_USERPROPERTIES_MIN "Min" -#define FIELD_USERPROPERTIES_MAX "Max" -#define FIELD_USERPROPERTIES_VALUE "Value" - - -// -// FbxNode -// -#define FIELD_KFBXNODE_VERSION "Version" -#define FIELD_KFBXNODE_ANIMATION_MODE "AnimationMode" -#define FIELD_KFBXNODE_TYPE "Type" -#define FIELD_KFBXNODE_TYPE_FLAGS "TypeFlags" -#define FIELD_KFBXNODE_MODEL "Model" -#define FIELD_KFBXNODE_HIDDEN "Hidden" -#define FIELD_KFBXNODE_SHADING "Shading" -#define FIELD_KFBXNODE_TRANSFORM "Transform" -#define FIELD_KFBXNODE_DEFAULT "Default" -#define FIELD_KFBXNODE_TRANSLATION "T" -#define FIELD_KFBXNODE_ROTATION "R" -#define FIELD_KFBXNODE_SCALING "S" -#define FIELD_KFBXNODE_CHILDREN "Children" - -#define FIELD_KFBXNODE_CULLING_TYPE "Culling" -#define TOKEN_KFBXNODE_CULLING_OFF "CullingOff" -#define TOKEN_KFBXNODE_CULLING_ON_CCW "CullingOnCCW" -#define TOKEN_KFBXNODE_CULLING_ON_CW "CullingOnCW" - -#define FIELD_KFBXNODE_LIMITS "Limits" -#define FIELD_KFBXNODE_LIMITS_T_AUTO "TAuto" -#define FIELD_KFBXNODE_LIMITS_R_AUTO "RAuto" -#define FIELD_KFBXNODE_LIMITS_S_AUTO "SAuto" -#define FIELD_KFBXNODE_LIMITS_T_ENABLE "TEnable" -#define FIELD_KFBXNODE_LIMITS_R_ENABLE "REnable" -#define FIELD_KFBXNODE_LIMITS_S_ENABLE "SEnable" -#define FIELD_KFBXNODE_LIMITS_T_X_DEFAULT "TXDefault" -#define FIELD_KFBXNODE_LIMITS_T_Y_DEFAULT "TYDefault" -#define FIELD_KFBXNODE_LIMITS_T_Z_DEFAULT "TZDefault" -#define FIELD_KFBXNODE_LIMITS_R_X_DEFAULT "RXDefault" -#define FIELD_KFBXNODE_LIMITS_R_Y_DEFAULT "RYDefault" -#define FIELD_KFBXNODE_LIMITS_R_Z_DEFAULT "RZDefault" -#define FIELD_KFBXNODE_LIMITS_S_X_DEFAULT "SXDefault" -#define FIELD_KFBXNODE_LIMITS_S_Y_DEFAULT "SYDefault" -#define FIELD_KFBXNODE_LIMITS_S_Z_DEFAULT "SZDefault" -#define FIELD_KFBXNODE_LIMITS_T_X_MIN "TXMin" -#define FIELD_KFBXNODE_LIMITS_T_Y_MIN "TYMin" -#define FIELD_KFBXNODE_LIMITS_T_Z_MIN "TZMin" -#define FIELD_KFBXNODE_LIMITS_R_X_MIN "RXMin" -#define FIELD_KFBXNODE_LIMITS_R_Y_MIN "RYMin" -#define FIELD_KFBXNODE_LIMITS_R_Z_MIN "RZMin" -#define FIELD_KFBXNODE_LIMITS_S_X_MIN "SXMin" -#define FIELD_KFBXNODE_LIMITS_S_Y_MIN "SYMin" -#define FIELD_KFBXNODE_LIMITS_S_Z_MIN "SZMin" -#define FIELD_KFBXNODE_LIMITS_T_X_MAX "TXMax" -#define FIELD_KFBXNODE_LIMITS_T_Y_MAX "TYMax" -#define FIELD_KFBXNODE_LIMITS_T_Z_MAX "TZMax" -#define FIELD_KFBXNODE_LIMITS_R_X_MAX "RXMax" -#define FIELD_KFBXNODE_LIMITS_R_Y_MAX "RYMax" -#define FIELD_KFBXNODE_LIMITS_R_Z_MAX "RZMax" -#define FIELD_KFBXNODE_LIMITS_S_X_MAX "SXMax" -#define FIELD_KFBXNODE_LIMITS_S_Y_MAX "SYMax" -#define FIELD_KFBXNODE_LIMITS_S_Z_MAX "SZMax" -#define FIELD_KFBXNODE_LIMITS_R_TYPE "RType" -#define FIELD_KFBXNODE_LIMITS_R_CLAMP_TYPE "RClampType" -#define FIELD_KFBXNODE_LIMITS_R_X_AXIS "RXAxis" -#define FIELD_KFBXNODE_LIMITS_R_Y_AXIS "RYAxis" -#define FIELD_KFBXNODE_LIMITS_R_Z_AXIS "RZAxis" -#define FIELD_KFBXNODE_LIMITS_AXIS_LENGTH "AxisLen" - -#define FIELD_KFBXNODE_TARGET "LookAtModel" -#define FIELD_KFBXNODE_UP_VECTOR_MODEL "UpVectorModel" -#define FIELD_KFBXNODE_POST_TARGET_ROTATION "PostTargetRotation" -#define FIELD_KFBXNODE_TARGET_UP_VECTOR "UpTargetRotation" - -#define FIELD_KFBXNODE_PIVOTS "Pivots" -#define FIELD_KFBXNODE_PACKAGE "Package" -#define FIELD_KFBXNODE_FILE "File" -#define FIELD_KFBXNODE_TRANSLATION_OFFSET "TranslationOffset" -#define FIELD_KFBXNODE_ROTATION_PIVOT "RotationPivot" -#define FIELD_KFBXNODE_PRE_ROTATION "PreRotation" -#define FIELD_KFBXNODE_POST_ROTATION "PostRotation" -#define FIELD_KFBXNODE_SCALING_PIVOT "ScalingPivot" -#define FIELD_KFBXNODE_PIVOT_ENABLED "PivotEnabled" - -// -// FbxGenericNode -// -#define FIELD_KFBXGENERICNODE_VERSION "Version" -#define FIELD_KFBXGENERICNODE_GENERICNODE "GenericNode" - -// -// FbxGeometry -// -#define FIELD_KFBXGEOMETRY_MATERIAL "Material" -#define FIELD_KFBXGEOMETRY_TEXTURE "Texture" -#define FIELD_KFBXGEOMETRY_LINK "Link" -#define FIELD_KFBXGEOMETRY_SHAPE "Shape" - -// -// FbxMarker -// -#define FIELD_KFBXMARKER_LOOK "Look" -#define FIELD_KFBXMARKER_SIZE "Size" -#define FIELD_KFBXMARKER_COLOR "Color" -#define FIELD_KFBXMARKER_SHOW_LABEL "ShowLabel" -#define FIELD_KFBXMARKER_IK_PIVOT "IKPivot" -#define FIELD_KFBXMARKER_IK_REACH_TRANSLATION "IKReachTranslation" -#define FIELD_KFBXMARKER_IK_REACH_ROTATION "IKReachRotation" -#define FIELD_KFBXMARKER_IK_PULL "IKPull" -#define FIELD_KFBXMARKER_IK_PULL_HIPS "IKPullHips" - -// -// FbxCamera -// -#define FIELD_KFBXGEOMETRYCAMERA_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_NAME "Name" - -// Camera Position and Orientation -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_POSITION "Position" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_UP_VECTOR "Up" -#define FIELD_KFBXGEOMETRYCAMERA_DEFAULT_CAMERA_INTEREST_POSITION "LookAt" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ROLL "Roll" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_TURNTABLE "TurnTable" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PROJECTION_TYPE "Type" - -// Viewing Area Controls -#define FIELD_KFBXGEOMETRYCAMERA_FORMAT_NAME "FormatName" -#define TOKEN_KFBXGEOMETRYCAMERA_NTSC "NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_NTSC "D1 NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_PAL "PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_PAL "D1 PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_HD "HD" -#define TOKEN_KFBXGEOMETRYCAMERA_640x480 "640x480" -#define TOKEN_KFBXGEOMETRYCAMERA_320x200 "320x200" -#define TOKEN_KFBXGEOMETRYCAMERA_320x240 "320x240" -#define TOKEN_KFBXGEOMETRYCAMERA_128x128 "128x128" -#define TOKEN_KFBXGEOMETRYCAMERA_FULL_SCREEN "Full Screen" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_TYPE "AspectType" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_WIDTH "AspectW" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_HEIGHT "AspectH" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PIXEL_RATIO "PixelRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_NEAR_PLANE "NearPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FAR_PLANE "FarPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LOCK "CameraLock" - -// Aperture and Film Controls -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_FORMAT_NAME "ApertureFormat" -#define TOKEN_KFBXGEOMETRYCAMERA_16MM_THEATRICAL "16mm Theatrical" -#define TOKEN_KFBXGEOMETRYCAMERA_SUPER_16MM "Super 16mm" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ACADEMY "35mm Academy" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_TV_PROJECTION "35mm TV Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_FULL_APERTURE "35mm Full Aperture" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_185_PROJECTION "35mm 1.85 Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ANAMORPHIC "35mm Anamorphic" -#define TOKEN_KFBXGEOMETRYCAMERA_70MM_PROJECTION "70mm Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_VISTA_VISION "VistaVision" -#define TOKEN_KFBXGEOMETRYCAMERA_DYNAVISION "Dynavision" -#define TOKEN_KFBXGEOMETRYCAMERA_IMAX "Imax" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_APERTURE_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_MODE "ApertureMode" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_DIMENSION "CameraAperture" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_SQUEEZERATIO "SqueezeRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FOCAL_LENGTH "FocalLength" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE "Aperture" - -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_X "FieldOfViewXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_Y "FieldOfViewYProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_X "OpticalCenterXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_Y "OpticalCenterYProperty" - -// Background Properties -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_MEDIA_NAME "Media" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_TEXTURE "BackgroundTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_VIDEO_CLIP_TEXTURE "VideoClipTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISPLAY_MODE "ViewFrustumPlane" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DRAWING_MODE "BackgroundMode" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_THRESHOLD_ENABLE "ForegroundTransparent" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_TRESHOLD "BackgroundTreshold" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_PLACEMENT_OPTIONS "DisplayMode" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE "ViewFrustumPlaneDistance" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE_MODE "ViewFrustumPlaneDistanceMode" - -// Camera View Options -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_CAMERA_INTEREST "ViewLookAt" -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_NEAR_FAR_PLANES "ViewFrustum" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_GRID "ShowGrid" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AXIS "ShowAzimut" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_NAME "ShowName" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_INFO_ON_MOVING "ShowInfoOnMoving" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_TIME_CODE "ShowTimeCode" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA "DisplaySafeArea" -#define FIELD_KFBXGEOMETRYCAMERA_SAFE_AREA_STYLE "SafeAreaStyle" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA_ON_RENDER "DisplaySafeAreaOnRender" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AUDIO "ShowAudio" - -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_COLOR "BackGroundColor" -#define FIELD_KFBXGEOMETRYCAMERA_AUDIO_COLOR "AudioColor" -#define FIELD_KFBXGEOMETRYCAMERA_USE_FRAME_COLOR "UseFrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_FRAME_COLOR "FrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_ORTHO_ZOOM "CameraOrthoZoom" - -// Rendering Options -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS "CameraAndLens" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_DEPTH_OF_FIELD "DepthOfField" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_ANTIALIASING "Antialiasing" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_OVERSAMPLING "OverSampling" -#define FIELD_KFBXGEOMETRYCAMERA_RENDER_OPTIONS_USAGE_TIME "UseOverSamplingTime" - -// -// FbxCameraStereo -// -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_STEREO "Stereo" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_INTERAXIAL_SEP "InteraxialSeparation" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_ZERO_PARALLAX "ZeroParallax" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_TOE_IN_ADJUST "ToeInAdjust" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_RIGHT_CAM "FilmOffsetRightCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_LEFT_CAM "FilmOffsetLeftCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_NAME "PrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_RELATIVE_PRECOMP_FILE_NAME "RelativePrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_CONTENT "PrecompFileContent" - -// -// FbxCameraSwitcher -// -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_SWITCHER "Switcher" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_ID "CameraId" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_NAME "CameraName" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_INDEX_NAME "CameraIndexName" - - -// -// FbxLight -// -#define FIELD_KFBXGEOMETRYLIGHT_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE "LightType" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE_VERSION "LightTypeVersion" -#define FIELD_KFBXGEOMETRYLIGHT_CAST_LIGHT "CastLight" - - -// -// FbxMesh -// -#define FIELD_KFBXGEOMETRYMESH_UV_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYMESH_VERTICES "Vertices" -#define FIELD_KFBXGEOMETRYMESH_EDGES "Edges" -#define FIELD_KFBXGEOMETRYMESH_INTERNAL_EDGES "InternalEdges" -#define FIELD_KFBXGEOMETRYMESH_NORMALS "Normals" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_WCOMPONENT "NormalsW" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS "Binormals" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_WCOMPONENT "BinormalsW" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS "Tangents" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_WCOMPONENT "TangentsW" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_INDEX "NormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_INDEX "BinormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_INDEX "TangentsIndex" -#define FIELD_KFBXGEOMETRYMESH_MATERIAL_ASSIGNATION "MaterialAssignation" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ASSIGNATION "TextureMode" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_INDEX "PolygonVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_GROUP "PolygonGroup" -#define FIELD_KFBXGEOMETRYMESH_MATERIALS_ID "Materials" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ID "TextureId" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_TYPE "TextureType" -#define FIELD_KFBXGEOMETRYMESH_UV_TYPE "UVType" -#define FIELD_KFBXGEOMETRYMESH_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV "TextureUV" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_POLYGON_UV "TexturePUV" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_UV_INFO "GeometryUVInfo" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_VERTEX_INDEX "TextureVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV_INDEX "TextureUVVerticeIndex" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INFO "VertexColorInfo" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_ASSIGNATION "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VALUES "Colors" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INDEX "ColorIndex" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHING "Smoothing" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_CREASE "VertexCrease" -#define FIELD_KFBXGEOMETRYMESH_EDGE_CREASE "EdgeCrease" -#define FIELD_KFBXGEOMETRYMESH_HOLE "Hole" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA "UserData" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_INDEX "UserDataIndex" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_TYPE "UserDataType" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_INDICES "UserDataDirectIndices"// remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_COUNT "UserDataDirectCount" //remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ID "UserDataId" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ARRAY "UserDataArray" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_NAME "UserDataName" -#define FIELD_KFBXGEOMETRYMESH_VISIBILITY "Visibility" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHNESS "Smoothness" -#define FIELD_KFBXGEOMETRYMESH_PREVIEW_DIVSION_LEVELS "PreviewDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_RENDER_DIVSION_LEVELS "RenderDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_DISPLAY_SUBDIVISIONS "DisplaySubdivisions" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_BORDERS "PreserveBorders" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_HARD_EDGES "PreserveHardEdges" -#define FIELD_KFBXGEOMETRYMESH_PROPAGATE_EDGE_HARDNESS "PropagateEdgeHardness" -#define FIELD_KFBXGEOMETRYMESH_BOUNDARY_RULE "BoundaryRule" - -#define FIELD_KFBXGEOMETRYMESH_U_EXTENDED_COUNT "UExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_U_CLOSED "UClosed" -#define FIELD_KFBXGEOMETRYMESH_U_TOPCAP "UTopCap" -#define FIELD_KFBXGEOMETRYMESH_U_STEP "UStep" -#define FIELD_KFBXGEOMETRYMESH_U_COUNT "UCount" - -#define FIELD_KFBXGEOMETRYMESH_V_EXTENDED_COUNT "VExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_V_CLOSED "VClosed" -#define FIELD_KFBXGEOMETRYMESH_V_TOPCAP "VTopCap" -#define FIELD_KFBXGEOMETRYMESH_V_STEP "VStep" -#define FIELD_KFBXGEOMETRYMESH_V_COUNT "VCount" - -#define TOKEN_KFBXGEOMETRYMESH_NO_MAPPING_INFORMATION "NoMappingInformation" -#define TOKEN_KFBXGEOMETRYMESH_BY_VERTICE "ByVertice" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON "ByPolygon" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON_VERTEX "ByPolygonVertex" -#define TOKEN_KFBXGEOMETRYMESH_BY_FACE "ByFace" -#define TOKEN_KFBXGEOMETRYMESH_BY_EDGE "ByEdge" -#define TOKEN_KFBXGEOMETRYMESH_ALL_SAME "AllSame" -#define TOKEN_KFBXGEOMETRYMESH_BY_MODEL "ByModel" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY "SubdivGeometry" -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYSUBDIV_LEVEL_COUNT "LevelCount" -#define FIELD_KFBXGEOMETRYSUBDIV_CURRENT_LEVEL "CurrentLevel" -#define FIELD_KFBXGEOMETRYSUBDIV_DISPLAY_SMOOTHNESS "Smoothness" - -// -// Reference -// -#define TOKEN_REFERENCE_DIRECT "Direct" -#define TOKEN_REFERENCE_INDEX "Index" -#define TOKEN_REFERENCE_INDEX_TO_DIRECT "IndexToDirect" - -// -// FbxNurbs -// -#define FIELD_KFBXGEOMETRYNURB_NURB_VERSION "NurbVersion" -#define FIELD_KFBXGEOMETRYNURB_NURB_ORDER "NurbOrder" -#define FIELD_KFBXGEOMETRYNURB_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURB_STEP "Step" -#define FIELD_KFBXGEOMETRYNURB_FORM "Form" -#define FIELD_KFBXGEOMETRYNURB_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURB_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURB_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_U "MultiplicityU" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURB_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURB_SURFACE_DISPLAY "SurfaceDisplay" - -// -// FbxNurbsSurface -// -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_VERSION "NurbsSurfaceVersion" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_ORDER "NurbsSurfaceOrder" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_STEP "Step" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_POINTS "Points" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_U "MultiplicityU" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FLIP_NORMALS "FlipNormals" - -// -// FbxTrimNurbsSurface -// -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_VERSION "TrimmedNurbVersion" -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_FLIP_NORMALS "FlipNormals" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_SURFACE "NurbSurface" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_BOUNDARY "TrimBoundary" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_EDGE "BoundaryEdge" - -// -// FbxBoundary -// -#define FIELD_KFBXGEOMETRYBOUNDARY_VERSION "BoundaryVersion" - -// -// FbxLine -// -#define FIELD_KFBXGEOMETRYLINE_VERSION "LineVersion" -#define FIELD_KFBXGEOMETRYLINE_POINTS "Points" -#define FIELD_KFBXGEOMETRYLINE_POINTS_INDEX "PointsIndex" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIVISION_VERSION "SubdivisionVersion" - -// -// FbxNurbsCurve -// -#define FIELD_KFBXGEOMETRYNURBS_CURVE_VERSION "NurbsCurveVersion" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_ORDER "Order" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_DIMENSION "Dimension" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_KNOTVECTOR "KnotVector" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_RATIONAL "Rational" - -// -// FbxPatch -// -#define FIELD_KFBXGEOMETRYPATCH_PATCH_VERSION "PatchVersion" -#define FIELD_KFBXGEOMETRYPATCH_PATCH_TYPE "PatchType" -#define FIELD_KFBXGEOMETRYPATCH_DIMENSIONS "Dimensions" -#define FIELD_KFBXGEOMETRYPATCH_STEP "Step" -#define FIELD_KFBXGEOMETRYPATCH_CLOSED "Closed" -#define FIELD_KFBXGEOMETRYPATCH_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYPATCH_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYPATCH_POINTS "Points" -#define FIELD_KFBXGEOMETRYPATCH_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYPATCH_MATERIALS "Materials" - - -// -// FbxGeometryWeightedMap -// - -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_VERSION "Version" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_SRC_COUNT "SourceCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_DST_COUNT "DestinationCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_INDEX_MAPPING "IndexMapping" - -// -// FbxSkeleton -// -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_LENGTH "LimbLength" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_SIZE "Size" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_COLOR "Color" - -// -// FbxVideo -// -#define FIELD_KFBXVIDEO_USEMIPMAP "UseMipMap" - -// -// FbxTexture -// -#define FIELD_KFBXTEXTURE_TEXTURE "Texture" -#define FIELD_KFBXTEXTURE_TYPE "Type" -#define FIELD_KFBXTEXTURE_VERSION "Version" -#define FIELD_KFBXTEXTURE_TEXTURE_NAME "TextureName" -#define FIELD_KFBXTEXTURE_MEDIA "Media" -#define FIELD_KFBXTEXTURE_FILENAME "FileName" -#define FIELD_KFBXTEXTURE_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_KFBXTEXTURE_TRANSLATION "Translation" -#define FIELD_KFBXTEXTURE_SCALING "Scaling" -#define FIELD_KFBXTEXTURE_UV_TRANSLATION "ModelUVTranslation" -#define FIELD_KFBXTEXTURE_UV_SCALING "ModelUVScaling" -#define FIELD_KFBXTEXTURE_ROTATION "Rotation" -#define FIELD_KFBXTEXTURE_TILING "Tilling" -#define FIELD_KFBXTEXTURE_ALPHA_SRC "Texture_Alpha_Source" -#define FIELD_KFBXTEXTURE_CROPPING "Cropping" -#define FIELD_KFBXTEXTURE_MAPPING_TYPE "Texture_Mapping_Type" -#define FIELD_KFBXTEXTURE_PLANAR_NORMAL "Texture_Planar_Mapping_Normal" -#define FIELD_KFBXTEXTURE_SWAPUV "SwapUV" -#define FIELD_KFBXTEXTURE_MATERIAL_USE "MaterialMode" -#define FIELD_KFBXTEXTURE_TEXTURE_USE "TextureUse" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_STANDARD "Standard" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SHADOW_MAP "ShadowMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_LIGHT_MAP "LightMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERICAL_REFLEXION_MAP "SphericalReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERE_REFLEXION_MAP "SphereReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_BUMP_NORMAL_MAP "BumpNormalMap" -#define TOKEN_KFBXTEXTURE_BLEND_TRANSLUCENT "Translucent" -#define TOKEN_KFBXTEXTURE_BLEND_ADD "Add" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE "Modulate" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE2 "Modulate2" -#define TOKEN_KFBXTEXTURE_BLEND_OVER "Over" -#define TOKEN_KFBXTEXTURE_BLEND_NORMAL "Normal" -#define TOKEN_KFBXTEXTURE_BLEND_DISSOLVE "Dissolve" -#define TOKEN_KFBXTEXTURE_BLEND_DARKEN "Darken" -#define TOKEN_KFBXTEXTURE_BLEND_COLORBURN "Colorburn" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARBURN "Linearburn" -#define TOKEN_KFBXTEXTURE_BLEND_DARKERCOLOR "Darkercolor" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTEN "Lighten" -#define TOKEN_KFBXTEXTURE_BLEND_SCREEN "Screen " -#define TOKEN_KFBXTEXTURE_BLEND_COLORDODGE "Colordodge" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARDODGE "Lineardodge" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTERCOLOR "Lightercolor" -#define TOKEN_KFBXTEXTURE_BLEND_SOFTLIGHT "Softlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDLIGHT "Hardlight " -#define TOKEN_KFBXTEXTURE_BLEND_VIVIDLIGHT "Vividlight" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARLIGHT "Linearlight" -#define TOKEN_KFBXTEXTURE_BLEND_PINLIGHT "Pinlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDMIX "Hardmix" -#define TOKEN_KFBXTEXTURE_BLEND_DIFFERENCE "Difference" -#define TOKEN_KFBXTEXTURE_BLEND_EXCLUSION "Exclusion" -#define TOKEN_KFBXTEXTURE_BLEND_SUBTRACT "Subtract" -#define TOKEN_KFBXTEXTURE_BLEND_DIVIDE "Divide" -#define TOKEN_KFBXTEXTURE_BLEND_HUE "Hue" -#define TOKEN_KFBXTEXTURE_BLEND_SATURATION "Saturation" -#define TOKEN_KFBXTEXTURE_BLEND_COLOR "Color" -#define TOKEN_KFBXTEXTURE_BLEND_LUMINOSITY "Luminosity" -#define TOKEN_KFBXTEXTURE_BLEND_OVERLAY "Overlay" -#define TOKEN_KFBXTEXTURE_BLEND_MAXBLEND "MaxBlend" -#define FIELD_KFBXTEXTURE_WRAP_U "WrapU" -#define FIELD_KFBXTEXTURE_WRAP_V "WrapV" -#define FIELD_KFBXTEXTURE_BLEND_MODE "BlendMode" -#define FIELD_KFBXTEXTURE_ALPHA "TextureAlpha" - -// -// FbxSurfaceMaterial -// -#define FIELD_KFBXMATERIAL_MATERIAL "Material" -#define FIELD_KFBXMATERIAL_VERSION "Version" -#define FIELD_KFBXMATERIAL_SHADING_MODEL "ShadingModel" -#define FIELD_KFBXMATERIAL_AMBIENT "Ambient" -#define FIELD_KFBXMATERIAL_DIFFUSE "Diffuse" -#define FIELD_KFBXMATERIAL_SPECULAR "Specular" -#define FIELD_KFBXMATERIAL_EMISSIVE "Emissive" -#define FIELD_KFBXMATERIAL_SHININESS "Shininess" -#define FIELD_KFBXMATERIAL_REFLECTIVITY "Reflectivity" -#define FIELD_KFBXMATERIAL_ALPHA "Alpha" -#define FIELD_KFBXMATERIAL_MULTI_LAYER "MultiLayer" - -// -// FbxCluster -// -#define FIELD_KFBXLINK_LINK "Link" -#define FIELD_KFBXLINK_MODE "Mode" -#define FIELD_KFBXLINK_USERDATA "UserData" -#define FIELD_KFBXLINK_INDEXES "Indexes" -#define FIELD_KFBXLINK_WEIGHTS "Weights" -#define FIELD_KFBXLINK_TRANSFORM "Transform" -#define FIELD_KFBXLINK_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXLINK_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXLINK_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXLINK_AVERAGE "Average" -#define TOKEN_KFBXLINK_ADDITIVE "Additive" -#define TOKEN_KFBXLINK_TOTAL1 "Total1" - -// -// FbxDeformer -// -#define FIELD_KFBXDEFORMER_DEFORMER "Deformer" -#define FIELD_KFBXDEFORMER_VERSION "Version" -#define FIELD_KFBXDEFORMER_TYPE "Type" -#define FIELD_KFBXDEFORMER_MULTI_LAYER "MultiLayer" -#define FIELD_KFBXDEFORMER_MODE "Mode" -#define FIELD_KFBXDEFORMER_USERDATA "UserData" -#define FIELD_KFBXDEFORMER_INDEXES "Indexes" -#define FIELD_KFBXDEFORMER_WEIGHTS "Weights" -#define FIELD_KFBXDEFORMER_TRANSFORM "Transform" -#define FIELD_KFBXDEFORMER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXDEFORMER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXDEFORMER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXDEFORMER_AVERAGE "Average" -#define TOKEN_KFBXDEFORMER_ADDITIVE "Additive" -#define TOKEN_KFBXDEFORMER_TOTAL1 "Total1" - -// -// FbxSkin -// -#define FIELD_KFBXSKIN_VERSION "Version" -#define FIELD_KFBXSKIN_DEFORM_ACCURACY "Link_DeformAcuracy" -#define FIELD_KFBXSKIN_SKINNINGTYPE "SkinningType" -#define TOKEN_KFBXSKIN_LINEAR "Linear" -#define TOKEN_KFBXSKIN_DUALQUATERNION "DualQuaternion" -#define TOKEN_KFBXSKIN_BLEND "Blend" -#define FIELD_KFBXSKIN_INDEXES "Indexes" -#define FIELD_KFBXSKIN_BLENDWEIGHTS "BlendWeights" - -// -// FbxCluster -// -#define FIELD_KFBXCLUSTER_VERSION "Version" -#define FIELD_KFBXCLUSTER_MODE "Mode" -#define FIELD_KFBXCLUSTER_USERDATA "UserData" -#define FIELD_KFBXCLUSTER_INDEXES "Indexes" -#define FIELD_KFBXCLUSTER_WEIGHTS "Weights" -#define FIELD_KFBXCLUSTER_TRANSFORM "Transform" -#define FIELD_KFBXCLUSTER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXCLUSTER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXCLUSTER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXCLUSTER_AVERAGE "Average" -#define TOKEN_KFBXCLUSTER_ADDITIVE "Additive" -#define TOKEN_KFBXCLUSTER_TOTAL1 "Total1" - -// -// FbxBlendShape -// -#define FIELD_KFBXBLENDSHAPE_VERSION "Version" - -// -// FbxBlendShapeChannel -// -#define FIELD_KFBXBLENDSHAPECHANNEL_VERSION "Version" -#define FIELD_KFBXBLENDSHAPECHANNEL_DEFORMPERCENT "DeformPercent" -#define FIELD_KFBXBLENDSHAPECHANNEL_FULLWEIGHTS "FullWeights" - -// -// FbxShape -// -#define FIELD_KFBXSHAPE_SHAPE "Shape" -#define FIELD_KFBXSHAPE_VERSION "Version" -#define FIELD_KFBXSHAPE_INDEXES "Indexes" -#define FIELD_KFBXSHAPE_VERTICES "Vertices" -#define FIELD_KFBXSHAPE_NORMALS "Normals" - -// -// FbxVertexCacheDeformer -// -#define FILED_KFBXVERTEXCACHEDEFORMER_VERSION "Version" -#define FILED_KFBXVERTEXCACHEDEFORMER_CACHE_CHANNEL "CacheChannel" - -// -// FbxCache -// -#define FIELD_KFBXCACHE_VERTEX_CACHE "Cache" -#define FIELD_KFBXCACHE_VERSION "Version" -#define FIELD_KFBXCACHE_CACHE_PATH "CachePath" - -// -// FbxBindingTable -// -#define FIELD_KFBXBINDINGTABLE_BINDING_TABLE "BindingTable" -#define FIELD_KFBXBINDINGTABLE_VERSION "Version" -#define FIELD_KFBXBINDINGTABLE_TARGET "Target" -#define FIELD_KFBXBINDINGTABLE_ENTRY "Entry" - -// -// FbxImplementation -// -#define FIELD_KFBXIMPLEMENTATION_IMPLEMENTATION "Implementation" -#define FIELD_KFBXIMPLEMENTATION_VERSION "Version" - -// -// FbxBindingOperator -// -#define FIELD_KFBXBINDINGOPERATOR_BINDING_OPERATOR "BindingOperator" -#define FIELD_KFBXBINDINGOPERATOR_VERSION "Version" -#define FIELD_KFBXBINDINGOPERATOR_ENTRY "Entry" - -// -// FbxCollection -// -#define FIELD_KFBXCOLLECTION_COLLECTION "Collection" -#define FIELD_KFBXCOLLECTION_VERSION "Version" - -// -// FbxCollectionExclusive -// -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_COLLECTIONEXCLUSIVE "CollectionExclusive" -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_VERSION "Version" - -// -// FbxSelectionSet -// -#define FIELD_KFBXSELECTIONSET_VERTICE_INDEXARRAY "VertexIndexArray" -#define FIELD_KFBXSELECTIONSET_EDGE_INDEXARRAY "EdgeIndexArray" -#define FIELD_KFBXSELECTIONSET_POLYGONVERTICES_INDEXARRAY "PolygonIndexArray" - -// -// FbxDisplayLayer -// -#define FIELD_KFBXDISPLAYLAYER_DISPLAYLAYER "DisplayLayer" -#define FIELD_KFBXDISPLAYLAYER_VERSION "Version" - -// -// FbxDocument -// -#define FIELD_KFBXDOCUMENT_DOCUMENT "Document" -#define FIELD_KFBXDOCUMENT_VERSION "Version" - -// -// FbxLayeredTexture -// -#define FIELD_KFBXLAYEREDTEXTURE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_KFBXLAYEREDTEXTURE_VERSION "Version" -#define FIELD_KFBXLAYEREDTEXTURE_BLENDMODES "BlendModes" -#define FIELD_KFBXLAYEREDTEXTURE_ALPHAS "Alphas" - -// -// FbxGobo -// -#define FIELD_KFBXGOBO_GOBOMANAGER "GoboManager" -#define FIELD_KFBXGOBO_GOBO "Gobo" -#define FIELD_KFBXGOBO_LIGHTGOBO "LightGobo" -#define FIELD_KFBXGOBO_VERSION "Version" -#define FIELD_KFBXGOBO_GOBONAME "GoboName" -#define FIELD_KFBXGOBO_GOBOPATH "GoboPath" -#define FIELD_KFBXGOBO_DRAWCOMPONENT "DrawComponent" - - -// -// Password -// -#define FIELD_PASSWORD "NodeId" -#define FIELD_OLD_PASSWORD "Param2a" -#define FIELD_XOR_STRING "?|/?*" - - -// Meanfull names for MB 6.0 -#define FIELD_KFBXLAYER_ELEMENT_UV "LayerElementUV" -#define FIELD_KFBXLAYER_ELEMENT_SMOOTHING "LayerElementSmoothing" -#define FIELD_KFBXLAYER_ELEMENT_VERTEX_CREASE "LayerElementVertexCrease" -#define FIELD_KFBXLAYER_ELEMENT_EDGE_CREASE "LayerElementEdgeCrease" -#define FIELD_KFBXLAYER_ELEMENT_HOLE "LayerElementHole" -#define FIELD_KFBXLAYER_ELEMENT_USER_DATA "LayerElementUserData" -#define FIELD_KFBXLAYER_ELEMENT_VISIBILITY "LayerElementVisibility" -#define FIELD_KFBXLAYER_ELEMENT_NORMAL "LayerElementNormal" -#define FIELD_KFBXLAYER_ELEMENT_BINORMAL "LayerElementBinormal" -#define FIELD_KFBXLAYER_ELEMENT_TANGENT "LayerElementTangent" -#define FIELD_KFBXLAYER_ELEMENT_MATERIAL "LayerElementMaterial" -#define FIELD_KFBXLAYER_ELEMENT_TEXTURE "LayerElementTexture" -#define FIELD_KFBXLAYER_ELEMENT_COLOR "LayerElementColor" -#define FIELD_KFBXLAYER_ELEMENT_POLYGON_GROUP "LayerElementPolygonGroup" -#define FIELD_KFBXLAYER_ELEMENT_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT_NAME "Name" -#define FIELD_KFBXLAYER_ELEMENT_TYPED_INDEX "TypedIndex" -#define FIELD_KFBXLAYER_ELEMENT_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXLAYER_ELEMENT_REFERENCE_INFO_TYPE "ReferenceInformationType" -#define FIELD_KFBXLAYER "Layer" -#define FIELD_KFBXLAYER_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT "LayerElement" -#define FIELD_KFBXLAYER_ELEMENT_TYPE "Type" - -// -// FbxLayer -// -#define FIELD_KFBXLAYER_GEOMETRY_LAYER "GeometryLayer" -#define FIELD_KFBXLAYER_LAYER_TEXTURE_INFO "LayerTextureInfo" -#define FIELD_KFBXLAYER_TEXTURE_MODE "TextureMode" -#define FIELD_KFBXLAYER_TEXTURE_BLEND_MODE "TextureBlendMode" -#define FIELD_KFBXLAYER_TEXTURE_ID_COUNT "TextureIdCount" -#define FIELD_KFBXLAYER_TEXTURE_ID "TextureId" -#define FIELD_KFBXLAYER_UV_MODE "UVMode" -#define FIELD_KFBXLAYER_UV_COUNT "UVCount" -#define FIELD_KFBXLAYER_UV "UV" -#define FIELD_KFBXLAYER_UV_INDEX "UVIndex" -#define FIELD_KFBXLAYER_UV_ID_COUNT "UVIdCount" -#define FIELD_KFBXLAYER_UV_ID "UVId" - -// -// FbxPose -// -#define FIELD_KFBXPOSE_VERSION "Version" -#define FIELD_KFBXPOSE_TYPE "Type" -#define FIELD_KFBXPOSE_POSE "Pose" -#define FIELD_KFBXPOSE_BIND_POSE "BindPose" -#define FIELD_KFBXPOSE_REST_POSE "RestPose" - - -// -// KSceneInfo -// -#define FIELD_SCENEINFO "SceneInfo" -#define FIELD_SCENEINFO_TYPE "Type" -#define FIELD_SCENEINFO_VERSION "Version" -#define FIELD_SCENEINFO_METADATA "MetaData" -#define FIELD_SCENEINFO_METADATA_VERSION "Version" -#define FIELD_SCENEINFO_METADATA_TITLE "Title" -#define FIELD_SCENEINFO_METADATA_SUBJECT "Subject" -#define FIELD_SCENEINFO_METADATA_AUTHOR "Author" -#define FIELD_SCENEINFO_METADATA_KEYWORDS "Keywords" -#define FIELD_SCENEINFO_METADATA_REVISION "Revision" -#define FIELD_SCENEINFO_METADATA_COMMENT "Comment" - -// -// Global setting: -// -#define FIELD_GLOBAL_SETTINGS "GlobalSettings" -#define FIELD_GLOBAL_SETTINGS_VERSION "Version" - -// -// FbxSceneReference: -// -#define FIELD_KFBXREFERENCE_REFERENCE "SceneReference" -#define FIELD_KFBXREFERENCE_VERSION "Version" - -// -// Constraints -// -#define FIELD_CONSTRAINT "Constraint" -#define FIELD_CONSTRAINT_VERSION "Version" -#define FIELD_CONSTRAINT_OFFSET "Offset" -#define TOKEN_KFBXCONSTRAINT_CONSTRAINT "Constraint" -#define TOKEN_KFBXCONSTRAINT_POSITION "Position From Positions" -#define TOKEN_KFBXCONSTRAINT_ROTATION "Rotation From Rotations" -#define TOKEN_KFBXCONSTRAINT_SCALE "Scale From Scales" -#define TOKEN_KFBXCONSTRAINT_PARENT "Parent-Child" -#define TOKEN_KFBXCONSTRAINT_SINGLECHAINIK "Single Chain IK" -#define TOKEN_KFBXCONSTRAINT_AIM "Aim" -#define TOKEN_KFBXCONSTRAINT_CHARACTER "Character" -#define TOKEN_KFBXCONSTRAINT_CUSTOM "Custom" - -// -// Controlset plug -// - - -// -// Object definition -// -#define FIELD_OBJECT_DESCRIPTION "Document" -#define FIELD_OBJECT_DESCRIPTION_NAME "Name" -#define FIELD_OBJECT_REFERENCES "References" -#define FIELD_OBJECT_REFERENCES_FILE_PATH_URL "FilePathUrl" -#define FIELD_OBJECT_REFERENCES_REFERENCE "Reference" -#define FIELD_OBJECT_DEFINITION "Definitions" -#define FIELD_OBJECT_PROPERTY_TEMPLATE "PropertyTemplate" -#define FIELD_OBJECT_DEFINITION_VERSION "Version" -#define FIELD_OBJECT_DEFINITION_COUNT "Count" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE "ObjectType" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO_LAYER "AudioLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_REFERENCE "SceneReference" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTAINER "Container" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MODEL "Model" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY "Geometry" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_NODE_ATTRIBUTE "NodeAttribute" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY_WEIGHTED_MAP "GeometryWeightedMap" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MARKETSET "MarkerSet" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION "Collection" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION_EXCLUSIVE "CollectionExclusive" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DISPLAY_LAYER "DisplayLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_THUMBNAIL "Thumbnail" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_VIDEO "Video" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SUBDEFORMER "SubDeformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPE "BlendShape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPECHANNEL "BlendShapeChannel" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTROLSET_PLUG "ControlSetPlug" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_POSE "Pose" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GENERIC_NODE "GenericNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CACHE "Cache" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_IMPLEMENTATION "Implementation" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGTABLE "BindingTable" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGOPERATOR "BindingOperator" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PROCEDURAL_TEXTURE "ProceduralTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENE "Scene" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LIBRARY "Library" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DOCUMENT "Document" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_FOLDER "Folder" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CLIP "Clip" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE "TimelineX" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE_TRACK "TimelineXTrack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_OBJECTMETADATA "ObjectMetaData" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PLUGIN_PARAMS "PluginParameters" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_STACK "AnimationStack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_LAYER "AnimationLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVENODE "AnimationCurveNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVE "AnimationCurve" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_EVALUATOR "AnimationEvaluator" - -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SELECTIONNODE "SelectionNode" - -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_MESH "Mesh" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SUBDIV "Subdiv" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_PATCH "Patch" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURB "Nurb" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_SURFACE "NurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_CURVE "NurbsCurve" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_TRIM_NURB_SURFACE "TrimNurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_LINE "Line" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GLOBAL_SETTINGS FIELD_GLOBAL_SETTINGS - -// -// Object properties -// -#define FIELD_OBJECT_PROPERTIES "Objects" - - -// -// Object relations -// -#define FIELD_OBJECT_RELATIONS "Relations" -#define FIELD_OBJECT_RELATIONS_TYPE_MODEL "Model" -#define FIELD_OBJECT_RELATIONS_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_RELATIONS_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_RELATIONS_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_RELATIONS_TYPE_VIDEO "Video" -#define FIELD_OBJECT_RELATIONS_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_RELATIONS_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_RELATIONS_TYPE_POSE "Pose" -#define FIELD_OBJECT_RELATIONS_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_RELATIONS_TYPE_CACHE "Cache" - -// -// Object connections -// -#define FIELD_OBJECT_CONNECTIONS "Connections" - - -// -// Takes -// -#define FIELD_TAKES "Takes" - -// Embedded files -#define FIELD_EMBEDDED_FILES "Embedding" -#define FIELD_EMBEDDED_FILE "File" -// Original filename, relative to the fbx -// It may point to a file not below the fbx. -#define FIELD_EMBEDDED_ORIGINAL_FILENAME "Original" -// Embedded filename, unique to the fbx, always relative to the fbx file; -// if two original filenames, in separate folders, are embedded in an fbx file, -// one of them will be renamed by using a folder. -#define FIELD_EMBEDDED_FILENAME "Filename" - -// Link back to the objects which use this file. -#define FIELD_EMBEDDED_CONSUMERS "Consumers" -#define FIELD_EMBEDDED_CONSUMER "Consumer" - -// -// Node Attribute -// -#define FIELD_NODE_ATTRIBUTE_NAME "NodeAttributeName" -#define FIELD_NODE_ATTRIBUTE_REFTO "NodeAttributeRefTo" - -// -// Old sections -// -#define FIELD_OLD_SECTION_VERSION5 "Version5" -#define FIELD_OLD_SECTION_HIERARCHYVIEW "HierarchyView" - -#define OBJECT_OLD_SECTION_VERSION5 "OldSection_VersionFive" -#define OBJECT_OLD_SECTION_HIERARCHYVIEW "OldSection_HierarchyView" - -#include - -#endif /* _FBXSDK_FILEIO_FILE_TOKENS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h deleted file mode 100644 index ce0ef8c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalcamerasettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxScene; -class FbxCamera; -class FbxCameraSwitcher; - -#define FBXSDK_CAMERA_PERSPECTIVE "Producer Perspective" -#define FBXSDK_CAMERA_TOP "Producer Top" -#define FBXSDK_CAMERA_FRONT "Producer Front" -#define FBXSDK_CAMERA_BACK "Producer Back" -#define FBXSDK_CAMERA_RIGHT "Producer Right" -#define FBXSDK_CAMERA_LEFT "Producer Left" -#define FBXSDK_CAMERA_BOTTOM "Producer Bottom" -#define FBXSDK_CAMERA_SWITCHER "Camera Switcher" - -/** This class contains the global camera settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format - * that is now the default no longer uses it. The relevant data (a subset of this class) has - * been moved to the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalCameraSettings -{ - FBXSDK_FRIEND_NEW(); - -public: - /** \name Default Camera Settings */ - //@{ - /** \enum EViewingMode Viewing modes. */ - enum EViewingMode - { - eStandard, // - -#endif /* _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h deleted file mode 100644 index d33b14e..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgloballightsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ - -#include - -#include - -#include - -class FbxGlobalLightSettingsProperties; - -/** This class contains functions for accessing global light settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format that is - * now the default no longer uses it. The relevant data (a subset of this class) has been moved to - * the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalLightSettings -{ - -public: - FBXSDK_FRIEND_NEW(); - /** - * \name Ambient Color - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only use RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Fog Option - */ - //@{ - - /** Activates or disables the fog. - * \param pEnable Set to \c true to activate the fog option or set to \c false to disable the fog option. - */ - void SetFogEnable(bool pEnable); - - /** Returns the fog option's current state. - * \return \c True if fog is activated, returns \c false if fog is disabled. - */ - bool GetFogEnable() const; - - /** Sets the fog color. - * \param pColor The fog color to be set. - * \remarks The fog color only uses RGB channels. - */ - void SetFogColor(FbxColor pColor); - - /** Returns the fog color. - * \return The fog color. - * \remarks The fog color only uses RGB channels. - */ - FbxColor GetFogColor() const; - - /** \enum EFogMode Fog types. - */ - enum EFogMode - { - eLinear, //! Linear fog mode. - eExponential, //! Exponential fog mode. - eExponentialSquareRoot //! Exponential square root fog mode. - }; - - /** Sets the fog mode. - * \param pMode The fog type to be set. - */ - void SetFogMode(EFogMode pMode); - - /** Returns the fog mode. - * \return The currently set fog mode. - */ - EFogMode GetFogMode() const; - - /** Sets the fog density. - * \param pDensity The fog density to be set. It can be any double value, however it can - * happen that other sections of FBX SDK may clamp values to reasonable values. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - void SetFogDensity(double pDensity); - - /** Returns the fog density. - * \return The currently set fog density. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - double GetFogDensity() const; - - /** Sets the distance from the view where the fog begins. - * \param pStart Distance where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. The new value is clamped to fit inside the interval [0, FogEnd()]. - */ - void SetFogStart(double pStart); - - /** Returns the distance from the view where the fog begins. - * \return The distance from the view where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogStart() const; - - /** Sets the distance from the view where the fog ends. - * \param pEnd Distance where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. The new value is adjusted to fit within the interval [FogStart(), inf). - */ - void SetFogEnd(double pEnd); - - /** Returns the distance from the view where the fog ends. - * \return The distance from the view where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogEnd() const; - - //@} - - /** - * \name Shadow Planes - * The functions in this section are supported only by FiLMBOX version 2.7 and earlier. - * FiLMBOX 3.0 supports shadow planes within a specific shader, which is not supported by the FBX SDK. - */ - //@{ - - /** Struct used to define the shadow plane. - */ - struct FBXSDK_DLL ShadowPlane - { - //! Default constructor. - ShadowPlane(); - - //! Activate flag. - bool mEnable; - - //! Origin point. - FbxVector4 mOrigin; - - //! Normal vector. - FbxVector4 mNormal; - }; - - /** Activates or disables the display of shadow planes. - * \param pShadowEnable Set to \c true to display shadow planes in the scene. - */ - void SetShadowEnable(bool pShadowEnable); - - /** Returns the current state of the shadow enable flag. - * \return \c True if shadow planes are set to be displayed in the scene. - */ - bool GetShadowEnable() const; - - /** Sets the shadow intensity that is applied to all shadow planes. - * \param pShadowIntensity Intensity applied to all the shadow planes. - * \remarks Ranges from 0 to 300. - */ - void SetShadowIntensity(double pShadowIntensity); - - /** Returns the shadow intensity applied to all shadow planes. - * \return The intensity applied to all shadow planes in the scene. - * \remarks Ranges from 0 to 300. - */ - double GetShadowIntensity() const; - - /** Returns the number of shadow planes. - * \return Number of shadow planes. - */ - int GetShadowPlaneCount() const; - - /** Returns a shadow plane at the specified index. - * \param pIndex Shadow plane index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer the shadow plane, or \c NULL if the index is out of range. - */ - ShadowPlane* GetShadowPlane(int pIndex, FbxStatus* pStatus=NULL); - - /** Adds a shadow plane. - * \param pShadowPlane The shadow plane to be added. - */ - void AddShadowPlane(ShadowPlane pShadowPlane); - - //! Removes all shadow planes. - void RemoveAllShadowPlanes(); - - //@} - - //! Restores default settings. - void RestoreDefaultSettings(); - - /** Assignment operator. - * \param pGlobalLightSettings FbxGlobalLightSettings object assigned to this one. - */ - const FbxGlobalLightSettings& operator=(const FbxGlobalLightSettings& pGlobalLightSettings); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxGlobalLightSettings(); - ~FbxGlobalLightSettings(); - - FbxGlobalLightSettingsProperties* mPH; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h deleted file mode 100644 index ddca0f3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h +++ /dev/null @@ -1,315 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class contains functions for accessing global settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGlobalSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGlobalSettings, FbxObject); - -public: - /** - * \name Axis system - */ - //@{ - - /** Sets the scene's coordinate system. - * \param pAxisSystem The coordinate system to set. - */ - void SetAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Returns the scene's current coordinate system. - * \return The scene's current coordinate system. - */ - FbxAxisSystem GetAxisSystem(); - //@} - - /** Sets the coordinate system's original Up Axis when the scene is created. - * \param pAxisSystem The coordinate system whose Up Axis is copied. - */ - void SetOriginalUpAxis(const FbxAxisSystem& pAxisSystem); - - /** Returns the coordinate system's original Up Axis. - * \return The coordinate system's original Up Axis when the scene is created. 0 is X, 1 is Y, 2 is Z axis. - */ - int GetOriginalUpAxis() const; - //@} - - /** - * \name System Units - */ - //@{ - - /** Sets the unit of measurement used by the system. - * \param pOther The system unit to set. - */ - void SetSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the unit of measurement used by the system. - * \return The unit of measurement used by the system. - */ - FbxSystemUnit GetSystemUnit() const; - - /** Sets the original unit of measurement used by the system. - * \param pOther The original system unit to set. - */ - void SetOriginalSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the original unit of measurement used by the system. - * \return The original unit of measurement used by the system. - */ - FbxSystemUnit GetOriginalSystemUnit() const; - //@} - - - /** - * \name Light Settings - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only uses the RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Camera Settings - */ - //@{ - /** Sets the default camera. - * \param pCameraName Name of the default camera. - * \return \c true if camera name is valid, returns \c false if the camera does not have a valid name. - * \remarks A valid camera name can be either one of the defined tokens (FBXSDK_CAMERA_PERSPECTIVE, - * FBXSDK_CAMERA_TOP, FBXSDK_CAMERA_FRONT, FBXSDK_CAMERA_BACK, FBXSDK_CAMERA_RIGHT, FBXSDK_CAMERA_LEFT and FBXSDK_CAMERA_BOTTOM) or the name - * of a camera inserted in the node tree under the scene's root node. - */ - bool SetDefaultCamera(const char* pCameraName); - - /** Returns the default camera name. - * \return The default camera name, or an empty string if no camera name has been set. - */ - FbxString GetDefaultCamera() const; - //@} - - /** - * \name Time Settings - */ - //@{ - /** Sets the time mode. - * \param pTimeMode One of the defined modes in class FbxTime. - */ - void SetTimeMode(FbxTime::EMode pTimeMode); - - /** Returns the time mode. - * \return The currently set TimeMode. - */ - FbxTime::EMode GetTimeMode() const; - - /** Sets the time protocol. - * \param pTimeProtocol One of the defined protocols in FbxTime class. - */ - void SetTimeProtocol(FbxTime::EProtocol pTimeProtocol); - - /** Returns the time protocol. - * \return The currently set time protocol (default FbxTime::eFrameCount). - */ - FbxTime::EProtocol GetTimeProtocol() const; - - /** \enum ESnapOnFrameMode Snap on frame mode. - */ - enum ESnapOnFrameMode - { - eNoSnap, //! No snap. - eSnapOnFrame, //! Snap on frame. - ePlayOnFrame, //! Play on frame. - eSnapAndPlayOnFrame //! Snap and play on frame. - }; - - /** Sets the snap on frame mode. - * \param pSnapOnFrameMode One of the following values: eNoSnap, eSnapOnFrame, ePlayOnFrame, or eSnapAndPlayOnFrame. - */ - void SetSnapOnFrameMode(ESnapOnFrameMode pSnapOnFrameMode); - - /** Returns the snap on frame mode. - * \return The currently set snap on frame mode (default eNoSnap). - */ - ESnapOnFrameMode GetSnapOnFrameMode() const; - - /** Sets the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void SetTimelineDefaultTimeSpan(const FbxTimeSpan& pTimeSpan); - - /** Returns the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void GetTimelineDefaultTimeSpan(FbxTimeSpan& pTimeSpan) const; - - /** Set custom frame rate. - * This is meaningless if the time mode is not FbxTime::eCustom. - */ - void SetCustomFrameRate(double pCustomFrameRate); - - /** Return frame rate if the time mode is FbxTime::eCustom. - * If the time mode is not FbxTime::eCustom, return -1. - */ - double GetCustomFrameRate() const; - //@} - - /** - * \name Time Markers - */ - //@{ - struct FBXSDK_DLL TimeMarker - { - //! Default constructor. - TimeMarker(); - - /** Copy constructor. - * \param pTimeMarker Another time marker copied to this time marker. - */ - TimeMarker(const TimeMarker& pTimeMarker); - - /** Assignment operator. - * \param pTimeMarker Another time marker assigned to this time marker. - */ - TimeMarker& operator=(const TimeMarker& pTimeMarker); - - //! Marker name. - FbxString mName; - - //! Marker time. - FbxTime mTime; - - //! Loop flag. - bool mLoop; - }; - - /** Returns the number of time markers. - * \return The number of time markers. - */ - int GetTimeMarkerCount() const; - - /** Returns the time marker at the given index. - * \param pIndex The time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return A copy of the time marker at the given index, or an empty one if an error occurred. - */ - TimeMarker GetTimeMarker(int pIndex, FbxStatus* pStatus=NULL) const; - - /** Adds a time marker. - * \param pTimeMarker The new time marker to be added. - * \param pStatus The FbxStatus object to hold error codes. - */ - void AddTimeMarker(const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - /** Replaces the time marker at the specified index with the new one. - * \param pIndex The time marker index. - * \param pTimeMarker The new time marker. - * \param pStatus The FbxStatus object to hold error codes. - */ - void ReplaceTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - //! Removes all time markers and sets the current time marker index to -1. - void RemoveAllTimeMarkers(); - - /** Sets the index of the current time marker. - * \param pIndex The current time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, or returns \c false if the index is not valid. - */ - bool SetCurrentTimeMarker(int pIndex, FbxStatus* pStatus=NULL); - - /** Returns the current time marker index. - * \return The current time marker index, or -1 if no current time marker has been set. - */ - int GetCurrentTimeMarker() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - FbxPropertyT UpAxis; - FbxPropertyT UpAxisSign; - - FbxPropertyT FrontAxis; - FbxPropertyT FrontAxisSign; - - FbxPropertyT CoordAxis; - FbxPropertyT CoordAxisSign; - - FbxPropertyT OriginalUpAxis; - FbxPropertyT OriginalUpAxisSign; - - FbxPropertyT UnitScaleFactor; - FbxPropertyT OriginalUnitScaleFactor; - - FbxPropertyT AmbientColor; - FbxPropertyT DefaultCamera; - FbxPropertyT TimeMode; - FbxPropertyT TimeProtocol; - FbxPropertyT SnapOnFrameMode; - FbxPropertyT TimeSpanStart; - FbxPropertyT TimeSpanStop; - FbxPropertyT CustomFrameRate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - void AxisSystemToProperties(); - void PropertiesToAxisSystem(); - - void Init(); - - FbxAxisSystem mAxisSystem; - int mNbTimeMarkers; - - friend class FbxWriterFbx6; - - FbxProperty mTimeMarkers; - FbxPropertyT mCurrentTimeMarker; - void AddSetTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus, bool pAdd); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTime::EMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgobo.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgobo.h deleted file mode 100644 index 1cad49a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgobo.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgobo.h -#ifndef _FBXSDK_FILEIO_GOBO_H_ -#define _FBXSDK_FILEIO_GOBO_H_ - -#include - -#include - -#include - -/** - * \brief A gobo is a filter placed over a spot light to project light patterns through fog on a surface. - * You can also use an image file as a gobo, which cause the light to project an image, much like a projector. - */ -class FbxGobo -{ -public: - FbxGobo(char* pName) : - mName(pName) - { - } - - //! Gobo name. - FbxString mName; - //! path and file name of the image file. - FbxString mFileName; - //! Flag that if shows the light projected on the ground. - bool mDrawGroundProjection; - //! Flag that lets you create a volumetric lighting effect by making the light stream visible. - bool mVolumetricLightProjection; - //! Flag that front facing light occurs when the camera view is looking down or up the light stream of a Spot light, which makes the light stream look three-dimensional. - bool mFrontVolumetricLightProjection; -}; - -#include - -#endif /* _FBXSDK_FILEIO_GOBO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbximporter.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbximporter.h deleted file mode 100644 index b12c120..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbximporter.h +++ /dev/null @@ -1,393 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximporter.h -#ifndef _FBXSDK_FILEIO_IMPORTER_H_ -#define _FBXSDK_FILEIO_IMPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxDocumentInfo; -class FbxTakeInfo; -class FbxReader; -class FbxThread; - -struct FbxImportThreadArg; - -/** Class to import an FBX file into SDK objects. -* Normally this class is used as is. But for very special needs -* a user can override Initialize() for special purpose. -* -* An importer will select the appropriate reader to a particular file. -* Ex: When an importer must import an FBX 7 file, -* the importer will ask for all registered readers if an FBX 7 file reader is available, -* then if a reader is found, the importer will create -* the specialized FBX 7 reader and read the file. -* This way, an importer can "read" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. -* \see FbxReader -* -* Typical workflow for using the FbxImporter class: -* -# create a SDKManager -* -# create an IOSettings object -* -# create an empty scene -* -# create an importer -* -# initialize the importer with a file name and IOSettings -* -# set numerous states, take information, defining how the importer will behave -* -# call FbxImporter::Import() with an empty scene -* \code -* ex: -* // create a SdkManager -* FbxManager *lSdkManager = FbxManager::Create(); -* -* // create an IOSettings object -* FbxIOSettings * ios = FbxIOSettings::Create(lSdkManager, IOSROOT ); -* -* // set some IOSettings options -* ios->SetBoolProp(IMP_FBX_MATERIAL, true); -* ios->SetBoolProp(IMP_FBX_TEXTURE, true); -* -* // create an empty scene -* FbxScene* lScene = FbxScene::Create(lSdkManager,""); -* -* // Create an importer. -* FbxImporter* lImporter = FbxImporter::Create(lSdkManager, ""); -* -* // Initialize the importer by providing a filename and the IOSettings to use -* lImporter->Initialize("C:\\myfile.fbx", -1, ios); -* -* // Import the scene. -* lImporter->Import(lScene); -* -* // Destroy the importer. -* lImporter->Destroy(); -* \endcode -* -* \remarks According to the file suffix, a specialized reader will be created internally. -* Ex: for .fbx files a FBX Reader, for .3ds files, a 3ds reader, etc. -* Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS -* \nosubgrouping -*/ -class FBXSDK_DLL FbxImporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxImporter, FbxIOBase); - -public: - /** - * \name Import Functions - */ - //@{ - - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - bool Initialize(const char* pFileName, int pFileFormat=-1, FbxIOSettings * pIOSettings=NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Get the FBX version number of the FBX file. - * FBX version numbers start at 5.0.0. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - void GetFileVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get the default rendering resolution if present in the file header. - * \param pCamName Returned name of the camera. - * \param pResolutionMode Returned resolution mode. - * \param pW Returned width. - * \param pH Returned height. - * \return \c true if the default rendering settings are defined in the file, otherwise - * returns \c false with empty parameters. - */ - bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - - /** \enum EStreamOptionsGeneration Stream options identifiers. - * - \e eParseFile Parse the file - * - \e eDoNotParseFile Do not parse the file. - */ - enum EStreamOptionsGeneration - { - eParseFile, // Parse the file - eDoNotParseFile // Do not parse the file (fast) - }; - - /** Read the currently opened file header to retrieve information related to takes. - * \param pStreamOptionsGeneration Stream options identifier. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(EStreamOptionsGeneration pStreamOptionsGeneration = eParseFile); - - /** Read the currently opened file header to retrieve information related to takes. - * \param pFbxObject Target FBX file. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(FbxIO* pFbxObject); - - /** Import the currently opened file into a scene. - * \param pDocument Document to fill with file content. - * \param pNonBlocking If true, the import process will be executed in a new thread, allowing it to be non-blocking. - To determine if the import finished, refer to the function IsImporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * If the imported file is password protected and the password is not - * set or wrong, the FbxStatus object access with GetStatus() will be set with - * FbxStatus::ePasswordError. - */ - bool Import(FbxDocument* pDocument, bool pNonBlocking=false); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the importer is currently importing. - * \param pImportResult This parameter, after the import finished, will contain the result of the import success or failure. - * \return Return true if the importer is currently importing. - * \remarks This function will always return false if Import() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the import finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsImporting(bool& pImportResult); -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Point to a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - /** Set the password. - * All subsequently imported files are opened with the given password. - * \param pPassword Password string. - */ - void SetPassword(char* pPassword); - - /** - * \name Animation Stack Description Access - * \see FbxAnimStack - */ - //@{ - - /** Get the number of available animation stacks in the file. - * \return Number of animation stacks. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - int GetAnimStackCount(); - - /** Get the take information about an available take. - * Use the returned reference to a FbxTakeInfo object to set whether the indexed take is imported. - * \param pIndex Index of the requested take. - * \return Take information or \c NULL if function failed. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxTakeInfo* GetTakeInfo(int pIndex); - - /** Return the active animation stack name. - * \return Active animation stack name if there is one, otherwise returns an empty string. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxString GetActiveAnimStackName(); - - //@} - - /** - * \name Scene Description Access - */ - //@{ - - /** Get the scene info. - * \return Pointer to the scene info or \c NULL if no scene information - * is available in the file. - */ - FbxDocumentInfo* GetSceneInfo(); - - //@} - /** - * \name File Format - */ - //@{ - - /** Returns the index of the reader (FbxReader) associated with the file format. - This index is considered the identifier of the file format. - The array of registered readers can't be retrieved. - \return Index of the registered FbxReader associated with the file format. - If no reader found return -1. - \remarks According to the number of readers registered this value can change - for the same reader between SDK Manager instantiations. - */ - int GetFileFormat (); - - /** \return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFile* GetFile(); - FbxStream* GetStream(); - void* GetStreamData(); - - void ParseForGlobalSettings(bool pState); - void ParseForStatistics(bool pState); - bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - bool GetStatistics(FbxStatistics* pStatistics); - bool GetFrameRate(FbxTime::EMode &pTimeMode); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileOpen(FbxFile* pFile = NULL); - bool FileOpen(FbxStream* pStream, void* pStreamData); - void FileClose(); - - void GetImportOptionsInfo(); - bool IsNativeExtension (); - - //These two internal functions are only used to read old character pose data -public: - bool Initialize(FbxFile* pFile, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - bool Import(FbxDocument* pDocument, FbxIO* pFbxObject); - -private: - bool ImportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxReader* mReader; - FbxString mExtractFolder; - bool mParseForGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnits; - FbxTime::EMode mFrameRate; - bool mParseForStatistics; - FbxStatistics mStatistics; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mImportThread; - FbxImportThreadArg* mImportThreadArg; - bool mImportThreadResult; - bool mIsThreadImporting; -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - FbxProgress mProgress; - FbxFile* mFile; - FbxStream* mStream; - void* mStreamData; - bool mImportOptionsDone; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxString mActiveAnimStackName; - int mMajorVersion; - int mMinorVersion; - int mRevisionVersion; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - //For Initialize and Import - friend class FbxReaderFbx5; - friend class FbxReaderFbx6; - friend struct FbxReaderFbx7_Impl; - - friend void ImportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a FBX file has been imported. -class FBXSDK_DLL FbxEventPreImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreImport); -public: - inline FbxEventPreImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The document the FBX file is to be imported into. - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a FBX file has been imported. -class FBXSDK_DLL FbxEventPostImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostImport); -public: - inline FbxEventPostImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The imported document - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_IMPORTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiobase.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiobase.h deleted file mode 100644 index c13621b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiobase.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiobase.h -#ifndef _FBXSDK_FILEIO_IO_BASE_H_ -#define _FBXSDK_FILEIO_IO_BASE_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_IO_END_NODE_STR "_End" - -/** \brief Base class for FBX file importer and exporter. - * \nosubgrouping - */ -class FBXSDK_DLL FbxIOBase : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOBase, FbxObject); - -public: - /** Initializes the object. - * \param pFileName The name of the file to access. - * \param pFileFormat Unused in this class implementation. - * \param pIOSettings Unused in this class implementation. - * \return \c True if successful, returns \c False otherwise. - * \remarks To identify the error, inspect \e mStatus. - */ - virtual bool Initialize(const char *pFileName, int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Returns the file name. - * \return The file name or an empty string if no filename has been set. - */ - virtual FbxString GetFileName(); - - //! Get the status object containing the success or failure state. - FbxStatus& GetStatus() { return mStatus; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - - int DetectReaderFileFormat(const char *pFileName); - int DetectWriterFileFormat(const char *pFileName); - - FbxStatus mStatus; - FbxString mFilename; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_BASE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h deleted file mode 100644 index 1c27404..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiopluginregistry.h -#ifndef _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ -#define _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ - -#include - -#include -#include - -#include - -/** \brief This class serves as the registrar for file formats. - * A file format must be registered when it is used by the FBX SDK. - * - * This class also lets you create and read formats other than FBX SDK native formats. - * Users of FBX SDK can write their own plug-ins to read or write arbitrary file formats. - * Once their plug-ins are registered in this class, FBX SDK is able to read or write - * these file formats. - * - * Each FbxManager has a unique FbxIOPluginRegistry. To get an instance of this class: - * \code - * FbxIOPluginRegistry* registry = manager->GetIOPluginRegistry(); - * \endcode - * \see FbxManager::GetIOPluginRegistry() - */ -class FBXSDK_DLL FbxIOPluginRegistry -{ -public: - - /** Constructor. - */ - FbxIOPluginRegistry(); - - /** Destructor. - */ - virtual ~FbxIOPluginRegistry(); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Reader from a plug-in path. - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Reader. - * \param pCreateF The function that creates the Reader to be registered. - * \param pInfoF The function that provides information about the Reader file format, such as the file extension and description. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Reader. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(FbxReader::CreateFuncType pCreateF, - FbxReader::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Writer from a plug-in path - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Writer. - * \param pCreateF The function that creates the Writer to be registered. - * \param pInfoF The function that provides information about the Writer file format, such as the file extension, description and version. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Writer. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(FbxWriter::CreateFuncType pCreateF, - FbxWriter::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - - /** Creates a Reader. - * \param pManager The SDK Manager where the Reader is created. - * \param pImporter The importer that holds the created Reader. - * \param pPluginID The Reader ID. - */ - FbxReader* CreateReader(FbxManager& pManager, - FbxImporter& pImporter, - int pPluginID) const; - - /** Creates a Writer. - * \param pManager The SDK Manager where the Writer is created. - * \param pExporter The exporter that holds the created Writer. - * \param pPluginID The Writer ID. - */ - FbxWriter* CreateWriter(FbxManager& pManager, - FbxExporter& pExporter, - int pPluginID) const; - - /** Searches for the Reader ID by the file extension. - * \param pExt The file extension. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByExtension(const char* pExt) const; - - /** Searches for the Writer ID by the file extension. - * \param pExt The file extension. - * \return The Writer ID if found, if not found, returns -1 - */ - int FindWriterIDByExtension(const char* pExt) const; - - /** Searches for the Reader ID by the file format description. - * \param pDesc The file format description. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByDescription(const char* pDesc) const; - - /** Searches for the Writer ID by the file format description. - * \param pDesc The file format description. - * \return The Writer ID if found, if not found, returns -1. - */ - int FindWriterIDByDescription(const char* pDesc) const; - - /** Verifies if the file format of the Reader is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, return \c false otherwise.. - */ - bool ReaderIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Writer is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, return \c false otherwise. - */ - bool WriterIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Reader is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool ReaderIsGenuine(int pFileFormat) const; - - /** Verifies if the file format of the Writer is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool WriterIsGenuine(int pFileFormat) const; - - /** Returns the number of file formats that can be imported. - * \return The number of importable formats. - */ - int GetReaderFormatCount() const; - - /** Returns the number of file formats that can be exported. - * \return The number of exportable formats. - * \remarks Multiple identifiers for the same format count as - * different file formats. For example, eFBX_BINARY, eFBX_ASCII and eFBX_ENCRYPTED - * are counted as three separate file formats. - */ - int GetWriterFormatCount() const; - - /** Returns the description of an importable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetReaderFormatDescription(int pFileFormat) const; - - /** Returns the description of an exportable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetWriterFormatDescription(int pFileFormat) const; - - /** Returns an importable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetReaderFormatExtension(int pFileFormat) const; - - /** Returns an exportable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetWriterFormatExtension(int pFileFormat) const; - - /** Returns a list of the writable file format versions. - * \param pFileFormat The file format identifier. - * \return A pointer to a list of user-readable strings that represent the versions. - */ - char const* const* GetWritableVersions(int pFileFormat) const; - - /** Detects the import (reader) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectReaderFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Detects the export (writer) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectWriterFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Returns the file format of the native Reader. - * \return The ID of the native Reader's file format. - */ - int GetNativeReaderFormat(); - - /** Returns the file format of the native Writer. - * \return The ID of the native Writer's file format. - */ - int GetNativeWriterFormat(); - - /** Fills the IO Settings for all registered readers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings & pIOS); - - /** Fills the IO Settings for all registered writers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings & pIOS); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void RegisterInternalIOPlugins(); - - struct ReaderPluginEntry - { - ReaderPluginEntry(const char* pExtension, const char* pDescription, FbxReader::CreateFuncType pCreatorFunction, int pBaseID, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - FbxReader::CreateFuncType mCreatorFunction; - FbxReader::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - struct WriterPluginEntry - { - WriterPluginEntry(const char* pExtension, const char* pDescription, char const* const* pVersions, FbxWriter::CreateFuncType pCreatorFunction, int pBaseID, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - char const* const* mVersions; - FbxWriter::CreateFuncType mCreatorFunction; - FbxWriter::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - FbxArray mReaders; - FbxArray mWriters; - int mNativeReaderFormat; - int mNativeWriterFormat; - bool mInternalPluginMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettings.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettings.h deleted file mode 100644 index 22865a3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettings.h +++ /dev/null @@ -1,584 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettings.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_H_ - -#include - -#include -#include - -#include - -//Undefine the macro mkdir, since it conflict with function mkdir in Qt\4.2.3\src\corelib\io\qdir.h -#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir) - #undef mkdir -#endif - -#define IOSVisible true -#define IOSHidden false - -#define IOSSavable true -#define IOSNotSavable false - -#define IOSEnabled true -#define IOSDisabled false - -#define IOSBinary 0 -#define IOSASCII 1 - -class FbxManager; -class FbxIOSettings; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FbxIOPropInfo -{ -public: - FbxIOPropInfo(); - ~FbxIOPropInfo(); - - void* UIWidget; // UI widget for showing the property - void* cbValueChanged; // call back when value changed - void* cbDirty; // call back when value changed - FbxStringList labels; // list of labels in many languages -}; - -class FBXSDK_DLL FbxIOInfo -{ -public: - enum EImpExp {eImport, eExport}; - - FbxIOInfo(); - - void Reset(EImpExp pImpExp); - void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0); - FbxTime::EMode GetTimeMode(){ return mTimeMode; } - FbxTime GetFramePeriod(); - void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false); - FbxObject* GetASFScene(){ return mASFScene; } - void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;} - void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;} - -private: - FbxTime::EMode mTimeMode; - FbxObject* mASFScene; - EImpExp mImpExp; - FbxIOSettings* ios; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -/** FbxIOSettings is a collection of properties, arranged as a tree, that - * can be used by FBX file readers and writers to represent import and export - * options. - * It is primarily used by FBX importers (FbxImporter) and FBX exporter (FbxExporter) - * when reading or writing data from or to a disk. - * The FBX plugins of some Autodesk products expose a UI representing the content of those options - * to let users see and choose options when an import or export operation is about to be done. - * The tree of options is extensible. - * - * Options can be saved or loaded from an XML file using the functions: - * ReadXMLFile(), WriteXMLFile(), WriteXmlPropToFile(). This functionality can be useful - * for plugins that use preset files. - * - * An instance of FbxIOSettings must be created to be used before an import/export operation. - * When a new FbxIOSettings instance is created, all options are created with default values. - * The new instance of FbxIOSettings can be passed to the FbxManager, - * this way that instance will be used by all import/export operations. - * - * Ex: to set an instance of FbxIOSettings to the FbxManager - * - * \code - * // First create a new instance of FbxIOSettings - * FbxIOSettings * ios = FbxIOSettings::Create((FbxManager *) mManager, IOSROOT); - * // then set the FbxManager - * mManager->SetIOSettings(ios); - * \endcode - * - * It's also possible for a developer to create another instance - * of FbxIOSettings, set particular options and use it for import/export operation. - * - * Ex: to set an instance of FbxIOSettings to a FbxImporter/FbxExporter - * \code - * mImporter->SetIOSettings(ios); / mExporter->SetIOSettings(ios); - * \endcode - * - * A schematic view of the FbxIOSettings tree : - * - * \verbatim - - OPTION_GROUP_ROOT (IOSROOT) - | - | - ________________________________________ - | | - -OPTION_GROUP_EXPORT (IOSN_EXPORT) -OPTION_GROUP_IMPORT (IOSN_IMPORT) - | | - -OPTION_GROUP_A -OPTION_GROUP_A - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_B -OPTION_GROUP_B - | | | | - | -OPTION_GROUP_A | -OPTION_GROUP_A - | | | | | | - | | -OPTION_A | | -OPTION_A - | | -OPTION_B | | -OPTION_B - | | | | - | -OPTION_GROUP_B | -OPTION_GROUP_B - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_C -OPTION_GROUP_C - | | - -OPTION_A -OPTION_A - - \endverbatim - * - * Any group of options can contain sub options, or group of sub options. - * To access an option value, we must pass the full path to the Get/Set functions - * Ex: - * \code - * ios->GetBoolProp("Import|IncludeGrp|Animation", true); // the root node name is not required - * \endcode - * - * All options path are defined in the file kfbxiosettingspath.h to ease the access of any options. - * Then "Import|IncludeGrp|Animation" == IMP_ANIMATION since IMP_ANIMATION is defined in kfbxiosettingspath.h - * All options defined path start with "IMP_" for import branch or "EXP_" for export branch. - * - * We strongly encourage to use the defined path in kfbxiosettingspath.h, this way if the parent group of an option is changed - * the change occur only in kfbxiosettingspath.h not in the code elsewhere. - * - * Ex: to get the boolean import "Animation" option - * \code - * bool anim = ios->GetBoolProp(IMP_ANIMATION, true); // will return true if not found, since we pass true as second param - * \endcode - * - * Ex: to set the boolean import "Animation" option to false - * \code - * ios->SetBoolProp(IMP_ANIMATION, false); - * \endcode - * - * Ex: to create a new option group under the "Import" branch - * \code - * // get the parent "Import" property - * FbxProperty import_Group = ios->GetProperty( IOSN_IMPORT ); // IOSN_IMPORT is defined as "Import" in kfbxiosettingspath.h - * if(import_Group.IsValid()) // check if we have found the IOSN_IMPORT parent option - * { - * // add a new group of options "myOptionGroup" - * FbxProperty myOptionGrp = ios->AddPropertyGroup(import_Group, "myOptionGroup", FbxStringDT, "My Option Group UI Label"); - * } - * \endcode - * - * Ex: to create a new boolean option under the "myOptionGroup" - * \code - * FbxProperty myOptionGrp = ios->GetProperty( "Import|myOptionGroup" ); // can also use IOSN_IMPORT|"myOptionGroup" - * if(myOptionGrp.IsValid()) // check if we have found the "myOptionGroup" - * { - * bool defaultValue = true; - * FbxProperty myOption = ios->AddProperty(myOptionGrp, "myOptionName", FbxBoolDT, "My Option UI label" , &defaultValue, eFbxBool); - * } - * \endcode - * - * Ex: to set some flags to myOption - * \code - * FbxProperty myOption = ios->GetProperty( "Import|myOptionGroup|myOptionName" ); - * if(myOption.IsValid()) - * { - * myOPtion.ModifyFlag(FbxPropertyFlags::eUIHidden, true); // to make that option not visible to the UI - * myOPtion.ModifyFlag(FbxPropertyFlags::eNotSavable, true); // to avoid the read/save of that option in XML file - * } - * \endcode - */ -class FBXSDK_DLL FbxIOSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOSettings, FbxObject); - -public: - //! Supported languages enumeration list - enum ELanguage - { - eENU, //!< English - United States - eDEU, //!< German - Germany - eFRA, //!< French - France - eJPN, //!< Japanese - Japan - eKOR, //!< Korean(Extended Wansung) - Korea - eCHS, //!< Chinese - PRC - ePTB, //!< Portuguese - Brasil - eLanguageCount //!< Total language count - }; - - /** Add a property group under the root prop to be a direct child of IOSROOT - * \param pName - * \param pDataType - * \param pLabel - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - - /** Add a property group under another parent property - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, bool pVisible = true, - bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set and a min max values - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pMinValue - * \param pMaxValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - * \remarks Normally used with numeric properties Ex: integer, float, double, etc. - */ - FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL, - bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - - /** Get a property using the full path in the tree ex: "Export|IncludeGrp|Animation" - * \param pName - * \return a FbxProperty found - * \remarks We strongly encourage to use the defined path in kfbxiosettingspath.h - * ex: EXP_ANIMATION == "Export|IncludeGrp|Animation" - */ - FbxProperty GetProperty(const char* pName) const; - - /** Get a property using a short path found under the parent property. - * \param pParentProperty - * \param pName - * \return a FbxProperty found - * \remarks This is a faster way to access a property when the parent is known - */ - FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const; - - /** Get a bool property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return true or false - */ - bool GetBoolProp(const char* pName, bool pDefValue) const; - - /** set a bool property value using the full path - * \param pName - * \param pValue - */ - void SetBoolProp(const char* pName, bool pValue); - - /** Get a double property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a double - */ - double GetDoubleProp(const char* pName, double pDefValue) const; - - /** Set a double property using the full path - * \param pName - * \param pValue - */ - void SetDoubleProp(const char* pName, double pValue); - - /** Get a int property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetIntProp(const char* pName, int pDefValue) const; - - /** Set a int property value using the full path - * \param pName - * \param pValue - */ - void SetIntProp(const char* pName, int pValue); - - /** Get a FbxTime property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - */ - FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const; - - /** Set a FbxTime property value using the full path - * \param pName - * \param pValue - * \return a FbxTime - */ - void SetTimeProp(const char* pName, FbxTime pValue); - - /** \name Enum Properties - * An enum property is a list of FbxString and integer pairs. - * A current index value is available to get the selected pair - * of FbxString+integer - * - * Ex: Content of an enum property - * \code - * 0 -> (14, "Bird") - * 1 -> (17, "Horse") - * 2 -> (93, "Cat") - * 3 -> (45, "Dog") - * \endcode - * - * If current index is 2: the current int value is 93, - * and the current FbxString value is "Cat" - */ - - //@{ - - /** Get the FbxString at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a FbxString - */ - FbxString GetEnumProp(const char* pName, FbxString pDefValue) const; - - /** Get the integer at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetEnumProp(const char* pName, int pDefValue) const; - - /** Get the index of a FbxString from the enum property using the full path. - * \param pName - * \param pValue Return -1 if the FbxString is not found - * \return a int - */ - int GetEnumIndex(const char* pName, FbxString pValue) const; - - /** Set the current index using an existing FbxString of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the FbxString is not found - */ - void SetEnumProp(const char* pName, FbxString pValue); - - /** Set the current index of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the pValue is out of bound - */ - void SetEnumProp(const char* pName, int pValue); - - /** Remove a pair of FbxString+integer from an enum property. - * \param pName - * \param pValue The FbxString to find - * \remarks The first FbxString found from 0 index will be removed only even - * if the same FbxString exist in other index, if the current index was on the FbxString found - * the current index will be set to 0 - */ - void RemoveEnumPropValue(const char* pName, FbxString pValue); - - /** Empty all the FbxString+integer pair of the enum property - * \param pName - */ - void EmptyEnumProp(const char* pName); - - /** Check if a FbxString is present in the enum property. - * \param &pProp a ref to an enum prop - * \param &enumString ref to a FbxString to find - * \return \c true if found, \c false otherwise. - */ - bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const; - - /** Get the enum index of a FbxString - * \param &pProp a ref to an enum prop - * \param &enumString ref to string to find - * \param pNoCase To match case sensitive or not - * \return the index found or -1 if not found - */ - int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const; - //@} - - /** Set a specific flag value on a property using the full path - * \param pName - * \param propFlag - * \param pValue - * \return Always true - */ - bool SetFlag(const char* pName, FbxPropertyFlags::EFlags propFlag, bool pValue); - - /** Get a FbxString property value using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return The FbxString value - */ - FbxString GetStringProp(const char* pName, FbxString pDefValue) const; - - /** Set a FbxString property value using the full path - * \param pName - * \param pValue - */ - void SetStringProp(const char* pName, FbxString pValue); - - /** \name XML Serialization Functions */ - //@{ - - /** Load the settings values from an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - */ - virtual bool ReadXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - * \remarks The flag of the property must be FbxPropertyFlags::eNotSavable == false - */ - virtual bool WriteXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param pFullPath The path of the XML file. - * \param propPath a prop Path - * \return \c True on success, \c false otherwise. - * \remarks To save only a branch of the settings ex: Import branch only - */ - bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIOPropInfo* GetPropInfo(FbxProperty &pProp); - - ELanguage UILanguage; - FbxString GetLanguageLabel(FbxProperty& pProp); - void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel); - - FbxIOInfo impInfo; - FbxIOInfo expInfo; - - static FbxString GetUserMyDocumentDir(); - void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible); - - // Read an XML file from MyDocument dir - bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename); - - // Write property branch to an XML file in MyDocument dir - bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath); - - static const char* GetFileMergeDescription(int pIndex); - - enum ELoadMode - { - eCreate, /*!< Add to scene(duplicate the ones with the same name) */ - eMerge, /*!< Add to scene and update animation */ - eExclusiveMerge /*!< Update animation */ - }; - - - enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample }; - enum EObjectDerivation { eByLayer, eByEntity, eByBlock }; - - enum ESysUnits - { - eUnitsUser, - eUnitsInches, - eUnitsFeet, - eUnitYards, - eUnitsMiles, - eUnitsMillimeters, - eUnitsCentimeters, - eUnitsMeters, - eUnitsKilometers - }; - - enum ESysFrameRate - { - eFrameRateUser, - eFrameRateHours, - eFrameRateMinutes, - eFrameRateSeconds, - eFrameRateMilliseconds, - eFrameRateGames15, - eFrameRateFilm24, - eFrameRatePAL25, - eFrameRateNTSC30, - eFrameRateShowScan48, - eFrameRatePALField50, - eFrameRateNTSCField60 - }; - -// Max - enum EEnveloppeSystem - { - eSkinModifier, - ePhysic, - eBonePro, - eEnveloppeSystemCount - }; - -// Max - enum EGeometryType - { - eTriangle, - eSimplifiedPoly, - ePolygon, - eNurbs, - ePatch, - eGeometryTypeCount - }; - -// Maya IK type - enum EIKType - { - eNone, - eFBIK, - eHumanIK - }; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - void AddNewPropInfo(FbxProperty& pProp); - void DeletePropInfo(FbxProperty& pProp); - void DeleteAllPropInfo(FbxProperty& pProp); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h deleted file mode 100644 index 575f6fd..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h +++ /dev/null @@ -1,940 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettingspath.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ - -#include - -#include - -#define KS_BS FbxString("\\") - -#define KS_IMPORT FbxString("\\import") -#define KS_EXPORT FbxString("\\export") - -#define KS_FBX FbxString("\\FBX") // must be upper case -#define KS_PRESETS FbxString("\\Presets") -#define KS_LOG FbxString("\\Logs") -#define KS_FBXPRESETS KS_FBX + KS_PRESETS -#define KS_FBXLOGS KS_FBX + KS_LOG - -#define KS_MAYA FbxString("\\maya") -#define KS_3DSMAX FbxString("\\3dsmax") -#define KS_3DSMAX_VIZ KS_3DSMAX // use same name in "My Document" directory -#define KS_3DSMAX_DESIGN FbxString("\\3dsMaxDesign") - -#define KS_VERSION FbxString(FBXSDK_VERSION_STRING) - -#define FBXSDK_PLUGINS_REGISTRY_PATH "SOFTWARE\\Autodesk\\FBX_Plugins_" FBXSDK_VERSION_STRING - -#define IMP_FBX_PRESET_EXT "fbximportpreset" -#define EXP_FBX_PRESET_EXT "fbxexportpreset" - -#define M_E_FILENAME "Autodesk Media & Entertainment." -#define ARCH_FILENAME "Autodesk Architectural (Revit)." -#define MOBU_FILENAME "Autodesk MotionBuilder." -#define USERDEFINED_FILENAME "User defined." - -#define IMP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_IMPORT -#define EXP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_EXPORT - -#define LOG_VERSION_DIR KS_FBXLOGS + KS_BS + KS_VERSION - -#define MAX_LOG_VERSION_DIR KS_3DSMAX + LOG_VERSION_DIR -#define MAX_DESIGN_LOG_VERSION_DIR KS_3DSMAX_DESIGN + LOG_VERSION_DIR - -#define PRESET_VERSION_DIR KS_FBXPRESETS + KS_BS + KS_VERSION - -#define FN_LOCALIZATION_PREFIX "localization_" -#define FN_LOCALIZATION_EXT ".xlf" - -#define FN_LANGUAGE "lang.dat" -#define LANGUAGE_PATH KS_FBXPRESETS + KS_BS + KS_VERSION + KS_BS + FN_LANGUAGE - -// these defines are used for hierarchical properties names -#define IOSROOT "IOSRoot" - -#define IOSN_EXPORT "Export" -#define IOSN_IMPORT "Import" - -#define IOSN_PLUGIN_GRP "PlugInGrp" - -#define IOSN_PLUGIN_UI_WIDTH "PlugInUIWidth" -#define IOSN_PLUGIN_UI_HEIGHT "PlugInUIHeight" -#define IOSN_PLUGIN_VERSIONS_URL "PluginVersionsURL" -#define IOSN_PI_VERSION "PIVersion" - - -#define IOSN_PRESET_SELECTED "PresetSelected" - -#define IOSN_PRESETS_GRP "PresetsGrp" -#define IOSN_STATISTICS_GRP "StatisticsGrp" -#define IOSN_UNITS_GRP "UnitsGrp" -#define IOSN_INCLUDE_GRP "IncludeGrp" -#define IOSN_ADV_OPT_GRP "AdvOptGrp" -#define IOSN_AXISCONV_GRP "AxisConvGrp" -#define IOSN_CAMERA_GRP "CameraGrp" -#define IOSN_LIGHT_GRP "LightGrp" -#define IOSN_EXTRA_GRP "ExtraGrp" -#define IOSN_CONSTRAINTS_GRP "ConstraintsGrp" -#define IOSN_INPUTCONNECTIONS_GRP "InputConnectionsGrp" -#define IOSN_INFORMATION_GRP "InformationGrp" - -#define IOSN_UP_AXIS "UpAxis" -#define IOSN_UP_AXIS_MAX "UpAxisMax" -#define IOSN_ZUPROTATION_MAX "ZUProtation_max" -#define IOSN_AXISCONVERSION "AxisConversion" -#define IOSN_AUTO_AXIS "AutoAxis" -#define IOSN_FILE_UP_AXIS "FileUpAxis" - -#define IOSN_PRESETS "Presets" -#define IOSN_STATISTICS "Statistics" -#define IOSN_UNITS_SCALE "UnitsScale" -#define IOSN_TOTAL_UNITS_SCALE_TB "TotalUnitsScale" - -#define IOSN_SCALECONVERSION "ScaleConversion" -#define IOSN_MASTERSCALE "MasterScale" - -#define IOSN_DYN_SCALE_CONVERSION "DynamicScaleConversion" -#define IOSN_UNITSELECTOR "UnitsSelector" - -#define IOSN_AUDIO "Audio" -#define IOSN_ANIMATION "Animation" -#define IOSN_GEOMETRY "Geometry" -#define IOSN_DEFORMATION "Deformation" -#define IOSN_MARKERS "Markers" - -#define IOSN_CHARACTER "Character" -#define IOSN_CHARACTER_AS_MAYA_HIK "CharacterAsMayaHIK" -#define IOSN_CHARACTER_TYPE "CharacterType" -#define IOSN_CHARACTER_TYPE_DESC "CharacterTypeDesc" - -#define IOSN_SETLOCKEDATTRIB "LockedAttribute" -#define IOSN_TRIANGULATE "Triangulate" - -#define IOSN_MRCUSTOMATTRIBUTES "MRCustomAttributes" -#define IOSN_MESHPRIMITIVE "MeshPrimitive" -#define IOSN_MESHTRIANGLE "MeshTriangle" -#define IOSN_MESHPOLY "MeshPoly" -#define IOSN_NURB "Nurb" -#define IOSN_PATCH "Patch" -#define IOSN_BIP2FBX "Bip2Fbx" -#define IOSN_ASCIIFBX "AsciiFbx" - -#define IOSN_TAKE "Take" - -#define IOSN_GEOMETRYMESHPRIMITIVEAS "GeometryMeshPrimitiveAs" -#define IOSN_GEOMETRYMESHTRIANGLEAS "GeometryMeshTriangleAs" -#define IOSN_GEOMETRYMESHPOLYAS "GeometryMeshPolyAs" -#define IOSN_GEOMETRYNURBSAS "GeometryNurbsAs" - -#define IOSN_GEOMETRYNURBSSURFACEAS "GeometryNurbsSurfaceAs" -#define IOSN_GEOMETRYPATCHAS "GeometryPatchAs" - -#define IOSN_TANGENTS_BINORMALS "TangentsandBinormals" -#define IOSN_SMOOTH_MESH "SmoothMesh" -#define IOSN_SELECTION_SET "SelectionSet" -#define IOSN_ANIMATIONONLY "AnimationOnly" -#define IOSN_SELECTIONONLY "SelectionOnly" - -#define IOSN_BONE "Bone" -#define IOSN_BONEWIDTHHEIGHTLOCK "BoneWidthHeightLock" -#define IOSN_BONEASDUMMY "BoneAsDummy" -#define IOSN_BONEMAX4BONEWIDTH "Max4BoneWidth" -#define IOSN_BONEMAX4BONEHEIGHT "Max4BoneHeight" -#define IOSN_BONEMAX4BONETAPER "Max4BoneTaper" - -#define IOSN_REMOVE_SINGLE_KEY "RemoveSingleKey" -#define IOSN_CURVE_FILTER "CurveFilter" -#define IOSN_CONSTRAINT "Constraint" -#define IOSN_UI "UI" -#define IOSN_SHOW_UI_MODE "ShowUIMode" -#define IOSN_SHOW_WARNINGS_MANAGER "ShowWarningsManager" -#define IOSN_GENERATE_LOG_DATA "GenerateLogData" - -#define IOSN_PERF_GRP "Performance" -#define IOSN_REMOVEBADPOLYSFROMMESH "RemoveBadPolysFromMesh" -#define IOSN_META_DATA "MetaData" - -#define IOSN_CACHE_GRP "Cache" -#define IOSN_CACHE_SIZE "CacheSize" - -#define IOSN_MERGE_MODE "MergeMode" -#define IOSN_MERGE_MODE_DESCRIPTION "MergeModeDescription" -#define IOSN_ONE_CLICK_MERGE "OneClickMerge" -#define IOSN_ONE_CLICK_MERGE_TEXTURE "OneClickMergeTexture" - -#define IOSN_SAMPLINGPANEL "SamplingPanel" - -#define IOSN_FILE_FORMAT "FileFormat" -#define IOSN_FBX "Fbx" -#define IOSN_DXF "Dxf" -#define IOSN_OBJ "Obj" -#define IOSN_3DS "Max_3ds" // can't start by a number for xml node name -#define IOSN_COLLADA "Collada" - -#define IOSN_MOTION_BASE "Motion_Base" // for commond Motion Readers/Writers stream options -#define IOSN_BIOVISION_BVH "Biovision_BVH" -#define IOSN_MOTIONANALYSIS_HTR "MotionAnalysis_HTR" -#define IOSN_MOTIONANALYSIS_TRC "MotionAnalysis_TRC" -#define IOSN_ACCLAIM_ASF "Acclaim_ASF" -#define IOSN_ACCLAIM_AMC "Acclaim_AMC" -#define IOSN_VICON_C3D "Vicon_C3D" - -#define IOSN_SKINS "Skins" -#define IOSN_POINTCACHE "PointCache" -#define IOSN_QUATERNION "Quaternion" -#define IOSN_NAMETAKE "UseSceneName" - -#define IOSN_SHAPE "Shape" -#define IOSN_LIGHT "Light" -#define IOSN_LIGHTATTENUATION "LightAttenuation" -#define IOSN_CAMERA "Camera" -#define IOSN_VIEW_CUBE "ViewCube" - -#define IOSN_BINDPOSE "BindPose" - -#define IOSN_EMBEDTEXTURE_GRP "EmbedTextureGrp" -#define IOSN_EMBEDTEXTURE "EmbedTexture" -#define IOSN_EMBEDDED_FOLDER "ExtractFolder" -#define IOSN_CONVERTTOTIFF "Convert_2Tiff" - -#define IOSN_UNLOCK_NORMALS "UnlockNormals" -#define IOSN_CREASE "Crease" -#define IOSN_FINESTSUBDIVLEVEL "FinestSubdivLevel" - -#define IOSN_BAKEANIMATIONLAYERS "BakeAnimationLayers" -#define IOSN_BAKECOMPLEXANIMATION "BakeComplexAnimation" - -#define IOSN_BAKEFRAMESTART "BakeFrameStart" -#define IOSN_BAKEFRAMEEND "BakeFrameEnd" -#define IOSN_BAKEFRAMESTEP "BakeFrameStep" -#define IOSN_BAKEFRAMESTARTNORESET "BakeFrameStartNoReset" -#define IOSN_BAKEFRAMEENDNORESET "BakeFrameEndNoReset" -#define IOSN_BAKEFRAMESTEPNORESET "BakeFrameStepNoReset" - -#define IOSN_USEMATRIXFROMPOSE "UseMatrixFromPose" -#define IOSN_NULLSTOPIVOT "NullsToPivot" -#define IOSN_PIVOTTONULLS "PivotToNulls" - -#define IOSN_GEOMNORMALPERPOLY "GeomNormalPerPoly" -#define IOSN_MAXBONEASBONE "MaxBoneAsBone" -#define IOSN_MAXNURBSSTEP "MaxNurbsStep" -#define IOSN_PROTECTDRIVENKEYS "ProtectDrivenKeys" -#define IOSN_DEFORMNULLSASJOINTS "DeformNullsAsJoints" - -#define IOSN_ENVIRONMENT "Environment" - -// Note this will use IOSN_SAMPLINGRATE -#define IOSN_SAMPLINGRATESELECTOR "SamplingRateSelector" - -#define IOSN_SAMPLINGRATE "CurveFilterSamplingRate" -#define IOSN_APPLYCSTKEYRED "CurveFilterApplyCstKeyRed" -#define IOSN_CSTKEYREDTPREC "CurveFilterCstKeyRedTPrec" -#define IOSN_CSTKEYREDRPREC "CurveFilterCstKeyRedRPrec" -#define IOSN_CSTKEYREDSPREC "CurveFilterCstKeyRedSPrec" -#define IOSN_CSTKEYREDOPREC "CurveFilterCstKeyRedOPrec" -#define IOSN_APPLYKEYREDUCE "CurveFilterApplyKeyReduce" -#define IOSN_KEYREDUCEPREC "CurveFilterKeyReducePrec" -#define IOSN_APPLYKEYSONFRM "CurveFilterApplyKeysOnFrm" -#define IOSN_APPLYKEYSYNC "CurveFilterApplyKeySync" -#define IOSN_APPLYUNROLL "CurveFilterApplyUnroll" -#define IOSN_UNROLLPREC "CurveFilterUnrollPrec" -#define IOSN_UNROLLPATH "CurveFilterUnrollPath" -#define IOSN_UNROLLFORCEAUTO "CurveFilterUnrollForceAuto" - -#define IOSN_AUTOTANGENTSONLY "AutoTangentsOnly" - -#define IOSN_SMOOTHING_GROUPS "SmoothingGroups" -#define IOSN_HARDEDGES "HardEdges" -#define IOSN_EXP_HARDEDGES "expHardEdges" -#define IOSN_BLINDDATA "BlindData" -#define IOSN_INPUTCONNECTIONS "InputConnections" -#define IOSN_INSTANCES "Instances" -#define IOSN_REFERENCES "References" -#define IOSN_CONTAINEROBJECTS "ContainerObjects" -#define IOSN_BYPASSRRSINHERITANCE "BypassRrsInheritance" -#define IOSN_FORCEWEIGHTNORMALIZE "ForceWeightNormalize" -#define IOSN_SHAPEANIMATION "ShapeAnimation" -#define IOSN_SMOOTHKEYASUSER "SmoothKeyAsUser" - -#define IOSN_SCALEFACTOR "ScaleFactor" -#define IOSN_AXISCONVERSIONMETHOD "AxisConversionMethod" -#define IOSN_UPAXIS "UpAxis" -#define IOSN_SELECTIONSETNAMEASPOINTCACHE "SelectionSetNameAsPointCache" - -#define IOSN_KEEPFRAMERATE "KeepFrameRate" -#define IOSN_ATTENUATIONASINTENSITYCURVE "AttenuationAsIntensityCurve" - -#define IOSN_RESAMPLE_ANIMATION_CURVES "ResampleAnimationCurves" - -#define IOSN_TIMELINE "TimeLine" -#define IOSN_TIMELINE_SPAN "TimeLineSpan" - -#define IOSN_BUTTON_WEB_UPDATE "WebUpdateButton" -#define IOSN_BUTTON_EDIT "EditButton" -#define IOSN_BUTTON_OK "OKButton" -#define IOSN_BUTTON_CANCEL "CancelButton" -#define IOSN_MENU_EDIT_PRESET "EditPresetMenu" -#define IOSN_MENU_SAVE_PRESET "SavePresetMenu" - -#define IOSN_UIL "UILIndex" -#define IOSN_PLUGIN_PRODUCT_FAMILY "PluginProductFamily" - -#define IOSN_PLUGIN_UI_XPOS "PlugInUIXpos" -#define IOSN_PLUGIN_UI_YPOS "PlugInUIYpos" - -#define IOSN_FBX_EXTENTIONS_SDK "FBXExtentionsSDK" -#define IOSN_FBX_EXTENTIONS_SDK_WARNING "FBXExtentionsSDKWarning" - -#define IOSN_COLLADA_FRAME_COUNT "FrameCount" -#define IOSN_COLLADA_START "Start" -#define IOSN_COLLADA_TAKE_NAME "TakeName" - -#define IOSN_COLLADA_TRIANGULATE "Triangulate" -#define IOSN_COLLADA_SINGLEMATRIX "SingleMatrix" -#define IOSN_COLLADA_FRAME_RATE "FrameRate" - -#define IOSN_DXF_TRIANGULATE "Triangulate" -#define IOSN_DXF_DEFORMATION "Deformation" - -#define IOSN_DXF_WELD_VERTICES "WeldVertices" -#define IOSN_DXF_OBJECT_DERIVATION "ObjectDerivation" -#define IOSN_DXF_REFERENCE_NODE "ReferenceNode" - -#define IOSN_OBJ_REFERENCE_NODE "ReferenceNode" -#define IOSN_OBJ_TRIANGULATE "Triangulate" -#define IOSN_OBJ_DEFORMATION "Deformation" - -#define IOSN_3DS_REFERENCENODE "ReferenceNode" -#define IOSN_3DS_TEXTURE "Texture" -#define IOSN_3DS_MATERIAL "Material" -#define IOSN_3DS_ANIMATION "Animation" -#define IOSN_3DS_MESH "Mesh" -#define IOSN_3DS_LIGHT "Light" -#define IOSN_3DS_CAMERA "Camera" -#define IOSN_3DS_AMBIENT_LIGHT "AmbientLight" -#define IOSN_3DS_RESCALING "Rescaling" -#define IOSN_3DS_FILTER "Filter" -#define IOSN_3DS_SMOOTHGROUP "Smoothgroup" -#define IOSN_3DS_TAKE_NAME "TakeName" -#define IOSN_3DS_TEXUVBYPOLY "TexuvbyPoly" - -// so far, these three are for 3dsMax plug-in only -#define IOSN_ZOOMEXTENTS "ZoomExtents" -#define IOSN_GLOBAL_AMBIENT_COLOR "GlobalAmbientColor" -#define IOSN_EDGE_ORIENTATION "PreserveEdgeOrientation" - -#define IOSN_VERSIONS_UI_ALIAS "VersionsUIAlias" -#define IOSN_VERSIONS_COMP_DESCRIPTIONS "VersionsCompDescriptions" - -// FBX specific -#define IOSN_MODEL_COUNT "Model_Count" -#define IOSN_DEVICE_COUNT "Device_Count" -#define IOSN_CHARACTER_COUNT "Character_Count" -#define IOSN_ACTOR_COUNT "Actor_Count" -#define IOSN_CONSTRAINT_COUNT "Constraint_Count" -#define IOSN_MEDIA_COUNT "Media_Count" -#define IOSN_TEMPLATE "Template" -#define IOSN_PIVOT "Pivot" -#define IOSN_GLOBAL_SETTINGS "Global_Settings" -#define IOSN_MERGE_LAYER_AND_TIMEWARP "Merge_Layer_and_Timewarp" -#define IOSN_GOBO "Gobo" -#define IOSN_LINK "Link" -#define IOSN_MATERIAL "Material" -#define IOSN_TEXTURE "Texture" -#define IOSN_MODEL "Model" -#define IOSN_EMBEDDED "EMBEDDED" -#define IOSN_PASSWORD "Password" -#define IOSN_PASSWORD_ENABLE "Password_Enable" -#define IOSN_CURRENT_TAKE_NAME "Current_Take_Name" -#define IOSN_COLLAPSE_EXTERNALS "COLLAPSE EXTERNALS" -#define IOSN_COMPRESS_ARRAYS "Compress_Arrays" -#define IOSN_COMPRESS_LEVEL "Compress_Level" -#define IOSN_COMPRESS_MINSIZE "Compress_Minsize" -#define IOSN_EMBEDDED_PROPERTIES_SKIP "Embedded_Skipped_Properties" -#define IOSN_EXPORT_FILE_VERSION "ExportFileVersion" -#define IOSN_SHOW_UI_WARNING "ShowUIWarning" -#define IOSN_ADD_MATERIAL_TO_EDIT "AddMaterialToEdit" -#define IOSN_ENABLE_TEX_DISPLAY "EnableTexDisplay" -#define IOSN_PREFERED_ENVELOPPE_SYSTEM "kImportPreferedEnveloppeSystem" -#define IOSN_FIRST_TIME_RUN_NOTICE "FirstTimeRunNotice" -#define IOSN_EXTRACT_EMBEDDED_DATA "ExtractEmbeddedData" - -// internal usage -#define IOSN_USETMPFILEPERIPHERAL "UseTmpFilePeripheral" -#define IOSN_CONSTRUCTIONHISTORY "ConstructionHistory" -#define IOSN_RELAXED_FBX_CHECK "RelaxedFbxCheck" -#define IOSN_KEEP_PRODUCER_CAM_SRCOBJ "KeepProducerCamSrcObj" - -//--------------------------- -// import defined path - -#define IMP_PRESETS IOSN_IMPORT "|" IOSN_PRESETS_GRP "|" IOSN_PRESETS -#define IMP_STATISTICS IOSN_IMPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS - - -#define IMP_STATISTICS_GRP IOSN_IMPORT "|" IOSN_STATISTICS_GRP -#define IMP_PRESETS_GRP IOSN_IMPORT "|" IOSN_PRESETS_GRP -#define IMP_PLUGIN_GRP IOSN_IMPORT "|" IOSN_PLUGIN_GRP -#define IMP_INCLUDE_GRP IOSN_IMPORT "|" IOSN_INCLUDE_GRP -#define IMP_ADV_OPT_GRP IOSN_IMPORT "|" IOSN_ADV_OPT_GRP -#define IMP_FBX_EXT_SDK_GRP IOSN_IMPORT "|" IOSN_FBX_EXTENTIONS_SDK -#define IMP_FIRST_TIME_RUN_NOTICE_GRP IOSN_IMPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define IMP_INFORMATION_GRP IOSN_IMPORT "|" IOSN_INFORMATION_GRP - -#define IMP_FIRST_TIME_RUN_NOTICE IMP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define IMP_GEOMETRY IMP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define IMP_AUDIO IMP_INCLUDE_GRP "|" IOSN_AUDIO -#define IMP_ANIMATION IMP_INCLUDE_GRP "|" IOSN_ANIMATION -#define IMP_SETLOCKEDATTRIB IMP_INCLUDE_GRP "|" IOSN_SETLOCKEDATTRIB - -#define IMP_MERGE_MODE IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE -#define IMP_MERGE_MODE_DESCRIPTION IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE_DESCRIPTION -#define IMP_ONE_CLICK_MERGE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE -#define IMP_ONE_CLICK_MERGE_TEXTURE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE_TEXTURE - -#define IMP_ADD_MATERIAL_TO_EDIT IMP_INCLUDE_GRP "|" IOSN_ADD_MATERIAL_TO_EDIT -#define IMP_ENABLE_TEX_DISPLAY IMP_INCLUDE_GRP "|" IOSN_ENABLE_TEX_DISPLAY -#define IMP_PREFERED_ENVELOPPE_SYSTEM IMP_INCLUDE_GRP "|" IOSN_PREFERED_ENVELOPPE_SYSTEM - -#define IMP_CAMERA_GRP IMP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define IMP_LIGHT_GRP IMP_INCLUDE_GRP "|" IOSN_LIGHT_GRP -#define IMP_EMBEDDED_GRP IMP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE -#define IMP_EXTRACT_FOLDER IMP_EMBEDDED_GRP "|" IOSN_EMBEDDED_FOLDER - -#define IMP_LIGHT IMP_LIGHT_GRP "|" IOSN_LIGHT -#define IMP_ENVIRONMENT IMP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define IMP_CAMERA IMP_CAMERA_GRP "|" IOSN_CAMERA -#define IMP_VIEW_CUBE IMP_INCLUDE_GRP "|" IOSN_VIEW_CUBE - -// so far, this one is for 3dsMax plug-in only -#define IMP_ZOOMEXTENTS IMP_INCLUDE_GRP "|" IOSN_ZOOMEXTENTS -#define IMP_GLOBAL_AMBIENT_COLOR IMP_LIGHT_GRP "|" IOSN_GLOBAL_AMBIENT_COLOR - -#define IMP_CURVEFILTERS IMP_ANIMATION "|" IOSN_CURVE_FILTER -#define IMP_SAMPLINGPANEL IMP_ANIMATION "|" IOSN_SAMPLINGPANEL - -#define IMP_DEFORMATION IMP_ANIMATION "|" IOSN_DEFORMATION -#define IMP_BONE IMP_ANIMATION "|" IOSN_BONE -#define IMP_ATTENUATIONASINTENSITYCURVE IMP_ANIMATION "|" IOSN_ATTENUATIONASINTENSITYCURVE - -#define IMP_EXTRA_GRP IMP_ANIMATION "|" IOSN_EXTRA_GRP - -#define IMP_TAKE IMP_EXTRA_GRP "|" IOSN_TAKE -#define IMP_KEEPFRAMERATE IMP_EXTRA_GRP "|" IOSN_KEEPFRAMERATE -#define IMP_TIMELINE IMP_EXTRA_GRP "|" IOSN_TIMELINE -#define IMP_TIMELINE_SPAN IMP_EXTRA_GRP "|" IOSN_TIMELINE_SPAN -#define IMP_BAKEANIMATIONLAYERS IMP_EXTRA_GRP "|" IOSN_BAKEANIMATIONLAYERS -#define IMP_MARKERS IMP_EXTRA_GRP "|" IOSN_MARKERS -#define IMP_QUATERNION IMP_EXTRA_GRP "|" IOSN_QUATERNION -#define IMP_PROTECTDRIVENKEYS IMP_EXTRA_GRP "|" IOSN_PROTECTDRIVENKEYS -#define IMP_DEFORMNULLSASJOINTS IMP_EXTRA_GRP "|" IOSN_DEFORMNULLSASJOINTS -#define IMP_NULLSTOPIVOT IMP_EXTRA_GRP "|" IOSN_NULLSTOPIVOT -#define IMP_POINTCACHE IMP_EXTRA_GRP "|" IOSN_POINTCACHE -#define IMP_SHAPEANIMATION IMP_EXTRA_GRP "|" IOSN_SHAPEANIMATION - -#define IMP_CONSTRAINTS_GRP IMP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define IMP_CONSTRAINT IMP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT - -#define IMP_CHARACTER IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER -#define IMP_CHARACTER_AS_MAYA_HIK IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_AS_MAYA_HIK -#define IMP_CHARACTER_TYPE IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_TYPE - - -#define IMP_SAMPLINGRATESELECTOR IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATESELECTOR -#define IMP_SAMPLINGRATE IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATE - -#define IMP_UNITS_GRP IMP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define IMP_AXISCONV_GRP IMP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define IMP_CACHE_GRP IMP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define IMP_UI IMP_ADV_OPT_GRP "|" IOSN_UI -#define IMP_FILEFORMAT IMP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define IMP_PERF_GRP IMP_ADV_OPT_GRP "|" IOSN_PERF_GRP - -#define IMP_REMOVEBADPOLYSFROMMESH IMP_PERF_GRP "|" IOSN_REMOVEBADPOLYSFROMMESH -#define IMP_META_DATA IMP_PERF_GRP "|" IOSN_META_DATA - -#define IMP_FBX_EXTENTIONS_SDK_WARNING IMP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING - -#define IMP_SCALECONVERSION IMP_UNITS_GRP "|" IOSN_SCALECONVERSION -#define IMP_UNITS_TB IMP_UNITS_GRP "|" IOSN_UNITS_TB -#define IMP_MASTERSCALE IMP_UNITS_GRP "|" IOSN_MASTERSCALE -#define IMP_UNITS_SCALE IMP_UNITS_GRP "|" IOSN_UNITS_SCALE - -#define IMP_DYN_SCALE_CONVERSION IMP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define IMP_UNITSELECTOR IMP_UNITS_GRP "|" IOSN_UNITSELECTOR -#define IMP_TOTAL_UNITS_SCALE_TB IMP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define IMP_SHOW_UI_MODE IMP_UI "|" IOSN_SHOW_UI_MODE -#define IMP_SHOW_UI_WARNING IMP_UI "|" IOSN_SHOW_UI_WARNING -#define IMP_SHOW_WARNINGS_MANAGER IMP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define IMP_GENERATE_LOG_DATA IMP_UI "|" IOSN_GENERATE_LOG_DATA -#define IMP_PLUGIN_VERSIONS_URL IMP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define IMP_DXF IMP_ADV_OPT_GRP "|" IOSN_DXF - -// note: IMP_FILEFORMAT group is not visible -#define IMP_FBX IMP_FILEFORMAT "|" IOSN_FBX -#define IMP_OBJ IMP_FILEFORMAT "|" IOSN_OBJ -#define IMP_3DS IMP_FILEFORMAT "|" IOSN_3DS - -#define IMP_MOTION_BASE IMP_FILEFORMAT "|" IOSN_MOTION_BASE -#define IMP_BIOVISION_BVH IMP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define IMP_MOTIONANALYSIS_HTR IMP_FILEFORMAT "|" IOSN_MOTIONANALYSIS_HTR -#define IMP_ACCLAIM_ASF IMP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define IMP_ACCLAIM_AMC IMP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - -#define IMP_UNLOCK_NORMALS IMP_GEOMETRY "|" IOSN_UNLOCK_NORMALS -#define IMP_CREASE IMP_GEOMETRY "|" IOSN_CREASE - -#define IMP_SMOOTHING_GROUPS IMP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define IMP_HARDEDGES IMP_GEOMETRY "|" IOSN_HARDEDGES -#define IMP_BLINDDATA IMP_GEOMETRY "|" IOSN_BLINDDATA - -#define IMP_BONE_WIDTHHEIGHTLOCK IMP_BONE "|" IOSN_BONEWIDTHHEIGHTLOCK -#define IMP_BONEASDUMMY IMP_BONE "|" IOSN_BONEASDUMMY -#define IMP_BONEMAX4BONEWIDTH IMP_BONE "|" IOSN_BONEMAX4BONEWIDTH -#define IMP_BONEMAX4BONEHEIGHT IMP_BONE "|" IOSN_BONEMAX4BONEHEIGHT -#define IMP_BONEMAX4BONETAPER IMP_BONE "|" IOSN_BONEMAX4BONETAPER - -#define IMP_SHAPE IMP_DEFORMATION "|" IOSN_SHAPE -#define IMP_SKINS IMP_DEFORMATION "|" IOSN_SKINS -#define IMP_USEMATRIXFROMPOSE IMP_DEFORMATION "|" IOSN_USEMATRIXFROMPOSE -#define IMP_FORCEWEIGHTNORMALIZE IMP_DEFORMATION "|" IOSN_FORCEWEIGHTNORMALIZE - - - -#define IMP_APPLYCSTKEYRED IMP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define IMP_CSTKEYREDTPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define IMP_CSTKEYREDRPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define IMP_CSTKEYREDSPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define IMP_CSTKEYREDOPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define IMP_AUTOTANGENTSONLY IMP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define IMP_APPLYKEYREDUCE IMP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define IMP_KEYREDUCEPREC IMP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define IMP_APPLYKEYSONFRM IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define IMP_APPLYKEYSYNC IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define IMP_APPLYUNROLL IMP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define IMP_UNROLLPREC IMP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define IMP_UNROLLPATH IMP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define IMP_UNROLLFORCEAUTO IMP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define IMP_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_UP_AXIS -#define IMP_UP_AXIS_MAX IMP_AXISCONV_GRP "|" IOSN_UP_AXIS_MAX -#define IMP_ZUPROTATION_MAX IMP_AXISCONV_GRP "|" IOSN_ZUPROTATION_MAX -#define IMP_AXISCONVERSION IMP_AXISCONV_GRP "|" IOSN_AXISCONVERSION -#define IMP_AUTO_AXIS IMP_AXISCONV_GRP "|" IOSN_AUTO_AXIS -#define IMP_FILE_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_FILE_UP_AXIS - -#define IMP_CACHE_SIZE IMP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define IMP_PLUGIN_UI_WIDTH IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define IMP_PLUGIN_UI_HEIGHT IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define IMP_PRESET_SELECTED IMP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define IMP_UIL IMP_PLUGIN_GRP "|" IOSN_UIL -#define IMP_PLUGIN_PRODUCT_FAMILY IMP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define IMP_PLUGIN_UI_XPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define IMP_PLUGIN_UI_YPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define IMP_DXF_WELD_VERTICES IMP_DXF "|" IOSN_DXF_WELD_VERTICES -#define IMP_DXF_OBJECT_DERIVATION IMP_DXF "|" IOSN_DXF_OBJECT_DERIVATION -#define IMP_DXF_REFERENCE_NODE IMP_DXF "|" IOSN_DXF_REFERENCE_NODE - -#define IMP_OBJ_REFERENCE_NODE IMP_OBJ "|" IOSN_OBJ_REFERENCE_NODE - -#define IMP_3DS_REFERENCENODE IMP_3DS "|" IOSN_3DS_REFERENCENODE -#define IMP_3DS_TEXTURE IMP_3DS "|" IOSN_3DS_TEXTURE -#define IMP_3DS_MATERIAL IMP_3DS "|" IOSN_3DS_MATERIAL -#define IMP_3DS_ANIMATION IMP_3DS "|" IOSN_3DS_ANIMATION -#define IMP_3DS_MESH IMP_3DS "|" IOSN_3DS_MESH -#define IMP_3DS_LIGHT IMP_3DS "|" IOSN_3DS_LIGHT -#define IMP_3DS_CAMERA IMP_3DS "|" IOSN_3DS_CAMERA -#define IMP_3DS_AMBIENT_LIGHT IMP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define IMP_3DS_RESCALING IMP_3DS "|" IOSN_3DS_RESCALING -#define IMP_3DS_FILTER IMP_3DS "|" IOSN_3DS_FILTER -#define IMP_3DS_SMOOTHGROUP IMP_3DS "|" IOSN_3DS_SMOOTHGROUP - -#define IMP_FBX_MODEL_COUNT IMP_FBX "|" IOSN_MODEL_COUNT -#define IMP_FBX_DEVICE_COUNT IMP_FBX "|" IOSN_DEVICE_COUNT -#define IMP_FBX_CHARACTER_COUNT IMP_FBX "|" IOSN_CHARACTER_COUNT -#define IMP_FBX_ACTOR_COUNT IMP_FBX "|" IOSN_ACTOR_COUNT -#define IMP_FBX_CONSTRAINT_COUNT IMP_FBX "|" IOSN_CONSTRAINT_COUNT -#define IMP_FBX_MEDIA_COUNT IMP_FBX "|" IOSN_MEDIA_COUNT - -#define IMP_FBX_TEMPLATE IMP_FBX "|" IOSN_TEMPLATE -#define IMP_FBX_PIVOT IMP_FBX "|" IOSN_PIVOT -#define IMP_FBX_GLOBAL_SETTINGS IMP_FBX "|" IOSN_GLOBAL_SETTINGS -#define IMP_FBX_CHARACTER IMP_FBX "|" IOSN_CHARACTER -#define IMP_FBX_CONSTRAINT IMP_FBX "|" IOSN_CONSTRAINT -#define IMP_FBX_MERGE_LAYER_AND_TIMEWARP IMP_FBX "|" IOSN_MERGE_LAYER_AND_TIMEWARP -#define IMP_FBX_GOBO IMP_FBX "|" IOSN_GOBO -#define IMP_FBX_SHAPE IMP_FBX "|" IOSN_SHAPE -#define IMP_FBX_LINK IMP_FBX "|" IOSN_LINK -#define IMP_FBX_MATERIAL IMP_FBX "|" IOSN_MATERIAL -#define IMP_FBX_TEXTURE IMP_FBX "|" IOSN_TEXTURE -#define IMP_FBX_MODEL IMP_FBX "|" IOSN_MODEL -#define IMP_FBX_AUDIO IMP_FBX "|" IOSN_AUDIO -#define IMP_FBX_ANIMATION IMP_FBX "|" IOSN_ANIMATION -#define IMP_FBX_PASSWORD IMP_FBX "|" IOSN_PASSWORD -#define IMP_FBX_PASSWORD_ENABLE IMP_FBX "|" IOSN_PASSWORD_ENABLE -#define IMP_FBX_CURRENT_TAKE_NAME IMP_FBX "|" IOSN_CURRENT_TAKE_NAME -#define IMP_FBX_EXTRACT_EMBEDDED_DATA IMP_FBX "|" IOSN_EXTRACT_EMBEDDED_DATA -// internal use -#define IMP_RELAXED_FBX_CHECK IMP_FBX "|" IOSN_RELAXED_FBX_CHECK -#define IMP_KEEP_PRODUCER_CAM_SRCOBJ IMP_FBX "|" IOSN_KEEP_PRODUCER_CAM_SRCOBJ - -#define IMP_BUTTON_WEB_UPDATE IMP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define IMP_PI_VERSION IMP_INFORMATION_GRP "|" IOSN_PI_VERSION - - -// end of import defined path -//--------------------------- - -//--------------------------- -// export defined path - -#define EXP_STATISTICS_GRP IOSN_EXPORT "|" IOSN_STATISTICS_GRP -#define EXP_ADV_OPT_GRP IOSN_EXPORT "|" IOSN_ADV_OPT_GRP -#define EXP_PRESETS_GRP IOSN_EXPORT "|" IOSN_PRESETS_GRP -#define EXP_STATISTICS IOSN_EXPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS -#define EXP_FIRST_TIME_RUN_NOTICE_GRP IOSN_EXPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define EXP_INFORMATION_GRP IOSN_EXPORT "|" IOSN_INFORMATION_GRP - -#define EXP_PLUGIN_GRP IOSN_EXPORT "|" IOSN_PLUGIN_GRP -#define EXP_INCLUDE_GRP IOSN_EXPORT "|" IOSN_INCLUDE_GRP -#define EXP_FBX_EXT_SDK_GRP IOSN_EXPORT "|" IOSN_FBX_EXTENTIONS_SDK - -#define EXP_UNITS_GRP EXP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define EXP_FILEFORMAT EXP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define EXP_AXISCONV_GRP EXP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define EXP_CACHE_GRP EXP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define EXP_UI EXP_ADV_OPT_GRP "|" IOSN_UI - -#define EXP_FBX_EXTENTIONS_SDK_WARNING EXP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING -#define EXP_FIRST_TIME_RUN_NOTICE EXP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define EXP_SCALEFACTOR EXP_AXISCONV_GRP "|" IOSN_SCALEFACTOR -#define EXP_AXISCONVERSIONMETHOD EXP_AXISCONV_GRP "|" IOSN_AXISCONVERSIONMETHOD -#define EXP_UPAXIS EXP_AXISCONV_GRP "|" IOSN_UPAXIS - -#define EXP_UNITS_SCALE EXP_UNITS_GRP "|" IOSN_UNITS_SCALE -#define EXP_MASTERSCALE EXP_UNITS_GRP "|" IOSN_MASTERSCALE - -#define EXP_DYN_SCALE_CONVERSION EXP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define EXP_UNITSELECTOR EXP_UNITS_GRP "|" IOSN_UNITSELECTOR - -#define EXP_TOTAL_UNITS_SCALE_TB EXP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define EXP_SHOW_UI_MODE EXP_UI "|" IOSN_SHOW_UI_MODE -#define EXP_SHOW_UI_WARNING EXP_UI "|" IOSN_SHOW_UI_WARNING -#define EXP_SHOW_WARNINGS_MANAGER EXP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define EXP_GENERATE_LOG_DATA EXP_UI "|" IOSN_GENERATE_LOG_DATA -#define EXP_PLUGIN_VERSIONS_URL EXP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define EXP_PRESETS EXP_PRESETS_GRP "|" IOSN_PRESETS - -#define EXP_CAMERA_GRP EXP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define EXP_LIGHT_GRP EXP_INCLUDE_GRP "|" IOSN_LIGHT_GRP - -#define EXP_GEOMETRY EXP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define EXP_AUDIO EXP_INCLUDE_GRP "|" IOSN_AUDIO -#define EXP_ANIMATION EXP_INCLUDE_GRP "|" IOSN_ANIMATION -#define EXP_PIVOTTONULLS EXP_INCLUDE_GRP "|" IOSN_PIVOTTONULLS -#define EXP_LIGHT EXP_LIGHT_GRP "|" IOSN_LIGHT -#define EXP_LIGHTATTENUATION EXP_INCLUDE_GRP "|" IOSN_LIGHTATTENUATION -#define EXP_ENVIRONMENT EXP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define EXP_CAMERA EXP_CAMERA_GRP "|" IOSN_CAMERA -#define EXP_BINDPOSE EXP_INCLUDE_GRP "|" IOSN_BINDPOSE -#define EXP_SELECTIONONLY EXP_INCLUDE_GRP "|" IOSN_SELECTIONONLY - - -#define EXP_INPUTCONNECTIONS_GRP EXP_INCLUDE_GRP "|" IOSN_INPUTCONNECTIONS_GRP -#define EXP_INPUTCONNECTIONS EXP_INPUTCONNECTIONS_GRP "|" IOSN_INPUTCONNECTIONS - -#define EXP_BYPASSRRSINHERITANCE EXP_INCLUDE_GRP "|" IOSN_BYPASSRRSINHERITANCE - -#define EXP_EMBEDTEXTURE_GRP EXP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE_GRP -#define EXP_EMBEDTEXTURE EXP_EMBEDTEXTURE_GRP "|" IOSN_EMBEDTEXTURE -#define EXP_CONVERTTOTIFF EXP_EMBEDTEXTURE "|" IOSN_CONVERTTOTIFF - - -#define EXP_CURVEFILTERS EXP_ANIMATION "|" IOSN_CURVE_FILTER - -#define EXP_DEFORMATION EXP_ANIMATION "|" IOSN_DEFORMATION -#define EXP_BAKECOMPLEXANIMATION EXP_ANIMATION "|" IOSN_BAKECOMPLEXANIMATION -#define EXP_BONE EXP_ANIMATION "|" IOSN_BONE - -#define EXP_SAMPLINGFRAMERATE EXP_ANIMATION "|" IOSN_SAMPLINGFRAMERATE -#define EXP_POINTCACHE EXP_ANIMATION "|" IOSN_POINTCACHE -#define EXP_SMOOTHKEYASUSER EXP_ANIMATION "|" IOSN_SMOOTHKEYASUSER - -#define EXP_EXTRA_GRP EXP_ANIMATION "|" IOSN_EXTRA_GRP - -#define EXP_REMOVE_SINGLE_KEY EXP_EXTRA_GRP "|" IOSN_REMOVE_SINGLE_KEY -#define EXP_NAMETAKE EXP_EXTRA_GRP "|" IOSN_NAMETAKE -#define EXP_QUATERNION EXP_EXTRA_GRP "|" IOSN_QUATERNION - -#define EXP_CONSTRAINTS_GRP EXP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define EXP_CONSTRAINT EXP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT -#define EXP_CHARACTER EXP_CONSTRAINTS_GRP "|" IOSN_CHARACTER - - -#define EXP_MRCUSTOMATTRIBUTES EXP_GEOMETRY "|" IOSN_MRCUSTOMATTRIBUTES -#define EXP_MESHPRIMITIVE EXP_GEOMETRY "|" IOSN_MESHPRIMITIVE -#define EXP_MESHTRIANGLE EXP_GEOMETRY "|" IOSN_MESHTRIANGLE -#define EXP_MESHPOLY EXP_GEOMETRY "|" IOSN_MESHPOLY -#define EXP_NURB EXP_GEOMETRY "|" IOSN_NURB -#define EXP_PATCH EXP_GEOMETRY "|" IOSN_PATCH -#define EXP_BIP2FBX EXP_GEOMETRY "|" IOSN_BIP2FBX -#define EXP_GEOMNORMALPERPOLY EXP_GEOMETRY "|" IOSN_GEOMNORMALPERPOLY -#define EXP_TANGENTSPACE EXP_GEOMETRY "|" IOSN_TANGENTS_BINORMALS -#define EXP_SMOOTHMESH EXP_GEOMETRY "|" IOSN_SMOOTH_MESH -#define EXP_SELECTIONSET EXP_GEOMETRY "|" IOSN_SELECTION_SET - -#define EXP_FINESTSUBDIVLEVEL EXP_GEOMETRY "|" IOSN_FINESTSUBDIVLEVEL -#define EXP_MAXBONEASBONE EXP_GEOMETRY "|" IOSN_MAXBONEASBONE -#define EXP_MAXNURBSSTEP EXP_GEOMETRY "|" IOSN_MAXNURBSSTEP -#define EXP_CREASE EXP_GEOMETRY "|" IOSN_CREASE -#define EXP_BLINDDATA EXP_GEOMETRY "|" IOSN_BLINDDATA -#define EXP_NURBSSURFACEAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSSURFACEAS -#define EXP_SMOOTHING_GROUPS EXP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define EXP_HARDEDGES EXP_GEOMETRY "|" IOSN_EXP_HARDEDGES -#define EXP_ANIMATIONONLY EXP_GEOMETRY "|" IOSN_ANIMATIONONLY -#define EXP_INSTANCES EXP_GEOMETRY "|" IOSN_INSTANCES -#define EXP_CONTAINEROBJECTS EXP_GEOMETRY "|" IOSN_CONTAINEROBJECTS -#define EXP_TRIANGULATE EXP_GEOMETRY "|" IOSN_TRIANGULATE -#define EXP_EDGE_ORIENTATION EXP_GEOMETRY "|" IOSN_EDGE_ORIENTATION - -#define EXP_SELECTIONSETNAMEASPOINTCACHE EXP_POINTCACHE "|" IOSN_SELECTIONSETNAMEASPOINTCACHE - -#define EXP_GEOMETRYMESHPRIMITIVEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPRIMITIVEAS -#define EXP_GEOMETRYMESHTRIANGLEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHTRIANGLEAS -#define EXP_GEOMETRYMESHPOLYAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPOLYAS -#define EXP_GEOMETRYNURBSAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSAS -#define EXP_GEOMETRYPATCHAS EXP_GEOMETRY "|" IOSN_GEOMETRYPATCHAS - -#define EXP_BAKEFRAMESTART EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTART -#define EXP_BAKEFRAMEEND EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEEND -#define EXP_BAKEFRAMESTEP EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEP - -#define EXP_BAKE_RESAMPLE_ANIMATION_CURVES EXP_BAKECOMPLEXANIMATION "|" IOSN_RESAMPLE_ANIMATION_CURVES - -#define EXP_BAKEFRAMESTARTNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTARTNORESET -#define EXP_BAKEFRAMEENDNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEENDNORESET -#define EXP_BAKEFRAMESTEPNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEPNORESET - -#define EXP_FBX EXP_ADV_OPT_GRP "|" IOSN_FBX -#define EXP_DXF EXP_ADV_OPT_GRP "|" IOSN_DXF -#define EXP_COLLADA EXP_ADV_OPT_GRP "|" IOSN_COLLADA - -// note: EXP_FILEFORMAT group is not visible -#define EXP_OBJ EXP_FILEFORMAT "|" IOSN_OBJ -#define EXP_3DS EXP_FILEFORMAT "|" IOSN_3DS -#define EXP_MOTION_BASE EXP_FILEFORMAT "|" IOSN_MOTION_BASE -#define EXP_BIOVISION_BVH EXP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define EXP_ACCLAIM_ASF EXP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define EXP_ACCLAIM_AMC EXP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - - -#define EXP_ASCIIFBX EXP_FBX "|" IOSN_ASCIIFBX - -#define EXP_CACHE_SIZE EXP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define EXP_SHAPE EXP_DEFORMATION "|" IOSN_SHAPE -#define EXP_SKINS EXP_DEFORMATION "|" IOSN_SKINS - -#define EXP_APPLYCSTKEYRED EXP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define EXP_SAMPLINGRATE EXP_APPLYCSTKEYRED "|" IOSN_SAMPLINGRATE -#define EXP_CSTKEYREDTPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define EXP_CSTKEYREDRPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define EXP_CSTKEYREDSPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define EXP_CSTKEYREDOPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define EXP_AUTOTANGENTSONLY EXP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define EXP_APPLYKEYREDUCE EXP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define EXP_KEYREDUCEPREC EXP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define EXP_APPLYKEYSONFRM EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define EXP_APPLYKEYSYNC EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define EXP_APPLYUNROLL EXP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define EXP_UNROLLPREC EXP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define EXP_UNROLLPATH EXP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define EXP_UNROLLFORCEAUTO EXP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define EXP_PLUGIN_UI_WIDTH EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define EXP_PLUGIN_UI_HEIGHT EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define EXP_PRESET_SELECTED EXP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define EXP_UIL EXP_PLUGIN_GRP "|" IOSN_UIL -#define EXP_PLUGIN_PRODUCT_FAMILY EXP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define EXP_PLUGIN_UI_XPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define EXP_PLUGIN_UI_YPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define EXP_BUTTON_WEB_UPDATE EXP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define EXP_PI_VERSION EXP_INFORMATION_GRP "|" IOSN_PI_VERSION - -#define EXP_BUTTON_EDIT EXP_PLUGIN_GRP "|" IOSN_BUTTON_EDIT -#define EXP_BUTTON_OK EXP_PLUGIN_GRP "|" IOSN_BUTTON_OK -#define EXP_BUTTON_CANCEL EXP_PLUGIN_GRP "|" IOSN_BUTTON_CANCEL -#define EXP_MENU_EDIT_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_EDIT_PRESET -#define EXP_MENU_SAVE_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_SAVE_PRESET -// internal use -#define EXP_USETMPFILEPERIPHERAL EXP_PLUGIN_GRP "|" IOSN_USETMPFILEPERIPHERAL -#define EXP_CONSTRUCTIONHISTORY EXP_PLUGIN_GRP "|" IOSN_CONSTRUCTIONHISTORY - -#define EXP_COLLADA_TRIANGULATE EXP_COLLADA "|" IOSN_COLLADA_TRIANGULATE -#define EXP_COLLADA_SINGLEMATRIX EXP_COLLADA "|" IOSN_COLLADA_SINGLEMATRIX -#define EXP_COLLADA_FRAME_RATE EXP_COLLADA "|" IOSN_COLLADA_FRAME_RATE - -#define EXP_DXF_TRIANGULATE EXP_DXF "|" IOSN_DXF_TRIANGULATE -#define EXP_DXF_DEFORMATION EXP_DXF "|" IOSN_DXF_DEFORMATION - -#define EXP_OBJ_TRIANGULATE EXP_OBJ "|" IOSN_OBJ_TRIANGULATE -#define EXP_OBJ_DEFORMATION EXP_OBJ "|" IOSN_OBJ_DEFORMATION - -#define EXP_3DS_REFERENCENODE EXP_3DS "|" IOSN_3DS_REFERENCENODE -#define EXP_3DS_TEXTURE EXP_3DS "|" IOSN_3DS_TEXTURE -#define EXP_3DS_MATERIAL EXP_3DS "|" IOSN_3DS_MATERIAL -#define EXP_3DS_ANIMATION EXP_3DS "|" IOSN_3DS_ANIMATION -#define EXP_3DS_MESH EXP_3DS "|" IOSN_3DS_MESH -#define EXP_3DS_LIGHT EXP_3DS "|" IOSN_3DS_LIGHT -#define EXP_3DS_CAMERA EXP_3DS "|" IOSN_3DS_CAMERA -#define EXP_3DS_AMBIENT_LIGHT EXP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define EXP_3DS_RESCALING EXP_3DS "|" IOSN_3DS_RESCALING -#define EXP_3DS_TEXUVBYPOLY EXP_3DS "|" IOSN_3DS_TEXUVBYPOLY - -#define EXP_FBX_TEMPLATE EXP_FBX "|" IOSN_TEMPLATE -#define EXP_FBX_PIVOT EXP_FBX "|" IOSN_PIVOT -#define EXP_FBX_GLOBAL_SETTINGS EXP_FBX "|" IOSN_GLOBAL_SETTINGS -#define EXP_FBX_CHARACTER EXP_FBX "|" IOSN_CHARACTER -#define EXP_FBX_CONSTRAINT EXP_FBX "|" IOSN_CONSTRAINT -#define EXP_FBX_GOBO EXP_FBX "|" IOSN_GOBO -#define EXP_FBX_SHAPE EXP_FBX "|" IOSN_SHAPE -#define EXP_FBX_MATERIAL EXP_FBX "|" IOSN_MATERIAL -#define EXP_FBX_TEXTURE EXP_FBX "|" IOSN_TEXTURE -#define EXP_FBX_MODEL EXP_FBX "|" IOSN_MODEL -#define EXP_FBX_AUDIO EXP_FBX "|" IOSN_AUDIO -#define EXP_FBX_ANIMATION EXP_FBX "|" IOSN_ANIMATION -#define EXP_FBX_EMBEDDED EXP_FBX "|" IOSN_EMBEDDED -#define EXP_FBX_PASSWORD EXP_FBX "|" IOSN_PASSWORD -#define EXP_FBX_PASSWORD_ENABLE EXP_FBX "|" IOSN_PASSWORD_ENABLE -#define EXP_FBX_COLLAPSE_EXTERNALS EXP_FBX "|" IOSN_COLLAPSE_EXTERNALS -#define EXP_FBX_COMPRESS_ARRAYS EXP_FBX "|" IOSN_COMPRESS_ARRAYS -#define EXP_FBX_COMPRESS_LEVEL EXP_FBX "|" IOSN_COMPRESS_LEVEL -#define EXP_FBX_COMPRESS_MINSIZE EXP_FBX "|" IOSN_COMPRESS_MINSIZE -#define EXP_FBX_EMBEDDED_PROPERTIES_SKIP EXP_FBX "|" IOSN_EMBEDDED_PROPERTIES_SKIP -#define EXP_FBX_EXPORT_FILE_VERSION EXP_FBX "|" IOSN_EXPORT_FILE_VERSION - - -// end of export defined path -//--------------------------- - -//--------------------------- -// Motion files related options -#define IOSN_MOTION_START "MotionStart" -#define IOSN_MOTION_FRAME_COUNT "MotionFrameCount" -#define IOSN_MOTION_FRAME_RATE "MotionFrameRate" -#define IOSN_MOTION_ACTOR_PREFIX "MotionActorPrefix" -#define IOSN_MOTION_RENAME_DUPLICATE_NAMES "MotionRenameDuplicateNames" -#define IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED "MotionExactZeroAsOccluded" -#define IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION "MotionSetOccludedToLastValidPos" -#define IOSN_MOTION_AS_OPTICAL_SEGMENTS "MotionAsOpticalSegments" -#define IOSN_MOTION_ASF_SCENE_OWNED "MotionASFSceneOwned" -#define IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION "MotionFromGlobalPosition" -#define IOSN_MOTION_GAPS_AS_VALID_DATA "MotionGapsAsValidData" -#define IOSN_MOTION_C3D_REAL_FORMAT "MotionC3DRealFormat" -#define IOSN_MOTION_CREATE_REFERENCE_NODE "MotionCreateReferenceNode" -#define IOSN_MOTION_TRANSLATION "MotionTranslation" -#define IOSN_MOTION_BASE_T_IN_OFFSET "MotionBaseTInOffset" -#define IOSN_MOTION_BASE_R_IN_PREROTATION "MotionBaseRInPrerotation" -#define IOSN_MOTION_DUMMY_NODES "MotionDummyNodes" -#define IOSN_MOTION_LIMITS "MotionLimits" -#define IOSN_MOTION_FRAME_RATE_USED "MotionFrameRateUsed" -#define IOSN_MOTION_FRAME_RANGE "MotionFrameRange" -#define IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR "MotionWriteDefaultAsBaseTR" - -// Import - -//Motion Base options -#define IMP_MOB_START IMP_MOTION_BASE "|" IOSN_MOTION_START -#define IMP_MOB_FRAME_COUNT IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define IMP_MOB_FRAME_RATE IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define IMP_MOB_ACTOR_PREFIX IMP_MOTION_BASE "|" IOSN_MOTION_ACTOR_PREFIX -#define IMP_MOB_RENAME_DUPLICATE_NAMES IMP_MOTION_BASE "|" IOSN_MOTION_RENAME_DUPLICATE_NAMES -#define IMP_MOB_EXACT_ZERO_AS_OCCLUDED IMP_MOTION_BASE "|" IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED -#define IMP_MOB_SET_OCCLUDED_TO_LAST_VALID_POSITION IMP_MOTION_BASE "|" IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION -#define IMP_MOB_AS_OPTICAL_SEGMENTS IMP_MOTION_BASE "|" IOSN_MOTION_AS_OPTICAL_SEGMENTS -#define IMP_MOB_ASF_SCENE_OWNED IMP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -// Acclaim AMC options -#define IMP_ACCLAIM_AMC_CREATE_REFERENCE_NODE IMP_ACCLAIM_AMC "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_AMC_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_AMC_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_AMC_DUMMY_NODES IMP_ACCLAIM_AMC "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_AMC_MOTION_LIMITS IMP_ACCLAIM_AMC "|" IOSN_MOTION_LIMITS - -// Acclaim ASF options -#define IMP_ACCLAIM_ASF_CREATE_REFERENCE_NODE IMP_ACCLAIM_ASF "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_ASF_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_ASF_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_ASF_DUMMY_NODES IMP_ACCLAIM_ASF "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_ASF_MOTION_LIMITS IMP_ACCLAIM_ASF "|" IOSN_MOTION_LIMITS - -// Biovision BVH options -#define IMP_BIOVISION_BVH_CREATE_REFERENCE_NODE IMP_BIOVISION_BVH "|" IOSN_MOTION_CREATE_REFERENCE_NODE - -// Motion Analysis HTR options -#define IMP_MOTIONANALYSIS_HTR_CREATE_REFERENCE_NODE IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_T_IN_OFFSET IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_R_IN_PREROTATION IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_R_IN_PREROTATION - -// Export - -//Motion Base options -#define EXP_MOB_START EXP_MOTION_BASE "|" IOSN_MOTION_START -#define EXP_MOB_FRAME_COUNT EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define EXP_MOB_FROM_GLOBAL_POSITION EXP_MOTION_BASE "|" IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION -#define EXP_MOB_FRAME_RATE EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define EXP_MOB_GAPS_AS_VALID_DATA EXP_MOTION_BASE "|" IOSN_MOTION_GAPS_AS_VALID_DATA -#define EXP_MOB_C3D_REAL_FORMAT EXP_MOTION_BASE "|" IOSN_MOTION_C3D_REAL_FORMAT -#define EXP_MOB_ASF_SCENE_OWNED EXP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -//Acclaim AMC options -#define EXP_ACCLAIM_AMC_MOTION_TRANSLATION EXP_ACCLAIM_AMC "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_AMC_FRAME_RATE_USED EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_AMC_FRAME_RANGE EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_AMC_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_AMC "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Acclaim ASF options -#define EXP_ACCLAIM_ASF_MOTION_TRANSLATION EXP_ACCLAIM_ASF "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_ASF_FRAME_RATE_USED EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_ASF_FRAME_RANGE EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_ASF_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_ASF "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Biovision BVH options -#define EXP_BIOVISION_BVH_MOTION_TRANSLATION EXP_BIOVISION_BVH "|" IOSN_MOTION_TRANSLATION - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxprogress.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxprogress.h deleted file mode 100644 index 38d9c67..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxprogress.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprogress.h -#ifndef _FBXSDK_FILEIO_PROGRESS_H_ -#define _FBXSDK_FILEIO_PROGRESS_H_ - -#include - -#include - -#include - -typedef bool (*FbxProgressCallback)(void* pArgs, float pPercentage, const char* pStatus); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - class FbxSpinLock; -#endif - -/** Class for progress reporting -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProgress -{ -public: - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the optional arguments passed to the callback function. */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Set the total amount of workload needed to complete the progress. - * \param pTotal Total amount of workload. - * \remark The default total is 100.0. */ - void SetTotal(float pTotal); - - /** Set the threshold at which the progress callback should be called. - * \param pThreshold The threshold value, between 0.0 and 100.0, that triggers the callback. - * \remark The default threshold is 1.0, meaning that every 1% the callback is triggered. */ - void SetThreshold(float pThreshold); - - /** Update current progress with recent workload. - * \param pDelta Delta amount of workload progressed so far. - * \param pStatus Optional current progress status string. - * \remark If a callback is set, it will be called upon caling this function. */ - void Update(float pDelta, const char* pStatus=NULL); - - //! Reset the progress status percentage and status string. - void Reset(); - - /** Retrieve the progress status. - * \param pStatus Optional current progress status string. - * \return The current progress percentage. */ - float GetProgress(FbxString* pStatus=NULL); - - /** Set the progress status to completed. - * \param pStatus Optional current progress status string. */ - void Complete(const char* pStatus=NULL); - - //! Cancel this progress. - void Cancel(); - - //! Query whether user canceled this progress. - inline bool IsCanceled() const { return mCanceled; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProgress(); - ~FbxProgress(); - -private: - void Acquire(); - void Release(); - float GetPercent() const; - bool ExecuteCallback() const; - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxSpinLock* mLock; -#endif - float mCurrent; - float mPrevious; - float mTotal; - float mThreshold; - FbxString mStatus; - FbxProgressCallback mCallback; - void* mCallbackArgs; - bool mCanceled; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_PROGRESS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxreader.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxreader.h deleted file mode 100644 index 81eec0e..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxreader.h +++ /dev/null @@ -1,270 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreader.h -#ifndef _FBXSDK_FILEIO_READER_H_ -#define _FBXSDK_FILEIO_READER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxDocumentInfo; -class FbxScene; -class FbxImporter; -class FbxIOSettings; -class FbxAxisSystem; -class FbxStatistics; -class FbxSystemUnit; -class FbxNode; -class FbxProgress; -class FbxTakeInfo; - - /** Base class of other readers used internally. - * This class provides the interfaces for reading files. - * - * The role of the reader is to effectively "read" specific file data - * vs the role of the importer is to select a specific reader - * and launch the reading of a file through that reader. - * \see FbxImporter - * - * ex: - * - FbxReaderFbx5 can read FBX 5 format files - * - FbxReaderFbx6 can read FBX 6 format files - * - FbxReaderFbx7 can read FBX 7 format files - * - FbxReaderCollada can read Collada files - * - FbxReaderDxf can read Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom reader must be created for plug-in extension, - * then FbxReader must be the base class for - * the new custom reader in that particular situation. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxReader -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current reader. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReader(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. - */ - virtual ~FbxReader(); - - /** Information type to request. - * \remarks Used internally to get reader file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a reader ex: "FBX". - eInfoDescriptions, //!< To get the file description for a reader ex: "Autodesk FBX (*.fbx)". - eReserved1 = 0xFBFB, - }; - - /** Flags for reading parts of file. - * \remarks Used internally when an importer is initialized to get some information very fast. - */ - enum EFileOpenSpecialFlags - { - eParseForGlobalSettings = 1, //!< Used for reading the Global settings section when an importer is initialized. - eParseForStatistics = 2 //!< Used for reading a group of statistics when an importer is initialized. - }; - - /** \internal Helper typedef for passing FbxReader creator function as argument (used internally) */ - typedef FbxReader* (*CreateFuncType)(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); - - /** \internal Helper typedef for passing FbxIOSettings creator function as argument (used internally) */ - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - /** \internal Helper typedef for passing EInfoRequest function as argument (used internally) */ - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pReaderTypeId); - - /** Returns the file version. - * \param pMajor Major version. - * \param pMinor Minor version. - * \param pRevision Revision version. - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision){ pMajor = pMinor = pRevision = 0; } - - /** Opens the file with default flag - * \param pFileName Name of the File to open - * \return If the file opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(char* pFileName) = 0; - - /** Opens the stream with default flag - * \param pStream stream to open - * \param pStreamData user-defined stream data - * \return If the stream opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(FbxStream* pStream, void* pStreamData); - - /** Closes the file stream - * \return \c false - */ - virtual bool FileClose() = 0; - - /** Checks if the file stream is open. - * \return \c false. - */ - virtual bool IsFileOpen() = 0; - - /** Returns file stream options - * \param pParseFileAsNeeded Sets whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true) = 0; - - /** Reads file with stream options - * \param pDocument FbxDocument to store the file data - * \return \c false. - */ - virtual bool Read(FbxDocument* pDocument) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginReadParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Opens the file with specific EFileOpenSpecialFlags - * \param pFileName Name of the File to open. - * \param pFlags The EFileOpenSpecialFlags to open with - * \return If the file opens successfully return true, otherwise return false. - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags /*pFlags*/){ return FileOpen(pFileName); } - - /** Returns the system axis information and file system units from the file - * \param pAxisSystem Axis system in file - * \param pSystemUnits System unit in file - * \return \c false. - */ - virtual bool GetAxisInfo(FbxAxisSystem* /*pAxisSystem*/, FbxSystemUnit* /*pSystemUnits*/){ return false; } - - /** Returns statistics from the file - * \param pStats Statistics in the file. - * \return \c false. - */ - virtual bool GetStatistics(FbxStatistics* /*pStats*/){ return false; } - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode& pTimeMode) { pTimeMode = FbxTime::eDefaultMode; return false; } - - - /** Returns the scene info from the file. - * \return NULL. - */ - virtual FbxDocumentInfo* GetSceneInfo(){return NULL;} - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(){return NULL;} - - /** If default camera resolution is OK, returns information about the resolution of the render. - * \param pCamName Default camera name. - * \param pResolutionMode Default resolution mode. - * \param pW Default resolution width. - * \param pH Default resolution height. - * \return \c true If default camera resolution is OK, \c false Otherwise. - */ - virtual bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Judges if the format of the file is was created by an Autodesk plug-in. - * An internal (genuine) plug-in is one created by the Autodesk FBX product team. - * \return \c true If the file format is internal plug-in , \c false Otherwise. - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return A pointer to IOSettings used for this reader or NULL if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this reader instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the reader. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - virtual void SetEmbeddingExtractionFolder(const char* /*pExtractFolder*/){} - - /** Returns true if this reader supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual bool FileOpen(FbxFile * pFile); - - FbxStatus& GetStatus() { return mStatus; } - -protected: - void SetDefaultRenderResolution(const char* pCamName, const char* pResolutionMode, double pW, double pH); -#ifndef FBXSDK_ENV_WINSTORE - void PluginsReadBegin(FbxScene& pScene); - void PluginsRead(const char* pName, const char* pVersion); - void PluginsReadEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - FbxReader& operator=(FbxReader const&) { return *this; } - virtual bool CheckDuplicateNodeNames(FbxNode* pRootNode, FbxString& pDuplicateNodeNameList); - - FbxStatus& mStatus; - FbxManager& mManager; - FbxIODefaultRenderResolution* mData; - -private: - int mInternalID; - FbxIOSettings* mIOSettings; - - friend struct FbxReaderFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_READER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatistics.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatistics.h deleted file mode 100644 index b6d4034..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatistics.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatistics.h -#ifndef _FBXSDK_FILEIO_STATISTICS_H_ -#define _FBXSDK_FILEIO_STATISTICS_H_ - -#include - -#include -#include - -#include - -/** This class is a basic class to get the quantity of items. - * User processes the statistics raw data by deriving FbxStatistics class and overrides \c AddItem method. - * When overriding \c AddItem method, User must store item's name and item's count by pair which means - * The index of one item's name in array \c mItemName is the same as the index of this item's count in array \c mItemCount. - * - * \code Here is a code snippet to show how it used. - * //Define my own statistics class. - * class MyStatistics : public FbxStatistics - * { - * public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxSdkNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; - * }; - * - * FbxManager* lSdkManager = FbxManager::Create(); - * FbxScene* lScene = FbxScene::Create( lSdkManager, "Scene"); - * FbxNode* lNode1 = FbxNode::Create(lScene, "Node1"); - * FbxNode* lNode2 = FbxNode::Create(lScene, "Node2"); - * FbxNode* lNode3 = FbxNode::Create(lScene, "Node3"); - * FbxNode* lNode4 = FbxNode::Create(lScene, "Node4"); - * lScene.AddNode(lNode1); - * lScene.AddNode(lNode2); - * lScene.AddNode(lNode3); - * MyStatistics lStatistics; - * lStatistics.AddItem("Node_Count", lScene.GetNodeCount() ); - * FbxString lItemName; - * int lItemCount; - * if( lStatistics.GetItemPair( 0, lItemName, lItemCount)) - * { - * //do something - * } - * \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatistics -{ -public: - /// \name Constructor and Destructor. - //@{ - FbxStatistics(); - virtual ~FbxStatistics(); - //@} - - //! Reset the statistics. - void Reset(); - - //! Get the number of items. - int GetNbItems() const; - - /** Get the statistics information by pair. - * \param pNum The index of statistics data to be got. - * \param pItemName Output the item's name. - * \param pItemCount Output the item's count. - * \return \c True if successful, \c False otherwise. - */ - bool GetItemPair(int pNum, FbxString& pItemName, int& pItemCount) const; - - /** Assignment operator. - * \param pStatistics FbxStatistics assigned to this one. - */ - FbxStatistics& operator=(const FbxStatistics& pStatistics); - -protected: - /** virtual function to define the process of the incoming statistics data. - * \param pItemName The item's name - * \param pItemCount The item's count. - * \return False. - */ - virtual bool AddItem(FbxString& /*pItemName*/, int /*pItemCount*/) { return false; }; - - //! An array to store item's name. - FbxArray mItemName; - - //! An array to store item's count. - FbxArray mItemCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h deleted file mode 100644 index f85950a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatisticsfbx.h -#ifndef _FBXSDK_FILEIO_STATISTICS_FBX_H_ -#define _FBXSDK_FILEIO_STATISTICS_FBX_H_ - -#include - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FbxStatisticsFbx : public FbxStatistics -{ -public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_FBX_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxwriter.h b/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxwriter.h deleted file mode 100644 index 41930ab..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxwriter.h +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriter.h -#ifndef _FBXSDK_FILEIO_WRITER_H_ -#define _FBXSDK_FILEIO_WRITER_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxScene; -class FbxExporter; -class FbxIO; -class FbxIOSettings; -class FbxProgress; - -#define IOSP GetIOSettings() - - /** Base class of other writers used internally. - * This class provides the interfaces for writing files. - * - * The role of the writer is to effectively "write" specific file data - * vs the role of the exporter is to select a specific writer - * and launch the writing of a file through that writer. - * \see FbxExporter - * - * ex: - * - FbxWriterFbx5 can write FBX 5 format files - * - FbxWriterFbx6 can write FBX 6 format files - * - FbxWriterFbx7 can write FBX 7 format files - * - FbxWriterCollada can write Collada files - * - FbxWriterDxf can write Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom writer must be created for plug-in extension, - * then FbxWriter must be the base class for - * the new custom writer in that particular situation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxWriter -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current writer. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriter(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. */ - virtual ~FbxWriter(); - - /** Information type to request. - * \remarks Used internally to get writer file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a writer ex: "FBX". - eInfoDescriptions, //!< To get the file description for a writer ex:"Autodesk FBX (*.fbx)". - eInfoVersions, //!< To get the file version for a writer ex: 7100. - eInfoCompatibleDesc, //!< To get the file compatible description for a writer. - eInfoUILabel, //!< To get the file UI label to show for a writer ex: file labels shown in "Open file dialog". - eReserved1 = 0xFBFB, - }; - - //! Helper typedef for passing FbxWriter creator function as argument (used internally). - typedef FbxWriter* (*CreateFuncType)(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); - - //! Helper typedef for passing FbxIOSettings creator function as argument (used internally). - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - //! Helper typedef for passing EInfoRequest function as argument (used internally). - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pWriterTypeId); - - /** Creates a new file. - * \param pFileName The name of the newly created file. - */ - virtual bool FileCreate(char* pFileName) = 0; - - /** Creates a new file via a stream. - * \param pStream The stream to write to. - * \param pStreamData the user-defined stream data to be written. - */ - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - - /** Closes the file. - */ - virtual bool FileClose() = 0; - - /** Test if the file is open. - */ - virtual bool IsFileOpen() = 0; - - /** Setup write options. - */ - virtual void GetWriteOptions() = 0; - - /** Writes content to the specified file with given stream options - * \param pDocument FbxDocument to write file data to. - */ - virtual bool Write(FbxDocument* pDocument) = 0; - - /** Pre-processes the scene. - * \param pScene The scene needs to be pre-processed. - */ - virtual bool PreprocessScene(FbxScene &pScene) = 0; - - /** Post-processes the scene. - * \param pScene The scene needs to be post-processed. - */ - virtual bool PostprocessScene(FbxScene &pScene) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Writes extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginWriteParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Finds the selected root node in the specified scene. - * \param pScene The scene in which the selected root node is found. - * \return The located root node.\c NULL if the selected root node cannot be found. - */ - virtual FbxNode* FindRootNode(FbxScene& pScene); - - /** Checks if there are spaces in the names of specified node (and its children nodes), - * and writes the returned node's name in the specified string list. - * \param pNode Specifies the node to check. - * \param pNodeNameList Specifies the string list where the node name that has spaces in it is recorded. - * \return \c true If there are no spaces in the name of specified node (and its children nodes), - * \c false If spaces are found. - */ - virtual bool CheckSpaceInNodeNameRecursive(FbxNode* pNode, FbxString& pNodeNameList); - - /** Sets the file export version as specified. - * \param pVersion The specified file export version. - */ - bool SetFileExportVersion(FbxString pVersion); - - /** Sets the renaming mode as specified. - * \param pRenamingMode The specified renaming mode. - */ - void SetRenamingMode(FbxSceneRenamer::ERenamingMode pRenamingMode){mRenamingMode = pRenamingMode;} - - /** Sets the resampling rate as specified. - * \param pResamplingRate The specified resampling rate. - */ - inline void SetResamplingRate(double pResamplingRate){mResamplingRate = pResamplingRate;} - - /** Test if file format is an internal plug-in . - * A non genuine plug-in is a plug-in made by someone external to Autodesk FBX SDK group. - * \return \c true If the file format is an internal plug-in ,\c false Otherwise . - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this writer instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the writer. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - /** Returns true if this writer supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -protected: -#ifndef FBXSDK_ENV_WINSTORE - //! Function called by FBX before writing out the scene (FbxScene). - void PluginsWriteBegin(FbxScene& pScene); - /** - * Function called by FBX before writing out any FBX object. - * \param pFbx File object. - * \param pWriteObjectId Flag to write out object id. - */ - void PluginsWrite(FbxIO& pFbx, bool pWriteObjectId); - //! Function called by FBX after writing out the scene (FbxScene). - void PluginsWriteEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -public: -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStatus& GetStatus() { return mStatus; } - -protected: - - FbxWriter& operator=(FbxWriter const&) { return *this; } - - FbxStatus& mStatus; - FbxManager& mManager; - FbxString mFileVersion; - //! Resample rate for animation. - double mResamplingRate; - //! The mode describing from which format to which format when write FBX file. - FbxSceneRenamer::ERenamingMode mRenamingMode; - -private: - int mInternalID; - FbxIOSettings * mIOSettings; - - friend struct FbxWriterFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_WRITER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h deleted file mode 100644 index aede687..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h +++ /dev/null @@ -1,1359 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurve.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_H_ - -#include - -#include -#include - -#include - -class KFCurve; - -/** Definitions used for the FBX animation curves and keys. */ -class FBXSDK_DLL FbxAnimCurveDef -{ -public: - static const float sDEFAULT_WEIGHT; - static const float sMIN_WEIGHT; - static const float sMAX_WEIGHT; - static const float sDEFAULT_VELOCITY; - - //! Key tangent mode for cubic interpolation. - enum ETangentMode - { - eTangentAuto = 0x00000100, //!< Auto key (spline cardinal). - eTangentTCB = 0x00000200, //!< Spline TCB (Tension, Continuity, Bias) - eTangentUser = 0x00000400, //!< Next slope at the left equal to slope at the right. - eTangentGenericBreak = 0x00000800, //!< Independent left and right slopes. - eTangentBreak = eTangentGenericBreak|eTangentUser, //!< Independent left and right slopes, with next slope at the left equal to slope at the right. - eTangentAutoBreak = eTangentGenericBreak|eTangentAuto, //!< Independent left and right slopes, with auto key. - eTangentGenericClamp = 0x00001000, //!< Clamp: key should be flat if next or previous key has the same value (overrides tangent mode). - eTangentGenericTimeIndependent = 0x00002000, //!< Time independent tangent (overrides tangent mode). - eTangentGenericClampProgressive = 0x00004000|eTangentGenericTimeIndependent //!< Clamp progressive: key should be flat if tangent control point is outside [next-previous key] range (overrides tangent mode). - }; - - //! Key interpolation type. - enum EInterpolationType - { - eInterpolationConstant = 0x00000002, //!< Constant value until next key. - eInterpolationLinear = 0x00000004, //!< Linear progression to next key. - eInterpolationCubic = 0x00000008 //!< Cubic progression to next key. - }; - - //! Weighted mode. - enum EWeightedMode - { - eWeightedNone = 0x00000000, //!< Tangent has default weights of 0.333; we define this state as not weighted. - eWeightedRight = 0x01000000, //!< Right tangent is weighted. - eWeightedNextLeft = 0x02000000, //!< Left tangent is weighted. - eWeightedAll = eWeightedRight|eWeightedNextLeft //!< Both left and right tangents are weighted. - }; - - //! Key constant mode. - enum EConstantMode - { - eConstantStandard = 0x00000000, //!< Curve value is constant between this key and the next - eConstantNext = 0x00000100 //!< Curve value is constant, with next key's value - }; - - //! Velocity mode. Velocity settings speed up or slow down animation on either side of a key without changing the trajectory of the animation. Unlike Auto and Weight settings, Velocity changes the animation in time, but not in space. - enum EVelocityMode - { - eVelocityNone = 0x00000000, //!< No velocity (default). - eVelocityRight = 0x10000000, //!< Right tangent has velocity. - eVelocityNextLeft = 0x20000000, //!< Left tangent has velocity. - eVelocityAll = eVelocityRight|eVelocityNextLeft //!< Both left and right tangents have velocity. - }; - - //! Tangent visibility. - enum ETangentVisibility - { - eTangentShowNone = 0x00000000, //!< No tangent is visible. - eTangentShowLeft = 0x00100000, //!< Left tangent is visible. - eTangentShowRight = 0x00200000, //!< Right tangent is visible. - eTangentShowBoth = eTangentShowLeft|eTangentShowRight //!< Both left and right tangents are visible. - }; - - //! FbxAnimCurveKey data indices for cubic interpolation tangent information. - enum EDataIndex - { - eRightSlope = 0, //!< Index of the right derivative, User and Break tangent mode (data are float). - eNextLeftSlope = 1, //!< Index of the left derivative for the next key, User and Break tangent mode. - eWeights = 2, //!< Start index of weight values, User and Break tangent break mode (data are FbxInt16 tokens from weight and converted to float). - eRightWeight = 2, //!< Index of weight on right tangent, User and Break tangent break mode. - eNextLeftWeight = 3, //!< Index of weight on next key's left tangent, User and Break tangent break mode. - eVelocity = 4, //!< Start index of velocity values, Velocity mode - eRightVelocity = 4, //!< Index of velocity on right tangent, Velocity mode - eNextLeftVelocity = 5, //!< Index of velocity on next key's left tangent, Velocity mode - eTCBTension = 0, //!< Index of Tension, TCB tangent mode (data are floats). - eTCBContinuity = 1, //!< Index of Continuity, TCB tangent mode. - eTCBBias = 2 //!< Index of Bias, TCB tangent mode. - }; -}; - -struct FBXSDK_DLL FbxAnimCurveTangentInfo -{ - inline FbxAnimCurveTangentInfo() - { - mDerivative = 0; - mWeight = FbxAnimCurveDef::sDEFAULT_WEIGHT; - mWeighted = false; - mVelocity = FbxAnimCurveDef::sDEFAULT_VELOCITY; - mHasVelocity = false; - mAuto = 0; - } - - float mDerivative; - float mWeight; - float mVelocity; - float mAuto; - bool mWeighted; - bool mHasVelocity; -}; - -/** This is the interface for implementation of animation key objects. - * \nosubgrouping - * - * \remarks Users should not use this class directly, but always use FbxAnimCurveKey. - * A FbxAnimCurveKey has a FbxAnimCurveKey_Impl. - * But FbxAnimCurveKey_Impl is just an implementation interface, - */ -class FBXSDK_DLL FbxAnimCurveKey_Impl -{ -public: - /** Destructor. - */ - virtual ~FbxAnimCurveKey_Impl() {}; - - /** Assignment operator. - */ - virtual FbxAnimCurveKey_Impl& operator=(const FbxAnimCurveKey_Impl& pFKey) = 0; - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - virtual void Set(FbxTime pTime, float pValue) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get the key value. - * \return The value of the key. - */ - virtual float GetValue() const = 0; - - /** Set the key value. - * \param pValue The value to set. - */ - virtual void SetValue(float pValue) = 0; - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType GetInterpolation() const = 0; - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - virtual void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - virtual FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) const = 0; - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - virtual void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) = 0; - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const = 0; - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - virtual void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) = 0; - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - virtual void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) = 0; - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const = 0; - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - virtual void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) = 0; - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - virtual FbxAnimCurveDef::EConstantMode GetConstantMode() const = 0; - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - virtual void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - virtual float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const = 0; - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - virtual void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) = 0; - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) = 0; - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const = 0; - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual void SetBreak(bool pVal) = 0; - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual bool GetBreak() const = 0; -}; - -/** This is the interface for the FBX animation curve keys. - * A key is defined by a time and a value. It also has tangents that control how the animation curve enters and exits the key. - * \nosubgrouping - * - *\remarks This class is now the main animation key object of the SDK, - * Users should always use this class to handle animation curve key. - * This class has a FbxAnimCurveKey_Impl as its implementation interface, - * Default constructor does not initialize data members. - * If an instance has to be initialized, use function FbxAnimCurveKey::Set(). - */ -class FBXSDK_DLL FbxAnimCurveKey : public FbxAnimCurveKeyBase -{ -public: - /** Constructor with no argument - */ - FbxAnimCurveKey() : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - } - - /** Constructor with time. - * \param pTime The time of key. - */ - FbxAnimCurveKey(FbxTime pTime) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - SetTime(pTime); - } - - /** Constructor with time and value. - * \param pTime The time of key. - * \param pVal The value of key. - */ - FbxAnimCurveKey(FbxTime pTime, float pVal) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - Set(pTime, pVal); - } - - /** Copy constructor - */ - FbxAnimCurveKey(FbxAnimCurveKey const& pFKey) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mCopyAllocatorFct != NULL); - SetTime(pFKey.GetTime()); - mImpl = mCopyAllocatorFct(pFKey.GetImpl()); - } - - /** Destructor - */ - ~FbxAnimCurveKey() - { - FBX_ASSERT(mDeallocatorFct != NULL); - (*mDeallocatorFct)(mImpl); - } - - /** Assignment operator - */ - FbxAnimCurveKey& operator=(const FbxAnimCurveKey& pFKey) - { - FBX_ASSERT(mImpl); - if (mImpl) - { - *mImpl = *(pFKey.GetImpl()); - } - SetTime(pFKey.GetTime()); - return *this; - } - - /** Get time value. - * \return Time value. - */ - FbxTime GetTime() const - { - return FbxAnimCurveKeyBase::GetTime(); - } - - /** Set time value. - * \param pTime Time value to set. - */ - void SetTime(const FbxTime& pTime) - { - FbxAnimCurveKeyBase::SetTime(pTime); - } - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - void Set(FbxTime pTime, float pValue) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->Set(pTime, pValue); - } - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->SetTCB(pTime, pValue, pData0, pData1, pData2); - } - - /** Get the key value. - * \return The value of the key. - */ - float GetValue() const - { - return mImpl->GetValue(); - } - - /** Set the key value. - * \param pValue The value to set. - */ - void SetValue(float pValue) - { - mImpl->SetValue(pValue); - } - - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - FbxAnimCurveDef::EInterpolationType GetInterpolation() - { - return mImpl->GetInterpolation(); - } - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) - { - mImpl->SetInterpolation(pInterpolation); - } - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) - { - return mImpl->GetTangentMode(pIncludeOverrides); - } - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) - { - mImpl->SetTangentMode(pTangentMode); - } - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const - { - return mImpl->GetTangentWeightMode(); - } - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) - { - mImpl->SetTangentWeightMode(pTangentWeightMode, pMask); - } - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) - { - mImpl->SetTangentWeightAndAdjustTangent(pIndex, pWeight); - } - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const - { - return mImpl->GetTangentVelocityMode(); - } - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) - { - mImpl->SetTangentVelocityMode(pTangentVelocityMode, pMask); - } - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - FbxAnimCurveDef::EConstantMode GetConstantMode() const - { - return mImpl->GetConstantMode(); - } - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) - { - mImpl->SetConstantMode(pMode); - } - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const - { - return mImpl->GetDataFloat(pIndex); - } - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) - { - mImpl->SetDataFloat(pIndex, pValue); - } - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) - { - mImpl->SetTangentVisibility(pVisibility); - } - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const - { - return mImpl->GetTangentVisibility(); - } - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - void SetBreak(bool pVal) - { - mImpl->SetBreak(pVal); - } - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - bool GetBreak() const - { - return mImpl->GetBreak(); - } - - /** Get key implementation. - * \return Pointer to implemented instance. - */ - FbxAnimCurveKey_Impl* GetImpl() const - { - return mImpl; - } - - /** Set allocator function - * \param pAllocatorFct Allocator function - */ - static void SetAllocatorFct(FbxAnimCurveKey_Impl* (*pAllocatorFct)()); - - /** Set copy allocator function - * \param pCopyAllocatorFct Copy allocator function - */ - static void SetCopyAllocatorFct(FbxAnimCurveKey_Impl* (*pCopyAllocatorFct)(FbxAnimCurveKey_Impl*)); - - /** Set deallocator function - * \param pDeallocatorFct Deallocator function - */ - static void SetDeallocatorFct(void (*pDeallocatorFct)(FbxAnimCurveKey_Impl*)); - -private: - static FbxAnimCurveKey_Impl* (*mAllocatorFct)(); - static FbxAnimCurveKey_Impl* (*mCopyAllocatorFct)(FbxAnimCurveKey_Impl*); - static void (*mDeallocatorFct)(FbxAnimCurveKey_Impl*); - FbxAnimCurveKey_Impl* mImpl; -}; - -class FbxScene; - -/** An animation curve, defined by a collection of keys (FbxAnimCurveKey), and indicating how a value changes over time. -* Since an animation curve is a function, on a given animation curve, only one key per time is -* allowed. The keys are sorted -* in time order. They can be accessed by their index on the curve, from 0 to FbxAnimCurve::KeyGetCount-1. -* The time unit in FBX (FbxTime) is 1/46186158000 of one second. -* -* Each key defines tangents and interpolation that modify the animation curve. -* Tangents control the way the animation curve enters and exits the keys. -* Interpolation indicates the animation curve's behavior between keys. -* -* Interpolation modes are -* \li Constant - Curve value stays the same until next key -* \li Linear - Animation curve is a straight line -* \li Cubic - Animation curve is a Bezier spline -* -* Tangent modes are -* \li Auto (Spline cardinal) -* \li Spline TCB (Tension, Continuity, Bias) -* \li User (Next slope at the left equal to slope at the right) -* -* Tangent modes can be overridden by more tangent options: -* \li Break (Independent left and right slopes) -* \li Clamp (Key should be flat if next or previous key has the same value) -* \li Time independent -* -* Tangent can be modified some more by adding weights and velocity. -* By default, the weights are 0.333 on either side of the key, and there is -* no velocity. Velocity settings speed up or slow down animation on either side of -* a key without changing the trajectory of the animation. Unlike Auto and Weight settings, -* Velocity changes the animation in time, but not in space. -* -* \nosubgrouping -* \remarks FbxAnimCurve is now the main animation animation curve object of the SDK. -* Users should always use this class to handle animation curve. -* -* \note When adding keys to an animation curve, use FbxAnimCurve::KeyModifyBegin and FbxAnimCurve::KeyModifyEnd. -* please refer to the following sample code: -* \code -* FbxTime lTime; -* int lKeyIndex = 0; - -* // Create curve -* FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - -* // Add keys to the curve -* lAnimCurve->KeyModifyBegin(); - -* // First key: time 0, value 0 -* lTime.SetSecondDouble(0.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - -* // Second key: time 20s, value -3600 -* // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. -* lTime.SetSecondDouble(20.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - -* // Done adding keys. -* lAnimCurve->KeyModifyEnd(); -* \endcode -* -*/ -class FBXSDK_DLL FbxAnimCurve : public FbxAnimCurveBase -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurve, FbxAnimCurveBase); - -public: - /** - * \name Animation curve creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created animation curve belongs. - * \param pName Name of the animation curve. - * \return Newly created animation curve - */ - static FbxAnimCurve* Create(FbxScene* pContainer, const char* pName); - //@} - - /** - * \name Key management. - * - */ - //@{ - /** Resize animation curve buffer to hold a certain number of keys. - * \param pKeyCount Number of keys the animation curve will eventually hold. - */ - virtual void ResizeKeyBuffer(int pKeyCount) = 0; - - /** Call this function prior to adding, removing or editing keys of an animation curve. - * Call function FbxAnimCurve::KeyModifyEnd() after modification. - */ - virtual void KeyModifyBegin () = 0; - - /** Call this function after adding, removing or editing keys of an animation curve. - * Function FbxAnimCurve::KeyModifyBegin() must have been called prior to modify the keys. - */ - virtual void KeyModifyEnd () = 0; - - //! Remove all the keys of the animation curve and free buffer memory. - void KeyClear () override = 0; - - /** Get the number of keys. - * \return Key count. - */ - int KeyGetCount () const override = 0; - - /** Add a given key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect the interpolation type and tangents of the neighboring keys. - * If there is already a key at the given time, the key is modified and no - * new key is added. - * - * \param pTime Time of the new key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) override = 0; - - /** Add a key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect of the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, no key is added. - * - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - virtual int KeyAdd (FbxTime pTime, int* pLast = NULL) = 0; - - /** Set (or replace) key at given index with given key. - * \param pIndex Index of the key to be set or replaced. - * \param pKey New key at this index. - * \return \c true if key time is superior to previous key time - * and inferior to next key time, \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) override = 0; - - /** Remove key at given index. Other key indices are updated automatically. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - bool KeyRemove(int pIndex) override = 0 ; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return true on success. - */ - bool KeyRemove(int pStartIndex, int pEndIndex) override = 0; - - /** Insert a key at given time. - * This function should be used instead of FbxAnimCurve::KeyAdd() if the key - * is to be added in the curve and not at the end. It inserts the key in - * respect to the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, the key is modified and no - * new key is added. - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was inserted - * or already present. - * \remark Key value must be set explicitly afterwards. The - * interpolation type and tangent mode are copied from the previous key. - */ - virtual int KeyInsert ( FbxTime pTime, int* pLast = NULL ) = 0; - - /** Find key index for a given time. - * \param pTime Time of the key looked for. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Key index. The integer part of the key index gives the - * index of the closest key with a smaller time. The decimals give - * the relative position of given time compared to previous and next - * key times. Returns -1 if animation curve has no key. - * - * For example (using seconds for clarity), if there is a key at time 10s with index 5, and a key at - * time 11s with index 6, KeyFind(10.3s) would return 5.3. - */ - virtual double KeyFind (FbxTime pTime, int* pLast = NULL) = 0; - - /** Scale value of all keys. - * \param pMultValue Scale applied on key values. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValue (float pMultValue) = 0; - - /** Scale value and tangent of all keys. - * \param pMultValue Scale applied on key values and tangents. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValueAndTangent (float pMultValue) = 0; - //@} - - /** - * \name Key Manipulation - */ - - //@{ - /** General function to set key properties. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The key must have been previously created, for example using KeyAdd. - * Use FbxAnimCurve::SetTCB() in the specific case of setting a key with cubic interpolation and TCB tangent mode. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pInterpolation Key interpolation type. - * \param pTangentMode Key tangent mode (meaningful for cubic interpolation only). - * \param pData0 Value of right slope. - * \param pData1 Value of next left slope. - * \param pTangentWeightMode Weight mode, if used. - * \param pWeight0 Weight for right slope, if tangent weight mode is eWeightedRight or eWeightedAll. - * \param pWeight1 Weight for next left slope, if tangent weight mode is eWeightedNextLeft or eWeightedAll. - * \param pVelocity0 Velocity for right slope, if tangent velocity mode is eVelocityRight or eVelocityAll. - * \param pVelocity1 Velocity for next left slope, if tangent velocity mode is eVelocityNextLeft or eVelocityAll. - */ - virtual void KeySet(int pKeyIndex,FbxTime pTime, float pValue, FbxAnimCurveDef::EInterpolationType pInterpolation = FbxAnimCurveDef::eInterpolationCubic, FbxAnimCurveDef::ETangentMode pTangentMode = FbxAnimCurveDef::eTangentAuto, float pData0 = 0.0,float pData1 = 0.0,FbxAnimCurveDef::EWeightedMode pTangentWeightMode = FbxAnimCurveDef::eWeightedNone, float pWeight0 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pWeight1 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pVelocity0 = FbxAnimCurveDef::sDEFAULT_VELOCITY,float pVelocity1 = FbxAnimCurveDef::sDEFAULT_VELOCITY) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void KeySetTCB(int pKeyIndex,FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get key's interpolation type. - * \param pKeyIndex Index of the queried key. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType KeyGetInterpolation(int pKeyIndex) const = 0; - - /** Set key's interpolation type. - * \param pKeyIndex Index of the key. - * \param pInterpolation Key interpolation type. - */ - virtual void KeySetInterpolation(int pKeyIndex, FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's constant mode. - * \note This method is only relevant if the key's interpolation type is constant (eInterpolationConstant). - * Using this method on a key with an other interpolation type will return unpredictable value. - * \param pKeyIndex Index of the queried key. - * \return Key constant mode. - */ - virtual FbxAnimCurveDef::EConstantMode KeyGetConstantMode(int pKeyIndex) const = 0; - - /** Get key's tangent mode. - * \param pKeyIndex Index of the key. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - * \return Key tangent mode. - */ - virtual FbxAnimCurveDef::ETangentMode KeyGetTangentMode(int pKeyIndex, bool pIncludeOverrides = false ) const = 0; - - /** Set key's constant mode. - * This method is meaningful for constant interpolation only. - * \param pKeyIndex Index of the key. - * \param pMode Key constant mode. - */ - virtual void KeySetConstantMode(int pKeyIndex, FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Set key's tangent mode. - * This method is meaningful for cubic interpolation only. - * \param pKeyIndex Index of the key. - * \param pTangent Key tangent mode. - */ - virtual void KeySetTangentMode(int pKeyIndex, FbxAnimCurveDef::ETangentMode pTangent) = 0; - - /** Get key at given index. - * \param pIndex Index of the key on the animation curve. - * \return The key at the given index. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveKey KeyGet(int pIndex) const = 0; - - /** Get key value. - * \param pKeyIndex Index of the queried key. - * \return Key value. - */ - virtual float KeyGetValue(int pKeyIndex) const = 0; - - /** Set key value. - * \param pKeyIndex Index of the key. - * \param pValue The value to set. - */ - virtual void KeySetValue(int pKeyIndex, float pValue) = 0; - - /** Increment key value. - * \param pKeyIndex Index of the key. - * \param pValue Term added to the key value. - */ - virtual void KeyIncValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key value. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key value. - * \see FbxAnimCurve::KeyMultTangent. - */ - virtual void KeyMultValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key tangents. - * \remark When multiplying a key value, tangents must be - * multiplied to conserve the same topology. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key tangents. - */ - virtual void KeyMultTangent(int pKeyIndex, float pValue) = 0; - - /** Get key time - * \param pKeyIndex Index of the queried key. - * \return Key time (time at which this key is occurring). - */ - FbxTime KeyGetTime(int pKeyIndex) const override = 0; - - /** Set key time. - * \param pKeyIndex Index of the key. - * \param pTime Key time (time at which this key is occurring). - * \remark The new key time might modify the key index. - */ - void KeySetTime(int pKeyIndex, FbxTime pTime) override = 0; - - /** Set or unset the tangent break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the key. - * \param pVal Break flag (\c true or \c false). - */ - virtual void KeySetBreak(int pKeyIndex, bool pVal) = 0; - - /** Get if the tangent has a break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the queried key. - * \return Break flag (\c true or \c false). - */ - virtual bool KeyGetBreak(int pKeyIndex) const = 0; - //@} - - /** - * \name Key Tangent Management - */ - //@{ - /** Get the left derivative of a key. - * \param pIndex Index of the queried key. - * \return Left derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftDerivative(int pIndex) = 0; - - /** Set the left derivative of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetLeftDerivative(int pIndex, float pValue) = 0; - - /** Get the left auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Left auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Left derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetLeftDerivativeInfo(int pIndex) = 0; - - /** Set the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetLeftDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the right derivative of a key. - * \param pIndex Index of the key. - * \return Right derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightDerivative(int pIndex) = 0; - - /** Set the right derivative of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetRightDerivative(int pIndex, float pValue) = 0; - - /** Get the right auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Right auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Right derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetRightDerivativeInfo(int pIndex) = 0; - - /** Set the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetRightDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the left tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is left weighted (Weight mode is eWEIGHT_WEIGHTED_RIGHT or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsLeftTangentWeighted(int pIndex) const = 0; - - /** Get the right tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is right weighted (Weight mode is eWeightedRight or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsRightTangentWeighted(int pIndex) const = 0; - - /** Get the weight value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Left tangent weight, or eDEFAULT_WEIGHT (0.333...) if left tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetLeftTangentWeight(int pIndex) const = 0; - - /** Get the weight value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Right tangent weight, or eDEFAULT_WEIGHT (0.333...) if right tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetRightTangentWeight(int pIndex) const = 0; - - /** Set the left tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the left tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetLeftTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Set the right tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the right tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetRightTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Get the velocity value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the left tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetLeftTangentVelocity( int pIndex) const = 0; - - /** Get the velocity value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the right tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetRightTangentVelocity( int pIndex) const = 0; - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate animation curve value at a given time. - * \param pTime Time of evaluation. - * If time falls between two keys, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode if relevant. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Animation curve value on given time, or animation curve's default value if animation curve - * has no key. - * \remarks This function takes extrapolation into account. - */ - float Evaluate (FbxTime pTime, int* pLast = NULL) override = 0; - - /** Evaluate animation curve value at a given key index. - * \param pIndex Any value from 0 to FbxAnimCurve::KeyGetCount() - 1. - * \return Animation curve value, or default value if animation curve - * has no key. - * - * \remarks If key index is not an integer value, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode, if relevant. - * This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - float EvaluateIndex( double pIndex) override = 0; - - /** Evaluate function left derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Left derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateLeftDerivative (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate function right derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Right derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateRightDerivative (FbxTime pTime, int* pLast = NULL) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation animation curve. - * This function retrieves the animation curve's time span. - * \param pTimeInterval Reference to receive start and end time. - * \return \c true on success, \c false otherwise. - */ - bool GetTimeInterval(FbxTimeSpan& pTimeInterval) override = 0; - - /** Copy animation curve content into current animation curve. - * \param pSource Animation curve to be copied (which will not be modified). - * \param pWithKeys If \c true, clear keys in current animation curve and copy - * keys from source animation curve. If \c false, keys in current animation curve - * are left as is. - */ - virtual void CopyFrom(FbxAnimCurve& pSource, bool pWithKeys = true) = 0; - - /** Retrieve the value of the parent curve node channel. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \return The value of the parent curve node channel of this curve. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual float GetValue(int pCurveNodeIndex=0) = 0; - - /** Set the value to the parent curve node channel. - * \param pValue The value to set to the parent curve node channel of this curve. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual void SetValue(float pValue, int pCurveNodeIndex=0) = 0; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual KFCurve* GetKFCurve() = 0; - bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) override = 0; - bool Retrieve(FbxIO* pFileObject) override = 0; - void ExtrapolationSyncCallback() override = 0; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h deleted file mode 100644 index b85b70c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvebase.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ - -#include - -#include - -#include - -class FbxIO; - -/** This is the base class interface for the FBX animation curve keys. - * \nosubgrouping - * - * \remarks For an example of implemented class, please see FbxAnimCurveKey. - */ -class FBXSDK_DLL FbxAnimCurveKeyBase -{ -public: - /** Data member representing time value. - */ - FbxTime mTime; - - /** Constructor. - */ - FbxAnimCurveKeyBase() - { - mTime = FBXSDK_TIME_ZERO; - } - - /** Destructor. - */ - virtual ~FbxAnimCurveKeyBase() {}; - - /** Get time value. - * \return Time value. - */ - virtual FbxTime GetTime() const - { - return mTime; - } - - /** Set time value. - * \param pTime Time value to set. - */ - virtual void SetTime(const FbxTime& pTime) { - mTime = pTime; - } -}; - -/** This is the base class for implementing animation curves. - * \nosubgrouping - * It is a pure virtual class that defines the general interface to animation - * key management and manipulation. - * - * \see FbxAnimCurve for fully implemented class. - */ -class FBXSDK_DLL FbxAnimCurveBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurveBase, FbxObject); - -public: - /** - * \name Key management. - * - */ - //@{ - //! Remove all the keys and free buffer memory. - virtual void KeyClear () = 0; - - //! Get the number of keys. - virtual int KeyGetCount () const = 0; - - /** Add a key at given time. - * \param pTime Time to add the key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - */ - virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0; - - /** Set key at given index. - * \param pIndex Index of where the key should be set. - * \param pKey The key to set. - * \return \c true if key time is superior to previous key and inferior - * to next key, \c false otherwise. - * \remarks Result is undetermined if function curve has no key or index - * is out of bounds. - */ - virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0; - - /** Remove key at given index. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pIndex) = 0; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0; - - //@} - - /** - * \name Key Time Manipulation - */ - //@{ - /** Get key time. - * \param pKeyIndex Key index. - * \return Key time (time at which this key is occurring). - */ - virtual FbxTime KeyGetTime(int /*pKeyIndex*/) const { return FBXSDK_TIME_INFINITE; } - - /** Set key time. - * \param pKeyIndex Key index. - * \param pTime Key time (time at which this key is occurring). - */ - virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0; - - //@} - - /** - * \name Extrapolation - * Extrapolation defines the function curve value before and after the keys. - * Pre-extrapolation defines the function curve value before first key. - * Post-extrapolation defines the function curve value after last key. - *
  • CONSTANT means a constant value matching the first/last key. - *
  • REPETITION means the entire function curve is looped. - *
  • MIRROR_REPETITION means the entire function curve is looped once backward, once forward and so on. - *
  • KEEP_SLOPE means a linear function with a slope matching the first/last key. - *
  • RELATIVE_REPETITION means entire function curve is looped and one loop is relative to the last loop in value.
- */ - //@{ - enum EExtrapolationType - { - eConstant = 1, - eRepetition = 2, - eMirrorRepetition = 3, - eKeepSlope = 4, - eRelativeRepetition = 5 - } ; - - /** Set pre-extrapolation mode. - * \param pExtrapolation The pre-extrapolation mode to set. - */ - void SetPreExtrapolation(EExtrapolationType pExtrapolation); - - /** Get pre-extrapolation mode. - * \return The current pre-extrapolation mode. - */ - EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; } - - /** Set pre-extrapolation count. - * \param pCount Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPreExtrapolationCount(unsigned long pCount); - - /** Get pre-extrapolation count. - * \return Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; } - - /** Set post-extrapolation mode. - * \param pExtrapolation The post-extrapolation mode to set. - */ - void SetPostExtrapolation(EExtrapolationType pExtrapolation); - - /** Get post-extrapolation mode. - * \return The current post-extrapolation mode. - */ - EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; } - - /** Set post-extrapolation count. - * \param pCount Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPostExtrapolationCount(unsigned long pCount); - - /** Get post-extrapolation count. - * \return Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; } - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate curve value at a given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Evaluated curve value. - * \remarks This function take extrapolation into account. - */ - virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate curve value at the given key index. - * \param pIndex Any value from 0 to KeyGetCount() - 1. - * If this index falls between keys, the curve value will - * be interpolated based on the surrounding keys. - * \return Evaluated curve value. - */ - virtual float EvaluateIndex( double pIndex) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation curve. - * This function retrieves the Curve's time span. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - */ - virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0; - virtual bool Retrieve(FbxIO* pFileObject) = 0; - virtual void ExtrapolationSyncCallback() = 0; - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - EExtrapolationType mPreExtrapolation; - unsigned long mPreExtrapolationCount; - EExtrapolationType mPostExtrapolation; - unsigned long mPostExtrapolationCount; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h deleted file mode 100644 index fdb8239..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h +++ /dev/null @@ -1,1547 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvefilters.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ - -#include - -#include -#include -#include -#include -#include // for FbxLimits - -#include - -class FbxObject; -class FbxAnimStack; -class FbxRotationOrder; - -/** Base class for animation curve filters. -* Animation curves can be modified through filters. The filters act on -* the curve keys and values. They can move, add or remove keys, -* modify key values and key tangents, depending on the desired action -* of the filter. -* Some simple examples are: -* \li A scale filter, that would multiply all key -* values of a curve, and the curve default value, by a given scale. -* \li A constant key reducer filter, that would clean a curve by removing -* redundant keys that all have the same value. -* -* Filters can act on a single animation curve (FbxAnimCurve), but some -* filters need to work on many animation curves at the same time. For -* this reason, the input to a filter can be an animation stack (FbxAnimStack), an object (FbxObject) -* with animated properties, an animation curve node (FbxAnimCurveNode), or an array of animation -* curves (FbxAnimCurve). -* For example, an unroll filter acts on 3 Euler rotation curves (X, Y and Z) at the same time. -* -* A filter has a start time (that can be as low as TC_MINFINITY) and a stop time (that can be as high as TC_INFINITY). -* The filter is only applied to the parts of the animation curves that are between the start and stop time. -* -* The following are two code samples about how to use filter. -* Code sample to use sync filter: -* \code -* FbxAnimCurve* lWorkCurves[3]; //Put some keys in the lWorkCurves and they sync them up. -* FbxAnimCurveFilterKeySync lSyncFilter; -* FbxTime pStart, pStop; //Given start and stop time. -* lSyncFilter.SetStartTime( pStart ); -* lSyncFilter.SetStopTime ( pStop ); -* if( lSyncFilter.NeedApply( lWorkCurves, 3 ) ) -* { -* lSyncFilter.Apply( lWorkCurves, 3 ); -* } -* \endcode -* -* Code sample to use unroll filter: -* \code -* FbxAnimCurveNode* pCurveNode; //An Euler rotation animation curve node. -* FbxAnimCurveFilterUnroll lUnrollFilter; -* lUnrollFilter.SetForceAutoTangents(true); -* lUnrollFilter.Apply(*pCurveNode); -* \endcode -* -* \nosubgrouping -*/ -class FBXSDK_DLL FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilter(); - - //! Destructor. - virtual ~FbxAnimCurveFilter() {}; - - /** - * \name Member functions - */ - //@{ - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const {return NULL;} - - /** Get the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStartTime() {return mStart;} - - /** Set the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \param pTime The time to be set. - */ - void SetStartTime(FbxTime& pTime) { mStart = pTime; } - - /** Get the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStopTime() {return mStop;} - - /** Set the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \param pTime The time to be set. - */ - void SetStopTime(FbxTime& pTime) { mStop = pTime; } - - /** Get the index of start key on the given curve. This is the index of the first key - * after (or on) the filter's start time. - * \param pCurve Curve on which we want to retrieve the start key. - * \return Index of the start key. - */ - int GetStartKey(FbxAnimCurve& pCurve) const; - - /** Get the index of stop key on the given curve. This is the index of the last key - * before (or on) the filter's stop time. - * \param pCurve Curve on which we want to retrieve the stop key. - * \return Index of the stop key. - */ - int GetStopKey(FbxAnimCurve& pCurve) const; - - /** Check if any curve on the animation stack needs an application of the filter. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if all the animated properties of the object need an application of the filter. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls NeedApply(FbxAnimCurve**, int) - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Check if an animation curve need an application of the filter. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Apply filter to all the curves stored in the animation stack. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter to all the animated properties of the object. - * \param pObj Object containing the animated properties to which the filter is applied. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on an array of animation curves. - * \param pCurve Array of curves to which the filter is applied. - * \param pCount Number of curves in the array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL) = 0; - - /** Reset the filter to its default parameters. - */ - virtual void Reset() - { - mStart= FBXSDK_TIME_MINUS_INFINITE; - mStop = FBXSDK_TIME_INFINITE; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static bool GetContinuousOffset(FbxRotationOrder& pOrder, FbxVector4& pOffset, FbxVector4& pNew, FbxVector4& pOld); - -protected: - void GetKFCurvesFromAnimCurve(FbxAnimCurve** pSrc, int pSrcCount, KFCurve** pDst, int& pDstCount); - - // Called for progress bar update, indicating what portion of work is done. - virtual void UpdateProgressInformation(FbxTime /*pStart*/, FbxTime /*pStop*/) {}; - - // Time span for applying the filter. - FbxTime mStart, mStop; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Constant key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterConstantKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterConstantKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterConstantKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the current derivative tolerance. - * \return The value of the current derivative tolerance. - */ - double GetDerivativeTolerance() const; - - /** Set the derivative tolerance. - * \param pValue Value derivative tolerance. - */ - void SetDerivativeTolerance(double pValue); - - /** Get the tolerance value. - * \return The tolerance value. - */ - double GetValueTolerance() const; - - /** Set the tolerance value. - * \param pValue Tolerance value. - */ - void SetValueTolerance(double pValue); - - /** Get the state of the KeepFirstAndLastKeys flag. - * \return \c true if the filter keeps the first and last keys. - */ - bool GetKeepFirstAndLastKeys() const; - - /** Set the state of the KeepFirstAndLastKeys flag. - * \param pKeepFirstAndLastKeys Set to \c true if you want the filter to keep the first and last keys. - */ - void SetKeepFirstAndLastKeys( bool pKeepFirstAndLastKeys ); - - /** Get the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \return \c true if the filter keeps the first key when all keys are constant. - */ - bool GetKeepOneKey() const; - - /** Set the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \param pKeepOneKey Set to \c true if you want the filter to keep the first key when all keys are constant. - */ - void SetKeepOneKey( bool pKeepOneKey ); - - /** Tell the filter to keep CUBIC curve keys which are not pure AUTO. - * \param pKeep KeepNotPureAutoKeys flag. - */ - void SetKeepNotPureAutoKeys(bool pKeep); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // - // If ValueTolerance is default, we use the thresholds here, otherwise - // it is the ValueTolerance that is used. (Mainly for backward compatibility) - // - void SetTranslationThreshold ( double pTranslationThreshold ); - void SetRotationThreshold ( double pRotationThreshold ); - void SetScalingThreshold ( double pScalingThreshold ); - void SetDefaultThreshold ( double pDefaultThreshold ); - - void SetModes(bool pExporting, FbxIOSettings& pIOS); - -private: - double mDerTol; - double mValTol; - - double mTranslationThreshold; - double mRotationThreshold; - double mScalingThreshold; - double mDefaultThreshold; - - bool mKeepFirstAndLastKeys; - bool mKeepOneKey; - bool mKeepNotPureAutoKeys; - - bool IsKeyConstant(FbxAnimCurve& pCurve, int pIndex, int pFirstIndex, int pLastIndex, double pMinValue, double pMaxValue, bool pOnlyCheckAutoKeys); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**This filter tries to compensate parent's scale to children's scale. - * This filter is used to convert scale animation curves of nodes whose transform inherit type are eInheritRrs. - * In the eInheritRrs mode, child objects do not inherit scaling from parent objects at all. - * When a parent object is scaled, the child does not scale, but translates in order to keep proportional distance between models. - * If you want to change the inherit type of certain nodes from eInheritRrs to eInheritRrSs, - * you may call this filter to compensate scale. - */ -class FBXSDK_DLL FbxAnimCurveFilterScaleCompensate : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleCompensate(); - //! Return name of the filter. - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /**Compensate parent's scale to children's scale. - * \param pCurve In pCurve, index 0 is the curve to be filtered. index 1 is the parent curve. - * \param pCount Need to be 2. - * \param pIOS IO setting object. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter will re-sample the animation curves. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxIOSettings& pIOS, FbxStatus* pStatus = NULL); - /** Always fail because this filter needs 2 curves. */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL); -}; - -/**GimbleKiller filter. - *\nosubgrouping - * This filter try to minimize gimble locks on rotation curves. - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks This filter has been superseded by the Unroll filter. It is strongly advised to use - * the latter. - */ -class FBXSDK_DLL FbxAnimCurveFilterGimbleKiller : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterGimbleKiller(); - - //! Destructor. - virtual ~FbxAnimCurveFilterGimbleKiller(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense. - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus = NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Return \c true if key sync filter is enabled. - bool GetApplyKeySyncFilter() const; - - /** Set to \c true to enable key sync filter. - * \param pFlag Key sync filter flag. - */ - void SetApplyKeySyncFilter(bool pFlag); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxRotationOrder* mRotationOrder; - bool mApplyKeySyncFilter; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Get precision. - double GetPrecision() const; - - /** Set precision. - * \param pPrecision The precision to set. - */ - void SetPrecision(double pPrecision); - - //! Return \c true key sync is applied at the end. - bool GetKeySync() const; - - /** Set to \c true to apply key sync at the end. - * \param pKeySync Key sync flag. - */ - void SetKeySync(bool pKeySync); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool KeyReducer(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, FbxTime pStart, FbxTime pStop); - bool Subdivise(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight); - double FindMaxError(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight, int& pSplit); - - // User parameters. - double mPrecision; - int mProgressCurrentRecurseLevel; - bool mKeySync; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key sync filter. - * \nosubgrouping - * Filter to synchronize the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterKeySync : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeySync(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeySync() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pAnimStack, pStatus); } - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pObj, pAnimStack, pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** One single curve cannot be sync'ed. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true. - * \remarks Has no effect since there is only one curve. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return true; } -}; - - -/** Re-sampling filter. - * \nosubgrouping - * Filter to re-sample animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterResample : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterResample(); - - //! Destructor. - virtual ~FbxAnimCurveFilterResample() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply the filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Set if the keys are on frame. - * \param pKeysOnFrame value if keys are set on frame multiples. - */ - void SetKeysOnFrame(bool pKeysOnFrame); - - /** Get if the keys are on frame. - * \return Value if keys are on frame multiples. - */ - bool GetKeysOnFrame() const; - - /** Get the re-sampling period - * \return The re-sampling period. - */ - FbxTime GetPeriodTime() const; - - /** Set the re-sampling period - * \param pPeriod The re-sampling period to be set. - */ - void SetPeriodTime(FbxTime &pPeriod); - - - /**Get the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \return \c true if the intelligent mode is on, \c false otherwise. - * \remarks If intelligent mode is on, interpolation type and tangent mode of each created curve key - * are set equal to the interpolation type and tangent mode of the closest curve key encountered. - * If intelligent mode is off, the interpolation type of each created curve key - * will always be set to CUBIC, and tangent mode will always be set to AUTO. - */ - bool GetIntelligentMode() const; - - /** Set the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \param pIntelligent \c true, set interpolation type and tangent mode of each created curve key equal to - * the interpolation type and tangent mode of the closest curve key encountered. - * \c false, always set the interpolation type of each created curve key to CUBIC, - * and always set the tangent mode to AUTO. - */ - void SetIntelligentMode( bool pIntelligent ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool mKeysOnFrame; - FbxTime mPeriod; - bool mIntelligent; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScale : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScale(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScale() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. Instead of scaling by a constant float value, we will scale by using another anim curve - * Use a single channel curve only to scale - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScaleByCurve : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleByCurve(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScaleByCurve() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. (null curve) - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - FbxAnimCurve* GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(FbxAnimCurve* pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAnimCurve* mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**Time shift and scale filter. - *\nosubgrouping - * Filter to shift key times and scale key values on animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterTSS : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterTSS(); - - //! Destructor. - virtual ~FbxAnimCurveFilterTSS() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pAnimStack); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pObj, pAnimStack); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurveNode); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurve, pCount); } - //@} - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the time shift value. - * \return The time value used for the shift. - */ - FbxTime GetShift() const; - - /** Set the time shift value. - * \param pShift The time value used for the shift. - */ - void SetShift(FbxTime& pShift); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mShift; - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Unroll filter. - *\nosubgrouping - * Filter to apply continuous rotation values to animation curves. Due to Euler rotation - * properties, when a rotation angle cross over the 180 degree value, it becomes -179. This - * filter tries to keep a continuous rotation effectively by producing increasing values, to - * actually become 181 degrees, etc... - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks By default, this filter does not affect the tangent values of the modified keys. - * This means that, for CUBIC interpolation curves containing keys with USER or BREAK - * tangents, the unrolled curves will correctly match the original rotation exactly on - * the curve keys but not in-between them. The filter can be configured to automatically - * convert the USER and BREAK tangents to AUTO tangents by setting the ForceAutoTangents flag. - * Using the AUTO tangents mode can result in a more consistent interpolation between - * the curve keys. - */ -class FBXSDK_DLL FbxAnimCurveFilterUnroll : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterUnroll(); - - //! Destructor. - virtual ~FbxAnimCurveFilterUnroll() {}; - - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve needs an application of the filter. - * \param pCurve Array of curves to test if they need an application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter, - * \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter expects a Euler rotation curve node with three curves. - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with 3 interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the unroll quality tolerance. - * \return The current unroll quality tolerance. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - double GetQualityTolerance() const; - - /** Set the unroll quality tolerance. - * \param pQualityTolerance The unroll quality tolerance to set. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - void SetQualityTolerance(double pQualityTolerance); - - /** Get if the test path is enabled. - * \return \c true if test for path is enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - bool GetTestForPath() const; - - /** Set if the test path is enabled. - * \param pTestForPath Value to set if test for path is to be enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - void SetTestForPath(bool pTestForPath); - - /** Get the current state of the ForceAutoTangents flag. - * \return \c true if forcing AUTO tangents is enabled. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - bool GetForceAutoTangents() const; - - /** Set the new state of the ForceAutoTangents flag. - * \param pForceAutoTangents New value of the flag. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - void SetForceAutoTangents(bool pForceAutoTangents); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetRotationOrder(FbxEuler::EOrder pOrder); - -private: - double InterpolationQualityFactor(FbxVector4& lV1, FbxVector4& lV2); - - double mQualityTolerance; - bool mTestForPath; - bool mForceAutoTangents; - FbxEuler::EOrder mRotationOrder; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Matrix conversion filter. - * \nosubgrouping - * \remarks The current implementation of this filter expects to process 9 curves. If the - * ApplyUnroll flag is enabled, set with a call to SetApplyUnroll(), the - * internal unroll filter will automatically be configured to convert USER and - * BREAK tangents to AUTO (refer to the FbxAnimCurveFilterUnroll documentation). - */ -class FBXSDK_DLL FbxAnimCurveFilterMatrixConverter : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterMatrixConverter(); - - //! Destructor. - virtual ~FbxAnimCurveFilterMatrixConverter(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurve, pCount,pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve nodes need an application of the filter. - * \param pCurveNode Curves to test if they need an application of the filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve nodes need an application of the filter and - * \c false if they don't or an incompatible configuration is detected. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool NeedApply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of the animation curve nodes. - * \param pCurveNode Curve nodes to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool Apply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks \e pCount must be equal to 9 - * \remarks Because this method only manipulates FbxAnimCurve objects, it cannot set/get - * the channels value. If the calling application wishes to use this flavor of the - * Apply() method, it is strongly suggested to use the method: - * FbxAnimCurveFilterMatrixConverter::Apply(FbxAnimCurve** pCurve, double& pVals[9]); - * The Apply(FbxAnimCurveNode*) method is not affected by this limitation since - * the channel values can be accessed via the animation curve node. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pVals Array of channel values (same size as \e pCurve). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurve contains exactly 9 curves. - * \remarks \e pVals must be correctly initialized with the channels values and, if the - * method calculates new values, they will be returned in this array. - * \remarks The curves are assumed to represent: Translation X,Y and Z, Rotation X,Y and Z and - * Scaling X,Y and Z in this order. - */ - bool Apply(FbxAnimCurve** pCurve, double* pVals, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** \enum EMatrixIndex Matrix index type - * - \e ePreGlobal - * - \e ePreTranslate - * - \e ePostTranslate - * - \e ePreRotate - * - \e ePreScale - * - \e ePostGlobal - * - \e eScaleOffset - * - \e eInactivePre - * - \e eInactivePost - * - \e eRotationPivot - * - \e eScalingPivot - * - \e eMatrixIndexCount - */ - enum EMatrixIndex - { - ePreGlobal, - ePreTranslate, - ePostTranslate, - ePreRotate, - ePostRotate, - ePreScale, - ePostScale, - ePostGlobal, - eScaleOffset, - eInactivePre, - eInactivePost, - eRotationPivot, - eScalingPivot, - eMatrixIndexCount - }; - - /** Get the Translation Rotation Scaling source matrix - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the source matrix. - */ - void GetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling source matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the source matrix. - */ - void SetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the destination matrix. - */ - void GetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the destination matrix. - */ - void SetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the re-sampling period. - * \return the re-sampling period. - */ - FbxTime GetResamplingPeriod () const; - - /** Set the re-sampling period. - * \param pResamplingPeriod The re-sampling period to be set. - */ - void SetResamplingPeriod (FbxTime& pResamplingPeriod); - - /** Get the current state of the flag which determines if the last key should be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \return \c true if last key is set exactly at end time, \c false otherwise. - */ - bool GetGenerateLastKeyExactlyAtEndTime() const; - - /** Set the flag to determine if the last key will be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \param pFlag Set to \c true to generate the last key exactly at the end time, \c false otherwise. - */ - void SetGenerateLastKeyExactlyAtEndTime(bool pFlag); - - /** Check if re-sampling is on frame rate multiple. - * \return \c true if re-sampling is on a frame rate multiple. - */ - bool GetResamplingOnFrameRateMultiple() const; - - /** Set the re-sample on a frame rate multiple. - * \param pFlag The value to be set. - * \remarks It might be necessary that the starting time of the converted - * animation starts at an multiple of frame period starting from time 0. - * Most softwares play their animation at a definite frame rate, starting - * from time 0. As re-sampling occurs when we can't guarantee interpolation, - * keys must match with the moment when the curve is evaluated. - */ - void SetResamplingOnFrameRateMultiple(bool pFlag); - - /** Get the current state of the ApplyUnroll flag. - * \return \c true if the internal unroll filter is applied, \c false otherwise. - * \remarks Enable the internal unroll filter to get continuous rotation animation curves. - * \see FbxAnimCurveFilterUnroll. - */ - bool GetApplyUnroll() const; - - /** Set the state of the ApplyUnroll flag. - * \param pFlag Set to \c true to apply an unroll filter to the rotation curves internally, - * \ set to \c false otherwise. - */ - void SetApplyUnroll(bool pFlag); - - /** Get the current state of the flag that determines if constant key reducer is used or not. - * \return \c true if constant key reducer is applied, \c false otherwise. - */ - bool GetApplyConstantKeyReducer() const; - - /** Set the state of the flag that determines if constant key reducer is used or not. - * \param pFlag Set to \c true to apply the constant key reducer, - * \ Set to \c false otherwise. - */ - void SetApplyConstantKeyReducer(bool pFlag); - - /** Get the current state of the flag that determines if the translation data should be re-sampled or not. - * \return \c true if translation data is re-sampled upon conversion, \c false otherwise. - * \remarks If this flag is \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - bool GetResampleTranslation() const; - - /** Set the state of the flag that determines if the translation data should be re-sampled or not. - * \param pFlag Set to \c true to re-sample the translation data, set to \c false otherwise. - * \remarks If this flag is set to \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - void SetResampleTranslation(bool pFlag); - - /** Set the rotation order of the source matrix. - * \param pOrder The rotation order to be set. - */ - void SetSrcRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the rotation order of the destination matrix. - * \param pOrder The rotation order to be set. - */ - void SetDestRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \param pVal Set to \c true to force usage of the filter, set to \c false otherwise. - */ - void SetForceApply(bool pVal); - - /** Get the current state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \return \c true to force usage of the filter, \c false otherwise. - */ - bool GetForceApply() const; - - /** Set the Translation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetTranslationLimits(FbxLimits &limit ); - - /** Set the rotation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetRotationLimits(FbxLimits &limit ); - - /** Set the scaling limits to be applied during conversion. Only active limits are applied. - * \param limit The scaling limit to be set. - */ - void SetScalingLimits(FbxLimits &limit ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - // Nicer than referring to 0, 1, 2... - enum EAxisIndex {eX, eY, eZ, eAxisCount}; - - // Convert parameter cell. - class Cell; - - bool MatricesEquivalence(FbxAMatrix pMatArrayA [eMatrixIndexCount], FbxAMatrix pMatArrayB [eMatrixIndexCount]) const; - - bool DoConvert(FbxAnimCurve** pCurve, - double pT[eAxisCount], - double pR[eAxisCount], - double pS[eAxisCount], - FbxStatus* pStatus); - - void FindTimeInterval - ( - FbxTime& pStart, - FbxTime& pEnd, - FbxAnimCurve* pTFCurve [eAxisCount], - FbxAnimCurve* pRFCurve [eAxisCount], - FbxAnimCurve* pSFCurve [eAxisCount] - ); - - void ComputeTotalMatrix - ( - FbxAMatrix& pGlobal, - Cell& pCell, - FbxAMatrix& pTranslate, - FbxAMatrix& pRotate, - FbxAMatrix& pScale - ); - - void ExtractTransforms - ( - FbxVector4& pScaleVector, - FbxVector4& pRotateVector, - FbxVector4& pTranslateVector, - FbxAMatrix& pGlobal, - Cell& pDest - ); - - void SetDestFCurve(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxTime pTime, - FbxVector4 pVector, - FbxAnimCurveDef::EInterpolationType pInterpMode[eAxisCount], - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount]); - - void FillInterpAndTangeant(FbxTime& pTime, - FbxAnimCurve* pSourceCurve[eAxisCount], - FbxAnimCurveDef::EInterpolationType* pInterp, - FbxAnimCurveDef::ETangentMode* pTangeant); - - void SetDestFCurveTangeant(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount], - FbxVector4 pKeyValue, - FbxVector4 pNextKeyValue); - - Cell* mSource; - Cell* mDest; - - FbxTime mResamplingPeriod; - bool mResamplingOnFrameRateMultiple; - - bool mApplyUnroll; - bool mApplyConstantKeyReducer; - - // PP : So that the concatenation of matrices takes into account the rotation order - FbxRotationOrder* mSrcRotationOrder; - FbxRotationOrder* mDestRotationOrder; - - // Set last key exactly at end time or a frame period later. - bool mGenerateLastKeyExactlyAtEndTime; - - // Translation re-sampling flag. - bool mResampleTranslation; - - // Force Apply - bool mForceApply; - - // Limits - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - - // internal usage - FbxAnimCurveNode* mRotationCurveNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h deleted file mode 100644 index 0c1ad2b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvenode.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ - -#include - -#include - -#include - -//Standard curve node names -#define FBXSDK_CURVENODE_TRANSFORM "Transform" -#define FBXSDK_CURVENODE_TRANSLATION "T" -#define FBXSDK_CURVENODE_ROTATION "R" -#define FBXSDK_CURVENODE_SCALING "S" -#define FBXSDK_CURVENODE_COMPONENT_X "X" -#define FBXSDK_CURVENODE_COMPONENT_Y "Y" -#define FBXSDK_CURVENODE_COMPONENT_Z "Z" -#define FBXSDK_CURVENODE_COLOR "Color" -#define FBXSDK_CURVENODE_COLOR_RED FBXSDK_CURVENODE_COMPONENT_X -#define FBXSDK_CURVENODE_COLOR_GREEN FBXSDK_CURVENODE_COMPONENT_Y -#define FBXSDK_CURVENODE_COLOR_BLUE FBXSDK_CURVENODE_COMPONENT_Z - -class FbxAnimStack; -class FbxAnimCurve; -class FbxMultiMap; -class KFCurveNode; - -/** This class is an composite of animation curves and is called as animation curve node. - * \nosubgrouping - * Animation curve node is used as the connection point for animation curves and other animation curve nodes - * associated to a property. FbxAnimCurveNode can be connected to other FbxAnimCurveNode, - * in this case, the destination animation curve node may be considered as "composite", \ref IsComposite(). - * remarks When created, the FbxAnimCurveNode has no valid channels unless it is created using the function CreateTypedCurveNode(). - * This function will add all the required channels to correctly match the number of values of the property. - * For instance, when CreateTypedCurveNode(pNode.LclTranslation, pScene) is called, the resulting - * FbxAnimCurveNode will automatically have 3 channels corresponding to the X,Y and Z components of the LclTranslation property. - * You can add and remove channels dynamically but can never remove the channels that have been added by the call to CreateTypedCurveNode(). - * - * However, the FBX SDK animation system's default implementation is to consider only the first curve connected to - * the channel. Therefore, if the caller connects multiple animation curves to the same channel, then it becomes - * the caller's responsibility to handle and manipulate these extra curves in a meaningful manner. - */ -class FBXSDK_DLL FbxAnimCurveNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxAnimCurveNode, FbxObject); - -public: - /** - * \name Utility functions. - * - */ - //@{ - /** Check if the animation curve node contains any animation key. - * \param pRecurse \c true to descend to the children if the animation curve node is composite. - * \return \c true if at least one animation curve that contains one or more animation keys is found, - * \c false otherwise. - * \remarks This method only considers the first animation curve connected to each channel. - * To check multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool IsAnimated(bool pRecurse=false) const; - - /** Find out start and end time of the animation. - * This function retrieves the including time span for all animation curves of this animation curve node. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - * \remarks \c false is also returned if this animation curve node has no animation. - * \remarks This method only considers the first animation curve connected to each channel. - * To find time interval of multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool GetAnimationInterval(FbxTimeSpan& pTimeInterval) const; - - /** Test this object to see if it is a composite FbxAnimCurveNode or a "leaf". - * A composite FbxAnimCurveNode is a FbxAnimCurveNode whose all source connections are FbxAnimCurveNode - * and its property channels is totally empty. It is just a container to take other FbxAnimCurveNode. - * \return \c true if this object is a composite, \c false otherwise. - */ - bool IsComposite() const; - - /** Recursively look for the FbxAnimCurveNode matching the passed named argument. - * \param pName Name of the FbxAnimCurveNode we are looking for. - * \return The found anim curve node or NULL. - * \remarks If pName is an empty string, this function automatically return NULL. - */ - FbxAnimCurveNode* Find(const char* pName); - - /** Create a FbxAnimCurveNode compatible with the specified property data type. - * \param pProperty The property that needs a FbxAnimCurveNode. - * \param pScene The scene the created FbxAnimCurveNode will belong to. - * \return The pointer to the newly created FbxAnimCurveNode. Returns NULL if an error occurred. - * \remarks This function does not connect the newly created FbxAnimCurveNode to the property. - * \remarks This function detects FbxDouble3, FbxDouble4 and FbxDouble4x4 properties DataTypes and - * automatically adds the required channels properties. Any other DataType is not - * specifically processed and the channels properties are left empty and need to be filled - * using the AddChannel() function. - */ - static FbxAnimCurveNode* CreateTypedCurveNode(FbxProperty& pProperty, FbxScene* pScene); - - /** Get the total number of property channels defined in this animation curve node. - * For composite animation curve nodes, since they do not contain any channels, this function will always return 0. - * \return The number of property channels. - */ - unsigned int GetChannelsCount() const; - - /** Get the index of the named channel. - * \param pChannelName Name of the channel for which we want the index. - * \return the index of the named channel or -1 if no channel with this name is found. - */ - int GetChannelIndex(const char* pChannelName) const; - - /** Get the name of the channel. - * \param pChannelId Index of the channel for which we want the name. - * \return the name of the indexed channel or "" if the index is invalid. - */ - FbxString GetChannelName(int pChannelId) const; - - /** Empties the property channels of this animation curve node. - * \remarks This function will remove all the channels added with the AddChannel() method - * regardless of their use and/or connections. - * But it can not remove the channels that are added by the call to CreateTypedCurveNode(). - */ - void ResetChannels(); - - /** Adds the specified channel property. - * \param pChnlName Channel name. - * \param pValue Default value of the channel. - * \return \c true if successful, \c false otherwise. - * \remarks It is an error to try to add a channel that already exists. - */ - template bool AddChannel(const char* pChnlName, T const &pValue) - { - if (!pChnlName || strlen(pChnlName)==0) return false; - FbxProperty c = GetChannel(pChnlName); - if (c.IsValid()) - { - return false; - } - - mChannels.BeginCreateOrFindProperty(); - FbxDataType dt = FbxGetDataTypeFromEnum(FbxTypeOf(pValue)); - c = FbxProperty::Create(mChannels, dt, pChnlName); - c.Set(pValue); - mChannels.EndCreateOrFindProperty(); - return true; - } - - /** Set the default value of the channel. - * \param pChnlName Channel name. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(const char* pChnlName, T pValue) - { - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) c.Set(pValue); - } - - /** Set the default value of the channel. - * \param pChnlId Channel index. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(unsigned int pChnlId, T pValue) - { - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) c.Set(pValue); - } - - /** Get the default value of the channel. - * \param pChnlName Channel name. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(const char* pChnlName, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) v = c.Get(); - return v; - } - - /** Get the default value of the channel. - * \param pChnlId Channel index. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(unsigned int pChnlId, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) v = c.Get(); - return v; - } - //@} - - /** - * \name FbxAnimCurve management. - * - */ - //@{ - /** Disconnect the animation curve from the channel. - * \param pCurve The curve to disconnect from the channel. - * \param pChnlId The channel index. - * \return \c true if the disconnection was made, \c false if an error occurred. - */ - bool DisconnectFromChannel(FbxAnimCurve* pCurve, unsigned int pChnlId); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnl The name of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one, - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, const char* pChnl, bool pInFront = false); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnlId Index of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one. - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - * \remarks The index is 0 based. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, unsigned int pChnlId, bool pInFront = false); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannel Channel identifier. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * \remarks If the pChannel identifier is left NULL, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, const char* pChannel); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannelId Channel index. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * If the pChannelId is not assigned, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, unsigned int pChannelId = 0); - - /** Get the number of FbxAnimCurve connected to the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \return The number of animation curves on the specified channel or 0 if an error occurred. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return 0. - * If the specified channel cannot be found on the FbxAnimCurveNode with name pCurveNodeName, return 0. - * \remarks If this animation curve node is composite, this function will try to search all - * children animation curve nodes recursively for the one named pCurveNodeName. - * If the pCurveNodeName is left NULL, then only look for the curves on this animation curve node - * even if it is composite. - */ - int GetCurveCount(unsigned int pChannelId, const char* pCurveNodeName = NULL); - - /** Get the FbxAnimCurve of the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pId The index of the desired anim curve (in case there is more than one). - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for (if this object is a composite). - * \return Pointer to the FbxAnimCurve that matches the criteria. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return NULL. - * If the specified channel cannot be found in the FbxAnimCurveNode with name pCurveNodeName, return NULL. - * \remarks If the pCurveNodeName is left NULL, then only search in the curves on this animation curve node - * even if it is composite. - */ - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId = 0, const char* pCurveNodeName = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - static const char* CurveNodeNameFrom(const char* pName); - static bool EvaluateChannels(FbxAnimCurveNode* pCurveNode, double* pData, unsigned int pCount, FbxTime pTime); - - void ReleaseKFCurveNode(); - void SyncChannelsWithKFCurve(); - - inline bool UseQuaternionInterpolation() {return mQuaternionInterpolation != 0;}; - bool SetQuaternionInterpolation(unsigned short pVal); - unsigned short GetQuaternionInterpolation() { return mQuaternionInterpolation; }; - void SetKFCurveNodeLayerType(FbxProperty& pProp); - KFCurveNode* GetKFCurveNode(bool pNoCreate=false); - -private: - friend class FbxAnimCurveFilterMatrixConverter; - friend class FbxAnimEvalClassic; - void Evaluate(double* pData, FbxTime pTime); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - - FbxAnimCurveNode* Find(FbxAnimCurveNode* pRoot, const FbxString& pName); - -private: - FbxProperty GetChannel(const char* pChnl); - FbxProperty GetChannel(unsigned int pChnlId); - - friend void CollectAnimFromCurveNode(void **lSrc, void *fcn, unsigned int nbCrvs, FbxAnimCurveNode *cn, FbxMultiMap* pNickToAnimCurveTimeWarpsSet, FbxMultiMap& pNickToKFCurveNodeWarpSet); - - unsigned char mNonRemovableChannels; - FbxProperty mChannels; - FbxProperty* mCurrentlyProcessed; - KFCurveNode* mFCurveNode; - bool* mOwnedKFCurve; - int mKFCurveNodeLayerType; - unsigned short mQuaternionInterpolation; - int* mDirectIndexes; - int mDirectIndexesSize; - - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId, FbxAnimCurveNode* pCurveNode); - bool ConnectToChannel(FbxProperty& p, FbxAnimCurve* pCurve, bool pInFront); - void ResetKFCurveNode(); - void SyncKFCurveValue(FbxAnimCurve* pCurve, double pVal); - void ReleaseOwnershipOfKFCurve(int pIndex); - - template FbxAnimCurve* CreateCurveGeneral(const char* pCurveNodeName, T pChannel); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -FBXSDK_DLL void GetAllAnimCurves(FbxAnimStack* pAnimStack, FbxArray& pCurves); -FBXSDK_DLL void GetAllAnimCurves(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxArray& pCurves); - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVENODE_H - diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h deleted file mode 100644 index 9e83e33..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalclassic.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ - -#include - -#include -#include -#include - -#include - -/** An evaluator implementation that behaves like the original FBX SDK (2010 and previous) evaluation system. - * - * It works by implementing the abstract class FbxAnimEvaluator, which is used as the main interface for evaluators. - * \note While this class can be instanced at any time, it is preferable to access the evaluator via the function - * FbxScene::GetEvaluator(), which will automatically return the default evaluator used in the current FBX SDK. - * This is very useful because it will allow the user to use the very same evaluator used by the FBX SDK internally. - * \see FbxAnimEvaluator, FbxScene - */ -class FBXSDK_DLL FbxAnimEvalClassic : public FbxAnimEvaluator -{ - FBXSDK_OBJECT_DECLARE(FbxAnimEvalClassic, FbxAnimEvaluator); - - enum EBlendType {eSimple, eRotation, eScaling}; - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time - * and update the mLT, mLR, mLT fields of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \remarks Values of properties LclTranslation, LclRotation, LclScaling will be updated to pResult->mLT, pResult->mLR, pResult->mLS. - * The translation, rotation and scaling limits are taken into consideration. - * Only LclTranslation, LclRotation and LclScaling are taken into accounts, no other transform, such as pivot, offset are calculated here. - */ - void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack); - - /** Calculate global transform of a node at the specified time and update the mGX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated global transform will be updated to pResult->mGX. - * ComputeGlobalTransform must be called after the call to ComputeTRSLocal, there is a dependency. - * All transforms are taken into account, including: - * Transform = Translation * RotationOffset* RotationPivot* PreRotation * LocalRotation* PostRotation * RotationPivotInverse* ScalingOffset* ScalingPivot* LocalScaling* ScalingPivotInverse - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Calculate local transform of a node at the specified time and update the mLX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated local transform will be updated to pResult->mLX. - * ComputeLocalTransform must be called after the call to ComputeGlobalTransform, there is a dependency. - * The local transform matrix is calculated in this way: ParentGlobal.Inverse() * Global, all transforms such as pre/post rotation are taken into consideration. - * To get values of properties LclTranslation, LclRotaion and LclScaling at the specified time, please use ComputeTRSLocal. - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Check if the property has corresponding animation curve node on the specified animation layer. - * \param pProperty The property to check. - * \param pAnimLayer The animation layer to check on. - * \return \c true if pProperty has corresponding animation curve node on pAnimLayer, \c false otherwise. - */ - bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time on certain animation layer. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pLT To take the calculated value of LclTranslation. - * \param pLR To take the calculated value of LclRotation. - * \param pLS To take the calculated value of LclScaling. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pBlend if \c false, only animation on current layer will be taken into account, and pResult->mCurveNode will be updated accordingly. - if \c true, the value on this animation layer will be blended with current value of pLT, pLR and pLS. - * \remarks The usual usage of this function is to call it on the first animation layer with out blending, then call it repeatedly on other - * animation layers with blending to get the blended value of pLT, pLR and pLS of all animation layers. - */ - void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, const FbxTime& pTime, FbxAnimLayer* pLayer, bool pBlend); - - /** Blend value of a property on certain animation layer to pResult. - * \param pResult The blended value of the property. - * \param pResultSize The elements number of the property value. - * \param pProperty The property to be blended. - * \param pEvalState An auxiliary parameter, the NodeEvalState to get rotation order for eRotation type blending. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pType There are three blend types, eSimple, eRotation, eScaling - * \remarks The blended value will be kept in pResult. - */ - void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, const FbxTime& pTime, FbxAnimLayer* pLayer, EBlendType pType); - - /** Blends two arrays of values in a simple weighted linear blending way. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \see BlendMode - * \remarks The blended value will be kept in pResult. - */ - void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode); - - /** Blends two arrays of values representing rotations. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pRotAccuMode The rotation accumulation mode. - * \param pRotationOrder The rotation order to be used for blending. - * \remarks The blended value will be kept in pResult. And this blend should not be used with anything other than rotations. - * \see BlendMode, RotationAccumulationMode - */ - void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder); - - /** Blends two arrays of values representing scaling transforms. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pScaleAccuMode The scaling accumulation mode. - * \remarks The blended value will be kept in pResult.And this blend should not be used with anything other than scaling transform. - * \see BlendMode, ScaleAccumulationMode. - */ - void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) override; - void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) override; - -private: - double* mPropertyValues; - int mPropertySize; - - double* mCurveNodeEvalValues; - int mCurveNodeEvalSize; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h deleted file mode 100644 index 8a048c6..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalstate.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ - -#include - -#include -#include -#include - -#include - -class FbxTransform; -class FbxNodeEvalState; -class FbxPropertyEvalState; - -typedef FbxMap FbxNodeEvalStateMap; -typedef FbxMap FbxPropertyEvalStateMap; -typedef FbxMap FbxAnimLayerCurveNodeMap; -typedef FbxMap FbxPropertyCurveNodeMap; - -/** This class hold results from animation evaluations. To clear an evaluation state for re-use, it is possible to invalidate - * or to reset it. For the same scene with the same objects, invalidating an evaluation state is the quickest way to clear - * an evaluation state object for re-use because it only zeroes all the entries. A reset will delete all the entries. - * Unless the scene changes, for performance purposes it is recommended to invalidate evaluation states instead of resetting them. - * - * \internal - * \see FbxAnimEvaluator - */ -class FBXSDK_DLL FbxAnimEvalState -{ -public: - /** Get the time associated with this evaluation state. - * \return The time associated with this evaluation state. */ - FbxTime GetTime() const; - - /** Reset an evaluation state by deleting the cache it contains. This will remove all entries in the cache. */ - void Reset(); - - /** Start a new evaluation state frame by zeroing the cache it contains, and changing its associated time. All - * node and property entries will remain in the list, but their evaluation state will not be up-to-date. - * \param pTime The time at which the evaluation state should be set after the invalidation. */ - void Begin(const FbxTime& pTime); - - /** Invalidate a node evaluation state to force update on next evaluation. - * \param pNode The node that needs to be updated on next evaluation. */ - void Flush(FbxNode* pNode); - - /** Invalidate a property evaluation state to force update on next evaluation. - * \param pProperty The property that needs to be updated on next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Get node transform evaluation result from the evaluation state. - * \param pNode The node for which the value was stored. - * \return The global or local matrix transform for the specified node. */ - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode); - - /** Get a property evaluation result from the evaluation state. - * \param pProperty The property for which the value was stored. - * \return The result value that was stored. */ - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAnimEvalState(); - virtual ~FbxAnimEvalState(); - -private: - FbxTime mTime; - FbxNodeEvalStateMap mNodeMap; - FbxPropertyEvalStateMap mPropertyMap; - FbxPropertyCurveNodeMap mPropertyCurveNodeMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! This class serves as the base class for an evaluation state element. -class FBXSDK_DLL FbxEvalState -{ -public: - FbxEvalState() : mUpToDate(false){} - bool mUpToDate; //!< If \c true, the evaluation state element is up-to-date for the current evaluation time. -}; - -//! This class hold results for node evaluation. -class FBXSDK_DLL FbxNodeEvalState : public FbxEvalState -{ -public: - FbxNodeEvalState(FbxNode* pNode); - - FbxVector4 mLT; //!< Used to hold result value of LclTranslation property from node evaluation. - FbxVector4 mLR; //!< Used to hold result value of LclRotation property from node evaluation. - FbxVector4 mLS; //!< Used to hold result value of LclScaling property from node evaluation. - FbxAMatrix mLX; //!< Used to hold result local transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - FbxAMatrix mGX; //!< Used to hold result global transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - - /** mTransform is used to hold the corresponding FbxTransform of the node. - * This FbxTransform takes all transform-related info, including pivots, offsets, pre/post rotation, rotation order, limits, etc. - * The evaluation is actually done through the utility functions of FbxTransform. */ - FbxTransform* mTransform; -}; - -//! This class hold results for property evaluation. -class FBXSDK_DLL FbxPropertyEvalState : public FbxEvalState -{ -public: - FbxPropertyEvalState(FbxProperty& pProperty); - virtual ~FbxPropertyEvalState(); - - template inline T Get() const { T lValue; mValue->Get(&lValue, FbxTypeOf(lValue)); return lValue; } - template inline bool Set(const T& pValue){ return mValue->Set(&pValue, FbxTypeOf(pValue)); } - - FbxPropertyValue* mValue; -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h deleted file mode 100644 index de34461..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h +++ /dev/null @@ -1,205 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevaluator.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ - -#include - -#include -#include -#include - -#include - -/** The principal interface for animation evaluators. The animation evaluator is used to compute node transforms -* and property values at specific times during an animation. Evaluators simplify the process of computing transform -* matrices by taking into account all of the parameters, such as pre- and post-rotations. -* This class is abstract so that SDK users can implement their own evaluator if needed. The default evaluator used -* by the FBX SDK is a FbxAnimEvalClassic. The default evaluator can be queried with the function -* FbxScene::GetEvaluator(), and can be changed using FbxScene::SetEvaluator(). -* -* When working with scene nodes, the evaluator will always return an affine transform matrix that contains the -* translation, rotation and scale of that node. -* -* When working with object properties, the evaluator will always return a structure that can contain as many components -* as the property can have. For example, an RGB color property would return a structure containing 3 channels. The -* class FbxAnimCurveNode is used as a data container to store those values, because it can handle as many channels as -* needed, even if the property is not a real curve node . -* -* Below is a typical usage of the evaluator class to retrieve the global transform matrix of each node in a scene: -* \code -* //Here we assume the user already imported a scene... -* for( int i = 0, c = MyScene->GetMemberCount(FbxNode::ClassId); i < c; ++i ) -* { -* FbxNode* CurrentNode = MyScene->GetMember(FbxNode::ClassId, i); -* FbxAMatrix& NodeGlobalTransform = MyScene->GetEvaluator()->GetNodeGlobalTransform(CurrentNode); -* } -* -* //There is an equivalent call to retrieve a node's global transform, which is exactly the same as calling Scene->GetEvaluator() : -* FbxAMatrix& NodeGlobalTransform = CurrentNode->EvaluateGlobalTransform(); -* \endcode -* -* Another typical usage of the evaluator class, but this time to retrieve the value of an animated color property on a material: -* \code -* //Assuming the user imported a scene with objects and materials... -* FbxColor Color = MyMaterial->GetDiffuseColor()->EvaluateValue(); -* \endcode -* -* \note Note that all the methods to retrieve global/local matrices as well as property values returns references. -* This is important for performance purposes, to prevent an extra memory copy. -* \see FbxScene, FbxAnimEvalClassic, FbxAnimCurveNode */ -class FBXSDK_DLL FbxAnimEvaluator : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimEvaluator, FbxObject); - -public: - /** Returns a node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. */ - FbxAMatrix& GetNodeGlobalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns a node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). */ - FbxAMatrix& GetNodeLocalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalTranslation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalRotation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalScaling(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Get a property's value at the specified time using the template type provided. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ -#if defined(__GNUC__) && (__GNUC__ < 4) - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ FbxPropertyEvalState* s = GetPropertyEvalState(pProperty, pTime, pForceEval); return s->Get(); } -#else - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ return GetPropertyEvalState(pProperty, pTime, pForceEval)->Get(); } -#endif - - /** Get a property's value at the specified time. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. Use FbxPropertyValue::Get() to retrieve the value into a pointer location of your choice. */ - FbxPropertyValue& GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Validate if the given time value is within animation stack time span range. - * \param pTime The time value to validate. - * \return The new validated time, clamped by the animation stack time span range. - * \remarks If no animation stack are found, time zero is returned. This function is not used by the evaluator itself. */ - FbxTime ValidateTime(const FbxTime& pTime); - - /** Completely reset the evaluation state cache by deleting all entries. This reset automatically happens when changing the current context. */ - void Reset(); - - /** Clears the specified node evaluation state cache, so the next time the evaluation is called for this node it get refreshed. - * \param pNode The node that needs to be re-evaluated in next evaluation. */ - void Flush(FbxNode* pNode); - - /** Clears the specified property evaluation state cache, so the next time the evaluation is called for this property it get refreshed. - * \param pProperty The property that needs to be re-evaluated in next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Compute node local TRS from global transform. Doesn't change cached state for current time. - * \param[out] pRetLT Computed local translation. - * \param[out] pRetLR Computed local rotation. - * \param[out] pRetLS Computed local scaling. - * \param pNode The transform node to evaluate. - * \param pGX Global transformation state. - * \param pTime The time used for evaluate.If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. */ - void ComputeLocalTRSFromGlobal(FbxVector4& pRetLT, FbxVector4& pRetLR, FbxVector4& pRetLS, FbxNode* pNode, FbxAMatrix& pGX, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) = 0; - virtual void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) = 0; - - FbxAnimEvalState* GetDefaultEvalState(); - FbxAnimEvalState* GetEvalState(const FbxTime& pTime); - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget, bool pForceEval); - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval); - -private: - FbxAnimEvalState* mEvalState; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Evaluate the property at the specified time using the template type provided. -* \param pProperty The property to evaluate. -* \param pTime The time used for evaluate. -* \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. -* \return The property value at the specified time converted to the template type provided, if possible. -* \remark If the property type versus the template cannot be converted, the result is unknown. */ -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval) -{ - return pProperty.GetAnimationEvaluator()-> template GetPropertyValue(pProperty, pTime, pForceEval); -} - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h deleted file mode 100644 index 1f64ad9..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_ANIMATION_LAYER_H_ -#define _FBXSDK_SCENE_ANIMATION_LAYER_H_ - -#include - -#include - -#include - -class FbxAnimCurveNode; - -/** The animation layer is a collection of animation curve nodes. Its purpose is to store - * a variable number of FbxAnimCurveNode. The class provides different states flags (bool properties), - * an animatable weight, and the blending mode flag to indicate how the data on this layer is interacting - * with the data of the other layers during the evaluation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the weight factor. - * The weight factor is the percentage of influence this layer has during - * the evaluation. - * - * Default value is \c 100.0 - */ - FbxPropertyT Weight; - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** This property stores the blend mode. - * The blend mode is used to specify how this layer influences the animation evaluation. See the - * BlendMode enumeration for the description of the modes. - * - * Default value is \c eModeAdditive - */ - FbxPropertyT BlendMode; - - /** This property stores the rotation accumulation mode. - * This option indicates how the rotation curves on this layer combine with any preceding layers - * that share the same attributes. See the RotationAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eRotationByLayer - */ - FbxPropertyT RotationAccumulationMode; - - /** This property stores the scale accumulation mode. - * This option indicates how the scale curves on this layer combine with any preceding layers - * that share the same attributes. See the ScaleAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eScaleMultiply - */ - FbxPropertyT ScaleAccumulationMode; - - //! Reset this object properties to their default value. - void Reset(); - - /** - * \name BlendMode bypass functions - * This section provides methods to bypass the current layer blend mode by data type. - * When the state is \c true, the evaluators that are processing the layer will - * need to consider that, for the given data type, the blend mode is forced to be Overwrite. - * If the state is left to its default \c false value, then the layer blend mode applies. - * \remarks This section only supports the basic types defined in the fbxtypes.h header file. - */ - //@{ - - /** Set the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \param pState The new state of the bypass flag. - * \remarks If pType is eFbxTypeCount, then pState is applied to all the data types. - */ - void SetBlendModeBypass(EFbxType pType, bool pState); - - /** Get the current state of the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \return The current state of the flag for a valid pType value and \c false in any other case. - */ - bool GetBlendModeBypass(EFbxType pType); - - //@} - - - /** Blend mode type between animation layers. - */ - enum EBlendMode - { - eBlendAdditive, //! The layer "adds" its animation to layers that precede it in the stack and affect the same attributes. - eBlendOverride, //! The layer "overrides" the animation of any layer that shares the same attributes and precedes it in the stack. - eBlendOverridePassthrough /*! mBlendModeBypass; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_LAYER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h deleted file mode 100644 index c7d3dc2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimstack.h -#ifndef _FBXSDK_SCENE_ANIMATION_STACK_H_ -#define _FBXSDK_SCENE_ANIMATION_STACK_H_ - -#include - -#include -#include - -#include - -// these symbols are defined for backward compatibility -#define FBXSDK_TAKENODE_DEFAULT_NAME "Default" -#define FBXSDK_ROOTCURVE_DEFAULT_NAME "Defaults" - -class FbxTakeInfo; -class FbxThumbnail; -class FbxAnimEvaluator; - -/** The Animation stack is a collection of animation layers. The Fbx document can have one or - * more animation stacks. Each stack can be viewed as one "take" in the previous versions of the FBX SDK. - * The "stack" terminology comes from the fact that the object contains 1 to n animation layers that - * are evaluated according to their blending modes to produce a resulting animation for a given attribute. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimStack : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimStack, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores a description string of this animation stack. - * This string can be used to display, in a human readable format, information - * relative to this animation stack object. - * Default value is "". - * \remarks The applications using the FBX SDK are not required to manipulate this information. - */ - FbxPropertyT Description; - - /** This property stores the local time span "Start" time. - * This "start" time should be seen as a time marker. Typically it would represent the whole animation - * starting time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0. - */ - FbxPropertyT LocalStart; - - /** This property stores the local time span "Stop" time. - * This "stop" time should be seen as a time marker. Typically it would represent the whole animation - * ending time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT LocalStop; - - /** This property stores the reference time span "Start" time. - * This reference start time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStart; - - /** This property stores the reference time span "Stop" time. - * This reference stop time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStop; - - /** Reset the object time spans either to their default values or from the pTakeInfo structure, if provided. - * \param pTakeInfo The take info to be used during reset. - */ - void Reset(const FbxTakeInfo* pTakeInfo = NULL); - - /** - * \name Utility functions. - * - */ - //@{ - /** Get the LocalStart and LocalStop time properties as a FbxTimeSpan. - * \return The current local time span. - */ - FbxTimeSpan GetLocalTimeSpan() const; - - /** Set the LocalStart and LocalStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new local time span. - */ - void SetLocalTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Get the ReferenceStart and ReferenceStop time properties as a FbxTimeSpan. - * \return The current reference time span. - */ - FbxTimeSpan GetReferenceTimeSpan() const; - - /** Set the ReferenceStart and ReferenceStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new reference time span. - */ - void SetReferenceTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Bake all the animation layers on the base layer. - * This function will process all the properties on every animation layer and generate a re-sampled set of - * animation keys (representing the layers' evaluated result) on the base layer. Once this operation is completed - * successfully, all the layers (except the base one) are destroyed. Properties that are only defined on the base - * layer will remain unaffected by the re-sampling. The stack local timespan is updated with the overall animation range. - * - * \param pEvaluator The layer evaluator. This is the engine that evaluates the overall result of any given - * property according to the layers flags. - * \param pStart The start time of the re-sampling range. - * \param pStop The stop time of the re-sampling range. - * \param pPeriod The time increment for the re-sampling. - * \return \c true if the operation was successful and \c false in case of errors. - * \remarks If this AnimStack contains only one AnimLayer, the function will return false and do nothing. - */ - bool BakeLayers(FbxAnimEvaluator* pEvaluator, FbxTime pStart, FbxTime pStop, FbxTime pPeriod); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_STACK_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h deleted file mode 100644 index ceb008f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimutilities.h -#ifndef _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ -#define _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxMultiMap; -class FbxObject; -class FbxProperty; -class FbxScene; -class FbxIO; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; - -class FBXSDK_DLL FbxAnimUtilities -{ -public: - /** Inspects all the properties of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \return \c true if at least one property is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsAnimated(FbxObject* pObj); - - /** Inspects the specified property of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \param pPropertyName Name of the inspected property. - * \param pChannelName Name of the specific channel of the inspected property. - * \return \c true if the specified channel is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsChannelAnimated(FbxObject* pObj, const char* pPropertyName, const char* pChannelName = NULL); - - class FBXSDK_DLL FbxAnimSplitDef - { - public: - FbxString mName; - FbxTime mStart; - FbxTime mEnd; - - FbxAnimSplitDef() - { - mName = "unnamed"; - mStart = 0; - mEnd = 0; - } - - FbxAnimSplitDef(const FbxString& pName, FbxTime& pStart, FbxTime& pEnd) - { - mName = pName; - mStart = pStart; - mEnd = pEnd; - } - - FbxAnimSplitDef& operator =(const FbxAnimSplitDef& pRhs) - { - mName = pRhs.mName; - mStart = pRhs.mStart; - mEnd = pRhs.mEnd; - return *this; - } - } ; - - class FBXSDK_DLL CurveNodeIntfce - { - public: - // pData is a pointer to the private KFCurveNode - CurveNodeIntfce(void* pData); - ~CurveNodeIntfce(); - - FbxHandle GetHandle(); - - char* GetTimeWarpName() const; - CurveNodeIntfce GetTimeWarp(); - - CurveNodeIntfce GetLayer(int pId); - - int GetCount(); - void* GetHandle(unsigned int pId); - void* GetCurveHandle(int pId = -1); - void SetCurveHandle(void* pCurveHandle, int pId = -1); - CurveNodeIntfce FindRecursive(const char* pName); - - bool IsValid() { return mImp != NULL; } - CurveNodeIntfce& operator=(CurveNodeIntfce& lRhs) - { - mImp = lRhs.mImp; - return *this; - } - - bool operator==(CurveNodeIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - void* mImp; - }; - - class FBXSDK_DLL CurveIntfce - { - public: - // pData is a pointer to the private KFCurve - CurveIntfce(void* pData); - CurveIntfce(FbxAnimCurve* pAnimCurve); - ~CurveIntfce(); - - float GetValue(); - void SetValue(float pVal); - int KeyGetCount(); - - void* GetCurveHandle(); - void SetCurveHandle(void* pData); - - int GetPreExtrapolation(); - int GetPreExtrapolationCount(); - int GetPostExtrapolation(); - int GetPostExtrapolationCount(); - - - bool IsValid() { return mImp != NULL; } - CurveIntfce& operator=(CurveIntfce& lRhs) - { - mImp = lRhs.mImp; - mIsAnimCurveImp = lRhs.mIsAnimCurveImp; - return *this; - } - - bool operator==(CurveIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - - void* mImp; - bool mIsAnimCurveImp; - }; - - static int SplitAnimationIntoMultipleStacks(FbxScene* pScene, const FbxArray& pAnimSplitDefinitions, const FbxAnimStack* pSrcAnimStack, FbxArray& pDstStacks); - static void ShareAnimCurves(FbxProperty& pDstProperty, FbxProperty& pSrcProperty, FbxScene* pScene); - - // Encapsulate use of private animation data - static void SetTimeWarpSet(FbxMultiMap* pTWset); - - static CurveNodeIntfce CreateCurveNode(const char* pName); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject, CurveNodeIntfce& pParent, bool pOnlyDefaults = false); - static CurveNodeIntfce CreateTimeWarpNode(FbxAnimCurve* pAnimCurve, const char* pFalloffName); - - static CurveNodeIntfce GrabCurveNode(FbxAnimCurveNode* pCN); - static void RestrieveCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void StoreCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void ReleaseCurveNode(FbxAnimCurveNode* pCurveNode); - static void DestroyCurveNode(CurveNodeIntfce& pData); - static void DestroyCurve(CurveIntfce& pData); - - static void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, CurveNodeIntfce& pData, FbxMultiMap& pTimeWarpsKFCurveNodes); - static void MergeLayerAndTimeWarp(FbxObject* pObj, FbxAnimLayer* pAnimLayer); - - static void CopyFrom(FbxAnimCurve* pAC, CurveIntfce& pFC); - static bool CompareCurves(FbxAnimCurve* pAC1, FbxAnimCurve* pAC2); - - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, FbxAnimCurveDef::EInterpolationType pInterpolation, FbxAnimCurveDef::ETangentMode pTangentMode, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pCurve, FbxTime pPeriod, FbxTime pStart = FBXSDK_TIME_MINUS_INFINITE, FbxTime pStop = FBXSDK_TIME_INFINITE, bool pKeysOnFrame = false); -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h deleted file mode 100644 index 9e11021..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h +++ /dev/null @@ -1,971 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ - -#include - -#include -#include - -#include - -class FbxControlSet; - -/** \class FbxCharacterLink - * - * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains - * the transform matrix (offset) for the linked character's node. - */ -class FBXSDK_DLL FbxCharacterLink -{ -public: - /** \enum EType Character link type */ - enum EType - { - eCharacterLink, - eControlSetLink, - eControlSetEffector, - eControlSetEffectorAux - }; - - /** Default Constructor. */ - FbxCharacterLink(); - - /** Copy Constructor. */ - FbxCharacterLink(const FbxCharacterLink& pCharacterLink); - - /** Assignment operation - * \param pCharacterLink Another FbxCharacterLink object assigned to this one. - */ - FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink); - - /** Reset to default values. */ - void Reset(); - - FbxNode* mNode; //! The character's node in hierarchy linked to this character link. - FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention. - FbxVector4 mOffsetT; //! Get offset position of this character link. - FbxVector4 mOffsetR; //! Get offset rotation of this character link. - FbxVector4 mOffsetS; //! Get offset scale of this character link. - FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link - bool mHasRotSpace; //! \c true if this character link has a defined rotation space - FbxLimits mRLimits; //! Get the rotation limits of this character link - FbxVector4 mPreRotation; //! Get the PreRotation of this character link - FbxVector4 mPostRotation; //! Get the PostRotation of this character link - int mRotOrder; //! Get the rotation order of this character link - double mAxisLen; //! Get the axis length of this character link - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProperty mPropertyLink; - FbxProperty mPropertyOffsetT; - FbxProperty mPropertyOffsetR; - FbxProperty mPropertyOffsetS; - FbxProperty mPropertyParentOffsetR; - FbxProperty mPropertyTemplateName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton). - * This class contains all methods to setup an exported character or query information on an imported character. - * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet - * - * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node. - * For more information see FbxCharacterLink class documentation. - * - * \see FbxCharacterLink, FbxControlSet - */ -class FBXSDK_DLL FbxCharacter : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint); - -public: - /** \enum EInputType Character input type. - * - \e eInputActor Not supported. - * - \e eInputCharacter The character's input is another character. - * - \e eInputMarkerSet The character's input is a control rig. - * - \e eOutputMarkerSet Not supported. - * - \e eInputStancePose The character's input is the stance pose. - */ - enum EInputType - { - eInputActor, - eInputCharacter, - eInputMarkerSet, - eOutputMarkerSet, - eInputStancePose - }; - - /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */ - enum EGroupId - { - eGroupBase, - eGroupAuxiliary, - eGroupSpine, - eGroupRoll, - eGroupSpecial, - eGroupLeftHand, - eGroupRightHand, - eGroupProps, - eGroupGameModeParent, - eGroupNeck, - eGroupLeftFoot, - eGroupRightFoot, - eGroupFloorContact, - eGroupIdCount - }; - - /** \enum ENodeId Define ID for each character node. - */ - enum ENodeId - { - eHips, - eLeftHip, - eLeftKnee, - eLeftAnkle, - eLeftFoot, - eRightHip, - eRightKnee, - eRightAnkle, - eRightFoot, - eWaist, - eChest, - eLeftCollar, - eLeftShoulder, - eLeftElbow, - eLeftWrist, - eRightCollar, - eRightShoulder, - eRightElbow, - eRightWrist, - eNeck, - eHead, - eLeftHipRoll, - eLeftKneeRoll, - eRightHipRoll, - eRightKneeRoll, - eLeftShoulderRoll, - eLeftElbowRoll, - eRightShoulderRoll, - eRightElbowRoll, - eSpine2, - eSpine3, - eSpine4, - eSpine5, - eSpine6, - eSpine7, - eSpine8, - eSpine9, - eLeftThumbA, - eLeftThumbB, - eLeftThumbC, - eLeftIndexA, - eLeftIndexB, - eLeftIndexC, - eLeftMiddleA, - eLeftMiddleB, - eLeftMiddleC, - eLeftRingA, - eLeftRingB, - eLeftRingC, - eLeftPinkyA, - eLeftPinkyB, - eLeftPinkyC, - eRightThumbA, - eRightThumbB, - eRightThumbC, - eRightIndexA, - eRightIndexB, - eRightIndexC, - eRightMiddleA, - eRightMiddleB, - eRightMiddleC, - eRightRingA, - eRightRingB, - eRightRingC, - eRightPinkyA, - eRightPinkyB, - eRightPinkyC, - eReference, - eLeftFloor, - eRightFloor, - eHipsTranslation, - eProps0, - eProps1, - eProps2, - eProps3, - eProps4, - eGameModeParentLeftHipRoll, - eGameModeParentLeftKnee, - eGameModeParentLeftKneeRoll, - eGameModeParentRightHipRoll, - eGameModeParentRightKnee, - eGameModeParentRightKneeRoll, - eGameModeParentLeftShoulderRoll, - eGameModeParentLeftElbow, - eGameModeParentLeftElbowRoll, - eGameModeParentRightShoulderRoll, - eGameModeParentRightElbow, - eGameModeParentRightElbowRoll, - eLeftUpLegRoll, - eLeftLegRoll, - eRightUpLegRoll, - eRightLegRoll, - eLeftArmRoll, - eLeftForeArmRoll, - eRightArmRoll, - eRightForeArmRoll, - eLeftHandFloor, - eRightHandFloor, - eLeftHand, - eRightHand, - eNeck1, - eNeck2, - eNeck3, - eNeck4, - eNeck5, - eNeck6, - eNeck7, - eNeck8, - eNeck9, - eLeftInHandThumb, - eLeftThumbD, - eLeftInHandIndex, - eLeftIndexD, - eLeftInHandMiddle, - eLeftMiddleD, - eLeftInHandRing, - eLeftRingD, - eLeftInHandPinky, - eLeftPinkyD, - eLeftInHandExtraFinger, - eLeftExtraFingerA, - eLeftExtraFingerB, - eLeftExtraFingerC, - eLeftExtraFingerD, - eRightInHandThumb, - eRightThumbD, - eRightInHandIndex, - eRightIndexD, - eRightInHandMiddle, - eRightMiddleD, - eRightInHandRing, - eRightRingD, - eRightInHandPinky, - eRightPinkyD, - eRightInHandExtraFinger, - eRightExtraFingerA, - eRightExtraFingerB, - eRightExtraFingerC, - eRightExtraFingerD, - eLeftInFootThumb, - eLeftFootThumbA, - eLeftFootThumbB, - eLeftFootThumbC, - eLeftFootThumbD, - eLeftInFootIndex, - eLeftFootIndexA, - eLeftFootIndexB, - eLeftFootIndexC, - eLeftFootIndexD, - eLeftInFootMiddle, - eLeftFootMiddleA, - eLeftFootMiddleB, - eLeftFootMiddleC, - eLeftFootMiddleD, - eLeftInFootRing, - eLeftFootRingA, - eLeftFootRingB, - eLeftFootRingC, - eLeftFootRingD, - eLeftInFootPinky, - eLeftFootPinkyA, - eLeftFootPinkyB, - eLeftFootPinkyC, - eLeftFootPinkyD, - eLeftInFootExtraFinger, - eLeftFootExtraFingerA, - eLeftFootExtraFingerB, - eLeftFootExtraFingerC, - eLeftFootExtraFingerD, - eRightInFootThumb, - eRightFootThumbA, - eRightFootThumbB, - eRightFootThumbC, - eRightFootThumbD, - eRightInFootIndex, - eRightFootIndexA, - eRightFootIndexB, - eRightFootIndexC, - eRightFootIndexD, - eRightInFootMiddle, - eRightFootMiddleA, - eRightFootMiddleB, - eRightFootMiddleC, - eRightFootMiddleD, - eRightInFootRing, - eRightFootRingA, - eRightFootRingB, - eRightFootRingC, - eRightFootRingD, - eRightInFootPinky, - eRightFootPinkyA, - eRightFootPinkyB, - eRightFootPinkyC, - eRightFootPinkyD, - eRightInFootExtraFinger, - eRightFootExtraFingerA, - eRightFootExtraFingerB, - eRightFootExtraFingerC, - eRightFootExtraFingerD, - eLeftCollarExtra, - eRightCollarExtra, - eLeafLeftHipRoll1, - eLeafLeftKneeRoll1, - eLeafRightHipRoll1, - eLeafRightKneeRoll1, - eLeafLeftShoulderRoll1, - eLeafLeftElbowRoll1, - eLeafRightShoulderRoll1, - eLeafRightElbowRoll1, - eLeafLeftHipRoll2, - eLeafLeftKneeRoll2, - eLeafRightHipRoll2, - eLeafRightKneeRoll2, - eLeafLeftShoulderRoll2, - eLeafLeftElbowRoll2, - eLeafRightShoulderRoll2, - eLeafRightElbowRoll2, - eLeafLeftHipRoll3, - eLeafLeftKneeRoll3, - eLeafRightHipRoll3, - eLeafRightKneeRoll3, - eLeafLeftShoulderRoll3, - eLeafLeftElbowRoll3, - eLeafRightShoulderRoll3, - eLeafRightElbowRoll3, - eLeafLeftHipRoll4, - eLeafLeftKneeRoll4, - eLeafRightHipRoll4, - eLeafRightKneeRoll4, - eLeafLeftShoulderRoll4, - eLeafLeftElbowRoll4, - eLeafRightShoulderRoll4, - eLeafRightElbowRoll4, - eLeafLeftHipRoll5, - eLeafLeftKneeRoll5, - eLeafRightHipRoll5, - eLeafRightKneeRoll5, - eLeafLeftShoulderRoll5, - eLeafLeftElbowRoll5, - eLeafRightShoulderRoll5, - eLeafRightElbowRoll5, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - enum EOffAutoUser - { - eParamModeOff, - eParamModeAuto, - eParamModeUser - }; - - enum EAutoUser - { - eParamModeAuto2, - eParamModeUser2 - }; - - enum EPostureMode - { - ePostureBiped, - ePostureQuadriped, - ePostureCount - }; - - enum EFloorPivot - { - eFloorPivotAuto, - eFloorPivotAnkle, - eFloorPivotToes, - eFloorPivotCount - }; - - enum ERollExtractionMode - { - eRelativeRollExtraction, - eAbsoluteRollExtraction, - eRollExtractionTypeCount - }; - - enum EHipsTranslationMode - { - eHipsTranslationWorldRigid, - eHipsTranslationBodyRigid, - eHipsTranslationTypeCount - }; - - enum EFootContactType - { - eFootTypeNormal, - eFootTypeAnkle, - eFootTypeToeBase, - eFootTypeHoof, - eFootContactModeCount - }; - - enum EHandContactType - { - eHandTypeNormal, - eHandTypeWrist, - eHandTypeFingerBase, - eHandTypeHoof, - eHandContactModeCount - }; - - enum EFingerContactMode - { - eFingerContactModeSticky, - eFingerContactModeSpread, - eFingerContactModeStickySpread, - eFingerContactModeCount - }; - - enum EContactBehaviour - { - eContactNeverSync, - eContactSyncOnKey, - eContactAlwaysSync, - eContactBehaviorCount - }; - - enum EPropertyUnit - { - ePropertyNoUnit, - ePropertyPercent, - ePropertySecond, - ePropertyCentimeter, - ePropertyDegree, - ePropertyEnum, - ePropertyReal - }; - - enum EErrorCode - { - eInternalError, - eErrorCount - }; - - /** Reset to default values. - * - Input type will be set to eInputStancePose. - * - Input object will be set to NULL. - * - Each Character link will be reset. - * - The control set will be reset. - */ - void Reset(); - - /** Set input type and index. - * \param pInputType Input type. - * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL. - */ - void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL); - - //! Get input type. - EInputType GetInputType() const; - - /** Get input actor or character. - * \return Pointer or \c Null, depending on the input type. - * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter. - * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter. - */ - FbxObject* GetInputObject() const; - - /** Associate a character link to a given character node ID. If a character link already exists for this character node ID, - * the character link will be removed. - * \param pCharacterNodeId Character node ID. - * \param pCharacterLink Character link. - * \param pUpdateObjectList Set to \c true to update the object list (default value). - * \return \c true if successful, \c false otherwise. - */ - bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true); - - /** Get a character link associated with a given character node ID. - * \param pCharacterNodeId ID of character node requested. - * \param pCharacterLink Optional pointer to receive the character link if function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const; - - /** Get control set associated with the character. - * \return Return the control set associated with the character. - */ - FbxControlSet& GetControlSet() const; - - /** Get number of elements in a given character group. - * \param pCharacterGroupId Character group ID. - * \return The number of elements in the pCharacterGroupId character group. - */ - static int GetCharacterGroupCount(EGroupId pCharacterGroupId); - - /** Get character node ID of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node ID. - */ - static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex); - - - /** Get character node name of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node name. - */ - static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Get character node version of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node version. - */ - static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Find the character group index associated with a given character node name. - * \param pName Character node name. - * \param pForceGroupId Set to \c true to force the character group ID. - * \param pCharacterGroupId Receives character group ID. - * \param pIndex Receives character index ID. - * \return \c true if successful, otherwise \c false. - */ - static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node group and index of a given character node ID. - * \param pCharacterNodeId Character node ID. - * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter - * \param pIndex if the Character node ID is found, the method returns the index through this parameter - * \remarks Only works for a character node ID that is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node version of a given character node ID. - * \param pCharacterNodeId Character node ID to get version. - * \param pVersion if the node ID is found, the method returns the version through this parameter - * \remarks Only works for a character node ID is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion); - - /** Get character node name associated with a given character node ID. - * \param pCharacterNodeId Character node ID to get name. - * \param pName if the node ID is found, the method returns the node name through this parameter - * Since the Pointer points to internal data, it is not necessary to allocate a string buffer - * before calling this function. - * \return \c true if a name exists for the given node ID. - */ - static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName); - - /** Get the character node ID associated with a given character node name. - * \param pName Character node name to get node ID. - * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter - * \return \c true if a node ID exists for the given node name. - */ - static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId); - - // FbxCharacter Properties - FbxPropertyT PullIterationCount; - FbxPropertyT Posture; - FbxPropertyT ForceActorSpace; - FbxPropertyT ScaleCompensation; - FbxPropertyT ScaleCompensationMode; - FbxPropertyT HipsHeightCompensation; - FbxPropertyT HipsHeightCompensationMode; - FbxPropertyT AnkleHeightCompensation; - FbxPropertyT AnkleHeightCompensationMode; - FbxPropertyT AnkleProximityCompensation; - FbxPropertyT AnkleProximityCompensationMode; - FbxPropertyT MassCenterCompensation; - FbxPropertyT ApplyLimits; - FbxPropertyT ChestReduction; - FbxPropertyT CollarReduction; - FbxPropertyT NeckReduction; - FbxPropertyT HeadReduction; - FbxPropertyT ReachActorLeftAnkle; - FbxPropertyT ReachActorRightAnkle; - FbxPropertyT ReachActorLeftKnee; - FbxPropertyT ReachActorRightKnee; - FbxPropertyT ReachActorChest; - FbxPropertyT ReachActorHead; - FbxPropertyT ReachActorLeftWrist; - FbxPropertyT ReachActorRightWrist; - FbxPropertyT ReachActorLeftElbow; - FbxPropertyT ReachActorRightElbow; - FbxPropertyT ReachActorLeftFingerBase; - FbxPropertyT ReachActorRightFingerBase; - FbxPropertyT ReachActorLeftToesBase; - FbxPropertyT ReachActorRightToesBase; - FbxPropertyT ReachActorLeftFingerBaseRotation; - FbxPropertyT ReachActorRightFingerBaseRotation; - FbxPropertyT ReachActorLeftToesBaseRotation; - FbxPropertyT ReachActorRightToesBaseRotation; - FbxPropertyT ReachActorLeftAnkleRotation; - FbxPropertyT ReachActorRightAnkleRotation; - FbxPropertyT ReachActorHeadRotation; - FbxPropertyT ReachActorLeftWristRotation; - FbxPropertyT ReachActorRightWristRotation; - FbxPropertyT ReachActorChestRotation; - FbxPropertyT ReachActorLowerChestRotation; - FbxPropertyT HipsTOffset; - FbxPropertyT ChestTOffset; - FbxPropertyT RollExtractionMode; - FbxPropertyT LeftUpLegRoll; - FbxPropertyT LeftUpLegRollMode; - FbxPropertyT LeftLegRoll; - FbxPropertyT LeftLegRollMode; - FbxPropertyT RightUpLegRoll; - FbxPropertyT RightUpLegRollMode; - FbxPropertyT RightLegRoll; - FbxPropertyT RightLegRollMode; - FbxPropertyT LeftArmRoll; - FbxPropertyT LeftArmRollMode; - FbxPropertyT LeftForeArmRoll; - FbxPropertyT LeftForeArmRollMode; - FbxPropertyT RightArmRoll; - FbxPropertyT RightArmRollMode; - FbxPropertyT RightForeArmRoll; - FbxPropertyT RightForeArmRollMode; - FbxPropertyT LeftUpLegRollEx; - FbxPropertyT LeftUpLegRollExMode; - FbxPropertyT LeftLegRollEx; - FbxPropertyT LeftLegRollExMode; - FbxPropertyT RightUpLegRollEx; - FbxPropertyT RightUpLegRollExMode; - FbxPropertyT RightLegRollEx; - FbxPropertyT RightLegRollExMode; - FbxPropertyT LeftArmRollEx; - FbxPropertyT LeftArmRollExMode; - FbxPropertyT LeftForeArmRollEx; - FbxPropertyT LeftForeArmRollExMode; - FbxPropertyT RightArmRollEx; - FbxPropertyT RightArmRollExMode; - FbxPropertyT RightForeArmExRoll; - FbxPropertyT RightForeArmRollExMode; - FbxPropertyT ContactBehaviour; - FbxPropertyT FootFloorContact; - FbxPropertyT FootAutomaticToes; - FbxPropertyT FootFloorPivot; - FbxPropertyT FootBottomToAnkle; - FbxPropertyT FootBackToAnkle; - FbxPropertyT FootMiddleToAnkle; - FbxPropertyT FootFrontToMiddle; - FbxPropertyT FootInToAnkle; - FbxPropertyT FootOutToAnkle; - FbxPropertyT FootContactSize; - FbxPropertyT FootFingerContact; - FbxPropertyT FootContactType; - FbxPropertyT FootFingerContactMode; - FbxPropertyT FootContactStiffness; - FbxPropertyT FootFingerContactRollStiffness; - FbxPropertyT HandFloorContact; - FbxPropertyT HandAutomaticFingers; - FbxPropertyT HandFloorPivot; - FbxPropertyT HandBottomToWrist; - FbxPropertyT HandBackToWrist; - FbxPropertyT HandMiddleToWrist; - FbxPropertyT HandFrontToMiddle; - FbxPropertyT HandInToWrist; - FbxPropertyT HandOutToWrist; - FbxPropertyT HandContactSize; - FbxPropertyT HandFingerContact; - FbxPropertyT HandContactType; - FbxPropertyT HandFingerContactMode; - FbxPropertyT HandContactStiffness; - FbxPropertyT HandFingerContactRollStiffness; - FbxPropertyT LeftHandThumbTip; - FbxPropertyT LeftHandIndexTip; - FbxPropertyT LeftHandMiddleTip; - FbxPropertyT LeftHandRingTip; - FbxPropertyT LeftHandPinkyTip; - FbxPropertyT LeftHandExtraFingerTip; - FbxPropertyT RightHandThumbTip; - FbxPropertyT RightHandIndexTip; - FbxPropertyT RightHandMiddleTip; - FbxPropertyT RightHandRingTip; - FbxPropertyT RightHandPinkyTip; - FbxPropertyT RightHandExtraFingerTip; - FbxPropertyT LeftFootThumbTip; - FbxPropertyT LeftFootIndexTip; - FbxPropertyT LeftFootMiddleTip; - FbxPropertyT LeftFootRingTip; - FbxPropertyT LeftFootPinkyTip; - FbxPropertyT LeftFootExtraFingerTip; - FbxPropertyT RightFootThumbTip; - FbxPropertyT RightFootIndexTip; - FbxPropertyT RightFootMiddleTip; - FbxPropertyT RightFootRingTip; - FbxPropertyT RightFootPinkyTip; - FbxPropertyT RightFootExtraFingerTip; - FbxPropertyT FingerSolving; - FbxPropertyT CtrlPullLeftToeBase; - FbxPropertyT CtrlPullLeftFoot; - FbxPropertyT CtrlPullLeftKnee; - FbxPropertyT CtrlPullRightToeBase; - FbxPropertyT CtrlPullRightFoot; - FbxPropertyT CtrlPullRightKnee; - FbxPropertyT CtrlPullLeftFingerBase; - FbxPropertyT CtrlPullLeftHand; - FbxPropertyT CtrlPullLeftElbow; - FbxPropertyT CtrlPullRightFingerBase; - FbxPropertyT CtrlPullRightHand; - FbxPropertyT CtrlPullRightElbow; - FbxPropertyT CtrlChestPullLeftHand; - FbxPropertyT CtrlChestPullRightHand; - FbxPropertyT CtrlPullHead; - FbxPropertyT CtrlResistHipsPosition; - FbxPropertyT CtrlEnforceGravity; - FbxPropertyT CtrlResistHipsOrientation; - FbxPropertyT CtrlResistChestPosition; - FbxPropertyT CtrlResistChestOrientation; - FbxPropertyT CtrlResistLeftCollar; - FbxPropertyT CtrlResistRightCollar; - FbxPropertyT CtrlResistLeftKnee; - FbxPropertyT CtrlResistMaximumExtensionLeftKnee; - FbxPropertyT CtrlResistCompressionFactorLeftKnee; - FbxPropertyT CtrlResistRightKnee; - FbxPropertyT CtrlResistMaximumExtensionRightKnee; - FbxPropertyT CtrlResistCompressionFactorRightKnee; - FbxPropertyT CtrlResistLeftElbow; - FbxPropertyT CtrlResistMaximumExtensionLeftElbow; - FbxPropertyT CtrlResistCompressionFactorLeftElbow; - FbxPropertyT CtrlResistRightElbow; - FbxPropertyT CtrlResistMaximumExtensionRightElbow; - FbxPropertyT CtrlResistCompressionFactorRightElbow; - FbxPropertyT CtrlSpineStiffness; - FbxPropertyT CtrlNeckStiffness; - FbxPropertyT MirrorMode; - FbxPropertyT ShoulderCorrection; - FbxPropertyT LeftKneeKillPitch; - FbxPropertyT RightKneeKillPitch; - FbxPropertyT LeftElbowKillPitch; - FbxPropertyT RightElbowKillPitch; - FbxPropertyT HipsTranslationMode; - FbxPropertyT WriteReference; - FbxPropertyT SyncMode; - FbxPropertyT Damping; - FbxPropertyT OrientationDamping; - FbxPropertyT OrientationDampingMode; - FbxPropertyT DisplacementDamping; - FbxPropertyT DisplacementDampingMode; - FbxPropertyT DisplacementMemory; - FbxPropertyT DisplacementMemoryMode; - FbxPropertyT HipsDisplacementDamping; - FbxPropertyT HipsDisplacementDampingMode; - FbxPropertyT AnkleDisplacementDamping; - FbxPropertyT AnkleDisplacementDampingMode; - FbxPropertyT WristDisplacementDamping; - FbxPropertyT WristDisplacementDampingMode; - FbxPropertyT Stabilization; - FbxPropertyT AnkleStabilizationTime; - FbxPropertyT AnkleStabilizationTimeMode; - FbxPropertyT AnkleStabilizationPerimeter; - FbxPropertyT AnkleStabilizationPerimeterMode; - FbxPropertyT AnkleStabilizationAngularPerimeter; - FbxPropertyT AnkleStabilizationAngularPerimeterMode; - FbxPropertyT AnkleStabilizationFloorProximity; - FbxPropertyT AnkleStabilizationFloorProximityMode; - FbxPropertyT AnkleStabilizationDamping; - FbxPropertyT AnkleStabilizationDampingMode; - FbxPropertyT AnkleStabilizationRecoveryTime; - FbxPropertyT AnkleStabilizationRecoveryTimeMode; - FbxPropertyT SourceObject; - FbxPropertyT DestinationObject; - FbxPropertyT Actor; - FbxPropertyT Character; - FbxPropertyT ControlSet; - FbxPropertyT HikVersion; - FbxPropertyT Characterize; - FbxPropertyT LockXForm; - FbxPropertyT LockPick; - - // HIK 4.6 new properties - FbxPropertyT RealisticShoulder; - FbxPropertyT CollarStiffnessX; - FbxPropertyT CollarStiffnessY; - FbxPropertyT CollarStiffnessZ; - FbxPropertyT ExtraCollarRatio; - - FbxPropertyT LeftLegMaxExtensionAngle; - FbxPropertyT RightLegMaxExtensionAngle; - FbxPropertyT LeftArmMaxExtensionAngle; - FbxPropertyT RightArmMaxExtensionAngle; - - FbxPropertyT StretchStartArmsAndLegs; - FbxPropertyT StretchStopArmsAndLegs; - FbxPropertyT SnSScaleArmsAndLegs; - FbxPropertyT SnSReachLeftWrist; - FbxPropertyT SnSReachRightWrist; - FbxPropertyT SnSReachLeftAnkle; - FbxPropertyT SnSReachRightAnkle; - FbxPropertyT SnSScaleSpine; - FbxPropertyT SnSScaleSpineChildren; - FbxPropertyT SnSSpineFreedom; - FbxPropertyT SnSReachChestEnd; - FbxPropertyT SnSScaleNeck; - FbxPropertyT SnSNeckFreedom; - FbxPropertyT SnSReachHead; - - // HIK 2016.5.0 roll properties - // Leaf roll properties - FbxPropertyT LeafLeftUpLegRoll1; - FbxPropertyT LeafLeftUpLegRoll1Mode; - FbxPropertyT LeafLeftLegRoll1; - FbxPropertyT LeafLeftLegRoll1Mode; - FbxPropertyT LeafRightUpLegRoll1; - FbxPropertyT LeafRightUpLegRoll1Mode; - FbxPropertyT LeafRightLegRoll1; - FbxPropertyT LeafRightLegRoll1Mode; - FbxPropertyT LeafLeftArmRoll1; - FbxPropertyT LeafLeftArmRoll1Mode; - FbxPropertyT LeafLeftForeArmRoll1; - FbxPropertyT LeafLeftForeArmRoll1Mode; - FbxPropertyT LeafRightArmRoll1; - FbxPropertyT LeafRightArmRoll1Mode; - FbxPropertyT LeafRightForeArmRoll1; - FbxPropertyT LeafRightForeArmRoll1Mode; - FbxPropertyT LeafLeftUpLegRoll2; - FbxPropertyT LeafLeftUpLegRoll2Mode; - FbxPropertyT LeafLeftLegRoll2; - FbxPropertyT LeafLeftLegRoll2Mode; - FbxPropertyT LeafRightUpLegRoll2; - FbxPropertyT LeafRightUpLegRoll2Mode; - FbxPropertyT LeafRightLegRoll2; - FbxPropertyT LeafRightLegRoll2Mode; - FbxPropertyT LeafLeftArmRoll2; - FbxPropertyT LeafLeftArmRoll2Mode; - FbxPropertyT LeafLeftForeArmRoll2; - FbxPropertyT LeafLeftForeArmRoll2Mode; - FbxPropertyT LeafRightArmRoll2; - FbxPropertyT LeafRightArmRoll2Mode; - FbxPropertyT LeafRightForeArmRoll2; - FbxPropertyT LeafRightForeArmRoll2Mode; - FbxPropertyT LeafLeftUpLegRoll3; - FbxPropertyT LeafLeftUpLegRoll3Mode; - FbxPropertyT LeafLeftLegRoll3; - FbxPropertyT LeafLeftLegRoll3Mode; - FbxPropertyT LeafRightUpLegRoll3; - FbxPropertyT LeafRightUpLegRoll3Mode; - FbxPropertyT LeafRightLegRoll3; - FbxPropertyT LeafRightLegRoll3Mode; - FbxPropertyT LeafLeftArmRoll3; - FbxPropertyT LeafLeftArmRoll3Mode; - FbxPropertyT LeafLeftForeArmRoll3; - FbxPropertyT LeafLeftForeArmRoll3Mode; - FbxPropertyT LeafRightArmRoll3; - FbxPropertyT LeafRightArmRoll3Mode; - FbxPropertyT LeafRightForeArmRoll3; - FbxPropertyT LeafRightForeArmRoll3Mode; - FbxPropertyT LeafLeftUpLegRoll4; - FbxPropertyT LeafLeftUpLegRoll4Mode; - FbxPropertyT LeafLeftLegRoll4; - FbxPropertyT LeafLeftLegRoll4Mode; - FbxPropertyT LeafRightUpLegRoll4; - FbxPropertyT LeafRightUpLegRoll4Mode; - FbxPropertyT LeafRightLegRoll4; - FbxPropertyT LeafRightLegRoll4Mode; - FbxPropertyT LeafLeftArmRoll4; - FbxPropertyT LeafLeftArmRoll4Mode; - FbxPropertyT LeafLeftForeArmRoll4; - FbxPropertyT LeafLeftForeArmRoll4Mode; - FbxPropertyT LeafRightArmRoll4; - FbxPropertyT LeafRightArmRoll4Mode; - FbxPropertyT LeafRightForeArmRoll4; - FbxPropertyT LeafRightForeArmRoll4Mode; - FbxPropertyT LeafLeftUpLegRoll5; - FbxPropertyT LeafLeftUpLegRoll5Mode; - FbxPropertyT LeafLeftLegRoll5; - FbxPropertyT LeafLeftLegRoll5Mode; - FbxPropertyT LeafRightUpLegRoll5; - FbxPropertyT LeafRightUpLegRoll5Mode; - FbxPropertyT LeafRightLegRoll5; - FbxPropertyT LeafRightLegRoll5Mode; - FbxPropertyT LeafLeftArmRoll5; - FbxPropertyT LeafLeftArmRoll5Mode; - FbxPropertyT LeafLeftForeArmRoll5; - FbxPropertyT LeafLeftForeArmRoll5Mode; - FbxPropertyT LeafRightArmRoll5; - FbxPropertyT LeafRightArmRoll5Mode; - FbxPropertyT LeafRightForeArmRoll5; - FbxPropertyT LeafRightForeArmRoll5Mode; - // Full limb roll extraction - FbxPropertyT LeftLegFullRollExtraction; - FbxPropertyT RightLegFullRollExtraction; - FbxPropertyT LeftArmFullRollExtraction; - FbxPropertyT RightArmFullRollExtraction; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetVersion(int pVersion){ mCharacterVersion = pVersion; } - int Version(){ return mCharacterVersion; } - void SetValuesFromLegacyLoad(); - void SetValuesForLegacySave(int pVersion); - void RestoreValuesFromLegacySave(); - bool IsLegacy(); - - int GetPropertyInfoCount(); - void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const; - void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const; - - FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId); - - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxObject& Copy(const FbxObject& pObject) override; - EType GetConstraintType() const override; - FbxStringList GetTypeFlags() const override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - -private: - bool InverseProperty(FbxProperty& pProp); - - int mCharacterVersion; - FbxCharacterLink mCharacterLink[eNodeIdCount]; - FbxControlSet* mControlSet; - - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h deleted file mode 100644 index d8a5546..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacternodename.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ - -#include - -#include - -#define Character_Hips "Hips" -#define Character_LeftUpLeg "LeftUpLeg" -#define Character_LeftLeg "LeftLeg" -#define Character_LeftFoot "LeftFoot" -#define Character_RightUpLeg "RightUpLeg" -#define Character_RightLeg "RightLeg" -#define Character_RightFoot "RightFoot" -#define Character_Spine "Spine" -#define Character_LeftArm "LeftArm" -#define Character_LeftForeArm "LeftForeArm" -#define Character_LeftHand "LeftHand" -#define Character_RightArm "RightArm" -#define Character_RightForeArm "RightForeArm" -#define Character_RightHand "RightHand" -#define Character_Head "Head" -#define Character_LeftToeBase "LeftToeBase" -#define Character_RightToeBase "RightToeBase" -#define Character_LeftShoulder "LeftShoulder" -#define Character_RightShoulder "RightShoulder" -#define Character_LeftShoulderExtra "LeftShoulderExtra" -#define Character_RightShoulderExtra "RightShoulderExtra" -#define Character_Neck "Neck" -#define Character_LeftFingerBase "LeftFingerBase" -#define Character_RightFingerBase "RightFingerBase" -#define Character_Spine1 "Spine1" -#define Character_Spine2 "Spine2" -#define Character_Spine3 "Spine3" -#define Character_Spine4 "Spine4" -#define Character_Spine5 "Spine5" -#define Character_Spine6 "Spine6" -#define Character_Spine7 "Spine7" -#define Character_Spine8 "Spine8" -#define Character_Spine9 "Spine9" -#define Character_Neck1 "Neck1" -#define Character_Neck2 "Neck2" -#define Character_Neck3 "Neck3" -#define Character_Neck4 "Neck4" -#define Character_Neck5 "Neck5" -#define Character_Neck6 "Neck6" -#define Character_Neck7 "Neck7" -#define Character_Neck8 "Neck8" -#define Character_Neck9 "Neck9" -#define Character_LeftUpLegRoll "LeftUpLegRoll" -#define Character_LeftLegRoll "LeftLegRoll" -#define Character_RightUpLegRoll "RightUpLegRoll" -#define Character_RightLegRoll "RightLegRoll" -#define Character_LeftArmRoll "LeftArmRoll" -#define Character_LeftForeArmRoll "LeftForeArmRoll" -#define Character_RightArmRoll "RightArmRoll" -#define Character_RightForeArmRoll "RightForeArmRoll" -#define Character_LeftUpLegRollEx "LeftUpLegRollEx" -#define Character_LeftLegRollEx "LeftLegRollEx" -#define Character_RightUpLegRollEx "RightUpLegRollEx" -#define Character_RightLegRollEx "RightLegRollEx" -#define Character_LeftArmRollEx "LeftArmRollEx" -#define Character_LeftForearmRollEx "LeftForeArmRollEx" -#define Character_RightArmRollEx "RightArmRollEx" -#define Character_RightForearmRollEx "RightForeArmRollEx" -#define Character_LeafLeftUpLegRoll1 "LeafLeftUpLegRoll1" -#define Character_LeafLeftLegRoll1 "LeafLeftLegRoll1" -#define Character_LeafRightUpLegRoll1 "LeafRightUpLegRoll1" -#define Character_LeafRightLegRoll1 "LeafRightLegRoll1" -#define Character_LeafLeftArmRoll1 "LeafLeftArmRoll1" -#define Character_LeafLeftForeArmRoll1 "LeafLeftForeArmRoll1" -#define Character_LeafRightArmRoll1 "LeafRightArmRoll1" -#define Character_LeafRightForeArmRoll1 "LeafRightForeArmRoll1" -#define Character_LeafLeftUpLegRoll2 "LeafLeftUpLegRoll2" -#define Character_LeafLeftLegRoll2 "LeafLeftLegRoll2" -#define Character_LeafRightUpLegRoll2 "LeafRightUpLegRoll2" -#define Character_LeafRightLegRoll2 "LeafRightLegRoll2" -#define Character_LeafLeftArmRoll2 "LeafLeftArmRoll2" -#define Character_LeafLeftForeArmRoll2 "LeafLeftForeArmRoll2" -#define Character_LeafRightArmRoll2 "LeafRightArmRoll2" -#define Character_LeafRightForeArmRoll2 "LeafRightForeArmRoll2" -#define Character_LeafLeftUpLegRoll3 "LeafLeftUpLegRoll3" -#define Character_LeafLeftLegRoll3 "LeafLeftLegRoll3" -#define Character_LeafRightUpLegRoll3 "LeafRightUpLegRoll3" -#define Character_LeafRightLegRoll3 "LeafRightLegRoll3" -#define Character_LeafLeftArmRoll3 "LeafLeftArmRoll3" -#define Character_LeafLeftForeArmRoll3 "LeafLeftForeArmRoll3" -#define Character_LeafRightArmRoll3 "LeafRightArmRoll3" -#define Character_LeafRightForeArmRoll3 "LeafRightForeArmRoll3" -#define Character_LeafLeftUpLegRoll4 "LeafLeftUpLegRoll4" -#define Character_LeafLeftLegRoll4 "LeafLeftLegRoll4" -#define Character_LeafRightUpLegRoll4 "LeafRightUpLegRoll4" -#define Character_LeafRightLegRoll4 "LeafRightLegRoll4" -#define Character_LeafLeftArmRoll4 "LeafLeftArmRoll4" -#define Character_LeafLeftForeArmRoll4 "LeafLeftForeArmRoll4" -#define Character_LeafRightArmRoll4 "LeafRightArmRoll4" -#define Character_LeafRightForeArmRoll4 "LeafRightForeArmRoll4" -#define Character_LeafLeftUpLegRoll5 "LeafLeftUpLegRoll5" -#define Character_LeafLeftLegRoll5 "LeafLeftLegRoll5" -#define Character_LeafRightUpLegRoll5 "LeafRightUpLegRoll5" -#define Character_LeafRightLegRoll5 "LeafRightLegRoll5" -#define Character_LeafLeftArmRoll5 "LeafLeftArmRoll5" -#define Character_LeafLeftForeArmRoll5 "LeafLeftForeArmRoll5" -#define Character_LeafRightArmRoll5 "LeafRightArmRoll5" -#define Character_LeafRightForeArmRoll5 "LeafRightForeArmRoll5" -#define Character_Props0 "Props0" -#define Character_Props1 "Props1" -#define Character_Props2 "Props2" -#define Character_Props3 "Props3" -#define Character_Props4 "Props4" -#define Character_LeftHandThumb1 "LeftHandThumb1" -#define Character_LeftHandThumb2 "LeftHandThumb2" -#define Character_LeftHandThumb3 "LeftHandThumb3" -#define Character_LeftHandThumb4 "LeftHandThumb4" -#define Character_LeftHandIndex1 "LeftHandIndex1" -#define Character_LeftHandIndex2 "LeftHandIndex2" -#define Character_LeftHandIndex3 "LeftHandIndex3" -#define Character_LeftHandIndex4 "LeftHandIndex4" -#define Character_LeftHandMiddle1 "LeftHandMiddle1" -#define Character_LeftHandMiddle2 "LeftHandMiddle2" -#define Character_LeftHandMiddle3 "LeftHandMiddle3" -#define Character_LeftHandMiddle4 "LeftHandMiddle4" -#define Character_LeftHandRing1 "LeftHandRing1" -#define Character_LeftHandRing2 "LeftHandRing2" -#define Character_LeftHandRing3 "LeftHandRing3" -#define Character_LeftHandRing4 "LeftHandRing4" -#define Character_LeftHandPinky1 "LeftHandPinky1" -#define Character_LeftHandPinky2 "LeftHandPinky2" -#define Character_LeftHandPinky3 "LeftHandPinky3" -#define Character_LeftHandPinky4 "LeftHandPinky4" -#define Character_LeftHandExtraFinger1 "LeftHandExtraFinger1" -#define Character_LeftHandExtraFinger2 "LeftHandExtraFinger2" -#define Character_LeftHandExtraFinger3 "LeftHandExtraFinger3" -#define Character_LeftHandExtraFinger4 "LeftHandExtraFinger4" -#define Character_RightHandThumb1 "RightHandThumb1" -#define Character_RightHandThumb2 "RightHandThumb2" -#define Character_RightHandThumb3 "RightHandThumb3" -#define Character_RightHandThumb4 "RightHandThumb4" -#define Character_RightHandIndex1 "RightHandIndex1" -#define Character_RightHandIndex2 "RightHandIndex2" -#define Character_RightHandIndex3 "RightHandIndex3" -#define Character_RightHandIndex4 "RightHandIndex4" -#define Character_RightHandMiddle1 "RightHandMiddle1" -#define Character_RightHandMiddle2 "RightHandMiddle2" -#define Character_RightHandMiddle3 "RightHandMiddle3" -#define Character_RightHandMiddle4 "RightHandMiddle4" -#define Character_RightHandRing1 "RightHandRing1" -#define Character_RightHandRing2 "RightHandRing2" -#define Character_RightHandRing3 "RightHandRing3" -#define Character_RightHandRing4 "RightHandRing4" -#define Character_RightHandPinky1 "RightHandPinky1" -#define Character_RightHandPinky2 "RightHandPinky2" -#define Character_RightHandPinky3 "RightHandPinky3" -#define Character_RightHandPinky4 "RightHandPinky4" -#define Character_RightHandExtraFinger1 "RightHandExtraFinger1" -#define Character_RightHandExtraFinger2 "RightHandExtraFinger2" -#define Character_RightHandExtraFinger3 "RightHandExtraFinger3" -#define Character_RightHandExtraFinger4 "RightHandExtraFinger4" -#define Character_LeftFootThumb1 "LeftFootThumb1" -#define Character_LeftFootThumb2 "LeftFootThumb2" -#define Character_LeftFootThumb3 "LeftFootThumb3" -#define Character_LeftFootThumb4 "LeftFootThumb4" -#define Character_LeftFootIndex1 "LeftFootIndex1" -#define Character_LeftFootIndex2 "LeftFootIndex2" -#define Character_LeftFootIndex3 "LeftFootIndex3" -#define Character_LeftFootIndex4 "LeftFootIndex4" -#define Character_LeftFootMiddle1 "LeftFootMiddle1" -#define Character_LeftFootMiddle2 "LeftFootMiddle2" -#define Character_LeftFootMiddle3 "LeftFootMiddle3" -#define Character_LeftFootMiddle4 "LeftFootMiddle4" -#define Character_LeftFootRing1 "LeftFootRing1" -#define Character_LeftFootRing2 "LeftFootRing2" -#define Character_LeftFootRing3 "LeftFootRing3" -#define Character_LeftFootRing4 "LeftFootRing4" -#define Character_LeftFootPinky1 "LeftFootPinky1" -#define Character_LeftFootPinky2 "LeftFootPinky2" -#define Character_LeftFootPinky3 "LeftFootPinky3" -#define Character_LeftFootPinky4 "LeftFootPinky4" -#define Character_LeftFootExtraFinger1 "LeftFootExtraFinger1" -#define Character_LeftFootExtraFinger2 "LeftFootExtraFinger2" -#define Character_LeftFootExtraFinger3 "LeftFootExtraFinger3" -#define Character_LeftFootExtraFinger4 "LeftFootExtraFinger4" -#define Character_RightFootThumb1 "RightFootThumb1" -#define Character_RightFootThumb2 "RightFootThumb2" -#define Character_RightFootThumb3 "RightFootThumb3" -#define Character_RightFootThumb4 "RightFootThumb4" -#define Character_RightFootIndex1 "RightFootIndex1" -#define Character_RightFootIndex2 "RightFootIndex2" -#define Character_RightFootIndex3 "RightFootIndex3" -#define Character_RightFootIndex4 "RightFootIndex4" -#define Character_RightFootMiddle1 "RightFootMiddle1" -#define Character_RightFootMiddle2 "RightFootMiddle2" -#define Character_RightFootMiddle3 "RightFootMiddle3" -#define Character_RightFootMiddle4 "RightFootMiddle4" -#define Character_RightFootRing1 "RightFootRing1" -#define Character_RightFootRing2 "RightFootRing2" -#define Character_RightFootRing3 "RightFootRing3" -#define Character_RightFootRing4 "RightFootRing4" -#define Character_RightFootPinky1 "RightFootPinky1" -#define Character_RightFootPinky2 "RightFootPinky2" -#define Character_RightFootPinky3 "RightFootPinky3" -#define Character_RightFootPinky4 "RightFootPinky4" -#define Character_RightFootExtraFinger1 "RightFootExtraFinger1" -#define Character_RightFootExtraFinger2 "RightFootExtraFinger2" -#define Character_RightFootExtraFinger3 "RightFootExtraFinger3" -#define Character_RightFootExtraFinger4 "RightFootExtraFinger4" -#define Character_LeftInHandThumb "LeftInHandThumb" -#define Character_LeftInHandIndex "LeftInHandIndex" -#define Character_LeftInHandMiddle "LeftInHandMiddle" -#define Character_LeftInHandRing "LeftInHandRing" -#define Character_LeftInHandPinky "LeftInHandPinky" -#define Character_LeftInHandExtraFinger "LeftInHandExtraFinger" -#define Character_RightInHandThumb "RightInHandThumb" -#define Character_RightInHandIndex "RightInHandIndex" -#define Character_RightInHandMiddle "RightInHandMiddle" -#define Character_RightInHandRing "RightInHandRing" -#define Character_RightInHandPinky "RightInHandPinky" -#define Character_RightInHandExtraFinger "RightInHandExtraFinger" -#define Character_LeftInFootThumb "LeftInFootThumb" -#define Character_LeftInFootIndex "LeftInFootIndex" -#define Character_LeftInFootMiddle "LeftInFootMiddle" -#define Character_LeftInFootRing "LeftInFootRing" -#define Character_LeftInFootPinky "LeftInFootPinky" -#define Character_LeftInFootExtraFinger "LeftInFootExtraFinger" -#define Character_RightInFootThumb "RightInFootThumb" -#define Character_RightInFootIndex "RightInFootIndex" -#define Character_RightInFootMiddle "RightInFootMiddle" -#define Character_RightInFootRing "RightInFootRing" -#define Character_RightInFootPinky "RightInFootPinky" -#define Character_RightInFootExtraFinger "RightInFootExtraFinger" - -#define Character_GameModeParentLeftHipRoll "GameModeParentLeftHipRoll" -#define Character_GameModeParentLeftKnee "GameModeParentLeftKnee" -#define Character_GameModeParentLeftKneeRoll "GameModeParentLeftKneeRoll" -#define Character_GameModeParentRightHipRoll "GameModeParentRightHipRoll" -#define Character_GameModeParentRightKnee "GameModeParentRightKnee" -#define Character_GameModeParentRightKneeRoll "GameModeParentRightKneeRoll" -#define Character_GameModeParentLeftShoulderRoll "GameModeParentLeftShoulderRoll" -#define Character_GameModeParentLeftElbow "GameModeParentLeftElbow" -#define Character_GameModeParentLeftElbowRoll "GameModeParentLeftElbowRoll" -#define Character_GameModeParentRightShoulderRoll "GameModeParentRightShoulderRoll" -#define Character_GameModeParentRightElbow "GameModeParentRightElbow" -#define Character_GameModeParentRightElbowRoll "GameModeParentRightElbowRoll" - -#define Character_LeftFloorContact "LeftFloorContact" -#define Character_RightFloorContact "RightFloorContact" -#define Character_LeftHandFloorContact "LeftHandFloorContact" -#define Character_RightHandFloorContact "RightHandFloorContact" - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h deleted file mode 100644 index b4bf5cc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacterpose.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ - -#include - -#include -#include -#include - -#include - -/** \class FbxCharacterPose - * \nosubgrouping - * \brief A character pose is a character and an associated hierarchy of nodes. - * - * Only the default position of the nodes is considered, the animation data is ignored. - * - * You can access the content of a character pose, using the functions FbxCharacterPose::GetOffset(), - * FbxCharacterPose::GetLocalPosition(), and FbxCharacterPose::GetGlobalPosition(). - * Their source code is provided inline as examples on how to access the character pose data. - * - * To create a character pose, You must first create a hierarchy of nodes under the root - * node provided by function FbxCharacterPose::GetRootNode(). Then, feed this hierarchy - * of nodes into the character returned by function FbxCharacterPose::GetCharacter(). - * Offsets are set in the character links. Local positions are set using - * FbxNode::SetDefaultT(), FbxNode::SetDefaultR(), and FbxNode::SetDefaultS(). - * - * To set local positions from global positions: - * -# Declare lCharacterPose as a valid pointer to a FbxCharacterPose; - * -# Call lCharacterPose->GetRootNode()->SetLocalStateId(0, true); - * -# Call lCharacterPose->GetRootNode()->SetGlobalStateId(1, true); - * -# Call FbxNode::SetGlobalState() for all nodes found in the hierarchy under lCharacterPose->GetRootNode(); - * -# Call lCharacterPose->GetRootNode()->ComputeLocalState(1, true); - * -# Call lCharacterPose->GetRootNode()->SetCurrentTakeFromLocalState(FBXSDK_TIME_ZERO, true). - */ -class FBXSDK_DLL FbxCharacterPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCharacterPose,FbxObject); - -public: - //! Reset to an empty character pose. - void Reset(); - - /** Get the root node. - * \return Pointer to the root node. - */ - FbxNode* GetRootNode() const; - - /** Get the character. - * \return Pointer to the character. - */ - FbxCharacter* GetCharacter() const; - - /** Get offset matrix for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pOffset Receives offset matrix. - * \return \c true if successful, \c false otherwise. - */ - bool GetOffset(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pOffset) const; - - /** Get local position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pLocalT Receives local translation vector. - * \param pLocalR Receives local rotation vector. - * \param pLocalS Receives local scaling vector. - * \return \c true if successful, \c false otherwise. - */ - bool GetLocalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxVector4& pLocalT, FbxVector4& pLocalR, FbxVector4& pLocalS) const; - - /** Get global position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pGlobalPosition Receives global position. - * \return \c true if successful, \c false otherwise. - */ - bool GetGlobalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pGlobalPosition) const; - - /** Retrieve the pose scene used by this character pose - * \return The pose's scene (this is a different scene than the scene the character pose is in). */ - FbxScene* GetPoseScene() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone( FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - void Clone(FbxScene* pPoseScene, FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - -private: - FbxScene* mPoseScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h deleted file mode 100644 index ea78ea0..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraint.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_H_ - -#include - -#include -#include - -/** Base class for weighted animation constraints. - * Constraints are primarily used to impose limits on properties of objects (e.g. position, orientation, scale) - * and to automate animation processes. - * A constrained object is an object with properties constrained by one or more weighted constraint sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraint : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxConstraint, FbxObject); - -public: - /** - * \name Properties - */ - //@{ - /** This property represents the degree of influence of a constraint from 0.0 (no influence) to 100.0 (full influence). - * - * Default value is 100.0. - */ - FbxPropertyT Weight; - - /** This property controls whether the constraint is applied or not. - * If the value is \c false the constraint will have no effect. The default value is \c true. - * - * Default value is true. - */ - FbxPropertyT Active; - - /** This property handles the lock state of the constraint. - * - * When enabled, the constrained object cannot be moved away from its constrained location when the constraint is active. - * - * Default value is false. - */ - FbxPropertyT Lock; - //@} - - /** \enum EType Constraint attribute types. - */ - enum EType - { - eUnknown, //! Invalid constraint. - ePosition, //! Position constraint (referred to as a point constraint in Maya). - eRotation, //! Rotation constraint (referred to as an orient constraint in Maya). - eScale, //! Scale constraint. - eParent, //! Parent constraint. - eSingleChainIK, //! Single chain IK constraint. - eAim, //! Aim constraint. - eCharacter, //! Character constraint. - eCustom //! User defined constraints. - }; - - /** Access the type of the constraint. - * \return This type of the constraint. - */ - virtual EType GetConstraintType() const { return eUnknown; } - - /** Retrieve the constrained object. - * \return The constrained object. - */ - virtual FbxObject* GetConstrainedObject() const { return NULL; } - - /** Retrieve the count of constraint source. - * \return The count of constraint source. - */ - virtual int GetConstraintSourceCount() const { return 0; } - - /** Retrieve a constraint source with the specified index. - * \param pIndex The specified index. - * \return The constraint source at the specified index. - */ - virtual FbxObject* GetConstraintSource(int /*pIndex*/) const { return NULL; } - - /** Get the weight associated with a constraint source. - * \param pObject The given constraint source. - * \return The weight of the constraint source. - */ - double GetSourceWeight(const FbxObject* pObject) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -const FbxString GetWeightPropertyName(const FbxObject * pObject); -void CreateWeightPropertyForSourceObject(FbxObject * pConstraint, const FbxObject * pSourceObject, double pWeightValue); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h deleted file mode 100644 index 7a9c4d7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintaim.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_AIM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_AIM_H_ - -#include - -#include - -#include - -/** An aim constraint governs an object's orientation so that the object points to other objects. - * For example, you can use the aim constraint to point a light at an object or group of objects. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintAim : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintAim, FbxConstraint); - -public: - /** \enum EWorldUp Constraint world up type, which has the same meaning with Maya. - */ - enum EWorldUp - { - eAimAtSceneUp, //! Constraint scene up type. - eAimAtObjectUp, //! Constraint object up type. - eAimAtObjectRotationUp, //! Constraint object rotation up type. - eAimAtVector, //! Constraint vector type. - eAimAtNone, //! None constraint type. - eAimAtCount //! Constraint world up type count. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles the rotation offset value. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT RotationOffset; - - /** This property provides access to the object or objects which are the targets. - */ - FbxPropertyT AimAtObjects; - - /** This property provides access to the object being aimed. - */ - FbxPropertyT ConstrainedObject; - - /** This property handles world up type. - */ - FbxPropertyT WorldUpType; - - /** This property handles world up object. - */ - FbxPropertyT WorldUpObject; - - /** This property handles world up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT WorldUpVector; - - /** This property handles up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT UpVector; - - /** This property enables you set a specific axis for the constrained object to orient towards. - * - * Default value is (1, 0, 0). - */ - FbxPropertyT AimVector; - - /** This property handles whether to affect the rotation around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect the rotation around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect the rotation around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex The specified index. - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - - /** Set the world up object. - * \param pObject The new world up object. - */ - void SetWorldUpObject(FbxObject* pObject); - - /** Retrieve the world up object. - * \return The current world up object. - */ - FbxObject* GetWorldUpObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintAim::EWorldUp&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_AIM_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h deleted file mode 100644 index f957707..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintcustom.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for custom constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintCustom : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintCustom, FbxConstraint); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h deleted file mode 100644 index fccdb30..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintparent.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ - -#include - -#include - -#include - -/** The parent constraint creates a parent-to-child relationship between any two objects, from any two hierarchies. - * It creates the same relationship as the parent-to-child relationships found in hierarchies. - * You can use this constraint to connect objects without changing hierarchies. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintParent : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintParent, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect the translation of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationX; - - /** This property handles whether to affect the translation of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationY; - - /** This property handles whether to affect the translation of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationZ; - - /** This property handles whether to affect the rotation of the constrained object around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationX; - - /** This property handles whether to affect the rotation of the constrained object around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationY; - - /** This property handles whether to affect the rotation of the constrained object around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationZ; - - /** This property handles whether to affect the scaling of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingX; - - /** This property handles whether to affect the scaling of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingY; - - /** This property handles whether to affect the scaling of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingZ; - - /** This property used to access constraint sources. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstraintSources; - - /** This property used to access constrained object. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Set the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pTranslation The new offset vector. - */ - void SetTranslationOffset(FbxObject* pObject, FbxVector4 pTranslation); - - /** Retrieve the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetTranslationOffset(const FbxObject* pObject) const; - - /** Set the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pRotation The new offset vector. - */ - virtual void SetRotationOffset(const FbxObject* pObject, FbxVector4 pRotation); - - /** Retrieve the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetRotationOffset(const FbxObject* pObject) const; - - /** Add a constraint source to the constraint. - * \param pObject New constraint source. - * \param pWeight Weight of the constraint source. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the constraint source. - * \return The constraint source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h deleted file mode 100644 index 7fcc3e8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintposition.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a position constraint. - * A position constraint lets you constrain the position of an object based on the position of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintPosition : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintPosition,FbxConstraint); - -public: - - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles translation offset. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT Translation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Remove a source from the constraint. - * \param pObject Source object to remove. - */ - bool RemoveConstraintSource(FbxObject* pObject); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h deleted file mode 100644 index 51bea42..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintrotation.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a rotation constraint. - * A rotation constraint lets you constrain the rotation of an object based on the rotation of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintRotation : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintRotation, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles rotation offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Rotation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source object - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h deleted file mode 100644 index cf2f61d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintscale.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ - -#include - -#include - -#include - -/**\brief This constraint class contains methods for accessing the properties of a scale constraint. - * A scale constraint lets you constrain the scale of an object based on the scale of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintScale : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintScale,FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles scaling offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Scaling; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h deleted file mode 100644 index 237861c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintsinglechainik.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a single chain IK constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint); - -public: - /** Solver pole vector mode. - */ - enum ESolverMode - { - eRotatePlane, //! Rotate plane solver. - eSingleChain //! Single chain solver. - }; - - /** Pole vector mode. - */ - enum EPoleVectorMode - { - eVector, //! Pole vector type is vector. - eObject //! Pole vector type is object. - }; - - /** If the constraints read its animation on Translation and Scale for the nodes it constraints. - */ - enum EEvaluationMode - { - eNeverTS, //! The constraints never read its animation on translation and scale for the nodes. - eAutoDetect, //! The constraints read its animation on translation and scale for the nodes according to automatic detection. - eAlwaysTS //! The constraints always read its animation on translation and scale for the nodes. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles pole vector type. - */ - FbxPropertyT PoleVectorType; - - /** This property handles solver type. - */ - FbxPropertyT SolverType; - - /** This property handles evaluate TS animation. - */ - FbxPropertyT EvaluateTSAnim; - - /** This property handles pole vector objects. - */ - FbxPropertyT PoleVectorObjects; - - /** This property handles pole vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT PoleVector; - - /** This property handles twist value. - * - * Default value is 0. - */ - FbxPropertyT Twist; - - /** This property handles first joint object. - */ - FbxPropertyT FirstJointObject; - - /** This property handles end joint object. - */ - FbxPropertyT EndJointObject; - - /** This property handles effector object. - */ - FbxPropertyT EffectorObject; - //@} - - /** Get the weight of a source. - * \param pObject Source object that we want the weight. - */ - double GetPoleVectorObjectWeight(const FbxObject* pObject) const; - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight value of the source object expressed as a percentage. - * \remarks pWeight value is 100 percent by default. - */ - void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintPoleVectorCount() const; - - /** Retrieve a constraint source object. - * \param pIndex Index of constraint source object. - * \return Current source at the specified index. - */ - FbxObject* GetPoleVectorObject(int pIndex) const; - - /** Set the first joint object. - * \param pObject The first joint object. - */ - void SetFirstJointObject(FbxObject* pObject); - - /** Retrieve the first joint object. - * \return Current first joint object. - */ - FbxObject* GetFirstJointObject() const; - - /** Set the end joint object. - * \param pObject The end joint object. - */ - void SetEndJointObject(FbxObject* pObject); - - /** Retrieve the end joint object. - * \return Current end joint object. - */ - FbxObject* GetEndJointObject() const; - - /** Set the effector object. - * \param pObject The effector object. - */ - void SetEffectorObject(FbxObject* pObject); - - /** Retrieve the effector object. - * \return Current effector object. - */ - FbxObject* GetEffectorObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h deleted file mode 100644 index e62baf2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintutils.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ -#define _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ - -#include - -#include - -class FbxNode; - -/** Utility class for constraints - *\nosubgrouping - */ -class FBXSDK_DLL FbxConstraintUtils -{ -public: - /** Test if the given node is Single Chain IK Effector. - * \param pNode The given node - * \return \c true if it is, \c false otherwise. - */ - static bool IsNodeSingleChainIKEffector(FbxNode* pNode); -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h deleted file mode 100644 index dc233fd..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h +++ /dev/null @@ -1,370 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontrolset.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ - -#include - -#include - -#include - -class FbxControlSetPlug; - -/** \class FbxControlSetLink - * - * \brief This class represents a link between a given character's FK node and the associated node in the character hierarchy. - * - */ -class FBXSDK_DLL FbxControlSetLink -{ -public: - //! Default constructor. - FbxControlSetLink(); - - /** Copy constructor. - * \param pControlSetLink Given object. - */ - FbxControlSetLink(const FbxControlSetLink& pControlSetLink); - - /** Assignment operator. - * \param pControlSetLink Another FbxControlSetLink object assigned to this one. - */ - FbxControlSetLink& operator=(const FbxControlSetLink& pControlSetLink); - - /** Reset to default values. - * - * Member mNode is set to \c NULL and member mTemplateName is cleared. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this control set link. - FbxNode* mNode; - - //! A template name is a naming convention that is used to automatically map - //! the nodes of other skeletons that use the same naming convention for automatic characterization. - FbxString mTemplateName; -}; - -/** - * An effector wraps a character node (FbxNode) used to animate its control rig (FbxControlSet) via inverse kinematics. - */ -class FBXSDK_DLL FbxEffector -{ -public: - enum ESetId - { - eDefaultSet, - eAux1Set, - eAux2Set, - eAux3Set, - eAux4Set, - eAux5Set, - eAux6Set, - eAux7Set, - eAux8Set, - eAux9Set, - eAux10Set, - eAux11Set, - eAux12Set, - eAux13Set, - eAux14Set, - eSetIdCount - }; - - enum ENodeId - { - eHips, - eLeftAnkle, - eRightAnkle, - eLeftWrist, - eRightWrist, - eLeftKnee, - eRightKnee, - eLeftElbow, - eRightElbow, - eChestOrigin, - eChestEnd, - eLeftFoot, - eRightFoot, - eLeftShoulder, - eRightShoulder, - eHead, - eLeftHip, - eRightHip, - eLeftHand, - eRightHand, - eLeftHandThumb, - eLeftHandIndex, - eLeftHandMiddle, - eLeftHandRing, - eLeftHandPinky, - eLeftHandExtraFinger, - eRightHandThumb, - eRightHandIndex, - eRightHandMiddle, - eRightHandRing, - eRightHandPinky, - eRightHandExtraFinger, - eLeftFootThumb, - eLeftFootIndex, - eLeftFootMiddle, - eLeftFootRing, - eLeftFootPinky, - eLeftFootExtraFinger, - eRightFootThumb, - eRightFootIndex, - eRightFootMiddle, - eRightFootRing, - eRightFootPinky, - eRightFootExtraFinger, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - //! Default constructor with uninitialized character node. - FbxEffector(); - - /** Assignment operator. - * \param pEffector Another FbxEffector assigned to this one. - */ - FbxEffector& operator=(const FbxEffector& pEffector); - - /** Reset to default values. - * - mNode is set to NULL. - * - mShow is set to true. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this effector. - FbxNode* mNode; - - //! \c true if the effector is visible, \c false if hidden - bool mShow; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - //These members are for backward compatibility and should not be used. - //These properties are now published through class FbxControlSetPlug. - bool mTActive; - bool mRActive; - bool mCandidateTActive; - bool mCandidateRActive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \class FbxControlSet - * - * This class contains all methods to either set-up an exported control rig or query information on an imported control rig. - * A Control rig is a character manipulation tool that lets you change the position and orientation - * of a character to create or alter animation. - * - * This class also contains some methods to manipulate the FbxEffector and FbxControlSetLink. - * - * The FbxControlSet class contains FK rig (Forward Kinematics) and IK rig (Inverse Kinematics) animation. The FK rig is represented - * by a list of nodes while the IK rig is represented by a list of effectors. - * - * You can access the FK rig with the FbxControlSetLink class, using the functions FbxControlSet::SetControlSetLink() and FbxControlSet::GetControlSetLink(). - * - * You can access the IK rig with the FbxEffector class, using the functions FbxControlSet::SetEffector() and FbxControlSet::GetEffector(). - * - * \see FbxEffector, FbxControlSetLink - */ -class FBXSDK_DLL FbxControlSet -{ -public: - /** Reset to default values. - * Reset all effector and control set links. - */ - void Reset(); - - /** \enum EType Control rig type. - * - \e eNone No Control rig. - * - \e eFkIk Both an FK rig and IK rig. - * - \e eIkOnly Only an IK rig. - */ - enum EType - { - eNone, - eFkIk, - eIkOnly - }; - - /** Set type as given. - * \param pType The given type. - */ - void SetType(EType pType); - - /** Get type. - * \return The gotten type. - */ - EType GetType() const; - - /** Set use axis flag as given. - * \param pUseAxis The given use axis flag. - */ - void SetUseAxis(bool pUseAxis); - - /** Get use axis flag. - * \return The gotten use axis flag. - */ - bool GetUseAxis() const; - - /** Set lock transform flag as given. - * \param pLockTransform The given lock transform flag. - */ - void SetLockTransform(bool pLockTransform); - - /** Get lock transform flag. - * \return The gotten lock transform flag. - */ - bool GetLockTransform()const; - - /** Set lock 3D pick flag as given. - * \param pLock3DPick The given lock 3D pick flag. - */ - void SetLock3DPick(bool pLock3DPick); - - /** Get lock 3D pick flag. - * \return The gotten lock 3D pick flag. - */ - bool GetLock3DPick() const; - - /** Set a control set link for a character node ID. - * \param pCharacterNodeId Character node ID. - * \param pControlSetLink Control set link to be associated with the Character node ID. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid setting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool SetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, const FbxControlSetLink& pControlSetLink); - - /** Get the control set link associated with a character node ID. - * \param pCharacterNodeId Requested character node ID. - * \param pControlSetLink Optional pointer that returns the control set link if the function succeeds. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid getting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool GetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, FbxControlSetLink* pControlSetLink = NULL) const; - - /** Set an effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pEffector Effector to be associated with the effector node ID. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector pEffector); - - /** Get the effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested effector node. - * \param pEffector Optional pointer that returns the effector if the function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector* pEffector = NULL); - - /** Set an auxiliary effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pNode Auxiliary effector node to be associated with the effector node ID. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode* pNode, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set); - - /** Get the auxiliary effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested auxiliary effector node. - * \param pNode Optional pointer that returns the auxiliary effector node if the function succeeds. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode** pNode=NULL, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set) const; - - /** Get the name associated with an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \return Name associated with the effector node ID. - */ - static char* GetEffectorNodeName(FbxEffector::ENodeId pEffectorNodeId); - - /** Get ID associated with an effector node name. - * \param pEffectorNodeName Effector node name. - * \return Effector node ID associated with the given effector node name, or FbxEffector::eNodeIdInvalid (-1) if - * no effector node with pEffectorNodeName exists. - */ - static FbxEffector::ENodeId GetEffectorNodeId(const char* pEffectorNodeName); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void FromPlug(FbxControlSetPlug *pPlug); - void ToPlug(FbxControlSetPlug *pPlug); - -private: - FbxControlSet(); - ~FbxControlSet(); - - FbxCharacter* mCharacter; - EType mType; - bool mUseAxis; - bool mLockTransform; - bool mLock3DPick; - FbxControlSetLink mControlSetLink[FbxCharacter::eNodeIdCount]; // Except floor node IDs! - FbxEffector mEffector[FbxEffector::eNodeIdCount]; - FbxNode* mEffectorAux[FbxEffector::eNodeIdCount][FbxEffector::eSetIdCount-1]; - - FBXSDK_FRIEND_NEW(); - friend class FbxCharacter; - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Plug class for control set. - * \nosubgrouping - */ -class FBXSDK_DLL FbxControlSetPlug : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxControlSetPlug, FbxObject); - -public: - //! EType property of control set. - FbxPropertyT ControlSetType; - - //! Use axis flag. - FbxPropertyT UseAxis; - - //! Reference character. - FbxPropertyT Character; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - FbxArray mFKBuf; - FbxArray mIKBuf; - - friend class FbxScene; - friend class FbxControlSet; -}; - -inline EFbxType FbxTypeOf(const FbxControlSet::EType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h deleted file mode 100644 index af55c2b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhik2fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ - -#include - -#include - -#include - -class FbxCharacterPropertyInfo -{ -public: - const char* mHIKPropertyName; - const char* mFbxCharacterPropertyModeName; - const char* mFbxCharacterPropertyName; - int mIndex; - FbxCharacter::EPropertyUnit mUnit; -}; - -static const FbxCharacterPropertyInfo gHIK2FbxCharacterPropertyBridge[] = -{ - { "PullIterationCount" ,NULL,"PullIterationCount",0,FbxCharacter::ePropertyReal}, - { "Posture" ,NULL,"Posture",0,FbxCharacter::ePropertyEnum}, - { "ForceActorSpace" ,"ForceActorSpace",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ScaleCompensation" ,"ScaleCompensationMode","ScaleCompensation",0,FbxCharacter::ePropertyReal}, - { "HipsHeightCompensation" ,"HipsHeightCompensationMode","HipsHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleHeightCompensation" ,"AnkleHeightCompensationMode","AnkleHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleProximityCompensation" ,"AnkleProximityCompensationMode","AnkleProximityCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "MassCenterCompensation" ,NULL,"MassCenterCompensation",0,FbxCharacter::ePropertyReal}, - { "ApplyLimits" ,"ApplyLimits",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ChestReduction" ,NULL,"ChestReduction",0,FbxCharacter::ePropertyPercent}, - { "CollarReduction" ,NULL,"CollarReduction",0,FbxCharacter::ePropertyPercent}, - { "NeckReduction" ,NULL,"NeckReduction",0,FbxCharacter::ePropertyPercent}, - { "HeadReduction" ,NULL,"HeadReduction",0,FbxCharacter::ePropertyPercent}, - { "ParamFootContactStiffness" ,NULL,"FootContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandContactStiffness" ,NULL,"HandContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamFootFingerContactRollStiffness" ,NULL,"FootFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandFingerContactRollStiffness" ,NULL,"HandFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkle" ,NULL,"ReachActorLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkle" ,NULL,"ReachActorRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftKnee" ,NULL,"ReachActorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightKnee" ,NULL,"ReachActorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChest" ,NULL,"ReachActorChest",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHead" ,NULL,"ReachActorHead",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWrist" ,NULL,"ReachActorLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWrist" ,NULL,"ReachActorRightWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftElbow" ,NULL,"ReachActorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightElbow" ,NULL,"ReachActorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBase" ,NULL,"ReachActorRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBase" ,NULL,"ReachActorLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBase" ,NULL,"ReachActorRightToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBase" ,NULL,"ReachActorLeftToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBaseRotation" ,NULL,"ReachActorRightFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBaseRotation" ,NULL,"ReachActorLeftFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBaseRotation" ,NULL,"ReachActorRightToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBaseRotation" ,NULL,"ReachActorLeftToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkleRotationRotation" ,NULL,"ReachActorLeftAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkleRotation" ,NULL,"ReachActorRightAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHeadRotation" ,NULL,"ReachActorHeadRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWristRotation" ,NULL,"ReachActorLeftWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWristRotation" ,NULL,"ReachActorRightWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChestRotation" ,NULL,"ReachActorChestRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLowerChestRotation" ,NULL,"ReachActorLowerChestRotation",0,FbxCharacter::ePropertyPercent}, - { "HipsTOffsetX" ,NULL,"HipsTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetY" ,NULL,"HipsTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetZ" ,NULL,"HipsTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetX" ,NULL,"ChestTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetY" ,NULL,"ChestTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetZ" ,NULL,"ChestTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "LeftUpLegRollEx" ,"LeftUpLegRollExMode","LeftUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRollEx" ,"LeftLegRollExMode","LeftLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRollEx" ,"RightUpLegRollExMode","RightUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightLegRollEx" ,"RightLegRollExMode","RightLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRollEx" ,"LeftArmRollExMode","LeftArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRollEx" ,"LeftForeArmRollExMode","LeftForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightArmRollEx" ,"RightArmRollExMode","RightArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRollEx" ,"RightForeArmRollExMode","RightForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftUpLegRoll" ,"LeftUpLegRollMode","LeftUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRoll" ,"LeftLegRollMode","LeftLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRoll" ,"RightUpLegRollMode","RightUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightLegRoll" ,"RightLegRollMode","RightLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRoll" ,"LeftArmRollMode","LeftArmRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRoll" ,"LeftForeArmRollMode","LeftForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightArmRoll" ,"RightArmRollMode","RightArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRoll" ,"RightForeArmRollMode","RightForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "FloorContact" ,"FootFloorContact","FootFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticToes" ,"FootAutomaticToes",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RollExtractionMode" ,NULL,"RollExtractionMode",0,FbxCharacter::ePropertyEnum}, - { "FloorPivot" ,NULL,"FootFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "FootBottomToAnkle" ,NULL,"FootBottomToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootBackToAnkle" ,NULL,"FootBackToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootMiddleToAnkle" ,NULL,"FootMiddleToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootFrontToMiddle" ,NULL,"FootFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "FootInToAnkle" ,NULL,"FootInToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootOutToAnkle" ,NULL,"FootOutToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "ContactSize" ,NULL,"FootContactSize",0,FbxCharacter::ePropertyReal}, - { "HandFloorContact" ,"HandFloorContact","HandFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticFingers" ,"HandAutomaticFingers",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HandFloorPivot" ,NULL,"HandFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "HandBottomToWrist" ,NULL,"HandBottomToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandBackToWrist" ,NULL,"HandBackToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandMiddleToWrist" ,NULL,"HandMiddleToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandFrontToMiddle" ,NULL,"HandFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "HandInToWrist" ,NULL,"HandInToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandOutToWrist" ,NULL,"HandOutToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandContactSize" ,NULL,"HandContactSize",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandThumbTip" ,NULL,"LeftHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandIndexTip" ,NULL,"LeftHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandMiddleTip" ,NULL,"LeftHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandRingTip" ,NULL,"LeftHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandPinkyTip" ,NULL,"LeftHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandExtraFingerTip" ,NULL,"LeftHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandThumbTip" ,NULL,"RightHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandIndexTip" ,NULL,"RightHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandMiddleTip" ,NULL,"RightHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandRingTip" ,NULL,"RightHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandPinkyTip" ,NULL,"RightHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandExtraFingerTip" ,NULL,"RightHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootThumbTip" ,NULL,"LeftFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootIndexTip" ,NULL,"LeftFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootMiddleTip" ,NULL,"LeftFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootRingTip" ,NULL,"LeftFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootPinkyTip" ,NULL,"LeftFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootExtraFingerTip" ,NULL,"LeftFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootThumbTip" ,NULL,"RightFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootIndexTip" ,NULL,"RightFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootMiddleTip" ,NULL,"RightFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootRingTip" ,NULL,"RightFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootPinkyTip" ,NULL,"RightFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootExtraFingerTip" ,NULL,"RightFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "FingerSolving" ,"FingerSolving",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "FootFingerContact" ,"FootFingerContact","FootFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "FootContactType" ,NULL,"FootContactType",0,FbxCharacter::ePropertyEnum}, - { "FootFingerContactMode" ,NULL,"FootFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContact" ,"HandFingerContact","HandFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "HandContactType" ,NULL,"HandContactType",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContactMode" ,NULL,"HandFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "CtrlPullLeftToeBase" ,NULL,"CtrlPullLeftToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFoot" ,NULL,"CtrlPullLeftFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftKnee" ,NULL,"CtrlPullLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightToeBase" ,NULL,"CtrlPullRightToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFoot" ,NULL,"CtrlPullRightFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightKnee" ,NULL,"CtrlPullRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFingerBase" ,NULL,"CtrlPullLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftHand" ,NULL,"CtrlPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftElbow" ,NULL,"CtrlPullLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFingerBase" ,NULL,"CtrlPullRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightHand" ,NULL,"CtrlPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightElbow" ,NULL,"CtrlPullRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullLeftHand" ,NULL,"CtrlChestPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullRightHand" ,NULL,"CtrlChestPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullHead" ,NULL,"CtrlPullHead",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsPosition" ,NULL,"CtrlResistHipsPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlEnforceGravity" ,NULL,"CtrlEnforceGravity",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsOrientation" ,NULL,"CtrlResistHipsOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestPosition" ,NULL,"CtrlResistChestPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestOrientation" ,NULL,"CtrlResistChestOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftCollar" ,NULL,"CtrlResistLeftCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightCollar" ,NULL,"CtrlResistRightCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftKnee" ,NULL,"CtrlResistLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftKnee" ,NULL,"CtrlResistMaximumExtensionLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftKnee" ,NULL,"CtrlResistCompressionFactorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightKnee" ,NULL,"CtrlResistRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightKnee" ,NULL,"CtrlResistMaximumExtensionRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightKnee" ,NULL,"CtrlResistCompressionFactorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftElbow" ,NULL,"CtrlResistLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftElbow" ,NULL,"CtrlResistMaximumExtensionLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftElbow" ,NULL,"CtrlResistCompressionFactorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightElbow" ,NULL,"CtrlResistRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightElbow" ,NULL,"CtrlResistMaximumExtensionRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightElbow" ,NULL,"CtrlResistCompressionFactorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlSpineStiffness" ,NULL,"CtrlSpineStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlNeckStiffness" ,NULL,"CtrlNeckStiffness",0,FbxCharacter::ePropertyPercent}, - { "Mirror" ,"MirrorMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection" ,NULL,"ShoulderCorrection",0,FbxCharacter::ePropertyPercent}, - { "LeftKneeKillPitch" ,"LeftKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightKneeKillPitch" ,"RightKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "LeftElbowKillPitch" ,"LeftElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightElbowKillPitch" ,"RightElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HipsTranslationMode" ,NULL,"HipsTranslationMode",0,FbxCharacter::ePropertyEnum}, - { "WriteReference" ,"WriteReference",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "SyncMode" ,"SyncMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "Damping" ,NULL,"Damping",0,FbxCharacter::ePropertyReal}, - { "Orientation" ,"OrientationDampingMode","OrientationDamping",0,FbxCharacter::ePropertySecond}, - { "Displacement" ,"DisplacementDampingMode","DisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "DisplacementMemory" ,"DisplacementMemoryMode","DisplacementMemory",0,FbxCharacter::ePropertySecond}, - { "HipsDisplacementDamping" ,"HipsDisplacementDampingMode","HipsDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "AnkleDisplacementDamping" ,"AnkleDisplacementDampingMode","AnkleDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "WristDisplacementDamping" ,"WristDisplacementDampingMode","WristDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "Stabilization" ,NULL,"Stabilization",0,FbxCharacter::ePropertyReal}, - { "AnkleStabilizationTime" ,"AnkleStabilizationTimeMode","AnkleStabilizationTime",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationPerimeter" ,"AnkleStabilizationPerimeterMode","AnkleStabilizationPerimeter",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationAngularPerimeter" ,"AnkleStabilizationAngularPerimeterMode","AnkleStabilizationAngularPerimeter",0,FbxCharacter::ePropertyDegree}, - { "AnkleStabilizationFloorProximity" ,"AnkleStabilizationFloorProximityMode","AnkleStabilizationFloorProximity",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationDamping" ,"AnkleStabilizationDampingMode","AnkleStabilizationDamping",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationRecoveryTime" ,"AnkleStabilizationRecoveryTimeMode","AnkleStabilizationRecoveryTime",0,FbxCharacter::ePropertySecond}, - { "ContactBehaviour" ,NULL,"ContactBehaviour",0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection", NULL, "RealisticShoulder",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessX", NULL, "CollarStiffnessX",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessY", NULL, "CollarStiffnessY",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessZ", NULL, "CollarStiffnessZ",0,FbxCharacter::ePropertyReal}, - { "ExtraCollarRatio", NULL, "ExtraCollarRatio",0,FbxCharacter::ePropertyPercent}, - { "LeftLegMaxExtensionAngle", NULL, "LeftLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightLegMaxExtensionAngle", NULL, "RightLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "LeftArmMaxExtensionAngle", NULL, "LeftArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightArmMaxExtensionAngle", NULL, "RightArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "StretchStartArmsAndLegs", NULL, "StretchStartArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "StretchStopArmsAndLegs", NULL, "StretchStopArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "SnSScaleArmsAndLegs", NULL, "SnSScaleArmsAndLegs",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftWrist", NULL, "SnSReachLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightWrist", NULL, "SnSReachRightWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftAnkle", NULL, "SnSReachLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightAnkle", NULL, "SnSReachRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpine", NULL, "SnSScaleSpine",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpineChildren", NULL, "SnSScaleSpineChildren",0,FbxCharacter::ePropertyPercent}, - { "SnSSpineFreedom", NULL, "SnSSpineFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachChestEnd", NULL, "SnSReachChestEnd",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleNeck", NULL, "SnSScaleNeck",0,FbxCharacter::ePropertyPercent}, - { "SnSNeckFreedom", NULL, "SnSNeckFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachHead", NULL, "SnSReachHead",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll1" ,"LeafLeftUpLegRoll1Mode","LeafLeftUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll1" ,"LeafLeftLegRoll1Mode","LeafLeftLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll1" ,"LeafRightUpLegRoll1Mode","LeafRightUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll1" ,"LeafRightLegRoll1Mode","LeafRightLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll1" ,"LeafLeftArmRoll1Mode","LeafLeftArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll1" ,"LeafLeftForeArmRoll1Mode","LeafLeftForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll1" ,"LeafRightArmRoll1Mode","LeafRightArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll1" ,"LeafRightForeArmRoll1Mode","LeafRightForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll2" ,"LeafLeftUpLegRoll2Mode","LeafLeftUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll2" ,"LeafLeftLegRoll2Mode","LeafLeftLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll2" ,"LeafRightUpLegRoll2Mode","LeafRightUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll2" ,"LeafRightLegRoll2Mode","LeafRightLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll2" ,"LeafLeftArmRoll2Mode","LeafLeftArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll2" ,"LeafLeftForeArmRoll2Mode","LeafLeftForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll2" ,"LeafRightArmRoll2Mode","LeafRightArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll2" ,"LeafRightForeArmRoll2Mode","LeafRightForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll3" ,"LeafLeftUpLegRoll3Mode","LeafLeftUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll3" ,"LeafLeftLegRoll3Mode","LeafLeftLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll3" ,"LeafRightUpLegRoll3Mode","LeafRightUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll3" ,"LeafRightLegRoll3Mode","LeafRightLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll3" ,"LeafLeftArmRoll3Mode","LeafLeftArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll3" ,"LeafLeftForeArmRoll3Mode","LeafLeftForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll3" ,"LeafRightArmRoll3Mode","LeafRightArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll3" ,"LeafRightForeArmRoll3Mode","LeafRightForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll4" ,"LeafLeftUpLegRoll4Mode","LeafLeftUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll4" ,"LeafLeftLegRoll4Mode","LeafLeftLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll4" ,"LeafRightUpLegRoll4Mode","LeafRightUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll4" ,"LeafRightLegRoll4Mode","LeafRightLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll4" ,"LeafLeftArmRoll4Mode","LeafLeftArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll4" ,"LeafLeftForeArmRoll4Mode","LeafLeftForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll4" ,"LeafRightArmRoll4Mode","LeafRightArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll4" ,"LeafRightForeArmRoll4Mode","LeafRightForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll5" ,"LeafLeftUpLegRoll5Mode","LeafLeftUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll5" ,"LeafLeftLegRoll5Mode","LeafLeftLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll5" ,"LeafRightUpLegRoll5Mode","LeafRightUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll5" ,"LeafRightLegRoll5Mode","LeafRightLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll5" ,"LeafLeftArmRoll5Mode","LeafLeftArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll5" ,"LeafLeftForeArmRoll5Mode","LeafLeftForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll5" ,"LeafRightArmRoll5Mode","LeafRightArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll5" ,"LeafRightForeArmRoll5Mode","LeafRightForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeftLegFullRollExtraction" ,NULL,"LeftLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightLegFullRollExtraction" ,NULL,"RightLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "LeftArmFullRollExtraction" ,NULL,"LeftArmFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightArmFullRollExtraction" ,NULL,"RightArmFullRollExtraction",0,FbxCharacter::ePropertyPercent} -}; - -class HIK2FbxCharacterPropertyBridge -{ -public: - enum - { - mParamCount = sizeof(gHIK2FbxCharacterPropertyBridge) / sizeof(FbxCharacterPropertyInfo) - }; - static inline const FbxCharacterPropertyInfo& GetAt(int i) { return gHIK2FbxCharacterPropertyBridge[i] ;} - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromFbxCharacterProperty(const char* pCharacterPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(GetAt(lCounter).mFbxCharacterPropertyName && !strcmp(GetAt(lCounter).mFbxCharacterPropertyName, pCharacterPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromHIKProperty(const char* pHIKPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(!strcmp(GetAt(lCounter).mHIKPropertyName, pHIKPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudio.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudio.h deleted file mode 100644 index c06061a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudio.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_AUDIO_H_ -#define _FBXSDK_SCENE_AUDIO_H_ - -#include - -#include - -#include - -/** FBX SDK audio class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudio : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxAudio, FbxMediaClip); - -public: - /** - * \name Audio object creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created audio clip belongs. - * \param pName Name of the audio clip. - * \return Newly created audio clip - */ - static FbxAudio* Create(FbxScene* pContainer, const char* pName); - //@} - /** - *\name Reset audio - */ - //@{ - //! Reset the audio to default values. - void Reset() override; - //@} - - /** - * \name Audio attributes Management - */ - //@{ - - //! Audio file bit rate value (bit/s). - FbxPropertyT BitRate; - - //! Audio file sample rate value (Hz). - FbxPropertyT SampleRate; - - //! Audio file number of channels. - FbxPropertyT Channels; - - //! Audio file length. - FbxPropertyT Duration; - - /** Compound property to be used if animation data needs to be connected. - * In this case, specific properties should be added to this one with the Animatable flag set. - * \remarks By default, the Volume property is always created first and, unless explicitily - * removed by a "client", will always exist. - */ - FbxProperty AnimFX; - //@} - - /** - *\name Utility section - */ - //@{ - /** Access the Volume child property of the AnimFX. - * \return The volume property if it exists or an invalid property. - */ - FbxProperty Volume(); - //@} -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void InitializeAnimFX(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudiolayer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudiolayer.h deleted file mode 100644 index 0764ab0..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaudiolayer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_AUDIO_LAYER_H_ -#define _FBXSDK_SCENE_AUDIO_LAYER_H_ - -#include - -#include - -#include - -class FbxAudio; - -/** The audio layer is a collection of audio clips. Its purpose is to store - * a variable number of FbxAudio objects representing audio clips. The class provides - * a Mute, Solo and Lock states flags (bool properties), as well as a Clolor (double3 property). - * There is no evaluation system for audio layers inside the FBX SDK and an audio layer can be - * empty. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudioLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAudioLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the volume increment value. - * This property can be animated. - * Default value is \c 0.0 - */ - FbxPropertyT Volume; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - //! Reset this object properties to their default value. - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_LAYER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaxissystem.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaxissystem.h deleted file mode 100644 index 59a1d10..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxaxissystem.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaxissystem.h -#ifndef _FBXSDK_SCENE_AXIS_SYSTEM_H_ -#define _FBXSDK_SCENE_AXIS_SYSTEM_H_ - -#include - -#include -#include - -#include - -/** This class represents the coordinate system of the scene and can convert scenes - to other coordinate systems. By default the FbxScene uses a Y-Up axis - system. If the calling application wishes to change the default axis it will need to define the new - axis system and call the convert method with the scene as argument. The appropriate transforms will be - applied to the first level objects of the scene only (objects whose parent is the scene itself). Child - objects do not need to be transformed since they inherit from their parents. - The adjustment will affect the translation animation curves and the objects pivots values (the rotation - transformation is applied as a pre-rotation transform therefore the rotation animation curves do not need to - be transformed). Once converted, the scene will have its axis definition changed to the new system. - - For example: - \code - FbxScene* lScene = FbxScene::Create(sdkmanager, "MyScene"); - ... - // the scene is filled with objects - - int dir; - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this returns the equivalent of FbxAxisSystem::eYAxis - - FbxAxisSystem max; // we desire to convert the scene from Y-Up to Z-Up - max.ConvertScene(lScene); - - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this will now return the equivalent of FbxAxisSystem::eZAxis - \endcode - - No conversion will take place if the scene current axis system is equal to the new one. - - The EUpVector specifies which axis has the up and down direction in the system (typically this is the Y or Z axis). - The sign of the EUpVector is applied to represent the direction (1 is up and -1 is down relative to the observer). - - The EFrontVector specifies which axis has the front and back direction in the system. It is not an independent variable, - which means it depends on EUpVector. The enum values ParityEven and ParityOdd denote the first one and - the second one of the remain two axes in addition to the up axis. - - For example if the up axis is X, the remain two axes will be Y And Z, so the ParityEven is Y, and the ParityOdd is Z - ; If the up axis is Y, the remain two axes will X And Z, so the ParityEven is X, and the ParityOdd is Z; - If the up axis is Z, the remain two axes will X And Y, so the ParityEven is X, and the ParityOdd is Y. - - There still needs a parameter to denote the direction of the EFrontVector just as the EUpVector. And the sign of the - EFrontVector represents the direction (1 is front and -1 is back relative to observer). - - If the front axis and the up axis are determined, the third axis will be automatically determined as the left one. - The ECoordSystem enum is a parameter to determine the direction of the third axis just as the EUpVector sign. - It determines if the axis system is right-handed or left-handed just as the enum values. - - Some code for reconstructing a FbxAxisSystem object from reference scene. - \code - //the reference scene - FbxScene* lSceneReference = FbxScene::Create(sdkmanager, "ReferenceScene"); - ... - // the scene is filled with objects - - FbxAxisSystem lAxisSytemReference = lSceneReference->GetGlobalSettings().GetAxisSystem(); - - int lUpVectorSign = 1; - int lFrontVectorSign = 1; - - //get upVector and its sign. - EUpVector lUpVector = lAxisSsytemReference.getUpVector( lUpVectorSign ); - - //get FrontVector and its sign. - EFrontVector lFrontVector = lAxisSsytemReference.getFrontVector( lFrontVectorSign ); - - //get uCoorSystem. - ECoordSystem lCoorSystem = lAxisSsytemReference.GetCoorSystem(); - - //The FbxAxisSystem object to reconstruct back by saved parameter - FbxAxisSystem lAxisSytemReconstruct( lUpVectorSign * lUpVector, - lFrontVectorSign * lFrontVector, - lCoorSystem); - \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxAxisSystem -{ -public: - - /** \enum EUpVector Specifies which canonical axis represents up in the system (typically Y or Z). - */ - enum EUpVector - { - eXAxis = 1, - eYAxis = 2, - eZAxis = 3 - }; - - /** \enum EFrontVector Vector with origin at the screen pointing toward the camera. - * This is a subset of enum EUpVector because axis cannot be repeated. - * We use the system of "parity" to define this vector because its value (X,Y or Z axis) - * really depends on the up-vector. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - * \see Detailed description of FbxAxisSystem. - */ - enum EFrontVector - { - eParityEven = 1, - eParityOdd = 2 - }; - - /** \enum ECoordSystem Specifies the third vector of the system. - * The FbxAxisSystem deduces the correct vector and direction based on this flag - * and the relationship with the up and front vectors. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - */ - enum ECoordSystem - { - eRightHanded, - eLeftHanded - }; - - /** \enum EPreDefinedAxisSystem Enumeration that can be used to initialize a new instance of this class with - * predefined configurations (see the "Predefined axis systems" section). - */ - enum EPreDefinedAxisSystem - { - eMayaZUp, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMayaYUp, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eMax, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMotionBuilder, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eOpenGL, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eDirectX, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - eLightwave /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - }; - - /** - * \name Constructor and Destructor - */ - //@{ - FbxAxisSystem(); - - /** Constructor! - * \param pUpVector Specify the up vector. - * \param pFrontVector Specify the front vector. - * \param pCoorSystem Specify RightHanded coordinate system or LeftHanded coordinate system. - */ - FbxAxisSystem(EUpVector pUpVector, EFrontVector pFrontVector, ECoordSystem pCoorSystem); - - /** Copy constructor! - * \param pAxisSystem Another FbxAxisSystem object copied to this one. - */ - FbxAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Constructor! - * \param pAxisSystem Specify which predefined axis system to copy. - */ - FbxAxisSystem(const EPreDefinedAxisSystem pAxisSystem); - - //! Destructor. - virtual ~FbxAxisSystem(); - //@} - - /** - * \name Boolean operation. - */ - //@{ - - /** Equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are equal, \c false otherwise. - */ - bool operator==(const FbxAxisSystem& pAxisSystem)const; - - /** Non-equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are unequal, \c false otherwise. - */ - bool operator!=(const FbxAxisSystem& pAxisSystem)const; - //@} - - /** Assignment operation. - * \param pAxisSystem Axis system assigned to this one. - */ - FbxAxisSystem& operator=(const FbxAxisSystem& pAxisSystem); - - /** - * \name Predefined axis systems. - * These static members define the axis system of the most popular applications. - */ - //@{ - - //! Predefined axis system: MayaZUp (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaZUp; - - //! Predefined axis system: MayaYUp (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaYUp; - - //! Predefined axis system: Max (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Max; - - //! Predefined axis system: Motionbuilder (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Motionbuilder; - - //! Predefined axis system: OpenGL (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem OpenGL; - - //! Predefined axis system: DirectX (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem DirectX; - - //! Predefined axis system: Lightwave (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem Lightwave; - //@} - - /** Convert a scene to this axis system. Sets the axis system of the scene to this system unit. - * \param pScene The scene to convert - */ - void ConvertScene(FbxScene* pScene) const; - - /** Convert a scene to this axis system by using the specified - * node as an Fbx_Root. This is provided for backwards compatibility - * only and ConvertScene(FbxScene* pScene) should be used instead when possible. - * \param pScene The scene to convert - * \param pFbxRoot The Fbx_Root node that will be transformed. - */ - void ConvertScene(FbxScene* pScene, FbxNode* pFbxRoot) const; - - /** Get the EFrontVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for front, -1 for back (relative to observer). - * \return The EFrontVector of this axis system. - */ - EFrontVector GetFrontVector( int & pSign ) const; - - /** Get the EUpVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for up, -1 for down (relative to observer). - * \return The EUpVector of this axis system. - */ - EUpVector GetUpVector( int & pSign ) const; - - /** Accessor to the ECoordSystem of this object. - * \return The current coordinate axis system of this object. - */ - ECoordSystem GetCoorSystem() const; - - /** Represents the axis system as a 4x4 matrix - * \return The equivalent matrix of this axis system - */ - void GetMatrix(FbxAMatrix& pMatrix); - - /** Converts the children of the given node to this axis system. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene that the pRoot node belongs, nor does it adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The node whose children are converted. - * \param pSrcSystem The source axis system. - */ - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class AxisDef - { - public: - enum EAxis {eXAxis, eYAxis, eZAxis}; - bool operator==(const AxisDef& pAxis) const { return (mAxis == pAxis.mAxis) && (mSign == pAxis.mSign); } - EAxis mAxis; - int mSign; - }; - - AxisDef mUpVector; - AxisDef mFrontVector; - AxisDef mCoorSystem; - - void ConvertTProperty(FbxArray& pNodes, const FbxAxisSystem& pFrom) const; - void ConvertCurveNodes(FbxArray& pCurveNodes, const FbxAxisSystem& pFrom) const; - void AdjustPreRotation(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPivots(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void GetConversionMatrix(const FbxAxisSystem& pFrom, FbxMatrix& pConversionRM) const; - void AdjustLimits(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPoses(FbxScene* pScene, const FbxMatrix& pConversionRM) const; - void AdjustCamera(FbxNode* pNode, const FbxMatrix& pConversionRM ) const; - void AdjustCluster(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem, bool pSubChildrenOnly) const; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AXIS_SYSTEM_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollection.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollection.h deleted file mode 100644 index 9bdce27..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollection.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollection.h -#ifndef _FBXSDK_SCENE_COLLECTION_H_ -#define _FBXSDK_SCENE_COLLECTION_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** A FbxObject derived container for FbxObject. - * \nosubgrouping - * - */ -class FBXSDK_DLL FbxCollection : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCollection, FbxObject); - -public: - /** - * \name Collection member management - */ - //@{ - //! Deletes all objects in the container. - virtual void Clear(); - - /** Adds a member. - * \param pMember Object to be added. - */ - virtual bool AddMember(FbxObject* pMember) { return ConnectSrcObject(pMember); } - - /** Removes a member. - * \param pMember Object to be removed. - */ - virtual bool RemoveMember(FbxObject* pMember) { return DisconnectSrcObject(pMember); } - - /** Returns the number of objects contained within the collection. - * \return The number of objects the collection contains. - */ - inline int GetMemberCount () const { return GetSrcObjectCount(); } - - /** Returns the member of the collection at the given index. - * \param pIndex The given index. - * \return The member of the collection at the given index. - */ - inline FbxObject* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Judges whether an object is a part of the collection. - * \param pMember The member to be judged. - * \return \c True if it is a member of the collection, returns \c false if it is not a member. - */ - virtual bool IsMember(const FbxObject* pMember) const; - //@} - - /** - * \name Templated member management - */ - //@{ - /** Returns the number of class T objects contained within the collection. - * \return The number of objects of class T the collection contains. */ - template inline int GetMemberCount() const { return GetSrcObjectCount(); } - - /** Returns the member of class T at the given index in the collection. - * \param pIndex The given index. - * \return The member of class T at the given index. */ - template inline T* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Searches for a member of class T. - * \param pName Member name. */ - template inline T* FindMember(const char* pName) const { return FindSrcObject(pName); } - //@} - - /** - * \name Criteria based member management - */ - //@{ - /** Returns the number of objects contained within the collection that meet the specified criteria. - * \param pCriteria Defines a set of criteria that each object must meet in order to be included in the results. - * \return The number of objects the collection contains that meet the specified criteria. - */ - inline int GetMemberCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(pCriteria); } - - /** Returns the member at the given index in the collection if it meets the specified criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pIndex The given index. - * \return The member at the given index if it meets the criteria; NULL otherwise. - */ - inline FbxObject* GetMember(const FbxCriteria& pCriteria, int pIndex=0) const { return GetSrcObject(pCriteria, pIndex); } - - /** Searches for a member with the given name that also meets the given criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pName Member name. - * \return The member with the given name if it meets the criteria; NULL if no match could be found. - */ - inline FbxObject* FindMember(const FbxCriteria& pCriteria, const char* pName) const { return FindSrcObject(pCriteria, pName); } - //@} - - /** - * \name Selection management - */ - //@{ - /** Selects/Deselects all the contained objects. - * \param pSelection If \c true, all objects are selected, if \c false, all objects are deselected. - */ - virtual void SetSelectedAll(bool pSelection); - //@} -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h deleted file mode 100644 index c98c03e..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollectionexclusive.h -#ifndef _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ -#define _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ - -#include - -#include - -#include - -/** Class for exclusive collections. An object (FbxObject) should belong to only one exclusive collection at most. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCollectionExclusive : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxCollectionExclusive, FbxCollection); - -public: - /** Add a member if it's not a member of any other FbxCollectionExclusive objects. - * \param pMember Object to be added - */ - bool AddMember(FbxObject* pMember) override; -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainer.h deleted file mode 100644 index c9775ab..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainer.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainer.h -#ifndef _FBXSDK_SCENE_CONTAINER_H_ -#define _FBXSDK_SCENE_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** Generic container for object grouping and encapsulation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxContainer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainer, FbxObject); - -public: - /** - * \name Container dynamic attributes - */ - //@{ - /** Create a new property. - * \param pName Name of the property - * \param pType Type of the property - * \param pLabel Label of the property - * \return the newly created property - */ - FbxProperty CreateProperty(FbxString pName, FbxDataType & pType, FbxString pLabel); - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the template name information of the container - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateName; - - /** This property contains the template path information of the container - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplatePath; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateVersion; - - /** This property contains the view name information of the container - * - * To access this property do: ViewName.Get(). - * To set this property do: ViewName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ViewName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxContainerTemplate* mContainerTemplate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h deleted file mode 100644 index ed50e8a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainertemplate.h -#ifndef _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ -#define _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ - -#include - -#include - -#include - -//Container Template tokens -#define FBXSDK_CONTAINER_TEMPLATE_STR "templates" -#define FBXSDK_TEMPLATE_STR "template" -#define FBXSDK_EXTENDS_TEMPLATE_STR "extends" - -struct FbxContainerTemplate_internal; - -/** Class for Container Template files. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxContainerTemplate : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainerTemplate, FbxObject); - -public: - /** Parse template file to get extend templates. - * \param pTemplateFilePath The template file to be parsed. - * \param pExtendTemplateNames Fill extend templates' names to this array. - * \remark Call this function to get extend templates' names. - */ - void ParseTemplateFile(const char* pTemplateFilePath, FbxArray& pExtendTemplateNames); - - /** Add extend template path. - * \param pExtendTemplatePath The template file path to be added. - */ - void AddExtendTemplatePath(const char* pExtendTemplatePath); - - /** Get the (pIndex)th extend template path. - * \param pIndex Index of the queried item. - * \return The (pIndex)th extend template path. - */ - char* GetExtendTemplatePathAt(FbxUInt pIndex) const; - - /** Get the count of extend template path. - * \return The count of extend template path. - */ - FbxUInt GetExtendTemplateCount() const; - - /** Clear the extend template path. - */ - void ClearExtendTemplatePath(); - - /** This property contains the template name. - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateName; - - /** This property contains the template path. - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePath; - - /** This property contains the template package name. - * - * To access this property do: TemplatePackageName.Get(). - * To set this property do: TemplatePackageName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePackageName; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxContainerTemplate_internal* mData; - FbxArray mExtendTemplatePaths; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h deleted file mode 100644 index f96d754..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdisplaylayer.h -#ifndef _FBXSDK_SCENE_DISPLAY_LAYER_H_ -#define _FBXSDK_SCENE_DISPLAY_LAYER_H_ - -#include - -#include - -#include - -/** Class for display layers. -* \nosubgrouping -* Display layers are overlapping views of your scene that contain a list of members. -* The members are exclusive. Members cannot be part of multiple display layers. -* Display layers enables user to organize elements of scene and affect visibility and manipulation attributes of multiple objects at once. -*/ -class FBXSDK_DLL FbxDisplayLayer : public FbxCollectionExclusive -{ - FBXSDK_OBJECT_DECLARE(FbxDisplayLayer, FbxCollectionExclusive); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores the color of this display layer. - * - * Default value is FbxDouble3(0.8,0.8,0.8). - */ - FbxPropertyT Color; - /** This property stores the visibility of this display layer. - * - * Default value is true. - */ - FbxPropertyT Show; - /** This property stores the manipulation state of this display layer. - * - * Default value is false. - */ - FbxPropertyT Freeze; - /** This property stores the level of detail mode of this display layer. - * - * Default value is false. - */ - FbxPropertyT LODBox; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - // Default property values - static const FbxDouble3 sColorDefault; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DISPLAY_LAYER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocument.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocument.h deleted file mode 100644 index 6db8523..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocument.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocument.h -#ifndef _FBXSDK_SCENE_DOCUMENT_H_ -#define _FBXSDK_SCENE_DOCUMENT_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxTakeInfo; -class FbxPeripheral; -class FbxDocumentInfo; - -/** FbxDocument is a base class for FbxScene and FbxLibrary classes. - * A document is a collection (FbxCollection) of objects (FbxObject), called the root member objects. - * This is because these objects each form the root of an object graph. The manager (FbxManager) has access to all - * documents, scenes and libraries. - * - * A document can be contained in another document, thus, a hierarchy of documents - * can be built. The root of all documents is simply called the root document. - * - * A document manages animation stacks (FbxAnimStack). It also provides access to animation stack information (FbxTakeInfo). - * - * A document carries information in its FbxDocumentInfo. - * - * Documents manage peripherals to load and unload objects (see class FbxPeripheral), - * as well as references to other objects or documents. - * - * Error management is also available. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxDocument : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxDocument, FbxCollection); - -public: - /** - * \name Properties - */ - //@{ - FbxPropertyT Roots; - //@} - - /** - * \name Document Member Manager - */ - //@{ - //! Remove document members and restore default settings. - void Clear() override; - - /** Add a member object and connect it to Roots. - * \param pMember Object to add to the document. - */ - inline void AddRootMember(FbxObject* pMember){ AddMember(pMember); Roots.ConnectSrcObject(pMember); } - - /** Remove a member object from the document. - * \param pMember Object to remove from the document. - */ - inline void RootRootRemoveMember(FbxObject* pMember){ RemoveMember(pMember); Roots.DisconnectSrcObject(pMember); } - - /** Find a member object in the document, that has the given type and name. - * \param pName Member name. */ - template inline T* FindRootMember(const char* pName){ return Roots.FindSrcObject(pName); } - - //! Return the number of objects in the document. - inline int GetRootMemberCount () const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of class T in the document. - * \return The number of objects of class T in the document. */ - template inline int GetRootMemberCount() const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of the document that satisfy the given criteria. - * \param pCriteria Criteria for selecting objects. - * \return The number of objects satisfying the given criteria. - */ - int GetRootMemberCount(FbxCriteria pCriteria) const; - - /** Return the member of the document at given index. - * \param pIndex Selection index. - */ - inline FbxObject* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the member of class T of the document at given index. - * \param pIndex Selection index. */ - template inline T* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the document member which satisfies given criteria, for given index. - * \param pCriteria Criteria for selecting objects. - * \param pIndex Selection index. - */ - FbxObject* GetRootMember(FbxCriteria pCriteria, int pIndex=0) const; - - /** Is an object part of the document. - * \param pMember Queried object. - * \return \c true if pMember is an object part of the document, \c false otherwise. - */ - virtual bool IsRootMember(FbxObject* pMember) const; - //@} - - - /** - * \name Document information - */ - //@{ - /** Get the document information. - * \return Pointer to the document information object. - */ - FbxDocumentInfo* GetDocumentInfo() const; - - /** Set the document information. - * \param pSceneInfo Pointer to the document information object. - */ - void SetDocumentInfo(FbxDocumentInfo* pSceneInfo); - //@} - - /** - * \name Offloading management - * - * Documents manage peripherals to load and unload objects (see - * class FbxPeripheral). A peripheral manipulates the content - * of an object. For instance, a peripheral can load the connections - * of an object on demand. - * - * The document does not own the peripheral therefore - * it will not attempt to delete it at destruction time. Cloning - * the document will share the pointer to the peripheral across - * the cloned objects. The assignment operator has a similar behavior. - */ - //@{ - /** Set the current peripheral to be used to load or unload objects from this document. - * \param pPeripheral The peripheral to be set. - */ - void SetPeripheral(FbxPeripheral* pPeripheral); - - /** Retrieve the current peripheral of the document. - * \return Current peripheral. - */ - FbxPeripheral* GetPeripheral() override; - - /** Unload all the unloadable objects contained in the document using the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of objects that the document has been able to unload. - */ - int UnloadContent(FbxStatus* pStatus = NULL); - - /** Load all the objects contained in the document with the data from the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of loaded objects. - */ - int LoadContent(FbxStatus* pStatus = NULL); - - //@} - - /** - * \name Referencing management - */ - //@{ - - /** - * Fills an array of pointers to documents that reference objects in this document. - * - * \param pReferencingDocuments Array of pointers to documents. - * \returns Number of documents that reference objects in this document. - */ - int GetReferencingDocuments(FbxArray& pReferencingDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pFromDoc) - * that reference objects in this document. - * - * \param pFromDoc Pointer to the document containing referencing objects. - * \param pReferencingObjects Array of pointers to referencing objects. - * \returns Number of objects that reference objects in this document. - */ - int GetReferencingObjects(const FbxDocument* pFromDoc, FbxArray& pReferencingObjects) const; - - /** - * Fills an array of pointers to documents that are referenced by objects in this document. - * - * \param pReferencedDocuments Array of pointers to documents. - * \returns Number of documents that are referenced by objects in this document. - */ - int GetReferencedDocuments(FbxArray& pReferencedDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pToDoc) - * that are referenced by objects in this document. - * - * \param pToDoc Pointer to the document containing referenced objects. - * \param pReferencedObjects Array of pointers to referenced objects. - * \returns Number of objects that are referenced by objects in this document. - */ - int GetReferencedObjects(const FbxDocument* pToDoc, FbxArray& pReferencedObjects) const; - - /** - * Gets the path string to the root document, if the current document is contained in another document. - \returns Path to the root document. - */ - FbxString GetPathToRootDocument(void) const; - /** - * Gets the document path to the root document as an array of documents, if the current document is contained in another document. - * \param pDocumentPath Array of FbxDocument to store the document path. - * \param pFirstCall Recursive flag: always use pFirstCall = \c true. - */ - void GetDocumentPathToRootDocument(FbxArray& pDocumentPath, bool pFirstCall = true) const; - - /** - * Tells if this document is a root document. - \return \c false if the current document is contained in another document, \c true otherwise. - */ - bool IsARootDocument(void) { return (NULL == GetDocument()); } - //@} - - /** - * \name Animation Stack Management - * \remarks Animation stacks replaces the deprecated takes. - */ - //@{ - /** Holds the name of the FbxAnimStack that the application uses for animation in this document. - */ - FbxPropertyT ActiveAnimStackName; - - /** Adds a new animation stack object to this document. - * In case of error, FbxDocument::GetLastErrorID() will return - * \c eTakeError. - * \param pName Animation stack name. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if a new FbxAnimStack has been successfully created, - * \c false if an error occurred or if the specified name defines - * a FbxAnimStack that already exists in the document. - */ - bool CreateAnimStack(const char* pName, FbxStatus* pStatus = NULL); - - /** Destroy the animation stack object identified by pName from this document. - * \param pName Name of the animation stack to be deleted. - * \return \c true if the FbxAnimStack has been destroyed and \c false otherwise. - */ - bool RemoveAnimStack(const char* pName); - - /** Fill a string array with all existing animation stack names. - * The array of string is cleared before it is used - * \param pNameArray An array of string objects. - */ - void FillAnimStackNameArray(FbxArray& pNameArray); - - //@} - - /** - * \name Animation Stack Information Management - * \remark Although takes are deprecated, class FbxTakeInfo is not deprecated and - * now contains animation stack information. - */ - //@{ - /** Set information about an animation stack. - * \param pTakeInfo Animation stack information. Field FbxTakeInfo::mName specifies - * the targeted animation stack. - * \return \c true if animation stack is found with this name, and if information is set. - */ - bool SetTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Get information about an animation stack. - * \param pTakeName Name of the targeted animation stack. - * \return Animation stack information, or \c NULL if animation stack isn't found or - * has no information set for this document. - */ - FbxTakeInfo* GetTakeInfo(const FbxString& pTakeName) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - void ConnectVideos(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - void SetDocument(FbxDocument* pDocument) override; - - bool FindTakeName(const FbxString& pTakeName); - - FbxArray mTakeInfoArray; - -private: - FbxPeripheral* mPeripheral; - FbxDocumentInfo* mDocumentInfo; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h deleted file mode 100644 index a108851..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocumentinfo.h -#ifndef _FBXSDK_SCENE_DOCUMENT_INFO_H_ -#define _FBXSDK_SCENE_DOCUMENT_INFO_H_ - -#include - -#include - -#include - -class FbxThumbnail; - -/** This class contains scene thumbnails and user-defined summary data. - */ -class FBXSDK_DLL FbxDocumentInfo : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDocumentInfo, FbxObject); - -public: - /** - * \name Public properties - */ - //@{ - /** This property contains the last saved URL. - * - * To retrieve the value of this property, use LastSavedUrl.Get(). - * To set the value of this property, use LastSavedUrl.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSavedUrl; - - /** This property contains the URL. - * - * To retrieve the value of this property, use Url.Get(). - * To set the value of this property, use Url.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Url; - - /** Parent property for all properties related to creation. These properties - * should be set once when the file is created, and you should not change them - * during subsequent save or reload operations. - * The default properties are listed below, but application vendors can add new - * properties under this parent property. - */ - FbxProperty Original; - - /** This property contains the name of the original application vendor. - * - * To retrieve the value of this property, use Original_ApplicationVendor.Get(). - * To set the value of this property, use Original_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVendor; - - /** This property contains the original application name. - * - * To retrieve the value of this property, use Original_ApplicationName.Get(). - * To set the value of this property, use Original_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationName; - - /** This property contains the version of the original application. - * - * To retrieve the value of this property, use Original_ApplicationVersion.Get(). - * To set the value of this property, use Original_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVersion; - - /** This property contains the original file name. - * - * To retrieve the value of this property, use Original_FileName.Get(). - * To set the value of this property, use Original_FileName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_FileName; - - /** This property contains the original date and time. - * - * To retrieve the value of this property, use Original_DateTime_GMT.Get(). - * To set the value of this property, use Original_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT Original_DateTime_GMT; - - /** The parent property for all last saved-related properties. - * These properties update every time a file is saved. - * The default properties are below, but application vendors can add new - * properties under this parent property. - * The file creator must set both the original and last saved properties. - */ - FbxProperty LastSaved; - - /** This property contains the last saved application vendor. - * - * To retrieve the value of this property, use LastSaved_ApplicationVendor.Get(). - * To set the value of this property, use LastSaved_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVendor; - - /** This property contains the last saved application name. - * - * To retrieve the value of this property, use LastSaved_ApplicationName.Get(). - * To set the value of this property, use LastSaved_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationName; - - /** This property contains the last saved application version. - * - * To retrieve the value of this property, use LastSaved_ApplicationVersion.Get(). - * To set the value of this property, use LastSaved_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVersion; - - /** This property contains the last saved date and time. - * - * To retrieve the value of this property, use LastSaved_DateTime_GMT.Get(). - * To set the value of this property, use LastSaved_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT LastSaved_DateTime_GMT; - - /** This property points at the ".fbm" folder that is created when - * reading a FBX file that has embedded data. The embedded data - * is not saved in the FBX file. - * - * The default value is empty. - */ - FbxPropertyT EmbeddedUrl; - //@} - - /** \name User-defined summary data. - * These are user-completed fields that identify or classify the files. - */ - //@{ - FbxString mTitle; //! Title. - FbxString mSubject; //! Subject. - FbxString mAuthor; //! Author - FbxString mKeywords; //! Keywords. - FbxString mRevision; //! Revision. - FbxString mComment; //! Comment. - //@} - - /** - * \name Scene Thumbnail. - */ - //@{ - /** Returns the thumbnail for the scene. - * \return Pointer to the thumbnail. - */ - FbxThumbnail* GetSceneThumbnail(); - - /** Sets the thumbnail for the scene. - * \param pSceneThumbnail Pointer to the thumbnail. - */ - void SetSceneThumbnail(FbxThumbnail* pSceneThumbnail); - //@} - - /** Clears the content. - * Resets all the strings to an empty string and clears - * the pointer to the thumbnail. - */ - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxPropertyT SceneThumbnail; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_INFO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxenvironment.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxenvironment.h deleted file mode 100644 index 08a3ac5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxenvironment.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxenvironment.h -#ifndef _FBXSDK_SCENE_ENVIRONMENT_H_ -#define _FBXSDK_SCENE_ENVIRONMENT_H_ - -#include - -#include - -#include - -/** This class contains the description of a scene environment. It contains the properties of sun parameters, - * sky parameters, daylight controller parameters ,environment map parameters - * and cloud map parameters. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEnvironment : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxEnvironment, FbxObject); - -public: -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProvidesLighting() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ENVIRONMENT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxgroupname.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxgroupname.h deleted file mode 100644 index 27d16ee..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxgroupname.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgroupname.h -#ifndef _FBXSDK_SCENE_GROUP_NAME_H_ -#define _FBXSDK_SCENE_GROUP_NAME_H_ - -#include - -#include - -#define MODEL_PREFIX "Model::" -#define MATERIAL_PREFIX "Material::" -#define POSE_PREFIX "Pose::" -#define DEFORMER_PREFIX "Deformer::" -#define CONTAINER_PREFIX "Container::" -#define SUBDEFORMER_PREFIX "SubDeformer::" -#define CONSTRAINT_PREFIX "Constraint::" -#define CONTROLSET_PLUG_PREFIX "ControlSetPlug::" -#define AUDIO_PREFIX "Audio::" -#define AUDIO_LAYER_PREFIX "AudioLayer::" -#define VIDEO_PREFIX "Video::" -#define TEXTURE_PREFIX "Texture::" -#define THUMBNAIL_PREFIX "Thumbnail::" -#define MARKER_SET_PREFIX "MarkerSet::" -#define CONSTRAINT_PREFIX "Constraint::" -#define GEOMETRY_PREFIX "Geometry::" -#define GEOMETRY_WEIGHTED_MAP_PREFIX "GeometryWeightedMap::" -#define SCENE_PREFIX "Scene::" -#define CACHE_PREFIX "Cache::" -#define IMPLEMENTATION_PREFIX "Implementation::" -#define BINDINGTABLE_PREFIX "BindingTable::" -#define BINDINGOPERATOR_PREFIX "BindingOperator::" -#define LAYERED_TEXTURE_PREFIX "LayeredTexture::" -#define PROCEDURAL_TEXTURE_PREFIX "ProceduralTexture::" -#define DOCUMENT_PREFIX "Document::" -#define COLLECTION_PREFIX "Collection::" -#define COLLECTION_EXCLUSIVE_PREFIX "CollectionExclusive::" -#define NODE_ATTRIBUTE_PREFIX "NodeAttribute::" -#define ENVIRONMENT_PREFIX "KFbxEnvironment::" -#define OBJECTMETADATA_PREFIX "ObjectMetaData::" -#define EXPOSURECONTROL_PREFIX "ExposureControl::" - -#define ANIM_STACK_PREFIX "AnimStack::" -#define ANIM_LAYER_PREFIX "AnimLayer::" -#define ANIM_CURVENODE_PREFIX "AnimCurveNode::" -#define ANIM_CURVE_PREFIX "AnimCurve::" -#define ANIM_EVAL_PREFIX "AnimEvaluator::" - -#define SELECTION_SET_PREFIX "SelectionSet::" -#define SELECTION_SET_NODE_PREFIX "SelectionNode::" -#define DISPLAY_LAYER_PREFIX "DisplayLayer::" - -#define SCENEREFERENCE_PREFIX "SceneReference::" - -// Protein 2.0 -#define ADSK_ENVIRONMENT_PREFIX "ADSKEnvironmentDefinition::" -#define ADSK_LIGHT_PREFIX "ADSKLightDefinition::" -#define ADSK_PROCEDURALGEOMETRY_PREFIX "ADSKProceduralGeometryDefinition::" -#define ADSK_SURFACEMATERIAL_PREFIX "ADSKSurfaceMaterialDefinition::" -#define ADSK_TEXTURE_PREFIX "ADSKTextureDefinition::" -#define ADSK_SWATCHSCENE_PREFIX "ADSKSwatchSceneDefinition::" - -#include - -#endif /* _FBXSDK_SCENE_GROUP_NAME_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxlibrary.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxlibrary.h deleted file mode 100644 index c2d5860..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxlibrary.h +++ /dev/null @@ -1,330 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlibrary.h -#ifndef _FBXSDK_SCENE_LIBRARY_H_ -#define _FBXSDK_SCENE_LIBRARY_H_ - -#include - -#include -#include - -#include - -class FbxLocalizationManager; -class FbxCriteria; - -/** This library class represents libraries that store sub-libraries and shading objects. - * Shading objects are objects of class FbxTexture, FbxSurfaceMaterial, and FbxLight. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLibrary : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxLibrary, FbxDocument); - -public: - //! Returns a pointer to the parent library if one exists. - FbxLibrary* GetParentLibrary(void) const; - - /** Sets whether not this library is a system library. - * \param pSystemLibrary A flag which indicates whether or not this library is a system library. - */ - void SystemLibrary(bool pSystemLibrary); - - //! Returns whether or not this library is a system library. - bool IsSystemLibrary() const; - - /** The prefix must not include the dash and language code, nor - * can it contain the extension. But if you want, it can contain - * a folder or sub-folder, such as: locales/mydocloc. - * This is resolved using the XRef Manager, with priority - * given to the library's ".fbm" folder, if one exists. - * \param pPrefix New prefix to be set. - */ - void LocalizationBaseNamePrefix(const char* pPrefix); - - //! Retrieves the localization prefix. - FbxString LocalizationBaseNamePrefix() const; - - // ======================================================================= - // - // sub-library - // - // ======================================================================= - - /** Adds a sub-library - * \param pSubLibrary The sub-library to be added. - * \return \c True if adding the sub-library is successful, returns \c false if not. - */ - bool AddSubLibrary(FbxLibrary* pSubLibrary); - - /** Removes a sub-library - * \param pSubLibrary The sub-library to be removed. - * \return \c True if the sub-library is removed, \c false if not. - */ - bool RemoveSubLibrary(FbxLibrary* pSubLibrary); - - //! Returns the total number of sub-libraries - int GetSubLibraryCount(void) const; - - /** Returns the sub-library at the specified index. - * \param pIndex The sub-library index. - */ - FbxLibrary* GetSubLibrary(int pIndex) const; - - /** Clones the specified asset. - * \param pToClone The asset to be cloned. - * \param pOptionalDestinationContainer The container for the asset copy. - * \remarks The asset and all its dependents are cloned. - */ - FbxObject* CloneAsset( FbxObject* pToClone, FbxObject* pOptionalDestinationContainer = NULL) const; - - - /** Returns a criteria filter which you can use to filter objects - * when iterating items in the library. Only real 'assets' are returned, - * rather than FBX support objects. This currently includes - * lights, environments, materials and textures (maps). - * This is typically used to IMPORT from a library. - */ - static FbxCriteria GetAssetCriteriaFilter(); - - /** Returns a filter which you should use when you clone / export objects. - * This filters out objects that should remain in the asset library. - * - * Use this to EXPORT from a library (or CLONE from a library). - */ - static FbxCriteria GetAssetDependentsFilter(); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \param pAssetFilter The asset filter. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary, const FbxCriteria& pAssetFilter); - - - /** Returns a new instance of a library member. - * This instantiates the first object found that matches the filter. - * \param pFBX_TYPE The type of member - * \param pFilter A user specified filter - * \param pRecurse A flag that indicates whether to check sub-libraries - * \param pOptContainer Optional container for the cloned asset - * \return A new instance of the member. Note that the new member is not included with this library. - */ - template < class T > T* InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse = true, FbxObject* pOptContainer = NULL); - - - // ======================================================================= - // - // Localization - // - // ======================================================================= - /** Returns the localization manager for the library. - */ - - FbxLocalizationManager& GetLocalizationManager() const; - - /** Localization helper function. Calls the FBX SDK manager implementation. - * Sub-classes that manage their own localization can over-ride this function. - * \param pID The identifier for the text to localize. - * \param pDefault The default text. Uses pID if NULL. - * \return The potentially localized text. May return the parameter passed in. - */ - const char* Localize( const char* pID, const char* pDefault = NULL ) const override; - - // ======================================================================= - // - // Shading Object - // - // ======================================================================= - - /** Adds a shading object. - * \param pShadingObject The shading object to be added. - */ - bool AddShadingObject(FbxObject* pShadingObject); - - /** Removes a shading object. - * \param pShadingObject The shading object to be removed. - */ - bool RemoveShadingObject(FbxObject* pShadingObject); - - //! Returns the total number of shading objects - int GetShadingObjectCount(void) const; - - /** Returns the shading object at the specified index. - * \param pIndex Shading object index. - * \return The shading object located at the specified index. - */ - FbxObject* GetShadingObject(int pIndex) const; - - /** Returns the number of shading objects according to their implementations. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns The number of shading objects corresponding to the filtering parameters - */ - int GetShadingObjectCount(const FbxImplementationFilter& pCriteria) const; - - /** Returns a handle on the shading object at the specified index that corresponds to the given filtering parameters. - * \param pIndex Shading object index. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns A handle on the shading object at the specified index that corresponds to the given filtering parameters. - */ - FbxObject* GetShadingObject(int pIndex, const FbxImplementationFilter& pCriteria) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - mutable FbxLocalizationManager* mLocalizationManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template T* FbxLibrary::InstantiateMember(const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer) -{ - //First check all materials in the library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - T* lObject = GetMember(i); - if( pFilter.Match(lObject) ) - return FbxCast(CloneAsset(lObject,pOptContainer)); - } - - if( pRecurse ) - { - // then check all materials in each sub-library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - FbxLibrary* lLibrary = GetMember(i); - T* lClonedObject = lLibrary->InstantiateMember(pFBX_TYPE, pFilter, pRecurse, pOptContainer); - if( lClonedObject ) - return lClonedObject; - } - } - - return NULL; -} - -class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary) - -public: - FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary) - -public: - FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization) - -public: - FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; } - inline FbxLibrary* GetLibrary() const { return mAssetLibrary; } - -private: - FbxLibrary* mAssetLibrary; -}; - -class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject) - -public: - FbxEventMapAssetFileToAssetObject(const char* pFile) : - mAsset(NULL), - mFilePath( pFile ) - { - } - - inline const char* GetFilePath() const { return mFilePath; } - mutable FbxObject* mAsset; - -private: - FbxString mFilePath; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_LIBRARY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxmediaclip.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxmediaclip.h deleted file mode 100644 index a10e57b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxmediaclip.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmediaclip.h -#ifndef _FBXSDK_SCENE_MEDIACLIP_H_ -#define _FBXSDK_SCENE_MEDIACLIP_H_ - -#include - -#include - -#include - -/** FBX SDK media clip class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMediaClip : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxMediaClip, FbxObject); - -public: - /** - *\name Media clip class Reset - */ - //@{ - //! Reset the clip to default values. - virtual void Reset(); - //@} - - /** - * \name Media clip attributes Management - */ - //@{ - /** Specify the media full filename. - * \param pName media full filename. - * \return \c True,if update successfully, \c false otherwise. - */ - virtual bool SetFileName(const char* pName); - - /** Retrieve the media full filename. - * \return Media full filename. - */ - FbxString GetFileName () const; - - /** Specify the media relative filename. - * \param pName Media relative filename. - * \return \c True, if update successfully, \c false otherwise. - */ - virtual bool SetRelativeFileName(const char* pName); - - /** Retrieve the media relative filename. - * \return Media relative filename. - */ - FbxString GetRelativeFileName() const; - - /** Set the clip color. - * The color property can be used to display media clips on the user interface. It has no - * impact on the data itself and only uses the RGB components. - * \param pColor New color of the clip. - */ - void SetColor(FbxColor pColor); - - /** Retrieve the clip color. - * return Clip color. - */ - FbxColor GetColor() const; - - /** Set the play speed of the media clip. - * \param pPlaySpeed Playback speed of the clip. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad playback speed values. - */ - void SetPlaySpeed(double pPlaySpeed); - - /** Retrieve the play speed of the media clip. - * \return Playback speed. - */ - double GetPlaySpeed() const; - - /** Set the clip start time. - * \param pTime Start time of the media file. - */ - void SetClipIn(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipIn() const; - - /** Set the clip end time. - * \param pTime End time of the media file. - */ - void SetClipOut(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipOut() const; - - /** Set the time offset. - * The offset can be used to shift the playback start time of the clip. - * \param pTime Time offset of the clip. - */ - void SetOffset(FbxTime pTime); - - /* Retrieve the time offset. - * \return The current time shift. - */ - FbxTime GetOffset() const; - - /** Set the Free Running state of the media clip. - * The Free Running flag can be used by a client application to implement a - * playback scheme that is independent of the main timeline. - * \param pState State of the Free running flag. - */ - void SetFreeRunning(bool pState); - - /** Retrieve the Free Running state. - * \return Current free running flag. - */ - bool GetFreeRunning() const; - - - /** Set the Loop state of the media clip. - * The Loop flag can be used by a client application to implement the loop - * playback of the media clip. - * \param pLoop State of the loop flag. - */ - void SetLoop(bool pLoop); - - /** Retrieve the Loop state. - * \return Current loop flag. - */ - bool GetLoop() const; - - /** Set the Mute state of the media clip. - * The Mute flag can be used by a client application to implement the muting - * of the media clip. - * \param pMute State of the mute flag. - */ - void SetMute(bool pMute); - - /** Retrieve the Mute state. - * \return Current mute flag. - */ - bool GetMute() const; - - /** Media clip access mode. - */ - enum EAccessMode - { - eDisk, - eMemory, - eDiskAsync - }; - - /** Set the clip Access Mode. - * \param pAccessMode Clip access mode identifier. - */ - void SetAccessMode(EAccessMode pAccessMode); - - /** Retrieve the clip Access Mode. - * \return Clip access mode identifier. - */ - EAccessMode GetAccessMode() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxStringList GetTypeFlags() const override; - - void SetOriginalFormat(bool pState); - bool GetOriginalFormat() const; - void SetOriginalFilename(const char* pOriginalFilename); - const char* GetOriginalFilename() const; - - FbxPropertyT Color; - FbxPropertyT ClipIn; - FbxPropertyT ClipOut; - FbxPropertyT Offset; - FbxPropertyT PlaySpeed; - FbxPropertyT FreeRunning; - FbxPropertyT Loop; - FbxPropertyT Mute; - FbxPropertyT AccessMode; - -protected: - void Init(); - FbxPropertyT Path; - FbxPropertyT RelPath; - - bool mOriginalFormat; - FbxString mOriginalFilename; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMediaClip::EAccessMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_MEDIACLIP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectfilter.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectfilter.h deleted file mode 100644 index dae9265..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectfilter.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectfilter.h -#ifndef _FBXSDK_SCENE_OBJECT_FILTER_H_ -#define _FBXSDK_SCENE_OBJECT_FILTER_H_ - -#include - -#include - -#include - -/** \brief This object represents a filter criteria on an object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxObjectFilter -{ -public: - //! Destructor. - virtual ~FbxObjectFilter() {} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const = 0; - - /** Tells if this filter does NOT match the given object - * \param pObjectPtr The given object. - */ - virtual bool NotMatch(const FbxObject * pObjectPtr) const { return !Match(pObjectPtr); }; -}; - -/**\brief This class represents a name filter on an object. - *\nosubgrouping - */ -class FBXSDK_DLL FbxNameFilter : public FbxObjectFilter -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - /** Constructor - * \param pTargetName The target name. - */ - inline FbxNameFilter( const char* pTargetName ) : mTargetName( pTargetName ) {}; - - //! Destructor. - virtual ~FbxNameFilter() {} - //@} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const { return pObjectPtr ? mTargetName == pObjectPtr->GetName() : false; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mTargetName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_FILTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h deleted file mode 100644 index 3ff1955..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectmetadata.h -#ifndef _FBXSDK_SCENE_OBJECT_META_DATA_H_ -#define _FBXSDK_SCENE_OBJECT_META_DATA_H_ - -#include - -#include - -#include - -/** This class is used to hold meta-data information on nodes. - * \nosubgrouping - * - * This class does not offer any new functionality over a regular FbxObject; - * all meta-data information should be stored in properties. - * - */ -class FBXSDK_DLL FbxObjectMetaData : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxObjectMetaData, FbxObject); -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_META_DATA_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h deleted file mode 100644 index cb8f895..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectscontainer.h -#ifndef _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ -#define _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ - -#include - -#include -#include - -#include - -typedef FbxArray FbxAttributeFilters; - -/* Internal helper class used to traverse scene in the FbxAxisSystem and FbxSystemUnit - */ -class FbxObjectsContainer -{ -public: - enum EDepth - { - eChildOnly, - eChildAndSubChild, - eSubChildWithNoScaleInherit - }; - - FbxObjectsContainer() : mStartNode(NULL) {} - virtual ~FbxObjectsContainer(){ Clear(); } - - // Store all anim curve nodes pointers that need to be converted - FbxArray mFCurvesT; - FbxArray mFCurvesR; - FbxArray mFCurvesS; - - // Store all node that need to be converted - FbxArray mNodes; - -public: - void ExtractSceneObjects(FbxScene* pScene, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void ExtractSceneObjects(FbxNode* pRootNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void Clear() { mFCurvesT.Clear(); mFCurvesR.Clear(); mFCurvesS.Clear(); mNodes.Clear(); mStartNode = NULL; } - -protected: - // Extract all node and fcurve from all take for this node. - void ExtractNodesAnimCurveNodes(FbxNode* pNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - void ExtractAnimCurveNodes(FbxNode* pNode); - bool InheritsScale( FbxNode* pNode ) const; - - FbxNode* mStartNode; -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxpose.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxpose.h deleted file mode 100644 index 344aeb2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxpose.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpose.h -#ifndef _FBXSDK_SCENE_POSE_H_ -#define _FBXSDK_SCENE_POSE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; -class FbxPose; -class FbxNode; -class FbxUserNotification; - -/** This structure contains the description of a named pose. - * FbxPose contains one FbxPoseInfo array to store all of FBX nodes and their transform matrix info. - */ -struct FbxPoseInfo -{ - FbxMatrix mMatrix; //!< Transform matrix of the node. - bool mMatrixIsLocal; //!< If true, the transform matrix above is defined in local coordinates. - FbxNode* mNode; //!< FBX node, which may be skeleton or geometry (skinned) node. -}; - -typedef FbxArray NodeList; -typedef FbxArray PoseList; -typedef FbxArray PoseInfoList; - -/** This class contains the description of a Pose and provide some methods to access Pose info in one FBX scene. - * \nosubgrouping - * The FbxPose object can be setup to hold "Bind Pose" data or "Rest Pose" data. - * - * The Bind Pose holds the transformation (translation, rotation and scaling) - * matrix of all the nodes implied in a link deformation. This includes the geometry - * being deformed, the links deforming the geometry, and recursively all the - * ancestors nodes of the link. The Bind Pose gives you the transformation of the nodes - * at the moment of the binding operation when no deformation occurs. - * - * The Rest Pose is a snapshot of a node transformation. A Rest Pose can be used - * to store the position of every node of a character at a certain point in - * time. This pose can then be used as a reference position for animation tasks, - * like editing walk cycles. - * - * One difference between the two modes is in the validation performed before - * adding an item and the kind of matrix stored. - * - * In "Bind Pose" mode, the matrix is assumed to be defined in the global space, - * while in "Rest Pose" the type of the matrix may be specified by the caller. So - * local system matrices can be used. Actually, because there is one such flag for - * each entry (FbxPoseInfo), it is possible to have mixed types in a FbxPose elements. - * It is therefore the responsibility of the caller to check for the type of the retrieved - * matrix and to do the appropriate conversions if required. - * - * The validation of the data to be added consists of the following steps: - * - * \li If this FbxPose object stores "Bind Poses", then - * add a FbxPoseInfo only if the node is not already - * associated to another "Bind Pose". This check is done - * by visiting ALL the FbxPose objects in the system. - * - * The above test is only performed for the "Bind Pose" type. While - * the next one is always performed, no matter what kind of poses this - * FbxPose object is setup to hold. - * - * \li If a node is already inserted in the FbxPose internal list, - * then the passed matrix MUST be equal to the one already stored. - * If this is not the case, the Add method will return -1, indicating - * that no new FbxPoseInfo has been created. - * - * If the Add method succeeds, it will return the index of the FbxPoseInfo - * structure that as been created and held by the FbxPose object. - * - * To ensure data integrity, the stored information can only be - * accessed using the provided methods (read-only). If an entry needs to be - * modified, the caller has to remove the FbxPoseInfo item by calling Remove(i) - * and then Add a new one. - * - * The internal list is not ordered and the search inside this list is linear - * (from the first element to ... the first match or the end of the list). - * - */ -class FBXSDK_DLL FbxPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxPose,FbxObject); - -public: - /** Set the type of pose. - * \param pIsBindPose If true, type will be bind pose, else rest pose. - */ - void SetIsBindPose(bool pIsBindPose); - - /** Pose identifier flag. - * \return \c true if this object holds BindPose data. - */ - bool IsBindPose() const { return mType == 'b'; } - - /** Pose identifier flag. - * \return \c true if this object holds RestPose data. - */ - bool IsRestPose() const { return mType == 'r'; } - - /** Get number of stored items. - * \return The number of items stored. - */ - int GetCount() const { return mPoseInfo.GetCount(); } - - /** Stores the pose transformation for the given node. - * \param pNode pointer to the node for which the pose is stored. - * \param pMatrix Pose transform of the node. - * \param pLocalMatrix Flag to indicate if pMatrix is defined in Local or Global space. - * \param pMultipleBindPose Flag to indicate if multiple bind pose exist. If this is false, all matrix for one node should be same in different bind pose. - * \return -1 if the function failed or the index of the stored item. - */ - int Add(FbxNode* pNode, const FbxMatrix& pMatrix, bool pLocalMatrix = false, bool pMultipleBindPose = true); - - /** Remove the pIndexth item from the Pose object. - * \param pIndex Index of the item to be removed. - */ - void Remove(int pIndex); - - /** Get the node name. - * \param pIndex Index of the queried item. - * \return The node initial and current names. - * \remarks If the index is invalid an empty FbxNameHandler is returned. - */ - FbxNameHandler GetNodeName(int pIndex) const; - - /** Get the node. - * \param pIndex Index of the queried item. - * \return A pointer to the node referenced. - * \remarks If the index is invalid or no pointer to a node is set, returns NULL. - * The returned pointer will become undefined if the FbxPose object is destroyed. - */ - FbxNode* GetNode(int pIndex) const; - - /** Get the transform matrix. - * \param pIndex Index of the queried item. - * \return A reference to the pose matrix. - * \remarks If the index is invalid a reference to an identity matrix is returned. - * The reference will become undefined if the FbxPose object is destroyed. - */ - const FbxMatrix& GetMatrix(int pIndex) const; - - /** Get the type of the matrix. - * \param pIndex Index of the queried item. - * \return \c true if the matrix is defined in the Local coordinate space and false otherwise. - * \remarks If the FbxPose object is configured to hold BindPose data, this method will always return \c false. - */ - bool IsLocalMatrix(int pIndex) const; - - /** - * \name Search Section - */ - //@{ - /** This structure defines the strategy of comparing FBX node name. - * FBX node has an initial name and a current name (refer to FbxNameHandler). The structure defines which name to use when compare two nodes. - */ - enum ENameComponent - { - eInitialNameComponent = 1, //! use initial name when compare two nodes - eCurrentNameComponent = 2, //! use current name when compare two nodes - eAllNameComponents = 3 //! use both initial and current name when compare two nodes, it's true if one or both matched - }; - - /** Look in the FbxPose object for the given node name. - * \param pNodeName Name of the node we are looking for. - * \param pCompareWhat Bitwise or of the following flags: INTIALNAME_COMPONENT, eCurrentNameComponent - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNameHandler& pNodeName, char pCompareWhat = eAllNameComponents) const; - - /** Look in the FbxPose object for the given node. - * \param pNode the node we are looking for. - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNode* pNode) const; - //@} - - /** - * \name Utility Section - */ - //@{ - /** Get the list of Poses objects that contain the node with name pNodeName. - * This method will look in all the poses of all the scenes. - * \param pManager The manager owning the poses and scenes. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of Poses objects that contain the node with name pNodeName. - * \param pScene Scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Check this BindPose and report an error if all the conditions to a valid bind pose are not - * met. The conditions are: - * - * \li a) We are a BindPose. - * \li b) For every node in the bind pose, all their parent node are part of the bind pose. - * \li c) All the deforming nodes are part of the bind pose. - * \li d) All the parents of the deforming nodes are part of the bind pose. - * \li e) Each deformer relative matrix correspond to the deformer Inv(bindMatrix) * deformed Geometry bindMatrix. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \return true if all the above conditions are met and false otherwise. - * \remarks - * a) If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - * \remarks - * b) If the returned value is false, querying for the error will return the reason of the failure. - * As soon as one of the above conditions is not met, this method return ignoring any subsequent errors. - * Run the IsBindPoseVerbose if more details are needed. - */ - bool IsValidBindPose(FbxNode* pRoot, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes (stored in the appropriate array). It is then up to the - * caller to fill the UserNotification if desired. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMissingAncestors Each ancestor missing from the BindPose is added to this list. - * \param pMissingDeformers Each deformer missing from the BindPose is added to this list. - * \param pMissingDeformersAncestors Each deformer ancestors missing from the BindPose is added to this list. - * \param pWrongMatrices Nodes that yield to a wrong matrix comparisons are added to this list. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, NodeList& pMissingAncestors, NodeList& pMissingDeformers, NodeList& pMissingDeformersAncestors, NodeList& pWrongMatrices, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes and send them directly to the UserNotification. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pUserNotification Pointer to the user notification where the messages will be accumulated. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If the pUserNotification parameter is NULL, this method will call IsValidBindPose(). - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, FbxUserNotification* pUserNotification, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - - //Returns false if pNode is already inserted in the list and the current matrix is different from the stored one. Also, if this pose is a rest pose, check if - //pNode belongs to other BindPoses (accessed through the scene pointer). pPos will contains the index of the FbxPoseInfo if the parameters are already stored in this object. - bool ValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - - bool LocalValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - static bool GetSpecificPoseContaining(int poseType, FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - -private: - FbxPoseInfo* GetItem(int pIndex) const; - void UpdatePosInfoList(); - bool IsValidBindPoseCommon(FbxNode* pRoot, NodeList* pMissingAncestors, NodeList* pMissingDeformers, NodeList* pMissingDeformersAncestors, NodeList* pWrongMatrices, FbxStatus* pStatus, double pMatrixCmpTolerance=0.0001); - - char mType; - PoseInfoList mPoseInfo; - bool mPoseInfoIsDirty; - FbxPropertyT Nodes; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_POSE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxreference.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxreference.h deleted file mode 100644 index 0e0f2c4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxreference.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreference.h -#ifndef _FBXSDK_SCENE_REFERENCE_H_ -#define _FBXSDK_SCENE_REFERENCE_H_ - -#include - -#include - -#include - -/** Contains information about a referenced file. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxSceneReference : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSceneReference, FbxObject); - -public: - /// \name Basic properties - //@{ - //! Path to the referenced file. - FbxPropertyT< FbxString > ReferenceFilePath; - //! Referenced file's namespace. - FbxPropertyT< FbxString > ReferenceNameSpace; - //! Referenced file's node name. - FbxPropertyT< FbxString > ReferenceNodeName; - //! Referenced file's node depth. - FbxPropertyT< FbxInt> ReferenceDepth; - //! \c True if referenced file is loaded. - FbxPropertyT< FbxBool > IsLoaded; - //! \c True if referenced file is locked. - FbxPropertyT< FbxBool > IsLocked; - //@} - - /// \name Proxy related properties. - //@{ - //! \c True if referenced file is the original proxy. - FbxPropertyT< FbxBool > IsOriginalProxy; - - //! \c True if referenced file is active. - FbxPropertyT< FbxBool > IsActiveProxy; - - //! The name of proxy manager where the referenced file's proxy can be found. - FbxPropertyT< FbxString > ProxyManagerName; - /** Referenced file's proxy tag. - * \remarks Proxy tags are unique names assigned to proxy references to more easily manage those references in Maya. - */ - FbxPropertyT< FbxString > ProxyTag; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_REFERENCE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxscene.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxscene.h deleted file mode 100644 index bededb5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxscene.h +++ /dev/null @@ -1,491 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscene.h -#ifndef _FBXSDK_SCENE_H_ -#define _FBXSDK_SCENE_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxGeometry; -class FbxTexture; -class FbxSurfaceMaterial; -class FbxCharacter; -class FbxControlSetPlug; -class FbxGenericNode; -class FbxPose; -class FbxCharacterPose; -class FbxVideo; -class FbxGlobalLightSettings; -class FbxGlobalCameraSettings; - -/** This class contains the description of a 3D scene. It contains the nodes (including the root node) (FbxNode), - * materials, textures, videos, gobos, - * poses, characters, character poses, control set plugs, - * generic nodes, - * scene information, global settings, - * and a global evaluator. - * The nodes are structured in a tree under the scene's root node. - * - * When an object is created using the FBX SDK, a scene is usually passed as argument to the - * object creation function to specify that the object belongs to this scene. - * At this point, a connection is made with the object as source and the scene as destination. - * - * All objects in the scene can be queried by connection index. In addition, - * generic nodes, materials, and textures can also be queried by name. In this latter case, the - * first object with the queried name will be returned. - * - * The global evaluator (FbxAnimEvaluator) is used to compute animation values - * for animated scenes. - * \nosubgrouping - */ -class FBXSDK_DLL FbxScene : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxScene, FbxDocument); - -public: - //! \name Scene Management - //@{ - //! Clear the scene content by deleting the node tree below the root node and restoring default settings. - void Clear() override; - - /** Get the root node of the scene. - * \return Pointer to the root node. - * \remarks This node is not saved. Do not use it to apply a global transformation to the node hierarchy. If a global transformation must be applied, insert a new node below this one. */ - FbxNode* GetRootNode() const; - //@} - - //! \name Texture Material and Video Access - //@{ - /** Clear, then fill, a texture array with all existing textures included in the scene. - * \param pTextureArray An array of texture pointers. */ - void FillTextureArray(FbxArray& pTextureArray); - - /** Clear, then fill, a material array with all existing materials included in the scene. - * \param pMaterialArray An array of material pointers. */ - void FillMaterialArray(FbxArray& pMaterialArray); - //@} - - //! \name Generic Node Access - //@{ - /** Get number of generic nodes in the scene. - * \return Number of Generic Nodes in this scene. */ - int GetGenericNodeCount() const; - - /** Get generic node at given index. - * \param pIndex Position in the list of the generic nodes. - * \return Pointer to the generic node or \c NULL if the index is out of bounds. - */ - FbxGenericNode* GetGenericNode(int pIndex); - - /** Access a generic node from its name. - * \param pName Name of the generic node. - * \return found generic node - */ - FbxGenericNode* GetGenericNode(const char* pName); - - /** Add a generic node to this scene. - * \param pGenericNode Pointer to the generic node to be added. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. */ - bool AddGenericNode(FbxGenericNode* pGenericNode); - - /** Remove the generic node from this scene. - * \param pGenericNode Pointer to the generic node to be removed. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. - * \remarks The pointed object is not referenced by the scene anymore but is not deleted. */ - bool RemoveGenericNode(FbxGenericNode* pGenericNode); - //@} - - - //! \name Character Management - //@{ - /** Get number of characters. - * \return Number of characters in this scene. */ - int GetCharacterCount() const; - - /** Get character at given index. - * \param pIndex Position in the list of the characters. - * \return Pointer to the character or \c NULL if index is out of bounds. */ - FbxCharacter* GetCharacter(int pIndex); - - /** Create a new character. - * \param pName Name given to character. - * \return Index of the created character. */ - int CreateCharacter(const char* pName); - - /** Destroy character. - * \param pIndex Specify which character to destroy. */ - void DestroyCharacter(int pIndex); - //@} - - //! \name ControlSetPlug Management - //@{ - /** Get number of ControlSetPlugs. - * \return Number of ControlSet plugs in this scene. */ - int GetControlSetPlugCount() const; - - /** Get ControlSetPlug at given index. - * \param pIndex Position in the list of the ControlSetPlug - * \return Pointer to ControlSetPlug or \c NULL if index is out of bounds. */ - FbxControlSetPlug* GetControlSetPlug(int pIndex); - - /** Create a new ControlSetPlug. - * \param pName Name given to ControlSetPlug. - * \return Index of created ControlSetPlug. */ - int CreateControlSetPlug(const char* pName); - - /** Destroy ControlSetPlug. - * \param pIndex Specify which ControlSetPlug to destroy. */ - void DestroyControlSetPlug(int pIndex); - //@} - - //! \name Character Pose Management - //@{ - /** Get number of character poses. - * \return Number of character poses in this scene. - * \remarks Character Poses and Poses are two distinct entities having their own lists. */ - int GetCharacterPoseCount() const; - - /** Get character pose at given index. - * \param pIndex Position in the list of character poses. - * \return Pointer to the character pose or \c NULL if index is out of bounds. */ - FbxCharacterPose* GetCharacterPose(int pIndex); - - /** Create a new character pose. - * \param pName Name given to character pose. - * \return Index of created character pose. */ - int CreateCharacterPose(const char* pName); - - /** Destroy character pose. - * \param pIndex Specify which character pose to destroy. */ - void DestroyCharacterPose(int pIndex); - //@} - - //! \name Pose Management - //@{ - /** Get number of poses. - * \return Number of poses in the scene. - * \remarks Poses and Character Poses are two distinct entities having their own lists. */ - int GetPoseCount() const; - - /** Get pose at given index. - * \param pIndex Position in the list of poses. - * \return Pointer to the pose or \c NULL if index is out of bounds. */ - FbxPose* GetPose(int pIndex); - - /** Add a pose to this scene. - * \param pPose The pose (for example: bind pose, rest pose) to be added to the scene. - * \return If the pose is correctly added to the scene, return \c true. Otherwise, if the pose is already in the scene, return \c false. */ - bool AddPose(FbxPose* pPose); - - /** Remove the specified pose from the scene. - * \param pPose The pose (for example: bind pose, rest pose) to be removed from the scene. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(FbxPose* pPose); - - /** Remove the pose at the given index from the scene. - * \param pIndex Index of the pose to be removed. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(int pIndex); - //@} - - //! \name Scene information - //@{ - /** Get the scene information. - * \return Pointer to the scene information object. */ - FbxDocumentInfo* GetSceneInfo() { return GetDocumentInfo(); } - - /** Set the scene information. - * \param pSceneInfo Pointer to the scene information object. */ - void SetSceneInfo(FbxDocumentInfo* pSceneInfo) { SetDocumentInfo(pSceneInfo); } - //@} - - //! \name Global Settings - //@{ - /** Access global settings. - * \return Reference to the Global Settings. */ - FbxGlobalSettings& GetGlobalSettings(); - - /** Const access to global settings. - * \return Const reference to the Global Settings. */ - const FbxGlobalSettings& GetGlobalSettings() const; - //@} - - /** \name Scene Animation Evaluation - * The scene's animation evaluator is used to compute animation values for animated scenes. A typical - * usage would be to compute the global transform matrix of a node \c lNode at a given time \c lTime. - * \code - FbxAMatrix& lGlobalMatrix = lNode->GetScene()->GetAnimationEvaluator()->GetNodeGlobalTransform(lNode, lTime); - - or the exact equivalent: - - FbxAMatrix& lGlobalMatrix = lNode->EvaluateGlobalTransform(lTime); - * \endcode - * - * The user can create one or more evaluators in the scene. The default evaluator is set using SetEvaluator. When - * GetEvaluator is called, if the scene has no evaluator, an evaluator is created with default values. */ - //@{ - /** Set the current animation stack context used by the animation evaluator. - * \param pAnimStack The animation stack to set as current. - * \remark Changing the current animation stack will also cause the animation evaluator to reset its state. */ - void SetCurrentAnimationStack(FbxAnimStack* pAnimStack); - - /** Retrieve the current animation stack. - * \return the current animation stack. If none were set previously, the default one will be returned if it exists. */ - FbxAnimStack* GetCurrentAnimationStack(); - - /** Set the global evaluator used by this scene evaluation engine. - * \param pEvaluator The evaluator to be used for evaluation processing of this scene. */ - void SetAnimationEvaluator(FbxAnimEvaluator* pEvaluator); - - /** Get the global evaluator used by this scene evaluation engine. - * If no evaluator were previously set, this function will return either the first evaluator found attached to this scene, or a new default evaluator. - * \return The evaluator to be used for evaluation processing of this scene. */ - FbxAnimEvaluator* GetAnimationEvaluator(); - //@} - - /** Clear then fill a pose array with all existing pose included in the scene. - * \param pPoseArray An array of pose pointers. */ - void FillPoseArray(FbxArray& pPoseArray); - - //! \name Material Access - //@{ - /** Get number of materials. - * \return Number of materials in this scene. */ - int GetMaterialCount() const; - - /** Get the material at the given index. - * \param pIndex Position in the list of materials. - * \return Pointer to the material or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetMaterialCount(). */ - FbxSurfaceMaterial* GetMaterial(int pIndex); - - /** Get the material by its name. - * \param pName Name of the material. - * \return Pointer to the material or \c NULL if not found. */ - FbxSurfaceMaterial* GetMaterial(const char* pName); - - /** Add the material to this scene. - * \param pMaterial Pointer to the material to be added. - * \return true on successful addition. */ - bool AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove the material from this scene. - * \param pMaterial Pointer to the material to be removed. - * \return true on successful removal. */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - //@} - - //! \name Texture Access - //@{ - /** Get number of textures (type FbxTexture). - * \return Number of textures in this scene. Includes types FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * \remarks To get the number of textures of a specific type, use GetSrcCount(). For example: - * \code - * int lNbFileTextures = lScene->GetSrcObjectCount(); - * int lNbLayeredTextures = lScene->GetSrcObjectCount(); - * int lNbProceduralTextures = lScene->GetSrcObjectCount(); - * \endcode */ - int GetTextureCount() const; - - /** Get the texture at the given index. pIndex must be between 0 and GetTextureCount(). - * \param pIndex Position in the list of textures. - * \return Pointer to the texture or \c NULL if the index is out of bounds. - * \remarks To get the texture of a specific texture type, use GetSrcObject(). For example: - * \code - * FbxFileTexture* lFileTexture = lScene->GetSrcObject(i); - * FbxLayeredTexture* lLayeredTexture = lScene->GetSrcObject(i); - * FbxProceduralTexture* lProceduralTexture = lScene->GetSrcObject(i); - * \endcode */ - FbxTexture* GetTexture(int pIndex); - - /** Get the texture by its name. - * \param pName Name of the texture. - * \return Pointer to the texture or \c NULL if not found. */ - FbxTexture* GetTexture(const char* pName); - - /** Add the texture to this scene. - * \param pTexture Pointer to the texture to be added. - * \return \c true on successful addition. */ - bool AddTexture(FbxTexture* pTexture); - - /** Remove the texture from this scene. - * \param pTexture Pointer to the texture to be removed. - * \return \c true on successful removal. */ - bool RemoveTexture(FbxTexture* pTexture); - //@} - - //! \name Node Access - //@{ - /** Get number of nodes. - * \return Number of nodes in this scene. */ - int GetNodeCount() const; - - /** Get the node at the given index. - * \param pIndex Position in the list of nodes. - * \return Pointer to the node or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetNodeCount(). */ - FbxNode* GetNode(int pIndex); - - /** Add the node to this scene. - * \param pNode Pointer to the node to be added. - * \return true on successful addition. */ - bool AddNode(FbxNode* pNode); - - /** Remove the node from this scene. - * \param pNode Pointer to the node to be removed. - * \return true on successful removal. */ - bool RemoveNode(FbxNode* pNode); - - /** Helper method for determining the number of nodes that have curves on surface attributes in the scene. Since the curve-on-surface - * nodes are connected to nurbs geometry and not any FbxNode in the scene, they won't normally be picked up in a graph traversal. - * \return The number of curve-on-surface nodes in the scene */ - int GetCurveOnSurfaceCount(); - - /** Get the first node with this name. - * \param pName Name of the node. - * \return Pointer to the node, or \c NULL if node is not found. */ - FbxNode* FindNodeByName(const FbxString& pName); - //@} - - //! \name Geometry Access - //@{ - /** Get number of geometries. - * \return Number of geometries in this scene. */ - int GetGeometryCount() const; - - /** Get the geometry at the given index. - * \param pIndex Position in the list of geometries. - * \return Pointer to the geometry or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetGeometryCount(). */ - FbxGeometry* GetGeometry(int pIndex); - - /** Add the geometry to this scene. - * \param pGeometry Pointer to the geometry to be added. - * \return true on successful addition. */ - bool AddGeometry(FbxGeometry* pGeometry); - - /** Remove the geometry from this scene. - * \param pGeometry Pointer to the geometry to be removed. - * \return true on successful removal. */ - bool RemoveGeometry(FbxGeometry* pGeometry); - //@} - - //! \name Video Access - //@{ - /** Get number of videos. - * \return Number of videos in this scene. */ - int GetVideoCount() const; - - /** Get the video at the given index. - * \param pIndex Position in the list of videos. - * \return Pointer to the video or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetVideoCount(). */ - FbxVideo* GetVideo(int pIndex); - - /** Add the video to this scene. - * \param pVideo Pointer to the video to be added. - * \return true on successful addition. */ - bool AddVideo(FbxVideo* pVideo); - - /** Remove the video from this scene. - * \param pVideo Pointer to the video to be removed. - * \return true on successful removal. */ - bool RemoveVideo(FbxVideo* pVideo); - //@} - - /** \name Utilities */ - //@{ - /** Synchronize all the Show properties of node instances. - * Walks all the node attributes defined in the scene and synchronize the Show property of all the nodes that reference the node attribute so that they all contain the same value. - * This method should be called after the FBX scene is completely created, typically right after the calls to the FbxImporter::Import() or just before the calls to the FbxExporter::Export(). - * \remarks Applications only need to call this method if their interpretation of the Show property implies that setting the Show state on one instance affect all of them. - * \see FbxNode::Visibility property, FbxNode::Show property */ - void SyncShowPropertyForInstance(); - - /** Compute the bounding box and its center for all (or selected) nodes. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pSelected If \c true, only take into account selected geometry, otherwise take all geometry into account. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool ComputeBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, bool pSelected=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void ConvertNurbsSurfaceToNurbs(); - void ConvertMeshNormals(); - void ConvertNurbsCurvesToNulls(); - void ConnectTextures(); - void BuildTextureLayersDirectArray(); - void FixInheritType(FbxNode *pNode); - - void UpdateScaleCompensate(FbxNode *pNode, FbxIOSettings& pIOS); - - FbxClassId ConvertAttributeTypeToClassID(FbxNodeAttribute::EType pAttributeType); - - // These data structures are only used for legacy FBX files (version 6.x and earlier). The - // validity of their content is not guaranteed with the most recent versions. - FbxGlobalLightSettings& GlobalLightSettings() { return *mGlobalLightSettings; } - FbxGlobalCameraSettings& GlobalCameraSettings() { return *mGlobalCameraSettings; } - - // Clone this scene object (and everything else it contains if clone type is eDeepClone) - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - FbxObject& Copy(const FbxObject& pObject) override; - - void ConnectMaterials(); - - void BuildMaterialLayersDirectArray(); - void ReindexMaterialConnections(); // called to make sure that eIndex is remapped to eIndexToDirect - - FbxMultiMap* AddTakeTimeWarpSet(const char *pTakeName); - FbxMultiMap* GetTakeTimeWarpSet(const char *pTakeName); - - // This function will destroy the scene (and all the objects directly connected to it) without sending - // the Connect notifications nor trying to disconnect the objects first. This is a bypass of the intended - // workflow and should be used with care. - void ForceKill(); - -private: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void ConnectTextureLayerElement(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType, FbxNode* pParentNode); - void BuildTextureLayersDirectArrayForLayerType(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType); - - FbxNode* mRootNode; - FbxGlobalLightSettings* mGlobalLightSettings; - FbxGlobalCameraSettings* mGlobalCameraSettings; - FbxAnimEvaluator* mAnimationEvaluator; - FbxAnimStack* mCurrentAnimationStack; - FbxCharPtrSet mTakeTimeWarpSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionnode.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionnode.h deleted file mode 100644 index 4c7adf8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionnode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionnode.h -#ifndef _FBXSDK_SCENE_SELECTION_NODE_H_ -#define _FBXSDK_SCENE_SELECTION_NODE_H_ - -#include - -#include - -#include - -/** FbxSelectionNode is an auxiliary class for Selection Set. -* \nosubgrouping -* Used to group objects with their components (e.g. vertex, edge, and face), when adding it to a selection set (FbxSelectionSet). -* \see FbxSelectionSet -*/ -class FBXSDK_DLL FbxSelectionNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionNode, FbxObject); - -public: - /** \enum ESelectType SelectionNode type identifier. - * - \e eVertexLevel Vertex level selection. - * - \e eEdgeLevel Edge level selection. - * - \e eFaceLevel Face level selection. - * - \e eObjectLevel Object level selection. - * - \e eSelectTypeCount Number of Select Types. - */ - enum ESelectType - { - eVertexLevel, - eEdgeLevel, - eFaceLevel, - eObjectLevel, - eSelectTypeCount - }; - - /** Set an object whose components or itself is contained in the SelectionNode. - * \param pObject The object whose components or itself is contained in the SelectionNode. - * \return \c true if the object is set successfully. \c false otherwise. - * \remarks It is possible a SDK user will try to set multiple objects to one SelectionNode, but only the last one will be kept. - */ - bool SetSelectionObject(FbxObject* pObject); - - /** Get the object whose components or itself or both are contained in the SelectionNode. - * \return The object whose components or itself or both are contained in the SelectionNode. - */ - FbxObject* GetSelectionObject() const; - - /** To detect if the SelectionNode is valid. - * \return \c true if this is a valid SelectionNode. \c false otherwise. - * \remarks SelectionNode is valid if selection object is set. - * SelectionNode is not valid if no selection object is set. - */ - bool IsValid() const; - - /** \c true means the object itself is also in the selection set; - * \c false means only the object's components are in the selection set, the object is not. - */ - bool mIsTheNodeInSet; - - /** Index array for selected vertices. - */ - FbxArray mVertexIndexArray; - - /** Index array for selected edges. - */ - FbxArray mEdgeIndexArray; - - /** Index array for selected faces. - */ - FbxArray mPolygonIndexArray; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxArray*> mSubTypeSelectArray; - static const char* SELECT_TYPE_NAMES[(int)eSelectTypeCount]; - -protected: - void Construct(const FbxObject* pFrom) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_NODE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionset.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionset.h deleted file mode 100644 index de29194..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxselectionset.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionset.h -#ifndef _FBXSDK_SCENE_SELECTION_SET_H_ -#define _FBXSDK_SCENE_SELECTION_SET_H_ - -#include - -#include -#include - -#include - -/** FBX SDK selection set class. -* \nosubgrouping -* Represents a set of selected objects (FbxObject) and components. This is a non-exclusive (multiple membership) collection. -* Objects (FbxObject) can be added to a FbxSelectionSet directly, but to add components (vertexes, edges, or faces) -* you create a selection node (FbxSelectionNode) to group the object and its components together as a single item to be added. -* \see FbxSelectionNode -*/ -class FBXSDK_DLL FbxSelectionSet : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionSet, FbxCollection); - -public: - /** This property stores annotation of the selection set. - * Default value is "". - */ - FbxPropertyT SelectionSetAnnotation; - - /** - * \name Utility functions - */ - //@{ - - /** Get the selected faces of a specified object. - * \param pObj The specified object. - * \param pPolygonIndexArray The array to take the indices of the selected faces. - * \remarks The indices of selected faces will be put in pPolygonIndexArray. - */ - void GetFaceSelection( FbxObject* pObj,FbxArray& pPolygonIndexArray ) const; - - /** Get the selected edges of a specified object. - * \param pObj The specified object. - * \param pEdgeIndexArray The array to take the indices of the selected edges. - * \remarks The indices of selected face will be put in pEdgeIndexArray. - */ - void GetEdgeSelection( FbxObject* pObj,FbxArray& pEdgeIndexArray ) const; - - /** Get the selected vertices of a specified object. - * \param pObj The specified object. - * \param pVertexIndexArray The array to take the indices of the selected vertices. - * \remarks The indices of selected face will be put in pVertexIndexArray. - */ - void GetVertexSelection( FbxObject* pObj,FbxArray& pVertexIndexArray ) const; - - /** Get list of two types of member in the selection set: SelectionNodes and Directly contained objects. - * \param pSelectionNodeList The array to take selection nodes of the selection set. - * \param pDirectObjectList The array to take directly contained objects of the selection set. - * \remarks There might be two types members for a selection set: selection node and directly contained object. - * They will be listed in pSelectionNodeList and pDirectObjectList separately. - */ - void GetSelectionNodesAndDirectObjects(FbxArray &pSelectionNodeList, FbxArray &pDirectObjectList) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_SET_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxtakeinfo.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxtakeinfo.h deleted file mode 100644 index b1faad3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxtakeinfo.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtakeinfo.h -#ifndef _FBXSDK_SCENE_TAKEINFO_H_ -#define _FBXSDK_SCENE_TAKEINFO_H_ - -#include - -#include -#include -#include - -#include - -class FbxThumbnail; - -/** This FbxTakeLayerInfo structure is used to identify a layer by name and id number. - */ -struct FbxTakeLayerInfo -{ - FbxString mName; - int mId; -}; - -/** This class contains take information from an imported file - * or exported to an output file. - * - * A "take" is in fact a group of animation data grouped by name, so - * the FBX file format can support many "animation takes" in an FBX file to mimic - * how a movie is produced by making many takes of the same scene. - * - * The most used data is the "take name", other data are rarely used. - * Example of use: to get the list of all - * animation take names of FBX file without loading all the scene content. - * When a FbxImporter is initialized, the take information can be read and can be available - * before the long Import() step, this way, we can get the take info data very fast - * since we don't need to load all the animation scene data. - * \code - * // Ex: to get all take names in a FBX file - * for(int lAnimStackCount=0; lAnimStackCount < lImporter->GetAnimStackCount(); lAnimStackCount++) - * { - * FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(lAnimStackCount); - * FbxString lTakeName = lTakeInfo->mName; - * } - * \endcode - */ -class FBXSDK_DLL FbxTakeInfo -{ -public: - - /** Default constructor. - */ - FbxTakeInfo(); - - /** Destructor. - */ - virtual ~FbxTakeInfo(); - - /** Copy Constructor. - * \param pTakeInfo The take information to be copied. - */ - FbxTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Assignment operator. - * \param pTakeInfo The take information to be assigned. . - */ - FbxTakeInfo& operator=(const FbxTakeInfo& pTakeInfo); - - //! Take name. - FbxString mName; - - /** The take name once it is imported in a scene. - * You can modify it if it must be different from the take name in the imported file. - * \remarks This field is only used when importing a scene. - */ - FbxString mImportName; - - //! Take description. - FbxString mDescription; - - /** Import/export flag. - * Set to \c true by default, set to \c false if the take must not be imported or exported. - */ - bool mSelect; - - //! Local time span, set to animation interval if it is left at the default value. - FbxTimeSpan mLocalTimeSpan; - - //! Reference time span, set to animation interval if it is left at the default value. - FbxTimeSpan mReferenceTimeSpan; - - /** Time value for offsetting the animation keys once they are imported in a scene. - * You can modify it if you need the animation of a take to be offset. - * The effect depends on the state of \c mImportOffsetType. - * \remarks This field is only used when importing a scene. - */ - FbxTime mImportOffset; - - /** \enum EImportOffsetType Import offset types. - * - \e eAbsolute - * - \e eRelative - */ - enum EImportOffsetType - { - eAbsolute, - eRelative - }; - - /** Import offset type. - * If set to \c eAbsolute, \c mImportOffset gives the absolute time of - * the first animation key and the appropriate time shift is applied - * to all of the other animation keys. - * If set to \c eRelative, \c mImportOffset gives the relative time - * shift applied to all animation keys. - */ - EImportOffsetType mImportOffsetType; - - /** Copies the layer information from the take information. - * \param pTakeInfo The take information to be copied. - */ - void CopyLayers(const FbxTakeInfo& pTakeInfo); - - //! List of each layer's information. - FbxArray mLayerInfoList; - - //! Current Layer. - int mCurrentLayer; -}; - -#include - -#endif /* _FBXSDK_SCENE_TAKEINFO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxthumbnail.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxthumbnail.h deleted file mode 100644 index a79df4d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxthumbnail.h +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthumbnail.h -#ifndef _FBXSDK_SCENE_THUMBNAIL_H_ -#define _FBXSDK_SCENE_THUMBNAIL_H_ - -#include - -#include - -#include - -class FbxThumbnailMembers; - -/** Simple class to hold RGBA values of a thumbnail image. - * \nosubgrouping - */ -class FBXSDK_DLL FbxThumbnail : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxThumbnail, FbxObject); - -public: - /** - * \name Thumbnail properties - */ - //@{ - - //! Pixel height of the thumbnail image - FbxPropertyT CustomHeight; - - //! Pixel width of the thumbnail image - FbxPropertyT CustomWidth; - - /** \enum EDataFormat Data format. - * - \e eRGB_24 - * - \e eRGBA_32 - */ - enum EDataFormat - { - eRGB_24, // 3 components - eRGBA_32 // 4 components - }; - - /** Set the data format. - * \param pDataFormat Data format identifier. - */ - void SetDataFormat(EDataFormat pDataFormat); - - /** Get the data format. - * \return Data format identifier for the thumbnail. - */ - EDataFormat GetDataFormat() const; - - - /** \enum EImageSize Image size. - * - \e eNotSet - * - \e e64x64 - * - \e e128x128 - * - \e eCustomSize - */ - enum EImageSize - { - eNotSet = 0, - e64x64 = 64, - e128x128 = 128, - eCustomSize = -1 - }; - - /** Set the thumbnail dimensions. - * \param pImageSize Image size identifier. - */ - void SetSize(EImageSize pImageSize); - - /** Get the thumbnail dimensions. - * \return Image size identifier. - */ - EImageSize GetSize() const; - - /** Get the thumbnail dimensions in bytes. - * \return Thumbnail size in bytes. - */ - unsigned long GetSizeInBytes() const; - - - //@} - - /** - * \name Thumbnail data access - */ - //@{ - - /** Fill the thumbnail image. - * \param pImage Pointer to the image data. A copy - * of the image data will be made. - * \remarks This pointer must point to a buffer region - * that is at least Width * Height * Component count - * bytes long. This pointer points to the upper left - * corner of the image. - * \remarks You must set the data format and the dimensions - * before calling this function. If the image size is set to eCustomSize - * the CustomHeight and CustomWidth properties must be set before calling - * this function. - * \return \c true if the thumbnail properties were set - * before calling this function. \c false otherwise. - */ - bool SetThumbnailImage(const FbxUChar* pImage); - - /** Get the thumbnail image. - * \return Pointer to the image data, or \c NULL if the - * thumbnail is empty. - */ - FbxUChar* GetThumbnailImage() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxThumbnailMembers* mMembers; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_THUMBNAIL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxvideo.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxvideo.h deleted file mode 100644 index 011d48d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/fbxvideo.h +++ /dev/null @@ -1,202 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_VIDEO_H_ -#define _FBXSDK_SCENE_VIDEO_H_ - -#include - -#include - -#include - -/** FBX SDK video class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVideo : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxVideo, FbxMediaClip); - -public: - /** - *\name Reset video - */ - //@{ - //! Reset the video to default values. - void Reset() override; - //@} - - /** - * \name Video attributes Management - */ - //@{ - /** Set the use of MipMap on the video. - * \param pUseMipMap If \c true, use MipMap on the video. - */ - void ImageTextureSetMipMap(bool pUseMipMap); - - /** Retrieve use MipMap state. - * \return MipMap flag state. - */ - bool ImageTextureGetMipMap() const; - - /** Specify the Video full filename. - * \param pName Video full filename. - * \return \c True,if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetFileName(const char* pName) override; - - /** Specify the Video relative filename. - * \param pName Video relative filename. - * \return \c True, if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetRelativeFileName(const char* pName) override; - - /** - * \name Image sequence attributes Management - * Besides storing video clips, the FbxVideo object can also store image sequences. This section contains - * the manipulation methods used in this specialized mode. Note that, except for the GetFileName(), - * SetFileName(), GetRelativeFileName(), SetRelativeFileName() and the methods in this section, all the - * other ones are not mandatory therefore could contain uninitialized or default data values. - * - */ - //@{ - /** Specify if this video object is holding the starting point of an image sequence. - * \param pImageSequence If \c true, this object is holding an image sequence. - * \remarks When this object is used as image sequence, the FBX SDK - * will automatically exclude it from the embedding mechanism. - */ - void SetImageSequence(bool pImageSequence); - - /** Get the current state of the ImageSequence property. - * \return ImageSequence property value. - */ - bool GetImageSequence() const; - - /** Specify the frame offset to be applied to the image sequence. - * \param pOffset The frame offset value. - */ - void SetImageSequenceOffset(int pOffset); - - /** Get the current value of the ImageSequenceOffset property. - * \return ImageSequenceOffset property value. - */ - int GetImageSequenceOffset() const; - //@} - - /** Retrieve the Frame rate of the video clip. - * \return Frame rate. - */ - double GetFrameRate() const; - - /** Retrieve the last frame of the video clip. - * \return Last frame number. - */ - int GetLastFrame() const; - - /** Retrieve the clip width. - * \return Video image width. - */ - int GetWidth() const; - - /** Retrieve the clip height. - * \return Video image height. - */ - int GetHeight() const; - - /** Set the start frame of the video clip. - * \param pStartFrame Start frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStartFrame(int pStartFrame); - - /** Retrieve the start frame of the video clip. - * \return Start frame number. - */ - int GetStartFrame() const; - - /** Set the stop frame of the video clip. - * \param pStopFrame Stop frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStopFrame(int pStopFrame); - - /** Retrieve the stop frame of the video clip. - * \return Stop frame number. - */ - int GetStopFrame() const; - - /** Video interlace modes. - */ - enum EInterlaceMode - { - eNone, //!< Progressive frame (full frame). - eFields, //!< Alternate even/odd fields. - eHalfEven, //!< Half of a frame, even fields only. - eHalfOdd, //!< Half of a frame, odd fields only. - eFullEven, //!< Extract and use the even field of a full frame. - eFullOdd, //!< Extract and use the odd field of a full frame. - eFullEvenOdd, //!< Extract eFields and make full frame with each one beginning with Odd (60fps). - eFullOddEven //!< Extract eFields and make full frame with each one beginning with Even (60fps). - }; - - /** Set the Interlace mode. - * \param pInterlaceMode Interlace mode identifier. - */ - void SetInterlaceMode(EInterlaceMode pInterlaceMode); - - /** Retrieve the Interlace mode. - * \return Interlace mode identifier. - */ - EInterlaceMode GetInterlaceMode() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(FbxConnectEvent const &pEvent) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxPropertyT ImageSequence; - FbxPropertyT ImageSequenceOffset; - FbxPropertyT FrameRate; - FbxPropertyT LastFrame; - FbxPropertyT Width; - FbxPropertyT Height; - FbxPropertyT StartFrame; - FbxPropertyT StopFrame; - FbxPropertyT InterlaceMode; - -protected: - void Init(); - - bool mUseMipMap; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVideo::EInterlaceMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_VIDEO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h deleted file mode 100644 index d8b24aa..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ - -#include - -#include - -#include - -class FbxGeometry; -class FbxBlendShapeChannel; - -/** Class for blend shape deformer. - * A blend shape deformer takes a base shape (polygonal surface, curve, or surface) - * and blends it with other target shapes based on weight values. - * Blend shape deformer organize all target shapes via blend shape channel. - * One blend shape deformer can contains multiple blend shape channels, then each - * channel can organize multiple target shapes, \see FbxBlendShapeChannel, FbxShape. - * \remarks The blend effect of each blend shape channel is additive, so the final blend - * effect of a blend shape deformer is the sum of blend effect of all blend shape - * channels it contains, the blend effect of each blend shape channel is controlled - * by the property DeformPercent of blend shape channel. - * \see FbxGeometry, FbxGeometryBase. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxBlendShape : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShape, FbxDeformer); - -public: - /** Set the geometry affected by this blend shape deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - * \remarks One blend shape deformer can only be used on one base geometry. - * So when SetGeometry is called, the pGeometry will replace the - * current base geometry connected to this blend shape deformer. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this blend shape deformer. - * \return A pointer to the geometry if it is set or \c NULL if not set yet. - */ - FbxGeometry* GetGeometry(); - - /** Add a blend shape channel. - * \param pBlendShapeChannel Pointer to the blend shape channel object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Remove the given blend shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to remove from this blend shape deformer. - * \return Pointer to the blend shape channel or \c NULL if pBlendShapeChannel is not owned by this blend shape deformer. - */ - FbxBlendShapeChannel* RemoveBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the number of blend shape channels. - * \return Number of blend shape channels that have been added to this object. - */ - int GetBlendShapeChannelCount() const; - - /** Get blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex); - - /** Get the blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - const FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex) const; - - /** Get the type of the deformer. - * \return The deformer type identifier of blend shape deformer. - */ - EDeformerType GetDeformerType() const override {return eBlendShape; }; - - /** Restore the blend shape deformer to the initial state. - * Calling this function will do the following: - * \li Clear the pointer to base geometry. - * \li Remove all the blend shape channels. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h deleted file mode 100644 index ca3946f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshapechannel.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ - -#include - -#include - -#include - -class FbxShape; -class FbxBlendShape; - -/** Class for blend shape channels. - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * each target shape could have its own full deformation percentage. For example, given a channel that - * has 3 target shapes, whose full deform percentage are 30, to 80 to 100 separately, then when the percent - * changes from 0 to 100, the base geometry will deform from the first target shape to the last one. - * This is called in-between blend shapes or progressive morph. - * The property DeformPercent of blend shape channel will control the deform level of each target shape or - * in-between blend shape on it. - *\nosubgrouping - */ -class FBXSDK_DLL FbxBlendShapeChannel : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShapeChannel, FbxSubDeformer); - -public: - /** This property stores deform percent of this channel. - * The default value of this property is 0.0. - * - * \remark Although not enforced, it is strongly suggested to limit the value of this property - * in the range from 0.0 to 100.0 because graphic applications may handle values outside of this - * interval differently, therefore producing unexpected results. - */ - FbxPropertyT DeformPercent; - - /** Set the blend shape deformer that contains this blend shape channel. - * \param pBlendShape Pointer to the blend shape deformer to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeDeformer(FbxBlendShape* pBlendShape); - - /** Get the blend shape deformer that contains this blend shape channel. - * \return A pointer to the blend shape deformer if set or NULL. - */ - FbxBlendShape* GetBlendShapeDeformer(); - - /** Add a target shape. - * \param pShape Pointer to the target shape to add. - * \param pFullDeformPercent The full deform percentage for the target shape. - * \return \c true on success, \c false otherwise. - */ - bool AddTargetShape(FbxShape* pShape, double pFullDeformPercent = 100); - - /** Remove the given target shape. - * \param pShape Pointer to the target shape to remove from this blend shape channel. - * \return Pointer to the target shape or \c NULL if pShape is not owned by this blend shape channel. - */ - FbxShape* RemoveTargetShape(FbxShape* pShape); - - /** Get the number of target shapes. - * \return Number of target shapes that have been added to this blend shape channel. - */ - int GetTargetShapeCount() const; - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - FbxShape* GetTargetShape(int pIndex); - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - const FbxShape* GetTargetShape(int pIndex) const; - - /** Get the index of the given target shape. - * \param pShape The given target shape to find index. - * \return The index of the target shape. - */ - int GetTargetShapeIndex( FbxShape* pShape); - - /** Get the full weight values of target shape. - * To access each value iterate in the array up to GetTargetShapeCount(). - * \return The array of full weight values of target shape. - */ - double* GetTargetShapeFullWeights(); - - /** Set the array size for the fully deform weights. - * This functions pre-allocate the array to pCount size. - * \param pCount The new array size to set. - */ - void SetFullWeightsCount(int pCount); - - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return The sub deformer type identifier of blend shape channel. - */ - EType GetSubDeformerType() const override {return eBlendShapeChannel; }; - - /** Restore the blend shape channel to the initial state. - * Calling this function will do the following: - * \li Set the DeformPercent to 0. - * \li Remove all target shapes. - * \li Clear the array for fully deform weights of in-between target shapes. - */ - void Reset(); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - //The full weights array of each shapes on this blend shape channel - FbxArray mShapeFullWeightArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcache.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcache.h deleted file mode 100644 index 3b4dabc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcache.h +++ /dev/null @@ -1,461 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcache.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHE_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHE_H_ - -#include - -#include -#include - -#include - -class FbxCache_internal; - -/** This object contains methods for accessing point animation in a cache file. -* The FBX SDK supports three point cache file formats : -* - \e eMaxPointCacheV2: the 3ds Max Point Cache 2 file format. -* - \e eMayaCache: the Maya Cache file format. -* - \e eAlembic: Alembic Cache file format. -* -* Accessing cache data using these formats differs significantly. To address this difference, several sets of methods have been created. -* Use the GetCacheFileFormat() function to determine which set of methods to use. */ -class FBXSDK_DLL FbxCache : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCache, FbxObject); - -public: - //! \name Format Independent Functions. - //@{ - /** Supported cache file formats. */ - enum EFileFormat - { - eUnknownFileFormat, //!< Unknown cache file format. - eMaxPointCacheV2, //!< 3ds Max Point Cache 2 file format. - eMayaCache, //!< Maya Cache file format. - eAlembic //!< Alembic Cache file format. - }; - - /** Set the cache file format. - * \param pFileFormat Valid values are \e eMaxPointCacheV2 or \e eMayaCache. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileFormat(EFileFormat pFileFormat, FbxStatus* pStatus=NULL); - - /** Get the cache file format. - * \return The current cache file format, or \e eUnknown if it is not set. */ - EFileFormat GetCacheFileFormat() const; - - /** Set the cache file name. - * \param pRelativeFileName_UTF8 The point cache file, relative to the FBX file name. - * \param pAbsoluteFileName_UTF8 The point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileName(const char* pRelativeFileName_UTF8, const char* pAbsoluteFileName_UTF8, FbxStatus* pStatus=NULL); - - /** Get the cache file name. - * \param pRelativeFileName_UTF8 Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName_UTF8 Return the point cache file absolute path. */ - void GetCacheFileName(FbxString& pRelativeFileName_UTF8, FbxString& pAbsoluteFileName_UTF8) const; - - /** Open the cache file for reading. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the file is successfully opened, \c false otherwise. */ - bool OpenFileForRead(FbxStatus* pStatus=NULL); - - /** Get the open state of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is currently open, \c false otherwise. */ - bool IsOpen(FbxStatus* pStatus=NULL) const; - - /** Read data from the cache file. - * \param pBuffer The buffer containing the data from the cache file. This parameter can be NULL if interested to get buffer length only. - * \param pBufferLength The length of the buffer (NOT in bytes). - * \param pTime The time at which the data should be read. - * \param pChannel The cache file channel to read, when multiple channels are available. - * \return \c True if the cache data was successfully read, \c false otherwise. - * \remark The buffer will be allocated by FbxCache and will be returned if read successful. The buffer will be freed by FbxCache upon its destruction. */ - bool Read(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel=0); - - /** Close the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is closed successfully, \c false otherwise. */ - bool CloseFile(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file, in frames per second. */ - double GetSamplingFrameRate(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file, as a FbxTime object. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file. */ - FbxTime GetCacheTimePerFrame(FbxStatus* pStatus=NULL); - - /** Get the number of channels in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of animation channels in the cache file. */ - int GetChannelCount(FbxStatus* pStatus=NULL); - - /** Get the channel name for a specific channel index. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pChannelName Returns the name of the requested channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelName(int pChannelIndex, FbxString& pChannelName, FbxStatus* pStatus=NULL); - //@} - - //! \name eMayaCache Format Specific Functions. - //@{ - //! Number of files used to store the animation. - enum EMCFileCount - { - eMCOneFile, //!< One file is used for all the frames of animation. - eMCOneFilePerFrame //!< For every frame of animation, a cache file is used. The number of the frames is the number of the cache files. - }; - - //! Data types in the MC cache file. - enum EMCDataType - { - eUnknownData, //!< Unknown data. - eDouble, //!< No use but has to be defined for consistency reasons. - eDoubleArray, //!< double* - eDoubleVectorArray, //!< double* [3] - eInt32Array, //!< int* - eFloatArray, //!< float* - eFloatVectorArray //!< float* [3] - }; - - //! Binary cache format. - enum EMCBinaryFormat - { - eMCC, //!< MCC cache file format, 32bit (older format) - eMCX //!< MCX cache file format, 64bit (newer format) - }; - - //! Cache channel sampling types. - enum EMCSamplingType - { - eSamplingRegular, //!< Regular sampling. - eSamplingIrregular //!< Irregular sampling. - }; - - /** Open a cache file for writing. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pChannelName The name of the channel of animation to create. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pMCDataType The data type of the MC cache file. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pStatus The FbxStatus object to hold error codes. */ - bool OpenFileForWrite(EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, EMCBinaryFormat pBinaryFormat, EMCDataType pMCDataType=eDoubleVectorArray, const char* pInterpretation="Points", FbxStatus* pStatus=NULL); - - /** Creates a new channel in the cache. - * \param pChannelName The name of the channel of animation to create. - * \param pMCDataType The MC DataType of the cache. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pChannelIndex The index of the new animation channel. - * \param pStatus The FbxStatus object to hold error codes. - * \remark \b pChannelName must be unique within the cache. - * \remark \b pChannelName and \b pInterpretation cannot be NULL pointers. - * \remark This method must be called before adding any data to the cache but after the OpenFileForWrite. */ - bool AddChannel(const char* pChannelName, EMCDataType pMCDataType, const char* pInterpretation, unsigned int& pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the data type of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pChannelType The channel's data type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelDataType(int pChannelIndex, EMCDataType& pChannelType, FbxStatus* pStatus=NULL); - - /** Get the index of the specified channel. - * \param pChannelName The name of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return The index of the channel in the cache file, or -1 if an error occurred. */ - int GetChannelIndex(const char* pChannelName, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that data is about to be written to it. This call must appear before any calls to the Write() methods on any channel and terminated by a call to EndWriteAt(). - * \param pTime Time at which the point animation must be inserted. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool BeginWriteAt( FbxTime& pTime, FbxStatus* pStatus=NULL ); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cachedsystem has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that all the data on all the channels has been written to it for the given time (specified - * by the BeginWriteAt() call). The call to this method must be made after all the Write() for every channel defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EndWriteAt(FbxStatus* pStatus=NULL); - - /** Get the Animation Range of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pTimeStart The start time of the channel's animation. - * \param pTimeEnd The end time of the channel's animation. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetAnimationRange(int pChannelIndex, FbxTime &pTimeStart, FbxTime &pTimeEnd, FbxStatus* pStatus=NULL); - - /** Get the cache type. - * \param pFileCount The cache type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetCacheType(EMCFileCount& pFileCount, FbxStatus* pStatus=NULL); - - /** Get the cache channel interpretation. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pInterpretation The channel interpretation, user-defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelInterpretation(int pChannelIndex, FbxString& pInterpretation, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling type. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingType The sampling type of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingType(int pChannelIndex, EMCSamplingType& pSamplingType, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling rate, in frames per second. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingRate The sampling rate of the channel. The channel must have a regular sampling type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingRate(int pChannelIndex, FbxTime& pSamplingRate, FbxStatus* pStatus=NULL); - - /** Get the number of data points for a channel. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSampleCount Number of available samples. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSampleCount(int pChannelIndex, unsigned int& pSampleCount, FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file, for a channel, for a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Reference time; must be within the boundaries of the animation. - * \param pPointCount Number of available points. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelPointCount(int pChannelIndex, FbxTime pTime, unsigned int& pPointCount, FbxStatus* pStatus=NULL); - - /** Returns the number of cache data files. - * \param pStatus The FbxStatus object to hold error codes. - * \return The count returned does not include the main cache file, and depends on the cache type. Will return -1 if point cache support is not enabled. */ - int GetCacheDataFileCount(FbxStatus* pStatus=NULL) const; - - /** Get the nth cache file name. - * \param pIndex Index of the cache file to return; index is zero-based, and must be less than GetCacheDataFileCount(). - * \param pRelativeFileName Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName Return the point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool GetCacheDataFileName(int pIndex, FbxString& pRelativeFileName, FbxString& pAbsoluteFileName, FbxStatus* pStatus=NULL); - - /** Enable multi-channel fetching. - * \param pMultiChannelFetching Enable/disable multi-channel fetching. When multi-channel is enabled, any load of data on a channel at a specific - * time will pre-fetch data from all channels, for that specific time. This can reduce disk access, and increase performance (but requires more memory). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EnableMultiChannelFetching(bool pMultiChannelFetching, FbxStatus* pStatus=NULL); - - /** Get the next time where data is stored. - * \param pCurTime Current time; must be within the boundaries of the animation time. - * \param pNextTime Next time (filled if the function is successful). - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). If pChannel is left at -1, get the next time for any channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetNextTimeWithData(FbxTime pCurTime, FbxTime& pNextTime, int pChannelIndex = -1, FbxStatus* pStatus=NULL); - - /** Get the number of data points the channel contains. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of the channel's data points. */ - int GetDataCount(int pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the time of the specified data point. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pDataIndex Index of the data point. - * \param pTime Time of the data point (filled if the function is successful). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetDataTime(int pChannelIndex, unsigned int pDataIndex, FbxTime& pTime, FbxStatus* pStatus=NULL); - //@} - - //! \name eMaxPointCacheV2 Format Specific Functions. - //@{ - /** Open a cache file for writing. - * \param pFrameStartOffset Start time of the animation, in frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pSampleCount The number of samples to write to the file. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool OpenFileForWrite(double pFrameStartOffset, double pSamplingFrameRate, unsigned int pSampleCount, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Get the number of frames of animation found in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of frames of animation. - */ - unsigned int GetSampleCount(FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of points. - */ - unsigned int GetPointCount(FbxStatus* pStatus=NULL); - - /** Get the start time of the animation - * \param pStatus The FbxStatus object to hold error codes. - * \return The start time of the animation, in frames. */ - double GetFrameStartOffset(FbxStatus* pStatus=NULL); - - /** Read a sample at a given frame index. - * \param pFrameIndex The index of the animation frame, between 0 and GetSampleCount(). - * \param pBuffer The place where the point value will be copied. This buffer must be of size 3 * pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(unsigned int pFrameIndex, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given frame index. - * \param pFrameIndex The index of the animation frame. - * \param pBuffer Point to the values to be copied. This buffer must be of size 3 * pPointCount, as passed to the function OpenFileForWrite(). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark Successive calls to Write() must use successive index. */ - bool Write(unsigned int pFrameIndex, double* pBuffer, FbxStatus* pStatus=NULL); - //@} - - //! \name File conversion Functions. - //@{ - /** Create an MC cache file from an PC2 cache file. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second used to re-sample the point animation. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromPC2ToMC(EMCFileCount pFileCount, double pSamplingFrameRate, EMCBinaryFormat pBinaryFormat, FbxStatus* pStatus=NULL); - - /** Create a PC2 cache file from an MC cache file. - * \param pSamplingFrameRate Number of frames per second to re-sample the point animation. - * \param pChannelIndex Index of the channel of animation to read from. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromMCToPC2(double pSamplingFrameRate, unsigned int pChannelIndex, FbxStatus* pStatus=NULL); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - enum EOpenFlag - { - eReadOnly, - eWriteOnly - }; - -protected: - bool OpenFile(EOpenFlag pFlag, EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, const char* pInterpretation, unsigned int pSampleCount, unsigned int pPointCount, double pFrameStartOffset, FbxStatus* pStatus, EMCDataType pMCDataType = eDoubleVectorArray, EMCBinaryFormat pBinaryFormat = eMCX); - - void Construct( const FbxObject* pFrom ) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxCache_internal* mData; - -private: - bool AllocateReadBuffer(unsigned int pTypeSize, unsigned int pTypeLength, unsigned int pLength, bool pAllocateConvertBuffer); - bool ReadMayaCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - bool ReadMaxCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime); - bool ReadAlembicCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - - FbxPropertyT CacheFile; - FbxPropertyT CacheFileAbsolutePath; - FbxPropertyT CacheFileType; - - void* mReadBuffer; - unsigned int mReadBufferLength; - unsigned int mReadBufferSize; - unsigned int mReadTypeSize; - unsigned int mReadTypeLength; - unsigned int mReadLength; - void* mConvertBuffer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCache::EFileFormat&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h deleted file mode 100644 index 02eceae..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcachedeffect.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ - -#include - -#include -#include - -#include - -/** A cached effect is a type of node attribute to represent certain type of effect - * by an cache object. Categories are particle cache, fluid cache, hair cache and general cache. - * \see ECategory for the effect types that are supported. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCachedEffect : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCachedEffect, FbxNodeAttribute); - -public: - //! Returns the FbxNodeAttribute::EType::eCachedEffect attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Effect attribute category. This is for identification purpose and has - * no influence inside the FBX SDK. However, applications may use this to filter FbxCachedEffect - * objects. - * \remarks Vertex caches for deforming geometries are not handled by the FbxCachedEffect object. These - * caches are connected with the FbxVertexCacheDeformer object. - * \remarks If an object of this class is used as the default NodeAttribute for a FbxNode and the scene is - * saved to an FBX v6 and earlier versions, the CachedEffect attribute is not saved and the FbxNode will - * be processed as a FbxNull node with default values for the attribute. - */ - enum ECategory - { - eParticles, //!< This effect handles a particle cache. - eFluids, //!< This effect handles a fluid cache. - eHair, //!< This effect handles an hair cache. - eGeneric //!< This effect handles a cache other than particles, fluids or hair. - }; - - //! Return the specialization category of this effect attribute. - ECategory GetCategory() const; - - /** Assign a cache object to be used by this attribute. - * \param pCache The cache object. - * \param pCategory The type of this cached effect. - * \remarks The cache referenced by the \b pCache pointer can be freely shared among - * multiple FbxCachedEffect (and even the FbxVertexCacheDeformer) therefore - * \b pCategory identifier should really only used as a hint of what this FbxCachedEffect - * represents but it should not be taken for granted that the content of the cache really - * matches the category. Applications should always check the cache files to ensure that - * they are manipulating the desired information. - * - */ - void SetCache( FbxCache* pCache, ECategory pCategory = eGeneric); - - /** Get the cache object used by this node attribute. - * \return A pointer to the cache object used by this node attribute, or \c NULL if no cache object is assigned. - */ - FbxCache* GetCache() const; - -protected: - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - -public: - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - -private: - void ClearCacheConnections(); - FbxPropertyT Category; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCachedEffect::ECategory&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h deleted file mode 100644 index 42d0db1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h +++ /dev/null @@ -1,1898 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamera.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ - -#include - -#include -#include -#include - -#include - -class FbxTexture; - -/** This node attribute contains methods for accessing the properties of a camera. - * \nosubgrouping - * A camera can be set to automatically point at and follow - * another node in the hierarchy. To do this, the focus source - * must be set to EFocusDistanceSource::eFocusSrcCameraInterest and the - * followed node associated with function FbxNode::SetTarget(). - * \see FbxCameraStereo and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCamera : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCamera,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eCamera. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the camera to default values. - void Reset(); - - /** Camera projection types. - * \remarks By default, the camera projection type is set to ePerspective. - * If the camera projection type is set to eOrthogonal, the following options - * are not relevant: - * - aperture format - * - aperture mode - * - aperture width and height - * - angle of view/focal length - * - squeeze ratio - */ - enum EProjectionType - { - ePerspective, //!< Perspective projection. - eOrthogonal //!< Orthogonal projection. - }; - - /** - * \name Functions to handle the viewing area. - */ - //@{ - /** Camera formats identifiers. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetFormat, GetFormat and CameraFormat. - */ - enum EFormat - { - eCustomFormat, //!< The format's width, height, or pixel ratio has been user-specified, and matches none of the other picture formats. - eD1NTSC, //!< Standard format for D1 NTSC (720 by 486). - eNTSC, //!< NTSC standard for North American television broadcast (640 by 480). - ePAL, //!< PAL standard for European television broadcast (570 by 486). - eD1PAL, //!< Standard format for D1 PAL (720 by 576). - eHD, //!< HD format(1920 by 1080). - e640x480, //!< Recommended computer screen format (640 by 480). - e320x200, //!< Recommended format for World Wide Web production(320 by 200). - e320x240, //!< Alternate World Wide Web format(320 by 240). - e128x128, //!< Format(128 by 128) - eFullscreen //!< Full computer screen format (1280 by 1024 pixels). - }; - - /** Set the camera format. - * \param pFormat The camera format identifier. - * \remarks Changing the camera format sets the camera aspect - * ratio mode to eFixedResolution and modifies the aspect width - * size, height size, and pixel ratio accordingly. - */ - void SetFormat(EFormat pFormat); - - /** Get the camera format. - * \return The current camera format identifier. - */ - EFormat GetFormat() const; - - /** Camera's aspect ratio modes. - * \see SetAspect, GetAspectRatioMode, AspectWidth, AspectHeight and AspectRatioMode. - */ - enum EAspectRatioMode - { - eWindowSize, //!< Both width and height values aren't relevant. - eFixedRatio, //!< The height value is set to 1.0 and the width value is relative to the height value. - eFixedResolution, //!< Both width and height values are in pixels. - eFixedWidth, //!< The width value is in pixels and the height value is relative to the width value. - eFixedHeight //!< The height value is in pixels and the width value is relative to the height value. - }; - - /** Set the camera's aspect ratio mode. - * \param pRatioMode Camera's aspect ratio mode. - * \param pWidth Camera's aspect width, must be a positive value. - * \param pHeight Camera's aspect height, must be a positive value. - * \remarks Changing the camera aspect sets the camera format to eCustomFormat. - * \see EAspectRatioMode. - */ - void SetAspect(EAspectRatioMode pRatioMode, double pWidth, double pHeight); - - /** Get the camera aspect ratio mode. - * \return The current aspect ratio mode. - */ - EAspectRatioMode GetAspectRatioMode() const; - - /** Set the pixel ratio. - * \param pRatio The pixel ratio value. - * \remarks The value must be a positive number. Comprised between 0.05 and 20.0. Values - * outside these limits will be clamped. Changing the pixel ratio sets the camera format to eCustomFormat. - */ - void SetPixelRatio(double pRatio); - - /** Get the pixel ratio. - * \return The current camera's pixel ratio value. - */ - double GetPixelRatio() const; - - /** Set the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \param pDistance The near plane distance value. - * \remarks The near plane value is limited to the range [0.001, 600000.0] and - * must be inferior to the far plane value. - */ - void SetNearPlane(double pDistance); - - /** Get the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \return The near plane value. - */ - double GetNearPlane() const; - - /** Set the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \param pDistance The far plane distance value. - * \remarks The far plane value is limited to the range [0.001, 600000.0] and - * must be superior to the near plane value. - */ - void SetFarPlane(double pDistance); - - /** Get the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \return The far plane value. - */ - double GetFarPlane() const; - - //@} - - /** - * \name Aperture and Film Functions. - * In photography, the aperture is the size of hole allowing light from the lens to get through to the film. - * The aperture mode determines which values drive the camera aperture. When the aperture mode is \e eHorizAndVert, - * \e eHorizontal or \e eVertical, the field of view is used. When the aperture mode is \e eFocalLength, the focal length is used. - * - * It is possible to convert the aperture mode into field of view or vice versa using functions ComputeFieldOfView and - * ComputeFocalLength. These functions use the camera aperture width and height for their computation. - */ - //@{ - - /** Camera's aperture formats. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetApertureFormat, GetApertureFormat, FilmFormat, FilmWidth, FilmHeight, FilmSqueezeRatio and FilmAspectRatio. - */ - enum EApertureFormat - { - eCustomAperture, //!< The film size, squeeze ratio and aspect ratio has been user-specified, and matches none of the other aperture formats. - e16mmTheatrical, //!< Film Size: 0.404, 0.295 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.369. - eSuper16mm, //!< Film Size: 0.493, 0.292 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.688. - e35mmAcademy, //!< Film Size: 0.864, 0.630 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.371. - e35mmTVProjection, //!< Film Size: 0.816, 0.612 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mmFullAperture, //!< Film Size: 0.980, 0.735 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mm185Projection, //!< Film Size: 0.825, 0.446 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.850. - e35mmAnamorphic, //!< Film Size: 0.864, 0.732 inches. Film Squeeze Ratio: 2.0. Film Aspect Ratio:1.180. - e70mmProjection, //!< Film Size: 2.066, 0.906 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 2.280. - eVistaVision, //!< Film Size: 1.485, 0.991 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.498. - eDynaVision, //!< Film Size: 2.080, 1.480 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.405. - eIMAX //!< Film Size: 2.772, 2.072 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.338. - }; - - /** Set the camera aperture format. - * \param pFormat The camera aperture format identifier. - * \remarks Changing the aperture format modifies the aperture width, height, and squeeze ratio accordingly. - */ - void SetApertureFormat(EApertureFormat pFormat); - - /** Get the camera aperture format. - * \return The camera's current aperture format identifier. - */ - EApertureFormat GetApertureFormat() const; - - /** Camera aperture modes. - * The aperture mode determines which values drive the camera aperture. - * If the aperture mode is \e eHorizAndVert, \e eHorizontal, or \e eVertical, then the field of view is used. - * If the aperture mode is \e eFocalLength, then the focal length is used. - */ - enum EApertureMode - { - eHorizAndVert, //!< Set the angle values for both the horizontal and vertical settings. - eHorizontal, //!< Set only the horizontal angle. - eVertical, //!< Set only the vertical angle. - eFocalLength //!< Use focal length directly. - }; - - /** Set the camera aperture mode. - * \param pMode The camera aperture mode identifier. - */ - void SetApertureMode(EApertureMode pMode); - - /** Get the camera aperture mode. - * \return The camera's current aperture mode identifier. - */ - EApertureMode GetApertureMode() const; - - /** Set the camera aperture width in inches. - * \param pWidth The aperture width value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture width sets the camera aperture format to eCustomFormat. - */ - void SetApertureWidth(double pWidth); - - /** Get the camera aperture width in inches. - * \return The camera's current aperture width value in inches. - */ - double GetApertureWidth() const; - - /** Set the camera aperture height in inches. - * \param pHeight The aperture height value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture height sets the camera aperture format to eCustomFormat. - */ - void SetApertureHeight(double pHeight); - - /** Get the camera aperture height in inches. - * \return The camera's current aperture height value in inches. - */ - double GetApertureHeight() const; - - /** Set the squeeze ratio. - * \param pRatio The squeeze ratio value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the squeeze ratio sets the camera aperture format to eCustomFormat. - */ - void SetSqueezeRatio(double pRatio); - - /** Get the camera squeeze ratio. - * \return The camera's current squeeze ratio value. - */ - double GetSqueezeRatio() const; - - /** Camera's gate fit modes. - * There are two gates for a camera, film gate and resolution gate. - * Film gate is a border indicating the area of the camera's view as a real-world camera records on film. - * The dimensions of the film gate represent the dimensions of the camera aperture. - * But the film gate does not represent the render region. - * It is the resolution gate that represents the rendering resolution. - * The gate fit mode controls the size of the resolution gate relative to the film gate. - */ - enum EGateFit - { - eFitNone, //!< No resolution gate fit. - eFitVertical, //!< Fit the resolution gate vertically within the film gate. - eFitHorizontal, //!< Fit the resolution gate horizontally within the film gate. - eFitFill, //!< Fit the resolution gate within the film gate. - eFitOverscan, //!< Fit the film gate within the resolution gate. - eFitStretch //!< Fit the resolution gate to the film gate. - }; - - /** Compute the angle of view based on the given focal length, the aperture width, and aperture height. - * \param pFocalLength The focal length in millimeters. - * \return The computed angle of view in degrees. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFieldOfView(double pFocalLength) const; - - /** Compute the focal length based on the given angle of view, the aperture width, and aperture height. - * \param pAngleOfView The angle of view in degrees. - * \return The computed focal length in millimeters. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFocalLength(double pAngleOfView) const; - - /** Specifies how the roll is applied with respect to the pivot value. - */ - enum EFilmRollOrder - { - eRotateFirst, //!< The film back is first rotated then translated by the pivot point value. - eTranslateFirst //!< The film back is first translated then rotated by the film roll value. - }; - - //@} - - /** - * \name Functions to handle BackPlane/FrontPlane and Plate. - * - * In the FbxSdk terminology, the Back/Front plane is the support of the plate. And the plate is - * the support of the texture used for backgrounds/foregrounds. Functions and properties - * identified by the "Plate" name are affecting the display of the texture on the plate. - * The functions and properties identified with the "Back/FrontPlane" are affecting the plate. - * - * Typically a client application would place the BackPlate a small distance in front of the - * FarPlane and the FrontPlate just behind the NearPlane to avoid them to be hidden by the clipping. - * Unless otherwise noted, there are no restrictions on the values stored by the camera object - * therefore it is the responsibility of the client application to process the information in a - * meaningful way and to maintain consistency between the different properties relationships. - */ - //@{ - - /** Set the associated background image file. - * \param pFileName The path of the background image file. - * \remarks The background image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundFileName(const char* pFileName); - - /** Get the background image file name. - * \return Pointer to the background filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundFileName() const; - - /** Set the media name associated to the background image file. - * \param pFileName The media name of the background image file. - * \remarks The media name is a unique name used to identify the background image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundMediaName(const char* pFileName); - - /** Get the media name associated to the background image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundMediaName() const; - - /** Set the associated foreground image file. - * \param pFileName The path of the foreground image file. - * \remarks The foreground image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundFileName(const char* pFileName); - - /** Get the foreground image file name. - * \return Pointer to the foreground filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundFileName() const; - - /** Set the media name associated to the foreground image file. - * \param pFileName The media name of the foreground image file. - * \remarks The media name is a unique name used to identify the foreground image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundMediaName(const char* pFileName); - - /** Get the media name associated to the foreground image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundMediaName() const; - - - /** Image plate drawing modes. - */ - enum EPlateDrawingMode - { - ePlateBackground, //!< Image is drawn behind models. - ePlateForeground, //!< Image is drawn in front of models based on alpha channel. - ePlateBackAndFront //!< Image is drawn behind and in front of models depending on alpha channel. - }; - - /** Set front plate matte threshold. - * \param pThreshold Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - void SetBackgroundAlphaTreshold(double pThreshold); - - /** Get front plate matte threshold. - * \return Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - double GetBackgroundAlphaTreshold() const; - - /** Change the back plate fit image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \param pFitImage New value for the BackPlateFitImage property. - */ - void SetBackPlateFitImage(bool pFitImage); - - /** Get the current back plate image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetBackPlateFitImage() const; - - /** Change the back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pCrop New value for the BackPlateCrop property. - */ - void SetBackPlateCrop(bool pCrop); - - /** Get the current back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the BackPlateCrop property. - */ - bool GetBackPlateCrop() const; - - /** Change the back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \param pCenter New value for the BackPlateCenter property. - */ - void SetBackPlateCenter(bool pCenter); - - /** Get the current back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \return The value of the BackPlateCenter property. - */ - bool GetBackPlateCenter() const; - - /** Change the back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \param pKeepRatio New value for the BackPlateKeepRatio property. - */ - void SetBackPlateKeepRatio(bool pKeepRatio); - - /** Get the current back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \return The value of the BackPlateKeepRatio property. - */ - bool GetBackPlateKeepRatio() const; - - /** Enable or disable the display of the texture without the need to disconnect it from its plate. - * \param pEnable If \c true the texture is displayed, \c false otherwise. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - void SetShowFrontPlate(bool pEnable); - - /** Get the current state of the flag to display the front plate or not. - * \return \c true if show front plate is enabled, otherwise \c false. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - bool GetShowFrontPlate() const; - - /** Change the front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \param pFrontPlateFitImage New value for the FrontPlateFitImage property. - */ - void SetFrontPlateFitImage(bool pFrontPlateFitImage); - - /** Get the current front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetFrontPlateFitImage() const; - - /** Change the front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pFrontPlateCrop New value for the FrontPlateCrop property. - */ - void SetFrontPlateCrop(bool pFrontPlateCrop); - - /** Get the current front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the FrontPlateCrop property. - */ - bool GetFrontPlateCrop() const; - - /** Change the front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \param pFrontPlateCenter New value for the FrontPlateCenter property. - */ - void SetFrontPlateCenter(bool pFrontPlateCenter); - - /** Get the current front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \return The value of the FrontPlateCenter property. - */ - bool GetFrontPlateCenter() const; - - /** Change the front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \param pFrontPlateKeepRatio New value for the FrontPlateKeepRatio property. - */ - void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio); - - /** Get the current front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \return The value of the FrontPlateKeepRatio property. - */ - bool GetFrontPlateKeepRatio() const; - - /** Set the front plate opacity value. - * \param pOpacity New value for the ForegroundOpacity property. - */ - void SetForegroundOpacity(double pOpacity); - - /** Get the front plate opacity value. - * \return The value of the ForegroundOpacity property. - */ - double GetForegroundOpacity() const; - - /** Attach the texture to the front plate. - * \param pTexture The pointer to the texture to attach. - */ - void SetForegroundTexture(FbxTexture* pTexture); - - /** Get the texture connected to the front plate. - * \return A pointer to the texture attached to front plate. - */ - FbxTexture* GetForegroundTexture() const; - - /** Front and BackPlane distance modes. - * \see SetBackPlaneDistanceMode and GetBackPlaneDistanceMode. - */ - enum EFrontBackPlaneDistanceMode - { - eRelativeToInterest, //!< The back plane distance is measured in relation to the camera interest. - eRelativeToCamera //!< The back plane distance is measured in relation to the camera. - }; - - /** Set the back plane distance mode. - * \param pMode The back plane distance mode to set. - */ - void SetBackPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the back plane distance mode. - * \return Return the back plane distance mode. - */ - EFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const; - - /** Set the front plane distance from the camera. The the absolute position of the plane must be calculated - * by taking into consideration of the FrontPlaneDistanceMode. - * \param pDistance The front plane distance value. - * \remarks It is the responsibility of the client application to ensure that this plane position is - * within the frustum boundaries. - */ - void SetFrontPlaneDistance(double pDistance); - - /** Get the front plane distance value. - * \return double The front plane distance value. - */ - double GetFrontPlaneDistance() const; - - /** Set the front plane distance mode. - * \param pMode The front plane distance mode to set. - */ - void SetFrontPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the front plane distance mode flag. - * \return The front plane distance mode. - */ - EFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const; - - /** Front/back plane display modes. - */ - enum EFrontBackPlaneDisplayMode - { - ePlanesDisabled, //!< Disables the front/back plane whether a texture is being projected or not. - ePlanesAlways, //!< Always shows the front/back plane, even if no texture has been added. - ePlanesWhenMedia //!< Shows the front/back plane only if a texture has been added. - }; - - /** Set the front plane display mode. This mode can be used by the client application to - * decide under which circumstance the front plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumFrontPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the front plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const; - - /** Set the back plane display mode. This mode can be used by the client application to - * decide under which circumstance the back plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumBackPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the back plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const; - - //@} - - /** - * \name Camera View Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Change the camera interest visibility flag. - * \param pEnable Set to \c true if the camera interest is shown, \c false otherwise. - */ - void SetViewCameraInterest(bool pEnable); - - /** Get current visibility state of the camera interest. - * \return \c true if the camera interest is shown, or \c false if hidden. - */ - bool GetViewCameraInterest() const; - - /** Change the camera near and far planes visibility flag. - * \param pEnable Set to \c true if the near and far planes are shown, \c false otherwise. - */ - void SetViewNearFarPlanes(bool pEnable); - - /** Get current visibility state of the camera near and far planes. - * \return \c true if the near and far planes are shown, \c false otherwise. - */ - bool GetViewNearFarPlanes() const; - - /** Camera safe area display styles. - */ - enum ESafeAreaStyle - { - eSafeAreaRound, //!< Rounded safe area. - eSafeAreaSquare //!< Square safe area. - }; - - //@} - - /** - * \name Render Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Render options usage time. - */ - enum ERenderOptionsUsageTime - { - eInteractive, //!< To render in real time. - eOnDemand //!< Only render when it is asked. - }; - - /** Anti-aliasing methods. - */ - enum EAntialiasingMethod - { - eAAOversampling, //!< To do anti-aliasing by oversampling. - eAAHardware //!< To do anti-aliasing by hardware. - }; - - /** Oversampling types for anti-aliasing. - */ - enum ESamplingType - { - eSamplingUniform, /*!< The Uniform method samples each pixel at the same location. - The pixel is divided into equal parts, and each part is sampled. - The number of samples determines the number of times the pixel is divided. */ - eSamplingStochastic /*!< The Stochastic method randomly samples each pixel. - This produces an accurate color using a small number of samples. */ - }; - - /** Camera focus sources, that is the focal point for the depth of field. - * \see FocusDistance. - */ - enum EFocusDistanceSource - { - eFocusSrcCameraInterest, /*!< Base the depth of field on the camera interest. Models at the camera interest are in focus. - As you move toward or away from the camera interest, models become increasingly blurred. */ - eFocusSpecificDistance //!< Base the depth of field on a point defined by a specific distance from the camera interest. - }; - - //@} - - //! \name Utility Functions. - //@{ - /** Evaluate the camera position (eye). - * \param pTime The time at which the camera should be evaluated. - * \return The camera position evaluated from property value and animation. */ - FbxVector4 EvaluatePosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera target position (look at). - * \param pTime The time at which the camera should be evaluated. - * \return The camera target position evaluated from property value and animation. */ - FbxVector4 EvaluateLookAtPosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera up direction, taking target up objects into consideration. - * \param pCameraPosition The camera current position. You can retrieve this with FbxCamera::EvaluatePosition(). - * \param pLookAtPosition The camera target position. you can retrieve this with FbxCamera::EvaluateLookAtPosition(). - * \param pTime The time at which the camera should be evaluated. - * \return The camera up direction vector based on provided information. */ - FbxVector4 EvaluateUpDirection(const FbxVector4& pCameraPosition, const FbxVector4& pLookAtPosition, const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Compute the camera projection matrix. - * \param pWidth The width of the output frame. - * \param pHeight The height of the output frame. - * \param pVerticalFOV Calculate FOV vertically (based on height) if true or horizontally (based on width) if false (Note: Only applicable in perspective proj). - * \return The camera projection matrix, or the default identity matrix in case of wrong camera parameters. */ - FbxMatrix ComputeProjectionMatrix(const int pWidth, const int pHeight, const bool pVerticalFOV = true) const; - - /** Determine if the given bounding box is in the camera's view. The input points do not need to be ordered in any particular way. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoints 8 corners of the bounding box. - * \return \c true if any of the given points are in the camera's view, \c false otherwise. */ - bool IsBoundingBoxInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4 pPoints[8]) const; - - /** Determine if the given 3d point is in the camera's view. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoint World-space point to test. - * \return \c true if the given point is in the camera's view, \c false otherwise. */ - bool IsPointInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4& pPoint) const; - - /** Compute world space to screen space transformation matrix. - * \param pPixelHeight The pixel height of the output image. - * \param pPixelWidth The pixel height of the output image. - * \param pWorldToCamera The world to camera affine transformation matrix. - * \return The world to screen space matrix, or the identity matrix on error. */ - FbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const FbxAMatrix& pWorldToCamera) const; - - /** Compute screen space to world space ray direction. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pWidth The width of the viewport in pixels. - * \param pHeight The height of the viewport in pixels. - * \param pTime The time to use to evaluate the camera's view matrix. - * \return a normalized vector corresponding to the ray direction. */ - FbxVector4 ComputeScreenToWorld(float pX, float pY, float pWidth, float pHeight, const FbxTime& pTime=FBXSDK_TIME_INFINITE) const; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Geometrical - // ----------------------------------------------------------------------- - - /** This property handles the camera's position (XYZ coordinates). - * - * To access this property do: Position.Get(). - * To set this property do: Position.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT Position; - - /** This property handles the camera's Up Vector (XYZ coordinates). - * - * To access this property do: UpVector.Get(). - * To set this property do: UpVector.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 1.0, 0.0). - */ - FbxPropertyT UpVector; - - /** This property handles the default point (XYZ coordinates) the camera is looking at. - * - * To access this property do: InterestPosition.Get(). - * To set this property do: InterestPosition.Set(FbxDouble3). - * - * \remarks During the computations of the camera position - * and orientation, this property is overridden by the - * position of a valid target in the parent node. - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT InterestPosition; - - /** This property handles the camera roll angle in degrees. - * - * To access this property do: Roll.Get(). - * To set this property do: Roll.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT Roll; - - /** This property handles the camera optical center X, in pixels. - * It sets horizontal offset of the optical center. - * When the camera's aperture mode is set to \e eVertical, this property has no effect. - * - * To access this property do: OpticalCenterX.Get(). - * To set this property do: OpticalCenterX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterX; - - /** This property handles the camera optical center Y, in pixels. - * It sets the vertical offset of the optical center. - * When the camera's aperture mode is set to \e eHorizontal, this property has no effect. - * - * To access this property do: OpticalCenterY.Get(). - * To set this property do: OpticalCenterY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterY; - - /** This property handles the RGB values of the camera's background color. - * - * To access this property do: BackgroundColor.Get(). - * To set this property do: BackgroundColor.Set(FbxDouble3). - * - * Default value is black (0, 0, 0) - */ - FbxPropertyT BackgroundColor; - - /** When modeling 3D objects, you often need to review or evaluate your models during the creation process. - * You may create a camera with turn table animation to view your models in 360 or certain degrees. - * This property handles the camera's turn table angle in degrees. - * - * To access this property do: TurnTable.Get(). - * To set this property do: TurnTable.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT TurnTable; - - /** This property handles a flag that indicates if the camera displays the - * Turn Table icon or not. - * - * To access this property do: DisplayTurnTableIcon.Get(). - * To set this property do: DisplayTurnTableIcon.Set(FbxBool). - * - * Default value is false (no display). - */ - FbxPropertyT DisplayTurnTableIcon; - - // ----------------------------------------------------------------------- - // Motion Blur - // ----------------------------------------------------------------------- - - /** This property handles a flag that indicates if the camera uses - * motion blur or not. - * - * To access this property do: UseMotionBlur.Get(). - * To set this property do: UseMotionBlur.Set(FbxBool). - * - * Default value is false (do not use motion blur). - */ - FbxPropertyT UseMotionBlur; - - /** This property handles a flag that indicates if the camera uses - * real time motion blur or not. - * - * To access this property do: UseRealTimeMotionBlur.Get(). - * To set this property do: UseRealTimeMotionBlur.Set(FbxBool). - * - * Default value is false (use real time motion blur). - */ - FbxPropertyT UseRealTimeMotionBlur; - - /** This property handles the camera's motion blur intensity (in pixels). - * - * To access this property do: MotionBlurIntensity.Get(). - * To set this property do: MotionBlurIntensity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT MotionBlurIntensity; - - // ----------------------------------------------------------------------- - // Optical - // ----------------------------------------------------------------------- - - /** This property handles the camera's aspect ratio mode. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is eWindowSize. - * - */ - FbxPropertyT AspectRatioMode; - - /** This property handles the camera's aspect width. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 320. - */ - FbxPropertyT AspectWidth; - - /** This property handles the camera's aspect height. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 200. - */ - FbxPropertyT AspectHeight; - - /** This property handles the pixel aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetPixelRatio() if you want to change its value. - * - * Default value is 1. - * \remarks Value range is [0.050, 20.0]. - */ - FbxPropertyT PixelAspectRatio; - - /** This property handles the aperture mode. - * - * To access this property do: ApertureMode.Get(). - * To set this property do: ApertureMode.Set(EApertureMode). - * - * Default value is eVertical. - */ - FbxPropertyT ApertureMode; - - /** This property handles the gate fit mode. - * To control the size of the resolution gate relative to the film gate. - * If the resolution gate and the film gate have the same aspect ratio, then the property has no effect. - * - * To access this property do: GateFit.Get(). - * To set this property do: GateFit.Set(EGateFit). - * - * Default value is eFitNone. - */ - FbxPropertyT GateFit; - - /** This property handles the field of view in degrees. - * - * To access this property do: FieldOfView.Get(). - * To set this property do: FieldOfView.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizontal or eVertical. - * - * \remarks Default value is 40. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfView; - - /** This property handles the X (horizontal) field of view in degrees. - * - * To access this property do: FieldOfViewX.Get(). - * To set this property do: FieldOfViewX.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewX; - - /** This property handles the Y (vertical) field of view in degrees. - * - * To access this property do: FieldOfViewY.Get(). - * To set this property do: FieldOfViewY.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * \remarks Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewY; - - /** This property handles the focal length (in millimeters). - * - * To access this property do: FocalLength.Get(). - * To set this property do: FocalLength.Set(FbxDouble). - * - * Default value is the result of ComputeFocalLength(40.0). - */ - FbxPropertyT FocalLength; - - /** This property handles the camera's format. - * - * To access this property do: CameraFormat.Get(). - * To set this property do: CameraFormat.Set(EFormat). - * - * \remarks This property is read-only. - * \remarks Please use function SetFormat() if you want to change its value. - * - * Default value is eCustomFormat. - */ - FbxPropertyT CameraFormat; - - // ----------------------------------------------------------------------- - // Frame - // ----------------------------------------------------------------------- - - /** This property stores a flag that indicates to draw a border with color around the camera's viewable area or not. - * To access this property do: UseFrameColor.Get(). - * To set this property do: UseFrameColor.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseFrameColor; - - /** This property is used to define the color of the border around the camera view. - * - * To access this property do: FrameColor.Get(). - * To set this property do: FrameColor.Set(FbxDouble3). - * - * Default value is (0.3, 0.3, 0.3). - */ - FbxPropertyT FrameColor; - - // ----------------------------------------------------------------------- - // On Screen Display - // ----------------------------------------------------------------------- - - /** This property handles the flag to show the camera's name or not. - * - * To access this property do: ShowName.Get(). - * To set this property do: ShowName.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowName; - - /** This property handles the flag to show info on moving or not. - * - * To access this property do: ShowInfoOnMoving.Get(). - * To set this property do: ShowInfoOnMoving.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowInfoOnMoving; - - /** This property handles the flag to draw floor grid or not. - * - * To access this property do: ShowGrid.Get(). - * To set this property do: ShowGrid.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowGrid; - - /** This property handles the flag to show optical center or not. - * - * To access this property do: ShowOpticalCenter.Get(). - * To set this property do: ShowOpticalCenter.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowOpticalCenter; - - /** This property handles the flag to show the camera's sight line or not. - * When the camera is revolved about the center of interest in the perspective view, - * the angle of a camera's sight line relative to a plane perpendicular to the ground plane is referred to as its azimuth; - * and the angle of a camera's sight line relative to the ground plane is referred to as its elevation; - * - * To access this property do: ShowAzimut.Get(). - * To set this property do: ShowAzimut.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowAzimut; - - /** This property handles the flag to show time code or not. - * - * To access this property do: ShowTimeCode.Get(). - * To set this property do: ShowTimeCode.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowTimeCode; - - /** This property handles the flag to show audio or not. - * - * To access this property do: ShowAudio.Get(). - * To set this property do: ShowAudio.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowAudio; - - /** This property handles audio color. - * - * To access this property do: AudioColor.Get(). - * To set this property do: AudioColor.Set(FbxDouble3). - * - * Default value is (0.0, 1.0, 0.0). - */ - FbxPropertyT AudioColor; - - // ----------------------------------------------------------------------- - // Clipping Planes - // ----------------------------------------------------------------------- - - /** This property handles the near plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetNearPlane() if you want to change its value. - * - * Default value is 10. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT NearPlane; - - /** This property handles the far plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetFarPlane() if you want to change its value. - * - * Default value is 4000. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT FarPlane; - - /** This property indicates that the clip planes should be automatically computed or not. - * - * To access this property do: AutoComputeClipPlanes.Get(). - * To set this property do: AutoComputeClipPlanes.Set(FbxBool). - * - * When this property is set to true, the NearPlane and FarPlane values are - * ignored. Note that not all applications support this flag. - */ - FbxPropertyT AutoComputeClipPlanes; - - - // ----------------------------------------------------------------------- - // Camera Film Setting - // ----------------------------------------------------------------------- - - /** This property handles the film aperture width (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureWidth() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.8160. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmWidth; - - /** This property handles the film aperture height (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureHeight() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.6120. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmHeight; - - /** This property handles the film aperture aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() if you want to change its value. - * - * Default value is (FilmWidth / FilmHeight). - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmAspectRatio; - - /** This property handles the film aperture squeeze ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetSqueezeRatio() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 1.0. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmSqueezeRatio; - - /** This property handles the film aperture format. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() - * if you want to change its value. - * - * Default value is eCustomAperture. - */ - FbxPropertyT FilmFormat; - - /** This property handles the horizontal offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured in inches. - * - * To access this property do: FilmOffsetX.Get(). - * To set this property do: FilmOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetX; - - /** This property handles the vertical offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured - * in inches. - * - * To access this property do: FilmOffsetY.Get(). - * To set this property do: FilmOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetY; - - /** This property handles the pre-scale value. - * The value is multiplied against the computed projection matrix. - * It is applied before the film roll. - * - * To access this property do: PreScale.Get(). - * To set this property do: PreScale.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT PreScale; - - /** This property handles the horizontal film horizontal translation. - * To access this property do: FilmTranslateX.Get(). - * To set this property do: FilmTranslateX.Set(FbxDouble). - * Default value is 0.0 - */ - FbxPropertyT FilmTranslateX; - - /** This property handles the vertical film translation. - * - * To access this property do: FilmTranslateY.Get(). - * To set this property do: FilmTranslateY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmTranslateY; - - /** This property handles the horizontal pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotX.Get(). - * To set this property do: FilmRollPivotX.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotX; - - /** This property handles the vertical pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotY.Get(). - * To set this property do: FilmRollPivotY.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotY; - - /** This property handles the amount of rotation around the film back. - * The roll value is specified in degrees. - * - * To access this property do: FilmRollValue.Get(). - * To set this property do: FilmRollValue.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks The rotation occurs around the specified pivot point, - * this value is used to compute a film roll matrix, which is a component of the post-projection matrix. - */ - FbxPropertyT FilmRollValue; - - /** This property handles how the roll is applied with respect to the pivot value. - * eRotateFirst The film back is first rotated then translated by the pivot point value. - * eTranslateFirst The film back is first translated then rotated by the film roll value. - * - * To access this property do: FilmRollOrder.Get(). - * To set this property do: FilmRollOrder.Set(EFilmRollOrder). - * - * Default value is eRotateFirst. - */ - FbxPropertyT FilmRollOrder ; - - // ----------------------------------------------------------------------- - // Camera View Widget Option - // ----------------------------------------------------------------------- - - /** This property handles the camera's look-at flag. - * If this flag is on, the camera will look at the camera interest. - * - * To access this property do: ViewCameraToLookAt.Get(). - * To set this property do: ViewCameraToLookAt.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ViewCameraToLookAt; - - /** This property handles to display the near and far plane or not. - * - * To access this property do: ViewFrustumNearFarPlane.Get(). - * To set this property do: ViewFrustumNearFarPlane.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ViewFrustumNearFarPlane; - - /** This property handles the back plane display mode. - * - * To access this property do: ViewFrustumBackPlaneMode.Get(). - * To set this property do: ViewFrustumBackPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumBackPlaneMode; - - /** This property handles the back plane distance. - * - * To access this property do: BackPlaneDistance.Get(). - * To set this property do: BackPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT BackPlaneDistance; - - /** This property handles the back plane distance mode. - * - * To access this property do: BackPlaneDistanceMode.Get(). - * To set this property do: BackPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT BackPlaneDistanceMode; - - /** This property handles the front plane mode. - * - * To access this property do: ViewFrustumFrontPlaneMode.Get(). - * To set this property do: ViewFrustumFrontPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumFrontPlaneMode; - - /** This property handles the front plane distance. - * - * To access this property do: FrontPlaneDistance.Get(). - * To set this property do: FrontPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT FrontPlaneDistance; - - /** This property handles the front plane distance mode. - * - * To access this property do: FrontPlaneDistanceMode.Get(). - * To set this property do: FrontPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT FrontPlaneDistanceMode; - - // ----------------------------------------------------------------------- - // Camera Lock Mode - // ----------------------------------------------------------------------- - - /** This property handles the flag to lock the camera's navigation. - * When this flag is on, the camera's view can not be changed anymore. - * To access this property do: LockMode.Get(). - * To set this property do: LockMode.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockMode; - - /** This property handles the flag to lock the camera interest's navigation. - * When this flag is one, the position of the camera interest is locked. - * To access this property do: LockInterestNavigation.Get(). - * To set this property do: LockInterestNavigation.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockInterestNavigation; - - // ----------------------------------------------------------------------- - // Background Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of back plane. - * - * To access this property do: BackPlateFitImage.Get(). - * To set this property do: BackPlateFitImage.Set(FbxBool). - * - * Default value is false. - * \see SetFitImage and GetFitImage. - */ - FbxPropertyT BackPlateFitImage; - - /** This property handles the crop flag of back plane. - * - * To access this property do: BackPlateCrop.Get(). - * To set this property do: BackPlateCrop.Set(FbxBool). - * - * Default value is false. - * \see SetCrop and GetCrop. - */ - FbxPropertyT BackPlateCrop; - - /** This property handles the center flag of back plane. - * - * To access this property do: BackPlateCenter.Get(). - * To set this property do: BackPlateCenter.Set(FbxBool). - * - * Default value is true. - * see SetCenter and GetCenter. - */ - FbxPropertyT BackPlateCenter; - - /** This property handles the keep ratio flag of back plane. - * - * To access this property do: BackPlateKeepRatio.Get(). - * To set this property do: BackPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - * \see SetKeepRatio and GetKeepRatio. - */ - FbxPropertyT BackPlateKeepRatio; - - /** This property handles the background alpha threshold value. - * - * To access this property do: BackgroundAlphaTreshold.Get(). - * To set this property do: BackgroundAlphaTreshold.Set(FbxDouble). - * - * Default value is 0.5. - */ - FbxPropertyT BackgroundAlphaTreshold; - - /** This property handles the back plane offset X. - * - * To access this property do: BackPlaneOffsetX.Get(). - * To set this property do: BackPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetX; - - /** This property handles the back plane offset Y. - * - * To access this property do: BackPlaneOffsetY.Get(). - * To set this property do: BackPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetY; - - /** This property handles the back plane rotation. - * - * To access this property do: BackPlaneRotation.Get(). - * To set this property do: BackPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneRotation; - - /** This property handles the back plane scaling X. - * - * To access this property do: BackPlaneScaleX.Get(). - * To set this property do: BackPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleX; - - /** This property handles the back plane scaling Y. - * - * To access this property do: BackPlaneScaleY.Get(). - * To set this property do: BackPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleY; - - /** This property handles the flag to show back plane or not. - * - * To access this property do: ShowBackPlate.Get(). - * To set this property do: ShowBackPlate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowBackplate; - - /** This property has the background texture connected to it. - * - * To access this property do: BackgroundTexture.Get(). - * To set this property do: BackgroundTexture.Set(). - * - * \remarks The background texture is connected as source object. - */ - FbxPropertyT BackgroundTexture; - - - // ----------------------------------------------------------------------- - // Foreground Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of front plate. - * - * To access this property do: FrontPlateFitImage.Get(). - * To set this property do: FrontPlateFitImage.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateFitImage; - - /** This property handles the crop flag of front plane. - * - * To access this property do: FrontPlateCrop.Get(). - * To set this property do: FrontPlateCrop.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateCrop; - - /** This property handles the center flag of front plane. - * - * To access this property do: FrontPlateCenter.Get(). - * To set this property do: FrontPlateCenter.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateCenter; - - /** This property handles the keep ratio flag of front plane. - * - * To access this property do: FrontPlateKeepRatio.Get(). - * To set this property do: FrontPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateKeepRatio; - - - /** This property handles the flag to show front plane or not. - * - * To access this property do: ShowFrontplate.Get(). - * To set this property do: ShowFrontplate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowFrontplate; - - /** This property handles the front plane offset X. - * - * To access this property do: FrontPlaneOffsetX.Get(). - * To set this property do: FrontPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetX; - - /** This property handles the front plane offset Y. - * - * To access this property do: FrontPlaneOffsetY.Get(). - * To set this property do: FrontPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetY; - - /** This property handles the front plane rotation. - * - * To access this property do: FrontPlaneRotation.Get(). - * To set this property do: FrontPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneRotation; - - /** This property handles the front plane scaling X. - * - * To access this property do: FrontPlaneScaleX.Get(). - * To set this property do: FrontPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleX; - - /** This property handles the front plane scaling Y. - * - * To access this property do: FrontPlaneScaleY.Get(). - * To set this property do: FrontPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleY; - - /** This property has the foreground texture connected to it. - * - * To access this property do: ForegroundTexture.Get(). - * To set this property do: ForegroundTexture.Set(). - * - * \remarks The foreground texture is connected as source object. - */ - FbxPropertyT ForegroundTexture; - - /** This property handles the foreground image opacity value. - * - * To access this property do: ForegroundOpacity.Get(). - * To set this property do: ForegroundOpacity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT ForegroundOpacity; - - // ----------------------------------------------------------------------- - // Safe Area - // ----------------------------------------------------------------------- - - /** This property handles the flag to display safe area or not. - * - * To access this property do: DisplaySafeArea.Get(). - * To set this property do: DisplaySafeArea.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeArea; - - /** This property handles the flag display safe area on render or not. - * - * To access this property do: DisplaySafeAreaOnRender.Get(). - * To set this property do: DisplaySafeAreaOnRender.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeAreaOnRender; - - /** This property handles the style to display safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaDisplayStyle.Set(ESafeAreaStyle). - * - * Default value is eSafeAreaSquare. - */ - FbxPropertyT SafeAreaDisplayStyle; - - /** This property handles the display aspect ratio of safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaAspectRatio.Set(FbxDouble). - * - * Default value is 1.33333333333333. - */ - FbxPropertyT SafeAreaAspectRatio; - - // ----------------------------------------------------------------------- - // 2D Magnifier - // ----------------------------------------------------------------------- - - /** This property handles the flag to use 2d magnifier zoom or not. - * The 2D Magnifier lets you perform a 2D enlargement of the scene using the - * current camera without changing any camera settings. - * - * To access this property do: Use2DMagnifierZoom.Get(). - * To set this property do: Use2DMagnifierZoom.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Use2DMagnifierZoom; - - /** This property handles the 2d magnifier zoom value. - * - * To access this property do: _2DMagnifierZoom.Get(). - * To set this property do: _2DMagnifierZoom.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT _2DMagnifierZoom; - - /** This property handles the 2d magnifier X value. - * - * To access this property do: _2DMagnifierX.Get(). - * To set this property do: _2DMagnifierX.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierX; - - /** This property handles the 2d magnifier Y value. - * - * To access this property do: _2DMagnifierY.Get(). - * To set this property do: _2DMagnifierY.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierY; - - // ----------------------------------------------------------------------- - // Projection Type: Ortho, Perspective - // ----------------------------------------------------------------------- - - /** This property handles the projection type. - * - * To access this property do: ProjectionType.Get(). - * To set this property do: ProjectionType.Set(EProjectionType). - * - * Default value is ePerspective. - */ - FbxPropertyT ProjectionType; - - /** This property handles the orthographic zoom value. - * - * To access this property do: OrthoZoom.Get(). - * To set this property do: OrthoZoom.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT OrthoZoom; - - // ----------------------------------------------------------------------- - // Depth Of Field & Anti Aliasing - // ----------------------------------------------------------------------- - - /** This property handles the flag to use real time Depth of Field and Anti-Aliasing or not. - * - * To access this property do: UseRealTimeDOFAndAA.Get(). - * To set this property do: UseRealTimeDOFAndAA.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseRealTimeDOFAndAA; - - /** This property handles the flag to use depth of field or not. - * - * To access this property do: UseDepthOfField.Get(). - * To set this property do: UseDepthOfField.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseDepthOfField; - - /** This property handles the focus source. - * - * To access this property do: FocusSource.Get(). - * To set this property do: FocusSource.Set(EFocusDistanceSource). - * - * Default value is eFocusSrcCameraInterest. - * \see FocusDistance. - */ - FbxPropertyT FocusSource; - - /** This property handles the focus angle (in degrees). - * - * To access this property do: FocusAngle.Get(). - * To set this property do: FocusAngle.Set(FbxDouble). - * - * Default value is 3.5. - */ - FbxPropertyT FocusAngle; - - /** This property handles the focus distance. - * Focus distance is the distance between the camera and the object on which the camera is focused. - * There are two possible sources for this distance. - * \see EFocusDistanceSource - * - * To access this property do: FocusDistance.Get(). - * To set this property do: FocusDistance.Set(FbxDouble). - * - * Default value is 200.0. - */ - FbxPropertyT FocusDistance; - - /** This property handles the flag to use anti aliasing or not. - * - * To access this property do: UseAntialiasing.Get(). - * To set this property do: UseAntialiasing.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAntialiasing; - - /** This property handles the anti aliasing intensity. - * - * To access this property do: AntialiasingIntensity.Get(). - * To set this property do: AntialiasingIntensity.Set(FbxDouble). - * - * Default value is 0.77777. - */ - FbxPropertyT AntialiasingIntensity; - - /** This property handles the anti aliasing method. - * - * To access this property do: AntialiasingMethod.Get(). - * To set this property do: AntialiasingMethod.Set(EAntialiasingMethod). - * - * Default value is eAAOversampling. - */ - FbxPropertyT AntialiasingMethod; - - // ----------------------------------------------------------------------- - // Accumulation Buffer - // ----------------------------------------------------------------------- - - /** This property handles the flag to use accumulation buffer or not. - * - * To access this property do: UseAccumulationBuffer.Get(). - * To set this property do: UseAccumulationBuffer.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAccumulationBuffer; - - /** This property handles the frame sampling count. - * - * To access this property do: FrameSamplingCount.Get(). - * To set this property do: FrameSamplingCount.Set(FbxInt). - * - * Default value is 7. - */ - FbxPropertyT FrameSamplingCount; - - /** This property handles the frame sampling type. - * - * To access this property do: FrameSamplingType.Get(). - * To set this property do: FrameSamplingType.Set(ESamplingType). - * - * Default value is eSamplingStochastic. - */ - FbxPropertyT FrameSamplingType; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - double ComputePixelRatio(FbxUInt pWidth, FbxUInt pHeight, double pScreenRatio = 1.3333333333); - - // Background Properties - FbxString mBackgroundMediaName; - FbxString mBackgroundFileName; - - // Foreground Properties - FbxString mForegroundMediaName; - FbxString mForegroundFileName; - - FbxVector4 mLastUp; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCamera::EAntialiasingMethod&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EAspectRatioMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDisplayMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDistanceMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EPlateDrawingMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFocusDistanceSource&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EGateFit&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EProjectionType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ERenderOptionsUsageTime&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESafeAreaStyle&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESamplingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFilmRollOrder&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h deleted file mode 100644 index 3e7ce63..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamerastereo.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ - -#include - -#include - -#include - -/** This node attribute contains methods for accessing the properties of a stereo camera. - * \nosubgrouping - * Generally, a set of stereoRig contains the center camera, the left camera and the right camera. - * FbxCameraStereo is used to represent the center camera. The left and right camera could be FbxCamera. - * FbxCameraStereo contains stereo properties. - * The left and right camera can also be get and set via related methods in FbxCameraStereo class. - * \see FbxCamera and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCameraStereo : public FbxCamera -{ - FBXSDK_OBJECT_DECLARE(FbxCameraStereo, FbxCamera); - -public: - //! Return the type of node attribute which is EType::eCameraStereo. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the stereo camera to default values. - void Reset(); - - /** Types of Stereo camera. - */ - enum EStereoType - { - eNone, //!< Disable the stereo effect.(Default value) - eConverged, //!< Computes the zero parallax plane by toeing in the cameras. - eOffAxis, //!< Computes the convergence plane by shifting the frustum using camera film back. - eParallel //!< A parallel camera setup where there is effectively no convergence plane. - }; - - /** Get the left camera which connect to property LeftCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the left camera. - */ - FbxCamera* GetLeftCamera() const; - - /** Get the right camera which connect to property RightCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the right camera. - */ - FbxCamera* GetRightCamera() const; - - /** Set the left camera, connect property LeftCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the left camera. - */ - bool SetLeftCamera(FbxCamera* pCamera); - - /** Set the right camera, connect property RightCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the right camera. - */ - bool SetRightCamera(FbxCamera* pCamera); - - /** Get the local transformation matrix of left camera. - * \return The local transformation matrix of left camera. - * \remarks Use this method to reevaluate the local transformation of left camera. - */ - FbxAMatrix GetLeftCameraLocalMatrix() const; - - /** Get the global matrix of left camera. - * \return The global transformation matrix of left camera. - * \remarks Use this method to reevaluate the global transformation of left camera. - */ - FbxAMatrix GetLeftCameraGlobalMatrix() const; - - /** Get the local transformation matrix of right camera. - * \return The local transformation matrix of right camera.. - * \remarks Use this method to reevaluate the local transformation of right camera. - */ - FbxAMatrix GetRightCameraLocalMatrix() const; - - /** Get the global transformation matrix of right camera. - * \return The global transformation matrix of right camera. - * \remarks Use this method to reevaluate the global transformation of right camera. - */ - FbxAMatrix GetRightCameraGlobalMatrix() const; - - /** Reevaluate the FilmOffsetX of left camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks This method does not set the FilmOffsetX of left camera. - */ - double ReevaluateLeftCameraFilmOffsetX() const; - - /** Reevaluate the FilmOffsetX of right camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks this method does not set the FilmOffsetX of right camera - */ - double ReevaluateRightCameraFilmOffsetX() const; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Stereo and Stereo Adjustments - // ----------------------------------------------------------------------- - - /** This property handles the types of Stereo camera. - * - * To access this property do: Stereo.Get(). - * To set this property do: Stereo.Set(EStereoType). - * - * \remarks Default Value is eNone. - */ - FbxPropertyT Stereo; - - /** This property handles the distance between left and right cameras. - * - * To access this property do: InteraxialSeparation.Get(). - * To set this property do: InteraxialSeparation.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT InteraxialSeparation; - - /** This property handles the distance on the camera view axis where the zero parallax plane occurs. - * - * To access this property do: ZeroParallax.Get(). - * To set this property do: ZeroParallax.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT ZeroParallax; - - /** This property is to offset the computed toe-in effect when it's in Converged mode. - * - * To access this property do: ToeInAdjust.Get(). - * To set this property do: ToeInAdjust.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - * This value is specified in degrees and acts as an offset to the computed toe-in. - * \see EStereoType. - */ - FbxPropertyT ToeInAdjust; - - /** This property handles the film offset for the right camera. - * - * To access this property do: FilmOffsetRightCam.Get(). - * To set this property do: FilmOffsetRightCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetRightCam; - - /** This property handles the film offset for the left camera. - * - * To access this property do: FilmOffsetLeftCam.Get(). - * To set this property do: FilmOffsetLeftCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetLeftCam; - - /** This property has the right camera connected to it. - * - * To access this property do: GetRightCamera(). - * To set this property do: SetRightCamera(FbxCamera* pCamera). - * - * \remarks The right camera is connected as source object. - */ - FbxPropertyT RightCamera; - - /** This property has the left camera connected to it. - * - * To access this property do: GetLeftCamera(). - * To set this property do: SetLeftCamera(FbxCamera* pCamera). - * - * \remarks The left camera is connected as source object. - */ - FbxPropertyT LeftCamera; - - /** This property handles the precomp file name - * - * To access this property do: PrecompFileName.Get(). - * To set this property do: PrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT PrecompFileName; - - /** This property handles the relative precomp file name - * - * To access this property do: RelativePrecompFileName.Get(). - * To set this property do: RelativePrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT RelativePrecompFileName; - - /** connect left and right camera property to stereo camera. - * \return true if it's successful, otherwise return false. - * \remarks It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - * FilmHeight, FilmSqueezeRatio] to stereo camera. - * During FBX SDK reevaluating, if ConnectProperties is called, - * to get the newest FocalLength property of left camera, please use lLeft_Camera->FocalLength.GetSrcProperty(); - */ - bool ConnectProperties(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCameraStereo::EStereoType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h deleted file mode 100644 index e498a9c..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcameraswitcher.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ - -#include - -#include -#include - -#include - -/** This node attribute contains methods for accessing the properties of a camera switcher. - * The camera switcher is a concept of Motion Builder. - * The camera switcher lets you switch between the custom cameras placed in your scene so you can create an animation using multiple camera angles. - * Custom cameras are cameras which created by users, while the default cameras are top, bottom, left, right, front, back and perspective camera. - * The Camera switcher contains the custom cameras you have created. If you have no custom cameras created in your scene, the Camera switcher is empty. - * Please read Motion Builder documentation for more details. - * \nosubgrouping - * \see FbxCamera and FbxCameraStereo. - */ -class FBXSDK_DLL FbxCameraSwitcher : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCameraSwitcher,FbxNodeAttribute); - - public: - /** - * \name Properties - */ - //@{ - /** This property handles the index of camera. - * - * Default value is 1. - */ - FbxPropertyT CameraIndex; - //@} - - //! Return the type of node attribute which is EType::eCameraSwitcher. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Default Animation Values. - * These functions provides direct access to default animation values specific to a camera switcher. The default animation - * values are found in the default take node of the associated node. These functions only work if the camera switcher has been - * associated with a node. - * - * Camera indices start at 1. Out of range indices are clamped between 1 and the number of cameras in the scene. The index of a - * camera refers to its order of appearance when searching the node tree depth first. - */ - //@{ - - /** Get default camera index. - * \return Camera index. The return value is an integer between 1 and the number - * of cameras in the scene, or 0 if there are no default camera set in the camera switcher. - */ - int GetDefaultCameraIndex() const; - - /** Set default camera index. - * \param pIndex The index of the camera to set as default. This parameter has an integer - * scale from 1 to the number of cameras in the scene. Its default value is 1 if - * there is at least one camera in the camera switcher, 0 if there are none. - * No validation checks are made. - */ - void SetDefaultCameraIndex(int pIndex); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - -public: - void AddCameraName(const char* pCameraName); - char* GetCameraName(FbxUInt pIndex) const; - FbxUInt GetCameraNameCount() const; - void ClearCameraNames(); - -protected: - FbxArray mCameraNameList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h deleted file mode 100644 index 1d78994..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h +++ /dev/null @@ -1,295 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcluster.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ - -#include - -#include - -#include - -/** Class for clusters (links). - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * - * A cluster is usually part of a skin (\see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxCluster : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxCluster,FbxSubDeformer); - -public: - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return SubDeformer type identifier: eCluster. - */ - EType GetSubDeformerType() const override {return eCluster; }; - - /** Restore the cluster to its initial state. - * Calling this function will clear the following: - * \li Pointer to linked node. - * \li Pointer to associate model. - * \li Control point indices and weights. - * \li Transformation matrices. - */ - void Reset(); - //@} - /** - * \name Link Mode, Link Node, Associate Model - */ - //@{ - /** Link modes. - * The link mode sets how the link influences the position of a control - * point and the relationship between the weights assigned to a control - * point. The weights assigned to a control point are distributed among - * the set of links associated with an instance of class FbxGeometry. - */ - enum ELinkMode - { - eNormalize, /*!< In mode eNormalize, the sum of the weights assigned to a control point - is normalized to 1.0. Setting the associate model in this mode is not - relevant. The influence of the link is a function of the displacement of the - link node relative to the node containing the control points.*/ - eAdditive, - /*!< In mode eAdditive, the sum of the weights assigned to a control point - is kept as is. It is the only mode where setting the associate model is - relevant. The influence of the link is a function of the displacement of - the link node relative to the node containing the control points or, - if set, the associate model. The weight gives the proportional displacement - of a control point. For example, if the weight of a link over a control - point is set to 2.0, a displacement of the link node of 1 unit in the X - direction relative to the node containing the control points or, if set, - the associate model, triggers a displacement of the control point of 2 - units in the same direction.*/ - eTotalOne - /*!< Mode eTotalOne is identical to mode eNormalize except that the sum of the - weights assigned to a control point is not normalized and must equal 1.0.*/ - }; - - /** Set the link mode. - * \param pMode The link mode. - * \remarks All the links associated to an instance of class FbxGeometry must have the same link mode. - */ - void SetLinkMode(ELinkMode pMode); - - /** Get the link mode. - * \return The link mode. - */ - ELinkMode GetLinkMode() const; - - /** Set the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \param pNode The link node. - */ - void SetLink(const FbxNode* pNode); - - /** Get the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - FbxNode* GetLink(); - - /** Get the link node (as const). The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - const FbxNode* GetLink() const; - - /** Set the associate model. - * The associate model is optional. It is only relevant if the link mode - * is of type eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative to the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \param pNode The associate model node. - */ - void SetAssociateModel(FbxNode* pNode); - - /** Get the associate model. - * The associate model is optional. It is only relevant if the link mode is of type - * eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative the the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \return The associate model node or \c NULL if FbxCluster::SetAssociateModel() has not been called before. - */ - FbxNode* GetAssociateModel() const; - //@} - /** - * \name Control Points - * A link has an array of indices to control points and associated weights. - * The indices refer to the control points in the instance of class FbxGeometry - * owning the link. The weights are the influence of the link node over the - * displacement of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and weights. - * \param pIndex The index of the control point. - * \param pWeight The link weight for this control point. - */ - void AddControlPointIndex(int pIndex, double pWeight); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point weights. - * \return Pointer to the array of control point weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointWeights() const; - - //@} - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - /** - * \name Transformation matrices - * A link has three transformation matrices: - * \li Transform refers to the global initial transform of the geometry node that contains the link node. - * \li TransformLink refers to global initial transform of the link node. - * \li TransformAssociateModel refers to the global initial transform of the associate model. - * - * For example, given a mesh binding with several bones(links), Transform is the global transform - * of the mesh at the binding moment, TransformLink is the global transform of the bone(link) - * at the binding moment, TransformAssociateModel is the global transform of the associate model - * at the binding moment. - */ - //@{ - - /** Set matrix associated with the node containing the link. - * \param pMatrix Transformation matrix. - */ - void SetTransformMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the node containing the link. - * \param pMatrix Transformation matrix to be filled with appropriate data. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the link node. - * \param pMatrix Transformation matrix. - */ - void SetTransformLinkMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the link node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformLinkMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the associate model. - * \param pMatrix Transformation matrix. - */ - void SetTransformAssociateModelMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the associate model. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformAssociateModelMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the parent node. - * \param pMatrix Transformation matrix. - */ - void SetTransformParentMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the parent node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformParentMatrix(FbxAMatrix& pMatrix) const; - - /** Get the Transform Parent set flag value. - * \return \c true if transform matrix associated with parent node is set. - */ - bool IsTransformParentSet() const { return mIsTransformParentSet; } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void SetUserData(const char* pUserDataID, const char* pUserData); - const char* GetUserDataID () const; - const char* GetUserData () const; - const char* GetUserData (const char* pUserDataID) const; - - // For pre version 6 support - FbxString mBeforeVersion6LinkName; - FbxString mBeforeVersion6AssociateModelName; - - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - ELinkMode mLinkMode; - FbxString mUserDataID; - FbxString mUserData; - FbxArray mControlPointIndices; - FbxArray mControlPointWeights; - FbxMatrix mTransform; - FbxMatrix mTransformLink; - FbxMatrix mTransformAssociate; - FbxMatrix mTransformParent; - bool mIsTransformParentSet; - - FbxPropertyT SrcModelReference; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h deleted file mode 100644 index 24b61f5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ - -#include - -#include -#include - -/** Base class for skin deformer (FbxSkin) and vertex cache deformer (FbxVertexCacheDeformer). - * The corresponding deformer types are FbxDeformer::eSkin and FbxDeformer::eVertexCache. - * A deformer can be binded to a geometry (FbxGeometry) to act on its shape. Typically, - * some objects under the deformer are animated, and via the deformer, the geometry - * is animated too. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * A vertex cache deformer contains a cache (FbxCache). The cache contains animation - * information for every control point of the geometry. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDeformer, FbxObject); - -public: - /** - * \name Multi-Layer Flag - * This flag is available for backward compatibility with older - * version of FBX files and should not be used anymore. All the animation layering - * system has been moved to the FbxAnimLayer and FbxAnimStack classes. - */ - //@{ - /** Set multi-layer state flag. - * \param pMultiLayer Set to \c true to enable multi-layering. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multi-layer state. - * \return The current state of the multi-layer flag. - */ - bool GetMultiLayer() const; - //@} - - /** - * \name Deformer types - */ - //@{ - /** \enum EDeformerType Deformer types. - */ - enum EDeformerType - { - eUnknown, //!< Unknown deformer type - eSkin, //!< Type FbxSkin - eBlendShape, //!< Type FbxBlendShape - eVertexCache //!< Type FbxVertexCacheDeformer - }; - - /** Get the deformer type. - * \return Deformer type identifier. Default value is eUnknown. - */ - virtual EDeformerType GetDeformerType() const { return eUnknown; } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h deleted file mode 100644 index 1f0f7e0..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgenericnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ - -#include -#include - -#include - -/** Empty node containing properties. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGenericNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGenericNode, FbxObject); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h deleted file mode 100644 index 0182164..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h +++ /dev/null @@ -1,318 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_H_ -#define _FBXSDK_SCENE_GEOMETRY_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -class FbxStatus; -class FbxGeometryWeightedMap; - -/** The base class of geometric objects that support control point deformations (e.g. FbxMesh, FbxNurbs, -* and FbxPatch). The FbxGeometry provides support for the following kinds of deformations. -* -* \li Skin deformation deformers -* \li Vertex cache deformers -* \li Geometry weighted maps -* \li Shapes -* -* Most of the methods of FbxGeometry are wrappers to simplify the access/manipulation of the connections -* to the deformers. For example, calling the GetDeformerCount() method is the same -* thing as calling: -* -* \code -* geometry.GetSrcObjectCount(FbxDeformer::ClassId) -* \endcode -*/ -class FBXSDK_DLL FbxGeometry : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxGeometry,FbxGeometryBase); - -public: - /** Returns the node attribute type. - * This method is derived in the more high level classes (FbxMesh, FbxNurbs, etc...) and returns the - * actual type of the geometry object. - * - * \return \e eUnknown - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Deformer Management - */ - //@{ - - /** Adds a deformer to this geometry (as mentioned in the description of this class, adding a deformer is a synonym - * for "connect a deformer"). - * \param pDeformer Pointer to the deformer to be added. - * \return Index of the added deformer. - */ - int AddDeformer(FbxDeformer* pDeformer); - - /** Remove a deformer. - * \param pIndex Index of deformer to remove. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the removed deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* RemoveDeformer(int pIndex, FbxStatus* pStatus = NULL); - - /** Returns the number of deformers. - * \return The number of deformers that are connected to this geometry. - */ - int GetDeformerCount() const; - - /** Returns the deformer at the specified index. - * \param pIndex The specified deformer index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the number of deformers of a specified type. - * \param pType The specified deformer type. - * \return The number of deformers of the specified type. - */ - int GetDeformerCount(FbxDeformer::EDeformerType pType) const; - - /** Returns the deformer of a specified type at the specified index. - * \param pIndex The specified deformer index. - * \param pType The specified deformer type. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxDeformer::EDeformerType pType, FbxStatus* pStatus = NULL) const; - - //@} - - /** - * \name Geometry Weighted Maps Management - */ - //@{ - - /** Returns the source geometry weighted map that is connected to this geometry. - * \return Pointer to the source geometry weighted map that is connected to this geometry if any. - */ - FbxGeometryWeightedMap* GetSourceGeometryWeightedMap(); - - /** Returns the number of destination geometry weighted map(s) that are connected to this geometry. - * \return The number of destination geometry weighted map(s) that are connected to this geometry. - */ - int GetDestinationGeometryWeightedMapCount() const; - - /** Returns the destination geometry weighted map at a specified index. - * \param pIndex The specified index. - * \return Pointer to the destination geometry weighted map at the specified index (if any). - */ - FbxGeometryWeightedMap* GetDestinationGeometryWeightedMap(int pIndex); - - //@} - - /** - * \name Shape Management - */ - //@{ - - /** Add a shape to the specified blend shape deformer and blend shape channel of this geometry. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShape Pointer to the shape object to be added. - * \param pPercent The full deform percentage of this shape. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if success, \c false otherwise. - */ - bool AddShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxShape* pShape, double pPercent = 100, FbxStatus* pStatus = NULL); - - /** Removes all the shapes without destroying them. - * If shapes aren't explicitly destroyed before calling this function, they will be - * destroyed along with the SDK manager that created them. - */ - void ClearShape(); - - /** Returns the number of shapes. - * \return The number of shapes that have been added to this geometry. - */ - int GetShapeCount() const; - - /** Returns the number of shapes. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of shapes that have been added to this blend shape channel of this blend shape deformer. - */ - int GetShapeCount(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL); - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - const FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL) const; - - /** Get the shape animation curve. - * The shape channel is an animatable property with a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pLayer The animation layer from which we want to get the requested animation curve. - * \param pCreateAsNeeded If \c true, creates the animation curve if it is not already present. - * \param pStatus The FbxStatus object to hold error codes. - * \return Animation curve (or NULL if an error occurred). - * \remarks If pLayer is left at NULL, the method will use the first layer of the Animation stack. - */ - FbxAnimCurve* GetShapeChannel(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxAnimLayer* pLayer, bool pCreateAsNeeded = false, FbxStatus* pStatus = NULL); - //@} - - /** NURBS and Patches surface modes. - * This information is never directly used inside the FBX SDK. Applications can use these values if they wish to - * carry the "rendering" details of the NURBS and Patches. The FBX SDK guarantee that the value (member of the FbxNurbs, - * FbxNurbsSurface and FbxPatch classes) is stored to FBX files and retrieved from them. - * \remarks The enum has been defined in this class to avoid symbols duplication. - */ - enum ESurfaceMode - { - eRaw, //! Raw. - eLowNoNormals, //! Low and no normals. - eLow, //! Low. - eHighNoNormals, //! High and no normals. - eHigh //! High. - }; - - /** - * \name Pivot Management - * The geometry pivot is used to specify additional translation, rotation, - * and scaling information applied to all control points when the model is - * exported. - */ - //@{ - - /** Returns the pivot matrix. - * \param pXMatrix Placeholder for the returned matrix. - * \return Reference to the passed argument. - */ - FbxAMatrix& GetPivot(FbxAMatrix& pXMatrix) const; - - /** Sets the pivot matrix. - * \param pXMatrix The transformation matrix that is assigned to the pivot matrix. - */ - void SetPivot(FbxAMatrix& pXMatrix); - - /** Applies the pivot matrix to all vertices/normals of the geometry. - */ - void ApplyPivot(); - - //@} - - /** - * \name Default Animation Values - * These functions provides direct access to default animation values that are specific to a geometry. - * These functions only work if the geometry has been associated with a node. - */ - //@{ - - /** Sets the default deformation for a specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pIndex is out of range. - */ - void SetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, double pPercent); - - /** Sets the default deformation for a specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pShapeName is invalid. - */ - void SetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel, double pPercent); - - /** Returns the default deformation value for the specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \return The deformation value for the specified shape, or 0 if pIndex is out of range. - */ - double GetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex) const; - - /** Returns the default deformation value for the specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \return The deformation value for the specified shape, or 0 if pShapeName is invalid. - */ - double GetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - - void CleanShapeChannels(FbxAnimLayer* pAnimLayer); - void CleanShapeChannel(FbxAnimLayer* pAnimLayer, int pShapeIndex); - void CreateShapeChannelProperties(FbxString& pShapeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName, int pShapeIndex); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName, int pShapeIndex); - void ClearTemporaryShapeNames(); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void SetDocument(FbxDocument* pDocument) override; - - FbxString CreateShapeChannelName(int pShapeIndex); - FbxString CreateShapeChannelName(FbxString pShapeName); - - void CopyDeformers(const FbxGeometry* pGeometry); - void CopyPivot(const FbxGeometry* pSource); - - // Used during FBX v5 file store - FbxArray mShapeNameArrayV6; - FbxArray mShapeNameArrayV5; - FbxArray mShapeChannelNameArrayV5; - - FbxAMatrix* mPivot; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h deleted file mode 100644 index 47abdce..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h +++ /dev/null @@ -1,669 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometrybase.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BASE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BASE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; - -/** This class is the base class for geometric object such as meshes, NURBS and patches. - * Use the FbxGeometryBase class to manage the control points, normals, binormals and tangents of the - * geometries. - * The meaning of "control point" is dependent of the geometry object type. For meshes, the "control point" - * is the physical 3D coordinate of polygon vertices while, for NURBS, it is the the actual control point on the curves - * defining the surface. This class also allow you to define normals, binormals and tangents regardless of the type of - * geometric object. However, in reality, applying such definitions to NURBS and patches does not make much sense - * since these definitions would only exist at the control points and inbetween them, the interpolation would certainly not - * follow the curve. - * - * Geometric objects are using a system of layered data to extend their construction definition. For example, a typical - * layer for a Mesh contains Normals, UVs and Materials but client applications can decide to define another set of - * Normals and UVs and swap them during the rendering phase to produce some different results. The combinations are limitless - * and it would be impossible to discuss them all. This example has been presented to show one possible context where - * layers can be used. More information can be found in the FbxLayerContainer and FbxLayer classes description. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGeometryBase : public FbxLayerContainer -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryBase, FbxLayerContainer); - -public: - /** - * \name Control Points, Normals, Binormals and Tangent Management. - */ - //@{ - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will be cleared. - */ - virtual void InitControlPoints(int pCount); - - /** Allocates memory space for the array of normals. - * \param pCount The desired size for the normal array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * \remarks The normals initialized with this function will have the ReferenceMode set to eDirect. Also, - * the array will always be defined on layer 0. - */ - void InitNormals(int pCount = 0 ); - - /** Allocates memory space for the array of normals cloned from the pSrc. - * \param pSrc The source geometry from which the normals information is cloned. - * \remarks This function must be called with the argument, otherwise it does not do anything. Also, - * it will only process the normals array defined on layer 0 of the pSrc. - */ - void InitNormals(FbxGeometryBase* pSrc); - - /** Allocates memory space for the array of tangents on specified layer. - * \param pCount The desired size of the tangent array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of tangents. - * \param pName The specified name for the allocated tangents array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The tangents initialized with this function will have the reference mode set to eDirect. - */ - void InitTangents(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of tangents cloned from the pSrc on the specified layer. - * \param pSrc The source geometry from which the tangents information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of tangents from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitTangents(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Allocates memory space for the array of binormals. - * \param pCount The desired size of the binormal array. If pCount is specified, the array will have the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of binormals. - * \param pName The specified name for the allocated binormals array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The binormals initialized with this function will have the reference mode set to eDirect. - */ - void InitBinormals(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of binormals cloned from the pSrc. - * \param pSrc The source geometry from which the binormals information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of binormals from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitBinormals(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Sets the control point and the normal values at the specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the control point/normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting if it already exist. NOTE: This feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the arrays (control points and normals) are not big enough to store the values at the - * specified index, they will be automatically resized to accommodate the new entries. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false); - - - /** Sets the control point at a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index of the control point. - * - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex); - - /** Gets the control point at the specified index. - * \param pIndex The specified index of the control point. - * \return The value of the specific control point. - * - * \remarks If index is out of range, FbxVector4(0, 0, 0) is returned. - */ - virtual FbxVector4 GetControlPointAt(int pIndex) const; - - /** Sets the control point normal value at the specified index. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting it if it already exist. NOTE: this feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointNormalAt(const FbxVector4 &pNormal, int pIndex, bool pI2DSearch=false); - - /** Returns the number of control points. - * \return The number of control points allocated in the geometry. - */ - virtual int GetControlPointsCount() const; - - - /** Returns a pointer to the array of control points. - * \param pStatus Not used in the implementation of this class. - * \return Pointer to the array of control points, or \c NULL if the array has not been allocated. - * \remarks Use the function FbxGeometryBase::InitControlPoints() to allocate the array. - */ - virtual FbxVector4* GetControlPoints(FbxStatus* pStatus=NULL) const; - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will NOT be cleared. - */ - virtual void SetControlPointCount(int pCount); - - //@} - - - /** - * \name Public and fast access Properties - */ - //@{ - //! Control the geometry render state. Geometry can still cast shadows even if this is turned off. - FbxPropertyT PrimaryVisibility; - - //! If true, the geometry will produce shadows. - FbxPropertyT CastShadow; - - //! If true, the geometry will receive shadows. - FbxPropertyT ReceiveShadow; - - //! The minimum value of the control points bounding box. - FbxPropertyT BBoxMin; - - //! The maximum value of the control points bounding box. - FbxPropertyT BBoxMax; - - /** Computes the control points Bounding box. - */ - void ComputeBBox(); - //@} - - - /** - * \name Geometry Element Management. - * A FbxGeometryElement describes how the geometry element (normals, UVs and etc.) is mapped to a geometry - * surface and how the mapping information is arranged in memory. - * FbxGeometryElement is exactly the same as FbxLayerElement but does not expose the geometry's layer information. - * Use the geometry element classes to decompose the geometry without dealing with layers. - */ - //@{ - - /** Creates a normal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementNormal* CreateElementNormal(); - - /** Remove the normal geometry element from this geometry. - * \param pElementNormal A pointer to the normal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementNormal(FbxGeometryElementNormal* pElementNormal); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementNormal* GetElementNormal(int pIndex = 0); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementNormal* GetElementNormal(int pIndex = 0) const; - - /** Get the number of this geometry's normal geometry element. - * \return Total number of normal geometry elements for this geometry. - */ - int GetElementNormalCount() const; - - /** Creates a binormal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementBinormal* CreateElementBinormal(); - - /** Remove the binormal geometry element from this geometry. - * \param pElementBinormal A pointer to the binormal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementBinormal(FbxGeometryElementBinormal* pElementBinormal); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0) const; - - /** Get the number of this geometry's binormal geometry element. - * \return Total number of binormal geometry elements for this geometry. - */ - int GetElementBinormalCount() const; - - /** Creates a tangent geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementTangent* CreateElementTangent(); - - /** Remove the tangent geometry element from this geometry. - * \param pElementTangent A pointer to the tangent element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementTangent(FbxGeometryElementTangent* pElementTangent); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementTangent* GetElementTangent(int pIndex = 0); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementTangent* GetElementTangent(int pIndex = 0) const; - - /** Get the number of this geometry's tangent geometry element. - * \return Total number of tangent geometry elements for this geometry. - */ - int GetElementTangentCount() const; - - /** Creates a material geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementMaterial* CreateElementMaterial(); - - /** Remove the material geometry element from this geometry. - * \param pElementMaterial A pointer to the material element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementMaterial(FbxGeometryElementMaterial* pElementMaterial); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0) const; - - /** Get the number of this geometry's material geometry element. - * \return Total number of material geometry elements for this geometry. - */ - int GetElementMaterialCount() const; - - /** Creates a polygon group geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementPolygonGroup* CreateElementPolygonGroup(); - - /** Remove the polygon group geometry element from this geometry. - * \param pElementPolygonGroup A pointer to the polygon group element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementPolygonGroup(FbxGeometryElementPolygonGroup* pElementPolygonGroup); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0) const; - - /** Get the number of this geometry's polygon group geometry element. - * \return Total number of polygon group geometry elements for this geometry. - */ - int GetElementPolygonGroupCount() const; - - /** Creates a vertex color geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVertexColor* CreateElementVertexColor(); - - /** Remove the vertex color geometry element from this geometry. - * \param pElementVertexColor A pointer to the vertex color element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexColor(FbxGeometryElementVertexColor* pElementVertexColor); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0) const; - - /** Get the number of this geometry's vertex color geometry element. - * \return Total number of vertex color geometry elements for this geometry. - */ - int GetElementVertexColorCount() const; - - /** Creates a smoothing geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementSmoothing* CreateElementSmoothing(); - - /** Remove the smoothing geometry element from this geometry. - * \param pElementSmoothing A pointer to the smoothing element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementSmoothing(FbxGeometryElementSmoothing* pElementSmoothing); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0) const; - - /** Get the number of this geometry's smoothing geometry element. - * \return Total number of smoothing geometry elements for this geometry. - */ - int GetElementSmoothingCount() const; - - /** Creates a vertex crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementVertexCrease(); - - /** Remove the vertex crease geometry element from this geometry. - * \param pElementCrease A pointer to the vertex crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0) const; - - /** Get the number of this geometry's vertex crease geometry element. - * \return Total number of vertex crease geometry elements for this geometry. - */ - int GetElementVertexCreaseCount() const; - - /** Creates an edge crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementEdgeCrease(); - - /** Remove the edge crease geometry element from this geometry. - * \param pElementCrease A pointer to the edge crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementEdgeCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0) const; - - /** Get the number of this geometry's edge crease geometry element. - * \return Total number of edge crease geometry elements for this geometry. - */ - int GetElementEdgeCreaseCount() const; - - /** Creates a hole geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementHole* CreateElementHole(); - - /** Remove the hole geometry element from this geometry. - * \param pElementHole A pointer to the hole element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementHole(FbxGeometryElementHole* pElementHole); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementHole* GetElementHole(int pIndex = 0); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementHole* GetElementHole(int pIndex = 0) const; - - /** Get the number of this geometry's hole geometry element. - * \return Total number of hole geometry elements for this geometry. - */ - int GetElementHoleCount() const; - - /** Creates a user data geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUserData* CreateElementUserData(); - - /** Remove the user data geometry element from this geometry. - * \param pElementUserData A pointer to the user data element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUserData(FbxGeometryElementUserData* pElementUserData); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementUserData* GetElementUserData(int pIndex = 0); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementUserData* GetElementUserData(int pIndex = 0) const; - - /** Get the number of this geometry's user data geometry element. - * \return Total number of user data geometry elements for this geometry. - */ - int GetElementUserDataCount() const; - - /** Creates a visibility geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVisibility* CreateElementVisibility(); - - /** Remove the visibility geometry element from this geometry. - * \param pElementVisibility A pointer to the visibility element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVisibility(FbxGeometryElementVisibility* pElementVisibility); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0) const; - - /** Get the number of this geometry's visibility geometry element. - * \return Total number of visibility geometry elements for this geometry. - */ - int GetElementVisibilityCount() const; - - /** Creates a UV geometry element for this geometry. - * \param pUVSetName The UV geometry element name. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUV* CreateElementUV(const char* pUVSetName, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Remove the UV geometry element from this geometry. - * \param pElementUV A pointer to the UV element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUV(FbxGeometryElementUV* pElementUV); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - const FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Get the number of this geometry's UV geometry element. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Total number of UV geometry elements for this geometry. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - int GetElementUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - FbxGeometryElementUV* GetElementUV(const char* pUVSetName); - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A const pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - const FbxGeometryElementUV* GetElementUV(const char* pUVSetName) const; - - /** Returns this geometry's all UV set names. - * \param pUVSetNameList A reference to \c FbxStringList that will be filled with this geometry's all UV set names. - */ - void GetUVSetNames(FbxStringList& pUVSetNameList) const; - - //@} - - - /** - * \name Off-loading Serialization section - * The methods in this section are typically called by a peripheral (FbxPeripheral). There should be no - * real interest in calling them directly. The functions will write/read the memory dump of the data contained - * in this class. Each data block written/read will start with an (int) value representing the number of items - * in the array. If this value (v) is not zero, it will be followed by the array content. A block of data that is - * (v * sizeof(array item size)) bytes big. The methods will also call the parent class ones to dump the Layers content. - */ - //@{ - /** Writes the content of the geometry object to the specified stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the geometry object from the specified stream. - * \param pStream The source stream. - * \return \c True if the geometry object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - - /** Calculate the actual amount of memory used by this geometry object. - * \return The memory size in bytes (includes the amount use by the data defined in the layers). - */ - virtual int MemoryUsage() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - FbxArray mControlPoints; - - bool GetNormals(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetNormalsIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTangents(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetTangentsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormals(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormalsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - -protected: - void ConstructProperties(bool pForceSet) override; - void ContentClear() override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BASE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h deleted file mode 100644 index 5d201a5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryweightedmap.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ - -#include - -#include -#include - -#include - -class FbxGeometry; - -/** \brief This class provides the structure to build a correspondence between 2 geometries. - * - * This correspondence is done at the vertex level. Which means that for each vertex in the - * source geometry, you can have from 0 to N corresponding vertices in the destination - * geometry. Each corresponding vertex is weighted. - * - * For example, if the source geometry is a NURB and the destination geometry is a mesh, - * the correspondence object will express the correspondence between the NURB's control vertices - * and the mesh's vertices. - * - * If the mesh corresponds to a tesselation of the NURB, the correspondence object can be used - * to transfer any deformation that affect the NURB's control vertices to the mesh's vertices. - * - * See FbxWeightedMapping for more details. - */ -class FBXSDK_DLL FbxGeometryWeightedMap : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryWeightedMap, FbxObject); - -public: - - /** Set correspondence values. - * \param pWeightedMappingTable Pointer to the table containing values - * \remark \e pWeightedMappingTable becomes owned by this object and will be destroyed by it - * when the object goes out of scope or on the next call to SetValues(). The deletion - * uses FbxDelete() so the content of the pointer must have been allocated with FbxNew<>() - */ - void SetValues(const FbxWeightedMapping* pWeightedMappingTable); - - /** Return correspondence values. - * \return Pointer to the correspondence values table. - */ - FbxWeightedMapping* GetValues() const; - - /** Return source geometry. - * \return Pointer to the source geometry, or \c NULL if there is no connected source geometry - */ - FbxGeometry* GetSourceGeometry(); - - /** Return destination geometry. - * \return Pointer to the destination geometry, or \c NULL if there is no connected destination geometry - */ - FbxGeometry* GetDestinationGeometry(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - // Real weigths table - FbxWeightedMapping* mWeightedMapping; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h deleted file mode 100644 index 4880ca1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h +++ /dev/null @@ -1,2808 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxLayerElementArray; -class FbxLayerContainer; - -/** Base class for elements of layers (FbxLayer). - * A layer element type is identified by EType. - * A FbxLayerElement describes how the layer element is mapped to a geometry surface - * and how the mapping information is arranged in memory. - * A FbxLayerElement contains Normals, UVs or other kind of information. - * - * \see FbxLayer - * \see FbxLayerElement::EMappingMode - * \see FbxLayerElement::EReferenceMode - */ -class FBXSDK_DLL FbxLayerElement -{ -public: - /** \enum EType Layer Element type identifier. - * - \e eUnknown Undefined Layer Element class. - * - \e eNormal Layer Element of type FbxLayerElementNormal. - * - \e eBiNormal Layer Element of type FbxLayerElementBinormal. - * - \e eTangent Layer Element of type FbxLayerElementTangent. - * - \e eMaterial Layer Element of type FbxLayerElementMaterial. - * - \e eTextureDiffuse Layer Element of type FbxLayerElementTexture. - * - \e ePolygonGroup Layer Element of type FbxLayerElementPolygonGroup. - * - \e eUV Layer Element of type FbxLayerElementUV. - * - \e eVertexColor Layer Element of type FbxLayerElementVertexColor. - * - \e eSmoothing Layer Element of type FbxLayerElementSmoothing. - * - \e eVertexCrease Layer Element of type FbxLayerElementCrease. - * - \e eEdgeCrease Layer Element of type FbxLayerElementCrease. - * - \e eHole Layer Element of type FbxLayerElementHole. - * - \e eUserData Layer Element of type FbxLayerElementUserData. - * - \e eVisibility Layer Element of type FbxLayerElementVisibility. - * - \e eTextureEmissive Layer Element of type FbxLayerElementTexture. - * - \e eTextureEmissiveFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbient Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbientFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDiffuseFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecular Layer Element of type FbxLayerElementTexture. - * - \e eTextureNormalMap Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecularFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureShininess Layer Element of type FbxLayerElementTexture. - * - \e eTextureBump Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparency Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparencyFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflection Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflectionFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacement Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacementVector Layer Element of type FbxLayerElementTexture. - * - \e eTypeCount - */ - enum EType - { - eUnknown, - - //Non-Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eNormal, - eBiNormal, - eTangent, - eMaterial, - ePolygonGroup, - eUV, - eVertexColor, - eSmoothing, - eVertexCrease, - eEdgeCrease, - eHole, - eUserData, - eVisibility, - - //Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eTextureDiffuse, - eTextureDiffuseFactor, - eTextureEmissive, - eTextureEmissiveFactor, - eTextureAmbient, - eTextureAmbientFactor, - eTextureSpecular, - eTextureSpecularFactor, - eTextureShininess, - eTextureNormalMap, - eTextureBump, - eTextureTransparency, - eTextureTransparencyFactor, - eTextureReflection, - eTextureReflectionFactor, - eTextureDisplacement, - eTextureDisplacementVector, - - eTypeCount - }; - - const static int sTypeTextureStartIndex = int(eTextureDiffuse); //!< The start index of texture type layer elements. - const static int sTypeTextureEndIndex = int(eTypeCount) - 1; //!< The end index of texture type layer elements. - const static int sTypeTextureCount = sTypeTextureEndIndex - sTypeTextureStartIndex + 1; //!< The count of texture type layer elements. - const static int sTypeNonTextureStartIndex = int(eNormal); //!< The start index of non-texture type layer elements. - const static int sTypeNonTextureEndIndex = int(eVisibility); //!< The end index of non-texture type layer elements. - const static int sTypeNonTextureCount = sTypeNonTextureEndIndex - sTypeNonTextureStartIndex + 1; //!< The count of non-texture type layer elements. - static const char* const sTextureNames[]; //!< Array of names of texture type layer elements. - static const char* const sTextureUVNames[]; //!< Array of names of UV layer elements. - static const char* const sNonTextureNames[]; //!< Array of names of non-texture type layer elements. - static const FbxDataType sTextureDataTypes[]; //!< Array of texture types. - static const char* const sTextureChannelNames[]; //!< Array of texture channels. - - /** \enum EMappingMode Determines how the element is mapped to a surface. - * - \e eNone The mapping is undetermined. - * - \e eByControlPoint There will be one mapping coordinate for each surface control point/vertex. - * - \e eByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. - This means that a vertex will have as many mapping coordinates as polygons of which it is a part. - * - \e eByPolygon There can be only one mapping coordinate for the whole polygon. - * - \e eByEdge There will be one mapping coordinate for each unique edge in the mesh. - This is meant to be used with smoothing layer elements. - * - \e eAllSame There can be only one mapping coordinate for the whole surface. - */ - enum EMappingMode - { - eNone, - eByControlPoint, - eByPolygonVertex, - eByPolygon, - eByEdge, - eAllSame - }; - - /** \enum EReferenceMode Determines how the mapping information is stored in the array of coordinates. - * - \e eDirect This indicates that the mapping information for the n'th element is found in the n'th place of - FbxLayerElementTemplate::mDirectArray. - * - \e eIndex, This symbol is kept for backward compatibility with FBX v5.0 files. In FBX v6.0 and higher, - this symbol is replaced with eIndexToDirect. - * - \e eIndexToDirect This indicates that the FbxLayerElementTemplate::mIndexArray - contains, for the n'th element, an index in the FbxLayerElementTemplate::mDirectArray - array of mapping elements. eIndexToDirect is usually useful for storing eByPolygonVertex mapping - mode elements coordinates. Since the same coordinates are usually - repeated many times, this saves spaces by storing the coordinate only one time - and then referring to them with an index. Materials and Textures are also referenced with this - mode and the actual Material/Texture can be accessed via the FbxLayerElementTemplate::mDirectArray - */ - enum EReferenceMode - { - eDirect, - eIndex, - eIndexToDirect - }; - - - /** Sets the Mapping Mode. - * \param pMappingMode Specifies the way that layer element is mapped to a surface. - */ - void SetMappingMode(EMappingMode pMappingMode) { mMappingMode = pMappingMode; } - - /** Sets the Reference Mode. - * \param pReferenceMode Specifies the reference mode. - */ - void SetReferenceMode(EReferenceMode pReferenceMode) { mReferenceMode = pReferenceMode; } - - /** Returns the Mapping Mode. - * \return The current Mapping Mode. - */ - EMappingMode GetMappingMode() const { return mMappingMode; } - - /** Returns the Reference Mode. - * \return The current Reference Mode. - */ - EReferenceMode GetReferenceMode() const { return mReferenceMode; } - - /** Sets the name of this object. - * \param pName Specifies the name of this LayerElement object. - */ - void SetName(const char* pName) { mName = FbxString(pName); } - - /** Returns the name of this object. - * \return The current name of this LayerElement object. - */ - const char* GetName() const { return ((FbxLayerElement*)this)->mName.Buffer(); } - - /** Equivalence operator - * \param pOther Layer element to be compared. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxLayerElement& pOther) const - { - return (mName == pOther.mName) && - (mMappingMode == pOther.mMappingMode) && - (mReferenceMode == pOther.mReferenceMode); - } - - /** Assignment operator - * \param pOther Layer element assigned to this one. - * \return This layer element after assignment. - */ - FbxLayerElement& operator=( FbxLayerElement const& pOther ) - { - mMappingMode = pOther.mMappingMode; - mReferenceMode = pOther.mReferenceMode; - // name, type and owner should not be copied because they are - // initialized when this object is created - return *this; - } - - //! Removes this layer element from its owner and delete it. - void Destroy(); - - //! Clears all the data from this layer element. - virtual bool Clear() - { - return true; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetType(const FbxDataType* pType) { mType = pType; } - const FbxLayerContainer* GetOwner() const { return mOwner; } - - // Reference count added in case of shared objects or corrupted files that uses the same object. - // This will prevent the deletion of an object that is stil used. - void IncRefCount() { mRefCount++; } - int DecRefCount() { mRefCount--; if (mRefCount < 0) { mRefCount = 0; } return mRefCount; } - -protected: - FbxLayerElement() - : mMappingMode(eNone) - , mReferenceMode(eDirect) - , mName("") - , mOwner(NULL) - , mRefCount(0) - { - } - - virtual ~FbxLayerElement() - { - } - - EMappingMode mMappingMode; - EReferenceMode mReferenceMode; - - FbxString mName; - const FbxDataType* mType; - FbxLayerContainer* mOwner; - int mRefCount; - - void Destruct() { if (DecRefCount() == 0) { FbxDelete(this); } } - virtual void SetOwner(FbxLayerContainer* pOwner, int pInstance = 0); - - FBXSDK_FRIEND_NEW(); - -public: - virtual int MemorySize() const { return 0; } - virtual bool ContentWriteTo(FbxStream& pStream) const; - virtual bool ContentReadFrom(const FbxStream& pStream); - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \internal - * Identifies what error occurs when the data arrays are manipulated. - * \nosubgrouping - */ - -class FBXSDK_DLL LockAccessStatus -{ -public: - /** \internal - * \enum ELockAccessStatus Identifies what error occurs when the data arrays are manipulated. - * - \e eSuccess Operation Successful. - * - \e eUnsupportedDTConversion Attempts to convert to an unsupported DataType. - * - \e eCorruptedCopyback The Release of a converted buffer fails and corrupts the main data. - * - \e eBadValue Invalid value. - * - \e eLockMismatch Attempts to change to an incompatible lock. - * - \e eNoWriteLock A write operation is attempted but no WriteLock is available. - * - \e eNoReadLock A read operation is attempted but the WriteLock is active. - * - \e eNotOwner Attempts to release a lock on an invalid data buffer pointer. - * - \e eDirectLockExist A direct access lock is still active. - */ - enum ELockAccessStatus - { - eSuccess, - eUnsupportedDTConversion, - eCorruptedCopyback, - eBadValue, - eLockMismatch, - eNoWriteLock, - eNoReadLock, - eNotOwner, - eDirectLockExist - }; -}; - -//Special conversion types, we do not want them to resolve to undefined. -typedef FbxHandle* FbxRefPtr; -typedef FbxLayerElementArray* FbxLayerElementArrayPtr; -typedef FbxSurfaceMaterial* FbxSurfaceMaterialPtr; -typedef FbxTexture* FbxTexturePtr; - -inline EFbxType FbxTypeOf(const FbxRefPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxLayerElementArrayPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxSurfaceMaterialPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxTexturePtr&){ return eFbxReference; } - -/** FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, - * it provides lock handling and data array manipulation of the data buffer for FbxLayerElement. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxLayerElementArray -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * \param pDataType The data type of the items in the data array. - */ - FbxLayerElementArray(EFbxType pDataType); - - //!Destructor. - virtual ~FbxLayerElementArray(); - - //@} - - /** - * \name Status handling - */ - //@{ - - //!Clears the access state and sets it to eSuccess. - inline void ClearStatus() { mStatus = LockAccessStatus::eSuccess; } - - //!Retrieves the access state. - inline LockAccessStatus::ELockAccessStatus GetStatus() const { return mStatus; } - //@} - - /** - * \name Locks handling - */ - //@{ - - /** Returns whether write is locked. - * \return \c True if write is locked, \c false otherwise. - */ - inline bool IsWriteLocked() const { return mWriteLock; }; - - /** Retrieves the read lock count. - * \return The read lock count. - */ - inline int GetReadLockCount() const { return mReadLockCount; } - //@} - - /** Returns whether this Array is accessed in any way. - * \return \c True if it is in use, \c false otherwise. - */ - bool IsInUse() const; - - /** Increments the number of read locks on this array. - * \return The current number of read locks (including the one just grabbed) or 0 if a write lock is active. - */ - int ReadLock() const; - - /** Releases a read lock on this array. - * \return The remaining read locks or -1 if a write lock is active. - */ - int ReadUnlock() const; - - /** Locks this array for writing. The data in the array is wiped out. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool WriteLock() const; - - /** Releases the write lock on this array. - */ - void WriteUnlock() const; - - /** Locks this array for writing. The data that already exists in the array is kept and is valid. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool ReadWriteLock() const; - - /** Releases the write lock on this array. - */ - void ReadWriteUnlock() const; - - - /** \enum ELockMode Identifies the access mode to the data buffer. - * - \e eReadLock Read mode. - * - \e eWriteLock Write mode. - * - \e eReadWriteLock Read-write mode. - */ - enum ELockMode - { - eReadLock = 1, - eWriteLock = 2, - eReadWriteLock = 3 - }; - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \param pDataType If defined, tries to return the data as this type. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - virtual void* GetLocked(ELockMode pLockMode, EFbxType pDataType); - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - void* GetLocked(ELockMode pLockMode=eReadWriteLock) { return GetLocked(pLockMode, mDataType); } - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - template inline T* GetLocked(T*, ELockMode pLockMode=eReadWriteLock) {T v; return (T*)GetLocked(pLockMode, FbxTypeOf(v)); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param pDataType The data type of the data buffer. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - virtual void Release(void** pDataPtr, EFbxType pDataType); - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - void Release(void** pDataPtr) { Release(pDataPtr, mDataType); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param dummy The data type of dummy is used to specialize this function. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - template inline void Release(T** pDataPtr, T* dummy) - { - T*** voidPtr = &pDataPtr; - Release((void**)*voidPtr, FbxTypeOf(*dummy)); - } - - /** Returns the Stride size which equals the size of the data type of the data buffer. - */ - virtual size_t GetStride() const; - - /** - * \name Data array manipulation - */ - //@{ - - //! Returns the count of items in the data buffer. - int GetCount() const; - - /** Sets the count of items in the data buffer. - * \param pCount The count of items to be set. - */ - void SetCount(int pCount); - - //! Clears the data buffer. - void Clear(); - - /** Resizes the data buffer. - * \param pItemCount The new size of the data buffer. - */ - void Resize(int pItemCount); - - /** Appends space to the data buffer. - * \param pItemCount The appended space size - */ - void AddMultiple(int pItemCount); - - /** Appends a new item to the end of the data buffer. - * \param pItem Pointer of the new item to be added - * \param pValueType Data type of the new item - * \return The index of the new item - */ - int Add(const void* pItem, EFbxType pValueType); - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem Pointer of the new item to be inserted - * \param pValueType Data type of the new item - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - int InsertAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value for the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem Pointer of the item whose value is copied to pIndex'th item - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void SetAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value of the last item. - * \param pItem Pointer of the item whose value is copied to the last item - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void SetLast(const void* pItem, EFbxType pValueType); - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void RemoveAt(int pIndex, void** pItem, EFbxType pValueType); - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void RemoveLast(void** pItem, EFbxType pValueType); - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \param pValueType Data type of the item - * \return \c True if the item is removed successfully, \c false otherwise - */ - bool RemoveIt(void** pItem, EFbxType pValueType); - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - bool GetAt(int pIndex, void** pItem, EFbxType pValueType) const; - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetFirst(void** pItem, EFbxType pValueType) const; - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetLast(void** pItem, EFbxType pValueType) const; - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int Find(const void* pItem, EFbxType pValueType) const; - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindAfter(int pAfterIndex, const void* pItem, EFbxType pValueType) const; - - /** Searches for an item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \param pValueType The item's data type. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindBefore(int pBeforeIndex, const void* pItem, EFbxType pValueType) const; - - /** Equivalence operator - * \param pArray Array compared to this one - * \return \c True if equal. \c false otherwise. - */ - bool IsEqual(const FbxLayerElementArray& pArray) const; - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - template inline int Add(T const& pItem) { return Add((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline int InsertAt(int pIndex, T const& pItem) { return InsertAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void SetAt(int pIndex, T const& pItem) { SetAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void SetLast(T const& pItem) { SetLast((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void RemoveAt(int pIndex, T* pItem) - { - T** voidPtr = &pItem; - RemoveAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void RemoveLast(T* pItem) - { - T** voidPtr = &pItem; - RemoveLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - template inline bool RemoveIt(T* pItem) - { - T** voidPtr = &pItem; - return RemoveIt((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - template inline bool GetAt(int pIndex, T* pItem) const - { - T** voidPtr = &pItem; - return GetAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetFirst(T* pItem) const - { - T** voidPtr = &pItem; - return GetFirst((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetLast(T* pItem) const - { - T** voidPtr = &pItem; - return GetLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int Find(T const& pItem) const { return Find((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindAfter(int pAfterIndex, T const& pItem) const { return FindAfter(pAfterIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindBefore(int pBeforeIndex, T const& pItem) const { return FindBefore(pBeforeIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - - /** Copies the items in the data buffer to an array. - * \param pDst The destination array where the items are to be copied. - */ - template inline void CopyTo(FbxArray& pDst) - { - T src; - T* srcPtr = &src; - - pDst.Clear(); - if (mDataType != FbxTypeOf(src)) - { - SetStatus(LockAccessStatus::eUnsupportedDTConversion); - return; - } - - pDst.Resize(GetCount()); - for (int i = 0; i < GetCount(); i++) - { - if (GetAt(i, (void**)&srcPtr, mDataType)) - { - pDst.SetAt(i, src); - } - } - SetStatus(LockAccessStatus::eSuccess); - } - //@} - -protected: - void* GetDataPtr(); - void* GetReference(int pIndex, EFbxType pValueType); - void GetReferenceTo(int pIndex, void** pRef, EFbxType pValueType); - - inline void SetStatus(LockAccessStatus::ELockAccessStatus pVal) const - { - const_cast(this)->mStatus = pVal; - } - - void SetImplementation(void* pImplementation); - inline void* GetImplementation() { return mImplementation; } - virtual void ConvertDataType(EFbxType pDataType, void** pDataPtr, size_t* pStride); - - EFbxType mDataType; - -private: - LockAccessStatus::ELockAccessStatus mStatus; - - int mReadLockCount; - bool mWriteLock; - void* mImplementation; - size_t mStride; - int mDirectLockOn; - bool mDirectAccessOn; - - FbxArray mConvertedData; - -}; - -/** \internal - * This class provides simple RAII-style read locking of a FbxLayerElementArray object. - */ -template -struct FbxLayerElementArrayReadLock -{ - /** \internal - * On construction, this class requires the read lock. - */ - FbxLayerElementArrayReadLock(FbxLayerElementArray& pArray) : mArray(pArray) - { - mLockedData = mArray.GetLocked((T*)NULL, FbxLayerElementArray::eReadLock); - } - - /** \internal - * On destruction, this class releases the read lock. - */ - ~FbxLayerElementArrayReadLock() - { - if( mLockedData ) - { - mArray.Release((void **) &mLockedData); - } - } - - /** \internal - * Retrieve the locked array data. - */ - const T* GetData() const - { - return mLockedData; - } - -private: - FbxLayerElementArray& mArray; - T* mLockedData; -}; - -class FbxLayerElementUserData; - -/** FbxLayerElementArrayTemplate provides data array manipulation of the data buffer for FbxLayerElement. - * It is the subclass of FbxLayerElementArray. - * \nosubgrouping - */ -template class FbxLayerElementArrayTemplate : public FbxLayerElementArray -{ -public: - - /** Constructor - * \param pDataType The data type of the array items. - */ - FbxLayerElementArrayTemplate(EFbxType pDataType) : - FbxLayerElementArray(pDataType) - { - } - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - inline int Add( T const &pItem ) { return FbxLayerElementArray::Add(pItem); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - */ - inline int InsertAt(int pIndex, T const &pItem) { return FbxLayerElementArray::InsertAt(pIndex, pItem); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - */ - inline void SetAt(int pIndex, T const &pItem) { FbxLayerElementArray::SetAt(pIndex, pItem); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - */ - inline void SetLast( T const &pItem) { FbxLayerElementArray::SetLast(pItem); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \return The value of the item removed - */ - inline T RemoveAt(int pIndex) { T lValue; FbxLayerElementArray::RemoveAt(pIndex, &lValue); return lValue; } - - /** Removes the last item from the data buffer. - * \return The value of the last item removed - */ - inline T RemoveLast() { T lValue; FbxLayerElementArray::RemoveLast(&lValue); return lValue; } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - inline bool RemoveIt(T const &pItem) { return FbxLayerElementArray::RemoveIt(&pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the specified item - * \remarks If the index is invalid, pItem is set to zero. - */ - inline T GetAt(int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Returns the first item's value. - * \return The first item's value. - */ - inline T GetFirst() const { T lValue; FbxLayerElementArray::GetFirst(&lValue); return lValue; } - - /** Returns the last item's value. - * \return The last item's value. - */ - inline T GetLast() const { T lValue; FbxLayerElementArray::GetLast(&lValue); return lValue; } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int Find(T const &pItem) { return FbxLayerElementArray::Find(pItem); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindAfter(int pAfterIndex, T const &pItem) { return FbxLayerElementArray::FindAfter(pAfterIndex, pItem); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindBefore(int pBeforeIndex, T const &pItem) { return FbxLayerElementArray::FindBefore(pBeforeIndex, pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the item - * \remarks If the index is invalid, pItem is set to zero. - */ - T operator[](int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArray& operator=(const FbxArray& pArrayTemplate) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - return *this; - } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArrayTemplate& operator=(const FbxLayerElementArrayTemplate& pArrayTemplate) - { - if ( this != &pArrayTemplate ) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - } - return *this; - } - -private: - // This one is not the best thing to do, but at least I don't get deprecated calls inside this file. - // Note that FbxLayerElementUserData is kind of a weird class in the first place anyway. So either - // we clean it up, or we live with this piece of code ;-) - friend class FbxLayerElementUserData; - T& AsReference(int pIndex) { T* v = (T*)FbxLayerElementArray::GetReference(pIndex, mDataType); return (v)?*v:dummy;} - - T dummy; -}; - - -/** Remap the index array to a new EMappingMode - * \param pLayerEl The layer element to remap - * \param pNewMapping The new mapping mode - * \param pIndexArray The index array to modify - * \return return -1 if the layer element is FbxLayerElement::eDirect - * 0 if layer element or index array is \c NULL and 1 if the remap is successful - */ -extern FBXSDK_DLL int RemapIndexArrayTo(FbxLayerElement* pLayerEl, - FbxLayerElement::EMappingMode pNewMapping, - FbxLayerElementArrayTemplate* pIndexArray); - - -/** This class complements the FbxLayerElement class. - * It provides interfaces to access the direct array and index array of different layer elements. - * \nosubgrouping - */ -template class FbxLayerElementTemplate : public FbxLayerElement -{ -public: - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Removes all elements from the direct and the index arrays. - * \remarks This function fails if there is a lock on the arrays. - * \return \c True if successful, \c false if a lock is present. - */ - bool Clear() - { - bool ret = true; - mDirectArray->Clear(); - ret = (mDirectArray->GetStatus() == LockAccessStatus::eSuccess); - - mIndexArray->Clear(); - ret |= (mIndexArray->GetStatus() == LockAccessStatus::eSuccess); - - return ret; - } - -public: - - /** Equivalence operator. - * \param pOther Another element compared to this object - * \return \c True if equal, \c false if unequal. - */ - bool operator==(const FbxLayerElementTemplate& pOther) const - { - bool ret = true; - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - if( directArray.GetCount() != mDirectArray->GetCount() || - !directArray.ReadLock() || !mDirectArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mDirectArray->IsEqual(directArray) ) - ret = false; - - directArray.ReadUnlock(); - mDirectArray->ReadUnlock(); - } - - if (ret) - { - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - if( indexArray.GetCount() != mIndexArray->GetCount() || - !indexArray.ReadLock() || !mIndexArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mIndexArray->IsEqual(indexArray) ) - ret = false; - - indexArray.ReadUnlock(); - mIndexArray->ReadUnlock(); - } - } - - if (ret == false) - return false; - - return FbxLayerElement::operator==(pOther); - } - - /** Assignment operator. - * \param pOther Another element assigned to this one - */ - FbxLayerElementTemplate& operator=( FbxLayerElementTemplate const& pOther ) - { - FBX_ASSERT(mDirectArray != NULL); - FBX_ASSERT(mIndexArray != NULL); - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - *mDirectArray = directArray; - } - - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - *mIndexArray = indexArray; - } - - FbxLayerElement* myself = (FbxLayerElement*)this; - FbxLayerElement* myOther = (FbxLayerElement*)&pOther; - *myself = *myOther; - return *this; - } - - /** Changes the Mapping mode to the new one and re-computes the index array. - * \param pNewMapping New mapping mode. - * \return If the remapping is successful, returns 1. - * If an error occurs, returns 0. In case the function cannot - * remap to the desired mode because of incompatible modes or - * unsupported modes, returns -1. - */ - int RemapIndexTo(FbxLayerElement::EMappingMode pNewMapping) - { - return RemapIndexArrayTo(this, pNewMapping, mIndexArray); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementTemplate() - { - mDirectArray = NULL; - mIndexArray = NULL; - } - - ~FbxLayerElementTemplate() - { - FbxDelete(mDirectArray); - FbxDelete(mIndexArray); - } - - virtual void AllocateArrays() - { - mDirectArray = FbxNew< FbxLayerElementArrayTemplate >(mType->GetType()); - mIndexArray = FbxNew< FbxLayerElementArrayTemplate >(FbxIntDT.GetType()); - } - -public: - virtual int MemorySize() const - { - int size = FbxLayerElement::MemorySize(); - size += (mDirectArray->GetCount()*sizeof(Type)); - size += (mIndexArray->GetCount()*sizeof(int)); - return size; - } - - /** - * \name Serialization section - */ - //@{ - virtual bool ContentWriteTo(FbxStream& pStream) const - { - void* a; - int s,v; - int count = 0; - - // direct array - count = mDirectArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Write(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - count = mIndexArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Write(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - - return FbxLayerElement::ContentWriteTo(pStream); - } - - virtual bool ContentReadFrom(const FbxStream& pStream) - { - void* a; - int s,v; - int count = 0; - - // direct array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mDirectArray->Resize(count); - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Read(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mIndexArray->Resize(count); - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Read(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - return FbxLayerElement::ContentReadFrom(pStream); - } - //@} - - typedef Type ArrayElementType; - typedef FbxLayerElementArrayTemplate DirectArrayType; - typedef FbxLayerElementArrayTemplate IndexArrayType; - - FbxLayerElementArrayTemplate* mDirectArray; - FbxLayerElementArrayTemplate* mIndexArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#define FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(classDesc) \ - FBXSDK_FRIEND_NEW(); \ - static Fbx##classDesc* Create(FbxLayerContainer* pOwner, const char* pName); - -/** \brief Layer element for mapping Normals to a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementNormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementNormal); - -protected: - FbxLayerElementNormal(); - ~FbxLayerElementNormal(); -}; - -/** \brief Layer element for mapping Binormals to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementBinormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementBinormal); - -protected: - FbxLayerElementBinormal(); - ~FbxLayerElementBinormal(); -}; - -/** \brief Layer element for mapping Tangents to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTangent : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTangent); - -protected: - FbxLayerElementTangent(); - ~FbxLayerElementTangent(); -}; - -/** Layer element for mapping materials (FbxSurfaceMaterial) to a geometry. - * - * FBX SDK 2011 and later connects materials (FbxSurfaceMaterial) to nodes (FbxNode). - * The direct array of this class is no longer used. - * The integer "n" in the index array of this class represents the n-th material (zero-based) connected to the node. - * - * For example: - * - * Mapping mode eAllSame and index array {0} means the whole geometry is assigned with the 0-th material - * connected to the node. - * - * Mapping mode eByPolygon and index array {0, 1} means the first polygon is assigned with the 0-th material and - * the second polygon is assigned with the 1-th material. - * - * - * You can access the materials from a node by using FbxNode::GetMaterialCount() and FbxNode::GetMaterial(int pIndex) - * or the more generic calls to GetSrcObjectCount() and - * GetSrcObject(index) - * - * For example: - * - * \code - * FbxNode* node; - * int nbMat = node->GetMaterialCount(); - * int nbMat1= node->GetSrcObjectCount(); - * - * FbxSurfaceMaterial* material; - * FbxLayerElementMaterial* layerElement; - * if (layerElement->GetMappingMode() == FbxLayerElement::eAllSame) - * { - * int index = layerElement->GetIndexArray()[0]; - * material = node->GetMaterial(index); - * } - * \endcode - * - * \remarks - * The DirectArray() methods still exist for legacy reasons but has been made private and should not be used. - * Therefore, to be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * - * \see FbxSurfaceMaterial - * \see FbxNode - */ -class FBXSDK_DLL FbxLayerElementMaterial : public FbxLayerElementTemplate -{ -public: - typedef FbxLayerElementTemplate ParentClass; - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementMaterial); - - /** \internal - * Internal class to maintain backward compatibility with old FBX code (prior to FBX SDK 2011). - * This class synchronizes the direct array with FbxNode connections. - * Thus, changes on the direct array will reflect on FbxNode. - */ - class LayerElementArrayProxy : public FbxLayerElementArrayTemplate - { - public: - typedef FbxLayerElementArrayTemplate ParentClass; - - LayerElementArrayProxy(EFbxType pType); - void SetContainer( FbxLayerContainer* pContainer, int pInstance = 0); - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual void AllocateArrays(); - virtual void SetOwner( FbxLayerContainer* pOwner, int pInstance = 0); - virtual void SetInstance( int pInstance ) { SetOwner( mOwner, pInstance ); } - -protected: - FbxLayerElementMaterial(); - ~FbxLayerElementMaterial(); - -private: - FbxLayerElementArrayTemplate& GetDirectArray() const - { - return ParentClass::GetDirectArray(); - } - - FbxLayerElementArrayTemplate& GetDirectArray() - { - return ParentClass::GetDirectArray(); - } - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for grouping related polygons together. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementPolygonGroup : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementPolygonGroup); - -protected: - FbxLayerElementPolygonGroup(); - ~FbxLayerElementPolygonGroup(); -}; - -/** \brief Layer element for mapping UVs to a geometry. - * - * This class represents a UV set belongs to a geometry. Each UV set in a geometry - * has a name to identify itself. The string property FbxTexture.UVSet indicates - * the UV set to use. - * - * \remarks if the Mapping mode of this LayerElement is \e eNone, the stored data - * should be treated as irrelevant. In some circumstances, you can still send this data - * to systems that cannot function without UV coordinates, but ensure - * that you have enough coordinates to do so. - * - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUV : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementUV); - -protected: - FbxLayerElementUV(); - ~FbxLayerElementUV(); -}; - -/** \brief Layer element for mapping Vertex Colors to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementVertexColor : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVertexColor); - -protected: - FbxLayerElementVertexColor(); - ~FbxLayerElementVertexColor(); -}; - -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, const char* pName, bool* pStatus = NULL ); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus = NULL ); - -/** \brief Layer element for mapping custom user data to a geometry. - * This layer element is different from the other types of layer elements in that it has multiple direct arrays. There is one array for each user data attribute. - * Each array is indexed by the index array. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUserData : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The layer element name. - * \param pId The layer element ID. - * \param pDataTypes Attribute data types of this layer element, one direct array is allocated for each Attribute data type. - * \param pDataNames Attribute names of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - * \remarks Only "bool", "int", "float" and "double" are supported. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, const char* pName, int pId, FbxArray& pDataTypes, FbxArray& pDataNames); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pOther Other layer element from which to copy. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, FbxLayerElementUserData const& pOther ); - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (FbxLayerElementArrayTemplate*)NULL; - } - } - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) const - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (const FbxLayerElementArrayTemplate*)NULL; - } - } - - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) const - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (const FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the data type for the specified index - * \param pIndex The index of the attribute being queried - * \return The data type, or FbxUndefinedDT if pIndex is out of range - */ - FbxDataType GetDataType( int pIndex ) const - { - if( pIndex < 0 || pIndex >= mDataTypes.GetCount() ) - return FbxUndefinedDT; - - return mDataTypes[pIndex]; - } - - /** Returns the specified attribute data type. - * \param pName The name of the attribute being queried - * \return The data type, or FbxUndefinedDT if no attribute has the given name - */ - FbxDataType GetDataType( const char* pName ) const - { - FbxString lName( pName ); - - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return mDataTypes[i]; - } - - return FbxUndefinedDT; - } - - /** Returns the attribute name at the specified index - * \param pIndex Attribute index - * \return The name, or \c NULL if pIndex is out of range. - */ - const char* GetDataName( int pIndex ) const - { - if( pIndex >= 0 && pIndex < mDataNames.GetCount() ) - return mDataNames[pIndex]->Buffer(); - - return NULL; - } - - /** Resizes all direct arrays to the specified size. - * \param pSize The new size of the direct arrays. - */ - void ResizeAllDirectArrays( int pSize ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).Resize( pSize ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).Resize( pSize ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).Resize( pSize ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).Resize( pSize ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Removes a single element at pIndex from every direct array. - * \param pIndex The index of the element to be removed. - */ - void RemoveFromAllDirectArrays( int pIndex ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).RemoveAt( pIndex ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).RemoveAt( pIndex ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Returns the direct array count for the attribute at pIndex - * \param pIndex The attribute index - * \return The specified attribute's direct array count. - */ - int GetArrayCount( int pIndex ) const - { - if( pIndex >= 0 && pIndex < GetDirectArray().GetCount() ) - { - switch( mDataTypes[pIndex].GetType() ) - { - case eFbxBool: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxInt: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxFloat: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxDouble: return FbxGetDirectArray(this,pIndex).GetCount(); - //case eFbxDouble3: return GetDirectArray< FbxDouble3 >(pIndex).GetCount(); - //case eFbxDouble4: return GetDirectArray< FbxDouble4 >(pIndex).GetCount(); - //case eFbxDouble4x4: return GetDirectArray< FbxDouble4x4>(pIndex).GetCount(); - default: - FBX_ASSERT_NOW("Unknown type" ); break; - } - } - - return -1; - } - - /** Queries the this layer element's ID. - * \return The ID expressed as an int - */ - int GetId() const { return mId; } - - /** Returns this layer element's direct array count. - * \return The direct array count expressed as an int. - * \remarks This count should be equal to the count of user data attributes. - */ - int GetDirectArrayCount() const { return GetDirectArray().GetCount(); } - - /** Assignment operator which performs a deep copy. - * \param pOther Other FbxLayerElementUserData from which to perform a deep copy. - * \return This FbxLayerElementUserData. - */ - FbxLayerElementUserData& operator=( FbxLayerElementUserData const& pOther ) - { - if (this == &pOther) - return *this; - - Clear(); - - mId = pOther.mId; - mDataTypes = pOther.mDataTypes; - mDataNames.Resize(pOther.mDataNames.GetCount()); - for(int i = 0; i < pOther.mDataNames.GetCount(); ++i) - mDataNames.SetAt(i, FbxNew< FbxString >( *pOther.mDataNames[i] ) ); - - Init(); - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - - return *this; - } - - /** Removes all data from this layer element. - * \return \c True always - */ - bool Clear() - { - int i; - const int lCount = GetDirectArray().GetCount(); - FbxLayerElementArray** directArray = NULL; - directArray = GetDirectArray().GetLocked(directArray); - for( i = 0; directArray != NULL && i < lCount; ++i ) - { - if( directArray[i] ) - FbxDelete(directArray[i]); - } - FbxLayerElementArray*** ptr = &directArray; - GetDirectArray().Release((void**)ptr); - for( i = 0; i < mDataNames.GetCount(); ++i ) - { - FBX_SAFE_DELETE(mDataNames[i]); - } - mDataNames.Clear(); - mDataTypes.Clear(); - - FbxLayerElementTemplate::Clear(); - - return true; - } - - /** Queries the amount of memory used by this - * object as well as its content. It does not consider the content pointed. - * \return The amount of memory used. - */ - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mId); - - for(int i = 0; i < mDataTypes.GetCount(); i++) - { - size += sizeof(mDataTypes[i]); - } - size += (mDataNames.GetCount() * sizeof(FbxString*)); - - return size; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructs a user data layer element. - * \param pId An identifier for this UserData layer element - * \param pDataTypes Attribute data types for this layer element - * \param pDataNames Attribute names for this layer element - */ - FbxLayerElementUserData( int pId, FbxArray& pDataTypes, FbxArray& pDataNames ) - : - mId( pId ), - mDataTypes( pDataTypes ) - { - FBX_ASSERT( pDataTypes.GetCount() == pDataNames.GetCount() ); - for( int i = 0; i < pDataNames.GetCount(); ++i ) - { - mDataNames.Add( FbxNew< FbxString >( pDataNames[i] ) ); - } - } - - /** Copy constructor. A deep copy is made. - * \param pOther Another FbxLayerElementUserData object to be copied. - */ - FbxLayerElementUserData( FbxLayerElementUserData const& pOther ) : mId(pOther.mId), mDataTypes(pOther.mDataTypes) - { - for (int lIndex = 0; lIndex < pOther.mDataNames.GetCount(); ++lIndex) - { - mDataNames.Add(FbxNew(*(pOther.mDataNames[lIndex]))); - } - - SetType(&FbxLayerElementUserDataDT); - AllocateArrays(); - - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - } - - //!Destructor. - ~FbxLayerElementUserData() - { - Clear(); - } - - //@} - virtual void AllocateArrays() - { - FbxLayerElementTemplate::AllocateArrays(); - Init(); - } - - -private: - - void Init() - { - int i; - GetDirectArray().Resize( mDataTypes.GetCount() ); - - // initialize arrays - for( i = 0; i < mDataTypes.GetCount(); ++i ) - { - FbxHandle** dst = NULL; - dst = GetDirectArray().GetLocked(dst); - if (dst) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxInt: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxFloat: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxDouble: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); break; - } - FbxHandle*** ptr = &dst; - GetDirectArray().Release((void**)ptr); - } - } - } - - int mId; - FbxArray mDataTypes; - FbxArray mDataNames; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,int pIndex, bool* pStatus) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,const char* pName, bool* pStatus ) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus ) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - - -/** Layer element for indicating smoothness of components of a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eDirect. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementSmoothing : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementSmoothing* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Smoothing layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementSmoothing() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating crease of components of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementCrease : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementCrease* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Crease layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementCrease() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating hole of polygon of a geometry. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLayerElementHole : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementHole* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "hole layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementHole() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating if specified components are shown/hidden - */ -class FBXSDK_DLL FbxLayerElementVisibility : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVisibility); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementVisibility(); - ~FbxLayerElementVisibility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for mapping Textures to a geometry. This class is deprecated. - * - * Deprecated since FBX SDK 2011. Textures (FbxTexture derived classes) should be connected - * to material properties. - * - * For example: - * - * \code - * FbxFileTexture* file; - * FbxSurfacePhong* phong; - * phong->Diffuse.ConnectSrcObject(file); - * \endcode - * \see FbxSurfaceMaterial - * - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTexture : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTexture); - - /** \enum EBlendMode Lets you control how textures are combined when you apply multiple layers of texture to a surface. - * - \e eTranslucent The new texture layer is transparent (depending on the Alpha value). - * - \e eAdd Add the color of the new texture to the previous texture. - * - \e eModulate Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2 Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdd, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Sets the way Textures blend between layers. - * \param pBlendMode A valid blend mode. - */ - void SetBlendMode(EBlendMode pBlendMode) { mBlendMode = pBlendMode; } - - /** Sets the transparency level between multiple texture levels. - * \param pAlpha Set to a value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - * \remarks Values smaller than 0.0 are clipped to 0.0, while values greater than 1.0 are clipped to 1.0. - */ - void SetAlpha(double pAlpha) - { - if (pAlpha > 1.0) - mAlpha = 1.0; - else if (pAlpha < 0.0) - mAlpha = 0.0; - else - mAlpha = pAlpha; - } - - /** Returns the way Textures blend between layers. - * \return The current Blend Mode. - */ - EBlendMode GetBlendMode() const { return mBlendMode; } - - /** Returns the transparency level between multiple levels of textures. - * \return An alpha value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - */ - double GetAlpha() const { return mAlpha; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mBlendMode); - size += sizeof(mAlpha); - return size; - } - -protected: - /** Constructor - * By default, textures have a Blend Mode of eTranslucent, - * a Reference Mode of eIndexToDirect, and an Alpha value of 1.0. - */ - FbxLayerElementTexture() : mBlendMode(eTranslucent) - { - mReferenceMode = eIndexToDirect; - mAlpha = 1.0; - } - -private: - EBlendMode mBlendMode; - double mAlpha; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxLayer class provides a base for the layering mechanism. - * - * A layer can contain one or more of the following layer elements: - * \li Normals - * \li Binormals - * \li Tangents - * \li Materials - * \li Polygon Groups - * \li UVs - * \li Vertex Colors - * \li Smoothing informations - * \li Vertex Creases - * \li Edge Creases - * \li Custom User Data - * \li Visibilities - * \li Textures (diffuse, ambient, specular, etc.) (deprecated) - * - * A typical layer for a Mesh contains Normals, UVs and Materials. A typical layer for NURBS contains only Materials. - * In the case of the NURBS, the NURBS' parameterization is used for the UVs; no UVs should be specified. - * - * In most cases, you only need a single layer to describe a geometry. Many applications only support what is defined on the first layer. - * Take this into account when you fill the layer. For example, it is legal to define the Layer 0 with the UVs and then - * define the model's Normals on layer 1. However if you construct a file this way, it may not be imported correctly in other applications. - * Store the Normals in Layer 0 to avoid problems. - * - * Since FBX SDK 2011, Textures are connected to the properties of FbxSurfaceMaterial derived classes. - * FbxLayerElementTexture is no longer used. See the code example in FbxLayerElementTexture for how to connect a texture. - * - * Since FBX SDK 2011, texture layering is achieved by FbxLayeredTexture. See the code example in FbxLayeredTexture for how to blend textures. - * - * Normally, you can access layer from FbxLayerContainer like FbxGeometry. - * For example, - * \code - * FbxMesh* mesh; - * FbxLayer* layer0 = mesh->GetLayer(0); - * FbxLayerElementNormal* normals = layer0->GetNormals(); - * \endcode - * - * \nosubgrouping - * \see FbxLayerElement - * \see FbxLayerElementNormal - * \see FbxLayerElementBinormal - * \see FbxLayerElementTangent - * \see FbxLayerElementMaterial - * \see FbxLayerElementPolygonGroup - * \see FbxLayerElementUV - * \see FbxLayerElementVertexColor - * \see FbxLayerElementSmoothing - * \see FbxLayerElementCrease - * \see FbxLayerElementUserData - * \see FbxLayerElementHole - * \see FbxLayerElementVisibility - */ -class FBXSDK_DLL FbxLayer -{ - -public: - FBXSDK_FRIEND_NEW(); - - /** - * \name Layer Element Management - */ - //@{ - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - FbxLayerElementNormal* GetNormals(); - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - const FbxLayerElementNormal* GetNormals() const; - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - FbxLayerElementTangent* GetTangents(); - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - const FbxLayerElementTangent* GetTangents() const; - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - FbxLayerElementBinormal* GetBinormals(); - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - const FbxLayerElementBinormal* GetBinormals() const; - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - FbxLayerElementMaterial* GetMaterials(); - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - const FbxLayerElementMaterial* GetMaterials() const; - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - FbxLayerElementPolygonGroup* GetPolygonGroups(); - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - const FbxLayerElementPolygonGroup* GetPolygonGroups() const; - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - const FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - - - /** Returns the number of different UV sets in this layer. - */ - int GetUVSetCount() const; - - /** Returns an array that describes which UV sets are in this layer. - */ - FbxArray GetUVSetChannels() const; - - /** Returns an array of UV sets in this layer. - */ - FbxArray GetUVSets() const; - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - FbxLayerElementVertexColor* GetVertexColors(); - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - const FbxLayerElementVertexColor* GetVertexColors() const; - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - FbxLayerElementSmoothing* GetSmoothing(); - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - const FbxLayerElementSmoothing* GetSmoothing() const; - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetVertexCrease(); - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetVertexCrease() const; - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetEdgeCrease(); - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetEdgeCrease() const; - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - FbxLayerElementHole* GetHole(); - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - const FbxLayerElementHole* GetHole() const; - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - FbxLayerElementUserData* GetUserData(); - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - const FbxLayerElementUserData* GetUserData() const; - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - FbxLayerElementVisibility* GetVisibility(); - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - const FbxLayerElementVisibility* GetVisibility() const; - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType); - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - const FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType) const; - - /** Sets this layer's Textures description. - * \param pType Texture type identifier. - * \param pTextures A pointer to the Textures layer element, or \c NULL to remove the Textures definition. - */ - void SetTextures(FbxLayerElement::EType pType, FbxLayerElementTexture* pTextures); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - const FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Sets this layer's Normals description. - * \param pNormals A pointer to the Normals layer element, or \c NULL to remove the Normals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - void SetNormals(FbxLayerElementNormal* pNormals); - - /** Sets this layer's Binormals description. - * \param pBinormals A pointer to the Binormals layer element, or \c NULL to remove the Binormals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - void SetBinormals(FbxLayerElementBinormal* pBinormals); - - /** Sets this layer's Tangents description. - * \param pTangents A pointer to the Tangents layer element, or \c NULL to remove the Tangents definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - void SetTangents(FbxLayerElementTangent* pTangents); - - /** Sets this layer's Materials description. - * \param pMaterials A pointer to the Materials layer element, or \c NULL to remove the Material definition. - */ - void SetMaterials(FbxLayerElementMaterial* pMaterials); - - /** Sets this layer's Polygon Groups description. - * \param pPolygonGroups A pointer to the Polygon Groups layer element, or \c NULL to remove the Polygon Group definition. - */ - void SetPolygonGroups(FbxLayerElementPolygonGroup* pPolygonGroups); - - /** Sets this layer's UVs description. - * \param pUVs A pointer to the UVs layer element, or \c NULL to remove the UV definition. - * \param pTypeIdentifier Layer element type, should be texture type. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - void SetUVs(FbxLayerElementUV* pUVs, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Sets this layer's Vertex Colors description. - * \param pVertexColors A pointer to the Vertex Colors layer element, or \c NULL to remove the Vertex Color definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - void SetVertexColors (FbxLayerElementVertexColor* pVertexColors); - - /** Sets this layer's Smoothing description. - * \param pSmoothing A pointer to the Smoothing layer element, or \c NULL to remove the Smoothing definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - void SetSmoothing (FbxLayerElementSmoothing* pSmoothing); - - /** Sets this layer's Vertex Crease description. - * \param pCrease A pointer to the Vertex Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetVertexCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Edge Crease description. - * \param pCrease A pointer to the Edge Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetEdgeCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Hole description. - * \param pHole A pointer to the Hole layer element, or \c NULL to remove the Hole definition. - * \remarks Hole should only be defined when the geometry is FbxMesh. - */ - void SetHole (FbxLayerElementHole* pHole); - - /** Sets this layer's User Data. - * \param pUserData A pointer to the User Data layer element, or \c NULL to remove the User Data. - */ - void SetUserData (FbxLayerElementUserData* pUserData); - - /** Sets this layer's the visibility. - * \param pVisibility A pointer to the visibility layer element, or \c NULL to remove the visibility. - */ - void SetVisibility( FbxLayerElementVisibility* pVisibility ); - - /** Sets the specified type of layer element description for this layer. - * \param pLayerElement A pointer to the layer element, or \c NULL to remove the layer element. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - */ - void SetLayerElementOfType(FbxLayerElement* pLayerElement, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Creates the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * \param pIsUV When \c true, requests the UV LayerElement that corresponds with the specified Layer Element type (only applies to - * TEXTURE type layer elements). - * \return A pointer to the newly created layer element, or \e NULL if the layer element has not been created for this layer. - */ - FbxLayerElement* CreateLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Clone function. - * \param pSrcLayer The source layer to be cloned. - */ - void Clone(FbxLayer const& pSrcLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - //! Assignment operator. - FbxLayer& operator=(FbxLayer const& pSrcLayer); - //@} -private: - - FbxLayer(FbxLayerContainer& pOwner); - virtual ~FbxLayer(); - - void Clear(); - - FbxLayerContainer& mOwner; - - FbxLayerElement* mNonTexturesArray[FbxLayerElement::sTypeNonTextureCount]; - FbxLayerElementUV* mUVsArray[FbxLayerElement::sTypeTextureCount]; - FbxLayerElementTexture* mTexturesArray[FbxLayerElement::sTypeTextureCount]; - - - friend class FbxLayerContainer; - -public: - /** - * \name Serialization section - */ - //@{ - bool ContentWriteTo(FbxStream& pStream) const; - bool ContentReadFrom(const FbxStream& pStream); - //@} - virtual int MemoryUsage() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** - * Utility macro for iterating over texture layer elements - */ -#define FBXSDK_FOR_EACH_TEXTURE(lLayerIndex) for((lLayerIndex)=0;(lLayerIndex)GetElementUV("map1"); - * FbxGeometryElementUV::DirectArrayType lDirectArray = lUVs->GetDirectArray(); - * int lDirectUVCount = lDirectArray.GetCount(); - * FbxVector2 lFirstUV = lDirectArray[0]; - * \endcode - * \see FbxGeometryBase - */ -typedef FbxLayerElement FbxGeometryElement; -typedef FbxLayerElementNormal FbxGeometryElementNormal; -typedef FbxLayerElementBinormal FbxGeometryElementBinormal; -typedef FbxLayerElementTangent FbxGeometryElementTangent; -typedef FbxLayerElementMaterial FbxGeometryElementMaterial; -typedef FbxLayerElementPolygonGroup FbxGeometryElementPolygonGroup; -typedef FbxLayerElementUV FbxGeometryElementUV; -typedef FbxLayerElementVertexColor FbxGeometryElementVertexColor; -typedef FbxLayerElementUserData FbxGeometryElementUserData; -typedef FbxLayerElementSmoothing FbxGeometryElementSmoothing; -typedef FbxLayerElementCrease FbxGeometryElementCrease; -typedef FbxLayerElementHole FbxGeometryElementHole; -typedef FbxLayerElementVisibility FbxGeometryElementVisibility; - -#undef FBXSDK_LAYER_ELEMENT_CREATE_DECLARE - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h deleted file mode 100644 index 473ccfc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayercontainer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** \brief Contains a collection of FbxLayer objects. - * This class is used for managing layers construction, destruction and access. - * See FbxLayerElement for more details. - * \nosubgrouping - * \see FbxLayer - */ -class FBXSDK_DLL FbxLayerContainer : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLayerContainer,FbxNodeAttribute); -public: - - /** Returns the type of node attribute. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Layer Management - */ - //@{ - - /** Creates a new layer on top of existing layers. - * \return Index of created layer or -1 if an error occurs. - */ - int CreateLayer(); - - //! Deletes all layers. - void ClearLayers(); - - /** Returns the number of layers. - * \return The number of layers. - */ - int GetLayerCount() const; - - /** Returns the number of layers that contain the specified layer element type. - * \param pType The specified Layer Element type. - * \param pUVCount When \c true, requests the UV layer element corresponding to the specified texture type. - * \return The number of layers containing the specified layer element type. - */ - int GetLayerCount(FbxLayerElement::EType pType, bool pUVCount=false) const; - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex); - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex) const; - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Returns the global index of the n'th layer as specified by pIndex that contains the specified layer element type. - * \param pIndex Layer index of the specified type. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Global index of the n'th layer as specified by pIndex that contains the specified layer element type, or -1 if the layer is not found. - * \remarks The returned index is the position of the layer in the global array of layers. - * You can use the returned index to call GetLayer(int pIndex). - */ - int GetLayerIndex(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Converts the layer's global index to a type-specific index. - * \param pGlobalIndex The index of the layer in the global array of layers. - * \param pType The type upon which the type-specific index will be returned. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Layer index of the specified layer element type, or -1 if the layer element type is not found on the layer. - */ - int GetLayerTypedIndex(int pGlobalIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - //@} - - /** Converts the reference mode from eDirect to eIndexToDirect. - * \param pLayer The Layer to convert. - * \return \c True if conversion is successful, or \c false otherwise. - * \remarks For the time being, this method only applies to the LayerLementType eMaterial - */ - bool ConvertDirectToIndexToDirect(int pLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - int GTC(FbxUInt i, int j); - void* GT (int i, FbxUInt l, int j); - int AT (void* t, FbxUInt l, int j); - int GTI(const char* n, FbxUInt l, int j); - int GMC(FbxUInt i, void* n = NULL); - void* GM (int i, FbxUInt l, void* n = NULL); - int AM (void* m, FbxUInt l, void* n = NULL, bool b = false); - int GMI(const char* n, FbxUInt l, void* d = NULL); - - int AddToLayerElementsList(FbxLayerElement* pLEl); - void RemoveFromLayerElementsList(FbxLayerElement* pLEl); - -protected: - void Destruct(bool pRecursive) override; - - void CopyLayers(const FbxLayerContainer* pLayerContainer); - - void SetDocument(FbxDocument* pDocument) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - FbxArray mLayerArray; - FbxArray mLayerElementsList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlight.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlight.h deleted file mode 100644 index 7956276..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlight.h +++ /dev/null @@ -1,273 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlight.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ - -#include - -#include - -#include - -class FbxTexture; - -/** \brief This node attribute contains methods for accessing the properties of a light. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLight : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute); - -public: - /** - * \name Light Properties - */ - //@{ - /** \enum EType Light types. - * - \e ePoint - * - \e eDirectional - * - \e eSpot - * - \e eArea - * - \e eVolume - */ - enum EType - { - ePoint, - eDirectional, - eSpot, - eArea, - eVolume - }; - - /** \enum EDecayType Decay types. Used for setting the attenuation of the light. - * - \e eNone No decay. The light's intensity will not diminish with distance. - * - \e eLinear Linear decay. The light's intensity will diminish linearly with the distance from the light. - * - \e eQuadratic Quadratic decay. The light's intensity will diminish with the squared distance from the light. - * This is the most physically accurate decay rate. - * - \e eCubic Cubic decay. The light's intensity will diminish with the cubed distance from the light. - */ - enum EDecayType - { - eNone, - eLinear, - eQuadratic, - eCubic - }; - - /** \enum EAreaLightShape Supported area light types. - * - \e eRectangle Rectangle (or often called a plane) area light type. - * - \e eSphere Area light that illuminate all directions. - */ - enum EAreaLightShape - { - eRectangle, - eSphere - }; - - /** Set the shadow texture for the light. - * \param pTexture The texture cast by the light shadow. - */ - void SetShadowTexture(FbxTexture* pTexture); - - /** Get the light state. - * \return Pointer to the texture cast by the light shadow, or \c NULL if the shadow texture has not been set. - */ - FbxTexture* GetShadowTexture() const; - //@} - - /** - * \name Properties - */ - //@{ - /** This property handles the light type. - * - * Default value is ePoint - */ - FbxPropertyT LightType; - - /** This property handles the cast light on object flag. - * - * Default value is true - */ - FbxPropertyT CastLight; - - /** This property handles the draw volumetric light flag. - * - * Default value is true - */ - FbxPropertyT DrawVolumetricLight; - - /** This property handles the draw ground projection flag. - * - * Default value is true - */ - FbxPropertyT DrawGroundProjection; - - /** This property handles the draw facing volumetric projection flag. - * - * Default value is false - */ - FbxPropertyT DrawFrontFacingVolumetricLight; - - /** This property handles the light color. - * - * Default value is (1.0, 1.0, 1.0) - */ - FbxPropertyT Color; - - /** This property handles the light intensity. - * - * Default value is 100.0 - */ - FbxPropertyT Intensity; - - /** This property handles the light inner cone angle (in degrees). Also know as the HotSpot - * - * Default value is 45.0 - */ - FbxPropertyT InnerAngle; - - /** This property handles the light outer cone angle (in degrees). Also known as the Falloff - * - * Default value is 45.0 - */ - FbxPropertyT OuterAngle; - - /** This property handles the light fog intensity - * - * Default value is 50.0 - */ - FbxPropertyT Fog; - - /** This property handles the decay type - * - * Default value is eNone - */ - FbxPropertyT DecayType; - - /** This property handles the decay start distance - * - * Default value is 0.0 - */ - FbxPropertyT DecayStart; - - /** This property handles the gobo file name - * - * Default value is "" - */ - FbxPropertyT FileName; - - /** This property handles the enable near attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableNearAttenuation; - - /** This property handles the near attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationStart; - - /** This property handles the near end attenuation - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationEnd; - - /** This property handles the enable far attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableFarAttenuation; - - /** This property handles the far attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationStart; - - /** This property handles the attenuation end distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationEnd; - - /** This property handles the cast shadow flag - * - * Default value is false - */ - FbxPropertyT CastShadows; - - /** This property handles the shadow color - * - * Default value is (0.0, 0.0, 0.0) - */ - FbxPropertyT ShadowColor; - - /** This property handles type when LightType is eArea - * - * Default value is eRectangle - */ - FbxPropertyT AreaLightShape; - - /** This property handles the left barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT LeftBarnDoor; - - /** This property handles the right barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT RightBarnDoor; - - /** This property handles the top barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT TopBarnDoor; - - /** This property handles the bottom barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT BottomBarnDoor; - - /** This property handles active status of barn doors - * - * Default value is false - */ - FbxPropertyT EnableBarnDoor; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeAttribute::EType GetAttributeType() const override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h deleted file mode 100644 index c0bb207..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlimitsutilities.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class represent a utility of limits for transforms. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLimitsUtilities -{ -public: - /** \enum EType Limit Type. - * - \e eTranslation Translation type - * - \e eRotation Rotation type - * - \e eScaling Scale type - */ - enum EType - { - eTranslation, - eRotation, - eScaling - }; - - /** \enum ERotationType Rotation type. - * - \e eQuaternion Quaternion rotation type - * - \e eEuler Euler rotation type - */ - enum ERotationType - { - eQuaternion, - eEuler - }; - - /** \enum ERotationClampType Rotation clamp type. - * - \e eRectangular Rectangular clamp type - * - \e eEllipsoid Ellipsoid clamp type - */ - enum ERotationClampType - { - eRectangular, - eEllipsoid - }; - - - FbxLimitsUtilities(FbxNode* pNode); - - /** - * \name Getter/Setter functions - */ - //@{ - void SetAuto(EType pType, bool pAuto); - bool GetAuto(EType pType) const; - - void SetEnable(EType pType, bool pEnable); - bool GetEnable(EType pType) const; - - void SetDefault(EType pType, FbxVector4 pDefault); - FbxVector4 GetDefault(EType pType) const; - - void SetMin(EType pType, FbxVector4 pMin); - FbxVector4 GetMin(EType pType) const; - - void SetMax(EType pType, FbxVector4 pMax); - FbxVector4 GetMax(EType pType) const; - - void SetRotationType(ERotationType pType); - ERotationType GetRotationType() const; - - ERotationClampType GetRotationClampType() const; - - void SetRotationAxis(FbxVector4 pRotationAxis); - FbxVector4 GetRotationAxis() const; - - void SetAxisLength(double pLength); - double GetAxisLength() const; - - void UpdateAutomatic(FbxNode* pNode); - FbxVector4 GetEndPointTranslation(FbxNode* pNode) const; - FbxVector4 GetEndSite(FbxNode* pNode) const; - //@} - - FbxNode* mNode; - double mAxisLength; -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxline.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxline.h deleted file mode 100644 index 56c18b1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxline.h +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxline.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LINE_H_ -#define _FBXSDK_SCENE_GEOMETRY_LINE_H_ - -#include - -#include -#include - -#include - -/** A line is a geometry made of points. To be different from curves(nurbs, etc), line is linear. -* The class can define a line with as many points as needed. The line can also represent line segments, which means there will be gaps among points. -* To denote line segments and these gaps, certain points could be marked as end points. That's why we supply an index array(mPointArray) and an end point array(mEndPointArray). -* To mark a point as end point, we add its index(of mPointArray) to mEndPointArray. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. -* To initialize control point count, please use FbxLine::InitControlPoints(int pCount). -* To set a control point, please use FbxLine::SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex). -* To get control point count, please use FbxLine::GetControlPointsCount(). -* To get a control point, please use FbxLine::GetControlPointAt(int pIndex). The pIndex could be returned by GetPointIndexAt(i). -*/ -class FBXSDK_DLL FbxLine : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxLine, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eLine. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Reset the line to default values. - * Frees and set to \c NULL all layers and clear the control point array, the index array and end points array. - */ - void Reset(); - - /** Sets the size of index array(mPointArray). - * \param pCount Specify the size of mPointArray. - */ - void SetIndexArraySize(int pCount); - - /** Return the size of index array(mPointArray). - * \return The number of points defined for this line. - */ - int GetIndexArraySize() const; - - /** Get the pointer to the index array. - * \return the pointer to the index array(mPointArray). - */ - inline FbxArray* GetIndexArray() { return &mPointArray;} - - /** Sets index array(mPointArray) at a specified index. - * \param pValue An index to a control point. Its range is from 0 to count of control point. - * \param pIndex The specified index to mPointArray. Its range is from 0 to size of mPointArray. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, pIndex will be automatically added to mEndPointArray. - * \return True on success, false on failure if pIndex is out of range. - */ - bool SetPointIndexAt(int pValue, int pIndex, bool pAsEndPoint = false); - - /** Gets the point index(i.e: an index to a control point) at the specified index. - * \param pIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return Return the index to the table of the control points. If pIndex is out of range, it will return -1. - */ - int GetPointIndexAt(int pIndex) const; - - /** Adds a point to the index array (mPointArray). - * \param pValue The index to a control point. Its range is from 0 to count of control point. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, current point index will be automatically added to mEndPointArray. - * \return True on success, false on failure if pValue is out of range. - */ - bool AddPointIndex(int pValue, bool pAsEndPoint = false); - - /** Get the pointer to the end point array. - * \return the pointer to the end points array(mEndPointArray). - */ - inline FbxArray* GetEndPointArray() { return &mEndPointArray;} - - /** Adds a point index to the end point array (mEndPointArray). - * To mark it as end point, its index to mPointArray will be added to mEndPointArray. - * \param pPointIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return True on success, false on failure if pPointIndex is out of range. - * \remarks The point index in mEndPointArray should be incremental, otherwise, it will return false. - * To add pPointIndex, mEndPointArray will be automatically appended and resized. You never have to set count or resize for mEndPointArray. - * Below is the code sample: - * \code - * int lIndexCount = lLine->GetIndexArraySize(); - * for(int i = 0; i < lIndexCount; i++) - * { - * if(i%2 == 1) - * { - * lLine->AddEndPoint(i); - * } - * } - * \endcode - */ - bool AddEndPoint(int pPointIndex); - - /** Gets the point index(an index to the point index array) at the specified index. - * \param pEndPointIndex The specified index to the end points array(mEndPointArray). Its range is from 0 to size of mEndPointArray. - * \return Return the index to the point index array(mPointArray). If pEndPointIndex is out of range, it will return -1. - * \remarks Below is the code sample: - * \code - * int lEndPointsCount = lLine->GetEndPointCount(); - * for (int j = 0; j < lEndPointsCount; j++) - * { - * //Get the index to the index array. - * int lEndIndex = lLine->GetEndPointAt(j); - * // to get the control point index of the end point - * int lControlPointIndex = lLine->GetPointIndexAt(lEndIndex); - * } - * \endcode - */ - int GetEndPointAt(int pEndPointIndex) const; - - /** Query the number of end points. - * \return Return the size of end point array(mEndPointArray). - */ - int GetEndPointCount() const; - - /** This property decide whether this line is renderable in 3DSMax. - * Lines from Maya are not renderable by default. - */ - FbxPropertyT Renderable; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxArray mPointArray; - FbxArray mEndPointArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LINE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h deleted file mode 100644 index 29cd9b6..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h +++ /dev/null @@ -1,322 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlodgroup.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ -#define _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ - -#include - -#include - -#include - -/** Defines a LOD (Level of Detail) group. - * This LodGroup node is a group node that can be used to detect how - * close a group of objects is to a camera. Typically this node is - * used for controlling "Level of Detail" visibility. - * - * Properties in the class are designed according to Maya implementation. - * So these properties may be incompatible with other software, like 3ds Max. - * - * In Maya, with "Level of Detail",the visibility of the children of this - * transform are controlled by the distance of a group to the camera and the - * threshold values. - * - * For example, under a LOD group node, there are three children: - * ship_detailed, ship_medium, and ship_rough. There are 2 threshold - * values: 5, 10. When the camera is less than 5 units away of the group - * bounding box, only ship_detailed is visible. When the view is zoomed out and - * the camera is between 5 and 10 units away from the group, only ship_medium is - * visible. Finally, when the view is zoomed out more and the camera is 10 or - * more units away from the group, only ship_rough is visible. - * - * This node attribute contains the properties of a null node. - * - * Example code to create LODGroup: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * // Array lChildNodes contains geometries of all LOD levels - * for (int j = 0; j < lChildNodes.GetCount(); j++) - * { - * lLodGroup->AddChild(lChildNodes.GetAt(j)); - * } - * \endcode - * - * This object can also be configured to define thresholds as percentage values. - * Typically, these percentage values represent the ratio between the group bounding - * box height (in screen space) and the viewing screen height. - * - * To switch to this mode, the client application must set the value of the - * ThresholdsUsedAsPercentage property to "true" before the calls to the AddThreshold/ - * SetThreshold methods. Client applications should always check the return value of - * these methods to validate that the action was successful. - * - * Note that, for backward compatibility, the data is always stored as FbxDistance type. - * The client application should always check the return value of this method to validate - * that the argument contains a meaningful value (see GetThreshold for more details). - * - * Example code to create LODGroup that store percentage values: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * lLodGroupAttr->ThresholdsUsedAsPercentage.Set(true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(33.3)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(66.6)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(FbxDistance(0.6f, "cm")) == false); - * - * FbxDistance dval; - * FbxDouble val = 0.0; - * bool res; - * res = lLodGroupAttr->GetThreshold(0, val); // res = true, val = 33.3 - * res = lLodGroupAttr->GetThreshold(0, dval); // res = false, dval.value()=33.3 - * res = lLodGroupAttr->GetThreshold(2, val); // res = false, val = 1.0 - * \nosubgrouping - */ -class FBXSDK_DLL FbxLODGroup : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLODGroup, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eLODGroup. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDisplayLevel types to determine how to display nodes in LODGroup. - * - \e eUseLOD Display the node according LOD threshold - * - \e eShow Always show this node - * - \e eHide Always hide this node - */ - enum EDisplayLevel - { - eUseLOD, - eShow, - eHide - }; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** Specifies if the threshold values stored by this LOD object are defining - * a distance to the camera (by default) or a percentage value. - * - * \remarks This property needs to be set before any call to the Add\SetThreshold - * methods since its value is used to validate that the correct method is - * called. - * - * To access this property do: ThresholdsUsedAsPercentage.Get(). - * To set this property do: ThresholdsUsedAsPercentage.Set(bool). - * - * Default value is false - */ - FbxPropertyT ThresholdsUsedAsPercentage; - - /** - * \name Distance Mode - * The properties in this block are meaningful only if ThresholdsUsedAsPercentage - * is set to false and should be ignored otherwise. - */ - //@{ - /** This property handles the use of the Min/Max distances. - * Enables the minimum and maximum distance to take effect. - * For example, if the distance between the group and the camera is smaller - * than the minimum distance, then the whole group disappears. - * - * To access this property do: MinMaxDistance.Get(). - * To set this property do: MinMaxDistance.Set(bool). - * - * Default value is false. - */ - FbxPropertyT MinMaxDistance; - - /** The minimum distance at which the group is displayed. - * - * To access this property do: MinDistance.Get(). - * To set this property do: MinDistance.Set(double). - * - * Default value is -100 - */ - FbxPropertyT MinDistance; - - /** The maximum distance at which the group is displayed. - * - * To access this property do: MaxDistance.Get(). - * To set this property do: MaxDistance.Set(double). - * - * Default value is 100 - */ - FbxPropertyT MaxDistance; - - /** Work in world space of transform or local space If true, - * the camera distance to the LOD group will be computed in world space. - * This means it is possible to parent the LOD transform below other transforms - * and still have it work as expected. If this attribute is set to false, - * the distance computation ignores any parent transforms of the LOD transform. - * - * To access this property do: WorldSpace.Get(). - * To set this property do: WorldSpace.Set(bool). - * - * Default value is false - */ - FbxPropertyT WorldSpace; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Methods - // - ////////////////////////////////////////////////////////////////////////// - - /** Get the number of elements in the threshold list. - * In correct situations, the size of this list is one less than the LOD node - * children objects count. - * \return The current size of the threshold list. - */ - int GetNumThresholds() const; - - /** Add a new threshold. - * \param pThreshValue Threshold value (distance). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool AddThreshold(const FbxDistance& pThreshValue); - - /** Add a new threshold. - * \param pThreshValue Threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool AddThreshold(FbxDouble pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (distance). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool SetThreshold(int pEl, const FbxDistance& pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool SetThreshold(int pEl, FbxDouble pThreshValue); - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=true. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDistance& pThreshValue) const; - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=false. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDouble& pThreshValue) const; - - /** Get the number of elements in the displayLevel list. - * In correct situations, the size of this list equals the LOD node - * children objects count. - * \return The current size of the displayLevel list. - */ - int GetNumDisplayLevels() const; - - /** Add a new displayLevel value to the current list. - * - * The value overrides the display of any level and can force it to hide - * or show the object at that level. For example, if the distance between - * the group and the camera is smaller than the first threshold, then the - * object at level 0 is visible. If the display level for the object at - * level 2 is changed to eShow, ie. if the attribute displayLevel[2] is - * set to eShow, then the object at level 2 will show regardless of - * the current active level. - * - * \param pValue Display level value - * \return true if successful and false if any error occurred. - * \remarks Removing items is not possible unless a new FbxLODGroup is - * created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - */ - bool AddDisplayLevel(FbxLODGroup::EDisplayLevel pValue); - - /** Set the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue New display level value. - * \return true if successful and false otherwise. - */ - bool SetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - - /** Get the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue the current display level value. - * \return true if successful and false otherwise. - * \remarks In case of failure, the pValue is left unchanged. - */ - bool GetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel& pValue) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - int mNbThresholds; - FbxProperty mThresholds; - - bool RetrieveThreshold(int pEl, FbxDistance& pThreshValue) const; - bool StoreThreshold(int pEl, const FbxDistance& pThreshValue); - - int mNbDisplayLevels; - FbxProperty mDisplayLevels; - - bool DisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLODGroup::EDisplayLevel&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h deleted file mode 100644 index 8376b22..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h +++ /dev/null @@ -1,283 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmarker.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MARKER_H_ -#define _FBXSDK_SCENE_GEOMETRY_MARKER_H_ - -#include - -#include - -#include - -/** This node attribute contains the properties of a marker. - * A FbxMarker can represent a motion capture marker or a HIK IK/FK effector. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMarker : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxMarker, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eMarker. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the marker to default values. - void Reset(); - - /** \enum EType Marker types. - * - \e eStandard - * - \e eOptical - * - \e eEffectorFK - * - \e eEffectorIK - */ - enum EType - { - eStandard, - eOptical, - eEffectorFK, - eEffectorIK - }; - - /** Set marker type. - * \param pType The type of marker. - */ - void SetType(EType pType); - - /** Get marker type. - * \return The type of the marker. - */ - EType GetType() const; - - /** \enum ELook Marker look. - * - \e eCube - * - \e eHardCross - * - \e eLightCross - * - \e eSphere - * - \e eCapsule - * - \e eBox - * - \e eBone - * - \e eCircle - * - \e eSquare - * - \e eStick - * - \e eNone - */ - enum ELook - { - eCube, - eHardCross, - eLightCross, - eSphere, - eCapsule, - eBox, - eBone, - eCircle, - eSquare, - eStick, - eNone - }; - - /** - * \name Default Animation Values - * This set of functions provides direct access to default - * animation values specific to a marker. The default animation - * values are found in the default take node of the associated node. - * Hence, these functions only work if the marker has been associated - * with a node. - */ - //@{ - - /** Get default occlusion. - * \return 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - double GetDefaultOcclusion() const; - - /** Set default occlusion. - * \param pOcclusion 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - void SetDefaultOcclusion(double pOcclusion); - - /** Get default IK reach translation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachTranslation() const; - - /** Set default IK reach translation. - * \param pIKReachTranslation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachTranslation(double pIKReachTranslation); - - /** Get default IK reach rotation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachRotation() const; - - /** Set default IK reach rotation. - * \param pIKReachRotation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachRotation(double pIKReachRotation); - - /** Get default IK pull. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPull() const; - - /** Set default IK pull. - * \param pIKPull A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPull(double pIKPull); - - /** Get default IK pull hips. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPullHips() const; - - /** Set default IK pull hips. - * \param pIKPullHips A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPullHips(double pIKPullHips); - - //@} - - /** - * \name Obsolete functions - */ - //@{ - - /** Get default color. - * \param pColor Filled with appropriate data - * \return Input parameter filled with appropriate data. - * \remarks Marker color can not be animated anymore. - */ - FbxColor& GetDefaultColor(FbxColor& pColor) const; - - /** Set default color. - * \param pColor The marker color to be set. - * \remarks Marker color can not be animated anymore. - */ - void SetDefaultColor(FbxColor& pColor); - - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the marker's look. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * Default value is eCube - */ - FbxPropertyT Look; - - /** This property handles the marker's link visibility. - * - * To access this property do: DrawLink.Get(). - * To set this property do: DrawLink.Set(FbxBool). - * - * Default value is true - */ - FbxPropertyT DrawLink; - - /** This property handles the marker's size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100 - */ - FbxPropertyT Size; - - /** This property handles the marker's label visibility. - * - * To access this property do: ShowLabel.Get(). - * To set this property do: ShowLabel.Set(FbxBool). - * - * Default value is false - */ - FbxPropertyT ShowLabel; - - /** This property handles the marker's pivot position. - * - * To access this property do: IKPivot.Get(). - * To set this property do: IKPivot.Set(FbxDouble3). - * - * Default value is (0., 0., 0.) - */ - FbxPropertyT IKPivot; - - // Dynamic properties - - /** This method grants access to the occlusion property. - * \remarks If the marker is not of type Optical or the property - * is invalid, return NULL - */ - FbxProperty GetOcclusion() const; - - /** This method grants access to the IKReachTranslation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachTranslation() const; - - /** This method grants access to the IKReachRotation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachRotation() const; - - /** This method grants access to the IKPull property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPull() const; - - /** This method grants access to the IKPullHips property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPullHips() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMarker::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MARKER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h deleted file mode 100644 index dac0c7a..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h +++ /dev/null @@ -1,833 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmesh.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MESH_H_ -#define _FBXSDK_SCENE_GEOMETRY_MESH_H_ - -#include - -#include -#include - -#include - -/** A mesh is a geometry made of polygons. -* The class can define a geometry with as many n-sided polygons as needed. Users can freely -* mix triangles, quadrilaterals, and other polygons. Since the mesh-related terminology of the FBX SDK -* differs a little from the known standards, here are our definitions: -* \li A control point is an XYZ coordinate, it is synonym of vertex. -* \li A polygon vertex is an index to a control point (the same control point can be referenced by multiple polygon vertices). -* \li A polygon is a group of polygon vertices. The minimum valid number of polygon vertices to define a polygon is 3. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. */ -class FBXSDK_DLL FbxMesh : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxMesh, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eMesh. */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \name Polygon Management */ - //@{ - /** Begins the process of adding a polygon to the mesh. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTexture Index of texture to assign to this polygon if texture mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pGroup Group index assigned to polygon. - * \param pLegacy When set to \c true, automatically create a LayerElement of type Texture; This was the default behavior of earlier - * versions of the FBX SDK. Since version 2010, the textures are connected to the material object. - * \remark This function must be called before AddPolygon(). - * \remark If used, the pTexture index will reference textures assigned to the DIFFUSE channel (FbxLayerElement::eTextureDiffuse). */ - void BeginPolygon(int pMaterial=-1, int pTexture=-1, int pGroup=-1, bool pLegacy=true); - - /** Begin writing a polygon. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTextures Array of index of texture (by texture type) to assign to this polygon if texture mapping type is \e eByPolygon. - * Otherwise it must be an array of \c -1. This array is expected to be of size: FbxLayerElement::sTypeTextureCount. If one texture - * type is not used, the corresponding entry must be left at \c -1. */ - void BeginPolygonExt(int pMaterial, int* pTextures); - - /** Add a polygon vertex to the current polygon. - * \param pIndex Index in the table of the control points. - * \param pTextureUVIndex Index of texture UV coordinates to assign to this polygon if texture UV mapping type is \e eByPolygonVertex. Otherwise it must be \c -1. - * \remark After adding all the polygons of the mesh, call function "BuildMeshEdgeArray" to generate edge data for the mesh. */ - void AddPolygon(int pIndex, int pTextureUVIndex = -1); - - //! End writing a polygon, it should be called after adding one polygon. - void EndPolygon(); - - /** Get the polygon count of this mesh. - * \return Return the number of polygons in the mesh. */ - inline int GetPolygonCount() const { return mPolygons.GetCount(); } - - /** Get the number of polygon vertices in a polygon. - * \param pPolygonIndex Index of the polygon. - * \return The number of polygon vertices in the indexed polygon. If the polygon index is out of bounds, return -1. */ - inline int GetPolygonSize(int pPolygonIndex) const - { - return ( pPolygonIndex >= 0 && pPolygonIndex < mPolygons.GetCount() ) ? mPolygons[pPolygonIndex].mSize : -1; - } - - /** Get the current group ID of the specified polygon. - * A polygon group can be useful to identify a number of polygons that share the same properties. The FBX SDK does not use this information internally - * but guarantee its persistence in the FBX files and in memory. - * \param pPolygonIndex Index of the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, return -1. */ - int GetPolygonGroup(int pPolygonIndex) const; - - /** Assign the specified polygon a group ID. - * A polygon can only be assigned to one group at the time. - * \param pPolygonIndex Index of the polygon. - * \param pGroup Group index assigned to the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, do nothing. */ - inline void SetPolygonGroup(int pPolygonIndex, int pGroup) const - { - if( pPolygonIndex >= 0 && pPolygonIndex= 0 && pPolygonIndex < mPolygons.GetCount() && pPositionInPolygon >= 0 && pPositionInPolygon < mPolygons[pPolygonIndex].mSize ) ? - mPolygonVertices[mPolygons[pPolygonIndex].mIndex + pPositionInPolygon] : -1; - } - - /** Get the normal associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pNormal The returned normal. - * \return \c True on success, \c false on failure. - * \remark \c pNormal remain unchanged if the requested vertex does not exists. */ - bool GetPolygonVertexNormal(int pPolyIndex, int pVertexIndex, FbxVector4& pNormal) const; - - /** Get the normals associated with the mesh for every polygon vertex. - * \param pNormals The returned normals. - * \return \c True on success, \c false on failure. */ - bool GetPolygonVertexNormals(FbxArray& pNormals) const; - - /** Get the UV associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pUVSetName The name of the UV set that contains the UV. - * \param pUV The returned UV. - * \param pUnmapped State flag that indicates if the polygon vertex does not have an associated UV. - * \return \c True on success, \c false on failure. - * \remark \c pUV remain unchanged if the requested vertex does not exists. - * \remark This function return \c true if the specified polygon vertex does not have an associated UV. In this case, - * pUnampped is set to \c true and the content of \c pUV is undefined. - */ - bool GetPolygonVertexUV(int pPolyIndex, int pVertexIndex, const char* pUVSetName, FbxVector2& pUV, bool& pUnmapped) const; - - /** Get the UVs associated with the mesh for every polygon vertex. - * \param pUVSetName The name of the UV set that contains the UVs. - * \param pUVs The returned UVs. - * \param pUnmappedUVId If specified, this array will be filled with the indices of the UVs that are not associated to a polygon vertex and thus, - * have an undefined value. If the array as a size of 0, then all the polygon vertices have an associated UV coordinate and the \c pUVs - * array can be used as is. Otherwise, the calling application may be required to process the invalid UV coordinates to avoid inconsistent - * results. It is strongly suggested to use the FbxLayerElementUV's Direct and Indexed arrays directly (specially if the calling application - * supports indirection of the UVs). - * \remark unmapped UV coordinates are set to (0,0) - * \return \c True on success, \c false on failure. - */ - bool GetPolygonVertexUVs(const char* pUVSetName, FbxArray& pUVs, FbxArray* pUnmappedUVId = NULL) const; - - /** Get the array of polygon vertices (i.e: indices to the control points). - * This array is a concatenation of the list of polygon vertices of all the polygons. Example: a mesh made of 2 triangles with vertices [1,2,3] - * and vertices [2,3,4] results in [1,2,3,2,3,4]. The first polygon starts at position 0 and the second at position 3. - * \return The array of polygon vertices. */ - int* GetPolygonVertices() const; - - /** Gets the number of polygon vertices in the mesh. - * \return The overall size of the array of polygon vertices in the mesh. - * \remark This value can be smaller than the value returned by GetControlPointsCount() (meaning that not all of the control points stored in the object are used to define the mesh). - * However, typically it will be much bigger since any given control point can be used to define a vertex on multiple polygons. */ - inline int GetPolygonVertexCount() const { return mPolygonVertices.Size(); } - - /** Gets the start index into the array returned by GetPolygonVertices() for the given polygon. - * This method can be used for a faster access to the polygon vertices indices. If, for example, we want to - * access the indices for polygon 3, the following code would do the trick - * \code - * int lStartIndex = mesh.GetPolygonVertexIndex(3); - * if( lStartIndex == -1 ) return; - * int* lVertices = mesh.GetPolygonVertices()[lStartIndex]; - * int lCount = mesh.GetPolygonSize(3); - * for( int i = 0; i < lCount; ++i ) - * { - * int vertexID = lVertices[i]; - * ... - * } - * \endcode - * \param pPolygonIndex The polygon of interest. - * \return The index into the GetPolygonVertices() array. - * \remark If the polygon index is out of bounds, return -1. */ - int GetPolygonVertexIndex(int pPolygonIndex) const; - - /** Remove the specified polygon from the mesh. - * This method will automatically update the layers accordingly. - * \param pPolygonIndex Index of the polygon. - * \return Polygon index. - * \remark If the polygon index is out of bounds, return -1. */ - int RemovePolygon(int pPolygonIndex); - - /** Remove the duplicated edges from the mesh. - * This method will remove duplicated edges. It will not change any vertex and not change the mesh topology. - * \param pEdgeIndexList Index list of edges. - * \return the count of removed edges. - * \remark the edge index list must be ordered. The last one is the max. If the edge index is out of bounds, return -1. */ - int RemoveDuplicatedEdges(FbxArray& pEdgeIndexList); - //@} - - /** \name Texture UV Utility Functions. - * - * The methods found in this section are utility functions used to handle UV coordinates quickly. Internally, they - * refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. Except for the GetAllChannelUV(int pLayer), - * all the methods are implicitly working on Layer 0. Use the \c FbxLayer methods to have access to the other layers. */ - //@{ - /** Init texture UV coordinates. - * \param pCount Number of texture UV elements. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark \c pCount must equal the number of control points of the Mesh if - * the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void InitTextureUV(int pCount, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Add texture UV coordinates. - * Appends a new element at the end of the array of texture UV coordinates. - * \param pUV Texture UV coordinates, ranging between \c 0 and \c 1. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark The final number of texture UV elements must equal the number of control - * points if the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void AddTextureUV(FbxVector2 pUV, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of texture UV coordinates. - * \param pTypeIdentifier The texture channel the UV refers to. */ - int GetTextureUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of layer containing at least one channel UVMap. - * return \e 0 if no UV maps have been defined. */ - int GetUVLayerCount() const; - - /** Fills an array describing, for the given layer, which texture channel have UVs associated to it. - * \param pLayer Index of the layer. - * \return Array with the channel descriptor. - * \remark Only the channels that have UVs associated are reported in the array. For example, let's assume that we have defined UVs for the Diffuse, - * Ambient and Bump channels on layer 0. The resulting array will have the following three entries: - * \li FbxLayerElement::eDIFFUSE_TEXTURE - * \li FbxLayerElement::eAMBIENT_TEXTURE - * \li FbxLayerElement::eBUMP_TEXTURE */ - FbxArray GetAllChannelUV(int pLayer); - //@} - - /** \name Material, Texture and UV Indices Utility Functions. - * The methods found in this section are utility functions used to handle Material, Texture and UV indices quickly. - * Internally, they refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. These functions are only - * working on Layer 0. Use the \c FbxLayer methods directly to access other layers. */ - //@{ - /** Initialize material indices. - * \param pMappingMode The mapping mode. - * This method must be called after FbxGeometryBase::InitControlPoints(). - * The material indices refer to the position of a material in the FbxLayerElementMaterial's direct array. - * See FbxLayerElementMaterial for more details. Supported mapping types are \e eByControlPoint, - * \e eByPolygon and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the material index array - * as there are control points. - * - If mapping mode is \e eByPolygon, there will be as many indices in the material index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the material index array. - * \remark This function will set the Reference mode of the FbxLayerElementMaterial on layer 0 to \e eIndexToDirect. */ - void InitMaterialIndices(FbxLayerElement::EMappingMode pMappingMode); - - /** Initialize texture indices. - * \param pMappingMode The mapping mode. - * The texture indices refer to the texture connection to the material. In older versions of the FBX SDK, the - * indices were referring to the entries in the direct array of the FbxLayerElementTexture. - * See FbxLayerElementTexture for more details. Supported mapping modes are \e eByPolygon - * and \e eALL_SAME. - * - If mapping mode is \e eByPolygon, there will be as many indices in the texture index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the texture index array. - * \param pTextureType The texture channel identifier. - * \remark This function will set the Reference mode of the FbxLayerElementTexture on layer 0 to \e eIndexToDirect. */ - void InitTextureIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTextureType); - - /** Initialize texture UV indices. - * \param pMappingMode The mapping mode. - * The texture UV indices refer to the index of an element in the FbxLayerElementUV's direct array. - * See FbxLayerElementUV for more details. Supported mapping types are \e eByControlPoint , \e eByPolygonVertex - * and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the UV index array - * as there are control points. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eDirect. - * - If mapping mode is \e eByPolygonVertex, there will be an index in the UV index array - * for each vertex, for each polygon it is part of. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eIndexToDirect. - * - If mapping mode is \e eALL_SAME, there will be no index in the UV index array. This will also set the Reference - * mode of the FbxLayerElementUV on layer 0 to \e eDirect. - * \param pTypeIdentifier The texture channel the UVIndices refers to. */ - void InitTextureUVIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Return a texture UV index. - * \remark This function only works if the texture UV mapping mode is set to \e eByPolygonVertex, - * otherwise it returns -1. */ - int GetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Set a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pIndex The index of the texture UV we want to assign to the polygon vertex. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \remark This function only works if the texture UV mapping type is set to \e eByPolygonVertex. */ - void SetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, int pIndex, FbxLayerElement::EType pTypeIdentifier); - //@} - - /** \name Utility functions */ - //@{ - /** Reset the mesh to default values. - * Frees and set to \c NULL all layers and clear the polygon and the control point array. */ - void Reset(); - - /** Generate vertex normals on the mesh. - * The normal computation takes into consideration, as much as possible, the smoothing groups. - * \param pOverwrite If true, re-generate normals data regardless of availability, otherwise left untouched if exist. - * \param pByCtrlPoint If true, the recomputed normals will be defined by control points instead of by polygon vertex. - * \param pCW True if the normals are calculated clockwise, false otherwise (counter-clockwise). - * \return \c true if successfully generated normals data, or if already available and pOverwrite is false. */ - bool GenerateNormals(bool pOverwrite=false, bool pByCtrlPoint = false, bool pCW=false); - - /** Compares the normals calculated by doing cross-products between the polygon vertex and by the ones - * stored in the normal array. - * \returns \c false if ALL of them are Clockwise. Returns \c true otherwise. */ - bool CheckIfVertexNormalsCCW(); - - //! Internal structure used to keep the duplicate vertex information. - class DuplicateVertex - { - public: - DuplicateVertex() : - lVertexPolyIndex(0), - lNewVertexIndex(0), - lNormal(0, 0, 0), - lUV(0, 0), - lEdgeIndex(0) - { - } - - int lVertexPolyIndex; //!< Index in mPolygonsVertex where the vertex is found. - int lNewVertexIndex; //!< The new index of the vertex. - FbxVector4 lNormal; //!< The normal associated with this duplicate control point. - FbxVector2 lUV; //!< The UV associated with this duplicate control point. - int lEdgeIndex; //!< The edge index. - }; - - //! Internal structure used to compute the normals on a mesh - class VertexNormalInfo - { - public: - VertexNormalInfo() : - mTotalNormal(0, 0, 0), - mNumNormal(0) - { - } - - FbxVector4 mTotalNormal; //!< Sum of all the normals found. - int mNumNormal; //!< Number of normals added. - }; - - /** Verify if the mesh has polygons that are defined on the same point more than once. - * \return true if the mesh has that kind of polygon, false otherwise. */ - bool CheckSamePointTwice() const; - - /** Remove bad polygons from a mesh. - * Degenerate polygons use a vertex more than once. Remove them from the mesh and - * from the layer element indices as needed. - * \return Number of polygons removed from the mesh, -1 if an error occurred. */ - int RemoveBadPolygons(); - //@} - - /** \name Point Splitting/Merging utility functions */ - //@{ - /** Split points. - * \param pTypeIdentifier Specify which UVs are processed. - * \return \c true if a split occurred, false otherwise. - * \remark This method replaces the BuildSplitList and SplitPointsForHardEdge. */ - bool SplitPoints(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Insert the new indexes of the object that have to be merged. - * \param pMergeList The list that will contain the indexes of the objects to merge. - * \param pExport If set to \c true, include the duplicate indexes in the merge list. */ - bool BuildMergeList(FbxArray& pMergeList, bool pExport=false); - - /** Merge the points specified in the list. - * \param pMergeList List containing the information on the points that will be merged. */ - void MergePointsForPolygonVerteNormals(FbxArray &pMergeList); - //@} - - /** \name Edge management functions */ - //@{ - /** Automatically generate edge data for the mesh. Clears all previously stored edge information */ - void BuildMeshEdgeArray(); - - /** Query the number of edges defined on this mesh - * \return The number of edges defined for this mesh */ - int GetMeshEdgeCount() const; - - /** Get the index for the edge between the given vertices. - * Note that the result of this method is the same if pStartVertexIndex and pEndVertexIndex are swapped. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pReversed flag will be set to true if the reverse edge is found, false otherwise. - * \param pExistedEdgeCount legal edge count in mEdgeArray - * \return -1 if no edge exists for the given pair of vertices. */ - int GetMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool& pReversed, int pExistedEdgeCount=-1); - - /** Use this method before calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * Once done calling GetMeshEdgeIndexForPolygon, call EndGetMeshEdgeIndex. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void BeginGetMeshEdgeIndexForPolygon(); - - /** Use this method after calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void EndGetMeshEdgeIndexForPolygon(); - - /** Get the index for the specific edge of pPolygon. - * \param pPolygon The polygon of interest. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return -1 if the specific edge does not exist. - * \remark To optimize access time when making several calls to this method, enclose these calls - * between the BeginGetMeshEdgeIndexForPolygon() and EndGetMeshEdgeIndexForPolygon() calls. */ - int GetMeshEdgeIndexForPolygon(int pPolygon, int pPositionInPolygon); - - /** Get the vertices for the given edge. Note that the values returned are indices into the control point array. - * \param pEdgeIndex The edge to query. - * \param pStartVertexIndex The edge's starting point will be stored here. - * \param pEndVertexIndex The edge's starting point will be stored here. */ - void GetMeshEdgeVertices(int pEdgeIndex, int& pStartVertexIndex, int& pEndVertexIndex) const; - - /** Use this method before calling GetMeshEdgeVertices if making several calls to that method. - * Once done calling GetMeshEdgeVertices, call EndGetMeshEdgeVertices. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void BeginGetMeshEdgeVertices(); - - /** Use this method after calling GetMeshEdgeVertices if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void EndGetMeshEdgeVertices(); - - /** Presets the number edge data elements. - * \param pEdgeCount The number of edges to allocate. */ - void SetMeshEdgeCount(int pEdgeCount); - - /** Sets element in edge array to specific value. - * \param pEdgeIndex The edge index - * \param pValue The edge data */ - inline void SetMeshEdge(int pEdgeIndex, int pValue){ if( pEdgeIndex >= 0 && pEdgeIndex < mEdgeArray.GetCount() ) mEdgeArray[pEdgeIndex] = pValue; } - - /** Add an edge with the given start/end points. Note that the inserted edge - * may start at the given end point, and end at the given start point. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \return Edge index of the new edge, or -1 on failure (edge/reverse edge already exists, no face using these 2 points consecutively ) */ - int AddMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates); - - /** Set the index for the edge with the given start/end points. Note that the edge - * may start at the given end point, and end at the given start point. - * \param pEdgeIndex The edge index of the edge. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \param pExistedEdgeCount the valid edge count that we have created in edge array. This parameter only works when pCheckForDuplicates is true. - * The default value is -1 which meaning current edge array has been fully filled with valid edges, i.e., - * we will search the full edge array for the duplicated edge. - * \return Edge index of the edge, or -1 on failure (no face using these 2 points consecutively ), or -2 if edge/reverse edge already exists */ - int SetMeshEdgeIndex(int pEdgeIndex, int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates, int pExistedEdgeCount=-1); - - /** Call this before calling AddMeshEdgeIndex or SetMeshEdgeIndex to increase performance. - * Once finished adding/setting edges EndAddMeshEdgeIndex should be called. */ - void BeginAddMeshEdgeIndex(); - - /** After calling AddMeshEdgeIndex or SetMeshEdgeIndex, EndAddMeshEdgeIndex should be called. */ - void EndAddMeshEdgeIndex(); - - /** Adds an edge for the specified polygon, and edge number within the polygon. See SetMeshEdgeIndex for notes the the parameters. - * \param pPolygonIndex The polygon of interest. - * \param pPositionInPolygon The edge within the polygon - * \return edge index or -1 if failed. */ - int AddMeshEdgeIndexForPolygon(int pPolygonIndex, int pPositionInPolygon); - - /** Sets the specified edge to the specified polygon's edge. - * Note that the position in the polygon ranges from 0 to GetPolygonSize(pPolygonindex) - 1 - * and represents the edge from GetPolygonVertex(pPolygonIndex, pPositionInPolygon) to - * GetPolygonVertex( pPolygonIndex, pPositionInPolygon + 1 ) or from pPositionInPolygon to - * 0 if pPositionInPolygon == GetPolygonSize(pPolygonindex) - 1 - * \param pEdgeIndex The edge. - * \param pPolygonIndex The polygon. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return true on success, false on failure. ( edge for the poly and position already exists ) */ - bool SetMeshEdgeIndex(int pEdgeIndex, int pPolygonIndex, int pPositionInPolygon); - - /** Determines if the mesh is composed entirely of triangles. - * \return true if all polygons are triangles, false otherwise */ - bool IsTriangleMesh() const; - //@} - - /** Reserve memory in the polygon array to hold the specified number of polygons - * \param pCount The number of polygons this mesh will hold */ - inline void ReservePolygonCount(int pCount) { mPolygons.Reserve(pCount); } - - /** Reserve memory in the polygon vertex array to hold the specified number of polygon vertices. - * \param pCount The number of polygon vertices */ - inline void ReservePolygonVertexCount(int pCount) { mPolygonVertices.Reserve(pCount); } - - bool GetTextureUV(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - bool GetMaterialIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTextureIndices(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTextureType) const; - - /** \name Crease utility functions */ - //@{ - /** Get crease weight by edge index. - * \param pEdgeIndex Edge index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetEdgeCreaseInfo(int pEdgeIndex); - - /** Get crease edge array. - * \param pCreaseArray Edge crease data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetEdgeCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Get crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetVertexCreaseInfo(int pVertexIndex); - - /** Get vertex crease array. - * \param pCreaseArray Edge vertex data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetVertexCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Set crease weight by edge index. - * \param pEdgeIndex Edge index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfo(int pEdgeIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Edge crease data. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfoArray(FbxArray* pWeightArray); - - /** Set crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfo(int pVertexIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Vertex crease data. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfoArray(FbxArray* pWeightArray); - //@} - - /** \name Smooth mesh preview utility functions */ - //@{ - /** \enum ESmoothness Display Smoothness. - * It represents smooth mesh preview mode. This concept is not used in the FBX SDK but simply - * carried over so applications can access it and perform the appropriate tasks. */ - enum ESmoothness - { - eHull, //!< Default value, not active "smooth mesh preview". - eRough, //!< Not active "smooth mesh preview". - eMedium, //!< Both display cage and smooth mesh. - eFine //!< Display smooth mesh. - }; - - /** \enum EBoundaryRule the boundary rule. */ - enum EBoundaryRule - { - eLegacy, //!< Default value. - eCreaseAll, //!< Used for hard corner. - eCreaseEdge //!< Used for round corner. - }; - - /** Get display smoothness from mesh. - * \return Mesh smoothness. - * \remark It represents smooth mesh preview mode. */ - FbxMesh::ESmoothness GetMeshSmoothness() const; - - /** Set the mesh display smoothness mode. - * \param pSmoothness New smoothness factor. - * \remark It represents smooth mesh preview mode. */ - void SetMeshSmoothness(FbxMesh::ESmoothness pSmoothness); - - /** Get preview subdivision levels from mesh. - * \return Mesh preview subdivision levels. */ - int GetMeshPreviewDivisionLevels() const; - - /** Set mesh preview subdivision levels. - * \param pPreviewDivisionLevels Number of subdivisions levels. */ - void SetMeshPreviewDivisionLevels(int pPreviewDivisionLevels); - - /** Get render subdivision levels from mesh. - * \return Mesh render subdivision levels - * \remark Sometimes, render division level can be the same as preview level. */ - int GetMeshRenderDivisionLevels() const; - - /** Set mesh render subdivision levels. - * \param pRenderDivisionLevels Number of subdivision levels. */ - void SetMeshRenderDivisionLevels(int pRenderDivisionLevels); - - /** Query whether to display subdivisions isolines on mesh. - * \return The current state of the internal flag. */ - bool GetDisplaySubdivisions() const; - - /** Set the DisplySubdivisions state. - * \param pDisplySubdivisions New value for this flag. */ - void SetDisplaySubdivisions(bool pDisplySubdivisions); - - /** Get BoundaryRule from mesh. - * \return Current value of the internal state. */ - EBoundaryRule GetBoundaryRule() const; - - /** Set BoundaryRule for this mesh. - * \param pBoundaryRule New value for the internal state of this mesh. - * \remark BoundaryRule will affect the corners of smooth mesh. */ - void SetBoundaryRule(EBoundaryRule pBoundaryRule); - - /** Query whether to preserve borders when preview smooth mesh is enabled. - * \return The current state of the flag. */ - bool GetPreserveBorders() const; - - /** Set the state of the PreserveBorders flag. - * \param pPreserveBorders New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveBorders(bool pPreserveBorders); - - /** Query whether to preserve hard edges when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPreserveHardEdges() const; - - /** Set the state of the PreserveHardEdges flag. - * \param pPreserveHardEdges New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveHardEdges(bool pPreserveHardEdges); - - /** Query whether to PropagateEdgeHardness when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPropagateEdgeHardness() const; - - /** Set state of the PropagateEdgeHardness flag. - * \param pPropagateEdgeHardness New value for this flag. - * \remark This flag will affect smooth mesh preview results. */ - void SetPropagateEdgeHardness(bool pPropagateEdgeHardness); - //@} - - /** \name Geometry hole management utility functions */ - //@{ - /** Get hole flag by face index (an index to a polygon). - * \param pFaceIndex Index of the queried polygon. - * \return The hole flag for the given face. */ - bool GetPolyHoleInfo(int pFaceIndex); - - /** Get hole flags Array. - * \param pHoleArray Hole flags array. - * \return \c true if the pHoleArray is filled successfully. */ - bool GetPolyHoleInfoArray(FbxLayerElementArrayTemplate** pHoleArray); - - /** Sets the flag indicating whether the face represents a hole or not. - * \param pFaceIndex Index of the processed polygon. - * \param pIsHole If \c true, this face represent a hole. - * \return \c true if successfully set the hole info. */ - bool SetPolyHoleInfo(int pFaceIndex, bool pIsHole); - - /** Set hole flags array. - * \param pHoleArray Hole flag array. - * \return \c true if successfully set the hole flags. */ - bool SetPolyHoleInfoArray(FbxArray* pHoleArray); - //@} - - /** \name Tangents data management utility functions */ - //@{ - /** Generate tangents data for UVSet with specific name. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetName The UVSet name to generate tangents data with. The UVSet on the first layer is the the default UVSet to generate. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(const char* pUVSetName=NULL, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - /** Generate tangents data for UVSet in specific layer. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetLayerIndex The layer to generate tangents data with. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(int pUVSetLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - - /** Generate tangents data for all UVSets in all layers. - * Note that the UV winding order is stored in the W component of the tangent: - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsDataForAllUVSets(bool pOverwrite=false, bool pIgnoreTangentFlip=false); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - //Please use GetPolygonVertexIndex and GetPolygonVertices to access these arrays. - //DO NOT MODIFY them directly, otherwise unexpected behavior will occur. - //These members are public only for application data copy performance reasons. - struct PolygonDef{ int mIndex; int mSize; int mGroup; }; - - FbxArray mPolygons; - FbxArray mPolygonVertices; - FbxArray mEdgeArray; - - //These are only used in context of triangulation to backup original polygon layout necessary for handling mesh cache after triangulation - FbxArray* mOriginalPolygons; - FbxArray* mOriginalPolygonVertices; - int mOriginalControlPointsCount; - - //Internal structure used to keep the mapping information between edges and polygons. - struct ComponentMap - { - FbxArray mData; // The array to store data. - FbxArray mOffsets; // The array to store the offsets of the data in mData. - - int GetDataCount(int pIndex) { return mOffsets[pIndex + 1] - mOffsets[pIndex]; } - int GetData(int pIndex, int pSubIndex) { return mData[ mOffsets[pIndex] + pSubIndex ]; } - int GetComponentCount() { return mOffsets.GetCount() - 1; } - }; - void ComputeComponentMaps(ComponentMap& pEdgeToPolyMap, ComponentMap& pPolyToEdgeMap); - - // Internal structure used to keep the mapping information between the control points and the - // vertices referencing them - class FBXSDK_DLL ControlPointToVerticesMap - { - public: - ControlPointToVerticesMap(); - ~ControlPointToVerticesMap(); - bool Valid(); - - void Fill(FbxMesh* pMesh); - - int GetCount(); - bool Init(int pNbEntries); - void Clear(); - - FbxArray* GetVerticesArray(int pControlPoint); - FbxArray* operator[](int pControlPoint); - - private: - FbxArray< FbxArray* > mMap; - }; - void ComputeControlPointToVerticesMap(ControlPointToVerticesMap& pMap); - - // this function will compare the vertex normals with the corresponding ones in pMesh and - // make them similar (i.e: if pMesh(NVi) == pMesh(NVj) then make this(NVi) == this(NVj)) - bool ConformNormalsTo(const FbxMesh* pMesh); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ContentClear() override; - - void InitTextureIndices(FbxLayerElementTexture* pLayerElementTexture, FbxLayerElement::EMappingMode pMappingMode); - void RemoveTextureIndex(FbxLayerElementTexture* pLayerElementTextures, int pPolygonIndex, int pOffset); - void RemoveUVIndex(FbxLayerElementUV* pLayerElementUV, int pPolygonIndex, int pOffset); - - bool GetBadPolyIndices(FbxArray& pArrayBadPolyIndices, bool pCheckOne) const; - - struct SplitEdgeData { int mOriginalEdge; bool mIsNew; }; - - ESmoothness mSmoothness; - int mPreviewDivisionLevels; - int mRenderDivisionLevels; - - bool mDisplaySubdivisions; - EBoundaryRule mBoundaryRule; - bool mPreserveBorders; - bool mPreserveHardEdges; - bool mPropagateEdgeHardness; - - struct PolygonIndexDef { int mPolygonIndex; int mSubPolygonIndex; }; - - struct V2PVMap - { - PolygonIndexDef* mV2PV; - int* mV2PVOffset; - int* mV2PVCount; - FbxArray* > mPVEdge; - bool mValid; - - //Used for fast search in GetMeshEdgeIndexForPolygon this array does not follow the same allocation as the above ones because - //it is not used in the normal BeginAddMeshEdgeIndex(). It is filled only by the call to BeginGetMeshEdgeIndexForPolygon(). - FbxArray mV2Edge; - } mV2PVMap; - - struct EdgeLookupDef { FbxArray mPVFlags; bool mValid; } mPVEndFlags; - - //Finds the polygon index for the given edge - int FindPolygonIndex(int pEdgeIndex); - static int PolygonIndexCompare(const void* p1, const void* p2); - void PolySetTexture(FbxLayer* pLayer, int pTextureIndex, FbxLayerElement::EType pTextureType); - template bool GetPolygonVertexLayerElementIndex(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, int& pIndex) const; - template bool GetPolygonVertexLayerElementValue(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, T& pValue, bool pAllowUnmapped) const; - - friend class FbxGeometryConverter; - -private: - bool GenerateTangentsData(FbxLayerElementUV* pUVSet, int pLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - void FillMeshEdgeTable(FbxArray& pTable, int* pValue, void (*FillFct)(FbxArray& pTable, int pIndex, int* pValue)); - void ComputeNormalsPerCtrlPoint(FbxArray& lNormalInfo, bool pCW=false); - void ComputeNormalsPerPolygonVertex(FbxArray& lNormalInfo, bool pCW=false); - void GenerateNormalsByCtrlPoint(bool pCW); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MESH_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnode.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnode.h deleted file mode 100644 index 8d82109..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnode.h +++ /dev/null @@ -1,2391 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_H_ - -#include - -#include -#include - -#include - -class FbxStatus; -class FbxNodeAttribute; -class FbxCachedEffect; -class FbxLODGroup; -class FbxNull; -class FbxMarker; -class FbxSkeleton; -class FbxGeometry; -class FbxMesh; -class FbxNurbs; -class FbxNurbsCurve; -class FbxLine; -class FbxNurbsSurface; -class FbxTrimNurbsSurface; -class FbxPatch; -class FbxCamera; -class FbxCameraStereo; -class FbxCameraSwitcher; -class FbxLight; -class FbxOpticalReference; -class FbxSubDiv; -class FbxCharacter; -class FbxSurfaceMaterial; -class FbxAnimStack; -class FbxAnimCurveFilterMatrixConverter; - -/** Represents an element in the scene graph. A scene graph is a tree of FbxNode - * objects. The tree management services are self contained in this class. - * - * \note The FBX SDK does not test the validity of the constructed scene graph. It - * is the responsibility of the caller to make sure that it does not generate cyclic - * graphs in a node hierarchy. - * - * Besides the tree management, this class defines all the properties required to describe - * the position of the object in the scene. This information include the basic Translation, - * Rotation and Scaling properties and the more advanced options for pivots, limits, and IK joints - * attributes such the stiffness and dampening. - * - * When it is first created, the FbxNode object is "empty" (i.e: it is an object without any - * graphical representation that only contains the position information). In this state, it can - * be used to represent parents in the node tree structure but not much more. The normal use of - * this type of objects is to add them an attribute that will specialize the node (see the - * "Node Attribute Management" section). - * - * The node attribute is an object in itself and is connected to the the FbxNode. This also - * means that the same node attribute can be shared among multiple nodes. FbxCamera, FbxLight, - * FbxMesh, etc... are all node attributes and they all derive from the base class FbxNodeAttribute. - * - */ -class FBXSDK_DLL FbxNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNode, FbxObject); - -public: - /** - * \name Node Tree Management - */ - //@{ - /** Get the parent node. - * \return Pointer to parent node or \c NULL if the current node has no parent. - */ - FbxNode* GetParent(); - const FbxNode* GetParent() const; - - /** Add a child node and its underlying node tree. - * \param pNode Node we want to make child of \c this. - * \return \c true on success, \c false if \e pNode is \c NULL or the system is - * unable to make the connection. - * \remarks If \e pNode already has a parent, first it is removed from current parent and then - * added to this one. - */ - bool AddChild(FbxNode* pNode); - - /** Remove the child node. - * \param pNode The child node to be removed. - * \return The removed child node. - */ - FbxNode* RemoveChild(FbxNode* pNode); - - /** Get the number of children nodes. - * \param pRecursive If \c true the method will also count all the descendant children. - * \return Total number of children for this node. - */ - int GetChildCount(bool pRecursive = false) const; - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - FbxNode* GetChild(int pIndex); - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - const FbxNode* GetChild(int pIndex) const; - - /** Finds a child node by name. - * \param pName Name of the searched child node. - * \param pRecursive Flag to request recursive calls. - * \param pInitial If set to \c true, the search compares the initial name of - * the node (see the FbxObject class) - * \return Found child node or \c NULL if no child node with this name exists. - */ - FbxNode* FindChild(const char* pName, bool pRecursive=true, bool pInitial=false); - //@} - - /** - * \name Node Target Management - * The FbxNode class allows the client to set a "follow" target node. This target - * forces the node to re-align itself so it points to the target. By default, the node - * uses its X axis as the aiming constraint. A rotation offset can be added to change - * this behavior. While the default relative orientation to the target (the X axis) is - * sufficient for the FBX cameras (with a (0,0,0) rotation vector, they are aiming - * along the X axis), this rotation offset becomes particularly useful with the lights - * objects because their default orientation (when they have a 0,0,0 rotation vector) is to - * point along the -Y axis and they need to be adjusted with a 90-degree offset on the Z axis. - * - * The FbxNode class also permits the use of node to define an Up-vector. By default, - * the node's up vector points towards the Up node. If the Up node is not specified, - * then the node's Up vector points towards the Y axis. Here too, a rotation offset can be - * added to change the default behavior. - * - * Of course, these offsets can be applied to anything, not only the cameras and lights. - * - * \note Objects in the FBX SDK are always created in the right handed, Y-Up system and need - * to be adjusted for any other axis system by explicitly convert them (the class - * FbxAxisSystem can help in that process). - * - */ - //@{ - /** The target must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTarget(FbxNode* pNode); - - /** Get the target for this node. - * \returns \c NULL if target isn't set. - */ - FbxNode* GetTarget() const; - - /** Set rotation offset from default relative orientation to target. - * \param pVector The rotation offset. - */ - void SetPostTargetRotation(FbxVector4 pVector); - - /** Get rotation offset from default relative orientation to target. - * \return The rotation offset. - */ - FbxVector4 GetPostTargetRotation() const; - - /** The target up node must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTargetUp(FbxNode* pNode); - - /** Get the target up node. - * \return \c NULL if the target up model isn't set. - */ - FbxNode* GetTargetUp() const; - - /** Set up vector offset from default relative target up vector. - * \param pVector The rotation offset. - */ - void SetTargetUpVector(FbxVector4 pVector); - - /** Get up vector offset from default relative target up vector. - * \return The up vector offset. - */ - FbxVector4 GetTargetUpVector() const; - //@} - - /** - * \name Node Display Parameters - */ - //@{ - /** Set the node Visibility value from the boolean parameter. - * \param pIsVisible Node is visible in the scene if set to \c true. - * \remarks This method checks for the validity of the property before attempting to - * set its value. In fact, the exact same result can be achieved by the following code: - * \code - * if( Visibility.IsValid() ) - * { - * Visibility.Set(FbxDouble(pIsVisible)); - * } - * \endcode - * - * \see Visibility property. - */ - void SetVisibility(bool pIsVisible); - - /** Get the current value of the Visibility property. - * \return \c false if the Visibility property value is 0.0 and \c true for any other value. - * \remarks This method expects the Visibility property to exist and to be valid. If this - * condition is not met, the returned value will be \c false. - */ - bool GetVisibility() const; - - /** \enum EShadingMode Shading modes. - * These shading modes are not directly used by the FBX SDK but it is guaranteed that the information is - * carried to and from the FBX files. The typical context of using these modes is to affect the rendering of - * geometric objects (this is, of course, performed at the application level) and the possible definition - * for each mode is: - */ - enum EShadingMode - { - eHardShading, //!< Solid geometries rendered with smooth surfaces - using the system light. - eWireFrame, //!< Geometries displayed in wire frame. - eFlatShading, //!< Solid geometries rendered faceted - using the system light. - eLightShading, //!< Solid geometries rendered with the scene lights. - eTextureShading, //!< Solid geometries rendered with smooth textured surfaces - using system light. - eFullShading //!< Solid geometries rendered with smooth textured surfaces and scene lights. - }; - - /** Set the shading mode. - * \param pShadingMode The shading mode. - */ - void SetShadingMode(EShadingMode pShadingMode); - - /** Get the shading mode. - * \return The currently set shading mode. - */ - EShadingMode GetShadingMode() const; - //@} - - /** - * \name Node Attribute Management - */ - //@{ - /** Set the node attribute. - * \param pNodeAttribute Node attribute object - * \return Pointer to previous node attribute object. - * \c NULL if the node didn't have a node attribute or if - * the new node attribute is equal to the one currently set. - * \remarks A node attribute can be shared between nodes. - * \remarks If this node has more than one attribute (added via the AddAttribute() method), this call - * will destroy all, but the default node attribute. - */ - FbxNodeAttribute* SetNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - FbxNodeAttribute* GetNodeAttribute(); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(...). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - const FbxNodeAttribute* GetNodeAttribute() const; - - //! Get the number of node attribute(s) connected to this node. - int GetNodeAttributeCount() const; - - /** Get the index, in the list of connected node attributes, of the node attribute that is set - * to be the default one. - * \return Index of the default node attribute or \c -1 if there is no default node attribute set. - */ - int GetDefaultNodeAttributeIndex() const; - - /** Set index of the default node attribute. - * \param pIndex Identifies which of the connected node attributes is becoming the default one. - * This value represent the connection number of the node. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeds or \c false if the passed index is invalid. - */ - bool SetDefaultNodeAttributeIndex(int pIndex, FbxStatus* pStatus = NULL); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - const FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex) const; - - /** Get the connection index of the specified node attribute. - * This method will do a linear search of all the connected node attributes (from the last to - * the first connection) until it finds \e pNodeAttribue. - * \param pNodeAttribute The pointer to the node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return The connection number of the node attribute or \c -1 if pNodeAttribute is \c NULL - * or not connected to this node. - */ - int GetNodeAttributeIndex(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL) const; - - /** Add the new node attribute to this node. - * If no other node attribute is already set as the default one, this new node attribute is - * automatically set as the default one. - * \param pNodeAttribute The pointer to a node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeded or \c false if the operation failed. - * \remarks The failing conditions for this methods are: - * - The received object pointer is \c NULL. - * - The received object is already connected to this node. - * - An internal error prevented the connection to successfully complete. - */ - bool AddNodeAttribute(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL); - - /** Remove the node attribute from the connection list of this node. - * \param pNodeAttribute The pointer to a node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - */ - FbxNodeAttribute* RemoveNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Remove the node attribute, specified by the connection index, from the connection - * list of this node. - * \param pIndex Index of the node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - * \remarks If the specified node attribute is also the default one, its predecessor in - * the connection list will become the new default node attribute. And if there - * are no more predecessors, the node DefaultNodeAttributeIndex is reset to -1. - */ - FbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex); - - /** Get the default node attribute casted to a FbxCachedEffect pointer. - * \return Pointer to the cached effect object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCachedEffect* GetCachedEffect(); - - /** Get the default node attribute casted to a FbxLODGroup pointer. - * \return Pointer to the lod group object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLODGroup* GetLodGroup(); - - /** Get the default node attribute casted to a FbxNull pointer. - * \return Pointer to the null object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNull* GetNull(); - - /** Get the node attribute casted to a FbxMarker pointer. - * \return Pointer to the marker object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMarker* GetMarker(); - - /** Get the node attribute casted to a FbxSkeleton pointer. - * \return Pointer to the skeleton object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSkeleton* GetSkeleton(); - - /** Get the node attribute casted to a FbxGeometry pointer. - * \return Pointer to the geometry object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - * \remarks For this method to succeed, the node attribute's GetAttributeType() must returns one of the - * following: - * - FbxNodeAttribute::eMesh - * - FbxNodeAttribute::eNurbs - * - FbxNodeAttribute::eNurbsSurface - * - FbxNodeAttribute::ePatch - * - FbxNodeAttribute::eNurbsCurve - * - FbxNodeAttribute::eBoundary - * - FbxNodeAttribute::eTrimNurbsSurface - * - FbxNodeAttribute::eSubDiv - * - FbxNodeAttribute::eLine - */ - FbxGeometry* GetGeometry(); - - /** Get the node attribute casted to a FbxMesh pointer. - * \return Pointer to the mesh object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eMesh. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMesh* GetMesh(); - - /** Get the node attribute casted to a FbxNurbs pointer. - * \return Pointer to the nurb object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbs. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbs* GetNurbs(); - - /** Get the node attribute casted to a FbxNurbsSurface pointer. - * \return Pointer to the nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Get the node attribute casted to a FbxNurbsCurve pointer. - * \return Pointer to the nurbs curve object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsCurve. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsCurve* GetNurbsCurve(); - - /** Get the node attribute casted to a FbxLine pointer. - * \return Pointer to the line object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eLine. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLine* GetLine(); - - /** Get the node attribute casted to a FbxTrimNurbsSurface pointer. - * \return Pointer to the trim nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eTrimNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxTrimNurbsSurface* GetTrimNurbsSurface(); - - /** Get the node attribute casted to a FbxSubDiv pointer. - * \return Pointer to the subdivision surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eSubDiv. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSubDiv* GetSubdiv(); - - /** Get the node attribute casted to a FbxPatch pointer. - * \return Pointer to the patch object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::ePatch. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxPatch* GetPatch(); - - /** Get the node attribute casted to a FbxCamera pointer. - * \return Pointer to the camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCamera* GetCamera(); - const FbxCamera* GetCamera() const; - - /** Get the node attribute casted to a FbxCameraStereo pointer. - * \return Pointer to the stereo camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraStereo* GetCameraStereo(); - - /** Get the node attribute casted to a FbxCameraSwitcher pointer. - * \return Pointer to the camera switcher object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraSwitcher* GetCameraSwitcher(); - - /** Get the node attribute casted to a FbxLight pointer. - * \return Pointer to the light object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLight* GetLight(); - const FbxLight* GetLight() const; - - /** Get the node attribute casted to a FbxOpticalReference pointer. - * \return Pointer to the optical reference object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxOpticalReference* GetOpticalReference(); - //@} - - /** - * \name Transformation propagation - * This set of functions provides direct access to the transformation propagations settings - * of the FbxNode. These settings determine how transformations must be applied when - * evaluating a node's transformation matrix. The possible values are: - * - eInheritRrSs : Scaling of parent is applied in the child world after the local child rotation. - * - eInheritRSrs : Scaling of parent is applied in the parent world. - * - eInheritRrs : Scaling of parent does not affect the scaling of children. - */ - //@{ - /** Sets how child transforms are inherited from parent transforms. - * \param pInheritType One of the following values eInheritRrSs, eInheritRSrs or eInheritRrs - */ - void SetTransformationInheritType(FbxTransform::EInheritType pInheritType); - - //! Get transformation inherit type. - void GetTransformationInheritType(FbxTransform::EInheritType& pInheritType) const; - //@} - - /** - * \name Pivot Management - * Pivots are used to specify translation, rotation and scaling centers in coordinates - * relative to a node's origin. - * A node has two pivot contexts defined by the EPivotSet enumeration. The node's animation - * data can be converted from one pivot context to the other. Each context can be set to be - * either active or passive (reference). By default the two pivot contexts are passive. They - * need to be active to be processed during the evaluation of the node final transformation - * matrix. In its passive state, a pivot context can still be accessed to retrieve its content - * for any other required purpose. Each pivot context stores values (as FbxVector4) for: - * \code - * - Rotation offset (Roff) - * - Rotation pivot (Rp) - * - Pre-rotation (Rpre) - * - Post-rotation (Rpost) - * - Scaling offset (Soff) - * - Scaling pivot (Sp) - * - Geometric translation (Gt) - * - Geometric rotation (Gr) - * - Geometric scaling (Gs) - * - * These values combine in the matrix form to compute the World transform of the node - * using the formula: - * - * World = ParentWorld * T * Roff * Rp * Rpre * R * Rpost * Rp-1 * Soff * Sp * S * Sp-1 - * \endcode - * - * The geometric transformation (Gt * Gr * Gs) is applied only to the node attribute and after - * the node transformations. This transformation is not inherited across the node hierarchy. - * - * \note Please refer to the FBX SDK programmers guide for more details. - * - * The application of the pivots is performed by calling the method ConvertPivotAnimationRecursive(). Typically, - * you set-up the eDestinationPivot context to match what your system can directly support and leave at (0,0,0) the - * attributes that are not supported by your system. When the values of a specific attribute in the - * two contexts (source and destination) are identical, the system considers that no adjustment is - * required because the attribute is directly supported in the destination world. - * - * Below is an example of code that shows how the pivot information could be setup before calling ConvertPivotAnimationRecursive(). - * \code - * FbxVector4 lZero(0,0,0); - * FbxVector4 lOne(1,1,1); - * pNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - * pNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - * - * EFbxRotationOrder lRotationOrder; - * pNode->GetRotationOrder(FbxNode::eSourcePivot , lRotationOrder); - * pNode->SetRotationOrder(FbxNode::eDestinationPivot , lRotationOrder); - * - * //For cameras and lights (without targets) let's compensate the postrotation. - * if( pNode->GetCamera() || pNode->GetLight() ) - * { - * if( !pNode->GetTarget() ) - * { - * FbxVector4 lRV(90, 0, 0); - * if( pNode->GetCamera() ) - * lRV.Set(0, 90, 0); - * - * FbxVector4 prV = pNode->GetPostRotation(FbxNode::eSourcePivot); - * FbxAMatrix lSourceR; - * FbxAMatrix lR(lZero, lRV, lOne); - * FbxVector4 res = prV; - * - * // Rotation order don't affect post rotation, so just use the default XYZ order - * FbxRotationOrder rOrder; - * rOrder.V2M(lSourceR, res); - * - * lR = lSourceR * lR; - * rOrder.M2V(res, lR); - * prV = res; - * pNode->SetPostRotation(FbxNode::eSourcePivot, prV); - * pNode->SetRotationActive(true); - * } - * - * // Point light do not need to be adjusted (since they radiate in all the directions). - * if( pNode->GetLight() && pNode->GetLight()->LightType.Get() == FbxLight::ePoint ) - * { - * pNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0,0,0,0)); - * } - * } - * // apply Pre rotations only on bones / end of chains - * if( pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorFK) - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorIK) ) - * { - * if( pNode->GetRotationActive() ) - * { - * pNode->SetPreRotation(FbxNode::eDestinationPivot, pNode->GetPreRotation(FbxNode::eSourcePivot)); - * } - * - * // No pivots on bones - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetRotationOffset(FbxNode::eDestinationPivot,lZero); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, lZero); - * } - * else - * { - * // any other type: no pre-rotation support but... - * pNode->SetPreRotation(FbxNode::eDestinationPivot, lZero); - * - * // support for rotation and scaling pivots. - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, pNode->GetRotationPivot(FbxNode::eSourcePivot)); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, pNode->GetScalingPivot(FbxNode::eSourcePivot)); - * // Rotation and scaling offset are supported - * pNode->SetRotationOffset(FbxNode::eDestinationPivot, pNode->GetRotationOffset(FbxNode::eSourcePivot)); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, pNode->GetScalingOffset(FbxNode::eSourcePivot)); - * // - * // If we don't "support" scaling pivots, we can simply do: - * // pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * // pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * } - * \endcode - * - */ - //@{ - /** \enum EPivotSet Pivot context identifier. - */ - enum EPivotSet - { - eSourcePivot, //!< The source pivot context. - eDestinationPivot //!< The destination pivot context. - }; - - /** \enum EPivotState Pivot context state. - */ - enum EPivotState - { - ePivotActive, //!< The pivot context with this state is affecting the node's transform computation. - ePivotReference //!< The pivot context with this state is not used during the node transform computation but can be accessed for reference purposes. - }; - - /** Change the state of the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pPivotState The new state of the pivot context. - */ - void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState); - - /** Get the pivot context state. - * The returned value tells if this pivot context is used in the - * evaluation of the node transform or not. - * \param pPivotSet Specify which pivot context is queried. - * \param pPivotState The current state of the pivot set. - */ - void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const; - - /** Set rotation space - * Determine the rotation space (Euler or Spheric) and the rotation order. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pRotationOrder The new value for the pivot rotation order. - */ - void SetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder pRotationOrder); - - /** Get rotation order - * \param pPivotSet Specify which pivot context is queried. - * \param pRotationOrder The current value of the pivot rotation order. - */ - void GetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder& pRotationOrder) const; - - /** Set rotation space for limit only. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pUseForLimitOnly When set to \c true, the current rotation space - * (set with SetRotationOrder) define the rotation space for - * the limit only; leaving the rotation animation in - * Euler XYZ space. When set to \c false, the current rotation - * space defines the rotation space for both the limits and the - * rotation animation data. - */ - void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly); - - /** Get rotation space for limit only. - * \param pPivotSet Specify which pivot context is queried. - * \return The current rotation space limit flag value. - */ - bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const; - - /** Set the RotationActive state. - * \param pVal The new state of the property. - * \remarks When this flag is set to false, the RotationOrder, the Pre/Post rotation values - * and the rotation limits should be ignored. - */ - void SetRotationActive(bool pVal); - - /** Get the RotationActive state. - * \return The value of the RotationActive flag. - */ - bool GetRotationActive() const; - - /** Specify which Quaternion interpolation mode is used on the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pQuatIterp The new value. - * \remarks When the \e pPivotSet is eSourcePivot, this method also updates the value of the - * QuaternionInterpolate property. - */ - void SetQuaternionInterpolation(EPivotSet pPivotSet, EFbxQuatInterpMode pQuatIterp); - - /** Get the Quaternion interpolation mode of the pivot context. - * \param pPivotSet Specify which pivot context is queried. - * \return The current mode set on the pivot context. - */ - EFbxQuatInterpMode GetQuaternionInterpolation(EPivotSet pPivotSet) const; - - /** Set the rotation stiffness. - * The stiffness attribute is used by IK solvers to generate a resistance - * to a joint motion. The higher the stiffness the less it will rotate. - * Stiffness works in a relative sense: it determines the willingness of - * this joint to rotate with respect to the other joint in the IK chain. - * \param pRotationStiffness The rotation stiffness values are limited to - * the range [0, 100]. - */ - void SetRotationStiffness(FbxVector4 pRotationStiffness); - - /** Get the rotation stiffness - * \return The currently set rotation stiffness values. - */ - FbxVector4 GetRotationStiffness() const; - - /** Set the minimum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampRange specifies when the - * deceleration should start. - * \param pMinDampRange Angle, in degrees, where deceleration should start - */ - void SetMinDampRange(FbxVector4 pMinDampRange); - - /** Get the minimum damp range angles - * \return The currently set minimum damp range angles. - */ - FbxVector4 GetMinDampRange() const; - - /** Set the maximum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampRange specifies when the - * deceleration should start. - * \param pMaxDampRange Angle, in degrees, where deceleration should start - */ - void SetMaxDampRange(FbxVector4 pMaxDampRange); - - /** Get the maximum damp range angles - * \return The currently set maximum damp range angles. - */ - FbxVector4 GetMaxDampRange() const; - - /** Set the minimum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampStrength defines the - * rate of deceleration. - * \param pMinDampStrength Values are limited to the range [0, 100]. - */ - void SetMinDampStrength(FbxVector4 pMinDampStrength); - - /** Get the minimum damp strength - * \return The currently set minimum damp strength values. - */ - FbxVector4 GetMinDampStrength() const; - - /** Set the maximum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampStrength defines the - * rate of deceleration. - * \param pMaxDampStrength Values are limited to the range [0, 100]. - */ - void SetMaxDampStrength(FbxVector4 pMaxDampStrength); - - /** Get the maximum damp strength - * \return The currently set maximum damp strength values. - */ - FbxVector4 GetMaxDampStrength() const; - - /** Set the preferred angle. - * The preferredAngle attribute defines the initial joint configuration used - * by a single chain IK solver to calculate the inverse kinematic solution. - * \param pPreferedAngle Angle in degrees - */ - void SetPreferedAngle(FbxVector4 pPreferedAngle); - - /** Get the preferred angle - * \return The currently set preferred angle. - */ - FbxVector4 GetPreferedAngle() const; - - /** Set a translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationOffset(EPivotSet pPivotSet) const; - - /** Set rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the rotation pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationPivot(EPivotSet pPivotSet) const; - - /** Set pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPreRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPreRotation(EPivotSet pPivotSet) const; - - /** Set post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPostRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPostRotation(EPivotSet pPivotSet) const; - - /** Set a translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingOffset(EPivotSet pPivotSet) const; - - /** Set scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the scaling pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingPivot(EPivotSet pPivotSet) const; - - /** Set geometric translation - * The geometric translation is a local translation that is applied - * to a node attribute only. This translation is applied to the node attribute - * after the node transformations. This translation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X, Y, and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricTranslation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric translation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric translation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const; - - /** Set geometric rotation - * The geometric rotation is a local rotation that is applied - * to a node attribute only. This rotation is applied to the node attribute - * after the node transformations. This rotation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z rotation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric rotation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric rotation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const; - - /** Set geometric scaling - * The geometric scaling is a local scaling that is applied - * to a node attribute only. This scaling is applied to the node attribute - * after the node transformations. This scaling is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z scale values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricScaling(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric scaling - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric scaling (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const; - - /** Reset a pivot set to the default pivot context. - * If the node has a geometry, reset the geometry's pivot to the identity matrix. - * \param pPivotSet Pivot set to reset. - * \remarks The default pivot context is a context with all the vector attributes - * set to (0,0,0) except the GeometricScaling attribute that is reset to (1,1,1). - */ - void ResetPivotSet( FbxNode::EPivotSet pPivotSet ); - - /** Fully supports all the attributes defined in the pivot sets and can process animation data defined on different animation - * stacks. - * \param pAnimStack The animation stack on which the conversion will take place. If equals \c NULL, convert the animation on all the animation stacks. - * \param pConversionTarget If set to EPivotSet::eDestinationPivot, - * convert animation data from the EPivotSet::eSourcePivot pivot context - * to the EPivotSet::eDestinationPivot pivot context. Otherwise, the - * conversion is computed the other way around. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \remarks Due to the intrinsic properties of the mathematical operations performed, - * sometimes, it is necessary to resample animation curves to maintain the accurate - * conversion. When this resampling is required, the method will use the \e pFrameRate - * value to specify the number of samples. To avoid a huge number of keys in the animation - * curves, a constant key reducer filter (FbxKFCurveFilterConstantKeyReducer) is - * automatically applied to all the affected curves to remove as much consecutive keys - * that have the same value. This filter is private and its settings cannot be changed. - * It is possible that, after the filtering pass, the animations curves do not contain keys - * anymore. This is a normal result and does not affect the overall results. - * \note Although it is possible to call this method several times with a different - * AnimStack name, users must be aware that some pivot computation can irreversibly - * modify the geometric nodes with a cumulative effect of the \e GeometricTranslation, - * \e GeometricRotation and \e GeometricScaling which will produce undesirable results. It is recommended - * to call ConvertPivotAnimationRecursive with \p pAnimStackName = NULL and let the method convert - * the animation on all the Anim stacks at once. - * In the case when there are no geometric nodes in the scene tree, specifying the animation stack - * is safe and somewhat faster. - * If any transform limits are active, they are applied during the conversion and disabled. - */ - void ConvertPivotAnimationRecursive(FbxAnimStack* pAnimStack, EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true); - - /** Reset all the pivot sets to the default pivot context and convert the animation. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \param pToNodeCenter: Reset pivots to node center if \c true, or retain pivot places if \c false. - * \param pForceResetLimits If \c true, this flag will reset all the Translation, Rotation and Scaling - * limits and clears the enabled flags. - * \remarks The resulting animation will be visually equivalent and all the pivots will be cleared. - * The conversion is performed on all animation stacks. - * \remarks Will recursively convert the animation of all the children nodes. - * \remarks The \e pForceResetLimits flag has a destructive behavior and should be used only in very - * limited cases where the values of the limits are not required after the call to this method. - * \remarks Currently, this function just works under RSrs inherit type if pToNodeCenter is set to \c false. - */ - void ResetPivotSetAndConvertAnimation(double pFrameRate=30.0, bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits=false); - - /** Set rotation pivot as node center recursively - * \param pParentGeometricOffset Offset vector to be applied. - */ - void SetRotationPivotAsCenterRecursive(FbxVector4 pParentGeometricOffset=FbxVector4()); - //@} - - /** - * \name Node Evaluation Functions - */ - //@{ - /** Retrieve the proper animation evaluator to use for this node. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Returns this node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeGlobalTransform(). - */ - FbxAMatrix& EvaluateGlobalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). - * This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTransform(). - */ - FbxAMatrix& EvaluateLocalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTranslation(). - */ - FbxVector4& EvaluateLocalTranslation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalRotation(). - */ - FbxVector4& EvaluateLocalRotation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalScaling(). - */ - FbxVector4& EvaluateLocalScaling(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Compute the node's bounding box and its center in global coordinates. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool EvaluateGlobalBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Compute closest ray intersection point with mesh attributes of this node (triangle meshes only!). - * \param pOut The closest intersection point from pRayOrigin location in pRayDir direction. Variable is unchanged if return value is \c false. - * \param pRayOrigin The origin location to cast the ray from. - * \param pRayDir The direction the cast ray to test mesh triangles from. - * \param pCulling If \c true, only test triangles that are front facing, otherwise test both sides. - * \param pTime The time to use to evaluate mesh deformations. - * \return \c true if a triangle intersect with the ray, otherwise \c false. - * \remark This function will automatically fail if the node's meshes are not triangulated. */ - bool EvaluateRayIntersectionPoint(FbxVector4& pOut, const FbxVector4& pRayOrigin, const FbxVector4& pRayDir, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - - /** - * \name Character Link - */ - //@{ - /** Get number of character links. - * \return The number of character links. - */ - int GetCharacterLinkCount() const; - - /** Get character link at given index. - * \param pIndex Index of character link. - * \param pCharacter Pointer to receive linked character if function succeeds. - * \param pCharacterLinkType Pointer to receive character link type if function succeeds, - * cast to \c FbxCharacterLink::Type. - * \param pNodeId Pointer to receive the node ID if function succeeds. This ID should be casted - * to \c FbxCharacter::ENodeId type when the character link type is \c eCharacterLink or - * \c eControlSetLink else to the \c FbxEffector::ENodeId type if the character link type is - * \c eControlSetEffector or \c eControlSetEffectorAux. - * \param pNodeSubId For internal use. - * \return \c false if the index is out of range or any of the pointer arguments is NULL. - */ - bool GetCharacterLink(int pIndex, FbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int* pNodeSubId); - - /** Looks if the given character link exists on this node. - * \param pCharacter Character searched. - * \param pCharacterLinkType Character link type searched. Its value must be one of - * the \c FbxCharacterLink::Type symbols.. - * \param pNodeId Node ID searched. If \e pCharacterLinkType is \c eCharacterLink or \c eControlSetLink - * the \e pNodeId value is casted to the \c FbxCharacter::ENodeId type. If the \e pCharacterLinkType - * is \c eControlSetEffector or \c eControlSetEffectorAux then the \e pNodeId is casted to the - * \c FbxEffector::ENodeId type. - * \param pNodeSubId For internal use. - * \return Index of found character link if it exists, -1 otherwise. - */ - int FindCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const; - //@} - - /** Find out start and end time of the animation curves for this node (and its children). - * \param pInterval This node's animation interval. - * \param pAnimStack Animation stack where to retrieve animation curves. - * \param pAnimLayerId Specific animation layer on the animStack to use. - * \return \c true if the node (or its children) is animated, \c false otherwise. - * \remarks If pAnimStack is left NULL, the function will try to get the first AnimStack that is connected - * to the scene. \e pAnimLayerId represent the index of the connection. For example, the call: - * \code - * lNode->GetAnimationInterval(span, myStack, 3); - * \endcode - * will scan all the animation curves of this node, and it's children, that are defined on the third - * animation layer of \c myStack. - */ - bool GetAnimationInterval(FbxTimeSpan& pInterval, FbxAnimStack* pAnimStack=NULL, int pAnimLayerId=0); - - /** - * \name Material Management - */ - //@{ - /** Add a material to this node. - * \param pMaterial The material to add. - * \return non-negative index of added material, or -1 on error. - */ - int AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove a material from this node. - * \param pMaterial The material to remove. - * \return true on success, false otherwise - */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - - /** - * \return The number of materials applied to this node. - * \remarks If this node has an instanced node attribute, it is possible - * to have a material applied to this node more than once. The material - * count may not reflect the distinct material count. - */ - int GetMaterialCount() const; - - /** Access a material on this node. - * \param pIndex Valid range is [0, GetMaterialCount() - 1] - * \return The pIndex-th material, or NULL if pIndex is invalid. - */ - FbxSurfaceMaterial* GetMaterial(int pIndex) const; - - /** Remove all materials applied to this node. - */ - void RemoveAllMaterials(); - - /** Find an applied material with the given name. - * \param pName The requested name - * \return an index to a material, or -1 if no applied material - * has the requested name. - */ - int GetMaterialIndex(const char* pName) const; - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the translation information of the node - * - * To access this property do: LclTranslation.Get(). - * To set this property do: LclTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclTranslation; - - /** This property contains the rotation information of the node - * - * To access this property do: LclRotation.Get(). - * To set this property do: LclRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclRotation; - - /** This property contains the scaling information of the node - * - * To access this property do: LclScaling.Get(). - * To set this property do: LclScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT LclScaling; - - /** This property contains the visibility information of the node. - * The assumed behavior of this property is to affect the visibility of the node, all the - * nodes attributes connected to it as well as all its descendants. This property can be - * animated. - * - * To access this property do: Visibility.Get(). - * To set this property do: Visibility.Set(FbxDouble). - * - * Default value is 1. - * \remarks \li This property holds values ranging from 0.0 to 1.0 where the value 0.0 means - * a totally invisible object, the value 1.0, a full visible object and anything inbetween, a - * percentage degree of visibility.\n - * - * \li Since not all the applications may support a degree of visibility, it is agreed that - * a value of 0.0 means invisible and anything else means visible. - * - * \see Show property. - */ - FbxPropertyT Visibility; - - /** This property contains the visibility inheritance flag that allow applications to modify - * the Visibility property interpretation. By default, this value is set to \c true because it is - * assumed (as explained in the Visibility property description) that the node visibility is inherited - * from its parent. In other words, applications should always process the Visibility property of the - * node and, depending on its value, decide whether or not the node has to be displayed. After - * this first assessment, check the node VisibilityInheritance flag. If its value is set to \c false then - * move to the next object, else use the parent's Visibility value and modify this node display state - * by performing the logical AND operation between this node Visibility property and its parent's. - * - * To access this property do: VisibilityInheritance.Get(). - * To set this property do: VisibilityInheritance.Set(FbxBool). - * - * Default value is \c true. - * \remarks This property is non-animatable and is not used inside the FBX SDK but it is guaranteed - * to exist in FBX files with version 7.2 and above. - * \see Visibility property. - */ - FbxPropertyT VisibilityInheritance; - - - /** This property contains the quaternion interpolate flag of the node - * - * To access this property do: QuaternionInterpolate.Get(). - * To set this property do: QuaternionInterpolate.Set(EFbxQuatInterpMode). - * - * Default value is eQuatInterpOff. - */ - FbxPropertyT QuaternionInterpolate; - - /** This property contains the rotation offset information of the node - * - * To access this property do: RotationOffset.Get(). - * To set this property do: RotationOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationOffset; - - /** This property contains the rotation pivot information of the node - * - * To access this property do: RotationPivot.Get(). - * To set this property do: RotationPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationPivot; - - /** This property contains the scaling offset information of the node - * - * To access this property do: ScalingOffset.Get(). - * To set this property do: ScalingOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingOffset; - - /** This property contains the scaling pivot information of the node - * - * To access this property do: ScalingPivot.Get(). - * To set this property do: ScalingPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingPivot; - - /** This property enables or disables the limit on translation. - * When set to \c false the object can translate in any direction without limitations. - * Else the - * \ref TranslationMinX, \ref TranslationMinY, \ref TranslationMinZ, - * \ref TranslationMaxX, \ref TranslationMaxY and \ref TranslationMaxZ flags are used to - * limit the translation on each individual axis. - * - * To access this property do: TranslationActive.Get(). - * To set this property do: TranslationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationActive; - - /** This property sets the minimum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMin.Get(). - * To set this property do: TranslationMin.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMin; - - /** This property sets the maximum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMax.Get(). - * To set this property do: TranslationMax.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMax; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinX.Get(). - * To set this property do: TranslationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinY.Get(). - * To set this property do: TranslationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinY; - - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinZ.Get(). - * To set this property do: TranslationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinZ; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxX.Get(). - * To set this property do: TranslationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxY.Get(). - * To set this property do: TranslationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxY; - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxZ.Get(). - * To set this property do: TranslationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxZ; - - /** This property contains the rotation order information of the node - * - * To access this property do: RotationOrder.Get(). - * To set this property do: RotationOrder.Set(EFbxRotationOrder). - * Default value is eEulerXYZ. - * - */ - FbxPropertyT RotationOrder; - - /** This property contains the rotation space for limit only flag of the node. - * When set to \c true, the Rotation space is applied only on the limit data (provided the \ref RotationActive is - * also \c true). - * - * To access this property do: RotationSpaceForLimitOnly.Get(). - * To set this property do: RotationSpaceForLimitOnly.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationSpaceForLimitOnly; - - /** This property contains the x value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessX.Get(). - * To set this property do: RotationStiffnessX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessX; - - /** This property contains the y value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessY.Get(). - * To set this property do: RotationStiffnessY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessY; - - /** This property contains the z value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessZ.Get(). - * To set this property do: RotationStiffnessZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessZ; - - /** This property contains axis length information of the node - * - * To access this property do: AxisLen.Get(). - * To set this property do: AxisLen.Set(FbxDouble). - * - * Default value is 10. - */ - FbxPropertyT AxisLen; - - /** This property contains pre-rotation information of the node - * - * To access this property do: PreRotation.Get(). - * To set this property do: PreRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PreRotation; - - /** This property contains post-rotation information of the node - * - * To access this property do: PostRotation.Get(). - * To set this property do: PostRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PostRotation; - - /** This property enables or disables the limit on rotation. - * When set to \c false the object can rotate in any direction without limitations. - * Else the - * \ref RotationMinX, \ref RotationMinY, \ref RotationMinZ, - * \ref RotationMaxX, \ref RotationMaxY and \ref RotationMaxZ flags are used to - * limit the rotation on each individual axis. - * \remarks The PreRotation value is applied before the limit, while the PostRotation is applied - * after the limit. - * - * To access this property do: RotationActive.Get(). - * To set this property do: RotationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationActive; - - /** This property sets the minimum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMin.Get(). - * To set this property do: RotationMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMin; - - /** This property sets the maximum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMax.Get(). - * To set this property do: RotationMax.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMax; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinX.Get(). - * To set this property do: RotationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinY.Get(). - * To set this property do: RotationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinZ.Get(). - * To set this property do: RotationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinZ; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxX.Get(). - * To set this property do: RotationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxY.Get(). - * To set this property do: RotationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxZ.Get(). - * To set this property do: RotationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxZ; - - /** This property contains inherit type information of the node - * - * To access this property do: InheritType.Get(). - * To set this property do: InheritType.Set(FbxTransform::EInheritType). - * - * Default value is eInheritRrSs. - */ - FbxPropertyT InheritType; - - /** This property enables or disables the limit on scaling. - * When set to \c false the object can scale in any direction without limitations. - * Else the - * \ref ScalingMinX, \ref ScalingMinY, \ref ScalingMinZ, - * \ref ScalingMaxX, \ref ScalingMaxY and \ref ScalingMaxZ flags are used to - * limit the scaling on each individual axis. - * - * To access this property do: ScalingActive.Get(). - * To set this property do: ScalingActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingActive; - - /** This property sets the minimum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMin.Get(). - * To set this property do: ScalingMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingMin; - - /** This property sets the maximum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMax.Get(). - * To set this property do: ScalingMax.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT ScalingMax; - - /** This property activates or disables the limit on scaling X. When active, the object scaling - * is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinX.Get(). - * To set this property do: ScalingMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinY.Get(). - * To set this property do: ScalingMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinZ.Get(). - * To set this property do: ScalingMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinZ; - - /** This property enables or disables the limit on scaling X. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxX.Get(). - * To set this property do: ScalingMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxY.Get(). - * To set this property do: ScalingMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxZ.Get(). - * To set this property do: ScalingMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxZ; - - /** This property contains geometric translation information of the node - * - * To access this property do: GeometricTranslation.Get(). - * To set this property do: GeometricTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricTranslation; - - /** This property contains geometric rotation information of the node - * - * To access this property do: GeometricRotation.Get(). - * To set this property do: GeometricRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricRotation; - - /** This property contains geometric scaling information of the node - * - * To access this property do: GeometricScaling.Get(). - * To set this property do: GeometricScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT GeometricScaling; - - // IK Settings - ////////////////////////////////////////////////////////// - - /** This property contains the x component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeX.Get(). - * To set this property do: MinDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeX; - - /** This property contains the y component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeY.Get(). - * To set this property do: MinDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeY; - - /** This property contains the z component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeZ.Get(). - * To set this property do: MinDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeZ; - - /** This property contains the x component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeX.Get(). - * To set this property do: MaxDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeX; - - /** This property contains the y component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeY.Get(). - * To set this property do: MaxDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeY; - - /** This property contains the z component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeZ.Get(). - * To set this property do: MaxDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeZ; - - /** This property contains the x component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthX.Get(). - * To set this property do: MinDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthX; - - /** This property contains the y component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthY.Get(). - * To set this property do: MinDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthY; - - /** This property contains the z component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthZ.Get(). - * To set this property do: MinDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthZ; - - /** This property contains the x component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthX.Get(). - * To set this property do: MaxDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthX; - - /** This property contains the y component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthY.Get(). - * To set this property do: MaxDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthY; - - /** This property contains the z component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthZ.Get(). - * To set this property do: MaxDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthZ; - - /** This property contains the x component of the preferred angle of the node - * - * To access this property do: PreferedAngleX.Get(). - * To set this property do: PreferedAngleX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleX; - - /** This property contains the y component of the preferred angle of the node - * - * To access this property do: PreferedAngleY.Get(). - * To set this property do: PreferedAngleY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleY; - - /** This property contains the z component of the preferred angle of the node - * - * To access this property do: PreferedAngleZ.Get(). - * To set this property do: PreferedAngleZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleZ; - - /////////////////////////////////////////////////////// - - /** This property contains lookat property of the node - * - * To access this property do: LookAtProperty.Get(). - * To set this property do: LookAtProperty.Set(FbxReference). - * - */ - FbxPropertyT LookAtProperty; - - /** This property contains the up vector property of the node - * - * To access this property do: UpVectorProperty.Get(). - * To set this property do: UpVectorProperty.Set(FbxReference). - * - */ - FbxPropertyT UpVectorProperty; - - /** This property contains the show information of the node. - * As opposed to the Visibility property, this one cannot be animated. The assumed behavior of - * this property is to represent the show/hide state of all the nodes attributes connected to this - * node only. - * - * To access this property do: Show.Get(). - * To set this property do: Show.Set(FbxBool). - * - * Default value is true. - * - * \remarks \li Because node attributes can be shared by multiple nodes (instances), the FBX SDK provides an utility - * function FbxScene::SyncShowPropertyForInstance() to propagates the same Show value across all the nodes - * referencing the node attribute. The applied logic is that as soon as one of these nodes has the Show - * property set to \c false, all will be set to \c false (basically it is an AND operation on all the - * Show flags). - * - * \li Depending on the support of the Show and Visibility properties that applications will implement, there - * may be conflicts with these two states. In this case, it is suggested that the Visibility property - * always overrides the Show. - * - * \see Visibility property. - */ - FbxPropertyT Show; - - /** This property contains negative percent shape support information of the node - * - * To access this property do: NegativePercentShapeSupport.Get(). - * To set this property do: NegativePercentShapeSupport.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT NegativePercentShapeSupport; - - /** This property contains default attribute index information of the node - * - * To access this property do: DefaultAttributeIndex.Get(). - * To set this property do: DefaultAttributeIndex.Set(FbxInt). - * - * Default value is -1. - */ - FbxPropertyT DefaultAttributeIndex; - - /** This property contains manipulation state information of the node - * - * To access this property do: Freeze.Get(). - * To set this property do: Freeze.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Freeze; - - /** This property contains level of detail mode information of the node - * - * To access this property do: LODBox.Get(). - * To set this property do: LODBox.Set(FbxBool). - * - * True: Bounding box - * False: Geometry object is displayed. - * Default value is false. - */ - FbxPropertyT LODBox; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - class FBXSDK_DLL Pivot - { - public: - static const FbxVector4 sZeroVector; - static const FbxVector4 sOneVector; - - Pivot() - { - mRotationOffset = NULL; - mRotationPivot = NULL; - mPreRotation = NULL; - mPostRotation = NULL; - mScalingOffset = NULL; - mScalingPivot = NULL; - mGeometricTranslation = NULL; - mGeometricRotation = NULL; - mGeometricScaling = NULL; - Reset(); - } - ~Pivot() { Reset(); } - - void Reset() - { - FBX_SAFE_DELETE(mRotationOffset); - FBX_SAFE_DELETE(mRotationPivot); - FBX_SAFE_DELETE(mPreRotation); - FBX_SAFE_DELETE(mPostRotation); - FBX_SAFE_DELETE(mScalingOffset); - FBX_SAFE_DELETE(mScalingPivot); - FBX_SAFE_DELETE(mGeometricTranslation); - FBX_SAFE_DELETE(mGeometricRotation); - FBX_SAFE_DELETE(mGeometricScaling); - mRotationOrder = eEulerXYZ; - mRotationSpaceForLimitOnly = false; - mPivotState = FbxNode::ePivotReference; - mQuaternionInterpolate = eQuatInterpOff; - } - - inline const FbxVector4& GetRotationOffset() const { return (mRotationOffset) ? *mRotationOffset : sZeroVector; } - inline void SetRotationOffset(const FbxVector4& pV) - { - if( !mRotationOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationOffset = pV; - } - } - - inline const FbxVector4& GetRotationPivot() const { return (mRotationPivot) ? *mRotationPivot : sZeroVector; } - inline void SetRotationPivot(const FbxVector4& pV) - { - if( !mRotationPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationPivot = pV; - } - } - - inline const FbxVector4& GetPreRotation() const { return (mPreRotation) ? *mPreRotation : sZeroVector; } - inline void SetPreRotation(const FbxVector4& pV) - { - if( !mPreRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPreRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPreRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPreRotation = pV; - } - } - - inline const FbxVector4& GetPostRotation() const { return (mPostRotation) ? *mPostRotation : sZeroVector; } - inline void SetPostRotation(const FbxVector4& pV) - { - if( !mPostRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPostRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPostRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPostRotation = pV; - } - } - - inline const FbxVector4& GetScalingOffset() const { return (mScalingOffset) ? *mScalingOffset : sZeroVector; } - inline void SetScalingOffset(const FbxVector4& pV) - { - if( !mScalingOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingOffset = pV; - } - } - - inline const FbxVector4& GetScalingPivot() const { return (mScalingPivot) ? *mScalingPivot : sZeroVector; } - inline void SetScalingPivot(const FbxVector4& pV) - { - if( !mScalingPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingPivot = pV; - } - } - - inline const FbxVector4& GetGeometricTranslation() const { return (mGeometricTranslation) ? *mGeometricTranslation : sZeroVector; } - inline void SetGeometricTranslation(const FbxVector4& pV) - { - if( !mGeometricTranslation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricTranslation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricTranslation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricTranslation = pV; - } - } - - inline const FbxVector4& GetGeometricRotation() const { return (mGeometricRotation) ? *mGeometricRotation : sZeroVector; } - inline void SetGeometricRotation(const FbxVector4& pV) - { - if( !mGeometricRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricRotation = pV; - } - } - - inline const FbxVector4& GetGeometricScaling() const { return (mGeometricScaling) ? *mGeometricScaling : sOneVector; } - inline void SetGeometricScaling(const FbxVector4& pV) - { - if( !mGeometricScaling ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricScaling = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricScaling = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricScaling = pV; - } - } - - inline EFbxRotationOrder GetRotationOrder() const { return mRotationOrder; } - inline void SetRotationOrder(EFbxRotationOrder pROrder) { mRotationOrder = pROrder; } - inline bool GetRotationSpaceForLimitOnly() const { return mRotationSpaceForLimitOnly; } - inline void SetRotationSpaceForLimitOnly(bool pVal) { mRotationSpaceForLimitOnly = pVal; } - inline EFbxQuatInterpMode GetQuaternionInterpolate() const { return mQuaternionInterpolate; } - inline void SetQuaternionInterpolate(EFbxQuatInterpMode pVal) { mQuaternionInterpolate = pVal; } - inline FbxNode::EPivotState GetPivotState() const { return mPivotState; } - inline void SetPivotState(FbxNode::EPivotState pVal) { mPivotState = pVal; } - - private: - FbxVector4* mRotationOffset; - FbxVector4* mRotationPivot; - FbxVector4* mPreRotation; - FbxVector4* mPostRotation; - FbxVector4* mScalingOffset; - FbxVector4* mScalingPivot; - FbxVector4* mGeometricTranslation; - FbxVector4* mGeometricRotation; - FbxVector4* mGeometricScaling; - EFbxRotationOrder mRotationOrder; - bool mRotationSpaceForLimitOnly; - EFbxQuatInterpMode mQuaternionInterpolate; - FbxNode::EPivotState mPivotState; - }; - - class FBXSDK_DLL Pivots - { - public: - Pivots() - { - for( int i = 0; i < 2; i++ ) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - mPivot[i] = NULL; - } - } - - ~Pivots() - { - FbxDelete(mPivot[0]); - FbxDelete(mPivot[1]); - } - - Pivot& Get(int id) - { - FBX_ASSERT(id == 0 || id == 1); - if (mPivot[id] == NULL && mIsDefault[id]) - { - smDefaultPivot.SetPivotState(mPivotState[id]); - return smDefaultPivot; - } - - if (!mPivot[id]) - mPivot[id] = FbxNew< Pivot >(); - - FBX_ASSERT(mPivot[id] != NULL); - if (mPivot[id]) - mPivot[id]->SetPivotState(mPivotState[id]); - - return *mPivot[id]; - } - - #define MACRO_PIVOT_VECTOR_FCTS(name, defVect) \ - inline const FbxVector4& Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, const FbxVector4& pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - if (mIsDefault[id] && pV[0] == defVect[0] && pV[1] == defVect[1] && pV[2] == defVect[2]) return; \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_VECTOR_FCTS(RotationOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(RotationPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PreRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PostRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricTranslation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricScaling, Pivot::sOneVector); - - #define MACRO_PIVOT_BOOL_FCTS(name) \ - inline bool Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, bool pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_BOOL_FCTS(RotationSpaceForLimitOnly); - - inline EFbxQuatInterpMode GetQuaternionInterpolate(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetQuaternionInterpolate(); - } - - inline void SetQuaternionInterpolate(int id, EFbxQuatInterpMode pV) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default eQuatInterpOff, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pV == eQuatInterpOff) return; - mIsDefault[id] = false; - Get(id).SetQuaternionInterpolate(pV); - } - - inline EFbxRotationOrder GetRotationOrder(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetRotationOrder(); - } - - inline void SetRotationOrder(int id, EFbxRotationOrder pROrder) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default rotation order eEulerXYZ, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pROrder == eEulerXYZ) return; - mIsDefault[id] = false; - Get(id).SetRotationOrder(pROrder); - } - - inline FbxNode::EPivotState GetPivotState(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - return mPivotState[id]; - } - - inline void SetPivotState(int id, FbxNode::EPivotState pVal) - { - FBX_ASSERT(id == 0 || id == 1); - if (pVal == FbxNode::ePivotReference) return; - mPivotState[id] = pVal; - if (mPivot[id]) - mPivot[id]->SetPivotState(pVal); - } - - #undef MACRO_PIVOT_VECTOR_FCTS - #undef MACRO_PIVOT_BOOL_FCTS - - void Reset() - { - smDefaultPivot.Reset(); - for (int i = 0; i < 2; i++) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - if (mPivot[i]) mPivot[i]->Reset(); - } - } - - private: - Pivot* mPivot[2]; - FbxNode::EPivotState mPivotState[2]; - bool mIsDefault[2]; - static Pivot smDefaultPivot; - }; - - class FBXSDK_DLL LinkToCharacter - { - public: - bool operator==(LinkToCharacter& pLinkToCharacter) - { - if (mCharacter == pLinkToCharacter.mCharacter && - mType == pLinkToCharacter.mType && - mIndex == pLinkToCharacter.mIndex && - mSubIndex == pLinkToCharacter.mSubIndex) - { - return true; - } - else return false; - } - - FbxCharacter* mCharacter; - int mType; - int mIndex; - int mSubIndex; - }; - - void AddChildName(const char* pChildName); - char* GetChildName(FbxUInt pIndex) const; - FbxUInt GetChildNameCount() const; - - FbxTransform& GetTransform(); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - Pivots& GetPivots(); - - void UpdatePivotsAndLimitsFromProperties(); - void UpdatePropertiesFromPivotsAndLimits(); - - void SetRotationActiveProperty(bool pVal); - void PivotSetToMBTransform(EPivotSet pPivotSet); - - int AddCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - int RemoveCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - - // Duplicate this node as well as all its node attributes and the Target and UpTarget objects. - FbxNode* DeepCloneWithNodeAttributes(); - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - enum ECullingType - { - eCullingOff, - eCullingOnCCW, - eCullingOnCW - }; - - ECullingType mCullingType; - bool mCorrectInheritType; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - void Reset(); - bool GetAnimationIntervalRecursive(FbxTimeSpan& pTimeInterval, FbxAnimLayer* pAnimLayer); - -private: - typedef FbxSet GeomInstSet; - - void ResetLimitsRecursive(FbxNode* pNode); - - void ConvertPivotAnimationRecurseLoop(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - bool ConvertPivotAnimation_SetupMatrixConverter(FbxAnimCurveFilterMatrixConverter& pConverter, const EPivotSet& pSrcSet, const EPivotSet& pDstSet, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation_ApplyGeometryPivot(const EPivotSet& pSrcSet, const EPivotSet& pDstSet, GeomInstSet& pGeomInstSet); - - FbxTransform mTransform; - Pivots mPivots; - FbxObject* mAnimCurveNodeContainer; - FbxArray mChildrenNameList; - FbxVector4 mPostTargetRotation; - FbxVector4 mTargetUpVector; - FbxNode::EShadingMode mShadingMode; - FbxArray mLinkToCharacter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const EFbxRotationOrder&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTransform::EInheritType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const EFbxQuatInterpMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h deleted file mode 100644 index 5566769..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnodeattribute.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** \brief This class is the base class to all types of node attributes. - * \nosubgrouping - * A node attribute is the content of a node. A \c NULL node attribute is set - * by calling function FbxNode::SetNodeAttribute() with a \c NULL pointer. - */ -class FBXSDK_DLL FbxNodeAttribute : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNodeAttribute, FbxObject); - -public: - //! Property Names - static const char* sColor; - - //! Property Default Values - static const FbxDouble3 sDefaultColor; - - /** This property handles the color. - * - * Default value is (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** \enum EType Node attribute types. - * - \e eUnknown - * - \e eNull - * - \e eMarker - * - \e eSkeleton - * - \e eMesh - * - \e eNurbs - * - \e ePatch - * - \e eCamera - * - \e eCameraStereo, - * - \e eCameraSwitcher - * - \e eLight - * - \e eOpticalReference - * - \e eOpticalMarker - * - \e eNurbsCurve - * - \e eTrimNurbsSurface - * - \e eBoundary - * - \e eNurbsSurface - * - \e eShape - * - \e eLODGroup - * - \e eSubDiv - * - \e eCachedEffect - * - \e eLine - */ - enum EType - { - eUnknown, - eNull, - eMarker, - eSkeleton, - eMesh, - eNurbs, - ePatch, - eCamera, - eCameraStereo, - eCameraSwitcher, - eLight, - eOpticalReference, - eOpticalMarker, - eNurbsCurve, - eTrimNurbsSurface, - eBoundary, - eNurbsSurface, - eShape, - eLODGroup, - eSubDiv, - eCachedEffect, - eLine - }; - - /** Return the type of node attribute. - * This class is pure virtual. - */ - virtual FbxNodeAttribute::EType GetAttributeType() const; - - /** Return the node count using this attribute. - * \return The count of nodes with this attribute set. - */ - int GetNodeCount() const; - - /** Return the node this attribute is set to. - * \param pIndex The index of the node to retrieve - * \return Pointer to the node, or \c NULL if the current attribute is not set to a node. - */ - FbxNode* GetNode(int pIndex=0) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnull.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnull.h deleted file mode 100644 index b1328b2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnull.h +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnull.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NULL_H_ -#define _FBXSDK_SCENE_GEOMETRY_NULL_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of a null node. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNull : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxNull, FbxNodeAttribute); - -public: - //! Returns the EType::eNull node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the default values. - void Reset(); - - /** - * \name Null Node Properties - */ - //@{ - - /** \enum ELook Null node look types. - * - \e eNone - * - \e eCross - */ - enum ELook - { - eNone, - eCross, - }; - - /** Returns the default size value. - * \return The default size of this object (100). - */ - double GetSizeDefaultValue() const; - - //@} - - /** - * \name Property Names - */ - //@{ - static const char* sSize; - static const char* sLook; - //@} - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const ELook sDefaultLook; - //@} - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the null node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * The default value is 100. - */ - FbxPropertyT Size; - - /** This property handles the look of the null node. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * The default value is true - */ - FbxPropertyT Look; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxNull::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NULL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h deleted file mode 100644 index 8a8204b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbs.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_H_ - -#include - -#include - -#include - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V coordinates. - - For more information on the meaning of form, knot vectors and control points, - see the FbxNurbsCurve documentation. The same rules apply for the NURBS curves - and NURBS surfaces, but NURBS surfaces have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbs : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbs node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry) - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** NURBS types. - */ - enum EType - { - ePeriodic, //!< Periodic. - eClosed, //!< Closed. - eOpen //!< Open. - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbs::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Returns multiplicity of U-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the U count. - * Its elements are set to 1 by default. - */ - int* GetUMultiplicityVector() const; - - /** Returns multiplicity of V-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the V count. - * Its elements are set to 1 by default. - */ - int* GetVMultiplicityVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS export flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUMultiplicityVectorError, - eVMultiplicityVectorError, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - int* mUMultiplicityVector; - int* mVMultiplicityVector; - - ESurfaceMode mSurfaceMode; - - // Export flags. - bool mApplyFlipUV; - bool mApplyFlipLinks; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h deleted file mode 100644 index 6e502af..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h +++ /dev/null @@ -1,233 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbscurve.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ - -#include - -#include -#include - -#include - -/** - A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry. A NURBS - curve is defined by the order, form, knot vector and control points. - - Let M be the order of the curve. - Let N be the number of control points of the curve. - - The form of the curve can be open, closed or periodic. A curve with end points - that do not meet is defined as an open curve. The number of knots in an open curve - is defined as N+(M+1). - - A closed curve simply has its last control point equal to its first control point. - Note that this does not imply tangent continuity at the end point. The curve may - have a kink at this point. In FBX the last control point is not specified by the user - in the InitControlPoints() method. For example, if there are to be 10 control points in - total, and the curve is to be closed, than only 9 control points need to be passed - into the InitControlPoints() method. The last control point is implied to be equal - to the first control point. Thus N represents the number of unique CVs. - - A periodic curve has its last M control points equal to its first M control points. - A periodic curve is tangent continuous at the ends. Similar to a closed curve, - when creating a periodic curve, only the unique control points need to be set. For - example a periodic curve of order 3 with 10 control points requires only 7 CVs to - be specified in the InitControlPoints() method. The last 3 CVs, which are the same as - the first 3, are not included. - - The calculation of the number of knots in closed and periodic curves is more complex. - Since we have excluded one CV in N in a closed curve, the number of knots is N+(M+1)+1. - Similarly, we excluded M CVs in periodic curves so the number of knots is N+(M+1)+M. - - Note that FBX stores one extra knot at the beginning and and end of the knot vector, - compared to some other graphics applications such as Maya. The two knots are not - used in calculation, but they are included so that no data is lost when converting - from file formats that do store the extra knots. - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsCurve : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsCurve,FbxGeometry); - -public: - //! Returns the EType::eNurbsCurve node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDimension The dimension of the CVs. - * - \e e2D The CVs are two dimensional points. - * - \e e3D The CVs are three dimensional points. - */ - enum EDimension - { - e2D = 2, - e3D - }; - - /** \enum EType The curve's form. - * - \e eOpen - * - \e eClosed - * - \e ePeriodic - */ - enum EType - { - eOpen, - eClosed, - ePeriodic - }; - - /** Allocates memory space for the control points array as well as for the knot - * vector. - * \param pCount Number of control points. - * \param pVType NURBS type. - * \remarks This function should always be called after FbxNurbsCurve::SetOrder(). - */ - void InitControlPoints( int pCount, EType pVType ); - - /** Returns the knot vector. - * \return Pointer to the knots array. - */ - inline double* GetKnotVector() const { return mKnotVector; } - - /** Returns the number of elements in the knot vector. - * \return The number of knots. - */ - int GetKnotCount() const; - - /** Sets the order of the curve. - * \param pOrder The curve order. - * \remarks The curve order must be set before InitControlPoints() is called. - */ - inline void SetOrder( int pOrder ) { mOrder = pOrder; } - - /** Returns the NURBS curve order. - * \return The NURBS curve order. - */ - inline int GetOrder() const { return mOrder; } - - /** Sets the step of the curve. - * \param pStep The curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline void SetStep( int pStep ) { mStep = pStep; } - - /** Returns the NURBS curve step. - * \return The NURBS curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline int GetStep() const { return mStep; } - - /** Sets the dimension of the CVs. - * For 3D curves: control point = ( x, y, z, w ), where w is the weight. - * For 2D curves: control point = ( x, y, 0, w ), where the z component is unused, and w is the weight. - * \param pDimension The control points dimension(3D or 2D). - */ - inline void SetDimension( EDimension pDimension ) { mDimension = pDimension; } - - /** Returns the control points dimension. - * \return The curve dimension. - */ - inline EDimension GetDimension() const { return mDimension; } - - /** Determines if the curve is rational or not. - * \return \c True if the curve is rational, return \c false if not. - */ - bool IsRational(); - - /** Calculates the number of curve spans with the following: - * Where - * S = Number of spans - * N = Number of CVs - * M = Order of the curve - * - * S = N - M + 1; - * - * In this calculation N includes the duplicate CVs for closed and periodic curves. - * - * \return The number of curve spans if the curve has been initialized, returns -1 if the curve has not been initialized. - */ - int GetSpanCount() const; - - /** Returns NURBS type. - * \return NURBS type identifier. - */ - inline EType GetType() const { return mNurbsType; } - - /** Checks if the curve is a poly line. (A poly line is a - * linear NURBS curve ) - * - * \return \c True if curve is a poly line, return \c false if it is not a poly line. - */ - inline bool IsPolyline() const { return ( GetOrder() == 2 ); } - - /** This function determines if this NURBS curve is a Bezier curve. - * Bezier curves are a special case of NURBS curve. - * \return \c True if curve is a Bezier curve. If it is not a Bezier curve return \c false. - */ - bool IsBezier() const; - - /** Evaluate the point on the curve. Save the result as a point array. Meanwhile, return the length of the point array. - * \param pPointArray Save the evaluate result as a point array. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return The length of the point array. - */ - int TessellateCurve(FbxArray& pPointArray, int pStep = 16); - - /** Evaluate the point on the curve. Per the evaluation result, create a FbxLine and return the pointer to the line. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return A line to hold the tessellate points. - */ - FbxLine* TessellateCurve(int pStep = 16); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool FullMultiplicity() const; - - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsCurveTypeUnknown, - eWeightTooSmall, - eKnotVectorError, - eWrongNumberOfControlPoint, - eErrorCount - }; - - bool mIsRational; - - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void Reset(); - -private: - double* mKnotVector; - EType mNurbsType; - int mOrder; - EDimension mDimension; - int mStep; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h deleted file mode 100644 index c10a9eb..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V directions. - - For more information on the meaning of the form, knot vector and control points, - see the documentation for the FbxNurbsCurve. The same concepts for NURBS curves - apply to NURBS surfaces. NURBS surfaces simply have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsSurface, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbsSurface node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType NURBS types. - * - \e ePeriodic - * - \e eClosed - * - \e eOpen - */ - enum EType - { - ePeriodic, - eClosed, - eOpen - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbsSurface::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS surface Export Flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - /** Adds a curve to the NURBS surface. - * Adds a 2D, parametric space curve to this surface - * \param pCurve The curve to be added to the surface. - */ - void AddCurveOnSurface( FbxNode* pCurve ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - FbxNode* GetCurveOnSurface( int pIndex ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - const FbxNode* GetCurveOnSurface( int pIndex ) const; - - /** Returns the number of curves on this surface. - * \return The number of curves on this surface. - */ - int GetCurveOnSurfaceCount() const; - - /** Removes a curve from this surface. - * \param pCurve The curve to be removed. - * \return \c True if the curve is removed successfully, if unsuccessful, returns \c false. - */ - bool RemoveCurveOnSurface( FbxNode* pCurve ); - - //@} - - /** Checks if the surface has all rational control points. - * \return \c True if rational, \c false otherwise - */ - bool IsRational() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - - void SetFlipNormals(bool pFlipNormals); - bool GetFlipNormals() const; - bool IsValidKnots() const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - ESurfaceMode mSurfaceMode; - - bool mApplyFlipUV; - bool mApplyFlipLinks; - bool mFlipNormals; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h deleted file mode 100644 index 1a3edca..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxopticalreference.h -#ifndef _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ -#define _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of an optical reference. - * \nosubgrouping - * Mainly used for optical motion capture systems. - */ -class FBXSDK_DLL FbxOpticalReference : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxOpticalReference,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is FbxNodeAttribute::EType::eOpticalReference. - FbxNodeAttribute::EType GetAttributeType() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h deleted file mode 100644 index 90b796d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpatch.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PATCH_H_ -#define _FBXSDK_SCENE_GEOMETRY_PATCH_H_ - -#include - -#include - -#include - -/** A patch is a type of node attribute with parametric surface. - * A patch object is useful for creating gently curved surfaces, and provides very detailed control for manipulating complex geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxPatch : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxPatch,FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::ePatch node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the patch to its default values. - void Reset(); - - /** - * \name Patch Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see Class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The current surface mode identifier. - */ - inline FbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType Patch types. - * - \e eBezier - * - \e eBezierQuadric - * - \e eCardinal - * - \e eBSpline - * - \e eLinear - */ - enum EType - { - eBezier, - eBezierQuadric, - eCardinal, - eBSpline, - eLinear - }; - - /** Allocates memory space for the control points array. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension patch type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension patch type. - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of control points in the U-dimension. - * \return The number of control points in the U-dimension. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of control points in the V-dimension. - * \return The number of control points in the V-dimension. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension patch type. - * \return Patch type identifier in the U-dimension. - */ - inline EType GetPatchUType() const {return mUType;} - - /** Returns the V-dimension patch type. - * \return Patch type identifier in the V-dimension. - */ - inline EType GetPatchVType () const {return mVType;} - - /** Sets the patch step. - * The step is the number of divisions between adjacent control points. - * \param pUStep Steps in U-dimension. - * \param pVStep Steps in V-dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in the U-dimension. - * \return Step value in the U-dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in the V-dimension. - * \return Step value in the V-dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Sets closed flags. - * \param pU Set to \c true if the patch is closed in U dimension. - * \param pV Set to \c true if the patch is closed in V dimension. - */ - void SetClosed(bool pU, bool pV); - - /** Returns state of the U closed flag. - * \return \c True if the patch is closed in U dimension. - */ - inline bool GetUClosed() const {return mUClosed;} - - /** Returns state of the V closed flag. - * \return \c True if the patch is closed in V dimension. - */ - inline bool GetVClosed() const {return mVClosed;} - - /** Sets U-capped flags. - * \param pUBottom Set to \c true if the patch is capped at the bottom in the U-dimension. - * \param pUTop \c Set to \c true if the patch is capped on the top in the U-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetUCapped(bool pUBottom, bool pUTop); - - /** Returns state of the bottom U-capped flag. - * \return \c True if the patch is capped at the bottom in the U-dimension. - */ - inline bool GetUCappedBottom() const {return mUCappedBottom;} - - /** Returns state of the top U-capped flag. - * \return \c True if the patch is capped on the top in the U-dimension. - */ - inline bool GetUCappedTop() const {return mUCappedTop;} - - /** Sets V-capped flags. - * \param pVBottom Sets to \c true if the patch is capped at the bottom in the V-dimension. - * \param pVTop Sets to \c true if the patch is capped on the top in the V-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetVCapped(bool pVBottom, bool pVTop); - - /** Returns state of the bottom V-capped flag. - * \return \c True if the patch is capped at the bottom. - */ - inline bool GetVCappedBottom() const {return mVCappedBottom;} - - /** Returns state of the top V-capped flag. - * \return \c True if the patch is capped on the top. - */ - inline bool GetVCappedTop() const {return mVCappedTop;} - - //@} - - /** - * \name Off-loading Serialization section - */ - //@{ - /** Writes the content of the patch to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed by the receiving stream. - * If it is not successful, returns \c false. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the patch from the given stream. - * \param pStream The source stream. - * \return \c True if the patch completes with the data received from the stream successfully. - * If it is not successful, returns \c false. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - void SetControlPointAt(const FbxVector4 &pCtrlPoint ,int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - EType mUType, mVType; - int mUCount, mVCount; - int mUStep, mVStep; - bool mUClosed, mVClosed; - bool mUCappedBottom, mUCappedTop; - bool mVCappedBottom, mVCappedTop; - - FbxGeometry::ESurfaceMode mSurfaceMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PATCH_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h deleted file mode 100644 index dc41bbc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduralgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ -#define _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Base class for procedural geometry. In a standard geometry (FbxGeometry, FbxGeometryBase), control points, - * normals, possibly polygons (FbxMesh) and other specifications are described. A procedural geometry contains minimal information - * to be created on-the-fly. - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralGeometry : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralGeometry, FbxGeometry); -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxshape.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxshape.h deleted file mode 100644 index b0ca7a5..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxshape.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ - -#include - -#include - -#include - -class FbxBlendShapeChannel; -class FbxGeometry; - -/** A shape describes the deformation on a set of control points, which is similar to the cluster deformer in Maya. - * For example, we can add a shape to a created geometry. And the shape and the geometry have the same - * topological information but different position of the control points. - * With varying amounts of influence, the geometry performs a deformation effect. - * \nosubgrouping - * \see FbxGeometry - */ -class FBXSDK_DLL FbxShape : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxShape, FbxGeometryBase); - -public: - /** Set the blend shape channel that contains this target shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the blend shape channel that contains this target shape. - * \return a pointer to the blend shape channel if set or NULL. - */ - FbxBlendShapeChannel* GetBlendShapeChannel() const; - - /** Get the base geometry of this target shape. - * \return a pointer to the base geometry if set or NULL. - * \remarks Since target shape can only connected to its base geometry through - * blend shape channel and blend shape deformer. - * So only when this target shape is connected to a blend shape channel, - * and the blend shape channel is connected to a blend shape deformer, - * and the blend shape deformer is used on a base geometry, then to get - * base geometry will success. - */ - FbxGeometry* GetBaseGeometry(); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - - /** Set the array size for the control point indices - * \param pCount The new count. - */ - void SetControlPointIndicesCount(int pCount); - - /** Add a control point index to the control point indices array - * \param pIndex The control point index to add. - */ - void AddControlPointIndex(int pIndex); - - /** Restore the shape to its initial state. - * Calling this function will clear the following: - * \li Pointer to blend shape channel. - * \li Control point indices. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxNodeAttribute::EType GetAttributeType() const override; - FbxStringList GetTypeFlags() const override; - - FbxArray mControlPointIndices; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h deleted file mode 100644 index 3c4f120..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskeleton.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ - -#include - -#include - -#include - -/** This class specializes a node attribute to represent the elements forming "bone" - * chains. The FbxSkeleton name of the class comes from the analogy with the human body - * skeletal structure. In fact, an object of this type is nothing more than a transform - * node with special properties that are useful for its graphical representation and during - * IK/FK and skin deformation computations. Typically, a scene will contain chains of FbxSkeleton - * node attributes that, together, form a skeleton segment. For instance, the representation of the - * leg of a character can be achieved using one parent node with the attribute eRoot, followed by - * one child (femur) of type eLimb, this child having a child also (tibia) of the same type. Finally, - * terminated with a last node attribute of type eEffector (ankle). - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxSkeleton : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxSkeleton,FbxNodeAttribute); - -public: - //! Return the type of node attribute (i.e: FbxNodeAttribute::EType::eSkeleton). - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the skeleton to default values and type to \c eRoot. - void Reset(); - - /** - * \name Skeleton Properties - */ - //@{ - - /** \enum EType Skeleton types. - * \remarks \e eEffector is synonymous to \e eRoot. - * \remarks The \e eLimbNode type is a bone defined uniquely by a transform and a size value while - * \remarks the \e eLimb type is a bone defined by a transform and a length. - */ - enum EType - { - eRoot, /*!< First element of a chain. */ - eLimb, /*!< Chain element. */ - eLimbNode, /*!< Chain element. */ - eEffector /*!< Last element of a chain. */ - }; - - /** Set the skeleton type. - * \param pSkeletonType Skeleton type identifier. - */ - void SetSkeletonType(EType pSkeletonType); - - /** Get the skeleton type. - * \return Skeleton type identifier. - */ - EType GetSkeletonType() const; - - /** Get a flag to know if the skeleton type was set. - * \return \c true if a call to SetSkeletonType() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetSkeletonTypeIsSet() const; - - /** Get the default value for the skeleton type. - * \return \c eRoot - */ - EType GetSkeletonTypeDefaultValue() const; - - /** Get the default value for the limb length. - * \return 1.0 - */ - double GetLimbLengthDefaultValue() const; - - /** Get the default value for the limb node size. - * \return 100.0 - */ - double GetLimbNodeSizeDefaultValue() const; - - /** Set limb or limb node color. - * \param pColor RGB values for the limb color. - * \return \c true if skeleton type is \c eLimb or \c eLimbNode, \c false otherwise. - * \remarks Limb or limb node color is only set if skeleton type is \c eLimb or \c eLimbNode. - */ - bool SetLimbNodeColor(const FbxColor& pColor); - - /** Get limb or limb node color. - * \return Currently set limb color. - * \remarks Limb or limb node color is only valid if skeleton type is \c eLimb or \c eLimbNode. - */ - FbxColor GetLimbNodeColor() const; - - /** Get a flag to know if the limb node color was set. - * \return \c true if a call to SetLimbNodeColor() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetLimbNodeColorIsSet() const; - - /** Get the default value for the limb node color. - * \return R=0.8, G=0.8, B=0.8 - */ - FbxColor GetLimbNodeColorDefaultValue() const; - - /** To see if this skeleton is Root. - * \return \c true if this is root of the skeleton, \c false otherwise. - * \remarks if a skeleton node do not have a parent or its parent is not a skeleton node itself, then this - * skeleton is root in the hierarchy. - */ - bool IsSkeletonRoot() const; - - //@} - - - /** - * \name Property Names - */ - static const char* sSize; - static const char* sLimbLength; - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const FbxDouble sDefaultLimbLength; - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the limb node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100.0 - */ - FbxPropertyT Size; - - /** This property handles the skeleton limb length. - * - * To access this property do: LimbLength.Get(). - * To set this property do: LimbLength.Set(FbxDouble). - * - * FbxSkeleton is a node attribute and it will be attached to a FbxNode which represents the transform. - * Given a chain of skeleton nodes the parent and child skeletons will be attached to a parent node and a child node. - * The orientation of the limb is computed from the vector between the parent and child position (from parent to child). - * The LimbLength represents the proportion - * of the parent node's position to the child node's position which is used to compute the actual limb length. - * The default value of 1.0 means the LimbLength is equal to the length between the parent and child node's position. - * So if the value is 0.5, it means the LimbLength will be half of the length between the parent and child node's position. - */ - FbxPropertyT LimbLength; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Reset( bool pResetProperties ); - - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mSkeletonType; - - bool mLimbLengthIsSet; - bool mLimbNodeSizeIsSet; - bool mLimbNodeColorIsSet; - bool mSkeletonTypeIsSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskin.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskin.h deleted file mode 100644 index bd61e74..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxskin.h +++ /dev/null @@ -1,192 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskin.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKIN_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKIN_H_ - -#include - -#include - -#include - -class FbxCluster; -class FbxGeometry; - -/** Skin deformer class. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * The corresponding deformer types are FbxDeformer::eSkin. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxSkin : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxSkin, FbxDeformer); - -public: - /** Set deformation accuracy. - * \remarks Use the Accuracy option to set the accuracy of skin deformations. - * 100% is full accuracy and 1% is a rough estimation of the envelope deformation. - * \param pDeformAccuracy value for deformation accuracy. - */ - void SetDeformAccuracy(double pDeformAccuracy); - - /** Get deformation accuracy. - * \return deformation accuracy value. - */ - double GetDeformAccuracy() const; - - /** Set the geometry affected by this skin deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this skin deformer. - * \return a pointer to the geometry if set or NULL. - */ - FbxGeometry* GetGeometry(); - - /** Add a cluster. - * \param pCluster Pointer to the cluster object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddCluster(FbxCluster* pCluster); - - /** Remove cluster at given index. - * \param pCluster Pointer to the cluster to remove from this skin deformer. - * \return Pointer to cluster or \c NULL if pCluster is not owned by this skin deformer. - */ - FbxCluster* RemoveCluster(FbxCluster* pCluster); - - /** Get the number of clusters. - * \return Number of clusters that have been added to this object. - */ - int GetClusterCount() const; - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - FbxCluster* GetCluster(int pIndex); - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - const FbxCluster* GetCluster(int pIndex) const; - - /** Get the type of the deformer. - * \return Deformer type identifier. - */ - EDeformerType GetDeformerType() const override {return eSkin; }; - - /** \enum EType Skinning type. - * The skinning type decides which method will be used to do the skinning. - * - \e eRigid Type eRigid means rigid skinning, which means only one joint can influence each control point. - * - \e eLinear Type eLinear means the classic linear smooth skinning. - * - \e eDualQuaternion Type eDualQuaternion means the dual quaternion smooth skinning. - * - \e eBlend Type eBlend means to blend classic linear and dual quaternion smooth skinning according to blend weights. - */ - enum EType - { - eRigid, - eLinear, - eDualQuaternion, - eBlend - }; - - /** Set the skinning type. - * \param pType The skinning type. - */ - void SetSkinningType(EType pType); - - /** Get the skinning type. - * \return The skinning type. - */ - EType GetSkinningType() const; - - /** - * \name Control Points - * A skin has an array of indices to control points and associated blend weights. - * The indices refer to the control points in the instance of class FbxGeometry. - * The blend weights are the influence of the different skinning type over the - * deformation effect of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and blendWeights. - * \param pIndex The index of the control point. - * \param pBlendWeight The blend weight for this control point. The value should between 0 and 1. - * Any value that is less than 0 will be set to 0, any value that is greater than 1 will be set to 1. - * 0 means completely linear skinning, 1 means completely dual quaternion skinning, - * a value between 0 and 1 means the weighted blending of the above two skinning methods. - */ - void AddControlPointIndex(int pIndex, double pBlendWeight = 0); - - /** Get the length of the arrays of control point indices and blend weights. - * \return Length of the arrays of control point indices and blend weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point blend weights. - * \return Pointer to the array of control point blend weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointBlendWeights() const; - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - - // Skin deformer - double mDeformAccuracy; - EType mSkinningType; - - //Control points - FbxArray mControlPointIndices; - FbxArray mControlPointBlendWeights; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKIN_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h deleted file mode 100644 index e646d67..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ - -#include - -#include - -#include - -/** Base class for cluster sub-deformer( FbxCluster) and blend shape channel sub-deformer( FbxBlendShapeChannel) - * - * The corresponding sub-deformer types are FbxSubDeformer::eCluster and FbxSubDeformer::eBlendShapeChannel. - * - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * A cluster is usually part of a skin (see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * and each target shape could have its own full deformation percentage, for example, one channel could have 3 target shapes, - * whose full deform percentage are 30, to 80 to 100, then when the percent change from 0 to 100, the base geometry will - * deform from the first target shape to the last one, this is called In-Between blend-shapes. - * The blend shape channel also control the deform percent of each target shape or In-Between blend shape on it. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSubDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSubDeformer, FbxObject); - public: - - /** Set multi layer state flag. - * \param pMultiLayer If \c true, multi-layering is enabled. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multilayer state. - * \return The state of the multi-layer flag. - */ - bool GetMultiLayer() const; - - - /** \enum EType Sub-deformer type - */ - enum EType - { - eUnknown, //!< Untyped sub-deformer - eCluster, //!< Type FbxCluster - eBlendShapeChannel //!< Type FbxBlendShapeChannel - }; - - /** Get the type of the sub-deformer. - * \return SubDeformer type identifier. - */ - virtual EType GetSubDeformerType() const { return eUnknown; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - // Local - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h deleted file mode 100644 index 51c2512..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdiv.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ - -#include - -#include -#include - -#include - -class FbxMesh; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FBXSDK_DLL FbxSubDiv : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxSubDiv, FbxGeometry); - -public: - enum EScheme - { - eCatmullClark, //Catmull CClark subdivision surface - eDooCSabin, //Doo CSabin subdivision surface - eLoop, //Loop subdivision surface - eLinear, //Linear subdivision surface - }; - - enum ETesselationPattern - { - eOddFractional, - eEvenFractional, - eInteger, - ePower2, //Max, Maya use this one - }; - - enum EDisplaySmoothness - { - eHull, - eRough, - eMedium, - eFine, - }; - - /** InitSubdivLevel Initialize the subdiv - * \param pLevelCount number of levels - * \param pScheme subdivision scheme - * \param pPattern Tessellation pattern - */ - void InitSubdivLevel(int pLevelCount, - EScheme pScheme = eCatmullClark, - ETesselationPattern pPattern = ePower2); - - FbxNodeAttribute::EType GetAttributeType() const override; - - - //max subdivision level number - static const int MAX_SUBDIV_LEVEL = 16; - - //subdiv levels in subdivision, including the base mesh and each subdiv levels - FbxArray mSubDivLevel; - - //Get the base mesh - FbxMesh* GetBaseMesh() const; - - //Get the mesh from finest level - FbxMesh* GetFinestMesh() const; - - //Set the finest mesh - bool SetFinestMesh(FbxMesh* pMesh); - - //Set the finest mesh - bool SetBaseMesh(FbxMesh* pMesh); - - //Get the mesh from specific level - FbxMesh* GetMesh(int pLevel) const; - - /** SetSubdivLevelMesh Set certain subdivision mesh - * \param pLevel working level - * \param pMesh new level mesh. pLevel = 0 means base mesh, - pLevel = MaxLevel -1 means finest mesh - */ - void SetSubdivLevelMesh(int pLevel, FbxMesh* pMesh); - - int GetLevelCount() const; - void SetLevelCount(int pLevelCount); - - int GetCurrentLevel() const; - void SetCurrentLevel(int pCurrentLevel); - - FbxMesh* GetCurrentMesh() const; - - FbxSubDiv::EScheme GetSubdivScheme() const; - - FbxSubDiv::ETesselationPattern GetTessPattern() const; - - void SetSubdivScheme(FbxSubDiv::EScheme pScheme); - - void SetTessPattern(FbxSubDiv::ETesselationPattern pPattern); - - FbxSubDiv::EDisplaySmoothness GetDisplaySmoothness() const; - - void SetDisplaySmoothness(FbxSubDiv::EDisplaySmoothness pSmoothness); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - - //base geometry mesh for subdivision - FbxMesh* mBaseMesh; - - //finest geometry mesh for subdivision - FbxMesh* mFinestMesh; - - //current operating subdivision level - int mCurrLevel; - - //number of subdiv level - int mLevelCount; - - //scheme of subdiv - EScheme mScheme; - - //pattern of subdiv - ETesselationPattern mPattern; - - //display smoothness of subdiv - EDisplaySmoothness mSmoothness; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h deleted file mode 100644 index 75f320b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h +++ /dev/null @@ -1,240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtrimnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ - -#include - -#include -#include -#include - -#include - -/** FbxBoundary describes a trimming boundary for a trimmed NURBS object. - * Note:Outer boundaries run counter-clockwise in UV space and inner - * boundaries run clockwise. An outer boundary represents the outer edges - * of the trimmed surface whereas the inner boundaries define "holes" in - * the surface. - */ -class FBXSDK_DLL FbxBoundary : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxBoundary, FbxGeometry); - -public: - - //! Properties - static const char* sOuterFlag; - - /** This property handles outer flag. - * - * Default value is false. - */ - FbxPropertyT OuterFlag; - - /** Adds an edge to this boundary. - * \param pCurve The curve to be appended to the end of this boundary - */ - void AddCurve( FbxNurbsCurve* pCurve ); - - /** Returns the number of edges within this boundary. - * \return The number of edges within this boundary - */ - int GetCurveCount() const; - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise the return value is undefined. - */ - FbxNurbsCurve* GetCurve( int pIndex ); - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise, the return value is undefined. - */ - const FbxNurbsCurve* GetCurve( int pIndex ) const; - - - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Detects if the point is in the boundary's control hull. - * \param pPoint The point to be detected. - * \return \c True if the point is in the boundary's control hull, returns \c false if it is not in the control hull. - */ - bool IsPointInControlHull(const FbxVector4& pPoint ); - - /** Computes the origin point in the boundary - * \return The origin point. - */ - FbxVector4 ComputePointInBoundary(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - void ClearCurves(); - void CopyCurves( FbxBoundary const& pOther ); - bool IsValid(bool mustClosed = true); - bool IsCounterClockwise(); - -protected: - void ConstructProperties(bool pForceSet) override; - - void Reset(); - bool LineSegmentIntersect(const FbxVector4 & pStart1, const FbxVector4 & pEnd1, const FbxVector4 & pStart2, const FbxVector4 & pEnd2 ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxTrimNurbsSurface describes a NURBS surface with regions - trimmed or cut away with trimming boundaries. - */ -class FBXSDK_DLL FbxTrimNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxTrimNurbsSurface,FbxGeometry); -public: - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - - /** Returns the number of regions on this trimmed NURBS surface. - * Note: There is always at least one region. - * \return The number of regions - */ - int GetTrimRegionCount() const; - - /** Calls this function before adding boundaries to a new trim region. - * The number of regions is incremented on this call. - */ - void BeginTrimRegion(); - - /** Calls this function after the last boundary for a given region is added. - * If no boundaries are added between the calls to BeginTrimRegion - * and EndTrimRegion, the last region is removed. - */ - void EndTrimRegion(); - - /** Appends a trimming boundary to the set of trimming boundaries. - * The first boundary specified for a given trim region should be - * the outer boundary. All other boundaries are inner boundaries. - * This must be called after a call to BeginTrimRegion(). Boundaries - * cannot be shared among regions. Duplicate the boundary if necessary. - * \param pBoundary The boundary to add. - * \return \c True if the boundary is added successfully. - * If the boundary is not added successfully, returns \c false. - */ - bool AddBoundary( FbxBoundary* pBoundary ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - const FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ) const; - - /** Returns the number of boundaries for a given region. - * \param pRegionIndex The index of the region. - * \return The number of trim boundaries for the given region. - */ - int GetBoundaryCount(int pRegionIndex = 0) const; - - /** Sets the NURBS surface that is trimmed by the trimming boundaries. - * \param pNurbs The NURBS surface to be trimmed. - */ - void SetNurbsSurface( const FbxNurbsSurface* pNurbs ); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - const FbxNurbsSurface* GetNurbsSurface() const; - - /** Sets the flag which indicates whether the surface normals are flipped. - * You can flip the normals of the surface to reverse the surface. - * \param pFlip If \c true, the surface is reversed. If it is false, the surface is not reversed. - */ - inline void SetFlipNormals( bool pFlip ) { mFlipNormals = pFlip; } - - /** Checks if the normals are flipped. - * \return \c True if normals are flipped, returns \c false if they are not flipped. - */ - inline bool GetFlipNormals() const { return mFlipNormals; } - - int GetControlPointsCount() const override; - - /** Sets the control point and the normal values for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index. - * \param pI2DSearch Unused in this implementation. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false) override; - - /** Sets the control point for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - - /** Returns the NURBS surface's control points. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxVector4* GetControlPoints(FbxStatus* pStatus = NULL) const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool IsValid(bool mustClosed = true); - void ClearBoundaries(); - void CopyBoundaries( FbxTrimNurbsSurface const& pOther ); - bool IsValid(int pRegion, bool mustClosed = true); - void RebuildRegions(); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - bool mFlipNormals; - FbxArray mRegionIndices; - bool mNewRegion; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h deleted file mode 100644 index add1460..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvertexcachedeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ - -#include - -#include -#include - -#include - -/** \brief This class deforms control points of a geometry using control point positions - * stored in the associated cache object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVertexCacheDeformer : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxVertexCacheDeformer, FbxDeformer); - -public: - //! Vertex cache deformer data type - enum ECacheChannelType - { - ePositions, //!< This vertex cache deformer handles positions - eNormals, //!< This vertex cache deformer handles normals - eUVs, //!< This vertex cache deformer handles uvs - eTangents, //!< This vertex cache deformer handles tangents - eBinormals, //!< This vertex cache deformer handles binormals - eUserDefined //!< This vertex cache deformer handles user specified data (the cache channel string can provide a hint) - }; - - /** Assign a cache object to be used by this deformer. - * \param pCache The cache object. */ - void SetCache(FbxCache* pCache); - - /** Get the cache object used by this deformer. - * \return A pointer to the cache object used by this deformer, or \c NULL if no cache object is assigned. */ - FbxCache* GetCache() const; - - //! Indicate if the deformer is active or not. - FbxPropertyT Active; - - //! The channel name used in the cache file - FbxPropertyT Channel; - - //! The cache set used by this vertex cache deformer - FbxPropertyT CacheSet; - - //! The vertex cache deformer type - FbxPropertyT Type; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - EDeformerType GetDeformerType() const override { return FbxDeformer::eVertexCache; } - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVertexCacheDeformer::ECacheChannelType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h deleted file mode 100644 index c859f4b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h +++ /dev/null @@ -1,139 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxweightedmapping.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ - -#include - -#include - -#include - -/** Define a weighted bidirectional mapping relation on objects. - * \nosubgrouping - * There are two object set. The source object of mapping is in source set. - * The destination object is in destination set. - * Each object can have multiple mapping relation with other objects. - */ -class FBXSDK_DLL FbxWeightedMapping -{ -public: - /** Object set type in the mapping relation. - */ - enum ESet - { - eSource, //!< Object is as source. - eDestination //!< Object is as destination. - }; - - /** Record one mapping from one object. */ - struct Element - { - //! The index of another object in the mapping in the another ESet array. - int mIndex; - //! Weight of the mapping. - double mWeight; - }; - - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * Initialize the source set and destination set. - * \param pSourceSize Source set size - * \param pDestinationSize Destination set size - */ - FbxWeightedMapping(int pSourceSize, int pDestinationSize); - - //! Destructor. - ~FbxWeightedMapping(); - //@} - - - /** Remove all weighted relations and give new source and destination sets sizes. - * \param pSourceSize New source set size. - * \param pDestinationSize New destination set size. - */ - void Reset(int pSourceSize, int pDestinationSize); - - /** Add a weighted mapping relation. - * \param pSourceIndex Index of the source object. - * \param pDestinationIndex Index of the destination object. - * \param pWeight Weight of the mapping. - */ - void Add(int pSourceIndex, int pDestinationIndex, double pWeight); - - /** Get the number of elements of a set. - * \param pSet source or destination set. - */ - int GetElementCount(ESet pSet) const; - - /** Get the number of relations an element of a set is linked to. - * For example, for one object (which index is specified by pElement) in source set (specified by pSet), - * the function return how many objects (as destination) the object (as source) mapping to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - */ - int GetRelationCount(ESet pSet, int pElement) const; - - /** Get one of the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pIndex Relation index of the object linked to. - * \return Element gives the index of an element in the other set and the assigned weight. - */ - Element& GetRelation(ESet pSet, int pElement, int pIndex); - - /** Given the index of an element in the other set, get the index of one of the relations - * an element of a set is linked to. Returns -1 if there is not relation between these elements. - * \param pSet Source or destination set. - * \param pElementInSet Object index in the set. - * \param pElementInOtherSet Object index in another set. - * \return The index of one of the relations, -1 if there is not relation between these elements. - */ - int GetRelationIndex(ESet pSet, int pElementInSet, int pElementInOtherSet) const; - - /** Get the sum of the weights from the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - * \return The sum of the weights from the relations. - */ - double GetRelationSum(ESet pSet, int pElement, bool pAbsoluteValue) const; - - - /** Normalize the weights of the relations of all the elements of a set. - * \param pSet Source or destination set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - */ - void Normalize(ESet pSet, bool pAbsoluteValue); - - FbxWeightedMapping& operator=(const FbxWeightedMapping& pWMap); - -private: - - //! Remove all weighted relations. - void Clear(); - - FbxArray*> mElements[2]; - -}; - -typedef class FbxArray FbxArrayTemplateElement; -typedef class FbxArray*> FbxArrayTemplateArrayTemplateElement; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h deleted file mode 100644 index d06eaf1..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h +++ /dev/null @@ -1,859 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingoperator.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ - -#include - -#include - -#include - -/** This object represents a binding operation on a FbxObject or FbxProperty. - * For example, FbxBindingOperator can be used to bind a light object - * to a parameter of shader via FbxNodeDirectionBOF or FbxNodePositionBOF. - * \code - * //Create an entry lEntry of binding table lTable. - * FbxBindingTableEntry& lEntry = lTable->AddNewEntry(); - * - * //Create a NodePositionConvert binding operator and add it as source of the lEntry. - * FbxOperatorEntryView lSrc(&lEntry, true, true); - * lSrc.SetOperatorName( "NodePositionConvert"); - * FbxBindingOperator* lOp = pImpl.AddNewBindingOperator( "NodePositionConvert", FbxNodePositionBOF::FunctionName); - * - * //Add a property entry to the binding operator. - * FbxBindingTableEntry& lEntryPropParam = lOp->AddNewEntry(); - * FbxPropertyEntryView lPropSrc(&lEntryPropParam, true, true); - * //Set the shader parameter (the property's name) as source of the lEntryPropParam. - * lPropSrc.SetProperty(lProp.GetHierarchicalName()); - * //Set the operator function FbxNodePositionBOF as destination of the lEntryPropParam. - * lEntryPropParam.SetDestination( FbxNodePositionBOF::FunctionName ); - * - * //Set the shader parameter as destination of the lEntry. - * FbxSemanticEntryView lDst( &lEntry, false, true ); - * lDst.SetSemantic( lProp.GetName() ); - * \endcode - * \nosubgrouping - * \see FbxOperatorEntryView, FbxBindingTableEntry, FbxPropertyEntryView - */ -class FBXSDK_DLL FbxBindingOperator : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingOperator, FbxBindingTableBase); - -public: - /** Run the operator on the given object. - * \param pObject The object that will be evaluated. - * \param pResult A pointer to a buffer to hold the result. - * \return \c true on success, \c false otherwise. - */ - template - bool Evaluate(const FbxObject* pObject, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = Evaluate(pObject, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pObject The object that will be evaluated. - * \param pInOut Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - template - bool ReverseEvaluation(const FbxObject* pObject, FBXTYPE * pInOut, - bool setObj=false, int index=0) const - { - - const void* lIn = pInOut; - void* lOut = NULL; - EFbxType lOutType; - - bool lSuccess = ReverseEvaluate(pObject, lIn, &lOut, &lOutType, setObj, index); - - if (lSuccess) - { - FbxTypeCopy(*pInOut, lOut, lOutType); - } - - FreeEvaluationResult(lOutType, lOut); - - return lSuccess; - } - - /** Evaluate the value of an operator parameter. - * \param pObject The object that will be evaluated. - * \param pEntryDestinationName The name of the parameter. - * This is used to get the property or operator that is related to this parameter, - * then to evaluate the property or operator. - * \param pResult A pointer to the result. - * \return \c true on success, \c false otherwise. - * \remarks This method can handle different types of entries. For property entry and constant entry, - * this method will find out the property via the pEntryDestinationName and then evaluate its value; - * for operator entry, this method will find out the operator via the pEntryDestinationName and - * evaluate the operator function to get the property's value; for any other types of entry, this method - * is meaningless. - */ - template - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = EvaluateEntry(pObject, pEntryDestinationName, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** This property stores the name of function. - * - * Default value is "". - */ - FbxPropertyT FunctionName; - - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Function name. - static const char* sFunctionName; - //! Target name. - static const char* sTargetName; - - //! Default value for function name. - static const char* sDefaultFunctionName; - //! Default value for target name. - static const char* sDefaultTargetName; - - - ////////////////////////////////////////////////////////////////////////// - // Functions - ////////////////////////////////////////////////////////////////////////// - - /** \internal - * - */ - static void RegisterFunctions(); - - /** \internal - * - */ - static void UnregisterFunctions(); - - - /** It represents a binding relationship between current object and the target. - * Any binding operation need to specify a certain kind of binding function. - * \nosubgrouping - */ - class FBXSDK_DLL Function - { - public: - //!Destructor. - virtual ~Function() {} - - /** Run the operator on the given object. - * \param pOperator The operator that will be applied. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - * The caller must call FreeEvaluationResult() when it is done with this pointer. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const = 0; - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pOperator The operator that will be applied. - * \param pTarget The object that will be evaluated. - * \param pIn - * \param pOut - * \param pOutType Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const = 0; - }; - - /** The abstract factory class for binding function. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionCreatorBase - { - public: - //!Destructor. - virtual ~FunctionCreatorBase() {} - - /** Get name of the function. - * \return The name of the function. - */ - virtual const char* GetFunctionName() const = 0; - - /** Create the function. - */ - virtual Function* CreateFunction() const = 0; - }; - - /** The concrete factory class for binding function. - * \nosubgrouping - */ - template - class FunctionCreator : public FunctionCreatorBase - { - public: - - /** Get Name of the operation function. - * \return The Name of the operation function. - */ - virtual const char* GetFunctionName() const - { - return FUNCTION::FunctionName; - } - - /** Create the operation function. - */ - virtual Function* CreateFunction() const - { - return FbxNew< FUNCTION >(); - } - }; - - /** This utility class is used to register and unregister the binding function creators. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionRegistry - { - public: - /** To register the binding function creator. - * \param pCreator The binding function creator to register. - */ - static void RegisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Insert(pCreator.GetFunctionName(), &pCreator); - } - - /** To unregister the binding function creator. - * \param pCreator The binding function creator to unregister. - */ - static void UnregisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Remove(pCreator.GetFunctionName()); - } - - /** To find the binding function creator by name. - * \param pName The name of the operation function creator to find. - */ - static const FunctionCreatorBase* FindCreator(const char* pName) - { - RegistryType::RecordType* lRecord = sRegistry.Find(pName); - - if (lRecord) - { - return lRecord->GetValue(); - } - else - { - return NULL; - } - } - - private: - typedef FbxMap RegistryType; - static RegistryType sRegistry; - }; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, EFbxType* pResultType, void** pResult) const; - bool GetEntryProperty(const FbxObject* pObject, const char* pEntryDestinationName, FbxProperty & pProp) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - void InstantiateFunction(); - bool Evaluate(const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - bool ReverseEvaluate(const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - void FreeEvaluationResult(EFbxType pResultType, void* pResult) const; - - Function* mFunction; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** An evaluation operator to get the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - */ -class FBXSDK_DLL FbxNodePositionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodePositionBOF(); - virtual ~FbxNodePositionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** An evaluation operator to get the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - */ -class FBXSDK_DLL FbxNodeDirectionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeDirectionBOF(); - virtual ~FbxNodeDirectionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A pass through operator used to assign constants to parameters. -*/ -class FBXSDK_DLL FbxAssignBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" and returns it. - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAssignBOF(); - virtual ~FbxAssignBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A conditional operator that outputs one out of two properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxConditionalBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * If the property value is true (!= 0, != ""), returns the value of the - * property specified by "ifTrue", else returns the value of the property - * specified by "ifFalse". - * - * Currently the data types supported for the input property are - * limited to "integer", "boolean", "float", "double" and "string". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxConditionalBOF(); - virtual ~FbxConditionalBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A switch operator that outputs one out of n properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSwitchBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * Returns the value of the property specified by "case_n", where n - * is the value of "predicate". If there is no case_n entry, returns - * the value of the property specified by "default". - * - * Currently the data types supported for the predicate property are - * limited to "integer" and "boolean". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSwitchBOF(); - virtual ~FbxSwitchBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxTRSToMatrixBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "T", "R" and "S" and - * return a transform matrix. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxTRSToMatrixBOF(); - virtual ~FbxTRSToMatrixBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxAddBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X+Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAddBOF(); - virtual ~FbxAddBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxSubstractBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X-Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSubstractBOF(); - virtual ~FbxSubstractBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - //Set index to 1 to get realWorldScale. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyBOF(); - virtual ~FbxMultiplyBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyDistBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyDistBOF(); - virtual ~FbxMultiplyDistBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxOneOverXBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" - * return 1/X as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxOneOverXBOF(); - virtual ~FbxOneOverXBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPowerBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X^Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPowerBOF(); - virtual ~FbxPowerBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxDegreeToRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDegreeToRadianBOF(); - virtual ~FbxDegreeToRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxVectorDegreeToVectorRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a vector3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxVectorDegreeToVectorRadianBOF(); - virtual ~FbxVectorDegreeToVectorRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxSphericalToCartesianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "rho", "theta" and "phi" - * return the converted Cartesian coordinates as a double3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSphericalToCartesianBOF(); - virtual ~FbxSphericalToCartesianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxIsYupBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check if the scene coordinate system is y-up - * return a bool. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIsYupBOF(); - virtual ~FbxIsYupBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -/** A symbol(string) operator that search the string table and return its corresponding unique id, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSymbolIDBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check in the symbol table the string and returns its unique ID as an integer - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSymbolIDBOF(); - virtual ~FbxSymbolIDBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A chooser operator that check spot distribution and returns the correct value, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSpotDistributionChooserBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check the enum of the spot distribution and returns the correct value - * as an int. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSpotDistributionChooserBOF(); - virtual ~FbxSpotDistributionChooserBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h deleted file mode 100644 index 9d3a817..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingsentryview.h -#ifndef _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ - -#include - -#include - -#include - -/** FbxBindingsEntryView represents binding table entry in entry tables. - * The name of the binding table can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxBindingsEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxBindingsEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxBindingsEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxBindingsEntryView(); - - /** Get the binding table's name for the binding entry. - * \return The binding table's name. - */ - const char* GetBindingTableName() const; - - /** Set the binding table's name for binding entry. - * \param pName The binding table's name to set. - */ - void SetBindingTableName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxBindingsEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h deleted file mode 100644 index 70d8793..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtable.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ - -#include - -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to corresponding destinations, usually a third party shader parameters. - * Binding represents a link between internal object(e.g. FbxObject) and - * external object(e.g. HLSL shader parameters). - * \nosubgrouping - * \see FbxBindingOperator, FbxBindingTableBase - */ -class FBXSDK_DLL FbxBindingTable : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingTable, FbxBindingTableBase); - -public: - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - /** This property stores the type of target. - * - * Default value is "". - */ - FbxPropertyT TargetType; - - /** Relative URL of file containing the shader implementation description. - * e.g.: ./shader.mi - * Default value is "". - */ - FbxPropertyT DescRelativeURL; - - /** Absolute URL of file containing the shader implementation description. - * e.g.: file:///usr/tmp/shader.mi - * Default value is "". - */ - FbxPropertyT DescAbsoluteURL; - - /** Identify the shader to use in previous description's URL. - * e.g.: MyOwnShader - * Default value is "". - */ - FbxPropertyT DescTAG; - - /** Relative URL of file containing the shader implementation code. - * e.g.: ./bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeRelativeURL; - - /** Absolute URL of file containing the shader implementation code. - * e.g.: file:///usr/tmp/bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeAbsoluteURL; - - /** Identify the shader function entry to use in previous code's URL. - * e.g.: MyOwnShaderFunc - * Default value is "". - */ - FbxPropertyT CodeTAG; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Target name. - static const char* sTargetName; - - //! Target type. - static const char* sTargetType; - - //! Relative URL for shader description. - static const char* sDescRelativeURL; - - //! Absolute URL for shader description. - static const char* sDescAbsoluteURL; - - //! Identify the shader to use in previous description's URL. - static const char* sDescTAG; - - //! Relative URL for shader code. - static const char* sCodeRelativeURL; - - //! Absolute URL for shader code. - static const char* sCodeAbsoluteURL; - - //! Identify the shader function entry to use in previous code's URL. - static const char* sCodeTAG; - - - //! Default value for target name. - static const char* sDefaultTargetName; - - //! Default value for target type. - static const char* sDefaultTargetType; - - //! Default value for relative URL for shader description. - static const char* sDefaultDescRelativeURL; - - //! Default value for absolute URL for shader description. - static const char* sDefaultDescAbsoluteURL; - - //! Default value for identifying the shader to use in previous description's URL. - static const char* sDefaultDescTAG; - - //! Default value for relative URL for shader code. - static const char* sDefaultCodeRelativeURL; - - //! Default value for absolute URL for shader code. - static const char* sDefaultCodeAbsoluteURL; - - //! Default value for identifying the shader function entry to use in previous code's URL. - static const char* sDefaultCodeTAG; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h deleted file mode 100644 index 70530de..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtablebase.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ - -#include - -#include -#include -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to destinations which can be of similar types. - * \see FbxBindingTableEntry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxBindingTableBase,FbxObject); - -public: - /** Adds a new entry to the binding table. - * \return The new entry. - */ - FbxBindingTableEntry& AddNewEntry(); - - /** Query the number of table entries. - * \return The number of entries. - */ - size_t GetEntryCount() const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry const& GetEntry( size_t pIndex ) const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry& GetEntry( size_t pIndex ); - - /** Retrieve the table entry for the given source value. - * \param pSrcName The source value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a source equal in value to pSrcName. - */ - const FbxBindingTableEntry* GetEntryForSource(const char* pSrcName) const; - - /** Retrieve the table entry for the given destination value. - * \param pDestName The destination value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a destination equal in value to pDestName. - */ - const FbxBindingTableEntry* GetEntryForDestination(const char* pDestName) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Remark: This method copies the mEntries table AND clears the UserData on the resulting copy to prevent shared memory - // data between clones/copies. - FbxObject& Copy(const FbxObject& pObject) override; - -private: - FbxDynamicArray mEntries; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h deleted file mode 100644 index 7a840f7..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtableentry.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ - -#include - -#include - -#include - -/** A binding table entry stores a binding between a source and a - * destination. Users should not instantiate this class directly, - * but always call FbxBindingTableBase::AddNewEntry() to create - * a new entry in the binding table. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableEntry -{ -public: - /** - *\name Constructor and Destructor - */ - //@{ - //!Constructor. - FbxBindingTableEntry(); - - /**Copy constructor. - * \param pEntry FbxBindingTableEntry to be copied. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry(const FbxBindingTableEntry& pEntry); - - //!Destructor. - ~FbxBindingTableEntry(); - //@} - - /** - * \name Access - */ - //@{ - /** Set the source. - * \param pSource The source to set. - */ - void SetSource( const char* pSource ); - - //!Retrieve the source. - const char* GetSource() const; - - /** Set the destination. - * \param pDestination The destination to set. - */ - void SetDestination( const char* pDestination ); - - //!Retrieve the destination. - const char* GetDestination() const; - - /** Set the source type or destination type. - * \param pType The source type or destination type to set. - * \param pAsSource Flag indicates source type or destination type to set. - */ - void SetEntryType( const char* pType, bool pAsSource ); - - /** Get the source type or destination type. - * \param pAsSource Flag indicates source type or destination type to get. - * \return Source type or destination type. - */ - const char* GetEntryType( bool pAsSource ) const; - - /** Retrieve user data pointer. - * \return User data pointer. - */ - void* GetUserDataPtr(); - - /** Retrieve user data pointer. - * \return User data pointer. - */ - const void* GetUserDataPtr() const; - - /** Set user data pointer. - * \param pData user data pointer. - */ - void SetUserDataPtr(void* pData ); - //@} - - /** Assignment operator. - * \param pEntry FbxBindingTableEntry assigned to this one. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry& operator=(const FbxBindingTableEntry& pEntry); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxString mSource; - FbxString mDestination; - FbxString mSourceType; - FbxString mDestinationType; - void* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h deleted file mode 100644 index 63f500d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstantentryview.h -#ifndef _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxConstantEntryView represents constant string entry in entry tables. - * The constant string can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxConstantEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxConstantEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxConstantEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxConstantEntryView(); - - /** Get the constant string for binding entry. - * \return The constant string. - */ - const char* GetConstantName() const; - - /** Set the constant string for binding entry. - * \param pName The constant string to set. - */ - void SetConstantName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxConstantEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxentryview.h deleted file mode 100644 index f306ca3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxentryview.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxentryview.h -#ifndef _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ - -#include - -#include - -class FbxBindingTableEntry; - -/** Entry view class represents binding entry in entry tables. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEntryView -{ -public: - - //! Entry type. - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxEntryView(); - //@} - - - /** Check whether this entry view is valid or not. - * If this entry view corresponds with an valid entry which is not NULL, and the - * entry type of this entry view is the same as that of the entry it corresponds with, - * then this entry view is valid. - * \return \c true if the entry view is valid, \c false otherwise. - */ - virtual bool IsValid() const; - - /** Create a new entry view. - * \return \c true if the entry view is created successfully, \c false otherwise. - */ - virtual bool Create(); - - /** Get the entry type of this entry view. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool mAsSource; - FbxBindingTableEntry* mEntry; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h deleted file mode 100644 index 8f69885..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ - -#include - -#include - -#include - -/** This class describes image mapping on top of geometry. - * \note To apply a texture to geometry, first connect the - * geometry to a FbxSurfaceMaterial object (e.g. FbxSurfaceLambert) - * and then connect one of its properties (e.g. Diffuse) to the - * FbxFileTexture object. - * \see FbxSurfaceLambert - * \see FbxSurfacePhong - * \see FbxSurfaceMaterial - * \note For some example code, see also the CreateTexture() function - * in the ExportScene03 of FBX SDK examples. - * \nosubgrouping - */ -class FBXSDK_DLL FbxFileTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxFileTexture, FbxTexture); - -public: - /** - * \name Texture Properties - */ - //@{ - /** This property handles the material use. - * Default value is false. - */ - FbxPropertyT UseMaterial; - - /** This property handles the Mipmap use. - * Default value is false. - */ - FbxPropertyT UseMipMap; - - /** Resets the default texture values. - * \remarks The texture file name is not reset. - */ - void Reset() override; - - /** Sets the associated texture file. - * \param pName The absolute path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid, you cannot leave the name empty. - */ - bool SetFileName(const char* pName); - - /** Sets the associated texture file. - * \param pName The relative path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid. - */ - bool SetRelativeFileName(const char* pName); - - /** Returns the absolute texture file path. - * \return The absolute texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetFileName() has not been called before. - */ - const char* GetFileName () const; - - /** Returns the relative texture file path. - * \return The relative texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetRelativeFileName() has not been called before. - */ - const char* GetRelativeFileName() const; - - /** \enum EMaterialUse Specify if texture uses model material. - */ - enum EMaterialUse - { - eModelMaterial, //! Texture uses model material. - eDefaultMaterial //! Texture does not use model material. - }; - - /** Sets the material use. - * \param pMaterialUse Specify how texture uses model material. - */ - void SetMaterialUse(EMaterialUse pMaterialUse); - - /** Returns the material use. - * \return How the texture uses model material. - */ - EMaterialUse GetMaterialUse() const; - - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxFileTexture const& pTexture) const; - - FbxString& GetMediaName(); - void SetMediaName(const char* pMediaName); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); - void SyncVideoFileName(const char* pFileName); - void SyncVideoRelativeFileName(const char* pFileName); - - FbxString mFileName; - FbxString mRelativeFileName; - FbxString mMediaName; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementation.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementation.h deleted file mode 100644 index 347cd28..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementation.h +++ /dev/null @@ -1,241 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementation.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ - -#include - -#include - -#include - -class FbxBindingOperator; -class FbxBindingTable; - -/** This object represents the shading node implementation. - * It defines basic information about the shader and the binding table(FbxBindingTable). - * For example, you can create a new FbxImplementation like this: - * \code - * FbxImplementation* lImpl = FbxImplementation::Create( &pMyScene, "MyImplementation" ); - * pMyObject.AddImplementation( lImpl ); - * pMyObject.SetDefaultImplementation( lImpl ); - * lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; //FBXSDK_RENDERING_API_DIRECTX, FBXSDK_RENDERING_API_OPENGL, FBXSDK_RENDERING_API_MENTALRAY or FBXSDK_RENDERING_API_PREVIEW - * lImpl->RenderAPIVersion = "9.0"; //API Version - * - * lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; //FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX or FBXSDK_SHADING_LANGUAGE_MRSL - * lImpl->LanguageVersion = "1.0"; //Language Version - * \endcode - * - * After the new FbxImplementation is created, you can access FbxBindingTable like this: - * \code - * FbxBindingTable* lTable = lImpl->GetTableByTargetName("root"); - * \endcode - * Also, you can access the exist FbxImplementation in FbxObject by this: - * \code - * const FbxImplementation* lImpl = GetImplementation( pMyObject, FBXSDK_IMPLEMENTATION_CGFX ); // FBXSDK_IMPLEMENTATION_PREVIEW, FBXSDK_IMPLEMENTATION_MENTALRAY, FBXSDK_IMPLEMENTATION_CGFX, FBXSDK_IMPLEMENTATION_HLSL, FBXSDK_IMPLEMENTATION_OGS or FBXSDK_IMPLEMENTATION_NONE - * \endcode - * \nosubgrouping - * \see FbxImplementationFilter - */ -class FBXSDK_DLL FbxImplementation : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxImplementation, FbxObject); - -public: - /** - * \name Target Name. - */ - //@{ - FbxString RenderName; - //@} - - /** - * \name Shader Language and API descriptions. - */ - //@{ - - /** Shader Language. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT Language; - - //! Shader Language version. - FbxPropertyT LanguageVersion; - - /** Render API. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT RenderAPI; - - //! Render API version. - FbxPropertyT RenderAPIVersion; - //@} - - - /** - * \name Binding description - */ - //@{ - - //! Name of root binding table. - FbxPropertyT RootBindingName; - - //! Property to store the shader parameters(constants) values in this implementation. - FbxProperty GetConstants() const; - - /** Add a new binding table to the table list. - * \param pTargetName The target name for the binding table. - * \param pTargetType The target type for the binding table. - * \return the new binding table. - */ - FbxBindingTable* AddNewTable( const char* pTargetName, const char* pTargetType ); - - /** Retrieves a handle on the root binding table. - * \return A const pointer to the root table or NULL if it does not exist. - */ - const FbxBindingTable* GetRootTable() const; - - /** Retrieves a handle on the root binding table. - * \return A pointer to the root table or NULL if it does not exist. - */ - FbxBindingTable* GetRootTable(); - - /** Gets the number of binding tables. - * \return the number of binding tables. - */ - int GetTableCount() const; - - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - const FbxBindingTable* GetTable( int pIndex ) const; - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - FbxBindingTable* GetTable( int pIndex ); - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A const pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetName( const char* pName ) const; - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetName( const char* pName ); - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A const pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetType( const char* pTargetName ) const; - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetType( const char* pTargetName ); - - - /** Add a new binding operator to the operator list. - * \param pTargetName The target name for the binding operator. - * \param pFunctionName The function name for the binding operator. - * \return The new operator. - */ - FbxBindingOperator* AddNewBindingOperator( const char* pTargetName, const char* pFunctionName ); - - /** Gets the number of binding operators. - * \return the number of binding operators. - */ - int GetBindingOperatorCount() const; - - /** Returns the binding operator that has the given name. - * \param pTargetName The target name of the binding operator to look for. - * \return A const pointer to the binding operator with the given name, or NULL if there is no such binding table. - */ - const FbxBindingOperator* GetOperatorByTargetName( const char* pTargetName ) const; - //@} - - - /** - * \name Static values - */ - //@{ - - // property names - - /** Shader Language name. - * \see Language - */ - static const char* sLanguage; - - /** Shader Language version. - * \see LanguageVersion - */ - static const char* sLanguageVersion; - - /** Shader render API. - * \see RenderAPI - */ - static const char* sRenderAPI; - - /** Shader render API version. - * \see RenderAPIVersion - */ - static const char* sRenderAPIVersion; - - /** Name of root binding table. - * \see RootBindingName - */ - static const char* sRootBindingName; - - /** Name of property to store the shader parameters(constants) values in this implementation. - * \see GetConstants - */ - static const char* sConstants; - - //! default value for implementation type. - static const char* sDefaultType; - - //! default value for shader language. - static const char* sDefaultLanguage; - - //! default value for shader language version. - static const char* sDefaultLanguageVersion; - - //! default value for shader render API. - static const char* sDefaultRenderAPI; - - //! default value for shader render API version. - static const char* sDefaultRenderAPIVersion; - - //! default value for root binding table name. - static const char* sDefaultRootBindingName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h deleted file mode 100644 index 85a18f4..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationfilter.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** \brief This object represents a shading node filter criteria - * based on the shading node implementation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxImplementationFilter : public FbxObjectFilter -{ - -public: - - /** The default shading API. - */ - static const char * sCHR_ANY_SHADING_API; - - /** The default shading API version. - */ - static const char * sCHR_ANY_SHADING_API_VERSION; - - /** The default shading language. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE; - - /** The default shading language version. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE_VERSION; - - - /** Constructor - * \param pShadingAPI a string containing the implementation API name: - * MentalRay - * OpenGL - * DirectX - * - * \param pShadingAPIVersion a string containing the implementation API version: - * eg. 1.0 - * - * \param pShadingLanguage a string identifying the implementation language name: - * GLSL = GL Shading Language - * HLSL = High Level Shading Language - * CGFX = CG effect(NVidia) - * RIB = RenderMan (RIB) - * etc... - * - * \param pShadingLanguageVersion a string identifying the implementation language version: - * eg. 1.0 - * - * \remarks by default the created criteria correspond to any shader - */ - FbxImplementationFilter( - const char * pShadingAPI = sCHR_ANY_SHADING_API, - const char * pShadingAPIVersion = sCHR_ANY_SHADING_API_VERSION, - const char * pShadingLanguage = sCHR_ANY_SHADING_LANGUAGE, - const char * pShadingLanguageVersion = sCHR_ANY_SHADING_LANGUAGE_VERSION - ); - - //! Destructor. - virtual ~FbxImplementationFilter(); - - /** Tells if this filter matches the given shading node implementation - * \param pObjectPtr The given shading node implementation - */ - virtual bool Match(const FbxObject * pObjectPtr) const; - - //! Stores the shading API - FbxString mShadingAPI; - - //! Stores the shading API Version - FbxString mShadingAPIVersion; - - //! Stores the shading language - FbxString mShadingLanguage; - - //! Stores the shading language version - FbxString mShadingLanguageVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - /** Utility method to determine if the given object is a shading node - * that we recognize. - */ - static bool IsShadingObject( const FbxObject* pObject ); - - /** Returns a criteria suitable for use with querying connections - * to shading nodes that we recognize, on FbxObject. - */ - static FbxCriteria Criteria(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h deleted file mode 100644 index a305164..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationutils.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ - -#include - -#include -#include -#include -#include - -#include - -/** Get FbxImplementation from FbxObject. - * \param pObject FbxObject to get FbxImplementation. - * \param pImplementationTarget Name of the implementation property to get. - * \return FbxImplementation Pointer to FbxImplementation. - */ -FBXSDK_DLL const FbxImplementation* GetImplementation( const FbxObject* pObject, const char* pImplementationTarget ); - -/** Get bound property value from FbxBindingTable. - * \param pBindingTable FbxBindingTable to get bound property value. - * \param pEntryName Name of the Entry type to get. - * \param pImplementation FbxImplementation of the bound property value to get if the Entry type is FbxOperatorEntryView::sEntryType. - * \param pBoundObject FbxObject of the bound property value to get if the Entry type is FbxPropertyEntryView::sEntryType. - * \param pValue Pointer to bound property value from FbxBindingTable. - * \return Whether get bound property value success or not. - */ -template bool GetBoundPropertyValue(const FbxBindingTable* pBindingTable, - const char* pEntryName, - const FbxImplementation* pImplementation, - const FbxObject* pBoundObject, - T& pValue) -{ - if ((NULL != pImplementation) && (NULL != pBindingTable) && (NULL != pBoundObject) && (NULL != pEntryName)) - { - const FbxBindingTableEntry* lEntry = pBindingTable->GetEntryForDestination(pEntryName); - - if (NULL != lEntry) - { - if (strcmp(lEntry->GetEntryType(true), FbxPropertyEntryView::sEntryType) == 0) - { - const char* lPropName = lEntry->GetSource(); - FbxProperty lProp = pBoundObject->FindPropertyHierarchical(lPropName); - if (lProp.IsValid()) - { - pValue = lProp.Get(); - return true; - } - } - else if (strcmp(lEntry->GetEntryType(true), FbxOperatorEntryView::sEntryType) == 0) - { - const char* lOperatorName = lEntry->GetSource(); - const FbxBindingOperator* lOp = pImplementation->GetOperatorByTargetName(lOperatorName); - if (lOp) - { - return lOp->Evaluate(pBoundObject, &pValue); - } - } - } - } - - return false; -} - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h deleted file mode 100644 index 818eb7b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayeredtexture.h -#ifndef _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ - -#include - -#include - -#include - -/** FbxLayeredTexture is a combination of multiple textures(FbxTexture) blended sequentially. - * For example, you can access individual texture by: - * \code - * FbxTexture* pIndiTexture = lLayeredTexture->GetSrcObject(FbxTexture::ClassId, pTextureIndex); - * \endcode - * Another example to construct a layered texture with two sub textures. - * \code - * FbxFileTexture *background, *file1; - * FbxLayeredTexture* layeredTexture; - * - * // connect two file textures to a layered texture via OO connections - * layeredTexture->ConnectSrcObject(background); - * layeredTexture->ConnectSrcObject(file1); - * - * // set the second file texture's blend mode and alpha. - * layeredTexture->SetTextureBlendMode(1, FbxLayeredTexture::eOver); - * layeredTexture->SetTextureAlpha(1, 0.5); - * \endcode - * \nosubgrouping - * \see FbxTexture - */ -class FBXSDK_DLL FbxLayeredTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxLayeredTexture, FbxTexture); - -public: - /** \enum EBlendMode Blend modes. - * - \e eTranslucent, The new texture layer is transparent (depending on the Alpha value). - * - \e eAdditive, Add the color of the new texture to the previous texture. - * - \e eModulate, Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2, Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver, Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount, Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdditive, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Equivalence operator. - * \param pOther The object for comparison. - * \return \c True if pOther is equivalent to this object, returns \c false otherwise. - */ - bool operator==( const FbxLayeredTexture& pOther ) const; - - /** Sets the blending mode of a specified texture. - * \param pIndex The texture index. - * \param pMode The blend mode to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureBlendMode( int pIndex, EBlendMode pMode ); - - /** Returns the blending mode of a specified texture - * \param pIndex The texture index. - * \param pMode The parameter that will hold the returned blend mode. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureBlendMode( int pIndex, EBlendMode& pMode ) const; - - /** Sets the alpha of a specified texture. - * \param pIndex The texture index. - * \param pAlpha The alpha to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureAlpha( int pIndex, double pAlpha ); - - /** Returns the alpha of a specified texture - * \param pIndex The texture index. - * \param pAlpha The parameter that will hold the returned alpha. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureAlpha( int pIndex, double& pAlpha ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - struct InputData - { - EBlendMode mBlendMode; - double mAlpha; - }; - -public: - FbxArray mInputData; - -protected: - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - bool RemoveInputData( int pIndex ); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLayeredTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h deleted file mode 100644 index 0d20fff..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayerentryview.h -#ifndef _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ - -#include - -#include -#include -#include - -#include - -class FbxLayerContainer; - -/** FbxLayerEntryView encodes a layer element representation (the index of the layer, the type of the layer - * element and whether the layer element is a UVSet layer element) to a string stored in FbxBindingTableEntry - * and decodes the string back to a layer element representation. - * This class is used in combination with FbxBindingTableEntry to represent a source or a destination - * FbxLayerElement. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxLayerEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxLayerEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxLayerEntryView(FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxLayerEntryView(); - - /** Set the layer element for the binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void SetLayerElement( int pLayerIndex, FbxLayerElement::EType pType, bool pUVSet ); - - /** Get the layer element for binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void GetLayerElement( int &pLayerIndex, FbxLayerElement::EType& pType, bool& pUVSet ) const; - - /** Get the layer element for binding entry. - * \param pContainer FbxLayerContainer to get the layer element from. - * \return The layer element for binding entry. - */ - FbxLayerElement* GetLayerElement( FbxLayerContainer* pContainer ) const; - - /** Get the entry type. - * \return Entry type as string "FbxLayerEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - static const char* sDelimiter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h deleted file mode 100644 index 07cfdf3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxoperatorentryview.h -#ifndef _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxOperatorEntryView represents binding operator entry in entry tables. - * The binding operator can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxOperatorEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxOperatorEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxOperatorEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxOperatorEntryView(); - - /** Get the operator name from the binding entry. - * \return The operator name. - */ - const char* GetOperatorName() const; - - /** Set the operator name to the binding entry. - * \param pName The operator name to set. - */ - void SetOperatorName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxOperatorEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h deleted file mode 100644 index 10e36fe..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduraltexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Contains the information to generate a texture procedurally. Data information for the texture - * generation is contained in a blob property. - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralTexture, FbxTexture); - - public: - /** - * \name Procedural Texture Properties - */ - //@{ - - /** This property handles the raw data for generating procedural texture. - */ - FbxPropertyT BlobProp; - - /** Resets the default procedural texture values. - */ - void Reset() override; - - //@} - - /** - * \name Property Access Methods - */ - //@{ - - /** Sets the blob. - * \param pBlob Blob containing information for the procedural texture - */ - void SetBlob(FbxBlob& pBlob); - - /** Get the blob. - * \return Blob containing information for the procedural texture - */ - FbxBlob GetBlob() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxProceduralTexture const& pTexture) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h deleted file mode 100644 index c3fcb77..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyentryview.h -#ifndef _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxPropertyEntryView represents property entry in entry tables. - * The property can be used as source or destination for the binding entry. - * Use this class to manipulate binding table's attributes. - * - * \code Here is a code snippet to show how it used. - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lView( lEntry, true, true); - * lView.SetProperty( lProp.GetName()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxPropertyEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxPropertyEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxPropertyEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxPropertyEntryView(); - //@} - - /** Get the property name from the binding entry. - * \return The property name. - */ - const char* GetProperty() const; - - /** Set the property name to the binding entry. - * \param pPropertyName The property name to set. - */ - void SetProperty(const char* pPropertyName); - - /** Get the entry type. - * \return Entry type as string "FbxPropertyEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h deleted file mode 100644 index a852cd2..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsemanticentryview.h -#ifndef _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxSemanticEntryView stores a binding corresponding to - * a semantic within a shader file. - * A shader semantic is a parameter, a constant or an operator. - * So a shader semantic could bind with FbxProperty ( parameter, constant) and FbxBindingOperator (operator). - * - * Here is a code snippet to show how it used. - * \code - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lSrcView( lEntry, true, true); - * lSrcView.SetProperty( lProp.GetHierarchicalName()); - * FbxSemanticEntryView lDstView( &pEntry, false, true ); - * lDstView.SetSemantic( lProp.Getname()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSemanticEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxSemanticEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxSemanticEntryView (FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false); - - //! Destructor. - virtual ~FbxSemanticEntryView(); - //@} - - /** Set the semantic to the binding entry. - * \param pSemantic The semantic string to set. - */ - void SetSemantic( const char* pSemantic ); - - /** Get the semantic from the binding entry. - * \param pAppendIndex \c true if the returned semantic append a index, \c false otherwise. - * \return The semantic. - */ - FbxString GetSemantic(bool pAppendIndex = true) const; - - /** Get the semantic index suffix. - * \return Semantic index suffix. - */ - int GetIndex() const; - - /** Get the entry type. - * \return Entry type as string "FbxSemanticEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h deleted file mode 100644 index 010ec50..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshadingconventions.h -#ifndef _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ -#define _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ - -#include - -#include - -//Predefined shader languages -#define FBXSDK_SHADING_LANGUAGE_HLSL "HLSL" -#define FBXSDK_SHADING_LANGUAGE_GLSL "GLSL" -#define FBXSDK_SHADING_LANGUAGE_CGFX "CGFX" -#define FBXSDK_SHADING_LANGUAGE_SFX "SFX" -#define FBXSDK_SHADING_LANGUAGE_MRSL "MentalRaySL" - -//Predefined rendering APIs -#define FBXSDK_RENDERING_API_DIRECTX "DirectX" -#define FBXSDK_RENDERING_API_OPENGL "OpenGL" -#define FBXSDK_RENDERING_API_MENTALRAY "MentalRay" -#define FBXSDK_RENDERING_API_PREVIEW "PreviewColorAPI" - -#define FBXSDK_IMPLEMENTATION_PREVIEW "ImplementationPreview" -#define FBXSDK_IMPLEMENTATION_MENTALRAY "ImplementationMentalRay" -#define FBXSDK_IMPLEMENTATION_CGFX "ImplementationCGFX" -#define FBXSDK_IMPLEMENTATION_HLSL "ImplementationHLSL" -#define FBXSDK_IMPLEMENTATION_SFX "ImplementationSFX" -#define FBXSDK_IMPLEMENTATION_OGS "ImplementaitonOGS" -#define FBXSDK_IMPLEMENTATION_NONE "ImplementationNone" - -//PROTEIN 1.0 conventions -#define FBXSDK_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FBXSDK_TYPE_LIGHT "KFbxLight" -#define FBXSDK_TYPE_PROCEDURALGEOMETRY "KFbxProceduralGeometry" -#define FBXSDK_TYPE_SURFACEMATERIAL "KFbxSurfaceMaterial" -#define FBXSDK_TYPE_TEXTURE "KFbxTexture" -#define FBXSDK_TYPE_SWATCHSCENE "KFbxSwatchScene" - -//PROTEIN 2.0 conventions -#define ADSK_TYPE_ENVIRONMENT "ADSKEnvironmentDefinition" -#define ADSK_TYPE_LIGHT "ADSKLightDefinition" -#define ADSK_TYPE_PROCEDURALGEOMETRY "ADSKProceduralGeometryDefinition" -#define ADSK_TYPE_SURFACEMATERIAL "ADSKSurfaceMaterialDefinition" -#define ADSK_TYPE_TEXTURE "ADSKTextureDefinition" -#define ADSK_TYPE_SWATCHSCENE "ADSKSwatchSceneDefinition" - -//ASSET Definition conventions -#define ADSK_UI_DEFINITION_URL "UIDefinition" - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h deleted file mode 100644 index 85d3c79..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacelambert.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ - -#include - -#include - -#include - -/** This class contains settings for Lambert Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceLambert : public FbxSurfaceMaterial -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceLambert,FbxSurfaceMaterial); - -public: - /** - * \name Material properties - */ - //@{ - - //! Emissive color property. - FbxPropertyT Emissive; - - /** Emissive factor property. This factor is used to - * attenuate the emissive color. - */ - FbxPropertyT EmissiveFactor; - - //! Ambient color property. - FbxPropertyT Ambient; - - /** Ambient factor property. This factor is used to - * attenuate the ambient color. - */ - FbxPropertyT AmbientFactor; - - //! Diffuse color property. - FbxPropertyT Diffuse; - - /** Diffuse factor property. This factor is used to - * attenuate the diffuse color. - */ - FbxPropertyT DiffuseFactor; - - /** NormalMap property. This property can be used to specify the distortion of the surface - * normals and create the illusion of a bumpy surface. - */ - FbxPropertyT NormalMap; - - /** Bump property. This property is used to distort the - * surface normal and create the illusion of a bumpy surface. - */ - FbxPropertyT Bump; - - /** Bump factor property. This factor is used to - * make a surface more or less bumpy. - */ - FbxPropertyT BumpFactor; - - //! Transparent color property. - FbxPropertyT TransparentColor; - - /** Transparency factor property. This property is used to make a - * surface more or less opaque (0 = opaque, 1 = transparent). - */ - FbxPropertyT TransparencyFactor; - - //! Displacement color property. - FbxPropertyT DisplacementColor; - - //! Displacement factor property. - FbxPropertyT DisplacementFactor; - - //! Vector displacement color property. - FbxPropertyT VectorDisplacementColor; - - //! Vector displacement factor property. - FbxPropertyT VectorDisplacementFactor; - - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sEmissiveDefault; - static const FbxDouble sEmissiveFactorDefault; - - static const FbxDouble3 sAmbientDefault; - static const FbxDouble sAmbientFactorDefault; - - static const FbxDouble3 sDiffuseDefault; - static const FbxDouble sDiffuseFactorDefault; - - static const FbxDouble3 sBumpDefault; - static const FbxDouble3 sNormalMapDefault; - static const FbxDouble sBumpFactorDefault; - - static const FbxDouble3 sTransparentDefault; - static const FbxDouble sTransparencyFactorDefault; - - static const FbxDouble3 sDisplacementDefault; - static const FbxDouble sDisplacementFactorDefault; - - static const FbxDouble3 sVectorDisplacementDefault; - static const FbxDouble sVectorDisplacementFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h deleted file mode 100644 index 5fff3f3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacematerial.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ - -#include - -#include - -#include - -/** This class contains material settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceMaterial : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceMaterial, FbxObject); - -public: - /** - * \name Standard Material Property Names - */ - //@{ - - static const char* sShadingModel; - static const char* sMultiLayer; - - static const char* sEmissive; - static const char* sEmissiveFactor; - - static const char* sAmbient; - static const char* sAmbientFactor; - - static const char* sDiffuse; - static const char* sDiffuseFactor; - - static const char* sSpecular; - static const char* sSpecularFactor; - static const char* sShininess; - - static const char* sBump; - static const char* sNormalMap; - static const char* sBumpFactor; - - static const char* sTransparentColor; - static const char* sTransparencyFactor; - - static const char* sReflection; - static const char* sReflectionFactor; - - static const char* sDisplacementColor; - static const char* sDisplacementFactor; - - static const char* sVectorDisplacementColor; - static const char* sVectorDisplacementFactor; - //@} - - /** - * \name Material Properties - */ - //@{ - FbxPropertyT ShadingModel; - FbxPropertyT MultiLayer; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxBool sMultiLayerDefault; - static const char* sShadingModelDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool SetColorParameter(FbxProperty pProperty, FbxColor const& pColor); - bool GetColorParameter(FbxProperty pProperty, FbxColor& pColor) const; - bool SetDoubleParameter(FbxProperty pProperty, double pDouble); - bool GetDoubleParameter(FbxProperty pProperty, double pDouble) const; - - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h deleted file mode 100644 index d7c952b..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacephong.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ - -#include - -#include - -#include - -/** This class contains settings for Phong Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfacePhong : public FbxSurfaceLambert -{ - FBXSDK_OBJECT_DECLARE(FbxSurfacePhong, FbxSurfaceLambert); - -public: - /** - * \name Material properties - */ - //@{ - //! Specular property. - FbxPropertyT Specular; - - /** Specular factor property. This factor is used to - * attenuate the specular color. - */ - FbxPropertyT SpecularFactor; - - /** Shininess property. This property controls the aspect - * of the shiny spot. It is the specular exponent in the Phong - * illumination model. - */ - FbxPropertyT Shininess; - - /** Reflection color property. This property is used to - * implement reflection mapping. - */ - FbxPropertyT Reflection; - - /** Reflection factor property. This property is used to - * attenuate the reflection color. - */ - FbxPropertyT ReflectionFactor; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sSpecularDefault; - static const FbxDouble sSpecularFactorDefault; - - static const FbxDouble sShininessDefault; - - static const FbxDouble3 sReflectionDefault; - static const FbxDouble sReflectionFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxtexture.h b/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxtexture.h deleted file mode 100644 index 6e34461..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/scene/shading/fbxtexture.h +++ /dev/null @@ -1,577 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_H_ - -#include - -#include - -#include - -/** This class is the base class for textures, ie classes FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * It describes image mapping on top of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxTexture : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxTexture, FbxObject); - -public: - /** - * \name Texture Properties - */ - //@{ - /** \enum EUnifiedMappingType Internal enum for texture mapping types. - * Includes mapping types and planar mapping normal orientations. - * Use SetMappingType(), GetMappingType(), SetPlanarMappingNormal() - * and GetPlanarMappingNormal() to access these values. - */ - enum EUnifiedMappingType - { - eUMT_UV, //! Maps to EMappingType::eUV. - eUMT_XY, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalZ. - eUMT_YZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalX. - eUMT_XZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalY. - eUMT_SPHERICAL, //! Maps to EMappingType::eSpherical. - eUMT_CYLINDRICAL, //! Maps to EMappingType::eCylindrical. - eUMT_ENVIRONMENT, //! Maps to EMappingType::eEnvironment. - eUMT_PROJECTION, //! Unused. - eUMT_BOX, //! DEPRECATED! Maps to EMappingType::eBox. - eUMT_FACE, //! DEPRECATED! Maps to EMappingType::eFace. - eUMT_NO_MAPPING, //! Maps to EMappingType::eNull. - }; - - /** \enum ETextureUse6 Internal enum for texture usage. - * For example, the texture might be used as a standard texture, as a shadow map, as a bump map, etc. - * Use SetTextureUse() and GetTextureUse() to access these values. - */ - enum ETextureUse6 - { - eTEXTURE_USE_6_STANDARD, //! Maps to ETextureUse::eStandard. - eTEXTURE_USE_6_SPHERICAL_REFLEXION_MAP, //! Maps to ETextureUse::eSphericalReflectionMap. - eTEXTURE_USE_6_SPHERE_REFLEXION_MAP, //! Maps to ETextureUse::eSphereReflectionMap. - eTEXTURE_USE_6_SHADOW_MAP, //! Maps to ETextureUse::eShadowMap. - eTEXTURE_USE_6_LIGHT_MAP, //! Maps to ETextureUse::eLightMap. - eTEXTURE_USE_6_BUMP_NORMAL_MAP //! Maps to ETextureUse::eBumpNormalMap. - }; - - /** \enum EWrapMode Wrap modes. - * Use SetWrapMode(), GetWrapModeU() and GetWrapModeV() to access these values. - */ - enum EWrapMode - { - eRepeat, //! Apply the texture over and over on the model's surface until the model is covered. This is the default setting. - eClamp //! Apply the texture to a model only once, using the color at the ends of the texture as the "filter". - }; - - /** \enum EBlendMode Blend modes. - */ - enum EBlendMode - { - eTranslucent, //! The texture is transparent, depending on the Alpha settings. - eAdditive, //! The color of the texture is added to the previous texture. - eModulate, //! The color value of the texture is multiplied by the color values of all previous layers of texture. - eModulate2, //! The color value of the texture is multiplied by two and then multiplied by the color values of all previous layers of texture. - eOver //! The texture is opaque. - }; - - /** \enum EAlignMode Align indices for cropping. - */ - enum EAlignMode - { - eLeft, //! Left cropping. - eRight, //! Right cropping. - eTop, //! Top cropping. - eBottom //! Bottom cropping. - }; - - /** \enum ECoordinates Texture coordinates. - */ - enum ECoordinates - { - eU, //! U axis. - eV, //! V axis. - eW //! W axis. - }; - - // Type description - - /** This property handles the use of textures. - * Default value is eTEXTURE_USE_6_STANDARD. - */ - FbxPropertyT TextureTypeUse; - - /** This property handles the default alpha value for textures. - * Default value is 1.0 - */ - FbxPropertyT Alpha; - - - // Mapping information - - /** This property handles the texture mapping types. - * Default value is eUMT_UV. - */ - FbxPropertyT CurrentMappingType; - - /** This property handles the texture wrap modes in U. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeU; - - /** This property handles the texture wrap modes in V. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeV; - - /** This property handles the swap UV flag. - * If swap UV flag is enabled, the texture's width and height are swapped. - * Default value is false. - */ - FbxPropertyT UVSwap; - - /** This property handles the PremultiplyAlpha flag. - * If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - * Default value is true. - */ - FbxPropertyT PremultiplyAlpha; - - // Texture positioning - - /** This property handles the default translation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Translation; - - /** This property handles the default rotation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Rotation; - - /** This property handles the default scale vector. - * Default value is FbxDouble3(1.0,1.0,1.0). - */ - FbxPropertyT Scaling; - - /** This property handles the rotation pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT RotationPivot; - - /** This property handles the scaling pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT ScalingPivot; - - // Blend mode - /** This property handles the texture blend mode. - * Default value is eAdditive. - */ - FbxPropertyT CurrentTextureBlendMode; - - // UV set to use. - /** This property handles the use of UV sets. - * Default value is "default". - */ - FbxPropertyT UVSet; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "World", "Object" and "Tangent" - * Default value is "Object". - */ - static const char* sVectorSpace ; - static const char* sVectorSpaceWorld ; - static const char* sVectorSpaceObject ; - static const char* sVectorSpaceTangent ; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "Floating-point Absolute" and "Signed Encoding" - * Default value is "Floating-point Absolute". - */ - static const char* sVectorEncoding ; - static const char* sVectorEncodingFP ; - static const char* sVectorEncodingSE ; - - - /** Resets the default texture values. - */ - virtual void Reset(); - - /** Sets the swap UV flag. - * \param pSwapUV Set to \c true if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - void SetSwapUV(bool pSwapUV); - - /** Returns the swap UV flag. - * \return \c True if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - bool GetSwapUV() const; - - /** Sets the PremultiplyAlpha flag. - * \param pPremultiplyAlpha Set to \c true if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - void SetPremultiplyAlpha(bool pPremultiplyAlpha); - - /** Returns the PremultiplyAlpha flag. - * \return \c True if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - bool GetPremultiplyAlpha() const; - - /** \enum EAlphaSource Controls if the Alpha computation of the current texture comes from the Alpha channel, RGB Intensity channel, or if there is No Alpha. - */ - enum EAlphaSource - { - eNone, //! No Alpha. - eRGBIntensity, //! RGB Intensity (computed). - eBlack //! Alpha channel. Black is 100% transparency, white is opaque. - }; - - /** Sets the alpha source. - * \param pAlphaSource The alpha source identifier. - */ - void SetAlphaSource(EAlphaSource pAlphaSource); - - /** Returns the alpha source. - * \return The alpha source identifier for this texture. - */ - EAlphaSource GetAlphaSource() const; - - /** Sets cropping. - * \param pLeft Left cropping value. - * \param pTop Top cropping value. - * \param pRight Right cropping value. - * \param pBottom Bottom cropping value. - * \remarks The defined rectangle is not checked for invalid values. - * The caller must verify that the rectangle - * is meaningful for this texture. - */ - void SetCropping(int pLeft, int pTop, int pRight, int pBottom); - - /** Returns left cropping. - * \return The left side of the cropping rectangle. - */ - int GetCroppingLeft() const; - - /** Returns top cropping. - * \return The top side of the cropping rectangle. - */ - int GetCroppingTop() const; - - /** Returns right cropping. - * \return The right side of the cropping rectangle. - */ - int GetCroppingRight() const; - - /** Returns bottom cropping. - * \return The bottom side of the cropping rectangle. - */ - int GetCroppingBottom() const; - - /** \enum EMappingType Texture mapping types. - */ - enum EMappingType - { - eNull, //! No texture mapping defined. - ePlanar, //! Apply texture to the model viewed as a plane. - eSpherical, //! Wrap texture around the model as if it was a sphere. - eCylindrical, //! Wrap texture around the model as if it was a cylinder. - eBox, //! Wrap texture around the model as if it was a box. - eFace, //! Apply texture to the model viewed as a face. - eUV, //! Apply texture to the model according to UVs. - eEnvironment //! Texture is an environment map. - }; - - /** Sets the mapping type. - * \param pMappingType The mapping type identifier. - */ - void SetMappingType(EMappingType pMappingType); - - /** Returns the mapping type. - * \return The mapping type identifier. - */ - EMappingType GetMappingType() const; - - /** \enum EPlanarMappingNormal Planar mapping normal orientations. - */ - enum EPlanarMappingNormal - { - ePlanarNormalX, //! Normals are in the direction of the X axis, mapping plan is in the YZ axis. - ePlanarNormalY, //! Normals are in the direction of the Y axis, mapping plan is in the XZ axis. - ePlanarNormalZ //! Normals are in the direction of the Z axis, mapping plan is in the XY axis. - }; - - /** Sets the normal orientations for planar mapping. - * \param pPlanarMappingNormal The identifier for planar mapping normal orientation. - */ - void SetPlanarMappingNormal(EPlanarMappingNormal pPlanarMappingNormal); - - /** Returns the normal orientations for planar mapping. - * \return The identifier for planar mapping normal orientation. - */ - EPlanarMappingNormal GetPlanarMappingNormal() const; - - /** \enum ETextureUse Texture uses. - */ - enum ETextureUse - { - eStandard, //! Standard texture use (ex. image) - eShadowMap, //! Shadow map - eLightMap, //! Light map - eSphericalReflectionMap, //! Spherical reflection map: Object reflects the contents of the scene - eSphereReflectionMap, //! Sphere reflection map: Object reflects the contents of the scene from only one point of view - eBumpNormalMap //! Bump map: Texture contains two direction vectors, that are used to convey relief in a texture. - }; - - /** Sets the texture use. - * \param pTextureUse The texture use identifier. - */ - void SetTextureUse(ETextureUse pTextureUse); - - /** Returns the texture use. - * \return The texture use identifier. - */ - ETextureUse GetTextureUse() const; - - - /** Sets the U and V wrap mode. - * \param pWrapU Wrap mode identifier. - * \param pWrapV Wrap mode identifier. - */ - void SetWrapMode(EWrapMode pWrapU, EWrapMode pWrapV); - - /** Returns the U wrap mode. - * \return U wrap mode identifier. - */ - EWrapMode GetWrapModeU() const; - - /** Returns the V wrap mode. - * \return V wrap mode identifier. - */ - EWrapMode GetWrapModeV() const; - - - /** Sets the blend mode. - * \param pBlendMode Blend mode identifier. - */ - void SetBlendMode(EBlendMode pBlendMode); - - /** Returns the blend mode. - * \return Blend mode identifier. - */ - EBlendMode GetBlendMode() const; - - //@} - - /** - * \name Default Values Management By Vectors - * This set of functions provides direct access to the default values in vector base. - */ - //@{ - - /** Sets the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - */ - inline void SetDefaultT(const FbxVector4& pT) { Translation.Set( pT ); } - - /** Returns the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - * \return The input parameter completed with appropriate data. - */ - FbxVector4& GetDefaultT(FbxVector4& pT) const; - - /** Sets the default rotation vector. - * \param pR The first element is the texture rotation around the - * U axis in degrees. The second element is the texture rotation - * around the V axis in degrees. The third element is the texture - * rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the - * vector product of the U and V axes that is W = U x V. - */ - inline void SetDefaultR(const FbxVector4& pR) { Rotation.Set( FbxDouble3(pR[0],pR[1],pR[2]) ); } - - /** Returns the default rotation vector. - * \param pR First element is the texture rotation around the - * U axis in degrees. Second element is the texture rotation - * around the V axis in degrees. Third element is the texture - * rotation around the W axis in degrees. - * \return Input parameter filled with appropriate data. - * \remarks The W axis is oriented towards the result of the - * vector product of the U axis and V axis i.e. W = U x V. - */ - FbxVector4& GetDefaultR(FbxVector4& pR) const; - - /** Sets the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - inline void SetDefaultS(const FbxVector4& pS) { Scaling.Set( FbxDouble3(pS[0],pS[1],pS[2]) ); } - - /** Returns the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - FbxVector4& GetDefaultS(FbxVector4& pS) const; - - //@} - - /** - * \name Default Alpha Value - */ - //@{ - - /** Sets the default alpha. - * \param pAlpha A value on a scale from 0 to 1, with 0 being transparent. - */ - void SetDefaultAlpha(double pAlpha); - - /** Returns the default alpha. - * \return A value on a scale from 0 to 1, with 0 being transparent. - */ - double GetDefaultAlpha() const; - - //@} - - /** - * \name Default Values Management By Numbers - * This set of functions provides direct access to the default values in number base. - * U, V and W coordinates are mapped to the X, Y and Z coordinates of the default vectors - * found in the "Default Values By Vector" section. - */ - //@{ - - /** Sets translation. - * \param pU Horizontal translation applied to a texture. A displacement - * of one unit is equal to the texture's width after applying U scaling. - * \param pV Vertical translation applied to a texture. A displacement - * of one unit is equal to the texture's height after applying V scaling. - */ - void SetTranslation(double pU,double pV); - - /** Returns translation applied to the texture width. - * \remarks A displacement of one unit is equal to the texture's width - * after applying U scaling. - */ - double GetTranslationU() const; - - /** Returns translation applied to the texture height. - * \remarks A displacement of one unit is equal to the texture's height - * after applying V scaling. - */ - double GetTranslationV() const; - - /** Sets rotation. - * \param pU Texture rotation around the U axis in degrees. - * \param pV Texture rotation around the V axis in degrees. - * \param pW Texture rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the vector product of - * the U and V axes that is W = U x V. - */ - void SetRotation(double pU, double pV, double pW = 0.0); - - //! Returns the texture rotation around the U axis in degrees. - double GetRotationU() const; - - //! Returns the texture rotation around the V axis in degrees. - double GetRotationV() const; - - //! Returns the texture rotation around the W axis in degrees. - double GetRotationW() const; - - /** Sets scale. - * \param pU Scale applied to the texture width. - * \param pV Scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - void SetScale(double pU,double pV); - - /** Returns scale applied to the texture width. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleU() const; - - /** Returns scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleV() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxTexture const& pTexture) const; - - void SetUVTranslation(FbxVector2& pT); - FbxVector2& GetUVTranslation(); - void SetUVScaling(FbxVector2& pS); - FbxVector2& GetUVScaling(); - - FbxString GetTextureType(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - void Init(); - - int mCropping[4]; // not a prop - - EAlphaSource mAlphaSource; // now unused in MB (always set to None); not a prop - EMappingType mMappingType; // CurrentMappingType - EPlanarMappingNormal mPlanarMappingNormal; // CurrentMappingType - - // Unsupported parameters in the FBX SDK, these are declared but not accessible. - // They are used to keep imported and exported data identical. - FbxVector2 mUVScaling; // not a prop - FbxVector2 mUVTranslation; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTexture::EUnifiedMappingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::ETextureUse6&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EWrapMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxclonemanager.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxclonemanager.h deleted file mode 100644 index 1d18826..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxclonemanager.h +++ /dev/null @@ -1,284 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclonemanager.h -#ifndef _FBXSDK_UTILS_CLONE_MANAGER_H_ -#define _FBXSDK_UTILS_CLONE_MANAGER_H_ - -#include - -#include -#include - -#include - -/** The clone manager is a utility for cloning entire networks of FbxObject. - * Options are available for specifying how the clones inherit the connections - * of the original. - * - * Networks of FbxObject (inter-connected objects by OO, OP, PO or PP connections) - * can be cloned. How the connections of clones are handled depends on mSrcPolicy and mExternalDstPolicy. - * - * To clone FbxObject instances and their dependents, put them into a CloneSet - * and pass the CloneSet to this class: - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * cloneSet.Insert(someObject, defaultCloneOptions); - * cloneManager.AddDependents(cloneSet, someObject, defaultCloneOptions); - * cloneManager.Clone(cloneSet, scene) - * \endcode - * - * \remark If cloning occurs on the same scene as the original objects, the system will contain duplicated names. Although this is acceptable in FBX, - * some applications may not behave correctly with duplicated names. It is the responsability of the caller to resolve any conflicts. - * - * \see FbxCloneManager::CloneSetElement - * \see FbxCloneManager::CloneSet - * \nosubgrouping - */ -class FBXSDK_DLL FbxCloneManager -{ -public: - - //! Maximum depth to clone dependents. - static const int sMaximumCloneDepth; - - /** Connect to objects that are connected to original object. - * This is a flag to mSrcPolicy or mExternalDstPolicy. - */ - static const int sConnectToOriginal; - - /** Connect to clones of objects that are connected to original object. - * (only if those original objects are also in the clone set) - * This is a flag to mSrcPolicy. - */ - static const int sConnectToClone; - - /** This represents an element in FbxCloneManager::CloneSet to be cloned. - * This class contains the option for specifying how connections are cloned and the - * cloned object. - * \see FbxCloneManager - * \see FbxCloneManager::CloneSet - */ - struct FBXSDK_DLL CloneSetElement - { - public: - /** Constructor. - * \param pSrcPolicy Specify how to handle source connections. Valid values are 0, sConnectToOriginal, - * sConnectToClone or sConnectToOriginal|sConnectToClone. - * \param pExternalDstPolicy Specify how to handle destination connections to objects NOT in - * the clone set. Valid values are 0 or sConnectToOriginal. - * \param pCloneType Specify the type of cloning. FbxObject::Clone uses the same parameter. - */ - CloneSetElement( int pSrcPolicy = 0, - int pExternalDstPolicy = 0, - FbxObject::ECloneType pCloneType = FbxObject::eReferenceClone ); - - //! the type of cloning to perform - FbxObject::ECloneType mType; - - /** Policy on how to handle source connections on the original object. Valid values are 0 - * or any bitwise OR'd combination of sConnectToOriginal, and sConnectToClone. - */ - int mSrcPolicy; - - /** policy on how to handle destination connections on the original object to - * objects NOT in the clone set. (Destination connections to objects in the set - * are handled by that object's source policy) Valid values are 0 or sConnectToOriginal. - */ - int mExternalDstPolicy; - - /** This is a pointer to the newly created clone. - * It is set after the call to FbxCloneManager::Clone() - */ - FbxObject* mObjectClone; - - /** Internal use. - */ - bool mLayerElementProcessed; - bool mConnectionsProcessed; - }; - - /** The CloneSet is a collection of pointers to objects that will be cloned in Clone() - * Attached to each object is a CloneSetElement. Its member variables dictate how - * the corresponding object will be cloned, and how it will inherit connections - * on the original object. - */ - typedef FbxMap CloneSet; - - /** Constructor - */ - FbxCloneManager(); - - /** Destructor - */ - virtual ~FbxCloneManager(); - - /** This function simplifies the process of cloning one object and all its depedency graph by automatically preparing - * the CloneSet and calling the Clone method using the code below. - * - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * FbxObject* lReturnObj = (FbxObject*)pObject; - * - * cloneManager.AddDependents(cloneSet, pObject, defaultCloneOptions, FbxCriteria::ObjectType(FbxObject::ClassId)); - * cloneSet.Insert((FbxObject*)pObject, defaultCloneOptions); - * - * // collect all the FbxCharacters, if any (these are indirect dependencies not visible by the AddDependents recursion) - * FbxArray lExtras; - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lObj = lIterator->GetKey(); - * cloneManager.LookForIndirectDependent(lObj, cloneSet, lExtras); - * lIterator = lIterator->Successor(); - * } - * - * // and add them to cloneSet - * for (int i = 0, c = lExtras.GetCount(); i < c; i++) - * { - * FbxObject* lObj = lExtras[i]; - * cloneManager.AddDependents(cloneSet, lObj, defaultCloneOptions); - * cloneSet.Insert(lObj, defaultCloneOptions); - * } - * - * // clone everything - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // get the clone of pObject - * CloneSet::RecordType* lIterator = cloneSet.Find((FbxObject* const)pObject); - * if( lIterator ) - * { - * lReturnObj = lIterator->GetValue().mObjectClone; - * } - * } - * return lReturnObj; - * \endcode - * - * \param pObject Object to clone. - * \param pContainer This object (typically a scene or document) will contain the new clones. - * \return The clone of \e pObject if all its depedency graph have been cloned successfully, NULL otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - * - * Example: - * \code - * FbxObject* lObj2BCloned = ... - * FbxNode* myNewParent = FbxNode::Create(lNewScene, "Clone"); - * lNewScene->GetRootNode()->AddChild(lN); - * - * FbxCloneManager cloneManager; - * FbxNode *lClone = (FbxNode*)cloneManager.Clone(lObj2BCloned); - * - * // make sure the cloned object is connected to the scene - * lClone->ConnectDstObject(lNewScene); - * \endcode - */ - static FbxObject* Clone(const FbxObject* pObject, FbxObject* pContainer = NULL); - - /** Clone all objects in the set using the given policies for duplication - * of connections. Each CloneSetElement in the set will have its mObjectClone - * pointer set to the newly created clone. The following code shows how to access the cloned objects: - * - * \code - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // access the clones - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lOriginalObject = lIterator->GetKey(); - * FbxObject* lClonedObject = lIterator->GetValue().mObjectClone; - * lIterator = lIterator->Successor(); - * } - * } - * \endcode - * - * \param pSet Set of objects to clone - * \param pContainer This object (typically a scene or document) will contain the new clones - * \return true if all objects were cloned, false otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - */ - virtual bool Clone( CloneSet& pSet, FbxObject* pContainer = NULL ) const; - - /** Add all dependents of the given object to the CloneSet. - * Dependents of items already in the set are ignored to prevent - * infinite recursion on cyclic dependencies. - * \param pSet The set to add items. - * \param pObject Object to add dependents to - * \param pCloneOptions - * \param pTypes Types of dependent objects to consider - * \param pDepth Maximum recursive depth. Valid range is [0,sMaximumCloneDepth] - * - * The following example shows how to perform multiple calls to AddDependents() to collect several - * subgraphs to be cloned: - * \code - * FbxObject* lRoot = ... // initialized with the root of the graph to be cloned - * FbxCharacter* lCharacter = ... // points to the FbxCharacter driving the character defined by "lRoot" graph - * - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * - * cloneManager.AddDependents(cloneSet, lRoot); - * cloneSet.Insert(lRoot, defaultCloneOptions); - * - * cloneManager.AddDependents(cloneSet, lCharacter); - * cloneSet.Insert(lCharacter, defaultCloneOptions); - * - * \endcode - */ - virtual void AddDependents( CloneSet& pSet, - const FbxObject* pObject, - const CloneSetElement& pCloneOptions = CloneSetElement(), - FbxCriteria pTypes = FbxCriteria::ObjectType(FbxObject::ClassId), - int pDepth = sMaximumCloneDepth ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxObject* Clone(const FbxObject* pObject, CloneSet* pSet, FbxObject* pContainer = NULL); - -private: - friend class FbxScene; - - bool ReAssignLayerElements( FbxCloneManager::CloneSet::RecordType* pIterator, const FbxCloneManager::CloneSet& pSet) const; - bool CloneConnections( CloneSet::RecordType* pIterator, const CloneSet& pSet) const; - bool CheckIfCloneOnSameScene(const FbxObject* pObject, FbxObject* pContainer) const; - - virtual void LookForIndirectDependent(const FbxObject* pObject, CloneSet& pSet, FbxArray& lIndirectDepend); - virtual bool NeedToBeExcluded(FbxObject* lObj) const; - - bool mCloneOnSameScene; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#define CloneSetCast(x) ((FbxCloneManager::CloneSet*)(x)) -#define CloneSetElementCast(x) ((FbxCloneManager::CloneSetElement*)((x!=NULL)?&(x->GetValue()):NULL)) - -#endif /* _FBXSDK_UTILS_CLONE_MANAGER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h deleted file mode 100644 index ada538f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformationsevaluator.h -#ifndef _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ -#define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ - -#include - -#include - -class FbxNode; -class FbxMesh; -class FbxTime; -class FbxAnimLayer; -class FbxPose; -class FbxCluster; -class FbxVector4; -class FbxAMatrix; -class FbxDualQuaternion; - -class FBXSDK_DLL FbxDeformationsEvaluator -{ -public: - /** Configure this object to process the given mesh. - * \param pNode Node object owner of the mesh. - * \param pMesh Processed object. - * \return \c true if \e pMesh is connected to \e pNode and the internal data allocation succeeded. */ - bool Init(const FbxNode* pNode, const FbxMesh* pMesh); - - /** If this object is properly configured, evaluates the shape deformation of the mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime); - - /** If this object is properly configured, evaluates the skin deformation of the received mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \param pGX Local to World matrix to express the returned vertices in World space. - * \param pPose If defined, use the pose to evaluate the current transform. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX=NULL, const FbxPose* pPose=NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDeformationsEvaluator(); - virtual ~FbxDeformationsEvaluator(); - -private: - void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose); - void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void Cleanup(); - - bool mIsConfigured; - FbxNode* mNode; - FbxMesh* mMesh; - FbxAnimLayer* mAnimLayer; - - int mVertexCount; - FbxVector4* mDstVertexArray; - FbxVector4* mVertexArrayLinear; - FbxVector4* mVertexArrayDQ; - - FbxAMatrix* mClusterDeformation; - double* mClusterWeight; - FbxDualQuaternion* mDQClusterDeformation; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h deleted file mode 100644 index 9656754..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxembeddedfilesaccumulator.h -#ifndef _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ -#define _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ - -#include - -#include - -#include - -/** This processor is used to accumulate the list of file dependencies (embedded files) in a hierarchy of objects. - * It retrieves information of embedded files from objects and accumulates them to its class member mEmbeddedFiles. - * \see FbxProcessor::ProcessCollection(FbxCollection *) - * \nosubgrouping - */ -class FBXSDK_DLL FbxEmbeddedFilesAccumulator : public FbxProcessor -{ -public: - /** - * Map the object to the property's hierarchical name. - * An object may use the same file on multiple properties, hence the - * set. - * Each property may have multiple URLs, separate by |. - * We thus need to store the index along with the property. - */ - //@{ - struct PropertyUrlIndex - { - FbxString mPropName; - int mIndex; - - PropertyUrlIndex() : mIndex(0) - { - } - - PropertyUrlIndex(const FbxString& pUrl, int pIndex) - : mPropName(pUrl) - , mIndex(pIndex) - { - } - }; - - //! Comparer for PropertyUrlIndexSet, which outputs consistent partial orders for PropertyUrlIndex pairs - struct FbxPropertyUrlIndexCompare - { - inline int operator()(const PropertyUrlIndex& pKeyA, const PropertyUrlIndex& pKeyB) const - { - if( pKeyA.mPropName < pKeyB.mPropName ) return -1; - if( pKeyB.mPropName < pKeyA.mPropName ) return 1; - if( pKeyA.mIndex < pKeyB.mIndex ) return -1; - if( pKeyB.mIndex < pKeyA.mIndex ) return 1; - return 0; - } - }; - - typedef FbxSet PropertyUrlIndexSet; - - typedef FbxMap ObjectPropertyMap; - - struct EmbeddedFileInfo - { - FbxString mOriginalPropertyUrl; - ObjectPropertyMap mConsumers; - }; - //@} - - /** - * Map the (absolute filename) to which object/properties use this file. - * To simply get the list of file dependencies, iterate through this map and query - * all the keys. - */ - //@{ - typedef FbxMap EmbeddedFilesMap; - - EmbeddedFilesMap mEmbeddedFiles; - //@} - -public: - - /** Constructor. - * The name is not important. - * The property filter is a list of strings, property names, which are automatically ignored when - * encountered. Property names must be the full hierarchical property name (ie: parent|child|child). - * - * \param pManager Reference to the SDK manager. - * \param pName Name of this object. - * \param pPropertyFilter Reference to the property filter. - */ - FbxEmbeddedFilesAccumulator(FbxManager& pManager, const char* pName, FbxSet& pPropertyFilter); - virtual ~FbxEmbeddedFilesAccumulator(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool internal_ProcessObject(FbxObject* pObject); - FbxSet mPropertyFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h deleted file mode 100644 index 1ecd53d..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h +++ /dev/null @@ -1,345 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryconverter.h -#ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ -#define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ - -#include - -#include - -#include - -class FbxManager; -class FbxMesh; -class FbxPatch; -class FbxNurbs; -class FbxNurbsSurface; -class FbxNurbsCurve; -class FbxWeightedMapping; -class FbxSurfaceEvaluator; -class FbxScene; -class FbxNode; -class FbxNodeAttribute; -class FbxGeometry; - -/** -* This class provides the functionality to convert geometry nodes -* attributes (FbxMesh, FbxNurbs and FbxPatch) and mainly focuses on the two -* major categories: Triangulation and conversion between NURBS and Patches surfaces. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxGeometryConverter -{ -public: - /** \name Triangulation Utilities */ - //@{ - /** Triangulate all node attributes in the scene that can be triangulated. - * \param pScene The scene to iterate through to triangulate meshes. - * \param pReplace If \c true, replace the original meshes with the new triangulated meshes on all the nodes, and delete the original meshes. Otherwise, original meshes are left untouched. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return \c true if all node attributes that can be triangulated were triangulated successfully. - * \remark The function will still iterate through all meshes regardless if one fails to triangulate, but will return false in that case. This function - * currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. */ - bool Triangulate(FbxScene* pScene, bool pReplace, bool pLegacy=false); - - /** Triangulate a node attribute, if supported, and preserve the skins and shapes animation channels. - * \param pNodeAttribute Pointer to the node containing the geometry to triangulate. - * \param pReplace If \c true, replace the original geometry with the new triangulated geometry on the nodes, and delete the original geometry. - * Otherwise, the original geometry is left untouched, the new one is added to the nodes, and becomes the default one. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return The newly created node attribute if successful, otherwise NULL. If node attribute type is not supported by triangulation, it returns the original node attribute. - * \remark This function currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. If the node attribute does not support triangulation, - * or if it is already triangulated, this function will return pNodeAttribute. */ - FbxNodeAttribute* Triangulate(FbxNodeAttribute* pNodeAttribute, bool pReplace, bool pLegacy=false); - - /** Compute a "vertex-correspondence" table that helps passing from source to destination geometry. - * \param pSrcGeom Pointer to the source geometry. - * \param pDstGeom Pointer to the destination geometry. - * \param pSrcToDstWeightedMapping Pointer to the weighted mapping table. - * \param pSwapUV Set to \c true to swap UVs. - * \return \c true on success, \c false if the function fails to compute the correspondence. - * \remark Skins and shapes are also converted to fit the alternate geometry. */ - bool ComputeGeometryControlPointsWeightedMapping(FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom, FbxWeightedMapping* pSrcToDstWeightedMapping, bool pSwapUV=false); - //@} - - /** - * \name Geometry Conversion - */ - //@{ - /** Convert from patch to nurb. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb or \c NULL if the conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbs* ConvertPatchToNurbs(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb. Use this function to preserve the patch's - * skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsInPlace(FbxNode* pNode); - - /** Convert a patch to nurb surface. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb surface or \c NULL if conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbsSurface* ConvertPatchToNurbsSurface(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb surface. Use this function to preserve - * the patch's skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a FbxNurbs to a FbxNurbsSurface - * \param pNurbs Pointer to the original nurb - * \return A FbxNurbsSurface that is equivalent to the original nurb. - */ - FbxNurbsSurface* ConvertNurbsToNurbsSurface( FbxNurbs* pNurbs ); - - /** Convert a FbxNurbsSurface to a FbxNurbs - * \param pNurbs Pointer to the original nurbs surface - * \return A FbxNurbs that is equivalent to the original nurbs surface. - */ - FbxNurbs* ConvertNurbsSurfaceToNurbs( FbxNurbsSurface* pNurbs ); - - /** Convert a nurb, contained in a node, to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurb. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a nurb contained in a node to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurbs surface. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsSurfaceToNurbsInPlace(FbxNode* pNode); - //@} - - /** - * \name Nurb UV and Links Swapping - */ - //@{ - /** Flip UV and/or skin clusters of a nurb. - * \param pNurbs Pointer to the Source nurb. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbs, or \c NULL if the function fails. - */ - FbxNurbs* FlipNurbs(FbxNurbs* pNurbs, bool pSwapUV, bool pSwapClusters); - - /** Flip UV and/or skin clusters of a nurb surface. - * \param pNurbs Pointer to the Source nurb surface. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbsSurface, or \c NULL if the function fails. - */ - FbxNurbsSurface* FlipNurbsSurface(FbxNurbsSurface* pNurbs, bool pSwapUV, bool pSwapClusters); - //@} - - /** - * \name Normals By Polygon Vertex Emulation - */ - //@{ - /** Emulate normals by polygon vertex mode for a mesh. - * \param pMesh Pointer to the mesh object. - * \return \c true on success, \c false if the number of normals in the - * mesh and in its associated shapes don't match the number of polygon - * vertices. - * \remarks For applications that only supports normals by control points, - * this function duplicates control points to equal the - * number of polygon vertices. skins and shapes are also converted. - * As preconditions: - * -# polygons must have been created - * -# the number of normals in the mesh and in its associated shapes must match the - * number of polygon vertices. - */ - bool EmulateNormalsByPolygonVertex(FbxMesh* pMesh); - - /** Create edge smoothing information from polygon-vertex mapped normals. - * Existing smoothing information is removed and edge data is created if - * none exists on the mesh. - * \param pMesh The mesh used to generate edge smoothing. - * \return \c true on success, \c false otherwise. - * \remarks The edge smoothing data is placed on Layer 0 of the mesh. - * Normals do not need to be on Layer 0, since the first layer with - * per polygon vertex normals is used. - */ - bool ComputeEdgeSmoothingFromNormals( FbxMesh* pMesh ) const; - - /** Convert edge smoothing to polygon smoothing group. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted. - * \return \c true on success, \c false otherwise. - * \remarks The smoothing group is bitwise. Each bit of the integer represents - * one smoothing group. Therefore, there is a maximum of 32 smoothing groups. - */ - bool ComputePolygonSmoothingFromEdgeSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - - /** Convert polygon smoothing group to edge smoothing. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted - * \return \c true on success, \c false otherwise. - */ - bool ComputeEdgeSmoothingFromPolygonSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - //@} - - /** \name Split Mesh Per Materials */ - //@{ - /** Split all the mesh in the scene per material. - * \param pScene The scene to iterate through to split meshes. - * \param pReplace If \c true, replace the original mesh with new ones and delete the original meshes, but *only* if they got split into multiple meshes, otherwise they are left untouched. - * \return \c true if all splitable mesh were successfully split, \c false otherwise. - * \remark The function will still iterate through all meshes regardless if one fails to split, but will return false in that case. */ - bool SplitMeshesPerMaterial(FbxScene* pScene, bool pReplace); - - /** Split mesh per material. - * \param pMesh The mesh that will be split if it has multiple materials assigned. - * \param pReplace If \c true, replace the original mesh with new one and delete the original mesh, but *only* if they got split into multiple meshes, otherwise left untouched. - * \return \c true on success, \c false otherwise. - * \remark The function will fail if the mapped material is not per face (FbxLayerElement::eByPolygon) or if a material is multi-layered. It will create as many meshes as - * there are materials applied to it. If one mesh have some polygons with material A, some polygons with material B, and some polygons with NO material, 3 meshes distinct - * will be created. The newly created meshes will be automatically attached to the same FbxNode that holds the original FbxMesh. If the original mesh have tangents, they will - * be regenerated on the new meshes. */ - bool SplitMeshPerMaterial(FbxMesh* pMesh, bool pReplace); - //@} - - /** Re-parent nodes at root node level under a new node to re-center them at world center. - * Basically, this function calculates the scene bounding box in world coordinates, and test if the center of that bounding box distance from the - * world center is larger or equal than the threshold. If true, a new node with the proper negative offset position will become the new parent of all nodes at root node level. - * \param pScene The scene to process. - * \param pThreshold Threshold at which all nodes will be re-centered. - * \return \c true if any nodes were re-centered, otherwise \c false. */ - bool RecenterSceneToWorldCenter(FbxScene* pScene, FbxDouble pThreshold); - - /** - * Merge multiple meshes to one mesh. - * The method will merge: - * a) mesh vertex; - * b) mesh polygon; - * c) mesh edge; - * d) all mesh elements; only the layer 0 elements is merged. - * e) if there are skins for old mesh, merge these skins. The new skin clusters link to old skeletons. - * - * \param pMeshNodes FBX nodes that hold multiple meshes. These meshes will be merged. - * \param pNodeName Name of new mesh node. - * \param pScene The scene that will contain the new mesh node. - * \return The new mesh node if merge successfully, otherwise NULL is returned. - * \remarks This method creates a new mesh, leaving the source mesh unchanged. - * The transform of new mesh node is: translate (0, 0, 0), rotation (0, 0, 0), scale (1, 1, 1). - * For layer element material, normal, smoothing, UV set, vertex color, binormal, tangent and polygon group, - * if any mesh misses these element, the merge for this kind of element is skipped. - * For layer element crease, hole, visibility and user data, if any mesh has such element, the kind of element - * will be merged. The missing element will be filled with default values. - * For meshes with skin binding, if the pose of frame 0 is different with bind pose, the new mesh will be distorted. - */ - FbxNode* MergeMeshes(FbxArray& pMeshNodes, const char* pNodeName, FbxScene* pScene); - - /** - * Cleanup or remove degenerated meshes. - * \param pScene The scene to process. - * \param pAffectedNodes The list of nodes that have been affected by this operation. - * \remarks If the cleaned-up mesh becomes invalid, it is removed entirely. - */ - void RemoveBadPolygonsFromMeshes(FbxScene* pScene, FbxArray* pAffectedNodes = NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxGeometryConverter(FbxManager* pManager); - ~FbxGeometryConverter(); - -private: - FbxMesh* TriangulateMeshInternal(const FbxMesh* pMesh); - FbxMesh* TriangulateMeshInternalLegacy(const FbxMesh* pMesh); - FbxMesh* TriangulatePatchInternal(const FbxPatch* pPatch); - FbxMesh* TriangulateNurbsInternal(const FbxNurbs* pNurbs); - - bool AddAlternateGeometry(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pAltGeom, FbxWeightedMapping* pSrcToAltWeightedMapping, bool pConvertDeformations); - bool ConvertGeometryAnimation(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom); - void ReplaceNodeAttribute(FbxNode* pNode, FbxNodeAttribute* pNewNodeAttr); - bool AddTriangulatedMeshGeometry(FbxNode* pNode, int pUVStepCoeff); - bool CreateAndCopyLayerElement(FbxMesh *pNewMesh, FbxMesh *pRefMesh); - bool SetLayerElements(FbxMesh *pNewMesh, FbxMesh *pMesh, int pPolygonIndex, int pPolyPointIndex, int pLoopIndex, bool pIsSearched, bool pIsEndPolygon); - - /** FbxTriangulation - * \param Index Output array of triangle indices - * \param pNumSide Input number of sides of the polygon to triangulate - * -- Triangulation algorithm is strip, Sorting vertex index for strip in clockwise. - * - * 2 3 4 - * 0----------0---------0 - * / ` - * / ` 5 - * 1 / 0 - * 0 / - * ` / - * ` / - * 0 0-----0-------------0 6 - * 7 - * The result of this one will be [{0,1,2},{2,3,0},{0,3,7},{3,4,7},{7,4,6},{4,5,6}] - */ - static void FbxTriangulation(int *Index, int pNumSide); - - bool ComputePatchToMeshControlPointsWeightedMapping(FbxPatch* pSrcPatch, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pSwapUV=false); - bool ComputeNurbsToMeshControlPointsWeightedMapping(FbxNurbsSurface* pSrcNurbs, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pRescaleUVs=false, bool pSwapUV=false); - - void InitializeWeightInControlPoints(FbxGeometryBase* pGeometry); - void InitializeWeightInNormals(FbxLayerContainer* pLayerContainer); - void TriangulateContinuousSurface(FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface, FbxUInt pPointCountX, FbxUInt pPointCountY, bool ClockWise=false); - void CheckForZeroWeightInShape(FbxGeometry *pGeometry); - FbxMesh* CreateMeshFromParametricSurface(const FbxGeometry* pGeometry); - FbxNurbs* CreateNurbsFromPatch(FbxPatch* pPatch); - FbxNurbsSurface* CreateNurbsSurfaceFromPatch(FbxPatch* pPatch); - - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator, int pUCount, int pVCount); - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(FbxArray const& pSourceClusters, int pSourceControlPointsCount, FbxArray& pDestinationClusters, int pDestinationControlPointsCount, FbxWeightedMapping* pSourceToDestinationMapping); - void BuildClusterToSourceMapping(FbxArray const& pSourceClusters, FbxWeightedMapping* pClusterToSourceMapping); - void CheckClusterToSourceMapping(FbxWeightedMapping* pClusterToSourceMapping); - void ConvertCluster(int pSourceClusterIndex, FbxWeightedMapping* pClusterToSourceMapping, FbxWeightedMapping* pSourceToDestinationMapping, FbxCluster* pDestinationCluster); - void DuplicateControlPoints(FbxArray& pControlPoints, FbxArray& pPolygonVertices); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated, int pTriangleNum); - void ResizePolygon(FbxMesh *pNewMesh, int pNewCountVertices = 0, int pNewCountPolygons =0, bool pClearFlag = true); - - template void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb); - - bool CopyAnimationCurves(FbxNode* pNode, FbxGeometry* pNewGeometry); - bool FlipNurbsCurve(FbxNurbsCurve* pCurve) const; - void FlipControlPoints(FbxGeometryBase* pPoints, int pUCount, int pVCount) const; - bool ConvertMaterialReferenceMode(FbxMesh* pMeshRef) const; - void RevertMaterialReferenceModeConversion(FbxMesh* pMeshRef) const; - - FbxManager* mManager; - - friend class FbxWriter3ds; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmanipulators.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmanipulators.h deleted file mode 100644 index 43b05f3..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmanipulators.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanipulators.h -#ifndef _FBXSDK_UTILS_MANIPULATORS_H_ -#define _FBXSDK_UTILS_MANIPULATORS_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxCameraManipulationState; - -/** This class can be used to provide basic camera manipulation in any program using this library. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCameraManipulator : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCameraManipulator, FbxObject); - -public: - //! All possible manipulation actions that can be performed on a camera using this manipulator. - enum EAction - { - eNone, //!< No action. - eOrbit, //!< Orbiting camera around LootAt/Interest position. - eDolly, //!< Moving camera closer or away from its LookAt/Intest position. - ePan, //!< Panning camera up, down and sideways. - eFreePan //!< Panning and dollying all at once. - }; - - /** Begin manipulation of the camera. - * \param pAction The action performed for this manipulation scope. - * \param pX Begin horizontal position of the manipulation, in pixels. - * \param pY Begin vertical position of the manipulation, in pixels. */ - void Begin(EAction pAction, float pX, float pY); - - /** Notify manipulation of latest input. - * \param pTimeDelta Elapsed time since the last notify. Only used if Smoothing is enabled. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Notify(float pX, float pY, float pScale=0); - - //! End current manipulation. - void End(); - - /** Update the camera position. This must be called periodically in order for the camera to update its position. - * \param pTimeDelta Elapsed time since the last update. If Smooth is disabled, you can leave this value to zero. - * \remark Begin, Notify and End will not change the current camera position. */ - void Update(const FbxTime& pTimeDelta=FBXSDK_TIME_ZERO); - - /** Do a complete manipulation action in a single operation. This is the equivalent of calling Begin, Notify and End successively. - * \param pAction The action performed for this manipulation scope. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Action(EAction pAction, float pX, float pY, float pScale=0); - - /** Retrieve current manipulation action. - * \return The action currently performed by the camera manipulator. */ - EAction GetCurrentAction() const; - - /** Change camera position and LookAt node to frame all objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameAll(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame all selected objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameSelected(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame the selected position on screen. The LookAt will be placed - * at first closest intersecting geometry, and the distance between camera and LookAt will be preserved. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pCulling If \c true, only test triangles that are front-facing, otherwise test both sides. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameScreenPosition(float pX, float pY, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** The camera controlled by the manipulator. */ - FbxPropertyT Camera; - - /** Width of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportWidth; - - /** Height of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportHeight; - - /** Camera manipulations will be smooth if enabled. True by default. */ - FbxPropertyT Smooth; - - /** Camera manipulations smoothing speed. Higher speed will stabilize the camera more quickly. Default is 10.0 */ - FbxPropertyT SmoothSpeed; - - /** Invert the camera horizontal manipulation direction if set to true. False by default. */ - FbxPropertyT InvertX; - - /** Invert the camera vertical manipulation direction if set to true. False by default. */ - FbxPropertyT InvertY; - - /** Restore the camera transform upon destruction of the manipulator. */ - FbxPropertyT Restore; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - -private: - void Reset(); - FbxCamera* GetCamera() const; - FbxNode* GetCameraNode() const; - FbxNode* GetCameraLookAtNode() const; - FbxNode* GetCameraTargetUpNode() const; - FbxVector4 GetCameraPosition() const; - void SetCameraPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraRotation() const; - void SetCameraRotation(const FbxVector4& pRotation); - FbxVector4 GetCameraLookAtPosition() const; - void SetCameraLookAtPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraTargetUpPosition() const; - void SetCameraTargetUpPosition(const FbxVector4& pPosition); - FbxAMatrix GetCameraRotationMatrix() const; - void SetCameraRotationMatrix(const FbxAMatrix& pRM); - - double ComputeRotationAxis(FbxVector4& pFront, FbxVector4& pUp, FbxVector4& pRight, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector) const; - void ComputeRotationMatrix(FbxAMatrix& pRM, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector); - void UpdateCameraRotation(); - - bool FrameObjects(bool pSelected, const FbxTime& pTime); - FbxVector4 ComputePositionToFitBBoxInFrustum(const FbxVector4& pBBoxMin, const FbxVector4& pBBoxMax, const FbxVector4& pBBoxCenter, const FbxVector4& pCameraPosition, const FbxAMatrix& pCameraRM, const FbxTime& pTime); - - EAction mCurrentAction; - FbxFloat mBeginMouse[3], mLastMouse[3]; - FbxVector4 mBeginPosition, mBeginAxis[3]; - FbxBool mBeginFlipped; - - FbxDouble mDestOrthoZoom; - FbxVector4 mDestPosition, mDestLookAt, mDestTargetUp; - FbxAMatrix mDestRotation; - - FbxVector4 mInitialPosition, mInitialRotation, mInitialLookAt; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MANIPULATORS_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h deleted file mode 100644 index 101d289..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmaterialconverter.h -#ifndef _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ -#define _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ - -#include - -#include - -#include - -class LayerConfig; -class FbxMaterialConverter_Impl; - -/** - * \brief This class provides functions to restructure the material and textures - * applied to geometries from FBX v5 material system to v6-and-up or the other way around. - * \nosubgrouping - * \see FbxSurfaceMaterial, FbxTexture - */ -class FBXSDK_DLL FbxMaterialConverter -{ -public: - FbxMaterialConverter( FbxManager& mManager, FbxSurfaceMaterial* pDefaultMaterial = NULL); - ~FbxMaterialConverter(); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for all geometries - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pScene The scene whose geometries should be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxScene& pScene ); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for the given geometry - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pNode The geometry node to be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxNode* pNode ); - - /** This is the reverse operation of ConnectTexturesToMaterials() - * Textures connected to Materials' color properties are stored - * in layer elements, and their connections to the color properties - * are broken.(Convert scene from FBX v6-and-up material system to v5) - * \param pScene The scene whose geometries should be converted. - * \return true if all geometries were converted, false otherwise - */ - bool AssignTexturesToLayerElements( FbxScene& pScene ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef FbxPair TexData; - - FbxMaterialConverter& operator=(const FbxMaterialConverter&); - - FbxManager& mManager; - FbxSurfaceMaterial* mDefaultMaterial; - FbxMaterialConverter_Impl* mImpl; - - - void GetTextures( int pComponent, FbxLayer* pLayer, LayerConfig& pLayerConfig ) const; - FbxSurfaceMaterial* GetMaterial( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - int GetMaterialOrder( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - - bool HasGoodMappingModes( FbxNode* pNode, FbxGeometry* pGeom ) const; - void ConnectTextures( FbxSurfaceMaterial* pMat, FbxObject* pTexture, int pTextureType ) const; - bool HasPerFaceMaterialMapping( FbxGeometry* pGeom ) const; - void SetTextureUVSets( FbxGeometry* pGeom ) const; - bool HasTextures( FbxGeometry* pGeom ) const; - - void GetTextureList( FbxArray& pTextures, FbxLayeredTexture* pTex ) const; - - FbxLayer* FindLayerForTexture( FbxTexture* pTex, - FbxLayerElement::EType pTexType, - FbxLayerElementTexture::EBlendMode pTexBlendMode, - FbxGeometry* pGeom, - int lComponentIndex, - int lStartIndex = 0 ) const; - - void InitTextureElement( FbxLayerElementTexture* pTexElm, int pComponentCount, - FbxLayerElementTexture::EBlendMode pMode) const; - - bool AssignTexturesToLayerElements( FbxNode* pNode); - - bool HasTextureLayerElements( FbxGeometry& pGeom ) const; - - void ConvertToPerFaceMapping( FbxMesh* pGeom ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxnamehandler.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxnamehandler.h deleted file mode 100644 index 70bb58f..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxnamehandler.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnamehandler.h -#ifndef _FBXSDK_UTILS_NAMEHANDLER_H_ -#define _FBXSDK_UTILS_NAMEHANDLER_H_ - -#include - -#include -#include - -#include - -/** A name is a case-sensitive string ID of a property, a node, a node attribute, a texture, etc. The characters constituting a name has no specific limitation. - * An initial name is the original name (from importing a file, for example), which is saved up for reversible renaming. - * A current name is the name used in FBX. - * A namespace is a simple grouping of objects under a given name. Namespaces are primarily used to resolve - * name-clash issues in FBX, where a new object has the same name as an existing object. - * - * For example, Maya only accepts names with letters, digits, or underscores. And when a user import FBX into Maya, - * a node whose name contains whitespace will be renamed. But the connections and references to this node in FBX - * scene graph still use the original name, so users have to use the initial name to retrieve related information. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNameHandler -{ -public: - /** Constructor. - * \param pInitialName Name string used to initialize both members (initialName and currentName) - * of this class. - */ - FbxNameHandler(const char* pInitialName = ""); - - /** Copy constructor. - * \param pName A FbxNameHandler copied to this one. - */ - FbxNameHandler(FbxNameHandler const& pName); - - // !Destructor - ~FbxNameHandler(); - - /** Set the initial name. - * \param pInitialName New string for the initial name. - * \remarks The current name will also be changed to this value. - */ - void SetInitialName(const char* pInitialName); - - /** Get the initial name. - * \return Pointer to the InitialName string buffer. - */ - const char* GetInitialName() const; - - /** Set the current name. - * \param pNewName New string for the current name. - * \remarks The initial name is not affected. - */ - void SetCurrentName(const char* pNewName); - - /** Get the current name. - * \return Pointer to the CurrentName string buffer. - */ - const char* GetCurrentName() const; - - /** Set the namespace. - * \param pNameSpace New string for the namespace. - * \remarks The initial name is not affected. - */ - void SetNameSpace(const char* pNameSpace); - - /** Get the namespace. - * \return Pointer to the namespace string buffer. - */ - const char* GetNameSpace() const; - - /** Check if the current name and initial name match. - * \return \c true if the current name isn't identical to the initial name. - */ - bool IsRenamed() const; - - /** Assignment operator - * \param pName FbxNameHandler assigned to this one. - */ - FbxNameHandler& operator= (FbxNameHandler const& pName); - - /** - * \name Private use for the renaming strategies classes. - * - * Some renaming strategies classes need to store the parent name to successfully apply the renaming algorithms. - * The methods in this section allow them to do so. - * \remark Because of the very specific use of the mParentName string, - * callers of the FbxNameHandler class should never assume that mParentName is correctly initialized - * nor contains a meaningful value outside the scope of the renaming strategy class that used it. - */ - //@{ - - /** Set the parent name. - * \param pParentName New string for the parent name. - * \remarks The parent name here could combine several hierarchy name. - * The full name should be "ParentName + CurrentName". - * A - * |_B - * |_C - * For the above hierarchy, the parent name of C is "AB". - * The full name of C is "ABC". - */ - void SetParentName(const char* pParentName); - - /** Get the parent name. - * \return Pointer to the ParentName string buffer. - */ - const char* GetParentName() const; - - //@} - - /** Get the namespaces in a string pointer array format. - * \return FbxArray . - * \remarks The array is filled in reverse order. For example, with a namespace string defined as: - * a:b:c:d, the filled array is: array[0]=d, array[1]=c, array[2]=b and array[3]=a - */ - FbxArray GetNameSpaceArray(char identifier); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mParentName; - FbxString mInitialName; - FbxString mCurrentName; - FbxString mNameSpace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_NAMEHANDLER_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessor.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessor.h deleted file mode 100644 index eb2b5c8..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessor.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessor.h -#ifndef _FBXSDK_UTILS_PROCESSOR_H_ -#define _FBXSDK_UTILS_PROCESSOR_H_ - -#include - -#include - -#include - -class FbxCollection; - -/** The class and its derived classes(e.g. FbxProcessorXRefCopy, FbxProcessorXRefCopyUserLibrary, etc.) are used to process shader, library, asset, etc. - * For example, you could update object property and its value via FbxProcessor::ProcessObject(), FbxProcessor::internal_ProcessObject(), etc. - */ -class FBXSDK_DLL FbxProcessor : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxProcessor, FbxObject); - -public: - /** - * \name Processor management - */ - //@{ - /** Process the specified collection. - * \param pCollection - */ - bool ProcessCollection(FbxCollection *pCollection=0); - - /** Process the specified object. - * \param pCollection FbxObject to process - */ - bool ProcessObject (FbxObject *pCollection=0); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool internal_ProcessCollectionBegin (FbxCollection *pCollection); - virtual bool internal_ProcessCollectionEnd (FbxCollection *pCollection); - virtual bool internal_ProcessObject (FbxObject* pObject); - virtual bool internal_ProcessCollection (FbxCollection* pCollection); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h deleted file mode 100644 index 99c0941..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorshaderdependency.h -#ifndef _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ -#define _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ - -#include - -#include -#include -#include - -#include - -/** Crawls CgFx and HLSL shader files, copies them, and all dependent - * shader files into the location specified by RootProcessPath. - */ -class FBXSDK_DLL FbxProcessorShaderDependency : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorShaderDependency, FbxProcessor); - -public: - FbxPropertyT RootProcessPath; - - FbxPropertyT CleanupOnDestroy; - - FbxPropertyT AdditionalIncludePaths; - - void ClearProcessedFiles(); - - /** - * \name Overridable internal function */ - //@{ -protected: - bool internal_ProcessObject(FbxObject* pObject) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -// Constructor / Destructor -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -public: - - class StringHash - { - public: - unsigned int operator()( const FbxString& pValue ) const - { - // from wikipedia.org - // Jenkins One-at-a-time hash - - size_t lLen = pValue.GetLen(); - unsigned int lHashValue = 0; - const char* lData = pValue.Buffer(); - for( size_t i = 0; i < lLen; ++i ) - { - lHashValue += lData[i]; - lHashValue += (lHashValue << 10); - lHashValue ^= (lHashValue >> 16); - } - lHashValue += (lHashValue << 3); - lHashValue ^= (lHashValue >> 11); - lHashValue += (lHashValue << 15); - - return lHashValue; - } - }; - -protected: - - class FileDeleter - { - public: - FileDeleter( const char* pFileUrl ) : mFileUrl( pFileUrl) {}; - ~FileDeleter() - { - if( !mFileUrl.IsEmpty() ) - { - remove( mFileUrl ); - } - }; - - void Release() { mFileUrl = ""; } - - private: FbxString mFileUrl; - }; - - // first == string as it appears in the file - // second == string URL - struct FilePathData - { - FbxString mOriginalStr; - FbxString mOriginalAbsUrl; - - FbxString mNewStr; - }; - - typedef FbxDynamicArray< FilePathData > FilePathList; - - virtual bool GetIncludePaths( FbxString& pFile, FilePathList& pPaths, FbxXRefManager& pManager ) const; - virtual bool ReplaceUrls( const FbxString& pFileUrl, const FbxString& pNewFileUrl, - const FilePathList& pPaths ) const; - -private: - struct Dependency - { - FbxString mNewUrl; - FbxString mOriginalUrl; - }; - - typedef FbxHashMap< FbxString, Dependency, StringHash > DependMap; - - DependMap mDependMap; - - FbxString mRootPath; - - FbxXRefManager mResolver; - int mSystemIndex; - - // magic number to limit the size of files we can parse =( - static const int sMaxFileSize; - - bool ParseDependencies( const FbxBindingTable& pTable ); - bool AddDependency( FbxString& pFileUrl ); - bool AddSystemPaths(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxref.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxref.h deleted file mode 100644 index 5720928..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxref.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxref.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_H_ - -#include - -#include -#include - -#include - -/** This class contains objects - * This class also provides access to global settings and take information. - */ -class FBXSDK_DLL FbxProcessorXRefCopy : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopy, FbxProcessor); - -public: - class FBXSDK_DLL MissingUrlHandler - { - public: - virtual ~MissingUrlHandler(); - virtual void MissingUrl(const FbxString& pUrl, const FbxProperty&) = 0; - }; - - /** - * \name Properties - */ - //@{ - FbxPropertyT OutputDirectory; - - /** As we resolve xref and copy assets, do we update properties to - * now use this relative path? Defaults to TRUE. - */ - FbxPropertyT UpdateProperties; - - /** Default to FALSE -- when set, this informs the processor to track - * every properties that were modified during the scene processing. - */ - FbxPropertyT TrackUpdatedProperties; - - /** Default to TRUE -- when not set, files are only copied if one of - * the following conditions is met: - * - * 1) Target does not exist - * 2) Target has a different time - * 3) Target has a different size - */ - FbxPropertyT ForceCopy; - - /** Default to TRUE -- when copying a file, also copy its modification - * time. A bit of a requirement if you're not going to use ForceCopy. - */ - FbxPropertyT CopyFileTimes; - //@} - - /** Optional callback; when set, this will be called when an Url cannot be - * be copied because the source is not found. - * Memory is owned by the client code, and will not be freed by us. - */ - MissingUrlHandler* MissingUrlHandler; - - /** Since FbxProperty is an opaque type, we can't do an efficient operator < - * on it, and must keep the data on the object, which can be compared through - * pointers, and then we can further compare against the property name. - */ - struct PropertyUpdate - { - FbxProperty mProperty; - FbxString mOriginalValue; - - inline PropertyUpdate() {} - inline PropertyUpdate(const FbxProperty& pProp, const FbxString& pVal) : - mProperty(pProp), mOriginalValue(pVal) {} - - inline bool operator <(const PropertyUpdate& pOther) const - { - return strcmp(mProperty.GetName(), pOther.mProperty.GetName()) < 0; - } - }; - typedef FbxSet UpdateSet; - typedef FbxMap PropertyUpdateMap; - - /** All properties that were updated, with their original value. - * Will always be empty if TrackUpdatedProperties - * was not set before calling ProcessCollection/ProcessObject. - * NOT cleared before each processing run. - */ - PropertyUpdateMap& GetUpdatedProperties(); - - /** If property tracking was enabled, goes through and reverts all changes - * to the properties. Does not un-copy the files, naturally. - */ - void RevertPropertyChanges(); - - /** This is just a safety net to make sure RevertPropertyChanges is called when - * this goes out of scope. - */ - struct FBXSDK_DLL AutoRevertPropertyChanges - { - AutoRevertPropertyChanges(FbxProcessorXRefCopy* pCopy) : mXRefCopy(pCopy) {} - ~AutoRevertPropertyChanges() - { - if( mXRefCopy ) - mXRefCopy->RevertPropertyChanges(); - } - - FbxProcessorXRefCopy* mXRefCopy; - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - PropertyUpdateMap mUpdatedProperties; - - // Implements the rules specified for the ForceCopy property. - // Also checks the ForceCopy property. - bool ShouldCopyFile(const FbxString& pTarget, const FbxString& pSource) const; - - bool internal_ProcessCollectionBegin (FbxCollection* pObject) override; - bool internal_ProcessCollectionEnd (FbxCollection* pObject) override; - bool internal_ProcessObject (FbxObject* pObject) override; - bool ProcessPathProperty(FbxProperty &pProperty); - virtual bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h deleted file mode 100644 index 4098d37..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxrefuserlib.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ - -#include - -#include - -#include - -/** - * Specialized xref copy processor - */ -class FBXSDK_DLL FbxProcessorXRefCopyUserLibrary : public FbxProcessorXRefCopy -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopyUserLibrary, FbxProcessorXRefCopy); - -public: - /** - * \name Properties - */ - //@{ - // Do we copy files even if they are in the system library? - // Defaults to FALSE. - FbxPropertyT CopyAllAssets; - - // Do we copy files even if they are not within the scene? This is - // the typical use case when creating a new library, and defaults to - // TRUE. If you want to extract assets from a specific library you - // you would set this to FALSE to ignore assets from external (user, - // system) libraries. - FbxPropertyT CopyExternalAssets; - - // Do we copy assets that use absolute paths? If true, then after - // the scene processor has run through the URL will be relative to - // the scene document. - // Defaults to TRUE. - FbxPropertyT CopyAbsoluteUrlAssets; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h deleted file mode 100644 index a137aae..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h +++ /dev/null @@ -1,355 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategy.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ - -#include - -#include -#include - -#include - -class FbxScene; -class FbxNode; - -/** This base class is an abstract implementation of a renaming strategy for avoiding name clashes. - * An implementation of a reader (FbxReader) or writer (FbxWriter) class must call a concrete implementation - * of "FbxRenamingStrategyInterface::Rename()" every time a name is imported or exported to avoid name clashes. - * Any class deriving from FbxRenamingStrategyInterface must implement FbxRenamingStrategyInterface::Clear(), - * FbxRenamingStrategyInterface::Rename(), and FbxRenamingStrategyInterface::Clone(). - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyNumber - */ -class FBXSDK_DLL FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyInterface(); - - //! Destructor. - virtual ~FbxRenamingStrategyInterface (); - - //! Resets internal state regarding assigned names. - virtual void Clear() = 0; - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName) = 0; - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone() = 0; -}; - -/** Implements a renaming strategy that resolves name clashes by adding number postfixes. - * For example, when there are three objects with the same name "MyObject", - * they will be renamed to "MyObject", "MyObject1" and "MyObject2". - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyBase - */ -class FBXSDK_DLL FbxRenamingStrategyNumber : public FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyNumber(); - - //! Destructor. - virtual ~FbxRenamingStrategyNumber (); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxArray mNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxRenamingStrategy object can be set to rename all the objects in a scene. - * It can remove name clashing, remove illegal characters, manage namespaces and manage backward compatibility. - * It is better to choose FbxSceneRenamer instead of this class to simplify the usage. - * \remark This class implements a legacy renaming strategy where unsupported characters are replaced with the - * underscore character. Improved renaming strategies solvers can be implemented using the functions provided - * by the FbxRenamingStrategyUtils class and the FbxRenamingStrategyBase. - * \nosubgrouping - * \see FbxSceneRenamer - */ -class FBXSDK_DLL FbxRenamingStrategy : public FbxRenamingStrategyInterface -{ -public: - /** \enum EDirection The mode describing the convention direction, from FBX format or to FBX format. - * - \e eToFBX Convert to FBX format from another format. - * - \e eFromFBX Convert from FBX format to another format. - */ - enum EDirection - { - eToFBX, - eFromFBX - }; - - /** Constructor. - * \param pMod The mode describing the convention direction, from FBX format or to FBX format. - * \param pOnCreationRun - */ - FbxRenamingStrategy(EDirection pMod, bool pOnCreationRun = false); - - //! Destructor. - virtual ~FbxRenamingStrategy(); - - /** Rename a name if necessary. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - - /** \enum EClashType - * - \e eNameClashAuto - * - \e eNameClashType1 - * - \e eNameClashType2 - */ - enum EClashType - { - eNameClashAuto, - eNameClashType1, - eNameClashType2 - }; - - /** Setup the strategy to perform this algorithm - * \param pType - */ - void SetClashSolverType(EClashType pType); - - /** Get the namespace of the last renamed object. - * \return Char pointer to the namespace. - */ - virtual char* GetNameSpace() { return mNameSpace.Buffer(); } - - /** Sets the current scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetInNameSpaceSymbol(FbxString pNameSpaceSymbol){mInNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets the wanted scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetOutNameSpaceSymbol(FbxString pNameSpaceSymbol){mOutNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets case sensitivity for name clashing. - * \param pIsCaseSensitive Set to \c true to make the name clashing case sensitive. - */ - virtual void SetCaseSensibility(bool pIsCaseSensitive){mCaseSensitive = pIsCaseSensitive ;} - - /** Sets the flag for character acceptance during renaming. - * \param pReplaceNonAlphaNum Set to \c true to replace illegal characters with an underscore ("_"). - */ - virtual void SetReplaceNonAlphaNum(bool pReplaceNonAlphaNum){mReplaceNonAlphaNum = pReplaceNonAlphaNum;} - - /** Sets the flag for first character acceptance during renaming. - * \param pFirstNotNum Set to \c true to add an underscore to the name if the first character is a number. - */ - virtual void SetFirstNotNum(bool pFirstNotNum){mFirstNotNum = pFirstNotNum;} - - /** Recursively renames all the unparented namespaced objects (Prefix mode) starting from this node. - * \param pNode Parent node. - * \param pIsRoot The root node. - * \return \c true if the "_NSclash" have been added to one or more node. - * \remarks This function adds "_NSclash" when it encounters an unparented namespaced object. - */ - virtual bool RenameUnparentNameSpace(FbxNode* pNode, bool pIsRoot = false); - - /** Recursively removes all the unparented namespaced "key" starting from this node. - * \param pNode Parent node. - * \return \c true if successfully removed the "_NSclash" from one or more nodes. - * \remarks This function removes "_NSclash" when encountered. This is the opposite from RenameUnparentNameSpace. - */ - virtual bool RemoveImportNameSpaceClash(FbxNode* pNode); - - /** Recursively get all the namespace starting from this node's parent. - * \param pNode Parent node. - * \param pNameSpaceList output the namespace list from pNode's parent to the root node. - */ - virtual void GetParentsNameSpaceList(FbxNode* pNode, FbxArray &pNameSpaceList); - - /** Recursively replace the namespace starting from this node to its children. - * \param pNode Current node. - * \param OldNS The old namespace to be replaced with the NewNs. - * \param NewNS The new namespace to replace OldNs. - * \return \c true if successfull - * \remarks This function only replaces the first occurence of OldNS with NewNS. - */ - virtual bool PropagateNameSpaceChange(FbxNode* pNode, FbxString OldNS, FbxString NewNS); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool RenameToFBX(FbxNameHandler& pName); - virtual bool RenameFromFBX(FbxNameHandler& pName); - virtual FbxString& ReplaceNonAlphaNum(FbxString& pName, const char* pReplace, bool pIgnoreNameSpace); - - EDirection mMode; - EClashType mType; - - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxCharPtrSet mStringNameArray; - FbxArray mExistingNsList; - bool mOnCreationRun; - bool mCaseSensitive; - bool mReplaceNonAlphaNum; - bool mFirstNotNum; - FbxString mNameSpace; - FbxString mInNameSpaceSymbol; //symbol identifying a name space - FbxString mOutNameSpaceSymbol; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxSceneRenamer provides a way to easily rename objects in a scene without using the FbxRenamingStrategy class. - * FbxSceneRenamer can remove name clashing and illegal characters. It also manages namespaces. - * - * Example: - * Maya only accepts names with letters, digits, or underscores, and we want to convert - * all the names of a scene from FBX format to Maya format. - * \code - * FbxSceneRenamer lSceneRenamer(pScene); - * lSceneRenamer.RenameFor(FbxSceneRenamer::eFBX_TO_MAYA); - * \endcode - * \nosubgrouping - * \see FbxRenamingStrategy - */ -class FBXSDK_DLL FbxSceneRenamer -{ -public: - /** Constructor - * \param pScene A scene which contains objects to be renamed. - */ - FbxSceneRenamer(FbxScene* pScene) {mScene = pScene;}; - - //! Destructor. - virtual ~FbxSceneRenamer(){}; - - /** \enum ERenamingMode The Mode describing from which format to which format. - * - \e eNone - * - \e eMAYA_TO_FBX5 - * - \e eMAYA_TO_FBX_MB75 - * - \e eMAYA_TO_FBX_MB70 - * - \e eFBXMB75_TO_FBXMB70 - * - \e eFBX_TO_FBX - * - \e eMAYA_TO_FBX - * - \e eFBX_TO_MAYA - * - \e eLW_TO_FBX - * - \e eFBX_TO_LW - * - \e eXSI_TO_FBX - * - \e eFBX_TO_XSI - * - \e eMAX_TO_FBX - * - \e eFBX_TO_MAX - * - \e eMB_TO_FBX - * - \e eFBX_TO_MB - * - \e eDAE_TO_FBX - * - \e eFBX_TO_DAE - */ - enum ERenamingMode - { - eNone, - eMAYA_TO_FBX5, - eMAYA_TO_FBX_MB75, - eMAYA_TO_FBX_MB70, - eFBXMB75_TO_FBXMB70, - eFBX_TO_FBX, - eMAYA_TO_FBX, - eFBX_TO_MAYA, - eLW_TO_FBX, - eFBX_TO_LW, - eXSI_TO_FBX, - eFBX_TO_XSI, - eMAX_TO_FBX, - eFBX_TO_MAX, - eMB_TO_FBX, - eFBX_TO_MB, - eDAE_TO_FBX, - eFBX_TO_DAE - }; - - /** Rename the objects of the scene according the specific mode. - * \param pMode A mode describing from which format to which format. - */ - void RenameFor(ERenamingMode pMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ResolveNameClashing(bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive, - bool pReplaceNonAlphaNum, bool pFirstNotNum, - FbxString pInNameSpaceSymbol, FbxString pOutNameSpaceSymbol, - bool pNoUnparentNS/*for MB < 7.5*/, bool pRemoveNameSpaceClash); - - FbxRenamingStrategyInterface* mNodeRenamingStrategy; - FbxScene* mScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ */ - diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h deleted file mode 100644 index 60e3d43..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategybase.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ - -#include - -#include -#include - -#include - -/** \brief Base class for renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyBase(); - - /** Constructor. - * \param pNameSpaceSymbol - */ - FbxRenamingStrategyBase(char pNameSpaceSymbol); - - //! Destructor. - virtual ~FbxRenamingStrategyBase(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene)=0; - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene)=0; - - /** This method find the original name of a given string - * \param pString - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pString)=0; - - /** This method find the renaming name of a given string - * \param pString - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pString, bool pIsPropertyName=false)=0; - - //! clean up the name cells. - virtual void CleanUp(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - char mNamespaceSymbol; - FbxCharPtrSet mStringNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h deleted file mode 100644 index ab43848..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx5.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 5. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx5: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx5(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx5(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h deleted file mode 100644 index ec4f224..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx6.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 6. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx6: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx6(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx6(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h deleted file mode 100644 index 1b7d832..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx7.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyFbx7 : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyFbx7(); - virtual ~FbxRenamingStrategyFbx7(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h deleted file mode 100644 index a830817..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyutilities.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ - -#include - -#include - -#include - -#define NAMECLASH1_KEY "_ncl1_" // name (x) -#define NAMECLASH2_KEY "_ncl2_" // Upper/lower cases clash - -#define UPPERTOLOWER_KEY "ul" -#define LOWERTOUPPER_KEY "lu" - -/** \brief This class contains a set of utilities, which are used by the FBX renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyUtils -{ -public: - - /** Check if the string has non alphanumeric characters and replace them with a special string containing a prefix and - * the character code. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \param pFirstCharMustBeAlphaOnly This flag tells whether the first char of the string must be alpha only. Its default - * value is \c false. - * \param pPermittedChars List of non alphanumeric characters that do not require to be converted because already - * supported by the destination application. When encountered, these characters are simply - * skipped and left as is. - * \param p8bitCharsOnly When \c true, this flag tells the routine that only 8 bit coded characters can be - * represented by the encoding format (see note below). If set to \c false, the range of supported - * character is increased and the memory usage may be less. But the routine will perform slower - * because of the internal conversions required. - * \return Returns \c true if at least one character in \c pString has been encoded. - * \note The encoding string depends on the value of \c p8bitCharsOnly argument. When this parameter value is \c true, - * each non-alphanumeric character is replaced with FBXASC### (where ### is the decimal code of the character). - * Inversely, when the value is \c false, each non-alphanumeric characters is replaced with FBXCHR##### (where - * ##### is the hexadecimal representation of the character code). - */ - static bool EncodeNonAlpha(FbxString &pString, bool pFirstCharMustBeAlphaOnly=false, FbxString pPermittedChars="", bool p8bitCharsOnly = true); - - /** Take a string that has been encoded by EncodeNonAlpha and re-extract the non-alphanumeric values. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \return Returns \c true if the \c pString argument has been decoded. - */ - static bool DecodeNonAlpha(FbxString &pString); - - /** This method will add the _ncl1_ with the provided pInstanceNumber to the string - * \param pString - * \param pInstanceNumber Its default value is 0. - * \return Always returns true. - * \remarks please ALWAYS call Encode Duplicate BEFORE Encode Case Insensitive. - */ - static bool EncodeDuplicate(FbxString &pString, int pInstanceNumber=0); - - /** This method will remove the _ncl1_xxx from the given string - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeDuplicate(FbxString &pString); - - /** This method will compare pString and pString2, set pString to pString2 and append the ncl2 suffix to it - * \param pString - * \param pString2 - * \return Returns true if the pString has been modified - * \remarks pString and pString2 must be identical except for casing. - */ - static bool EncodeCaseInsensitive(FbxString &pString, const FbxString pString2); - - /** This method will decode a string that has a ncl2 to it - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeCaseInsensitive(FbxString &pString); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(const char* pName); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(FbxString& pName); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h deleted file mode 100644 index 1503adc..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrootnodeutility.h -#ifndef _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ -#define _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ - -#include - -#include - -#include - -class FbxScene; -class FbxAxisSystem; -class FbxNode; - -/** \brief This class collects static functions for manipulating Fbx_Root nodes. - * Fbx_Root nodes were used to orient and scale scenes from other graphics applications. They have been replaced by the - * conversion routines in FbxAxisSystem and FbxSystemUnit. These methods are provided for backward compatibility only - * and will eventually be removed. Use the conversion routines in FbxSystemUnit and FbxAxisSystem when possible. - */ -class FBXSDK_DLL FbxRootNodeUtility -{ -public: - - static const char* sFbxRootNodePrefix; - - /** This method strips the scene of all Fbx_Root nodes. - * \param pScene The scene to convert - * \return \c true if successful, \c false otherwise. - * \remarks Converts the children of any Fbx_Roots to the orientation - * and units that the Fbx_Root transformation represented. - * The scene should look unchanged. - */ - static bool RemoveAllFbxRoots( FbxScene* pScene ); - - /** Inserts an Fbx_Root node into the scene to orient the - * scene from its axis and unit systems to the specified ones. - * \param pScene The scene to convert - * \param pDstAxis Destination axis. - * \param pDstUnit Destination unit - * \param pUnitOptions Unit conversion options - * - */ - static bool InsertFbxRoot( FbxScene* pScene, - const FbxAxisSystem& pDstAxis, - const FbxSystemUnit& pDstUnit, - const FbxSystemUnit::ConversionOptions& pUnitOptions = FbxSystemUnit::DefaultConversionOptions ); - - /** Check if a node is an Fbx_Root node - * \param pNode The node to query - * \return \c true if pNode is a Fbx_Root node, false otherwise - */ - static bool IsFbxRootNode(FbxNode* pNode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxRootNodeUtility(); - FbxRootNodeUtility(const FbxRootNodeUtility& pOther); - ~FbxRootNodeUtility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h deleted file mode 100644 index 56b0d07..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscenecheckutility.h -#ifndef _FBXSDK_SCENE_CHECK_UTILITY_H_ -#define _FBXSDK_SCENE_CHECK_UTILITY_H_ - -#include -#include -#include -#include - -class FbxScene; -class FbxStatus; - -/** \brief This class defines functions to check the received scene graph for issues. - * remark This is still an experimental class and it is not expected to validate - every single data object. - */ -class FBXSDK_DLL FbxSceneCheckUtility -{ -public: - enum ECheckMode { - eCheckCycles = 1, - eCheckAnimationEmptyLayers = 2, - eCheckAnimatioCurveData = 4, - eCheckAnimationData = 6, - eCheckGeometryData = 8, - eCheckOtherData = 16, - eCkeckData = 30 // includes Geometry,Animation&Other - }; - - /** Construct the object - * pScene Input scene to check - * pStatus FbxStatus object to set error codes in (optional) - * pDetails Details messages of issues found (optional) - * - * remark The Details array and its content must be cleared by the caller - */ - FbxSceneCheckUtility(const FbxScene* pScene, FbxStatus* pStatus=NULL, FbxArray* pDetails = NULL); - ~FbxSceneCheckUtility(); - - /** Check for issues in the scene - * return \false if any issue is found in the scene - * remark Depending on the check mode settings, the processing time can increase dramatically. - * remark If a status and/or details object is provided, the error code is set and, details info is - logged. - */ - bool Validate(ECheckMode pCheckMode=eCheckCycles); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - - /** Validate that the data in the given structure is within acceptable ranges - * return \false if any issue is found - */ - static bool ValidateObjectData(const FbxNurbs* pNurbs); - static bool ValidateObjectData(const FbxNurbsCurve* pNurbs); - static bool ValidateObjectData(const FbxNurbsSurface* pNurbs); - -protected: - bool HaveCycles(); - bool HaveInvalidData(int pCheckMode); - -private: - FbxSceneCheckUtility(); - FbxSceneCheckUtility(const FbxSceneCheckUtility& pOther); - - // Check functions return true if valid, false otherwise - bool CheckMappingMode(FbxLayerElement::EMappingMode pMappingMode, const FbxString& pPrefix); - bool CheckReferenceMode(FbxLayerElement::EReferenceMode pReferenceMode, const FbxString& pPrefix); - bool CheckSurfaceMode(FbxGeometry::ESurfaceMode pSurfaceMode, const FbxString& pPrefix); - - template - bool CheckSurfaceType(T pSurfaceType, const FbxString& pPrefix, const char* pDir); - - int MaxCountLimit(FbxLayerElement::EMappingMode pMappingMode, - int pCtrlPointsCount, - int pVerticesCount, - int pPolygonsCount, - int pEdgesCount, - int pElseCount); - - enum { - eNoRestriction, - eDirectOnly, - eIndexOnly, - }; - - template - bool CheckLayerElement(FbxLayerElementTemplate* pLET, - int pMaxCount, - const char* pId, - const FbxString& pPrefix, - int pRestriction = eNoRestriction); - - bool MeshHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool NurbsHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool GeometryHaveInvalidData(FbxGeometry* pGeom, const FbxString& pBase); - - bool GlobalSettingsHaveInvalidData(); - - bool AnimationHaveInvalidData(int pCheckMode); - bool AnimationHaveEmptyLayers(); - bool AnimationHaveInvalidCurveData(); - - const FbxScene* mScene; - - FbxStatus* mStatus; - FbxArray* mDetails; - FbxString mBuffer; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxusernotification.h b/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxusernotification.h deleted file mode 100644 index 0f3a561..0000000 --- a/sdk/Darwin/2019.2/include/fbxsdk/utils/fbxusernotification.h +++ /dev/null @@ -1,523 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxusernotification.h -#ifndef _FBXSDK_UTILS_USER_NOTIFICATION_H_ -#define _FBXSDK_UTILS_USER_NOTIFICATION_H_ - -#include - -#include -#include -#include - -#include - -class FbxLogFile; -class FbxMessageEmitter; -class FbxUserNotificationFilteredIterator; - -/** This class defines one entry object held by the FbxUserNotification class. - * \nosubgrouping - * An entry object is a message to show error, warning or information. - * Direct manipulation of this object should not be required. At most, access to - * its members can be granted for querying purposes. - */ -class FBXSDK_DLL FbxAccumulatorEntry -{ -public: - /** Category of the accumulator entry. - */ - enum EClass - { - eError=1, //!< Error message entry. - eWarning=2, //!< Warning message entry. - eInformation=4, //!< Information message entry. - eAny=7 //!< Entry that does not belong to above class. Cannot be used as a class ID - }; - - /** Constructor. - * \param pAEClass Specify the category for this entry. - * \param pName Identifies this entry (more than one object can have the same name). - * \param pDescr The description of the entry. This is the common message. The details - * are added separately by the FbxUserNotification classes. - * \param pDetail A list of detail string that will be copied into the local array. - * \param pMuteState Whether this entry is muted. - * \remarks By default the object is muted so it does not get processed by the low level - * output routines of the UserNotification accumulator. The entry gets activated - * (unmuted) by the calls to AddDetail() in the accumulator. - */ - FbxAccumulatorEntry(EClass pAEClass, const FbxString& pName, const FbxString& pDescr, - FbxString pDetail="", bool pMuteState=true); - - /** Copy Constructor. - * \param pAE Another FbxAccumulatorEntry object to be copied. - * \param pSkipDetails Flag to skip details. - */ - FbxAccumulatorEntry(const FbxAccumulatorEntry& pAE, bool pSkipDetails); - - //! Destructor. - ~FbxAccumulatorEntry(); - - //! Returns the category class of this entry. - EClass GetClass() const; - - //! Returns the name of this entry. - FbxString GetName() const; - - //! Returns the description of this entry. - FbxString GetDescription() const; - - //! Returns the number of details stored. - int GetDetailsCount() const; - - /** Returns a pointer to one specific detail string (or NULL if the id is invalid). - * Detail string is dynamic. One entry can have multiple detail strings to hold extra information. - * For example, if one entry message is related to many FBX nodes, user can add these nodes' name as details. - * \param id The detail id. - * \return Pointer to the specific detail. - */ - const FbxString* GetDetail(int id) const; - - //! Returns True if this entry is muted. - bool IsMuted() const; - -private: - FbxArray& GetDetails(); - void Mute(bool pState); - - bool mMute; - EClass mAEClass; - FbxString mName; - FbxString mDescr; - FbxArray mDetails; - - friend class FbxUserNotification; -}; - - -/** This class accumulates user notifications and sends them to any device opened by the derived classes. - * If this class is not derived, the data can only be sent to a log file. To send data to a log file, - * it must be opened before attempting to send data, otherwise, the messages will be lost. - */ -class FBXSDK_DLL FbxUserNotification -{ -public: - /** - * Create and initialize user notification object for the SDK manager. - * One SDK manager has one global user notification object. - * If the SDK manager already has global user notification object, the function will do nothing. - * - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \param pSessionDescription This string is used to separate session logs in the file. - * \return the global user notification object owned by the SDK manager. - */ - static FbxUserNotification* Create(FbxManager* pManager, - const FbxString& pLogFileName, - const FbxString& pSessionDescription); - - /** - * Destroy the global user notification object owned by the SDK manager. - */ - static void Destroy(FbxManager* pManager); - - /** Instantiate a FbxUserNotification but leave it uninitialized. The caller must - * explicitly call InitAccumulator to initialize it and ClearAccumulator when finished - * using it. - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \remarks If pLogFileName is an empty string the log file does not get created and any - * output sent to it is lost. - * \param pSessionDescription This string is used to separate session logs in the file. - * \remarks If the specified log file already exists, messages are appended to it. This - * class never deletes the log file. Derived classes may delete the log file - * before opening (it must be done in the constructor because the log file is - * opened in the InitAccumulator) or at the end of the processing in the - * PostTerminate method. - */ - FbxUserNotification(FbxManager* pManager, - FbxString const& pLogFileName, - FbxString const& pSessionDescription); - - //! Destructor. - virtual ~FbxUserNotification(); - - /** - * Accumulator is to hold the notification entries. User can add entries to it. - * This method must be called before using the Accumulator. It opens the log file and - * calls AccumulatorInit followed by OpenExtraDevices. Failing to call this method - * will prevent other actions except ClearAccumulator, GetLogFileName and GetLogFilePath. - */ - void InitAccumulator(); - - /** This method must be called when the Accumulator is no longer needed. It calls - * CloseExtraDevices, followed by the AccumulatorClear, and then closes the log file. - */ - void ClearAccumulator(); - - /** IDs for pre-defined message entries. - */ - enum EEntryID - { - eBindPoseInvalidObject, - eBindPoseInvalidRoot, - eBindPoseNotAllAncestorsNodes, - eBindPoseNotAllDeformingNodes, - eBindPoseNotAllAncestorsDefinitionNodes, - eBindPoseRelativeMatrix, - eEmbedMediaNotify, - eFileIONotify, //!< this is generic for reader and writer to log notifications. - eFileIONotifyMaterial, - eFileIONotifyDXFNotSupportNurbs, - eEntryStartID //!< Starting ID for any Accumulator entry added by derived classes. - }; - - /** - * \name Accumulator Management - */ - //@{ - /** Adds one entry into the accumulator. - * \param pID This entry unique ID. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \return The ID of the newly allocated entry. This ID is pEntryId. - */ - int AddEntry(const int pID, const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass=FbxAccumulatorEntry::eWarning); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pString The detail string to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxString pString); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pNode The node to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxNode* pNode); - - //! Returns the number of AccumulatorEntries currently stored in this accumulator. - int GetNbEntries() const; - - /** Get the specified FbxAccumulatorEntry. - * \param pEntryId ID of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the id is invalid or the Accumulator - * is not properly initialized. - */ - const FbxAccumulatorEntry* GetEntry(int pEntryId); - - /** Get the FbxAccumulatorEntry at the specified index. - * \param pEntryIndex index of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the index is invalid or the Accumulator - * is not properly initialized.. - */ - const FbxAccumulatorEntry* GetEntryAt(int pEntryIndex) const; - - //! Returns the number of Details recorded so far in this accumulator. - int GetNbDetails() const; - - /** Get the specified detail. - * \param pDetailId Index of the detail. This is the id-th detail of type pClass as inserted - * when the AddDetail - * \param pAE Pointer to the FbxAccumulatorEntry object that contains the requested detail. - * The returned valued can be NULL if an error occurred. - * \return The index of the detail to be used when calling the GetDetail of the FbxAccumulatorEntry. - * \remarks A value of -1 is acceptable and means that the FbxAccumulatorEntry has no details. However, - * if pAE is NULL, the return value is meaningless. - */ - int GetDetail(int pDetailId, const FbxAccumulatorEntry*& pAE) const; - - //@} - - /** - * \name Accumulator Output - */ - //@{ - /** Specify send what kind of data to output device. - */ - enum EOutputSource - { - eAccumulatorEntry, //!< Entry with its details. - eSequencedDetails //!< Details in the recorded order. - }; - - /** Send the accumulator entries to the output devices. - * This method needs to be explicitly called by the program that uses this - * class. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred. - * \param pIndex If this parameter >= 0, only send the specified entry/detail index to the output devices. - * Otherwise send all of them. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(EOutputSource pOutSrc=eAccumulatorEntry, int pIndex = -1, bool pExtraDevicesOnly = false); - - /** Send the accumulator entry to the output devices. - * \param pId Send the entry/detail that matching pIdx to the output devices, - * otherwise send all of them. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred.. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - */ - bool OutputById(EEntryID pId, EOutputSource pOutSrc=eAccumulatorEntry, bool pExtraDevicesOnly = false); - - /** Send an immediate entry to the output devices. - * This method bypasses the accumulator by sending the entry directly to the output devices - * and discarding it right after. The internal accumulator lists are left unchanged by this call. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass, bool pExtraDevicesOnly = false); - - /** Sends the content of the iterator to the output devices. - * This method bypasses the accumulator by sending each entry in the iterator directly to - * the output devices. The internal accumulator lists are left unchanged by this call. - * \param pAEFIter The Filtered FbxAccumulatorEntry iterator object. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(FbxUserNotificationFilteredIterator& pAEFIter, bool pExtraDevicesOnly = false); - - /** Set log message emitter. - * \param pLogMessageEmitter The new log message emitter. - */ - void SetLogMessageEmitter(FbxMessageEmitter * pLogMessageEmitter); - - /** - * \name Utilities - */ - //@{ - /** Returns the absolute path to the log file. If this method is not overridden in a derived class, it - * returns the TEMP directory. - * \param pPath The returned path. - */ - virtual void GetLogFilePath(FbxString& pPath); - - /** Returns the log file name. */ - inline FbxString GetLogFileName() { return mLogFileName; } - //@} - -protected: - /** - * Identify one detail in all accumulator entries by record the entry object and its detail id. - */ - class AESequence - { - public: - AESequence(FbxAccumulatorEntry* pAE, int pDetailId) : - mAE(pAE), - mDetailId(pDetailId) - { - }; - - //! Return the entry object the detail belongs to. - FbxAccumulatorEntry* AE() { return mAE; } - //! Return the detail id in the entry object - int DetailId() { return mDetailId; } - - private: - FbxAccumulatorEntry* mAE; - int mDetailId; - }; - - friend class FbxUserNotificationFilteredIterator; - - /** Allow a derived class to finalize processing AFTER the log file handle has been - * deleted. This may be required if the log file needs to be moved or shown. - * \returns True if the object is properly cleaned. - */ - virtual bool PostTerminate(); - - /** Allow the implementation class to perform accumulator initializations before - * the Extra devices are opened. By default this method does nothing. - */ - virtual void AccumulatorInit(); - - /** Allow the implementation class to perform accumulator clear after the Extra devices are - * closed. By default this method does nothing. - */ - virtual void AccumulatorClear(); - - /** Allow the implementation class to opens its output devices (called by InitAccumulator). - * By default this method does nothing. - */ - virtual void OpenExtraDevices(); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pEntries Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pEntries); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pAESequence Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pAESequence); - - /** Allow the implementation class to send one accumulator entry to the devices. - * By default this method does nothing. - * \param pOutputNow Flag indicates whether to output now. - * \param pAccEntry Accumulator entry to output. - * \param pDetailId Detail id. - * \return \c true if successful, \c false otherwise. - * \remarks Derived methods should check for the IsMuted() state to decide if the accumulator - * entry should get through or get discarded. See AddDetail for more details. - */ - virtual bool SendToExtraDevices(bool pOutputNow, const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - - - /** Allow the implementation class to close it's output devices (called in the ClearAccumulator) - * By default this method does nothing. - */ - virtual void CloseExtraDevices(); - - //! Clears the Accumulator list, remove all user notification entries.. - void ResetAccumulator(); - - //! Clears the Sequence list. - void ResetSequence(); - - /** Send the pIdth element of the accumulator or sequence list to the log file. - * \param pOutSrc The output source, accumulator or sequence list. - * \param pId Element id. - */ - void SendToLog(EOutputSource pOutSrc, int pId); - - /** Send the accumulator entry to the log file. - * \param pAccEntry The accumulator entry. - * \param pDetailId Detail id. - */ - void SendToLog(const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - -private: - FbxString mLogFileName; - FbxString* mLog; - FbxLogFile* mLogFile; - FbxMessageEmitter* mLogMessageEmitter; - - bool mProperlyInitialized; - FbxString mSessionDescription; - bool mProperlyCleaned; - - FbxMultiMap mAccuHT; // The set establish a relationship between an FbxAccumulatorEntry and it's ID - FbxArray mAccu; // The array defines the order the FbxAccumulatorEntry objects have been - // added to the accumulator (calls to AddEntry) - // Both structures share the same pointers. - FbxArray mAESequence; - FbxManager* mSdkManager; -}; - -/** This class iterates through the accumulated messages depending on the configuration - * flags (filter). The iterator keeps a local copy of the data extracted from the - * accumulator. - */ -class FBXSDK_DLL FbxUserNotificationFilteredIterator -{ -public: - /** Constructor. - * \param pAccumulator This reference is only used during construction for retrieving - * the data required to fill the iterator. - * \param pFilterClass The bitwise combination of the EClass identifiers. An FbxAccumulatorEntry - * element is copied from the accumulator if its Class matches one of the - * bits of this flag. - * \param pSrc Specify which data format is extracted from the accumulator. - * \param pNoDetail This parameter is used ONLY if pSrc == eAccumulatorEntry and, if set to - * false, the details of the FbxAccumulatorEntry are also sent to the output - * devices. If left to its default value, only the description of the - * FbxAccumulatorEntry is sent. - */ - FbxUserNotificationFilteredIterator(FbxUserNotification& pAccumulator, - int pFilterClass, - FbxUserNotification::EOutputSource pSrc = FbxUserNotification::eSequencedDetails, - bool pNoDetail = true); - - virtual ~FbxUserNotificationFilteredIterator(); - - //! Returns the number of elements contained in this iterator. - int GetNbItems() const; - - //! Put the iterator in its reset state. - void Reset(); - - /** Get this iterator's first item. - * \return NULL if the iterator is empty. - */ - FbxAccumulatorEntry* First(); - - /** Get this iterator's previous item. - * \return NULL if the iterator reached the beginning (or is empty). - * \remarks This method will also return NULL if it is called before - * or immediately after a call to First() and reset the iterator to - * its reset state (meaning that a call to First() is mandatory - * to be able to iterate again). - */ - FbxAccumulatorEntry* Previous(); - - /** Get this iterator's next item. - * \return NULL if the iterator reached the end (or is empty). - * \remarks This method will also return NULL if it is called while - * the iterator is in its reset state (called before - * First() or after a preceding call to Previous() reached - * beyond the beginning). - */ - FbxAccumulatorEntry* Next(); - -protected: - // Called in the constructor. - virtual void BuildFilteredList(FbxUserNotification& pAccumulator); - - int mIterator; - int mFilterClass; - bool mNoDetail; - FbxUserNotification::EOutputSource mAccuSrcData; - FbxArray mFilteredAE; -}; - -#include - -#endif /* _FBXSDK_UTILS_USER_NOTIFICATION_H_ */ diff --git a/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.a b/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.a deleted file mode 100644 index b5a083f..0000000 --- a/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92cd214b54ace7bdefa63624a5f0afce9d72f9c53306b78a42a9e64bc0942865 -size 101590064 diff --git a/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.dylib b/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.dylib deleted file mode 100644 index 38a6c1e..0000000 --- a/sdk/Darwin/2019.2/lib/clang/debug/libfbxsdk.dylib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:97f262249f472e378b80892c23e4869d9dab3fa1c01346830838fb8d30062095 -size 29182192 diff --git a/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.a b/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.a deleted file mode 100644 index bc6df66..0000000 --- a/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44041f0ab7bd02fdbed9064e51c19df9a2b73a890caa20300b039112d99fca8d -size 102746504 diff --git a/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.dylib b/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.dylib deleted file mode 100644 index 564cd20..0000000 --- a/sdk/Darwin/2019.2/lib/clang/libstdcpp/debug/libfbxsdk.dylib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:caad5577ebd2213c50733351d71f7a42d472cb52f0ce7e903eaffc5a1b39d011 -size 28634772 diff --git a/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.a b/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.a deleted file mode 100644 index 3388c40..0000000 --- a/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f31719ab7e6a30823908d64fb733879f6971b843fde84c05afa9aa29c215ee1 -size 42572856 diff --git a/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.dylib b/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.dylib deleted file mode 100644 index 40a36db..0000000 --- a/sdk/Darwin/2019.2/lib/clang/libstdcpp/release/libfbxsdk.dylib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67b1b1e5148a203cde69486b37d1c5b0a072099f1d1fb72b91f994b9f845bb68 -size 17983812 diff --git a/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.a b/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.a deleted file mode 100644 index 62be959..0000000 --- a/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7e327dfcc47c72af59c5f73eff5c616953dcc8565438ed1f773572a902f7854 -size 43986368 diff --git a/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.dylib b/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.dylib deleted file mode 100644 index 0f05cd2..0000000 --- a/sdk/Darwin/2019.2/lib/clang/release/libfbxsdk.dylib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fddaa2798f9507cf6dbd585b2523bf5fd613e6b7f19a2ca4905036587d766ea0 -size 17754308 diff --git a/sdk/Darwin/2019.2/samples/Animation/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Animation/CMakeLists.txt deleted file mode 100644 index 59b3e45..0000000 --- a/sdk/Darwin/2019.2/samples/Animation/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Animation .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Darwin/2019.2/samples/Animation/main.cxx b/sdk/Darwin/2019.2/samples/Animation/main.cxx deleted file mode 100644 index 193c599..0000000 --- a/sdk/Darwin/2019.2/samples/Animation/main.cxx +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of animation stacks, layers, curvenodes and curves. -// -// 1. Create a stack. -// 2. Add the mandatory base layer. -// 3. Show how to set the layer blend mode bypass. -// 4. Animate the layers's weight property. -// 5. Show how to use AddChannel and ResetChannels. -// 6. Create a 3 components curvenode and animate two of the three channels. -// 7. Add the curve node to the animation layer. -// 8. Create curves and add keys. -// 9. Create an extra layer with a different blend mode. -// 10. Show how to share the same animation curve on two layers (different channels) -// 11. Evaluate the overall result. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - int i; - FbxTime lTime; - FbxAnimCurveKey key; - FbxAnimCurve* lCurve = NULL; - - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Stack001"); - - // this stack animation range is limited from 0 to 1 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Set and get the blend mode bypass of the layer - bool val; - lAnimLayer->SetBlendModeBypass(eFbxTypeCount, true); // set the bypass to all the datatypes. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = true - lAnimLayer->SetBlendModeBypass(eFbxBool, false); // overwrite just for the bool datatype. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = false - val = lAnimLayer->GetBlendModeBypass(eFbxChar); // val = true - val = lAnimLayer->GetBlendModeBypass(eFbxDateTime); // val = true - val = lAnimLayer->GetBlendModeBypass((EFbxType)-1); // invalid type, val = false - val = lAnimLayer->GetBlendModeBypass((EFbxType)120); // invalid type (>MAX_TYPES), val = false - - - // we want to animate the layer's weight property. - FbxAnimCurveNode* wcn = lAnimLayer->CreateCurveNode(lAnimLayer->Weight); - if (wcn) - { - // the curve node from the Weight property already contains 1 channel (Weight). - i = wcn->GetChannelsCount(); // i = 1 - - // Now, let's add a second channel to the animation node. Note that this code - // is useless and has only been provided to show the usage of the AddChannel and - // ResetChannels - bool ret; - ret = wcn->AddChannel("MyAddedIntChannel", 99); // this call will succed - i = wcn->GetChannelsCount(); // i = 2 - ret = wcn->AddChannel("MyAddedIntChannel", 10); // this call will fail, since the channel already exists. - i = wcn->GetChannelsCount(); // i = 2 - wcn->ResetChannels(); // remove any added channels - i = wcn->GetChannelsCount(); // i = 1 - } - - // get the Weight curve (and create it if it does not exist, wich is the case!) - lCurve = lAnimLayer->Weight.GetCurve(lAnimLayer, true); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*100.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // - // now create a 3 components curvenode and animate two of the three channels. - // - // first, we need a "dummy" property so we can call the CreateTypedCurveNode - FbxProperty p = FbxProperty::Create(pScene, FbxDouble3DT, "Vector3Property"); - p.Set(FbxDouble3(1.1, 2.2, 3.3)); - FbxAnimCurveNode* lCurveNode = FbxAnimCurveNode::CreateTypedCurveNode(p, pScene); - - // let's make sure the curveNode is added to the animation layer. - lAnimLayer->AddMember(lCurveNode); - - // and to the "Vector3Property" since CreateTypedCurveNode does not make any connection - p.ConnectSrcObject(lCurveNode); - - //Example of channel get value: - //double v1 = lCurveNode->GetChannelValue(0U, 0.0); // v1 = 1.1 - //float v2 = lCurveNode->GetChannelValue (1U, 0.0f); // v2 = 2.2 - //int v3 = lCurveNode->GetChannelValue (2U, 0); // v3 = 3 - - // - // create two free curves (not connected to anything) - // - - // first curve - lCurve = FbxAnimCurve::Create(pScene, "curve1"); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 10 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*10.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // connect it to the second channel - lCurveNode->ConnectToChannel(lCurve, 1); - - // second curve - lCurve = FbxAnimCurve::Create(pScene, "curve2"); - if (lCurve) - { - // add three keys at time 1, 2 and 3 sec with values 3.33, 6.66 and 9.99 respectively - lCurve->KeyModifyBegin(); - for (i = 1; i < 4; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*3.33f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - // connect it to the third channel - lCurveNode->ConnectToChannel(lCurve, "Z"); // for backward compatibility, string identifier are still - // allowed for the X,Y,Z and W components or "0", "1", ... "9", "A", "B", ... "F" for the Matrix44 datatype - - - // ====================================================================== - // - // Add a second animation layer and evaluate using the FbxAnimEvaluator - // - // ====================================================================== - lAnimLayer = FbxAnimLayer::Create(pScene, "Layer2"); - lAnimStack->AddMember(lAnimLayer); - - // get the number of animation layers in the stack - // int nbLayers = lAnimStack->GetMemberCount(); // nblayers = 2 - lAnimLayer = lAnimStack->GetMember(1); // get the second layer - - // set its blend mode to Additive - lAnimLayer->BlendMode.Set(FbxAnimLayer::eBlendAdditive); - - // Now, let's animate the first channel of the "Vector3Property" (remember, we animated the second and - // third ones on the base layer - when we connected "curve1" and "curve2" on lCurveNode above) - // but first, make sure the property is animatable otherwise the creation of the curveNode is prohibited. - p.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lCurveNode = p.GetCurveNode(lAnimLayer, true); // create it since it does not exist yet - - // use "curve2" to animate it on channel 0 - lCurveNode->ConnectToChannel(lCurve, 0U); - - // and set the other two channels values - lCurveNode->SetChannelValue(1U, 5.0); - lCurveNode->SetChannelValue(2U, 0.0); - - // evaluate the "Vector3Property" value at three different times - // with the use of the FbxAnimEvaluator so we take into account the two layers - - // make sure the evaluator is using the correct context (context == animstack) - pScene->SetCurrentAnimationStack(lAnimStack); - for (i = 0; i < 3; i++) - { - lTime.SetSecondDouble((float)i); - FbxDouble3 value = p.EvaluateValue(lTime); - } - - /* - The base layer has a weight curve: - - Time | 0 | 1 | 2 | - Weight +-------------+----------------+--------------| - Base Layer | 0.0 | 100.0% | (100.0%) | - Layer2 | <100.0%> | <100.0%> | <100.0%> | - +-------------+----------------+--------------| - - () Querying values outside the first and/or last keys in a curve will return - the first/last key defined. - <> Since it has never been set, it defaults to the multiplication neutral element (in percent). - - At the specified times each channel value on their respective layers is: - - Time | 0 | 1 | 2 | - Channel +-------------+----------------+--------------| - 0 Base | 0* | 1.1* | 1.1* | - Layer2 | (3.33) | 3.33 | 6.66 | (curve2) - +-------------+----------------+--------------| - 1 Base | 0* | 10.0* | (10.0) | (curve1) - Layer2 | 5.0 | 5.0 | 5.0 | - +-------------+----------------+--------------| - 2 Base | 0* | 3.3* | 6.66* | (curve2) - Layer2 | 0.0 | 0.0 | 0.0 | - +-------------+----------------+--------------| - - * key (or property, if not animated) value multiplied by the weight. - () same as value at time 1 since there is no key here. - - therefore, considering that the second animation layer's blend mode is set - to additive, the evaluated values for v at 0, 1 and 2 seconds are: - - time | 0 | 1 | 2 | - v +-------------+----------------+--------------| - 0 | 3.33 | 4.43 | 7.76 | - 1 | 5.0 | 15.00 | 15.00 | - 2 | 0.0 | 3.33 | 6.66 | - +-------------+----------------+--------------| - */ - return true; -} - diff --git a/sdk/Darwin/2019.2/samples/Audio/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Audio/CMakeLists.txt deleted file mode 100644 index de7d710..0000000 --- a/sdk/Darwin/2019.2/samples/Audio/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Audio .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio1.mp3" "${FBX_BUILD_ROOT}/audio1.mp3" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio2.wav" "${FBX_BUILD_ROOT}/audio2.wav" -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Darwin/2019.2/samples/Audio/audio1.mp3 b/sdk/Darwin/2019.2/samples/Audio/audio1.mp3 deleted file mode 100644 index f50ed8f..0000000 Binary files a/sdk/Darwin/2019.2/samples/Audio/audio1.mp3 and /dev/null differ diff --git a/sdk/Darwin/2019.2/samples/Audio/audio2.wav b/sdk/Darwin/2019.2/samples/Audio/audio2.wav deleted file mode 100644 index b04b59d..0000000 Binary files a/sdk/Darwin/2019.2/samples/Audio/audio2.wav and /dev/null differ diff --git a/sdk/Darwin/2019.2/samples/Audio/main.cxx b/sdk/Darwin/2019.2/samples/Audio/main.cxx deleted file mode 100644 index 2eb38d4..0000000 --- a/sdk/Darwin/2019.2/samples/Audio/main.cxx +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of audio tracks and audio clips. -// -// 1. Create a stack. -// 2. Add the mandatory animation base layer. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Take 001"); - - // this stack animation range is limited from 0 to 10 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND * 10; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one animation layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Now, we create two audio tracks - FbxAudioLayer* lAudioTrack1 = FbxAudioLayer::Create(pScene, "AudioTrack0"); - lAnimStack->AddMember(lAudioTrack1); - FbxAudioLayer* lAudioTrack2 = FbxAudioLayer::Create(pScene, "AudioTrack1"); - lAnimStack->AddMember(lAudioTrack2); - lAudioTrack2->Solo = true; - - // Add a second animation layer - FbxAnimLayer* lAnimLayer1 = FbxAnimLayer::Create(pScene, "Layer1"); - lAnimStack->AddMember(lAnimLayer1); - - /* At this point the FbxAnimStack object has the following members: - GetMember(0) = lAnimLayer - GetMember(1) = lAudioTrack1 - GetMember(2) = lAudioTrack2 - GetMember(3) = lAnimLayer1 - */ - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(2) == lAudioTrack2); - FBX_ASSERT(lAnimStack->GetMember(3) == lAnimLayer1); - - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAnimLayer1); - FBX_ASSERT(lAnimStack->GetMember(0) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack2); - - // Create the audio clips - FbxTime t; - FbxAudio* lAudio1 = FbxAudio::Create(pScene, "Clip1"); - lAudio1->SetFileName("audio2.wav"); - lAudio1->BitRate = 176000; - lAudio1->Channels = 1; - lAudio1->SampleRate = 22050; - t.SetMilliSeconds(500); - lAudio1->Duration = t; - lAudio1->ClipIn = FBXSDK_TIME_ONE_SECOND * 25; - lAudio1->ClipOut = FBXSDK_TIME_ONE_SECOND * 40; - - FbxAudio* lAudio2 = FbxAudio::Create(pScene, "Clip2"); - lAudio2->SetFileName("audio1.mp3"); - lAudio2->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio2->Channels = 1; - lAudio2->BitRate = 64000; - lAudio2->SampleRate = 22050; - lAudio2->ClipIn = 0; - lAudio2->ClipOut = FBXSDK_TIME_ONE_SECOND; - - FbxAudio* lAudio3 = FbxAudio::Create(pScene, "Clip3"); - lAudio3->SetFileName("audio1.mp3"); // same file as Clip2 thus, same attributes - lAudio3->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio3->Channels = 1; - lAudio3->BitRate = 64000; - lAudio3->SampleRate = 22050; - lAudio3->ClipIn = FBXSDK_TIME_ONE_SECOND*5; - lAudio3->ClipOut = FBXSDK_TIME_ONE_SECOND*10; - t.SetMilliSeconds(333); - lAudio3->Offset = t; - - // Attach the audio clips to the audio tracks - lAudioTrack1->AddMember(lAudio1); - - lAudioTrack2->AddMember(lAudio1); - lAudioTrack2->AddMember(lAudio2); - lAudioTrack2->AddMember(lAudio3); - - // animate the volume on the audio clip 2 - // animate the volume on the audio clip 2 - lAudio2->Volume().Set(-3.0); - FbxAnimCurve* lVolCurve = lAudio2->Volume().GetCurve(lAnimLayer, true); - if (lVolCurve) - { - FbxTime lTime; - FbxAnimCurveKey key; - - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lVolCurve->KeyModifyBegin(); - for (int i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, (1-i)*1.0f); - lVolCurve->KeyAdd(lTime, key); - } - lVolCurve->KeyModifyEnd(); - } - - return true; -} - diff --git a/sdk/Darwin/2019.2/samples/CMakeSettings.txt b/sdk/Darwin/2019.2/samples/CMakeSettings.txt deleted file mode 100644 index 278ee50..0000000 --- a/sdk/Darwin/2019.2/samples/CMakeSettings.txt +++ /dev/null @@ -1,266 +0,0 @@ -# =================================================================================== -# -# PRE-REQUISITES -# -# =================================================================================== - -STRING(REGEX REPLACE "/[^/]*$" "" FBX_CMAKE_ROOT "${CMAKE_CURRENT_LIST_FILE}") -GET_FILENAME_COMPONENT(FBX_ROOT "${FBX_CMAKE_ROOT}/.." ABSOLUTE) -STRING(REGEX MATCH "[^/]+$" FBX_CMAKE_OUTPUT_FOLDER "${CMAKE_CURRENT_BINARY_DIR}") - -SET(FBX_CMAKELIST_DEPENDENT) -IF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - SET(FBX_CMAKELIST_DEPENDENT "CMakeLists.txt") -ENDIF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - -IF (NOT WIN32 AND NOT APPLE) - # assume we are on Linux - SET(LINUX 1) -ENDIF() - -# =================================================================================== -# -# MACROS SECTION -# -# =================================================================================== - -MACRO(SETPOLICY policy state) - if(POLICY ${policy}) - cmake_policy(SET ${policy} ${state}) - endif() -ENDMACRO(SETPOLICY policy state) - - -MACRO(SET_SAMPLES_GLOBAL_FLAGS) - SET(FBX_TMP_TARGET_LIBS ${FBX_REQUIRED_LIBS_DEPENDENCY}) - IF(NOT WIN32) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} dl pthread) - IF(APPLE) - IF(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework Carbon -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ELSE(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework CoreFoundation -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ENDIF(NOT FBX_CLANG) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} iconv) - ELSEIF(LINUX) - SET(FBX_LINKER_FLAGS ${FBX_LINKER_FLAGS} "-Wl,-rpath,${FBX_BUILD_ROOT}") - ENDIF() - IF(FBX_LINKER_FLAGS) - SET_TARGET_PROPERTIES(${FBX_TARGET_NAME} PROPERTIES LINK_FLAGS ${FBX_LINKER_FLAGS}) - ENDIF() - ENDIF(NOT WIN32) - - INCLUDE_DIRECTORIES(BEFORE "${FBX_ROOT}/include") - INCLUDE_DIRECTORIES(AFTER "${FBX_CMAKE_ROOT}/Common") - - IF(WIN32) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - ELSE(WIN32) - SET(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - IF(FBX_ARCH STREQUAL "x64") - SET(CMAKE_CXX_FLAGS "-m64 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m64 ${CMAKE_C_FLAGS}") - ELSEIF(FBX_ARCH STREQUAL "x86") - SET(CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}") - ENDIF() - IF (FBX_DEBUG) - SET(CMAKE_CXX_FLAGS "-D_DEBUG -g ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_DEBUG -g ${CMAKE_C_FLAGS}") - ELSE() - SET(CMAKE_CXX_FLAGS "-D_NDEBUG -Os ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_NDEBUG -Os ${CMAKE_C_FLAGS}") - ENDIF() - - IF(APPLE) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") - ENDIF(APPLE) - ENDIF(WIN32) - - IF(FBX_SHARED) - ADD_DEFINITIONS(-DFBXSDK_SHARED) - IF(WIN32) - STRING(REGEX REPLACE "\\.lib" ".dll" DLL_FILE "${FBX_REQUIRED_LIBS_DEPENDENCY}") - ADD_CUSTOM_COMMAND(TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${DLL_FILE} - $) - ENDIF() - - # copy the fbxsdk dynamic library to the output directory - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FBX_SDK_ABS} ${FBX_BUILD_ROOT}/${FBX_SDK} - ) - ENDIF(FBX_SHARED) - - TARGET_LINK_LIBRARIES(${FBX_TARGET_NAME} ${FBX_TMP_TARGET_LIBS}) - SET(FBX_TMP_TARGET_LIBS) -ENDMACRO(SET_SAMPLES_GLOBAL_FLAGS) - - -MACRO(FBX_PROJECT project subdir) - SET(FBX_PROJECT_NAME ${project}) - SET(FBX_TARGET_NAME ${project}) - SET(FBX_PROJECT_SUBDIR ${subdir} ) - - SET(TMP_COMPILER ${FBX_COMPILER}) - IF(FBX_RTL_SUFFX) - SET(TMP_COMPILER ${FBX_COMPILER}${FBX_RTL_SUFFX}) - ENDIF() - IF(NOT WIN32) - IF (NOT FBX_SHARED) - SET(TMP_COMPILER ${FBX_COMPILER}-static) - ENDIF() - ENDIF() - - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}") #${CMAKE_CFG_INTDIR} is automatically added by CMake - ELSEIF(LINUX OR APPLE) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${FBX_ARCH}/${TMP_COMPILER}/${FBX_VARIANT}") - ELSE() - MESSAGE(FATAL_ERROR "Unsupported platform.") - RETURN() - ENDIF() - - PROJECT(${project} ${ARGN}) - SET(PROJECT_BINARY_DIR "${FBX_BUILD_ROOT}") - SET(EXECUTABLE_OUTPUT_PATH "${FBX_BUILD_ROOT}") - SET(LIBRARY_OUTPUT_PATH "${FBX_BUILD_ROOT}") - - # Put the Variant part back into FBX_BUILD_ROOT - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}/${CMAKE_CFG_INTDIR}") - ENDIF() -ENDMACRO(FBX_PROJECT project subdir) - - -# =================================================================================== -# -# COMMON SECTION -# -# =================================================================================== -IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER ${CMAKE_MIN_REQ_VERSION}) - IF (${CMAKE_MAJOR_VERSION} LESS 3) - SETPOLICY(CMP0005 OLD) - SETPOLICY(CMP0003 OLD) - SETPOLICY(CMP0011 OLD) - ELSE() - SETPOLICY(CMP0003 NEW) - SETPOLICY(CMP0011 NEW) - ENDIF() - SETPOLICY(CMP0042 OLD) - SETPOLICY(CMP0045 OLD) -ENDIF() - -SET(FBX_SHARED) # can be set at command line with -DFBX_SHARED=1 -SET(FBX_STATIC_RTL) # can be set at command line with -DFBX_STATIC_RTL=1 (use static MSVCRT (/MT), otherwise use dynamic MSVCRT (/MD)) -SET(FBX_VARIANT) # can be set at command line with -DFBX_VARIANT=debug or release (Unix only) -SET(FBX_ARCH) # can be set at command line with -DFBX_ARCH=x64 or x86 (Unix only) -SET(FBX_LINKER_FLAGS) - -IF (FBX_SHARED AND FBX_STATIC_RTL) - SET(FBX_STATIC_RTL) - MESSAGE("\nBoth FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only.") -ENDIF() - -IF(NOT FBX_VARIANT) - SET(FBX_VARIANT "debug") -ENDIF() - -SET(FBX_DEBUG) -IF (FBX_VARIANT MATCHES "debug") - SET(FBX_DEBUG 1) -ENDIF() - -IF(NOT FBX_ARCH) - SET(FBX_ARCH "x64") - IF(WIN32 AND NOT CMAKE_CL_64) - SET(FBX_ARCH "x86") - ENDIF() -ENDIF() - -IF(WIN32) - SET(CMAKE_USE_RELATIVE_PATHS 1) - SET(LIB_EXTENSION ".lib") -ELSE(WIN32) - SET(LIB_EXTENSION ".a") - IF(FBX_SHARED) - IF(APPLE) - SET(LIB_EXTENSION ".dylib") - ELSEIF(LINUX) - SET(LIB_EXTENSION ".so") - ENDIF() - ENDIF() -ENDIF(WIN32) - -SET(FBX_SDK libfbxsdk${LIB_EXTENSION}) -IF(WIN32) - IF(CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo) - set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configurations to what we need" FORCE) - ENDIF() - - SET(FBX_VARIANT "$(Configuration)") - IF(MSVC_VERSION EQUAL 1700) - SET(FBX_COMPILER "vs2012") - ELSEIF(MSVC_VERSION EQUAL 1800) - SET(FBX_COMPILER "vs2013") - ELSEIF(MSVC_VERSION EQUAL 1900) - SET(FBX_COMPILER "vs2015") - ELSEIF(MSVC_VERSION EQUAL 1911) - SET(FBX_COMPILER "vs2017") - ENDIF() - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_SDK_ABS ${FBX_TARGET_LIBS_PATH}/${FBX_SDK}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS}) - IF(NOT FBX_SHARED) - IF(FBX_STATIC_RTL) - SET(FBX_CC_RTL "/MT") - SET(FBX_CC_RTLd "/MTd") - SET(FBX_RTL_SUFFX "-mt") - ELSE() - SET(FBX_CC_RTL "/MD") - SET(FBX_CC_RTLd "/MDd") - SET(FBX_RTL_SUFFX "-md") - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY - ${FBX_TARGET_LIBS_PATH}/libfbxsdk${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/libxml2${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/zlib${FBX_RTL_SUFFX}${LIB_EXTENSION}) - ENDIF() -ELSE() - MESSAGE("Detecting compiler version used") - EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) - IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - MESSAGE("Detected Clang ${CMAKE_CXX_COMPILER_VERSION}") - SET(FBX_COMPILER "clang") - SET(FBX_CLANG 1) - ELSE() - SET(FBX_COMPILER "gcc") - IF(CMAKE_CXX_COMPILER_VERSION MATCHES " [4-9]\\.[0-9].*") - MESSAGE( "Detected GCC >= 4.0" ) - ELSE() - MESSAGE(FATAL_ERROR "Detected " ${GCC_PREFIX} " only GCC 4.x and higher supported") - ENDIF() - ENDIF() - - IF(APPLE) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_VARIANT}") - IF(FBX_COMPILER STREQUAL "gcc") - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/ub/${FBX_VARIANT}") - ENDIF() - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ELSEIF(LINUX) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ENDIF() - SET(FBX_SDK_ABS ${FBX_EXTRA_LIBS_PATH}fbxsdk${LIB_EXTENSION}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS} z xml2) -ENDIF() \ No newline at end of file diff --git a/sdk/Darwin/2019.2/samples/Camera/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Camera/CMakeLists.txt deleted file mode 100644 index c17988a..0000000 --- a/sdk/Darwin/2019.2/samples/Camera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Camera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Camera/Camera.fbx" "${FBX_BUILD_ROOT}/Camera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/Camera/Camera.fbx b/sdk/Darwin/2019.2/samples/Camera/Camera.fbx deleted file mode 100644 index 361bda7..0000000 --- a/sdk/Darwin/2019.2/samples/Camera/Camera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4c6de8e9b23c05bd0bd2c227e9d817deb30efea5779db5afe03752a2869e2cd -size 23180 diff --git a/sdk/Darwin/2019.2/samples/Camera/main.cxx b/sdk/Darwin/2019.2/samples/Camera/main.cxx deleted file mode 100644 index 5765145..0000000 --- a/sdk/Darwin/2019.2/samples/Camera/main.cxx +++ /dev/null @@ -1,593 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) Get a camera from a scene. -// 2) Inspect the camera attributes and show them. -// 3) Create my own camera. -// 4) Inspect the camera attributes and show them. -// 5) Modify the new camera aspect. -// 6) Inspect the camera attributes and show them. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene from the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get camera from node attribute type. -// 6. Inspect the camera attributes and show the result. -// 7. Create camera using NTSC format. -// 8. Inspect the camera attributes and show the result. -// 9. Reset the new camera's aspect attributes with NTSC standard. -// 10. Inspect the camera attributes and show the result. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Camera.fbx" - -#define GET_MAX(a, b) (a) < (b) ? (b) : (a) - -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio); - -void DisplayCameraInfo(FbxNode* pNode); - -FbxCamera* CreateMyCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if( lScene) - { - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - //This function illustrates how to get camera info from scene. - if( gVerbose ) DisplayCameraInfo(lRootNode); - - //create my own camera set - FbxCamera* lMyCamera = CreateMyCamera(lScene); - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - //modify the camera's aspect attributes - lMyCamera->SetAspect( FbxCamera::eFixedResolution, 640, 480); - //Though we set the aspect attributes according to the NTSC standard, camera format is modified as eCUSTOM_FORMAT. - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - } - else - { - FBXSDK_printf("\n\nNull scene...\n"); - } - - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get camera info from scene. -void DisplayCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //get camera - FbxCamera* lCamera = pNode->GetCamera(); - - if( lCamera != NULL) - { - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - //get camera's information - - double lResolutionHeight = 0.0; - double lResolutionWidth = 0.0; - //get camera format - FbxCamera::EFormat lCameraFormat = lCamera->GetFormat(); - //camera using specific format has a given resolution(aspect) width and height. - /* - resolution width resolution height - eD1_NTSC 720 486 - eNTSC 640 480 - ePAL 570 486 - eD1_PAL 720 576 - eHD 1980 1080 - e640x480 640 480 - e320x200 320 200 - e320x240 320 240 - e128x128 128 128 - eFULL_SCREEN 1280 1024 - */ - switch( lCameraFormat) - { - case FbxCamera::eCustomFormat: - FBXSDK_printf( "Camera format is customized.\n"); - break; - case FbxCamera::eNTSC: - FBXSDK_printf( "Camera format is NTSC.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::eD1NTSC: - FBXSDK_printf( "Camera format is D1 NTSC.\n"); - lResolutionWidth = 720; - lResolutionHeight = 486; - break; - case FbxCamera::ePAL: - FBXSDK_printf( "Camera format is PAL.\n"); - lResolutionWidth = 570; - lResolutionHeight = 486; - break; - case FbxCamera::eD1PAL: - FBXSDK_printf( "Camera format is D1 PAL.\n"); - lResolutionWidth = 720; - lResolutionHeight = 576; - break; - case FbxCamera::eHD: - FBXSDK_printf( "Camera format is HD.\n"); - lResolutionWidth = 1980; - lResolutionHeight = 1080; - break; - case FbxCamera::e640x480: - FBXSDK_printf( "Camera format is 640x480.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::e320x200: - FBXSDK_printf( "Camera format is 320x200.\n"); - lResolutionWidth = 320; - lResolutionHeight = 200; - break; - case FbxCamera::e320x240: - FBXSDK_printf( "Camera format is 320x240.\n"); - lResolutionWidth = 320; - lResolutionHeight = 240; - break; - case FbxCamera::e128x128: - FBXSDK_printf( "Camera format is 128x128.\n"); - lResolutionWidth = 128; - lResolutionHeight = 128; - break; - case FbxCamera::eFullscreen: - FBXSDK_printf( "Camera format is full screen.\n"); - lResolutionWidth = 1280; - lResolutionHeight = 1024; - break; - default: - FBXSDK_printf( "Unknown camera format.\n"); - break; - } - - //get camera's inherent properties - { - //get aspect height - double lAspectHeight = lCamera->AspectHeight.Get(); - //get aspect width - double lAspectWidth = lCamera->AspectWidth.Get(); - //get aspect ratio - double lPixeltRatio = lCamera->GetPixelRatio(); - //verify the pixel ratio - double lScreenRatio = 4 / 3; // default screen ratio is 4 : 3; - if( lCamera->GetFormat() == FbxCamera::eHD) - { - lScreenRatio = 16 / 9; // in HD mode, screen ratio is 16 : 9; - } - double lInspectedPixelRatio = ComputePixelRatio( lResolutionWidth, lResolutionHeight, lScreenRatio); - if( lPixeltRatio != lInspectedPixelRatio) - { - FBXSDK_printf( "Camera pixel ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lPixeltRatio, lInspectedPixelRatio); - lCamera->PixelAspectRatio.Set( lInspectedPixelRatio); - lPixeltRatio = lInspectedPixelRatio; - } - else - { - FBXSDK_printf( "camera pixel ratio is %lf.\n", lPixeltRatio); - } - //get aspect ratio mode - /* - If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - If the ratio mode is eFIXED_RATIO, the height value is set to 1.0 and the width value is relative to the height value. - If the ratio mode is eFIXED_RESOLUTION, both width and height values are in pixels. - If the ratio mode is eFIXED_WIDTH, the width value is in pixels and the height value is relative to the width value. - If the ratio mode is eFIXED_HEIGHT, the height value is in pixels and the width value is relative to the height value. - */ - FbxCamera::EAspectRatioMode lCameraAspectRatioMode = lCamera->GetAspectRatioMode(); - switch( lCameraAspectRatioMode) - { - case FbxCamera::eWindowSize: - FBXSDK_printf( "Camera aspect ratio mode is window size.\n"); - break; - case FbxCamera::eFixedRatio: - FBXSDK_printf( "Camera aspect ratio mode is fixed ratio.\n"); - break; - case FbxCamera::eFixedResolution: - FBXSDK_printf( "Camera aspect ratio mode is fixed resolution.\n"); - break; - case FbxCamera::eFixedWidth: - FBXSDK_printf( "Camera aspect ratio mode is fixed width.\n"); - break; - case FbxCamera::eFixedHeight: - FBXSDK_printf( "Camera aspect ratio mode is fixed height.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aspect ratio mode.\n"); - break; - - } - //inspect the aspect width and height - if( lCameraFormat != FbxCamera::eCustomFormat && lCameraAspectRatioMode != FbxCamera::eWindowSize) - { - double lInspectedAspectHeight = 0.0; - double lInspectedAspectWidth = 0.0; - switch( lCameraAspectRatioMode) - { - default: - break; - case FbxCamera::eFixedRatio: - if( lAspectHeight != 1.0) - { - FBXSDK_printf( "Camera aspect height should be 1.0 in fixed ratio mode.\n\rRevise the height: %lf to 1.0.\n\n", lAspectHeight); - lCamera->AspectHeight.Set( 1.0); - lAspectHeight = 1.0; - } - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight * lPixeltRatio; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectWidth.Set( lInspectedAspectWidth); - lAspectWidth = lInspectedAspectWidth; - } - break; - case FbxCamera::eFixedResolution: - if( lAspectWidth != lResolutionWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lResolutionWidth); - lCamera->AspectWidth.Set( lResolutionWidth); - lAspectWidth = lResolutionWidth; - } - if( lAspectHeight != lResolutionHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lResolutionHeight); - lCamera->AspectHeight.Set( lResolutionHeight); - lAspectHeight = lResolutionHeight; - } - break; - case FbxCamera::eFixedWidth: - lInspectedAspectHeight = lResolutionHeight / lResolutionWidth; - if( lAspectHeight != lInspectedAspectHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lInspectedAspectHeight); - lCamera->AspectHeight.Set( lInspectedAspectHeight); - lAspectHeight = lInspectedAspectHeight; - } - break; - case FbxCamera::eFixedHeight: - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectHeight.Set( lInspectedAspectWidth); - lAspectHeight = lInspectedAspectWidth; - } - break; - - } - } - FBXSDK_printf( "Camera aspect width: %lf .\n Camera aspect height: %lf .\n", lAspectWidth, lAspectHeight); - - //inspect aperture width and height - double lInspectedApertureHeight = 0.0; - double lInspectedApertureWidth = 0.0; - //get camera's aperture format - FbxCamera::EApertureFormat lApertureFormat = lCamera->GetApertureFormat(); - //camera using specific aperture format has a given aperture width and height. - /* - aperture width aperture width aperture height (unit: inch) - e16MM_THEATRICAL 0.4040 0.2950 - eSUPER_16MM 0.4930 0.2920 - e35MM_ACADEMY 0.8640 0.6300 - e35MM_TV_PROJECTION 0.8160 0.6120 - e35MM_FULL_APERTURE 0.9800 0.7350 - e35MM_185_PROJECTION 0.8250 0.4460 - e35MM_ANAMORPHIC 0.8640 0.7320 - e70MM_PROJECTION 2.0660 0.9060 - eVISTAVISION 1.4850 0.9910 - eDYNAVISION 2.0800 1.4800 - eIMAX 2.7720 2.0720 - */ - switch( lApertureFormat) - { - case FbxCamera::eCustomAperture: - FBXSDK_printf( "Camera aperture format is customized.\n"); - break; - case FbxCamera::e16mmTheatrical: - FBXSDK_printf( "Camera aperture format is 16mm theatrical.\n"); - lInspectedApertureWidth = 0.4040; - lInspectedApertureHeight = 0.2950; - break; - case FbxCamera::eSuper16mm: - FBXSDK_printf( "Camera aperture format is super 16mm.\n"); - lInspectedApertureWidth = 0.4930; - lInspectedApertureHeight = 0.2920; - break; - case FbxCamera::e35mmAcademy: - FBXSDK_printf( "Camera aperture format is 35mm academy.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.6300; - break; - case FbxCamera::e35mmTVProjection: - FBXSDK_printf( "Camera aperture format is 35mm TV projection.\n"); - lInspectedApertureWidth = 0.8160; - lInspectedApertureHeight = 0.6120; - break; - case FbxCamera::e35mmFullAperture: - FBXSDK_printf( "Camera aperture format is 35mm full projection.\n"); - lInspectedApertureWidth = 0.9800; - lInspectedApertureHeight = 0.7350; - break; - case FbxCamera::e35mm185Projection: - FBXSDK_printf( "Camera aperture format is 35mm 185 projection.\n"); - lInspectedApertureWidth = 0.8250; - lInspectedApertureHeight = 0.4460; - break; - case FbxCamera::e35mmAnamorphic: - FBXSDK_printf( "Camera aperture format is 35mm anamorphic.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.7320; - break; - case FbxCamera::e70mmProjection: - FBXSDK_printf( "Camera aperture format is 70mm projection.\n"); - lInspectedApertureWidth = 2.0660; - lInspectedApertureHeight = 0.9060; - break; - case FbxCamera::eVistaVision: - FBXSDK_printf( "Camera aperture format is vistavision.\n"); - lInspectedApertureWidth = 1.4850; - lInspectedApertureHeight = 0.9910; - break; - case FbxCamera::eDynaVision: - FBXSDK_printf( "Camera aperture format is dynavision.\n"); - lInspectedApertureWidth = 2.0800; - lInspectedApertureHeight = 1.4800; - break; - case FbxCamera::eIMAX: - FBXSDK_printf( "Camera aperture format is imax.\n"); - lInspectedApertureWidth = 2.7720; - lInspectedApertureHeight = 2.0720; - break; - default: - FBXSDK_printf( "Unknown camera aperture format.\n"); - break; - } - - //get camera's aperture mode - FbxCamera::EApertureMode lApertureMode = lCamera->GetApertureMode(); - /* - Camera aperture modes. The aperture mode determines which values drive the camera aperture. - If the aperture mode is eHORIZONTAL_AND_VERTICAL, then the FOVX and FOVY is used. - If the aperture mode is eHORIZONTAL or eVERTICAL, then the FOV is used. - if the aperture mode is eFOCAL_LENGTH, then the focal length is used. - */ - switch( lApertureMode) - { - //fit the resolution gate within the film gate - case FbxCamera::eHorizAndVert: - FBXSDK_printf( "Camera aperture mode is horizontal and vertical.\n"); - break; - //fit the resolution gate horizontally within the film gate - case FbxCamera::eHorizontal: - FBXSDK_printf( "Camera aperture mode is horizontal.\n"); - break; - //fit the resolution gate vertically within the film gate - case FbxCamera::eVertical: - FBXSDK_printf( "Camera aperture mode is vertical.\n"); - break; - //fit the resolution gate according to the focal length - case FbxCamera::eFocalLength: - FBXSDK_printf( "Camera aperture mode is focal length.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aperture mode.\n"); - break; - - } - //get camera's aperture height. - double lApertureHeight = lCamera->GetApertureHeight(); - //get camera's aperture width. - double lApertureWidth = lCamera->GetApertureWidth(); - //get camera's aperture ratio. - double lApertureRatio = lCamera->FilmAspectRatio.Get(); - if( lApertureFormat != FbxCamera::eCustomAperture) - { - //inspect aperture width. - if( lApertureWidth != lInspectedApertureWidth) - { - FBXSDK_printf( "Camera aperture width is not right.\n\rRevise the width: %lf inches to %lf inches.\n\n", lApertureWidth, lInspectedApertureWidth); - lCamera->FilmWidth.Set( lInspectedApertureWidth); - lApertureWidth = lInspectedApertureWidth; - } - //inspect aperture height - if( lApertureHeight != lInspectedApertureHeight) - { - FBXSDK_printf( "Camera aperture height is not right.\n\rRevise the height: %lf inches to %lf inches.\n\n", lApertureHeight, lInspectedApertureHeight); - lCamera->FilmHeight.Set( lInspectedApertureHeight); - lApertureHeight = lInspectedApertureHeight; - } - //inspect aperture ratio. - double lInspectedApertureRatio = lApertureWidth / lApertureHeight; - if( lApertureRatio != lInspectedApertureRatio) - { - FBXSDK_printf( "Camera aperture ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lApertureRatio, lInspectedApertureRatio); - lCamera->FilmAspectRatio.Set( lInspectedApertureRatio); - lApertureRatio = lInspectedApertureRatio; - } - } - - FBXSDK_printf( "Camera aperture width: %lf inches.\n\rCamera aperture height: %lf inches.\n", lApertureWidth, lApertureHeight); - FBXSDK_printf( "Camera aperture ratio is %lf.\n\n", lApertureRatio); - - - //get focal length - double lFocalLength = lCamera->FocalLength.Get(); - //get FOV - double lFocalAngle = lCamera->FieldOfView.Get(); - //get squeeze ratio - double lFilmSqueezeRatio = lCamera->GetSqueezeRatio(); - if( lApertureMode == FbxCamera::eHorizAndVert) - { - //compute the focal length using FOVX. - double lFocalAngleX = lCamera->FieldOfViewX.Get();//horizontal fov - double lFocalAngleY = lCamera->FieldOfViewY.Get();//vertical fov - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngleX); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera horizontal FOV: %lf.\n\rCamera vertical FOV: %lf.\n ", lFocalAngleX, lFocalAngleY); - } - else if( lApertureMode == FbxCamera::eFocalLength) - { - //compute the FOV using focal length - double lComputedFOV = lCamera->ComputeFieldOfView( lFocalLength); - if( lFocalAngle != lComputedFOV) - { - FBXSDK_printf( "Camera FOV is not right.\n\rRevise the FOV: %lf degrees to %lf degrees.\n\n", lFocalAngle, lComputedFOV); - lCamera->FieldOfView.Set( lComputedFOV); - lFocalAngle = lComputedFOV; - } - else - { - FBXSDK_printf( "Camera FOV is %lf degrees.\n", lFocalAngle); - } - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - else - { - //compute the focal length using FOV - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngle); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera FOV: %lf.\n", lFocalAngle); - } - FBXSDK_printf( "Camera squeeze ratio is %lf \n", lFilmSqueezeRatio); - - } - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - } - - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - DisplayCameraInfo(pNode->GetChild(i)); - } -} - -//This function illustrates how to create and connect camera. -FbxCamera* CreateMyCamera(FbxScene* pScene) -{ - if(!pScene) - return NULL; - - //create a fbx node for camera - FbxNode* lMyCameraNode = FbxNode::Create(pScene,"myCameraNode"); - //connect camera node to root node - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->ConnectSrcObject( lMyCameraNode); - //create a cameraStereo, it's a node attribute of camera node. - FbxCamera* lMyCamera = FbxCamera::Create(pScene,"myCamera"); - //set Camera as a node attribute of the FBX node. - lMyCameraNode->SetNodeAttribute (lMyCamera); - //we recommend to use existed format - //set camera format - lMyCamera->SetFormat( FbxCamera::eNTSC); - //set camera aperture format - lMyCamera->SetApertureFormat( FbxCamera::e16mmTheatrical); - //set camera aperture mode - lMyCamera->SetApertureMode(FbxCamera::eVertical); - //set camera FOV - double lFOV = 45; - lMyCamera->FieldOfView.Set( lFOV); - //set camera FOV - double lFocalLength = lMyCamera->ComputeFocalLength( lFOV); - lMyCamera->FocalLength.Set( lFocalLength); - - - - return lMyCamera; - -} - -//This function computes the pixel ratio -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio) -{ - if( pWidth < 0.0 || pHeight < 0.0) - return 0.0; - - pWidth = GET_MAX( pWidth, 1.0 ); - pHeight = GET_MAX( pHeight, 1.0 ); - - double lResolutionRatio = (double) pWidth / pHeight; - - return pScreenRatio / lResolutionRatio; -} - - diff --git a/sdk/Darwin/2019.2/samples/Common/AnimationUtility.cxx b/sdk/Darwin/2019.2/samples/Common/AnimationUtility.cxx deleted file mode 100644 index 60f1454..0000000 --- a/sdk/Darwin/2019.2/samples/Common/AnimationUtility.cxx +++ /dev/null @@ -1,27 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "AnimationUtility.h" - -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack) -{ - const char * DEFAULT_STACK_NAME = "Base_Stack"; - const char * DEFAULT_LAYER_NAME = "Base_Layer"; - - // Create one animation stack - pAnimStack = FbxAnimStack::Create(pScene, DEFAULT_STACK_NAME); - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, DEFAULT_LAYER_NAME); - pAnimStack->AddMember(lAnimLayer); - - return lAnimLayer; -} diff --git a/sdk/Darwin/2019.2/samples/Common/AnimationUtility.h b/sdk/Darwin/2019.2/samples/Common/AnimationUtility.h deleted file mode 100644 index ffac293..0000000 --- a/sdk/Darwin/2019.2/samples/Common/AnimationUtility.h +++ /dev/null @@ -1,24 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_ANIMATION_UTILITY_H_ -#define INCLUDE_ANIMATION_UTILITY_H_ - -#include - -/** Create a default animation stack and a default animation layer for the given scene. - * /param pScene The scene in which the animation stack and layer are created. - * /param pAnimStack The created animation stack. - * /return The created animation layer. - */ -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack); - -#endif // INCLUDE_ANIMATION_UTILITY_H_ diff --git a/sdk/Darwin/2019.2/samples/Common/Common.cxx b/sdk/Darwin/2019.2/samples/Common/Common.cxx deleted file mode 100644 index a41e8b8..0000000 --- a/sdk/Darwin/2019.2/samples/Common/Common.cxx +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "../Common/Common.h" - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); - - //Load plugins from the executable directory (optional) - FbxString lPath = FbxGetApplicationDirectory(); - pManager->LoadPluginsDirectory(lPath.Buffer()); - - //Create an FBX scene. This object holds most objects imported/exported from/to files. - pScene = FbxScene::Create(pManager, "My Scene"); - if( !pScene ) - { - FBXSDK_printf("Error: Unable to create FBX scene!\n"); - exit(1); - } -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat, bool pEmbedMedia) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format in less no ASCII format found - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(EXP_FBX_GOBO, true); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX file format version %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pScene); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename) -{ - int lFileMajor, lFileMinor, lFileRevision; - int lSDKMajor, lSDKMinor, lSDKRevision; - //int lFileFormat = -1; - int lAnimStackCount; - bool lStatus; - char lPassword[1024]; - - // Get the file version number generate by the FBX SDK. - FbxManager::GetFileFormatVersion(lSDKMajor, lSDKMinor, lSDKRevision); - - // Create an importer. - FbxImporter* lImporter = FbxImporter::Create(pManager,""); - - // Initialize the importer by providing a filename. - const bool lImportStatus = lImporter->Initialize(pFilename, -1, pManager->GetIOSettings()); - lImporter->GetFileVersion(lFileMajor, lFileMinor, lFileRevision); - - if( !lImportStatus ) - { - FbxString error = lImporter->GetStatus().GetErrorString(); - FBXSDK_printf("Call to FbxImporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", error.Buffer()); - - if (lImporter->GetStatus().GetCode() == FbxStatus::eInvalidFileVersion) - { - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - } - - return false; - } - - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - - if (lImporter->IsFBX()) - { - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - - // From this point, it is possible to access animation stack information without - // the expense of loading the entire file. - - FBXSDK_printf("Animation Stack Information\n"); - - lAnimStackCount = lImporter->GetAnimStackCount(); - - FBXSDK_printf(" Number of Animation Stacks: %d\n", lAnimStackCount); - FBXSDK_printf(" Current Animation Stack: \"%s\"\n", lImporter->GetActiveAnimStackName().Buffer()); - FBXSDK_printf("\n"); - - for(int i = 0; i < lAnimStackCount; i++) - { - FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(i); - - FBXSDK_printf(" Animation Stack %d\n", i); - FBXSDK_printf(" Name: \"%s\"\n", lTakeInfo->mName.Buffer()); - FBXSDK_printf(" Description: \"%s\"\n", lTakeInfo->mDescription.Buffer()); - - // Change the value of the import name if the animation stack should be imported - // under a different name. - FBXSDK_printf(" Import Name: \"%s\"\n", lTakeInfo->mImportName.Buffer()); - - // Set the value of the import state to false if the animation stack should be not - // be imported. - FBXSDK_printf(" Import State: %s\n", lTakeInfo->mSelect ? "true" : "false"); - FBXSDK_printf("\n"); - } - - // Set the import states. By default, the import states are always set to - // true. The code below shows how to change these states. - IOS_REF.SetBoolProp(IMP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(IMP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(IMP_FBX_LINK, true); - IOS_REF.SetBoolProp(IMP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(IMP_FBX_GOBO, true); - IOS_REF.SetBoolProp(IMP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(IMP_FBX_GLOBAL_SETTINGS, true); - } - - // Import the scene. - lStatus = lImporter->Import(pScene); - if (lStatus == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(pScene), &status, &details); - lStatus = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lStatus == false) - { - if (details.GetCount()) - { - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - } - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("Please enter password: "); - - lPassword[0] = '\0'; - - FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - scanf("%s", lPassword); - FBXSDK_CRT_SECURE_NO_WARNING_END - - FbxString lString(lPassword); - - IOS_REF.SetStringProp(IMP_FBX_PASSWORD, lString); - IOS_REF.SetBoolProp(IMP_FBX_PASSWORD_ENABLE, true); - - lStatus = lImporter->Import(pScene); - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("\nPassword is wrong, import aborted.\n"); - } - } - - // Destroy the importer. - lImporter->Destroy(); - - return lStatus; -} diff --git a/sdk/Darwin/2019.2/samples/Common/Common.h b/sdk/Darwin/2019.2/samples/Common/Common.h deleted file mode 100644 index 99850fa..0000000 --- a/sdk/Darwin/2019.2/samples/Common/Common.h +++ /dev/null @@ -1,25 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ -#ifndef _COMMON_H -#define _COMMON_H - -#include - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene); -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus); -void CreateAndFillIOSettings(FbxManager* pManager); - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false); -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename); - -#endif // #ifndef _COMMON_H - - diff --git a/sdk/Darwin/2019.2/samples/Common/GeometryUtility.cxx b/sdk/Darwin/2019.2/samples/Common/GeometryUtility.cxx deleted file mode 100644 index d2aba26..0000000 --- a/sdk/Darwin/2019.2/samples/Common/GeometryUtility.cxx +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GeometryUtility.h" - -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight) -{ - FbxMesh * lPyramid = FbxMesh::Create(pScene, pName); - - // Calculate the vertices of the pyramid - const double lBottomWidthHalf = pBottomWidth / 2; - const FbxVector4 PyramidControlPointArray[] = - { - FbxVector4(0, pHeight, 0), - FbxVector4(lBottomWidthHalf, 0, lBottomWidthHalf), - FbxVector4(lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, lBottomWidthHalf) - }; - - // Initialize and set the control points of the mesh - const int lControlPointCount = sizeof(PyramidControlPointArray) / sizeof(FbxVector4); - lPyramid->InitControlPoints(lControlPointCount); - for (int lIndex = 0; lIndex < lControlPointCount; ++lIndex) - { - lPyramid->SetControlPointAt(PyramidControlPointArray[lIndex], lIndex); - } - - // Set the control point indices of the bottom side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the front side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the left side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(2); - lPyramid->AddPolygon(3); - lPyramid->EndPolygon(); - - // Set the control point indices of the back side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(4); - lPyramid->EndPolygon(); - - // Set the control point indices of the right side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(1); - lPyramid->EndPolygon(); - - // Attach the mesh to a node - FbxNode * lPyramidNode = FbxNode::Create(pScene, pName); - lPyramidNode->SetNodeAttribute(lPyramid); - - // Set this node as a child of the root node - pScene->GetRootNode()->AddChild(lPyramidNode); - - return lPyramidNode; -} - - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -5.0, 0.0, 5.0, 1.0}, { 5.0, 0.0, 5.0, 1.0}, { 5.0,10.0, 5.0, 1.0}, { -5.0,10.0, 5.0, 1.0}, - { -5.0, 0.0, -5.0, 1.0}, { 5.0, 0.0, -5.0, 1.0}, { 5.0,10.0, -5.0, 1.0}, { -5.0,10.0, -5.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // uvs - static Vector2 lUVs[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eAllSame); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lMaterialElement->GetIndexArray().Add(0); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->LclTranslation.Set(pLclTranslation); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - // create UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV("UVSet1"); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (int i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs[i][0], lUVs[i][1])); - - for (int i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - return lNode; -} - diff --git a/sdk/Darwin/2019.2/samples/Common/GeometryUtility.h b/sdk/Darwin/2019.2/samples/Common/GeometryUtility.h deleted file mode 100644 index 5071cdc..0000000 --- a/sdk/Darwin/2019.2/samples/Common/GeometryUtility.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_GEOMETRY_UTILITY_H_ -#define INCLUDE_GEOMETRY_UTILITY_H_ - -#include - -/** Create a pyramid mesh with specific bottom width and height, and attach it to a node. - * /param pScene The scene in which the pyramid mesh is created. - * /param pName The name of the pyramid mesh and the node to which the pyramid is attached. - * /param pBottomWidht The width of the bottom side of the pyramid. - * /param pHeight The height of the pyramid. - * /return Return the node to which the pyramid mesh is attached. - */ -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight); - -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation); - -#endif // INCLUDE_GEOMETRY_UTILITY_H_ diff --git a/sdk/Darwin/2019.2/samples/ConvertScene/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ConvertScene/CMakeLists.txt deleted file mode 100644 index 5a30716..0000000 --- a/sdk/Darwin/2019.2/samples/ConvertScene/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ConvertScene .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ConvertScene/box.fbx" "${FBX_BUILD_ROOT}/box.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ConvertScene/box.fbx b/sdk/Darwin/2019.2/samples/ConvertScene/box.fbx deleted file mode 100644 index d78a3cb..0000000 --- a/sdk/Darwin/2019.2/samples/ConvertScene/box.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:862247f82d91dab7a998c6110775eaed0bd7196368e40f3bf6115f9221bf1875 -size 12128 diff --git a/sdk/Darwin/2019.2/samples/ConvertScene/main.cxx b/sdk/Darwin/2019.2/samples/ConvertScene/main.cxx deleted file mode 100644 index dffec2a..0000000 --- a/sdk/Darwin/2019.2/samples/ConvertScene/main.cxx +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This program converts any file in a format supported by the FBX SDK -// into DAE, FBX, 3DS, OBJ and DXF files. -// -// Steps: -// 1. Initialize SDK objects. -// 2. Load a file(fbx, obj,...) to a FBX scene. -// 3. Create a exporter. -// 4. Retrieve the writer ID according to the description of file format. -// 5. Initialize exporter with specified file format -// 6. Export. -// 7. Destroy the exporter -// 8. Destroy the FBX SDK manager -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "box.fbx" - -const char* lFileTypes[] = -{ - "_dae.dae", "Collada DAE (*.dae)", - "_fbx7binary.fbx", "FBX binary (*.fbx)", - "_fbx7ascii.fbx", "FBX ascii (*.fbx)", - "_fbx6binary.fbx", "FBX 6.0 binary (*.fbx)", - "_fbx6ascii.fbx", "FBX 6.0 ascii (*.fbx)", - "_obj.obj", "Alias OBJ (*.obj)", - "_dxf.dxf", "AutoCAD DXF (*.dxf)" -}; - -int main(int argc, char** argv) -{ - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - bool lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - if( lResult ) - { - const size_t lFileNameLength = strlen((argc>=3)?argv[2]:lFilePath.Buffer()); - char* lNewFileName = new char[lFileNameLength+64]; - FBXSDK_strcpy(lNewFileName,lFileNameLength+64,(argc>=3)?argv[2]:lFilePath.Buffer()); - - const size_t lFileTypeCount = sizeof(lFileTypes)/sizeof(lFileTypes[0])/2; - - for(size_t i=0; iGetIOPluginRegistry()->FindWriterIDByDescription(lFileTypes[i*2+1]); - - // Construct the output file name. - FBXSDK_strcpy(lNewFileName+lFileNameLength-4,60, lFileTypes[i*2]); - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - // Initialize the exporter. - lResult = lExporter->Initialize(lNewFileName, lFormat, lSdkManager->GetIOSettings()); - if( !lResult ) - { - FBXSDK_printf("%s:\tCall to FbxExporter::Initialize() failed.\n", lFileTypes[i*2+1]); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - } - else - { - // Export the scene. - lResult = lExporter->Export(lScene); - if( !lResult ) - { - FBXSDK_printf("Call to FbxExporter::Export() failed.\n"); - } - } - - // Destroy the exporter. - lExporter->Destroy(); - } - delete[] lNewFileName; - } - else - { - FBXSDK_printf("Call to LoadScene() failed.\n"); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - diff --git a/sdk/Darwin/2019.2/samples/ExportDocument/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportDocument/CMakeLists.txt deleted file mode 100644 index 8645921..0000000 --- a/sdk/Darwin/2019.2/samples/ExportDocument/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportDocument .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportDocument/main.cxx b/sdk/Darwin/2019.2/samples/ExportDocument/main.cxx deleted file mode 100644 index b28435a..0000000 --- a/sdk/Darwin/2019.2/samples/ExportDocument/main.cxx +++ /dev/null @@ -1,494 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The document created in this example is a container for objects. -// The document includes two sub-documents to contain materials and lights separately. -// -// The example illustrates how to: -// 1) create document and export -// 2) create objects that connect to document directly -// 3) create sub-document -// 4) create materials and textures, connect texture to material -// 5) create lights -// 6) export a document in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -#define SAMPLE_FILENAME "ExportDocument.fbx" - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument); -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument); -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument); -FbxNode* CreatePlane(FbxManager* pManager, const char* pName); -FbxSurfacePhong* CreateMaterial(FbxManager* pManager); -FbxTexture* CreateTexture(FbxManager* pManager); -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType); - - -void InitializeSdkObjects(FbxManager*& pManager) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -// Export document, the format is ascii by default -bool SaveDocument(FbxManager* pManager, FbxDocument* pDocument, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format if pEmbedMedia is true - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - if (!pEmbedMedia) - { - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX version number for this version of the FBX SDK is %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pDocument); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxDocument* lDocument = NULL; - bool lResult = false; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager); - - // create the main document - lDocument = FbxDocument::Create(lSdkManager, "RootDoc"); - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - // Create the scene. - lResult = CreateDocument(lSdkManager, lDocument); - if( lResult ) - { - //Save the document - lResult = SaveDocument(lSdkManager, lDocument, lSampleFileName); - if( !lResult ) FBXSDK_printf("\n\nAn error occurred while saving the document...\n"); - } - else FBXSDK_printf("\n\nAn error occurred while creating the document...\n"); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument) -{ - int lCount; - - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Example document"; - lDocInfo->mSubject = "Illustrates the creation of FbxDocument with geometries, materials and lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pDocument->SetDocumentInfo(lDocInfo); - - // NOTE: Objects created directly in the SDK Manager are not visible - // to the disk save routines unless they are manually connected to the - // documents (see below). Ideally, one would directly use the FbxScene/FbxDocument - // during the creation of objects so they are automatically connected and become visible - // to the disk save routines. - FbxNode* lPlane = CreatePlane(pManager, "Plane"); - - // add the geometry to the main document. - pDocument->AddRootMember(lPlane); - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 3: the FbxNode - lPlane; FbxMesh belongs to lPlane; Material that connect to lPlane - - // Create sub document to contain materials. - FbxDocument* lMatDocument = FbxDocument::Create(pManager,"Material"); - - CreateMatDocument(pManager, lMatDocument); - // Connect the light sub document to main document - pDocument->AddMember(lMatDocument); - - // Create sub document to contain lights - FbxDocument* lLightDocument = FbxDocument::Create(pManager,"Light"); - CreateLightDocument(pManager, lLightDocument); - // Connect the light sub document to main document - pDocument->AddMember(lLightDocument); - - lCount = pDocument->GetMemberCount(); // lCount = 5 : 3 add two sub document - - // document can contain animation. Please refer to other sample about how to set animation - pDocument->CreateAnimStack("PlanAnim"); - - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 7: 5 add AnimStack and AnimLayer - lCount = pDocument->GetMemberCount(); // lCount = 2 - - return true; -} - -// Create material sub document -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for materials"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with materials."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx material document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pMatDocument->SetDocumentInfo(lDocInfo); - - // add material object to the sub document - pMatDocument->AddMember(CreateMaterial(pManager)); -} - -// Create light sub document -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for lights"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx light document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pLightDocument->SetDocumentInfo(lDocInfo); - - // add light objects to the sub document - pLightDocument->AddMember(CreateLight(pManager, FbxLight::eSpot)); - pLightDocument->AddMember(CreateLight(pManager, FbxLight::ePoint)); -} - -// Create a plane mesh. -FbxNode* CreatePlane(FbxManager* pManager, const char* pName) -{ - int i; - FbxMesh* lMesh = FbxMesh::Create(pManager,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - - FbxVector4 lNormalZPos(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lElementNormal= lMesh->CreateElementNormal(); - - lElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the normal values for every control point. - lElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel. - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygons. Assign texture and texture UV indices. - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(i = 0; i < 4; i++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseElement->GetIndexArray().SetAt(i, i); - } - - lMesh->EndPolygon (); - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // rotate the plane - lNode->LclRotation.Set(FbxVector4(90, 0, 0)); - - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - if( !lMesh->GetElementMaterial( 0)) - return NULL; - - // add material to the node. - // the material can't in different document with the geometry node or in sub-document - // we create a simple material here which belong to main document - FbxString lMaterialName = "material_for_plane"; - FbxString lShadingName = "Phong"; - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - lMaterial->Diffuse.Set(FbxDouble3(1.0, 1.0, 0)); - lMaterial->DiffuseFactor.Set(1.); - - lNode->AddMaterial(lMaterial); - - // We are in eByPolygon, so there's only need for index (a plane has 1 polygon). - lMaterialElement->GetIndexArray().SetCount(lMesh->GetPolygonCount()); - - // Set the Index to the material - for(i=0; iGetPolygonCount(); ++i) - lMaterialElement->GetIndexArray().SetAt(i,0); - - // return the FbxNode - return lNode; -} - - -// Create a texture -FbxTexture* CreateTexture(FbxManager* pManager) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pManager,""); - - // Resource file must be in the application's directory. - FbxString lPath = FbxGetApplicationDirectory(); - FbxString lTexPath = lPath + "\\Crate.jpg"; - - // Set texture properties. - lTexture->SetFileName(lTexPath.Buffer()); - lTexture->SetName("Diffuse Texture"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetAlphaSource (FbxTexture::eNone); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - return lTexture; -} - -// Create material. -// FBX scene must connect materials FbxNode, otherwise materials will not be exported. -// FBX document don't need connect materials to FbxNode, it can export standalone materials. -FbxSurfacePhong* CreateMaterial(FbxManager* pManager) -{ - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .ConnectSrcObject(CreateTexture(pManager)); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor .Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - - return lMaterial; -} - -// Create light. -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType) -{ - FbxString lLightName; - FbxDouble val; - - switch (pType) - { - case FbxLight::eSpot: - lLightName = "SpotLight"; - break; - case FbxLight::ePoint: - lLightName = "PointLight"; - break; - case FbxLight::eDirectional: - lLightName = "DirectionalLight"; - break; - default: - break; - } - - FbxLight* lFbxLight = FbxLight::Create(pManager, lLightName.Buffer()); - - lFbxLight->LightType.Set(pType); - - // parameters for spot light - if (pType == FbxLight::eSpot) - { - lFbxLight->InnerAngle.Set(40.0); - val = lFbxLight->InnerAngle.Get(); // val = 40 - - lFbxLight->OuterAngle.Set(40); - val = lFbxLight->OuterAngle.Get(); // val = 40 - } - - // - // Light Color... - // - FbxDouble3 lColor; - lColor[0] = 0.0; - lColor[1] = 1.0; - lColor[2] = 0.5; - lFbxLight->Color.Set(lColor); - FbxDouble3 val3 = lFbxLight->Color.Get(); // val3 = (0, 1, 0.5) - - // - // Light Intensity... - // - lFbxLight->Intensity.Set(100.0); - val = lFbxLight->Intensity.Get(); // val = 100 - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,lLightName+"Node"); - - // set the node attribute - lNode->SetNodeAttribute(lFbxLight); - lNode->LclTranslation.Set(FbxDouble3(20, 30, 100)); - val3 = lNode->LclTranslation.Get(); // val3 = (20, 30, 100) - - return lNode; -} - - diff --git a/sdk/Darwin/2019.2/samples/ExportScene01/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportScene01/CMakeLists.txt deleted file mode 100644 index d43b74f..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene01/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene01 .) -SET(FBX_TARGET_SOURCE - main.cxx - Thumbnail.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Darwin/2019.2/samples/ExportScene01/Thumbnail.h b/sdk/Darwin/2019.2/samples/ExportScene01/Thumbnail.h deleted file mode 100644 index 0ccbe0f..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene01/Thumbnail.h +++ /dev/null @@ -1,792 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _THUMBNAIL_H -#define _THUMBNAIL_H - -/** Thumbnail images to be exported by ExportScene01 example. - */ - -// Thumbnail for the scene. -// 64x64 RGB pixels -const unsigned char cSceneThumbnail[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe7, 0xe7, 0xc3, - 0xc2, 0xc2, 0xdb, 0xda, 0xda, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xf7, 0xf7, 0xf7, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa6, 0xa6, 0x37, 0x35, 0x36, 0x1c, - 0x18, 0x19, 0x25, 0x22, 0x23, 0xb1, 0xb0, 0xb1, 0xf4, 0xf4, 0xf4, 0xeb, 0xeb, 0xeb, 0xf1, 0xf1, - 0xf1, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfc, 0xfc, 0xfc, 0xef, 0xef, 0xef, 0x7c, 0x79, 0x7a, 0x2d, 0x29, 0x2a, 0x1c, 0x18, 0x19, 0x1f, - 0x1d, 0x1f, 0x1c, 0x1a, 0x1c, 0xa8, 0xa9, 0xab, 0xf1, 0xf2, 0xf4, 0xeb, 0xec, 0xed, 0xf0, 0xf0, - 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf3, 0xf3, 0xf3, 0xd7, 0xd7, 0xd7, 0xcd, 0xcd, 0xcd, 0xe6, 0xe6, 0xe6, 0xf6, 0xf6, 0xf6, - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, - 0xbc, 0xbc, 0xbc, 0x43, 0x43, 0x43, 0x24, 0x21, 0x21, 0x1f, 0x1b, 0x1c, 0x20, 0x1d, 0x1e, 0x41, - 0x3f, 0x40, 0xa8, 0xa5, 0xa7, 0xde, 0xdf, 0xe1, 0xee, 0xef, 0xf0, 0xf1, 0xf1, 0xf2, 0xfc, 0xfc, - 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfd, 0xfd, 0x98, 0x97, - 0x98, 0x39, 0x36, 0x37, 0x1d, 0x18, 0x19, 0x22, 0x1e, 0x1f, 0x1e, 0x1b, 0x1c, 0x5c, 0x5a, 0x5a, - 0xbc, 0xbb, 0xbc, 0xf0, 0xf2, 0xf4, 0xea, 0xeb, 0xec, 0xf5, 0xf5, 0xf5, 0xfd, 0xfc, 0xfc, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xed, 0xed, 0x8f, 0x8d, 0x8d, - 0x22, 0x1e, 0x1f, 0x24, 0x1f, 0x20, 0x1e, 0x18, 0x1a, 0x2f, 0x2d, 0x2d, 0x81, 0x82, 0x83, 0xe1, - 0xe2, 0xe4, 0xe7, 0xe8, 0xe9, 0xef, 0xef, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0x85, 0x84, 0x85, 0x31, 0x2d, - 0x2e, 0x1c, 0x17, 0x18, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1f, 0x20, 0x13, 0x11, 0x11, - 0x50, 0x4f, 0x50, 0xbb, 0xbd, 0xbf, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xf5, 0xf5, 0xf5, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x61, 0x18, 0x15, 0x16, - 0x22, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x55, 0x53, 0x53, 0xb7, 0xb8, 0xb7, 0xf2, 0xf4, 0xf5, 0xe9, - 0xea, 0xec, 0xf4, 0xf5, 0xf6, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xcf, 0xcf, 0xcf, - 0xbc, 0xbb, 0xbb, 0xde, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xe1, 0xe0, 0xe0, 0x46, 0x43, 0x43, 0x19, 0x14, - 0x15, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x1f, 0x1b, 0x19, - 0x2c, 0x29, 0x29, 0x71, 0x71, 0x72, 0xea, 0xeb, 0xeb, 0xeb, 0xed, 0xec, 0xee, 0xf0, 0xef, 0xf9, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf4, 0xf4, 0xf4, 0xb6, 0xb6, 0xb6, 0x45, 0x42, 0x43, 0x1b, 0x16, 0x18, 0x1d, 0x19, 0x1a, - 0x2f, 0x2d, 0x2d, 0x83, 0x83, 0x83, 0xd8, 0xd9, 0xd9, 0xf0, 0xf2, 0xf1, 0xee, 0xef, 0xee, 0xfa, - 0xfa, 0xfa, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd9, 0xd9, 0x41, 0x3d, 0x3e, - 0x09, 0x05, 0x06, 0x74, 0x73, 0x73, 0xf2, 0xf2, 0xf2, 0xe9, 0xe9, 0xe9, 0xec, 0xec, 0xec, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xd5, 0xd4, 0xd4, 0x40, 0x3d, 0x3d, 0x18, 0x13, - 0x15, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x20, 0x1c, 0x1b, - 0x25, 0x22, 0x22, 0x64, 0x64, 0x65, 0xe9, 0xeb, 0xea, 0xeb, 0xed, 0xec, 0xed, 0xee, 0xed, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xec, - 0xec, 0x98, 0x98, 0x98, 0x28, 0x27, 0x27, 0x1f, 0x1c, 0x1d, 0x19, 0x14, 0x15, 0x49, 0x46, 0x47, - 0xb2, 0xb2, 0xb2, 0xe4, 0xe6, 0xe6, 0xea, 0xed, 0xec, 0xf2, 0xf3, 0xf3, 0xfc, 0xfd, 0xfd, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x04, 0x05, 0x65, 0x63, 0x65, 0xdc, 0xdd, 0xdf, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xef, 0x55, 0x55, 0x55, 0x1c, 0x1a, - 0x1b, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1c, 0x17, 0x18, - 0x39, 0x36, 0x36, 0x8a, 0x8a, 0x89, 0xe9, 0xeb, 0xea, 0xea, 0xec, 0xeb, 0xf0, 0xf2, 0xf1, 0xfc, - 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe2, 0xe1, 0x79, 0x77, - 0x78, 0x1b, 0x16, 0x17, 0x23, 0x1f, 0x20, 0x18, 0x16, 0x16, 0x69, 0x69, 0x69, 0xcb, 0xcc, 0xcc, - 0xee, 0xf0, 0xef, 0xe9, 0xec, 0xea, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x03, 0x04, 0x64, 0x62, 0x63, 0xdb, 0xdb, 0xdd, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xc2, 0xc2, 0xc3, 0x4e, 0x4b, - 0x4c, 0x15, 0x11, 0x12, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x1e, 0x19, 0x1b, - 0x74, 0x71, 0x72, 0xe4, 0xe4, 0xe3, 0xe8, 0xea, 0xe9, 0xeb, 0xed, 0xec, 0xf7, 0xf8, 0xf8, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x60, 0x14, 0x12, - 0x12, 0x21, 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x87, 0x86, 0x86, 0xd8, 0xda, 0xda, 0xee, 0xf2, 0xf0, - 0xec, 0xee, 0xed, 0xf9, 0xfa, 0xfa, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf9, 0xf9, 0xbf, 0xbe, 0xbe, 0x37, 0x33, 0x34, - 0x07, 0x03, 0x05, 0x5e, 0x5c, 0x5d, 0xd2, 0xd3, 0xd2, 0xeb, 0xeb, 0xeb, 0xe9, 0xeb, 0xea, 0xf6, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xdf, - 0xdf, 0x96, 0x95, 0x96, 0x56, 0x55, 0x56, 0x52, 0x50, 0x51, 0x6a, 0x69, 0x69, 0xb2, 0xb2, 0xb2, - 0xe8, 0xe8, 0xe8, 0xef, 0xef, 0xef, 0xf4, 0xf4, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xcc, 0xcc, 0xcc, 0x4a, 0x47, 0x48, 0x1a, 0x16, 0x17, 0x1b, 0x17, - 0x18, 0x38, 0x36, 0x37, 0xa6, 0xa6, 0xa6, 0xdf, 0xe1, 0xe0, 0xed, 0xef, 0xee, 0xef, 0xf1, 0xf0, - 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xd2, 0xd1, 0xd2, 0x3a, 0x37, 0x38, - 0x09, 0x05, 0x06, 0x57, 0x54, 0x55, 0xc4, 0xc4, 0xc4, 0xea, 0xeb, 0xeb, 0xe8, 0xea, 0xe9, 0xf5, - 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, - 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, - 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, - 0xf9, 0xf9, 0xb2, 0xb2, 0xb2, 0x32, 0x32, 0x32, 0x20, 0x1d, 0x1e, 0x17, 0x13, 0x14, 0x53, 0x51, - 0x51, 0xbd, 0xbe, 0xbe, 0xe7, 0xea, 0xe9, 0xea, 0xec, 0xeb, 0xf3, 0xf4, 0xf4, 0xfd, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0x46, 0x43, 0x44, - 0x0e, 0x0a, 0x0b, 0x49, 0x47, 0x48, 0xae, 0xad, 0xb0, 0xeb, 0xeb, 0xed, 0xe8, 0xea, 0xe9, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xa1, - 0xa0, 0xa0, 0x27, 0x23, 0x24, 0x23, 0x1f, 0x20, 0x17, 0x13, 0x14, 0x65, 0x63, 0x64, 0xc9, 0xca, - 0xca, 0xef, 0xf1, 0xf0, 0xeb, 0xec, 0xeb, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x63, 0x60, 0x60, - 0x1c, 0x18, 0x19, 0x35, 0x33, 0x34, 0x92, 0x92, 0x94, 0xec, 0xed, 0xef, 0xe9, 0xeb, 0xea, 0xf1, - 0xf2, 0xf2, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x26, - 0x24, 0x24, 0x1f, 0x1a, 0x1b, 0x21, 0x1d, 0x1e, 0x78, 0x78, 0x78, 0xce, 0xd1, 0xd0, 0xf0, 0xf3, - 0xf2, 0xeb, 0xed, 0xec, 0xf8, 0xfb, 0xfa, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0x8d, 0x8d, 0x8d, - 0x31, 0x2e, 0x2f, 0x1d, 0x19, 0x1a, 0x71, 0x6e, 0x6f, 0xee, 0xee, 0xef, 0xea, 0xeb, 0xed, 0xed, - 0xee, 0xf0, 0xf9, 0xf9, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xf4, 0xf4, 0x7b, 0x78, 0x79, 0x2d, 0x29, 0x2a, 0x17, - 0x13, 0x14, 0x32, 0x2e, 0x2f, 0x84, 0x83, 0x83, 0xd9, 0xdb, 0xda, 0xee, 0xf1, 0xf0, 0xee, 0xef, - 0xee, 0xfb, 0xfb, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xc4, 0xc3, 0xc3, - 0x4a, 0x47, 0x48, 0x08, 0x05, 0x06, 0x51, 0x4f, 0x4f, 0xdd, 0xdd, 0xdd, 0xe8, 0xe9, 0xeb, 0xeb, - 0xeb, 0xee, 0xf6, 0xf6, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xe4, 0xe4, 0xe4, 0x6f, 0x6f, 0x6f, 0x2e, 0x2b, 0x2b, 0x14, 0x10, 0x11, 0x39, - 0x37, 0x38, 0x91, 0x91, 0x92, 0xe5, 0xe6, 0xe6, 0xea, 0xec, 0xeb, 0xef, 0xf1, 0xf0, 0xfa, 0xfb, - 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, - 0x67, 0x65, 0x66, 0x07, 0x04, 0x05, 0x3d, 0x3a, 0x3b, 0xaa, 0xab, 0xab, 0xe1, 0xe2, 0xe4, 0xeb, - 0xec, 0xee, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xd9, 0xd8, 0xd9, 0x73, 0x70, 0x71, 0x24, 0x1f, 0x20, 0x1a, 0x14, 0x16, 0x3d, 0x3a, 0x3c, 0x9b, - 0x9b, 0x9c, 0xf2, 0xf3, 0xf5, 0xe8, 0xe9, 0xeb, 0xf2, 0xf2, 0xf2, 0xfc, 0xfc, 0xfc, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x9d, 0x9a, 0x9b, 0x33, 0x2e, 0x2f, 0x24, 0x21, 0x22, 0x64, 0x64, 0x64, 0xd8, 0xd8, 0xda, 0xf1, - 0xf2, 0xf3, 0xee, 0xee, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdb, 0xdc, - 0x6f, 0x6d, 0x6e, 0x16, 0x13, 0x14, 0x24, 0x1f, 0x20, 0x3b, 0x39, 0x39, 0xab, 0xac, 0xab, 0xf3, - 0xf5, 0xf5, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe1, 0xe1, 0xe1, 0x71, 0x6f, 0x70, 0x0e, 0x09, 0x0a, 0x2d, 0x29, 0x2a, 0xba, 0xb9, 0xb9, 0xeb, - 0xec, 0xec, 0xec, 0xec, 0xec, 0xf2, 0xf2, 0xf2, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe4, 0xe5, 0xe5, 0x67, 0x67, 0x68, - 0x14, 0x10, 0x12, 0x25, 0x20, 0x22, 0x41, 0x3f, 0x40, 0xbc, 0xbc, 0xbe, 0xed, 0xef, 0xf0, 0xed, - 0xed, 0xee, 0xf4, 0xf4, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xb0, 0xae, 0xaf, 0x2b, 0x26, 0x27, 0x24, 0x20, 0x21, 0x63, 0x62, 0x62, 0xc6, - 0xc6, 0xc6, 0xf4, 0xf4, 0xf4, 0xed, 0xed, 0xed, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xe6, 0xe5, 0xe6, 0x58, 0x56, 0x57, 0x1e, 0x1a, 0x1b, - 0x1b, 0x17, 0x19, 0x4c, 0x4b, 0x4b, 0xcc, 0xce, 0xcd, 0xe6, 0xe8, 0xe9, 0xec, 0xec, 0xef, 0xf4, - 0xf4, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xeb, 0xea, 0xea, 0x8b, 0x89, 0x89, 0x1f, 0x1b, 0x1c, 0x17, 0x15, 0x16, 0x8c, - 0x8d, 0x8c, 0xe7, 0xe9, 0xe8, 0xeb, 0xed, 0xec, 0xec, 0xee, 0xed, 0xfa, 0xfb, 0xfa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x56, 0x53, 0x54, 0x27, 0x24, 0x25, 0x13, 0x0f, 0x10, - 0x5d, 0x5c, 0x5d, 0xcc, 0xce, 0xd0, 0xe9, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xf6, 0xf6, 0xf6, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0xd6, 0xd7, 0x55, 0x51, 0x52, 0x24, 0x1f, 0x21, 0x2c, - 0x29, 0x2a, 0x94, 0x95, 0x95, 0xf4, 0xf7, 0xf5, 0xe8, 0xea, 0xe9, 0xf0, 0xf1, 0xf0, 0xff, 0xff, - 0xff, 0xd3, 0xd3, 0xd3, 0x60, 0x5f, 0x5f, 0x22, 0x1f, 0x20, 0x15, 0x13, 0x14, 0x64, 0x64, 0x64, - 0xc8, 0xc9, 0xc9, 0xf0, 0xf1, 0xf3, 0xea, 0xea, 0xec, 0xf7, 0xf6, 0xf7, 0xfd, 0xfd, 0xfd, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xd4, 0xd3, 0xd4, 0x42, 0x40, 0x41, 0x0f, - 0x0d, 0x0e, 0x3c, 0x3a, 0x3b, 0x96, 0x94, 0x95, 0xeb, 0xed, 0xec, 0xf0, 0xf3, 0xf2, 0xd0, 0xd1, - 0xd0, 0x6f, 0x6d, 0x6d, 0x14, 0x0f, 0x10, 0x22, 0x1f, 0x20, 0x62, 0x62, 0x64, 0xc4, 0xc4, 0xc6, - 0xf4, 0xf4, 0xf5, 0xec, 0xec, 0xec, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xb9, 0xb7, 0xb8, 0x49, - 0x47, 0x48, 0x0d, 0x0a, 0x0b, 0x32, 0x2e, 0x2f, 0x82, 0x80, 0x81, 0xcc, 0xcc, 0xcc, 0x6a, 0x68, - 0x69, 0x14, 0x10, 0x11, 0x29, 0x24, 0x25, 0x59, 0x55, 0x56, 0xd0, 0xcf, 0xd1, 0xf1, 0xf1, 0xf3, - 0xed, 0xed, 0xef, 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, - 0xb0, 0xb0, 0x44, 0x43, 0x43, 0x1b, 0x16, 0x17, 0x24, 0x20, 0x21, 0x2c, 0x28, 0x29, 0x24, 0x20, - 0x21, 0x20, 0x1c, 0x1e, 0x5c, 0x5b, 0x5b, 0xd9, 0xdb, 0xda, 0xe8, 0xea, 0xeb, 0xec, 0xed, 0xef, - 0xf6, 0xf7, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xbb, 0xba, 0xba, 0x48, 0x44, 0x45, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x17, 0x12, - 0x13, 0x45, 0x42, 0x44, 0xaa, 0xa9, 0xaa, 0xe9, 0xea, 0xea, 0xe9, 0xea, 0xeb, 0xf2, 0xf2, 0xf4, - 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xe4, 0xe4, 0xe5, 0x86, 0x85, 0x86, 0x1f, 0x1c, 0x1d, 0x1e, 0x1c, 0x1d, 0x21, 0x1f, - 0x20, 0x1c, 0x1a, 0x1b, 0x2e, 0x2a, 0x2b, 0x6b, 0x67, 0x68, 0xc2, 0xc2, 0xc3, 0xe8, 0xea, 0xe9, - 0xef, 0xf1, 0xf0, 0xf4, 0xf5, 0xf6, 0xfc, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x93, 0x93, 0x93, 0x1b, 0x19, 0x1a, 0x23, 0x20, 0x21, 0x3f, 0x3d, 0x3e, 0x42, 0x40, - 0x41, 0x30, 0x2c, 0x2d, 0x21, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x1f, 0x1e, 0x1e, 0x4b, 0x4a, 0x4b, - 0x96, 0x96, 0x97, 0xd0, 0xd1, 0xd3, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf2, 0xf8, 0xf8, 0xf8, 0xfd, - 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, - 0x9d, 0x9d, 0x36, 0x32, 0x33, 0x1a, 0x16, 0x17, 0x31, 0x2f, 0x30, 0xb1, 0xb2, 0xb4, 0xed, 0xee, - 0xf1, 0xcb, 0xcb, 0xcd, 0x79, 0x79, 0x78, 0x36, 0x35, 0x35, 0x23, 0x20, 0x21, 0x21, 0x1d, 0x1e, - 0x20, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x41, 0x3e, 0x3f, 0x6b, 0x6a, 0x6b, 0x9b, 0x9a, 0x9a, 0xc4, - 0xc3, 0xc3, 0xe4, 0xe4, 0xe4, 0xf3, 0xf3, 0xf3, 0xf8, 0xf8, 0xf8, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, - 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xbf, 0xbe, 0xbe, 0x4d, - 0x4a, 0x4b, 0x0a, 0x07, 0x08, 0x37, 0x37, 0x36, 0xa2, 0xa3, 0xa3, 0xdf, 0xe0, 0xe2, 0xed, 0xee, - 0xf0, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xf7, 0xf7, 0xf7, 0xc4, 0xc4, 0xc4, 0x81, 0x80, 0x80, - 0x42, 0x40, 0x40, 0x23, 0x1e, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x21, 0x1e, 0x1f, 0x20, - 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x33, 0x30, 0x31, 0x48, 0x47, 0x47, 0x5f, 0x5e, 0x5e, 0x73, 0x72, - 0x72, 0x81, 0x81, 0x81, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0xb8, 0xb8, 0xb8, - 0xf8, 0xf8, 0xf8, 0xf1, 0xf1, 0xf1, 0xf6, 0xf6, 0xf6, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe1, 0xe1, 0xe1, 0x4d, 0x49, 0x4a, 0x17, - 0x12, 0x13, 0x30, 0x2d, 0x2d, 0x7f, 0x7e, 0x7e, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xec, 0xf0, 0xf0, - 0xf0, 0xfa, 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0xfe, 0xfe, 0xe8, 0xe8, 0xe8, 0xba, 0xba, 0xba, 0x91, 0x90, 0x91, 0x67, 0x66, 0x67, 0x44, - 0x41, 0x42, 0x2b, 0x27, 0x28, 0x21, 0x1e, 0x1f, 0x20, 0x1d, 0x1e, 0x22, 0x1e, 0x1f, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x10, 0x0d, 0x0e, 0x5b, 0x5b, 0x5a, - 0xe4, 0xe7, 0xe6, 0xe7, 0xe9, 0xe8, 0xeb, 0xeb, 0xeb, 0xf6, 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0x65, 0x65, 0x65, 0x29, 0x26, 0x26, 0x15, - 0x11, 0x12, 0x77, 0x74, 0x75, 0xe8, 0xe8, 0xe9, 0xea, 0xeb, 0xea, 0xec, 0xec, 0xec, 0xf8, 0xf8, - 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf9, 0xf8, 0xf8, 0xe9, 0xe8, 0xe9, 0xd6, 0xd5, 0xd6, 0xc0, 0xbf, 0xc0, 0xae, 0xad, - 0xae, 0xa2, 0xa1, 0xa2, 0x9c, 0x9b, 0x9c, 0x97, 0x97, 0x97, 0x9e, 0x9e, 0x9e, 0xc7, 0xc8, 0xc7, - 0xf6, 0xf9, 0xf7, 0xf1, 0xf3, 0xf2, 0xf7, 0xf7, 0xf7, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xed, 0xee, 0xee, 0x91, 0x91, 0x91, 0x20, 0x1b, 0x1d, 0x17, 0x12, 0x14, 0x65, - 0x63, 0x64, 0xc6, 0xc7, 0xc8, 0xf0, 0xf1, 0xf3, 0xe9, 0xea, 0xeb, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xa4, 0xa4, 0xa5, 0x23, 0x21, 0x22, 0x23, 0x20, 0x21, 0x3e, 0x3b, 0x3c, 0xb5, - 0xb3, 0xb4, 0xf7, 0xf7, 0xf8, 0xea, 0xeb, 0xed, 0xf4, 0xf5, 0xf5, 0xfd, 0xfd, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xba, 0xb9, 0xb9, 0x51, 0x4d, 0x4e, 0x14, 0x0f, 0x10, 0x2b, 0x27, 0x28, 0xaa, 0xab, 0xab, 0xe5, - 0xe7, 0xe6, 0xed, 0xed, 0xed, 0xf0, 0xf0, 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfd, 0xeb, 0xeb, 0xeb, - 0x60, 0x5d, 0x5e, 0x0e, 0x09, 0x0a, 0x31, 0x2d, 0x2e, 0x7a, 0x76, 0x77, 0xda, 0xdb, 0xda, 0xef, - 0xf1, 0xf0, 0xef, 0xf0, 0xf0, 0xfb, 0xfa, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x77, 0x73, 0x74, - 0x2c, 0x27, 0x28, 0x14, 0x11, 0x12, 0x55, 0x55, 0x55, 0xdb, 0xdd, 0xdc, 0xe8, 0xea, 0xe9, 0xeb, - 0xed, 0xec, 0xf6, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xa4, 0xa3, 0xa3, 0x33, 0x30, 0x31, - 0x0f, 0x0a, 0x0c, 0x49, 0x46, 0x46, 0xac, 0xac, 0xac, 0xeb, 0xed, 0xec, 0xe9, 0xeb, 0xea, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfa, 0xf9, 0xf9, 0xaa, 0xa8, 0xa9, 0x27, 0x22, 0x23, 0x1f, 0x1c, 0x1d, - 0x1d, 0x1c, 0x1d, 0x82, 0x83, 0x82, 0xf3, 0xf5, 0xf4, 0xe9, 0xea, 0xe9, 0xef, 0xef, 0xef, 0xfa, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xb0, 0xb0, 0xb1, 0x33, 0x32, 0x33, 0x20, 0x1d, 0x1e, 0x18, 0x14, 0x15, - 0x6b, 0x69, 0x69, 0xc8, 0xc9, 0xc8, 0xf0, 0xf2, 0xf1, 0xea, 0xec, 0xeb, 0xf8, 0xf9, 0xf9, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xca, 0xc9, 0xc9, 0x63, 0x61, 0x62, 0x3d, 0x3c, 0x3c, 0x6a, 0x6a, 0x6a, - 0xca, 0xca, 0xca, 0xf5, 0xf5, 0xf5, 0xed, 0xed, 0xed, 0xf6, 0xf6, 0xf6, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfd, 0xfe, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x78, 0x77, 0x78, 0x89, 0x89, 0x89, 0xad, 0xad, 0xad, - 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x22, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x21, 0x1d, 0x1e, 0x3d, 0x3b, 0x3c, 0x66, 0x63, 0x64, 0x68, 0x65, 0x66, 0x46, 0x43, 0x44, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x25, 0x22, 0x23, 0x46, 0x44, - 0x45, 0x97, 0x95, 0x96, 0x7e, 0x7c, 0x7d, 0x3b, 0x38, 0x39, 0x22, 0x1f, 0x20, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x64, 0x60, 0x61, 0xb2, 0xaf, 0xb0, 0xaf, 0xad, - 0xae, 0x43, 0x41, 0x42, 0x21, 0x1f, 0x20, 0x1d, 0x1b, 0x1c, 0x2b, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1f, 0x1b, 0x1c, 0x2e, - 0x2a, 0x2b, 0x72, 0x6f, 0x70, 0xd8, 0xd6, 0xd7, 0xc4, 0xc3, 0xc4, 0x5e, 0x5c, 0x5c, 0x1e, 0x1a, - 0x1b, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x1c, 0x18, 0x19, 0x3a, 0x36, 0x38, 0x91, 0x8f, 0x90, 0xe3, - 0xe3, 0xe3, 0xe1, 0xe0, 0xe0, 0x76, 0x74, 0x75, 0x2a, 0x26, 0x27, 0x1f, 0x1b, 0x1c, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1e, 0x1f, 0x25, 0x22, 0x22, 0x2d, 0x2c, 0x2c, 0x33, - 0x30, 0x30, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, - 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, - 0x35, 0x32, 0x33, 0x2b, 0x28, 0x29, 0x22, 0x20, 0x21, 0x2c, 0x2a, 0x2b, 0x33, 0x2f, 0x30, 0x35, - 0x30, 0x31, 0x34, 0x30, 0x32, 0x34, 0x30, 0x32, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x31, - 0x32, 0x31, 0x2e, 0x2f, 0x2f, 0x2b, 0x2c, 0x2e, 0x2a, 0x2b, 0x27, 0x23, 0x24, 0x22, 0x1e, 0x1f, - 0x21, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x2e, 0x2a, 0x2b, 0x35, - 0x32, 0x33, 0x33, 0x30, 0x31, 0x34, 0x30, 0x31, 0x2e, 0x2b, 0x2c, 0x26, 0x23, 0x24, 0x22, 0x1e, - 0x1f, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x1f, 0x1c, 0x1d, - 0x26, 0x23, 0x24, 0x46, 0x43, 0x44, 0xa4, 0xa3, 0xa3, 0xf4, 0xf5, 0xf5, 0xed, 0xee, 0xee, 0x93, - 0x93, 0x93, 0x30, 0x2f, 0x2f, 0x20, 0x1c, 0x1d, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x16, 0x12, 0x13, 0x45, 0x42, 0x43, 0xc2, 0xc1, 0xc2, 0xf9, - 0xf8, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x96, 0x95, 0x95, 0x30, 0x2e, 0x2f, 0xa5, 0xa3, 0xa4, 0xf4, 0xf3, 0xf4, 0xff, - 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0xfa, 0xfb, 0xed, 0xec, 0xed, - 0xc1, 0xc0, 0xc2, 0x7a, 0x79, 0x7a, 0x2c, 0x2b, 0x2b, 0x1b, 0x18, 0x18, 0x4b, 0x47, 0x48, 0xac, - 0xaa, 0xab, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xb9, 0xb8, 0xb8, 0x51, 0x4f, - 0x4f, 0x1d, 0x19, 0x1a, 0x24, 0x20, 0x21, 0x21, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x5f, 0x5d, 0x5d, - 0xc0, 0xc1, 0xc0, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xab, 0xac, 0xac, 0x43, 0x41, 0x42, 0x1e, - 0x1a, 0x1b, 0x22, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd7, 0xd6, 0xd6, 0x74, 0x72, 0x73, 0x39, 0x35, 0x36, 0x3b, 0x39, - 0x39, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3b, 0x3b, 0x39, 0x3a, - 0x3d, 0x3c, 0x3d, 0x28, 0x25, 0x26, 0x3b, 0x37, 0x38, 0xa3, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe3, 0xe3, 0xe3, 0x8c, 0x8b, 0x8b, 0x3a, 0x37, 0x38, 0x39, 0x37, 0x38, 0x3b, 0x39, - 0x3a, 0x3a, 0x38, 0x39, 0x3c, 0x3a, 0x3b, 0x4c, 0x4a, 0x4b, 0xa0, 0xa0, 0xa0, 0xea, 0xea, 0xea, - 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf3, 0xa6, 0xa6, 0xa6, 0x3a, 0x37, 0x38, 0x17, 0x12, 0x13, 0x23, - 0x20, 0x21, 0x52, 0x52, 0x52, 0xba, 0xb9, 0xba, 0xf5, 0xf4, 0xf5, 0xff, 0xff, 0xff, 0xf1, 0xf1, - 0xf1, 0xb0, 0xb0, 0xb0, 0x4d, 0x4d, 0x4d, 0x74, 0x74, 0x74, 0xd0, 0xd0, 0xd0, 0xff, 0xff, 0xff, - 0xf9, 0xf8, 0xf8, 0xce, 0xcd, 0xce, 0x5c, 0x58, 0x59, 0x23, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xde, 0xdf, 0xdf, 0x91, 0x90, 0x91, 0x64, 0x61, 0x62, 0x65, 0x63, - 0x63, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x67, 0x65, 0x66, - 0x39, 0x37, 0x38, 0x13, 0x10, 0x11, 0x3b, 0x37, 0x38, 0xa4, 0xa3, 0xa4, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xea, 0xe9, 0xea, 0xa7, 0xa6, 0xa7, 0x69, 0x66, 0x67, 0x69, 0x67, 0x68, 0x6b, 0x69, - 0x6a, 0x6a, 0x68, 0x69, 0x6e, 0x6c, 0x6d, 0x80, 0x7f, 0x80, 0xc7, 0xc6, 0xc7, 0xf8, 0xf8, 0xf8, - 0xff, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0x54, 0x54, 0x54, 0x29, 0x25, 0x26, 0x1f, 0x1b, 0x1c, 0x23, - 0x1f, 0x20, 0x21, 0x1d, 0x1f, 0x22, 0x1f, 0x20, 0x5b, 0x5a, 0x5a, 0xc2, 0xc2, 0xc2, 0xff, 0xff, - 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd8, 0xd8, - 0x74, 0x71, 0x72, 0x2b, 0x27, 0x28, 0x20, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xee, 0xee, 0xee, 0xe9, 0xe9, 0xe9, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, - 0x68, 0x67, 0x68, 0x0b, 0x09, 0x0a, 0x3a, 0x37, 0x38, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xec, 0xec, 0xec, 0xe1, 0xe1, 0xe1, 0xe3, 0xe2, 0xe2, 0xe4, 0xe3, - 0xe3, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xec, 0xeb, 0xeb, 0xf9, 0xfa, 0xfa, 0xff, 0xff, 0xff, - 0xe0, 0xe1, 0xe0, 0xa1, 0xa1, 0xa1, 0x63, 0x62, 0x62, 0x2d, 0x2a, 0x2a, 0x1f, 0x1b, 0x1c, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x7d, 0x7a, 0x7b, 0xe4, 0xe2, - 0xe3, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xf6, 0xf6, 0xf6, 0xa3, 0xa2, 0xa2, - 0x33, 0x30, 0x31, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd2, 0xd1, 0xd1, 0x63, 0x60, 0x61, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, - 0x22, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0x7c, 0x7b, 0x7b, 0x1c, 0x1b, 0x1b, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x22, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x2a, 0x27, 0x28, 0xa5, 0xa4, 0xa5, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0x90, 0x8e, 0x8f, 0x36, 0x32, 0x33, 0x16, - 0x12, 0x13, 0x2c, 0x28, 0x29, 0x68, 0x64, 0x65, 0xd1, 0xd0, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xec, 0xec, 0xec, 0xab, 0xab, 0xab, 0xdb, 0xdb, 0xdb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xe7, 0xe6, 0xe7, 0x8e, 0x8e, 0x8e, 0x38, 0x34, 0x35, 0x1d, 0x18, 0x1a, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x10, 0x12, 0x45, 0x42, 0x42, 0xc2, 0xc2, 0xc2, 0xf8, - 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xd2, 0xd2, 0xd2, 0x62, 0x62, 0x62, 0x1e, 0x1b, 0x1c, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x19, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa3, 0xa2, 0xa3, 0xf3, 0xf3, 0xf3, 0xff, - 0xff, 0xff, 0xeb, 0xeb, 0xeb, 0xaf, 0xaf, 0xaf, 0x77, 0x77, 0x77, 0x78, 0x77, 0x77, 0x7a, 0x78, - 0x79, 0x7a, 0x78, 0x79, 0x7b, 0x79, 0x7a, 0x82, 0x81, 0x82, 0xa1, 0xa1, 0xa1, 0xe0, 0xe0, 0xe0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xec, 0xed, 0x6a, 0x69, 0x6a, 0x24, 0x22, 0x23, 0x5d, - 0x5c, 0x5c, 0xcd, 0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xa6, 0xa3, - 0xa4, 0x3f, 0x3b, 0x3c, 0x23, 0x1f, 0x20, 0x25, 0x23, 0x25, 0x81, 0x80, 0x81, 0xe2, 0xe1, 0xe1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xe6, 0xe6, 0x83, 0x83, 0x82, 0x2b, 0x29, 0x29, 0x21, - 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3e, 0x3c, 0x3c, 0x9f, 0x9f, 0x9f, 0xc8, - 0xc8, 0xc8, 0xda, 0xda, 0xda, 0xaa, 0xab, 0xaa, 0x54, 0x53, 0x54, 0x1f, 0x1c, 0x1d, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x1b, 0x17, 0x18, 0x35, 0x33, 0x34, 0x87, 0x87, 0x87, 0xc5, 0xc5, 0xc5, 0xd2, - 0xd2, 0xd2, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcd, 0xcd, 0xcc, 0xcd, - 0xcd, 0xcc, 0xce, 0xcd, 0xcc, 0xce, 0xcd, 0xca, 0xcb, 0xcb, 0xc4, 0xc4, 0xc4, 0xba, 0xb9, 0xba, - 0xa0, 0x9e, 0x9f, 0x70, 0x6d, 0x6e, 0x34, 0x31, 0x32, 0x37, 0x35, 0x36, 0x8e, 0x8d, 0x8e, 0xce, - 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xce, 0xce, 0xce, 0xa6, 0xa7, 0xa7, 0x50, 0x4f, 0x4f, 0x1a, 0x18, - 0x18, 0x23, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x19, 0x17, 0x17, 0x39, 0x38, 0x37, - 0x89, 0x89, 0x89, 0xc7, 0xc7, 0xc7, 0xd0, 0xd0, 0xd0, 0xd3, 0xd3, 0xd3, 0xa6, 0xa5, 0xa5, 0x4f, - 0x4e, 0x4e, 0x24, 0x23, 0x23, 0x20, 0x1d, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, - 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, - 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x22, - 0x1e, 0x1f, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, - 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x21, 0x1d, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, - 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, - 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, - 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, - 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x24, 0x20, 0x21, 0x2f, 0x2b, 0x2c, 0x44, 0x40, 0x41 -}; - -#endif // _THUMBNAIL_H - diff --git a/sdk/Darwin/2019.2/samples/ExportScene01/main.cxx b/sdk/Darwin/2019.2/samples/ExportScene01/main.cxx deleted file mode 100644 index 0e62b09..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene01/main.cxx +++ /dev/null @@ -1,573 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cylinder linked to a skeleton -// made of 2 segments. Two animation stacks show the influence of the -// skeleton segments over the cylinder. -// -// The example illustrates how to: -// 1) create a patch -// 2) create a skeleton segment -// 3) create a link -// 4) store the bind pose -// 5) store one arbitrary rest pose -// 6) create multiple animation stacks -// 7) create meta-data and add a thumbnail -// 8) export a scene in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "Thumbnail.h" - -#define SAMPLE_FILENAME "ExportScene01.fbx" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -FbxNode* CreatePatch(FbxScene* pScene, const char* pName); -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName); - -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot); -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch); -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AddThumbnailToScene(FbxScene* pScene); -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode); - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation and animation of a deformed cylinder."; - sceneInfo->mAuthor = "ExportScene01.exe sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "deformed cylinder"; - sceneInfo->mComment = "no particular comments required."; - - // we need to add the sceneInfo before calling AddThumbNailToScene because - // that function is asking the scene for the sceneInfo. - pScene->SetSceneInfo(sceneInfo); - - AddThumbnailToScene(pScene); - - FbxNode* lPatch = CreatePatch(pScene, "Patch"); - FbxNode* lSkeletonRoot = CreateSkeleton(pScene, "Skeleton"); - - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPatch); - lRootNode->AddChild(lSkeletonRoot); - - // Store poses - LinkPatchToSkeleton(pScene, lPatch, lSkeletonRoot); - StoreBindPose(pScene, lPatch); - StoreRestPose(pScene, lSkeletonRoot); - - // Animation - AnimateSkeleton(pScene, lSkeletonRoot); - - return true; -} - -// Create a cylinder centered on the Z axis. -FbxNode* CreatePatch(FbxScene* pScene, const char* pName) -{ - FbxPatch* lPatch = FbxPatch::Create(pScene,pName); - - // Set patch properties. - lPatch->InitControlPoints(4, FbxPatch::eBSpline, 7, FbxPatch::eBSpline); - lPatch->SetStep(4, 4); - lPatch->SetClosed(true, false); - - FbxVector4* lVector4 = lPatch->GetControlPoints(); - int i; - - for (i = 0; i < 7; i++) - { - double lRadius = 15.0; - double lSegmentLength = 20.0; - lVector4[4*i + 0].Set(lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 1].Set(0.0, -lRadius, (i-3)*lSegmentLength); - lVector4[4*i + 2].Set(-lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 3].Set(0.0, lRadius, (i-3)*lSegmentLength); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // Rotate the cylinder along the X axis so the axis - // of the cylinder is the same as the bone axis (Y axis) - FbxVector4 lR(-90.0, 0.0, 0.0); - lNode->LclRotation.Set(lR); - lNode->SetNodeAttribute(lPatch); - - return lNode; -} - -// Create a skeleton with 2 segments. -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName) -{ - // Create skeleton root. - FbxString lRootName(pName); - lRootName += "Root"; - FbxSkeleton* lSkeletonRootAttribute = FbxSkeleton::Create(pScene, pName); - lSkeletonRootAttribute->SetSkeletonType(FbxSkeleton::eRoot); - FbxNode* lSkeletonRoot = FbxNode::Create(pScene,lRootName.Buffer()); - lSkeletonRoot->SetNodeAttribute(lSkeletonRootAttribute); - lSkeletonRoot->LclTranslation.Set(FbxVector4(0.0, -40.0, 0.0)); - - // Create skeleton first limb node. - FbxString lLimbNodeName1(pName); - lLimbNodeName1 += "LimbNode1"; - FbxSkeleton* lSkeletonLimbNodeAttribute1 = FbxSkeleton::Create(pScene,lLimbNodeName1); - lSkeletonLimbNodeAttribute1->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute1->Size.Set(1.0); - FbxNode* lSkeletonLimbNode1 = FbxNode::Create(pScene,lLimbNodeName1.Buffer()); - lSkeletonLimbNode1->SetNodeAttribute(lSkeletonLimbNodeAttribute1); - lSkeletonLimbNode1->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Create skeleton second limb node. - FbxString lLimbNodeName2(pName); - lLimbNodeName2 += "LimbNode2"; - FbxSkeleton* lSkeletonLimbNodeAttribute2 = FbxSkeleton::Create(pScene,lLimbNodeName2); - lSkeletonLimbNodeAttribute2->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute2->Size.Set(1.0); - FbxNode* lSkeletonLimbNode2 = FbxNode::Create(pScene,lLimbNodeName2.Buffer()); - lSkeletonLimbNode2->SetNodeAttribute(lSkeletonLimbNodeAttribute2); - lSkeletonLimbNode2->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Build skeleton node hierarchy. - lSkeletonRoot->AddChild(lSkeletonLimbNode1); - lSkeletonLimbNode1->AddChild(lSkeletonLimbNode2); - - return lSkeletonRoot; -} - -// Set the influence of the skeleton segments over the cylinder. -// The link mode is FbxCluster::eTotalOne which means the total -// of the weights assigned to a given control point must equal 1. -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot) -{ - int i, j; - FbxAMatrix lXMatrix; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - FbxNode* lLimbNode2 = lLimbNode1->GetChild(0); - - // Bottom section of cylinder is clustered to skeleton root. - FbxCluster *lClusterToRoot = FbxCluster::Create(pScene,""); - lClusterToRoot->SetLink(lRoot); - lClusterToRoot->SetLinkMode(FbxCluster::eTotalOne); - for(i=0; i<4; ++i) - for(j=0; j<4; ++j) - lClusterToRoot->AddControlPointIndex(4*i + j, 1.0 - 0.25*i); - - // Center section of cylinder is clustered to skeleton limb node. - FbxCluster* lClusterToLimbNode1 = FbxCluster::Create(pScene, ""); - lClusterToLimbNode1->SetLink(lLimbNode1); - lClusterToLimbNode1->SetLinkMode(FbxCluster::eTotalOne); - - for (i =1; i<6; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode1->AddControlPointIndex(4*i + j, (i == 1 || i == 5 ? 0.25 : 0.50)); - - - // Top section of cylinder is clustered to skeleton limb. - - FbxCluster * lClusterToLimbNode2 = FbxCluster::Create(pScene,""); - lClusterToLimbNode2->SetLink(lLimbNode2); - lClusterToLimbNode2->SetLinkMode(FbxCluster::eTotalOne); - - for (i=3; i<7; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode2->AddControlPointIndex(4*i + j, 0.25*(i - 2)); - - // Now we have the Patch and the skeleton correctly positioned, - // set the Transform and TransformLink matrix accordingly. - FbxScene* lScene = pPatch->GetScene(); - if( lScene ) lXMatrix = pPatch->EvaluateGlobalTransform(); - - lClusterToRoot->SetTransformMatrix(lXMatrix); - lClusterToLimbNode1->SetTransformMatrix(lXMatrix); - lClusterToLimbNode2->SetTransformMatrix(lXMatrix); - - - - if( lScene ) lXMatrix = lRoot->EvaluateGlobalTransform(); - lClusterToRoot->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode1->EvaluateGlobalTransform(); - lClusterToLimbNode1->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode2->EvaluateGlobalTransform(); - lClusterToLimbNode2->SetTransformLinkMatrix(lXMatrix); - - - // Add the clusters to the patch by creating a skin and adding those clusters to that skin. - // After add that skin. - - FbxGeometry* lPatchAttribute = (FbxGeometry*) pPatch->GetNodeAttribute(); - FbxSkin* lSkin = FbxSkin::Create(pScene, ""); - lSkin->AddCluster(lClusterToRoot); - lSkin->AddCluster(lClusterToLimbNode1); - lSkin->AddCluster(lClusterToLimbNode2); - lPatchAttribute->AddDeformer(lSkin); - -} - -// Create two animation stacks. -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - - // First animation stack. - lAnimStackName = "Bend on 2 sides"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Z channel - FbxAnimCurve* lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Same thing for the next object - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Second animation stack. - lAnimStackName = "Bend and turn around"; - lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Y channel - lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 720.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } -} - -// Add a thumbnail to the scene -void AddThumbnailToScene(FbxScene* pScene) -{ - FbxThumbnail* lThumbnail = FbxThumbnail::Create(pScene,""); - - lThumbnail->SetDataFormat(FbxThumbnail::eRGB_24); - lThumbnail->SetSize(FbxThumbnail::e64x64); - lThumbnail->SetThumbnailImage(cSceneThumbnail); - - if (pScene->GetSceneInfo()) - { - pScene->GetSceneInfo()->SetSceneThumbnail(lThumbnail); - } -} - -// Store the Bind Pose -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch) -{ - // In the bind pose, we must store all the link's global matrix at the time of the bind. - // Plus, we must store all the parent(s) global matrix of a link, even if they are not - // themselves deforming any model. - - // In this example, since there is only one model deformed, we don't need walk through - // the scene - // - - // Now list the all the link involve in the patch deformation - FbxArray lClusteredFbxNodes; - int i, j; - - if (pPatch && pPatch->GetNodeAttribute()) - { - int lSkinCount=0; - int lClusterCount=0; - switch (pPatch->GetNodeAttribute()->GetAttributeType()) - { - default: - break; - case FbxNodeAttribute::eMesh: - case FbxNodeAttribute::eNurbs: - case FbxNodeAttribute::ePatch: - - lSkinCount = ((FbxGeometry*)pPatch->GetNodeAttribute())->GetDeformerCount(FbxDeformer::eSkin); - //Go through all the skins and count them - //then go through each skin and get their cluster count - for(i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount+=lSkin->GetClusterCount(); - } - break; - } - //if we found some clusters we must add the node - if (lClusterCount) - { - //Again, go through all the skins get each cluster link and add them - for (i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount=lSkin->GetClusterCount(); - for (j=0; jGetCluster(j)->GetLink(); - AddNodeRecursively(lClusteredFbxNodes, lClusterNode); - } - - } - - // Add the patch to the pose - lClusteredFbxNodes.Add(pPatch); - } - } - - // Now create a bind pose with the link list - if (lClusteredFbxNodes.GetCount()) - { - // A pose must be named. Arbitrarily use the name of the patch node. - FbxPose* lPose = FbxPose::Create(pScene,pPatch->GetName()); - - // default pose type is rest pose, so we need to set the type as bind pose - lPose->SetIsBindPose(true); - - for (i=0; iEvaluateGlobalTransform(); - - lPose->Add(lKFbxNode, lBindMatrix); - } - - // Add the pose to the scene - pScene->AddPose(lPose); - } -} - -// Store a Rest Pose -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - // This example show an arbitrary rest pose assignment. - // This rest pose will set the bone rotation to the same value - // as time 1 second in the first stack of animation, but the - // position of the bone will be set elsewhere in the scene. - FbxString lNodeName; - FbxNode* lKFbxNode; - FbxMatrix lTransformMatrix; - FbxVector4 lT,lR,lS(1.0, 1.0, 1.0); - - // Create the rest pose - FbxPose* lPose = FbxPose::Create(pScene,"A Bind Pose"); - - // Set the skeleton root node to the global position (10, 10, 10) - // and global rotation of 45deg along the Z axis. - lT.Set(10.0, 10.0, 10.0); - lR.Set( 0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton root node to the pose - lKFbxNode = pSkeletonRoot; - lPose->Add(lKFbxNode, lTransformMatrix, false /*it's a global matrix*/); - - // Set the lLimbNode1 node to the local position of (0, 40, 0) - // and local rotation of -90deg along the Z axis. This show that - // you can mix local and global coordinates in a rest pose. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, -90.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Set the lLimbNode2 node to the local position of (0, 40, 0) - // and local rotation of 45deg along the Z axis. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lNodeName = lKFbxNode->GetName(); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Now add the pose to the scene - pScene->AddPose(lPose); -} - -// Add the specified node to the node array. Also, add recursively -// all the parent node of the specified node to the array. -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode) -{ - if (pNode) - { - AddNodeRecursively(pNodeArray, pNode->GetParent()); - - if (pNodeArray.Find(pNode) == -1) - { - // Node not in the list, add it - pNodeArray.Add(pNode); - } - } -} - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix) -{ - memcpy((double*)pXMatrix, &pMatrix.mData[0][0], sizeof(pMatrix.mData)); -} diff --git a/sdk/Darwin/2019.2/samples/ExportScene02/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportScene02/CMakeLists.txt deleted file mode 100644 index e43487e..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene02/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene02 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportScene02/gradient.jpg b/sdk/Darwin/2019.2/samples/ExportScene02/gradient.jpg deleted file mode 100644 index 20c1c0f..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene02/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Darwin/2019.2/samples/ExportScene02/main.cxx b/sdk/Darwin/2019.2/samples/ExportScene02/main.cxx deleted file mode 100644 index b95b22f..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene02/main.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a sphere morphed by 2 shapes. A -// animation stack shows the influence of the shapes over the sphere. -// -// The example illustrates how to: -// 1) create a nurbs -// 2) map a shape over a nurbs -// 3) map a texture over a nurbs on material channel Diffuse -// and Ambient -// 4) map a material over a nurbs -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene02.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName); - -void MapStretchedShape(FbxScene* pScene, FbxNode* pNurbs); -void MapBoxShape(FbxScene* pScene, FbxNode* pNurbs); -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs); -void MapTexture(FbxScene* pScene, FbxNode* pNurbs); -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs); - -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lNurbs = CreateNurbs(pScene, "Nurbs"); - - MapShapesOnNurbs(pScene, lNurbs); - MapMaterial(pScene, lNurbs); - MapTexture(pScene, lNurbs); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lNurbs); - - AnimateNurbs(lNurbs, pScene); - return true; -} - -// Create a sphere. -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName) -{ - FbxNurbs* lNurbs = FbxNurbs::Create(pScene,pName); - - // Set nurbs properties. - lNurbs->SetOrder(4, 4); - lNurbs->SetStep(2, 2); - lNurbs->InitControlPoints(8, FbxNurbs::ePeriodic, 7, FbxNurbs::eOpen); - - double lUKnotVector[] = { -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 }; - memcpy(lNurbs->GetUKnotVector(), lUKnotVector, lNurbs->GetUKnotCount()*sizeof(double)); - - double lVKnotVector[] = { 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0 }; - memcpy(lNurbs->GetVKnotVector(), lVKnotVector, lNurbs->GetVKnotCount()*sizeof(double)); - - FbxVector4* lVector4 = lNurbs->GetControlPoints(); - int i, j; - double lScale = 20.0; - double lPi = 3.14159; - double lYAngle[] = { 90.0, 90.0, 52.0, 0.0, -52.0, -90.0, -90.0 }; - double lRadius[] = { 0.0, 0.283, 0.872, 1.226, 0.872, 0.283, 0.0}; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - double lX = lScale * lRadius[i] * cos(lPi/4*j); - double lY = lScale * sin(2*lPi/360*lYAngle[i]); - double lZ = lScale * lRadius[i] * sin(lPi/4*j); - double lWeight = 1.0; - - lVector4[8*i + j].Set(lX, lY, lZ, lWeight); - } - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lNurbs); - - return lNode; -} - -// Map nurbs control points onto a stretched shape. -void MapStretchedShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"StretchedShape"); - - FbxVector4 lExtremeRight(-250.0, 0.0, 0.0); - FbxVector4 lExtremeLeft(250.0, 0.0, 0.0); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - if (j < 3 || j > 6) - { - lVector4[8*i + j] = lExtremeLeft; - } - else - { - lVector4[8*i + j] = lExtremeRight; - } - } - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -// Map nurbs control points onto a box shape. -void MapBoxShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"BoxShape"); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - double lScale = 20.0; - double lWeight = 1.0; - double lX[] = { 0.9, 1.1, 0.0, -1.1, -0.9, -1.1, 0.0, 1.1 }; - double lZ[] = { 0.0, 1.1, 0.9, 1.1, 0.0, -1.1, -0.9, -1.1 }; - - // Top control points. - for (i = 0; i < 8; i++) - { - lVector4[i].Set(0.0, lScale, 0.0, lWeight); - } - - // Middle control points. - for (i = 1; i < 6; i++) - { - double lY = 1.0 - 0.5 * (i - 1); - - for (j = 0; j < 8; j++) - { - lVector4[8*i + j].Set(lScale*lX[j], lScale*lY, lScale*lZ[j], lWeight); - } - } - - // Bottom control points. - for (i = 48; i < 56; i++) - { - lVector4[i].Set(0.0, -lScale, 0.0, lWeight); - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,"MyBlendShape"); - FbxBlendShapeChannel* lBlendShapeChannel01 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel01"); - FbxBlendShapeChannel* lBlendShapeChannel02 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel02"); - - //Create and add two target shapes on the lBlendShapeChannel. - MapStretchedShape(pScene, lBlendShapeChannel01); - MapBoxShape(pScene, lBlendShapeChannel01); - - MapBoxShape(pScene, lBlendShapeChannel02); - - //Set the lBlendShapeChannel on lBlendShape. - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel01); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel02); - - //Set the lBlendShape on pNurbs. - FbxGeometry* lGeometry = pNurbs->GetGeometry(); - lGeometry->AddDeformer(lBlendShape); -}; - -// Map texture over sphere. -void MapTexture(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"scene02.jpg"); - - // The texture won't be displayed if node shading mode isn't set to FbxNode::eTextureShading. - pNurbs->SetShadingMode(FbxNode::eTextureShading); - - // Set texture properties. - lTexture->SetFileName("scene02.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.45, -0.05); - lTexture->SetScale(4.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - // we connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNurbs->GetSrcObject(0); - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - //now, we can try to map a texture on the AMBIENT channel of a material. - - //It is important to create a NEW texture and not to simply change the - //properties of lTexture. - - //Set the Texture properties - lTexture=FbxFileTexture::Create(pScene, "grandient.jpg"); - lTexture->SetFileName("gradient.jpg"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - - // we connect the texture to the material Ambient property - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - -} - -// Map material over sphere. -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene,"scene02"); - FbxDouble3 lBlue(0.0, 0.0, 1.0); - FbxDouble3 lBlack(0.0, 0.0, 0.0); - - lMaterial->Emissive.Set(lBlue); - lMaterial->Ambient.Set(lBlack); - lMaterial->Specular.Set(lBlack); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->Shininess.Set(0.0); - lMaterial->ReflectionFactor.Set(0.0); - - // Create GeometryElementMaterial - FbxNurbs* lNurbs = pNurbs->GetNurbs(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lNurbs->GetElementMaterial( 0); - - if (!lGeometryElementMaterial) - { - lGeometryElementMaterial = lNurbs->CreateElementMaterial(); - } - - // The material is mapped to the whole Nurbs - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNurbs->AddMaterial(lMaterial); -} - -// Morph sphere into box shape. -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - // First animation stack. - lAnimStackName = "Morph sphere into box"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxGeometry* lNurbsAttribute = (FbxGeometry*) pNurbs->GetNodeAttribute(); - - // The stretched shape is at index 0 because it was added first to the nurbs. - FbxAnimCurve* lCurve = lNurbsAttribute->GetShapeChannel(0, 0, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 75.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - // The box shape is at index 1 because it was added second to the nurbs. - lCurve = lNurbsAttribute->GetShapeChannel(0, 1, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - - diff --git a/sdk/Darwin/2019.2/samples/ExportScene02/scene02.jpg b/sdk/Darwin/2019.2/samples/ExportScene02/scene02.jpg deleted file mode 100644 index f162280..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene02/scene02.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportScene03/CMakeLists.txt deleted file mode 100644 index b2c41ba..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene03 .) -SET(FBX_TARGET_SOURCE - main.cxx - MyKFbxMesh.cxx - MyKFbxMesh.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.cxx b/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.cxx deleted file mode 100644 index 325039b..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyKFbxMesh.h" - -FBXSDK_OBJECT_IMPLEMENT(MyKFbxMesh); -FBXSDK_OBJECT_IMPLEMENT(MyFbxObject); - -const char* MyKFbxMesh::GetTypeName() const -{ - return "MyKFbxMesh"; -} - -FbxProperty MyKFbxMesh::GetProperty(int pId) -{ - FbxProperty dummy; - switch (pId) - { - case eMY_PROPERTY1 : return FindProperty("MyExtraPropertyBool"); - case eMY_PROPERTY2 : return FindProperty("MyExtraPropertyInteger"); - case eMY_PROPERTY3 : return FindProperty("MyExtraPropertyFloat"); - case eMY_PROPERTY4 : return FindProperty("MyExtraPropertyDouble"); - case eMY_PROPERTY5 : return FindProperty("MyExtraPropertyString"); - case eMY_PROPERTY6 : return FindProperty("MyExtraPropertyVector3"); - case eMY_PROPERTY7 : return FindProperty("MyExtraPropertyColor"); - case eMY_PROPERTY8 : return FindProperty("MyExtraPropertyVector4"); - case eMY_PROPERTY9 : return FindProperty("MyExtraPropertyMatrix4x4"); - case eMY_PROPERTY10: return FindProperty("MyExtraPropertyEnum"); - case eMY_PROPERTY11: return FindProperty("MyExtraPropertyTime"); - default: - break; - }; - - return dummy; -} - -void MyKFbxMesh::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - - FbxProperty::Create(this, FbxBoolDT, "MyExtraPropertyBool", "MyExtraPropertyLabel1"); - FbxProperty::Create(this, FbxIntDT, "MyExtraPropertyInteger", "MyExtraPropertyLabel2"); - FbxProperty::Create(this, FbxFloatDT, "MyExtraPropertyFloat", "MyExtraPropertyLabel3"); - FbxProperty::Create(this, FbxDoubleDT, "MyExtraPropertyDouble", "MyExtraPropertyLabel4"); - FbxProperty::Create(this, FbxStringDT, "MyExtraPropertyString", "MyExtraPropertyLabel5"); - FbxProperty::Create(this, FbxDouble3DT, "MyExtraPropertyVector3", "MyExtraPropertyLabel6"); - FbxProperty::Create(this, FbxColor3DT, "MyExtraPropertyColor", "MyExtraPropertyLabel7"); - FbxProperty::Create(this, FbxDouble4DT, "MyExtraPropertyVector4", "MyExtraPropertyLabel8"); - FbxProperty::Create(this, FbxDouble4x4DT, "MyExtraPropertyMatrix4x4", "MyExtraPropertyLabel9"); - FbxProperty::Create(this, FbxEnumDT, "MyExtraPropertyEnum", "MyExtraPropertyLabel10"); - FbxProperty::Create(this, FbxTimeDT, "MyExtraPropertyTime", "MyExtraPropertyLabel11"); - - //we must set the flag to eUser if it is FbxEnumDT or FbxStringListDT - this->GetProperty((int)eMY_PROPERTY10).ModifyFlag(FbxPropertyFlags::eUserDefined, true); -} - -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -const char* MyFbxObject::GetTypeName() const -{ - return "MyFbxObject"; -} - -void MyFbxObject::Destruct(bool pRecursive) -{ - ParentClass::Destruct(pRecursive); -} - -void MyFbxObject::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - FbxProperty::Create(this, FbxDoubleDT, "MyAnimatedPropertyName", "MyFbxObject Animated Property Label"); -} diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.h b/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.h deleted file mode 100644 index 2e671a9..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/MyKFbxMesh.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _MYKFBXMESH_H_ -#define _MYKFBXMESH_H_ - -#include - -//Show how to create a class derived from existing kfbx class -class MyKFbxMesh : public FbxMesh -{ - FBXSDK_OBJECT_DECLARE(MyKFbxMesh, FbxMesh); - -public: - typedef enum - { - eColor =0, //inherited by FbxMesh - eMY_PROPERTY1, - eMY_PROPERTY2, - eMY_PROPERTY3, - eMY_PROPERTY4, - eMY_PROPERTY5, - eMY_PROPERTY6, - eMY_PROPERTY7, - eMY_PROPERTY8, - eMY_PROPERTY9, - eMY_PROPERTY10, - eMY_PROPERTY11, - eMY_PROPERTY_COUNT - } ePROPERTY; - - //Important to implement - const char* GetTypeName() const override; - FbxProperty GetProperty(int pId); - -protected: - virtual void ConstructProperties(bool pForceSet) override; - -private: - int mExtraOption; -}; - -class MyFbxObject : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(MyFbxObject, FbxObject); - -public: - virtual const char* GetTypeName() const override; - -protected: - virtual void Destruct(bool pRecursive) override; - virtual void ConstructProperties(bool pForceSet) override; -}; - -#endif diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/gradient.jpg b/sdk/Darwin/2019.2/samples/ExportScene03/gradient.jpg deleted file mode 100644 index 20c1c0f..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/main.cxx b/sdk/Darwin/2019.2/samples/ExportScene03/main.cxx deleted file mode 100644 index 206da1b..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/main.cxx +++ /dev/null @@ -1,1631 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a textured cube, a pyramid -// with materials mapped on it's faces and triangle deformed by vertex cache. -// An animation stack displays 6 different angles of all models. -// -// The example illustrates how to: -// 1) create a cube in mesh -// 2) map textures on diffuse, ambient and emissive channel of the cube -// 3) create an UV set for each channel with a texture for the cube -// 4) create a pyramid in mesh -// 5) create and map materials on the diffuse channel for each faces of the pyramid -// 6) create a cube with our custom mesh type -// 7) create and map materials on the diffuse channel for our custom mesh cube -// 8) create and add to our custom meshed cube a User Data Layer -// 9) create vertex cache deformer (by default maya caches are created in 64bits (mcx extension)) -// 10) create an animation stack -// 11) animate vertex -// 12) export a scene in a .FBX file -// -// -// 1. To test vertex (3 doubles) cache (default) : -// -// ./ExportScene03 cacheFileName -// -// 2. To test int32 cache : -// -// ./ExportScene03 cacheFileName 1 -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "MyKFbxMesh.h" - -#define SAMPLE_FILENAME_MC "ExportScene03_MC.fbx" -#define SAMPLE_FILENAME_PC2 "ExportScene03_PC2.fbx" -#define SAMPLE_CACHE_TYPE 2 - -#define PID_MY_GEOMETRY_LEMENT 0 - -// Function prototypes. -bool CreateScene(FbxScene* pScene, char* pSampleFileName); - -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName); -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName); - -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh); - -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid); -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName); - -void SetCubeDefaultPosition(FbxNode* pCube); -void SetPyramidDefaultPosition(FbxNode* pPyramid); -void SetTriangleDefaultPosition(FbxNode* pTriangle); -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube); - -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer); -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleInt32(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleFloat(FbxNode* pNode, double pFrameRate); - -bool gExportVertexCacheMCFormat = true; - -// Declare the UV names globally so we can create them on the mesh and then assign them properly -// to our textures when we create them -static const char* gDiffuseElementName = "DiffuseUV"; -static const char* gAmbientElementName = "AmbientUV"; -static const char* gEmissiveElementName = "EmissiveUV"; - -// gCacheType == 0 (default) - double vertex array -// == 1 - int32 array -// == 2 - float array -int gCacheType = -1; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - char* lSampleFileName = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - //Add the new class we have created to the Sdk Manager - //Our class MyKFbxMesh is derived from FbxMesh - lSdkManager->RegisterFbxClass("MyKFbxMesh", FBX_TYPE(MyKFbxMesh), FBX_TYPE(FbxMesh)); - //Now, our class MyKFbxMesh is ready to be used - - lSdkManager->RegisterFbxClass("MyFbxObject", FBX_TYPE(MyFbxObject), FBX_TYPE(FbxObject), "MyFbxObjectType", "MyFbxObjectSubType"); - - //The example can take an output file name as an argument, and a cache format - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if( gCacheType == -1 ) gCacheType = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = gExportVertexCacheMCFormat ? (char *)SAMPLE_FILENAME_MC : (char *)SAMPLE_FILENAME_PC2; - if( gCacheType == -1 ) gCacheType = SAMPLE_CACHE_TYPE; - - // Create the scene. - lResult = CreateScene(lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene, char* pSampleFileName) -{ - FbxNode* lCube = CreateCubeWithTexture(pScene, "Cube"); - FbxNode* lPyramid = CreatePyramidWithMaterials(pScene, "Pyramid"); - FbxNode* lTriangle = CreateTriangle(pScene, "Triangle"); - FbxNode* lMyKFbxMeshCube = CreateCubeWithMaterialAndMyKFbxMesh(pScene, "CubeMyKFbxMesh"); - MyFbxObject* lMyFbxObject = MyFbxObject::Create(pScene, "MyFbxObject 1"); - - MapShapeOnPyramid(pScene, lPyramid); - MapVertexCacheOnTriangle(pScene, lTriangle, pSampleFileName); - - SetCubeDefaultPosition(lCube); - SetPyramidDefaultPosition(lPyramid); - SetTriangleDefaultPosition(lTriangle); - SetMyKFbxMeshCubeDefaultPosition(lMyKFbxMeshCube); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - lRootNode->AddChild(lMyKFbxMeshCube); - lRootNode->AddChild(lTriangle); - lRootNode->ConnectSrcObject(lMyFbxObject); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Show all faces"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - //Create a simple animated fcurve - FbxProperty lMyProperty = lMyFbxObject->FindProperty("MyAnimatedPropertyName"); - if( lMyProperty.IsValid() ) - { - lMyProperty.Set(0.0); //Default value - lMyProperty.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lMyProperty.CreateCurveNode(lAnimLayer); - FbxAnimCurve* lMyFCurve = lMyProperty.GetCurve(lAnimLayer, true); - if( lMyFCurve ) - { - FbxAnimCurveKey key; - - key.Set(FBXSDK_TIME_ZERO, -100); lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(100), 0) ; lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(200), 100) ; lMyFCurve->KeyAdd(key.GetTime(), key); - } - } - - Animate(lCube, lAnimLayer); - Animate(lPyramid, lAnimLayer); - Animate(lMyKFbxMeshCube, lAnimLayer); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - switch(gCacheType) - { - case 0: - default: - AnimateVertexCacheOnTriangleDoubleVertex(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 1: - AnimateVertexCacheOnTriangleInt32(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 2: - AnimateVertexCacheOnTriangleFloat(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - } - - return true; -} - -// Create a cube with a texture. -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal= lMesh->CreateElementNormal(); - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Here are two different ways to set the normal values. - bool firstWayNormalCalculations=true; - if (firstWayNormalCalculations) - { - // The first method is to set the actual normal value - // for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - } - else - { - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - } - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( gDiffuseElementName); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - - // Create UV for Ambient channel - FbxGeometryElementUV* lUVAmbientElement = lMesh->CreateElementUV(gAmbientElementName); - - lUVAmbientElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVAmbientElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0, 0); - lVectors1.Set(1, 0); - lVectors2.Set(0, 0.418586879968643); - lVectors3.Set(1, 0.418586879968643); - - lUVAmbientElement->GetDirectArray().Add(lVectors0); - lUVAmbientElement->GetDirectArray().Add(lVectors1); - lUVAmbientElement->GetDirectArray().Add(lVectors2); - lUVAmbientElement->GetDirectArray().Add(lVectors3); - - // Create UV for Emissive channel - FbxGeometryElementUV* lUVEmissiveElement = lMesh->CreateElementUV(gEmissiveElementName); - - lUVEmissiveElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVEmissiveElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0.2343, 0); - lVectors1.Set(1, 0.555); - lVectors2.Set(0.333, 0.999); - lVectors3.Set(0.555, 0.666); - - lUVEmissiveElement->GetDirectArray().Add(lVectors0); - lUVEmissiveElement->GetDirectArray().Add(lVectors1); - lUVEmissiveElement->GetDirectArray().Add(lVectors2); - lUVEmissiveElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(24); - lUVAmbientElement->GetIndexArray().SetCount(24); - lUVEmissiveElement->GetIndexArray().SetCount(24); - - - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - //we won't use the default way of assigning textures, as we have - //textures on more than just the default (diffuse) channel. - lMesh->BeginPolygon(-1, -1, false); - - - - for(j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[i*4 + j] // Control point index. - ); - //Now we have to update the index array of the UVs for diffuse, ambient and emissive - lUVDiffuseElement->GetIndexArray().SetAt(i*4+j, j); - lUVAmbientElement->GetIndexArray().SetAt(i*4+j, j); - lUVEmissiveElement->GetIndexArray().SetAt(i*4+j, j); - - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - CreateTexture(pScene, lMesh); - - return lNode; -} - -// Create a pyramid with materials. -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - - FbxGeometryElementNormal* lNormalElement= lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons. Assign material indices. - - // Pyramid base. - lMesh->BeginPolygon(0); // Material index. - - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(i); // Material index. - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - CreateMaterials(pScene, lMesh); - - return lNode; -} - -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - // The three vertices - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(0, 50, -50); - - // Create control points. - lMesh->InitControlPoints(3); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - - // Create the triangle's polygon - lMesh->BeginPolygon(); - lMesh->AddPolygon(0); // Control point 0 - lMesh->AddPolygon(1); // Control point 1 - lMesh->AddPolygon(2); // Control point 2 - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName) -{ - int i, j; - - //create a cube with our newly created class - MyKFbxMesh* lMyKFbxMesh = MyKFbxMesh::Create(pScene,pName); - FbxDouble3 lVector3(0.1, 0.2, 0.3); - FbxDouble4 lVector4(0.1, 0.2, 0.3, 0.4); - FbxDouble4 lVector41(1.1, 1.2, 1.3, 1.4); - FbxDouble4 lVector42(2.1, 2.2, 2.3, 2.4); - FbxDouble4 lVector43(3.1, 3.2, 3.3, 3.4); - FbxDouble4x4 lMatrix(lVector4,lVector41,lVector42,lVector43); - - FbxColor lGreen(0.0, 0.0, 1.0); - - FbxTime lTime(333); - //Set user-specific properties of our classes - FbxString lString = "My Property 5 Value"; - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY1).Set(true); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY2).Set((int) 1); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY3).Set((float)2.2); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY4).Set((double)3.3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY5).Set(lString); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lVector3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lGreen); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY8).Set(lVector4); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY9).Set(lMatrix); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).Set(3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("AAA"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("BBB"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("CCC"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("DDD"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY11).Set(lTime); - - FbxVector4 lControlPoint0(-25, 0, 25); - FbxVector4 lControlPoint1(25, 0, 25); - FbxVector4 lControlPoint2(25, 50, 25); - FbxVector4 lControlPoint3(-25, 50, 25); - FbxVector4 lControlPoint4(-25, 0, -25); - FbxVector4 lControlPoint5(25, 0, -25); - FbxVector4 lControlPoint6(25, 50, -25); - FbxVector4 lControlPoint7(-25, 50, -25); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMyKFbxMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMyKFbxMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMyKFbxMesh->CreateElementNormal(); - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMyKFbxMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create UV coordinates. - FbxGeometryElementUV* lUVElement = lMyKFbxMesh->CreateElementUV( ""); - FBX_ASSERT( lUVElement != NULL); - lUVElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVElement->GetDirectArray().Add(lVectors0); - lUVElement->GetDirectArray().Add(lVectors1); - lUVElement->GetDirectArray().Add(lVectors2); - lUVElement->GetDirectArray().Add(lVectors3); - - for(i = 0; i < 6; i++) - { - //we created 6 lambert materials in the MyKFbxMesh - //make each face use a different one - lMyKFbxMesh->BeginPolygon(i); - - for(j = 0; j < 4; j++) - { - lMyKFbxMesh->AddPolygon(lPolygonVertices[i*4 + j], // Control point index. - j); // Valid texture UV index since texture UV mapping is by polygon vertex. - } - - lMyKFbxMesh->EndPolygon (); - } - - - //Add a User Data Element - //As of now, the types supported by a User Data Element are: FbxBoolDT, FbxIntDT, FbxFloatDT and FbxDoubleDT - - //For this example, we will create a element which possess 1 float and 1 bool - - //create a template array of KFbxDataTypes - FbxArray lArrayType; - - //Create a template array of const char* - FbxArray lArrayNames; - - //let's add our types and the names of each of the added types - lArrayType.Add(FbxFloatDT); - lArrayNames.Add("My Float"); - - lArrayType.Add(FbxBoolDT); - lArrayNames.Add("My Bool"); - - - //Now we are ready to create the User Data Element - FbxGeometryElementUserData* lFbxGeometryElementUserData = FbxGeometryElementUserData::Create(lMyKFbxMesh, "My Geometry Element",PID_MY_GEOMETRY_LEMENT,lArrayType, lArrayNames); - //And UserData create function is still in implementing - - - //For this example we will set the mapping mode to POLYGON_VERTEX - lFbxGeometryElementUserData->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - - //As we are using the eDirect Reference mode, and we are using polygon vertex Mapping mode - //we have to resize the direct array to the number of polygon vertex we have in this mesh - lFbxGeometryElementUserData->ResizeAllDirectArrays(lMyKFbxMesh->GetPolygonVertexCount()); - - - //To change the values in the direct array, we simply get the array and modify what we need to - FbxLayerElementArrayTemplate* directArrayF = lFbxGeometryElementUserData->GetDirectArrayVoid("My Float"); - float *lDirectArrayFloat = NULL; - lDirectArrayFloat = directArrayF->GetLocked(lDirectArrayFloat); - - FbxLayerElementArrayTemplate* directArrayB = lFbxGeometryElementUserData->GetDirectArrayVoid("My Bool"); - bool *lDirectArrayBool = NULL; - directArrayB->GetLocked(lDirectArrayBool); - - //Modify every data for each polygon vertex on our mesh with some value - for(i=0; iGetPolygonVertexCount(); ++i) - { - if(lDirectArrayFloat) - lDirectArrayFloat[i]=(float)(i+0.5); - if(lDirectArrayBool) - lDirectArrayBool[i]= (i%2==0); - } - - directArrayF->Release((void**)&lDirectArrayFloat); - directArrayB->Release((void**)&lDirectArrayBool); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMyKFbxMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - //let's create the materials - //6 materials, 1 for each face of the cube - CreateMaterialsWithMyKFbxMesh(pScene, lMyKFbxMesh); - - return lNode; -} - - -// Create texture for cube. -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh) -{ - // A texture need to be connected to a property on the material, - // so let's use the material (if it exists) or create a new one - FbxSurfacePhong* lMaterial = NULL; - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - { - lMaterial = lNode->GetSrcObject(0); - if (lMaterial == NULL) - { - FbxString lMaterialName = "toto"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - - FbxLayer* lLayer = pMesh->GetLayer(0); - - // Create a layer element material to handle proper mapping. - FbxLayerElementMaterial* lLayerElementMaterial = FbxLayerElementMaterial::Create(pMesh, lMaterialName.Buffer()); - - // This allows us to control where the materials are mapped. Using eAllSame - // means that all faces/polygons of the mesh will be assigned the same material. - lLayerElementMaterial->SetMappingMode(FbxLayerElement::eAllSame); - lLayerElementMaterial->SetReferenceMode(FbxLayerElement::eIndexToDirect); - - // Save the material on the layer - lLayer->SetMaterials(lLayerElementMaterial); - - // Add an index to the lLayerElementMaterial. Since we have only one, and are using eAllSame mapping mode, - // we only need to add one. - lLayerElementMaterial->GetIndexArray().Add(0); - - lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .Set(lDiffuseColor); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor.Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - lNode->AddMaterial(lMaterial); - } - } - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"Diffuse Texture"); - - // Set texture properties. - lTexture->SetFileName("scene03.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gDiffuseElementName)); // Connect texture to the proper UV - - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Ambient Texture"); - - // Set texture properties. - lTexture->SetFileName("gradient.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gAmbientElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Emissive Texture"); - - // Set texture properties. - lTexture->SetFileName("spotty.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gEmissiveElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Emissive.ConnectSrcObject(lTexture); -} - -// Create materials for pyramid. -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh) -{ - int i; - - for (i = 0; i < 5; i++ ) - { - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfacePhong *lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingName); - lMaterial->Shininess.Set(0.5); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - } -} - -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh) -{ - int i; - for (i = 0; i != 6; ++i ) - { - FbxString lMaterialName = "material"; - FbxString lShadingModelName = i%2==0 ? "Lambert" : "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfaceLambert *lMaterial = FbxSurfaceLambert::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingModelName); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMyKFbxMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - - } -} - -// Map pyramid control points onto an upside down shape. -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid) -{ - FbxShape* lShape = FbxShape::Create(pScene,"Upside Down"); - - FbxVector4 lControlPoint0(-50, 100, 50); - FbxVector4 lControlPoint1(50, 100, 50); - FbxVector4 lControlPoint2(50, 100, -50); - FbxVector4 lControlPoint3(-50, 100, -50); - FbxVector4 lControlPoint4(0, 0, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, -0.447, 0.894); - FbxVector4 lNormalP2(0.894, -0.447, 0); - FbxVector4 lNormalP3(0, -0.447, -0.894); - FbxVector4 lNormalP4(-0.894, -0.447, 0); - - // Create control points. - lShape->InitControlPoints(16); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - - FbxGeometryElementNormal* lNormalElement = lShape->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,""); - FbxBlendShapeChannel* lBlendShapeChannel = FbxBlendShapeChannel::Create(pScene, ""); - pPyramid->GetMesh()->AddDeformer(lBlendShape); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel); - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName) -{ - // By convention, all cache files are created in a _fpc folder located at the same - // place as the .fbx file. - FbxString lFBXAbsolutePath = FbxPathUtils::Resolve(pSampleFileName); - - // Create a cache directory with the same name as the fbx file - FbxString lFPCAbsoluteDirectory; - - lFPCAbsoluteDirectory = FbxPathUtils::GetFolderName(lFBXAbsolutePath); - lFPCAbsoluteDirectory += "/"; - lFPCAbsoluteDirectory += FbxPathUtils::GetFileName(pSampleFileName, false); - lFPCAbsoluteDirectory += "_fpc"; - - // Make this path the shortest possible - lFPCAbsoluteDirectory = FbxPathUtils::Clean(lFPCAbsoluteDirectory); - - // Now get the point cache absolute and relative file name - FbxString lAbsolutePCFileName = lFPCAbsoluteDirectory + FbxString("/") + pTriangle->GetName(); - lAbsolutePCFileName += gExportVertexCacheMCFormat ? ".xml" : ".pc2"; - - FbxString lRelativePCFileName = FbxPathUtils::GetRelativeFilePath(FbxPathUtils::GetFolderName(lFBXAbsolutePath)+"/", lAbsolutePCFileName); - - // Make sure the direcotry exist. - if (!FbxPathUtils::Create(FbxPathUtils::GetFolderName(lAbsolutePCFileName))) - { - // Cannot create this directory. So do not create the point cache - return; - } - - // - // Create the cache file - // - FbxCache* lCache = FbxCache::Create(pScene, pTriangle->GetName()); - - lCache->SetCacheFileName(lRelativePCFileName, lAbsolutePCFileName); - lCache->SetCacheFileFormat(gExportVertexCacheMCFormat ? FbxCache::eMayaCache : FbxCache::eMaxPointCacheV2); - - // - // Create the vertex deformer - // - FbxVertexCacheDeformer* lDeformer = FbxVertexCacheDeformer::Create(pScene, pTriangle->GetName()); - - lDeformer->SetCache(lCache); - lDeformer->Channel = pTriangle->GetName(); - lDeformer->Active = true; - - // Apply the deformer on the mesh - pTriangle->GetGeometry()->AddDeformer(lDeformer); - - if (gExportVertexCacheMCFormat && gCacheType != 1) - { - // - // Create the second deformer for normal data - // - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - - lDeformer = FbxVertexCacheDeformer::Create(pScene, channelName); - // normal cache data is stored with the points data in the same cache file, - // so two deformers are connnected to the same cache file. - lDeformer->SetCache(lCache); - lDeformer->Channel = channelName; - lDeformer->Active = true; - - pTriangle->GetGeometry()->AddDeformer(lDeformer); - } -} - -// Cube is translated to the left. -void SetCubeDefaultPosition(FbxNode* pCube) -{ - pCube->LclTranslation.Set(FbxVector4(-75.0, -50.0, 0.0)); - pCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Pyramid is translated to the right. -void SetPyramidDefaultPosition(FbxNode* pPyramid) -{ - pPyramid->LclTranslation.Set(FbxVector4(75.0, -50.0, 0.0)); - pPyramid->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pPyramid->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetTriangleDefaultPosition(FbxNode* pTriangle) -{ - pTriangle->LclTranslation.Set(FbxVector4(200.0, -50.0, 0.0)); - pTriangle->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pTriangle->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube) -{ - pMyKFbxCube->LclTranslation.Set(FbxVector4(-200.0, -25.0, 0.0)); - pMyKFbxCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMyKFbxCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Displays 6 different angles. -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(0.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 180.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 270.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 360.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - - // The upside down shape is at index 0 because it is the only one. - // The cube has no shape so the function returns NULL is this case. - FbxGeometry* lGeometry = (FbxGeometry*) pNode->GetNodeAttribute(); - lCurve = lGeometry->GetShapeChannel(0, 0, pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - - unsigned int lFrameCount = (unsigned int)(lStopTime.Get()/lTimeIncrement.Get()); - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eDoubleVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = lCache->OpenFileForWrite(0.0, pFrameRate, lFrameCount, 3, &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - double lVertices[3][3]; - double lScaleFactor = 1.0-double(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0 * lScaleFactor; // X - lVertices[0][1] = 0.0; // Y - lVertices[0][2] = 50.0 * lScaleFactor; // Z - - lVertices[1][0] = 50.0 * lScaleFactor; // X - lVertices[1][1] = 0.0; // Y - lVertices[1][2] = 50.0 * lScaleFactor; // Z - - lVertices[2][0] = 0.0 * lScaleFactor; // X - lVertices[2][1] = 50.0 * lScaleFactor; // Y - lVertices[2][2] = -50.0 * lScaleFactor; // Z - - lCache->BeginWriteAt(lCurrentTime); - if (gExportVertexCacheMCFormat) - { - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - } - else - { - lCache->Write(lCurrentFrame, &lVertices[0][0]); - } - lCache->EndWriteAt(); - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } -} - -void AnimateVertexCacheOnTriangleInt32(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet = false; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - - // Open the file for writing int32 array - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eInt32Array, "positions", &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - int v[2]; - - v[0] = -10 + lCurrentFrame; - v[1] = v[0]+1; - - if (gExportVertexCacheMCFormat) - { - lCache->Write(lChannelIndex, lCurrentTime, &v[0], 2); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - - FBXSDK_printf("Testing awCache int32 array read and write\n"); - bool passTest = true; - // FBXSDK_printf("Should print out -10 .. 110\n"); - while (lCurrentTime2 <= lStopTime) - { - int v[2]; - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &v[0], 2); - if ((v[0] != -10 + lCurrentFrame) || (v[0]+1 != v[1]) ) - { - FBXSDK_printf("awCache int32 array read/write mismatch\n"); - passTest = false; - break; - } - // FBXSDK_printf("%d ",v[0]); - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache int32 array read and write test passed\n"); - } -} - - -void AnimateVertexCacheOnTriangleFloat(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eFloatVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = false; - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - float lVertices[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0f * lScaleFactor; // X - lVertices[0][1] = 0.0f; // Y - lVertices[0][2] = 50.0f * lScaleFactor; // Z - - lVertices[1][0] = 50.0f * lScaleFactor; // X - lVertices[1][1] = 0.0f; // Y - lVertices[1][2] = 50.0f * lScaleFactor; // Z - - lVertices[2][0] = 0.0f * lScaleFactor; // X - lVertices[2][1] = 50.0f * lScaleFactor; // Y - lVertices[2][2] = -50.0f * lScaleFactor; // Z - - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - if (gExportVertexCacheMCFormat) - { - lCache->BeginWriteAt(lCurrentTime); - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - - lCache->EndWriteAt(); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - #define AbsFlt(a) (((a) < 0) ? -(a) : (a)) - #define CmpFlt(a,b) (AbsFlt((a)-(b)) > 1e-5) - - FBXSDK_printf("Testing awCache Float3 array read and write\n"); - bool passTest = true; - while (lCurrentTime2 <= lStopTime && passTest) - { - float lVertices[3][3]; - float lNormals[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime2.GetSecondDouble()/lStopTime.GetSecondDouble()); - - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &lVertices[0][0], 3); - lCache->Read(lNormalChannelIndex, lCurrentTime2, &lNormals[0][0], 3); - - if ((CmpFlt(lVertices[0][0], -50.0f * lScaleFactor) || CmpFlt(lVertices[0][1], 0.0f ) || CmpFlt(lVertices[0][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[1][0], 50.0f * lScaleFactor) || CmpFlt(lVertices[1][1], 0.0f ) || CmpFlt(lVertices[1][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[2][0], 0.0f * lScaleFactor) || CmpFlt(lVertices[2][1], 50.0f * lScaleFactor) || CmpFlt(lVertices[2][2],-50.0f * lScaleFactor))) - { - FBXSDK_printf("awCache Float3 vertex array read/write mismatch\n"); - passTest = false; - break; - } - - for (int i = 0; i < 3; i++) - { - if ((CmpFlt(lNormals[i][0], 0.0f) || CmpFlt(lNormals[i][1], 1.0f ) || CmpFlt(lNormals[i][2], 0.0f))) - { - FBXSDK_printf("awCache Float3 normal array read/write mismatch\n"); - passTest = false; - break; - } - } - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - #undef AbsFlt - #undef CmpFlt - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache float3 array read and write test passed\n"); - } - -} - - diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/scene03.jpg b/sdk/Darwin/2019.2/samples/ExportScene03/scene03.jpg deleted file mode 100644 index 9e51fd9..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/scene03.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5c29a811fa6f65c0e70d5dc2a948efea523e6330a7ff51496eaef249ce80de9 -size 4774 diff --git a/sdk/Darwin/2019.2/samples/ExportScene03/spotty.jpg b/sdk/Darwin/2019.2/samples/ExportScene03/spotty.jpg deleted file mode 100644 index dd038e3..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene03/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Darwin/2019.2/samples/ExportScene04/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportScene04/CMakeLists.txt deleted file mode 100644 index 55470f7..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene04/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene04 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportScene04/gobo.tif b/sdk/Darwin/2019.2/samples/ExportScene04/gobo.tif deleted file mode 100644 index dc4dc2b..0000000 Binary files a/sdk/Darwin/2019.2/samples/ExportScene04/gobo.tif and /dev/null differ diff --git a/sdk/Darwin/2019.2/samples/ExportScene04/main.cxx b/sdk/Darwin/2019.2/samples/ExportScene04/main.cxx deleted file mode 100644 index 3947518..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene04/main.cxx +++ /dev/null @@ -1,588 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a group of lights, a marker and -// a camera. An animation stack rotates the lights and moves the camera -// around. -// -// The example illustrates how to: -// 1) create a light and it assign a gobo -// 2) set global light settings -// 3) create a marker -// 4) create a camera and link it to a point of interest -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene04.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName); -FbxNode* CreateLight(FbxScene* pScene, const char* pName); -FbxNode* CreateMarker(FbxScene* pScene, const char* pName); -FbxNode* CreateCamera(FbxScene* pScene, const char* pName); - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest); - -void SetLightGroupDefaultPosition(FbxNode* pLightGroup); -void SetLightDefaultPosition(FbxNode* pLight, int pIndex); -void SetMarkerDefaultPosition(FbxNode* pMarker); -void SetCamera1DefaultPosition(FbxNode* pCamera); -void SetCamera2DefaultPosition(FbxNode* pCamera); - -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer); -void AnimateCamera(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lLightGroup = CreateLightGroup(pScene, "LightGroup"); - FbxNode* lMarker = CreateMarker(pScene, "Marker"); - FbxNode* lCamera1 = CreateCamera(pScene, "Camera1"); - FbxNode* lCamera2 = CreateCamera(pScene, "Camera2"); - - pScene->GetGlobalSettings().SetAmbientColor(FbxColor(1.0, 0.5, 0.2)); - - SetCameraPointOfInterest(lCamera1, lMarker); - SetCameraPointOfInterest(lCamera2, lCamera1); - - SetLightGroupDefaultPosition(lLightGroup); - SetMarkerDefaultPosition(lMarker); - SetCamera1DefaultPosition(lCamera1); - SetCamera2DefaultPosition(lCamera2); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Rotating lights"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Build the scene graph. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lLightGroup); - lRootNode->AddChild(lMarker); - lRootNode->AddChild(lCamera1); - lCamera1->AddChild(lCamera2); - - - // Set perspective camera as the default camera. - pScene->GetGlobalSettings().SetDefaultCamera(FBXSDK_CAMERA_PERSPECTIVE); - - AnimateLightGroup(lLightGroup, lAnimLayer); - AnimateCamera(lCamera1, lAnimLayer); - - return true; -} - -// Create 6 lights and set global light settings. -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName) -{ - FbxString lLightName; - FbxNode* lGroup = NULL; - FbxNode* lNode = NULL; - FbxLight* lLight = NULL; - int i; - - lGroup = FbxNode::Create(pScene,pName); - - for(i = 0; i < 6; i++) - { - lLightName = pName; - lLightName += "-Light"; - lLightName += i; - - lNode = CreateLight(pScene, lLightName.Buffer()); - lGroup->AddChild(lNode); - } - - for (i = 0; i < 6; i++) - { - lLight = (FbxLight*) lGroup->GetChild(i)->GetNodeAttribute(); - lLight->FileName.Set("gobo.tif");// Resource file is in current directory. - lLight->DrawGroundProjection.Set(true); - lLight->DrawVolumetricLight.Set(true); - lLight->DrawFrontFacingVolumetricLight.Set(false); - } - - return lGroup; -} - -// Create a spotlight. -FbxNode* CreateLight(FbxScene* pScene, const char* pName) -{ - FbxLight* lLight = FbxLight::Create(pScene,pName); - - lLight->LightType.Set(FbxLight::eSpot); - lLight->CastLight.Set(true); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lLight); - - return lNode; -} - -// Create a marker to use a point of interest for the camera. -FbxNode* CreateMarker(FbxScene* pScene, const char* pName) -{ - FbxMarker* lMarker = FbxMarker::Create(pScene,pName); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMarker); - - return lNode; -} - -FbxNode* CreateCamera(FbxScene* pScene, const char* pName) -{ - FbxCamera* lCamera = FbxCamera::Create(pScene,pName); - - // Modify some camera default settings. - lCamera->SetApertureMode(FbxCamera::eVertical); - lCamera->SetApertureWidth(0.816); - lCamera->SetApertureHeight(0.612); - lCamera->SetSqueezeRatio(0.5); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lCamera); - - return lNode; -} - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest) -{ - // Set the camera to always point at this node. - pCamera->SetTarget(pPointOfInterest); -} - -// The light group is just over the XZ plane. -void SetLightGroupDefaultPosition(FbxNode* pLightGroup) -{ - int i; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - SetLightDefaultPosition(pLightGroup->GetChild(i), i); - } - - pLightGroup->LclTranslation.Set(FbxVector4(0.0, 15.0, 0.0)); - pLightGroup->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pLightGroup->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetLightDefaultPosition(FbxNode* pLight, int pIndex) -{ - // Set light location depending of it's index. - pLight->LclTranslation.Set(FbxVector4((cos((double)pIndex) * 40.0), 0.0, (sin((double)pIndex) * 40.0))); - pLight->LclRotation.Set(FbxVector4(20.0, (90.0 - pIndex * 60.0), 0.0)); - pLight->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); - - // Set light attributes depending of it's index. - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxLight* light = pLight->GetLight(); - if (light) - { - light->Color.Set(lColor[pIndex % 6]); - light->Intensity.Set(33.0); - light->OuterAngle.Set(90.0); - light->Fog.Set(100.0); - } -} - -void SetMarkerDefaultPosition(FbxNode* pMarker) -{ - // The marker is at the origin. - pMarker->LclTranslation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// The code below shows how to compute the camera rotation. -// In the present case, it wouldn't be necessary since the -// camera is set to point to the marker. -void SetCamera1DefaultPosition(FbxNode* pCamera) -{ - FbxVector4 lCameraLocation(0.0, 100.0, -300.0); - FbxVector4 lDefaultPointOfInterest(1.0, 100.0, -300.0); - FbxVector4 lNewPointOfInterest(0, 0, 0); - FbxVector4 lRotation; - FbxVector4 lScaling(1.0, 1.0, 1.0); - - FbxVector4::AxisAlignmentInEulerAngle(lCameraLocation, lDefaultPointOfInterest, lNewPointOfInterest, lRotation); - - pCamera->LclTranslation.Set(lCameraLocation); - pCamera->LclRotation.Set(lRotation); - pCamera->LclScaling.Set(lScaling); -} - -void SetCamera2DefaultPosition(FbxNode* pCamera) -{ - pCamera->LclTranslation.Set(FbxVector4(-150.0, 0.0, 75.0)); -} - -// The light group rises and rotates. -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i; - int lKeyIndex = 0; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - AnimateLight(pLightGroup->GetChild(i), i, pAnimLayer); - } - - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLightGroup->LclRotation.GetCurveNode(pAnimLayer, true); - pLightGroup->LclTranslation.GetCurveNode(pAnimLayer, true); - - // Y axis rotation. - lCurve = pLightGroup->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 5*360.0); - - lCurve->KeyModifyEnd(); - } - - // Y axis translation. - lCurve = pLightGroup->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 15.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 200.0); - - lCurve->KeyModifyEnd(); - } -} - -// The lights are changing color, intensity, orientation and cone angle. -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i, j; - int lKeyIndex = 0; - - FbxLight* light = pLight->GetLight(); - - // Intensity fade in/out. - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Intensity.GetCurveNode(pAnimLayer, true); - lCurve = light->Intensity.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // Fog fade in/out - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Fog.GetCurveNode(pAnimLayer, true); - lCurve = light->Fog.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // X rotation swoops & cone angle woobles. - { - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLight->LclRotation.GetCurveNode(pAnimLayer, true); - light->OuterAngle.GetCurveNode(pAnimLayer, true); - - lCurve = pLight->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - FbxAnimCurve* lConeCurve = light->OuterAngle.GetCurve(pAnimLayer,true); - double lValue; - - lCurve->KeyModifyBegin(); - lConeCurve->KeyModifyBegin(); - - for (i = 0; i < 8; i++) - { - lTime.SetSecondDouble((double)i * 0.833333); - lValue = cos((((double)i) + (((double)pIndex) * 60.0)) * 72.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, float((lValue - 0.4) * 30.0)); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, float((2.0 - (lValue + 1.0)) * 45.0)); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - } - - // Finally, have the lights spread out and lose focus. - lTime.SetSecondDouble(10.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, 180.0); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lCurve->KeyModifyEnd(); - lConeCurve->KeyModifyEnd(); - } - - // Color cycling. - { - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxAnimCurve* lCurveA[3]; - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - light->Color.GetCurveNode(pAnimLayer, true); - lCurveA[0] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_RED, true); - lCurveA[1] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_GREEN, true); - lCurveA[2] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_BLUE, true); - - if (lCurveA[0] && lCurveA[1] && lCurveA[2]) - { - lCurveA[0]->KeyModifyBegin(); - lCurveA[1]->KeyModifyBegin(); - lCurveA[2]->KeyModifyBegin(); - - for (i = 0; i < 24; i++) - { - j = i + pIndex; - - while (j > 5) - { - j -= 6; - } - - lTime.SetSecondDouble((double)i * 0.4166666); - - lKeyIndex = lCurveA[0]->KeyAdd(lTime); - lCurveA[0]->KeySetValue(lKeyIndex, (float)lColor[j][0]); - lCurveA[0]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[1]->KeyAdd(lTime); - lCurveA[1]->KeySetValue(lKeyIndex, (float)lColor[j][1]); - lCurveA[1]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[2]->KeyAdd(lTime); - lCurveA[2]->KeySetValue(lKeyIndex, (float)lColor[j][2]); - lCurveA[2]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - } - - lCurveA[0]->KeyModifyEnd(); - lCurveA[1]->KeyModifyEnd(); - lCurveA[2]->KeyModifyEnd(); - } - } -} - -// The camera is rising and rolling twice. -void AnimateCamera(FbxNode* pCamera, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - pCamera->LclTranslation.GetCurveNode(pAnimLayer, true); - - // X translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 200.0); - - lCurve->KeyModifyEnd(); - } - - // Y translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 300.0); - - lCurve->KeyModifyEnd(); - } - - // Camera roll. - FbxCamera* cam = pCamera->GetCamera(); - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - cam->Roll.GetCurveNode(pAnimLayer, true); - lCurve = cam->Roll.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble (0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 2*360.0); - - lCurve->KeyModifyEnd(); - } -} - diff --git a/sdk/Darwin/2019.2/samples/ExportScene05/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportScene05/CMakeLists.txt deleted file mode 100644 index c9001d0..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene05/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene05 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../MyOwnWriterReader/MyOwnReader.cxx - ../MyOwnWriterReader/MyOwnWriter.cxx - ../MyOwnWriterReader/MyOwnWriterReader.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportScene05/main.cxx b/sdk/Darwin/2019.2/samples/ExportScene05/main.cxx deleted file mode 100644 index 1727d6b..0000000 --- a/sdk/Darwin/2019.2/samples/ExportScene05/main.cxx +++ /dev/null @@ -1,332 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a skeleton made of 3 segments. -// The position of a node in a .FBX file is expressed in coordinates -// relative to it's parent. This example shows how to convert to and -// from a global position. -// -// The example illustrates how to: -// 1) create a skeleton segment -// 2) get a node's global default position -// 3) set a node's global default position -// 4) set limits, rotation order and pre/post pivots -// 5) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include -#ifdef FBXSDK_ENV_WIN -// On Windows platform need to include this to define _msize() -#include -#endif - -//include needed for custom reader/writer -#include "../MyOwnWriterReader/MyOwnWriterReader.h" - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene05.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition); -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have an FBX file. Let's try to write to a custom writer and read our file with our custom reader. - - FBXSDK_printf("Writing to file with custom writer\n"); - int lRegisteredCount; - int lPluginId; - - //We need to register the writer for the sdk to be aware. - lSdkManager->GetIOPluginRegistry()->RegisterWriter(CreateMyOwnWriter, GetMyOwnWriterInfo, - lPluginId, lRegisteredCount, FillOwnWriterIOSettings); - - - //The filename - const char* lFileName = "CustomWriter.CFF"; - - //at this point use our custom writer to write: - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - //Here, we set the custom writer. - int lFileFormat = lSdkManager->GetIOPluginRegistry()->FindWriterIDByExtension("CFF"); - - //Initialize the file - if(lExporter->Initialize(lFileName, lFileFormat, lSdkManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, false); - return 1; - } - - //This will call the write function of the custom writer. - lResult = lExporter->Export(lScene); - if(lResult == false) - { - FBXSDK_printf("Error in write of our custom writer\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have written to the custom writer, let's read with our custom reader. - - //Again, we need to register the reader. - lSdkManager->GetIOPluginRegistry()->RegisterReader(CreateMyOwnReader, GetMyOwnReaderInfo, - lPluginId, lRegisteredCount, FillOwnReaderIOSettings); - - //Create the importer - FbxImporter* lImporter = FbxImporter::Create(lSdkManager,""); - - - //We initialize our file. - //Here we can simply pass the filename, and it should automatically find the right file format and reader. - lResult = lImporter->Initialize(lFileName, -1, lSdkManager->GetIOSettings() ); - - //At one point, this will call our read function of our custom reader. - lResult = lImporter->Import(lScene); - - if(lResult == false) - { - FBXSDK_printf("There was a problem in the read of our custom reader\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxVector4 lT, lR, lS; - FbxAMatrix lGM; - - // Create nodes. - FbxNode* pNodeA = FbxNode::Create(pScene,"A"); - FbxNode* pNodeB = FbxNode::Create(pScene,"B"); - FbxNode* pNodeC = FbxNode::Create(pScene,"C"); - FbxNode* pNodeD = FbxNode::Create(pScene,"D"); - - // Create node attributes. - FbxSkeleton* lSkeletonA = FbxSkeleton::Create(pScene,""); - lSkeletonA->SetSkeletonType(FbxSkeleton::eRoot); - pNodeA->SetNodeAttribute(lSkeletonA); - FbxSkeleton* lSkeletonB = FbxSkeleton::Create(pScene,""); - lSkeletonB->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeB->SetNodeAttribute(lSkeletonB); - FbxSkeleton* lSkeletonC = FbxSkeleton::Create(pScene,""); - lSkeletonC->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeC->SetNodeAttribute(lSkeletonC); - FbxSkeleton* lSkeletonD = FbxSkeleton::Create(pScene,""); - lSkeletonD->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeD->SetNodeAttribute(lSkeletonD); - - - // On node A we set translation limits - pNodeA->TranslationActive = true; - pNodeA->TranslationMinX = true; - pNodeA->TranslationMinY = true; - pNodeA->TranslationMinZ = true; - pNodeA->TranslationMin = FbxVector4(0.1, 0.2, 0.3); - pNodeA->TranslationMaxX = true; - pNodeA->TranslationMaxY = true; - pNodeA->TranslationMaxZ = true; - pNodeA->TranslationMax = FbxVector4(5.0, 1.0, 0.0); - pNodeA->UpdatePivotsAndLimitsFromProperties(); - - // On node B we set the rotation order and the pre/post pivots - // (for these value to have an effect, we need to enable the RotationActive flag) - pNodeB->RotationActive = true; - pNodeB->RotationMaxX = true; - pNodeB->RotationMaxY = false; - pNodeB->RotationMaxZ = false; - pNodeB->RotationMax = FbxVector4(33.3, 0.0, 0.0); - pNodeB->UpdatePivotsAndLimitsFromProperties(); - - pNodeB->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - pNodeB->SetRotationOrder(FbxNode::eSourcePivot, eSphericXYZ); - pNodeB->SetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot, false); - pNodeB->SetQuaternionInterpolation(FbxNode::eSourcePivot, eQuatInterpClassic); - pNodeB->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(11.1, 22.2, 33.3)); - pNodeB->SetPreRotation(FbxNode::eSourcePivot, FbxVector4(15.0, 30.0, 45.0)); - pNodeB->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(-45.0, -30.0, -15.0)); - - // Set node hierarchy. - pScene->GetRootNode()->AddChild(pNodeA); - pNodeA->AddChild(pNodeB); - pNodeB->AddChild(pNodeC); - pNodeC->AddChild(pNodeD); - - // Set global position of node A. - lT.Set(0.0, 0.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 45.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeA, lGM); - - // Set global position of node B. - lT.Set(30.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeB, lGM); - - // Set global position of node C. - lT.Set(55.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, -40.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeC, lGM); - - // Set global position of node D. - lT.Set(70.0, 10.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeD, lGM); - - // Set meta-data on some of the nodes. - // - // For this sample, we'll use a hiearchical set of meta-data: - // - // Family - // Type - // Instance - // - // Family contains all the common properties, and the lower levels override various - // values. - // - FbxObjectMetaData* pFamilyMetaData = FbxObjectMetaData::Create(pScene, "Family"); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Level", "Level").Set(FbxString("Family")); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Type", "Type").Set(FbxString("Wall")); - FbxProperty::Create(pFamilyMetaData, FbxFloatDT, "Width", "Width").Set(10.0f); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Weight", "Weight").Set(25.0); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Cost", "Cost").Set(1.25); - - FbxObjectMetaData* pTypeMetaData = FbxCast(pFamilyMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pTypeMetaData->SetName("Type"); - - // On this level we'll just override two properties - pTypeMetaData->FindProperty("Cost").Set(2500.0); - pTypeMetaData->FindProperty("Level").Set(FbxString("Type")); - - FbxObjectMetaData* pInstanceMetaData = FbxCast(pTypeMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pInstanceMetaData->SetName("Instance"); - - // And on this level, we'll go in and add a brand new property, too. - FbxProperty::Create(pInstanceMetaData, FbxStringDT, "Sku", "Sku#").Set(FbxString("143914-10")); - pInstanceMetaData->FindProperty("Width").Set(1100.50f); - pInstanceMetaData->FindProperty("Type").Set(FbxString("Super Heavy Duty Wall")); - pInstanceMetaData->FindProperty("Level").Set(FbxString("Instance")); - - // Finally connect metadata information to some of our nodes. - pNodeA->ConnectSrcObject(pInstanceMetaData); - pNodeC->ConnectSrcObject(pInstanceMetaData); // Share the same object - - pNodeD->ConnectSrcObject(pTypeMetaData); - - return true; -} - -// Function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lParentGlobalPosition; - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lLocalPosition = lParentGlobalPosition.Inverse() * pGlobalPosition; - } - else - { - lLocalPosition = pGlobalPosition; - } - - pNode->LclTranslation.Set(lLocalPosition.GetT()); - pNode->LclRotation.Set(lLocalPosition.GetR()); - pNode->LclScaling.Set(lLocalPosition.GetS()); -} - -// Recursive function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lGlobalPosition; - FbxAMatrix lParentGlobalPosition; - - lLocalPosition.SetT(pNode->LclTranslation.Get()); - lLocalPosition.SetR(pNode->LclRotation.Get()); - lLocalPosition.SetS(pNode->LclScaling.Get()); - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - else - { - lGlobalPosition = lLocalPosition; - } - - return lGlobalPosition; -} - - diff --git a/sdk/Darwin/2019.2/samples/ExportShader/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ExportShader/CMakeLists.txt deleted file mode 100644 index c245da7..0000000 --- a/sdk/Darwin/2019.2/samples/ExportShader/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportShader .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ExportShader/Default_reflection.dds b/sdk/Darwin/2019.2/samples/ExportShader/Default_reflection.dds deleted file mode 100644 index 0e212b4..0000000 Binary files a/sdk/Darwin/2019.2/samples/ExportShader/Default_reflection.dds and /dev/null differ diff --git a/sdk/Darwin/2019.2/samples/ExportShader/glass.fx b/sdk/Darwin/2019.2/samples/ExportShader/glass.fx deleted file mode 100644 index 3ff2fcc..0000000 --- a/sdk/Darwin/2019.2/samples/ExportShader/glass.fx +++ /dev/null @@ -1,200 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: glass.fx - -Copyright NVIDIA Corporation 2002-2004 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Glass shader with reflection and refractive dispersion. - -******************************************************************************/ - -float Script : STANDARDSGLOBAL < - string UIWidget = "none"; - string ScriptClass = "object"; - string ScriptOrder = "standard"; - string ScriptOutput = "color"; - string Script = "Technique=dx9;"; -> = 0.8; - -/************* TWEAKABLES **************/ - -float4x4 worldIT : WorldInverseTranspose; -float4x4 wvp : WorldViewProjection; -float4x4 world : World; -float4x4 viewI : ViewInverse; - -float reflectStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Reflection"; -> = 1.0; - -float refractStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Refraction"; -> = 1.0; - -half3 etas -< - string UIName = "Refraction indices"; -> = { 0.80, 0.82, 0.84 }; - -texture cubeMap : Environment -< - string ResourceName = "default_reflection.dds"; - string ResourceType = "Cube"; ->; - -texture fresnelTex : Environment -< - string ResourceType = "2D"; - string function = "generateFresnelTex"; - - float2 Dimensions = { 256.0f, 1.0f}; ->; - -samplerCUBE environmentMapSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = Linear; -}; - -sampler2D fresnelSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = None; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float4 Position : POSITION; - float4 UV : TEXCOORD0; - float3 Normal : NORMAL; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float4 TexCoord : TEXCOORD0; - float3 WorldNormal : TEXCOORD1; - float3 WorldView : TEXCOORD2; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN, - uniform float4x4 WorldViewProj, - uniform float4x4 WorldIT, - uniform float4x4 World, - uniform float4x4 viewI -) { - vertexOutput OUT; - float3 normal = normalize(IN.Normal); - OUT.WorldNormal = mul(normal, (float3x3) WorldIT); - float3 Pw = mul(IN.Position, World).xyz; - OUT.TexCoord = IN.UV; - OUT.WorldView = viewI[3].xyz - Pw; - OUT.HPosition = mul(IN.Position, WorldViewProj); - return OUT; -} - -/********* pixel shader ********/ - -// modified refraction function that returns boolean for total internal reflection -float3 -refract2( float3 I, float3 N, float eta, out bool fail ) -{ - float IdotN = dot(I, N); - float k = 1 - eta*eta*(1 - IdotN*IdotN); -// return k < 0 ? (0,0,0) : eta*I - (eta*IdotN + sqrt(k))*N; - fail = k < 0; - return eta*I - (eta*IdotN + sqrt(k))*N; -} - -// approximate Fresnel function -float fresnel(float NdotV, float bias, float power) -{ - return bias + (1.0-bias)*pow(1.0 - max(NdotV, 0), power); -} - -// function to generate a texture encoding the Fresnel function -float4 generateFresnelTex(float NdotV : POSITION) : COLOR -{ - return fresnel(NdotV, 0.2, 4.0); -} - -float4 mainPS(vertexOutput IN, - uniform samplerCUBE EnvironmentMap, - uniform half reflectStrength, - uniform half refractStrength, - uniform half3 etas - ) : COLOR -{ - half3 N = normalize(IN.WorldNormal); - float3 V = normalize(IN.WorldView); - - // reflection - half3 R = reflect(-V, N); - half4 reflColor = texCUBE(EnvironmentMap, R); - -// half fresnel = fresnel(dot(N, V), 0.2, 4.0); - half fresnel = tex2D(fresnelSampler, dot(N, V)); - - // wavelength colors - const half4 colors[3] = { - { 1, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { 0, 0, 1, 0 }, - }; - - // transmission - half4 transColor = 0; - bool fail = false; - for(int i=0; i<3; i++) { - half3 T = refract2(-V, N, etas[i], fail); - transColor += texCUBE(EnvironmentMap, T) * colors[i]; - } - - return lerp(transColor*refractStrength, reflColor*reflectStrength, fresnel); -} - -/*************/ - -technique dx9 < - string Script = "Pass=p0;"; -> { - pass p0 < - string Script = "Draw=geometry;"; - > { - VertexShader = compile vs_2_0 mainVS(wvp,worldIT,world,viewI); - PixelShader = compile ps_2_0 mainPS(environmentMapSampler, - reflectStrength, refractStrength, - etas); - } -} - -/***************************** eof ***/ diff --git a/sdk/Darwin/2019.2/samples/ExportShader/main.cxx b/sdk/Darwin/2019.2/samples/ExportShader/main.cxx deleted file mode 100644 index d44f2a9..0000000 --- a/sdk/Darwin/2019.2/samples/ExportShader/main.cxx +++ /dev/null @@ -1,254 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is two cubes. -// One is linked to a CGFX shader. Another is linked to a HLSL shader. -// -// The example illustrates how to: -// 1) create a CGFX shader -// 2) create a HLSL shader -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "../Common/GeometryUtility.h" - -#define SAMPLE_FILENAME "ExportShader.fbx" -#define CGFX_SHADERFILE "xfSkyBox.cgfx" -#define HLSL_SHADERFILE "glass.fx" -#define TEXTURE_FILE "Default_reflection.dds" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene); -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene); -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, -1, true); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation of shader."; - sceneInfo->mAuthor = "ExportShader sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "shader"; - sceneInfo->mComment = "no particular comments required."; - - pScene->SetSceneInfo(sceneInfo); - - // Cube with CgFX shader - FbxDouble3 lCgfxTranslation(0, 0, 0); - FbxNode* lCgfxNode = CreateCube(pScene, "CgfxCube", lCgfxTranslation); - - FbxSurfaceMaterial* lCgfxMat = CreateCgfxShader(pScene); - lCgfxNode->AddMaterial(lCgfxMat); - - // Cube with HLSL shader - FbxDouble3 lHlslTranslation(20, 0, 0); - FbxNode* lHlslNode = CreateCube(pScene, "HlslCube", lHlslTranslation); - - FbxSurfaceMaterial* lHlslMat = CreateHlslShader(pScene); - lHlslNode->AddMaterial(lHlslMat); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCgfxNode); - lRootNode->AddChild(lHlslNode); - - return true; -} - -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lCgfxMat = FbxSurfaceMaterial::Create(pScene, "CgfxShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Cgfx_Implementation")); - - lCgfxMat->AddImplementation( lImpl ); - lCgfxMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_OPENGL; - lImpl->RenderAPIVersion = "1.5"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_CGFX; - lImpl->LanguageVersion = "1.5"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = CGFX_SHADERFILE; - // technique name - lTable->DescTAG = "user"; - - FbxProperty lRootProp = FbxProperty::Create( lCgfxMat, FbxCompoundDT, "ShaderExample"); - // Property "SurfColor" - FbxProperty lProp = FbxProperty::Create( lRootProp, FbxDouble3DT, "SurfColor" ); - FbxDouble3 lSurfVal(0, 1, 0); - lProp.Set(lSurfVal); - CreateTableEntry(lTable, lProp); // for every property, create a table entry in binding table - - // Property MasterAlpha - lProp = FbxProperty::Create(lRootProp, FbxFloatDT, "MasterAlpha"); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property EnvSample, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lRootProp, FbxDouble3DT, "EnvSampler", "EnvSampler"); - FbxDouble3 lSampleVal(0, 0, 0); - lProp.Set(lSampleVal); - CreateTableEntry(lTable, lProp); - - // create texture and connect to property - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "EnvSamplerTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - return lCgfxMat; -} - -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lHlslMat = FbxSurfaceMaterial::Create(pScene, "HlslShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Hlsl_Implementation")); - - lHlslMat->AddImplementation( lImpl ); - lHlslMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; - lImpl->RenderAPIVersion = "9.0"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; - lImpl->LanguageVersion = "1.0"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = HLSL_SHADERFILE; - // technique name - lTable->DescTAG = "dx9"; - - - // Property Script - FbxProperty lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "Script", "Script"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.8); - CreateTableEntry(lTable, lProp); - - // Property reflectStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "reflectStrength", "reflectStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property refractStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "refractStrength", "refractStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.75); - CreateTableEntry(lTable, lProp); - - // Property etas - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "etas", "etas"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lEtasVal(0.8, 0.6, 0.4); - lProp.Set(lEtasVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, not connect a texture to it, just skip it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "fresnelTex", "fresnelTex"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lTexVal(0, 0, 0); - lProp.Set(lTexVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "cubeMap", "cubeMap"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lMapVal(0, 1, 0); - lProp.Set(lMapVal); - CreateTableEntry(lTable, lProp); - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "cubeMapTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - - return lHlslMat; -} - -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp) -{ - // create entry - FbxBindingTableEntry& lEntry = pTable->AddNewEntry(); - // set src to the fbx property, in this sample, fbx properties have the same name with shader parameters - FbxPropertyEntryView lSrc( &lEntry, true, true ); - // Because CgFX uses compound property, so do not use pProp.GetName() - lSrc.SetProperty( pProp.GetHierarchicalName()); - - // set dst to the shader parameter - FbxSemanticEntryView lDst( &lEntry, false, true ); - lDst.SetSemantic( pProp.GetName() ); -} diff --git a/sdk/Darwin/2019.2/samples/ExportShader/xfSkyBox.cgfx b/sdk/Darwin/2019.2/samples/ExportShader/xfSkyBox.cgfx deleted file mode 100644 index 196f64c..0000000 --- a/sdk/Darwin/2019.2/samples/ExportShader/xfSkyBox.cgfx +++ /dev/null @@ -1,142 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: //sw/devtools/FXComposer2/Alpha4+/SDK/MEDIA/CgFX1.4/xfSkyBox.cgfx#1 $ - -Copyright NVIDIA Corporation 2002 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Projects a cube map across space, with that space defined by a user - coordinate system. Read this into maya, connect an extra transform's - WorldInverse matrix to "CoordSysIXf," and apply to a background - geometry (big sphere, cube, whatever) - $Date: 2006/04/10 $ - -******************************************************************************/ - -// string Category = "Effects\\Cg\\BRDF"; -// string keywords = "dx9,texture,anti-aliasing,derivatives,pointlight"; -// string description = "Analytic Anti-aliasing - No Texture Map"; - -/************* UNTWEAKABLES **************/ - -float4x4 WorldITXf : WorldInverseTranspose; -float4x4 WorldViewProjXf : WorldViewProjection; -float4x4 WorldXf : World; -float4x4 ViewITXf : ViewInverseTranspose; -float4x4 ViewIXf : ViewInverse; -float4x4 WorldViewXf : WorldView; - -/************* TWEAKABLES **************/ - -float3 SurfColor : Diffuse -< - string UIName = "Surface Color"; -> = {1.0f, 1.0f, 1.0f}; - -// float4 userCoords0 = {1,0,0,0}; -// float4 userCoords1 = {0,1,0,0}; -// float4 userCoords2 = {0,0,1,0}; -// float4 userCoords3 = {0,0,0,1}; - -float4x4 CoordSysIXf : WorldInverse; - -float MasterAlpha < - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 1.0; - float UIStep = 0.001; -> = 0.0f; - -////////////////////// - -texture EnvTexture : Environment < - string ResourceName = "Default_reflection.dds"; - string ResourceType = "Cube"; ->; - -samplerCUBE EnvSampler = sampler_state { - Texture = ; - MinFilter = LinearMipMapLinear; - MagFilter = Linear; - WrapS = ClampToEdge; - WrapT = ClampToEdge; - WrapR = ClampToEdge; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float3 Position : POSITION; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float3 UserPos : TEXCOORD0; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - OUT.HPosition = mul(WorldViewProjXf, Po); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - return OUT; -} - -vertexOutput flipVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - OUT.UserPos.y = -OUT.UserPos.y; - OUT.HPosition = mul(WorldViewProjXf, Po); - return OUT; -} - - -/********* pixel shader ********/ - -// PS with box-filtered step function -float4 mainPS(vertexOutput IN) : COLOR { - float3 reflColor = SurfColor * texCUBE(EnvSampler,-IN.UserPos).xyz; - // return float4(IN.UserPos.xyz,1.0f); - return float4(reflColor.xyz,MasterAlpha); -} - -/************************************************************/ - -technique yFlip { - pass p0 { - VertexProgram = compile arbvp1 flipVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -technique user { - pass p0 { - VertexProgram = compile arbvp1 mainVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -/***************************** eof ***/ diff --git a/sdk/Darwin/2019.2/samples/FileStream/CMakeLists.txt b/sdk/Darwin/2019.2/samples/FileStream/CMakeLists.txt deleted file mode 100644 index 6fd03bb..0000000 --- a/sdk/Darwin/2019.2/samples/FileStream/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(FileStream .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Darwin/2019.2/samples/FileStream/main.cxx b/sdk/Darwin/2019.2/samples/FileStream/main.cxx deleted file mode 100644 index 029c1b4..0000000 --- a/sdk/Darwin/2019.2/samples/FileStream/main.cxx +++ /dev/null @@ -1,249 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// -// The example illustrates how to: -// 1) create a file custom stream class -// 2) write a text file using the stream -// 3) read the generated file via the stream -// -///////////////////////////////////////////////////////////////////////// - -#include - -// Custom stream -class CustomStreamClass : public FbxStream -{ -public: - CustomStreamClass( FbxManager* pSdkManager, const char* mode ) - { - mFile = NULL; - - // expect the mode to contain something - if (mode == NULL) return; - - - FBXSDK_strcpy(mFileName, 30, "CustomStreamClass_temp.txt"); - FBXSDK_strcpy(mMode, 3, (mode) ? mode : "r"); - - if ( mode[0] == 'r' ) - { - const char* format = "FBX (*.fbx)"; - mReaderID = pSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( format ); - mWriterID = -1; - } - else - { - const char* format = "FBX ascii (*.fbx)"; - mWriterID = pSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription( format ); - mReaderID = -1; - } - } - - ~CustomStreamClass() - { - Close(); - } - - virtual EState GetState() - { - return mFile ? FbxStream::eOpen : eClosed; - } - - /** Open the stream. - * \return True if successful. - */ - virtual bool Open( void* /*pStreamData*/ ) - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle - // multiple opens - if (mFile == NULL) - FBXSDK_fopen(mFile, mFileName, mMode); - - if (mFile != NULL) - fseek( mFile, 0L, SEEK_SET ); - - return ( mFile != NULL ); - } - - /** Close the stream. - * \return True if successful. - */ - virtual bool Close() - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle multiple closes - if ( mFile ) - fclose( mFile ); - mFile = NULL; - return true; - } - - /** Empties the internal data of the stream. - * \return True if successful. - */ - virtual bool Flush() - { - return true; - } - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. - */ - virtual int Write(const void* pData, int pSize) - { - if ( mFile == NULL ) - return 0; - return (int)fwrite( pData, 1, pSize, mFile ); - } - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. - */ - virtual int Read (void* pData, int pSize) const - { - if ( mFile == NULL ) - return 0; - return (int)fread( pData, 1, pSize, mFile ); - } - - virtual int GetReaderID() const - { - return mReaderID; - } - - virtual int GetWriterID() const - { - return mWriterID; - } - - void Seek( const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos ) - { - switch ( pSeekPos ) - { - case FbxFile::eBegin: - fseek( mFile, (long)pOffset, SEEK_SET ); - break; - case FbxFile::eCurrent: - fseek( mFile, (long)pOffset, SEEK_CUR ); - break; - case FbxFile::eEnd: - fseek( mFile, (long)pOffset, SEEK_END ); - break; - } - } - - virtual long GetPosition() const - { - if ( mFile == NULL ) - return 0; - return ftell( mFile ); - } - virtual void SetPosition( long pPosition ) - { - if ( mFile ) - fseek( mFile, pPosition, SEEK_SET ); - } - - virtual int GetError() const - { - if ( mFile == NULL ) - return 0; - return ferror( mFile ); - } - virtual void ClearError() - { - if ( mFile != NULL ) - clearerr( mFile ); - } - -private: - FILE* mFile; - int mReaderID; - int mWriterID; - char mFileName[30]; - char mMode[3]; -}; - - - -int testExport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene. - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an exporter. - FbxExporter* lExporter = FbxExporter::Create( lSdkManager, "" ); - // create a stream. - CustomStreamClass stream( lSdkManager, "wb" ); - // can pass in a void* data pointer to be passed to the stream on FileCreate - void* streamData = NULL; - // initialize the exporter. - if ( !lExporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // export the scene. - if ( !lExporter->Export( lScene ) ) - return -1; - // destroy the exporter. - lExporter->Destroy(); - - return 0; -} - -int testImport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an importer. - FbxImporter* lImporter = FbxImporter::Create( lSdkManager, "" ); - // create a stream. (CustomStreamClass – stream initialization in constructor) - CustomStreamClass stream( lSdkManager, "rb" ); - // can pass in a void* data pointer to be passed to the stream on FileOpen - void* streamData = NULL; - // initialize the importer with a stream - if ( !lImporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // import the scene. - if ( !lImporter->Import( lScene ) ) - return -1; - // destroy the importer. - lImporter->Destroy(); - - return 0; -} - -int main(int /*argc*/, char** /*argv*/) -{ - int ret; - - ret = testExport(); - if ( ret ) return ret; - - ret = testImport(); - if ( ret ) return ret; - - return 0; -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ImportScene/CMakeLists.txt deleted file mode 100644 index 8a68076..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ImportScene .) -SET(FBX_TARGET_SOURCE - DisplayAnimation.cxx - DisplayCache.cxx - DisplayCamera.cxx - DisplayCommon.cxx - DisplayGenericInfo.cxx - DisplayGlobalSettings.cxx - DisplayHierarchy.cxx - DisplayLight.cxx - DisplayLink.cxx - DisplayMarker.cxx - DisplayMaterial.cxx - DisplayMesh.cxx - DisplayNurb.cxx - DisplayPatch.cxx - DisplayLodGroup.cxx - DisplayPivotsAndLimits.cxx - DisplayPose.cxx - DisplayShape.cxx - DisplaySkeleton.cxx - DisplayTexture.cxx - DisplayUserProperties.cxx - main.cxx - DisplayAnimation.h - DisplayCache.h - DisplayCamera.h - DisplayCommon.h - DisplayGenericInfo.h - DisplayGlobalSettings.h - DisplayHierarchy.h - DisplayLight.h - DisplayLink.h - DisplayMarker.h - DisplayMaterial.h - DisplayMesh.h - DisplayNurb.h - DisplayPatch.h - DisplayLodGroup.h - DisplayPivotsAndLimits.h - DisplayPose.h - DisplayShape.h - DisplaySkeleton.h - DisplayTexture.h - DisplayUserProperties.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.cxx deleted file mode 100644 index 5525f43..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.cxx +++ /dev/null @@ -1,569 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#include "DisplayAnimation.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool isSwitcher = false); - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher); -void DisplayCurveKeys(FbxAnimCurve* pCurve); -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty); - -void DisplayAnimation(FbxScene* pScene) -{ - int i; - for (i = 0; i < pScene->GetSrcObjectCount(); i++) - { - FbxAnimStack* lAnimStack = pScene->GetSrcObject(i); - - FbxString lOutputString = "Animation Stack Name: "; - lOutputString += lAnimStack->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimStack, pScene->GetRootNode()); - } -} - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher) -{ - int l; - int nbAnimLayers = pAnimStack->GetMemberCount(); - int nbAudioLayers = pAnimStack->GetMemberCount(); - FbxString lOutputString; - - lOutputString = " contains "; - if (nbAnimLayers==0 && nbAudioLayers==0) - lOutputString += "no layers"; - - if (nbAnimLayers) - { - lOutputString += nbAnimLayers; - lOutputString += " Animation Layer"; - if (nbAnimLayers > 1) - lOutputString += "s"; - } - - if (nbAudioLayers) - { - if (nbAnimLayers) - lOutputString += " and "; - - lOutputString += nbAudioLayers; - lOutputString += " Audio Layer"; - if (nbAudioLayers > 1) - lOutputString += "s"; - } - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - for (l = 0; l < nbAnimLayers; l++) - { - FbxAnimLayer* lAnimLayer = pAnimStack->GetMember(l); - - lOutputString = "AnimLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimLayer, pNode, isSwitcher); - } - - for (l = 0; l < nbAudioLayers; l++) - { - FbxAudioLayer* lAudioLayer = pAnimStack->GetMember(l); - - lOutputString = "AudioLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAudioLayer, isSwitcher); - FBXSDK_printf("\n"); - } -} - -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool ) -{ - int lClipCount; - FbxString lOutputString; - - lClipCount = pAudioLayer->GetMemberCount(); - - lOutputString = " Name: "; - lOutputString += pAudioLayer->GetName(); - lOutputString += "\n\n"; - lOutputString += " Nb Audio Clips: "; - lOutputString += lClipCount; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - for (int i = 0; i < lClipCount; i++) - { - FbxAudio* lClip = pAudioLayer->GetMember(i); - lOutputString = " Clip["; - lOutputString += i; - lOutputString += "]:\t"; - lOutputString += lClip->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - } -} - -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher) -{ - int lModelCount; - FbxString lOutputString; - - lOutputString = " Node Name: "; - lOutputString += pNode->GetName(); - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - DisplayChannels(pNode, pAnimLayer, DisplayCurveKeys, DisplayListCurveKeys, isSwitcher); - FBXSDK_printf ("\n"); - - for(lModelCount = 0; lModelCount < pNode->GetChildCount(); lModelCount++) - { - DisplayAnimation(pAnimLayer, pNode->GetChild(lModelCount), isSwitcher); - } -} - - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher) -{ - FbxAnimCurve* lAnimCurve = NULL; - - // Display general curves. - if (!isSwitcher) - { - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" TX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" TY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" TZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" RX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" RY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" RZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" SX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" SY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" SZ\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a light or marker. - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - if (lAnimCurve) - { - FBXSDK_printf(" Red\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - if (lAnimCurve) - { - FBXSDK_printf(" Green\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - if (lAnimCurve) - { - FBXSDK_printf(" Blue\n"); - DisplayCurve(lAnimCurve); - } - - // Display curves specific to a light. - FbxLight* light = pNode->GetLight(); - if (light) - { - lAnimCurve = light->Intensity.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Intensity\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->OuterAngle.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Outer Angle\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->Fog.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Fog\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a camera. - FbxCamera* camera = pNode->GetCamera(); - if (camera) - { - lAnimCurve = camera->FieldOfView.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewY.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Optical Center X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterY.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Optical Center Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->Roll.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Roll\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNurbs || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::ePatch) - { - FbxGeometry* lGeometry = (FbxGeometry*) lNodeAttribute; - - int lBlendShapeDeformerCount = lGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - const char* lChannelName = lChannel->GetName(); - - lAnimCurve = lGeometry->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer, true); - if(lAnimCurve) - { - FBXSDK_printf(" Shape %s\n", lChannelName); - DisplayCurve(lAnimCurve); - } - } - } - } - } - - // Display curves specific to properties - FbxProperty lProperty = pNode->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - FbxString lFbxFCurveNodeName = lProperty.GetName(); - FbxAnimCurveNode* lCurveNode = lProperty.GetCurveNode(pAnimLayer); - - if (!lCurveNode){ - lProperty = pNode->GetNextProperty(lProperty); - continue; - } - - FbxDataType lDataType = lProperty.GetPropertyDataType(); - if (lDataType.GetType() == eFbxBool || lDataType.GetType() == eFbxDouble || lDataType.GetType() == eFbxFloat || lDataType.GetType() == eFbxInt) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayCurve(lAnimCurve); - } - } - else if(lDataType.GetType() == eFbxDouble3 || lDataType.GetType() == eFbxDouble4 || lDataType.Is(FbxColor3DT) || lDataType.Is(FbxColor4DT)) - { - char* lComponentName1 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_RED : (char*)"X"; - char* lComponentName2 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_GREEN : (char*)"Y"; - char* lComponentName3 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_BLUE : (char*)"Z"; - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - } - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName1); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(1U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(1U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName2); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(2U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(2U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName3); - DisplayCurve(lAnimCurve); - } - } - } - else if (lDataType.GetType() == eFbxEnum) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayListCurve(lAnimCurve, &lProperty); - } - } - } - - lProperty = pNode->GetNextProperty(lProperty); - } // while - -} - - -static int InterpolationFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant ) return 1; - if( (flags & FbxAnimCurveDef::eInterpolationLinear) == FbxAnimCurveDef::eInterpolationLinear ) return 2; - if( (flags & FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic ) return 3; - return 0; -} - -static int ConstantmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eConstantStandard) == FbxAnimCurveDef::eConstantStandard ) return 1; - if( (flags & FbxAnimCurveDef::eConstantNext) == FbxAnimCurveDef::eConstantNext ) return 2; - return 0; -} - -static int TangentmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eTangentAuto) == FbxAnimCurveDef::eTangentAuto ) return 1; - if( (flags & FbxAnimCurveDef::eTangentAutoBreak)== FbxAnimCurveDef::eTangentAutoBreak ) return 2; - if( (flags & FbxAnimCurveDef::eTangentTCB) == FbxAnimCurveDef::eTangentTCB ) return 3; - if( (flags & FbxAnimCurveDef::eTangentUser) == FbxAnimCurveDef::eTangentUser ) return 4; - if( (flags & FbxAnimCurveDef::eTangentGenericBreak) == FbxAnimCurveDef::eTangentGenericBreak ) return 5; - if( (flags & FbxAnimCurveDef::eTangentBreak) == FbxAnimCurveDef::eTangentBreak ) return 6; - return 0; -} - -static int TangentweightFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eWeightedNone) == FbxAnimCurveDef::eWeightedNone ) return 1; - if( (flags & FbxAnimCurveDef::eWeightedRight) == FbxAnimCurveDef::eWeightedRight ) return 2; - if( (flags & FbxAnimCurveDef::eWeightedNextLeft) == FbxAnimCurveDef::eWeightedNextLeft ) return 3; - return 0; -} - -static int TangentVelocityFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eVelocityNone) == FbxAnimCurveDef::eVelocityNone ) return 1; - if( (flags & FbxAnimCurveDef::eVelocityRight) == FbxAnimCurveDef::eVelocityRight ) return 2; - if( (flags & FbxAnimCurveDef::eVelocityNextLeft) == FbxAnimCurveDef::eVelocityNextLeft ) return 3; - return 0; -} - -void DisplayCurveKeys(FbxAnimCurve* pCurve) -{ - static const char* interpolation[] = { "?", "constant", "linear", "cubic"}; - static const char* constantMode[] = { "?", "Standard", "Next" }; - static const char* cubicMode[] = { "?", "Auto", "Auto break", "Tcb", "User", "Break", "User break" }; - static const char* tangentWVMode[] = { "?", "None", "Right", "Next left" }; - - FbxTime lKeyTime; - float lKeyValue; - char lTimeString[256]; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " [ "; - lOutputString += interpolation[ InterpolationFlagToIndex(pCurve->KeyGetInterpolation(lCount)) ]; - if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant) - { - lOutputString += " | "; - lOutputString += constantMode[ ConstantmodeFlagToIndex(pCurve->KeyGetConstantMode(lCount)) ]; - } - else if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic) - { - lOutputString += " | "; - lOutputString += cubicMode[ TangentmodeFlagToIndex(pCurve->KeyGetTangentMode(lCount)) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentweightFlagToIndex(pCurve->KeyGet(lCount).GetTangentWeightMode()) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentVelocityFlagToIndex(pCurve->KeyGet(lCount).GetTangentVelocityMode()) ]; - } - lOutputString += " ]"; - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} - -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty) -{ - FbxTime lKeyTime; - int lKeyValue; - char lTimeString[256]; - FbxString lListValue; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " ("; - lOutputString += pProperty->GetEnumValue(lKeyValue); - lOutputString += ")"; - - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.h deleted file mode 100644 index e4584c7..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayAnimation.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_ANIMATION_H -#define _DISPLAY_ANIMATION_H - -#include "DisplayCommon.h" - -void DisplayAnimation(FbxScene* pScene); -void DisplayDefaultAnimation(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_ANIMATION_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.cxx deleted file mode 100644 index 7b305c3..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.cxx +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - - -#include - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry) -{ - int lVertexCacheDeformerCount = pGeometry->GetDeformerCount( FbxDeformer::eVertexCache ); - - for( int i = 0; i < lVertexCacheDeformerCount; ++i ) - { - FbxVertexCacheDeformer* lDeformer = static_cast(pGeometry->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - if (lCache->OpenFileForRead()) - { - DisplayString(" Vertex Cache"); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - // skip normal channel - if (lChannelIndex < 0) - continue; - - FbxString lChnlName, lChnlInterp; - - FbxCache::EMCDataType lChnlType; - FbxTime start, stop, rate; - FbxCache::EMCSamplingType lChnlSampling; - unsigned int lChnlSampleCount, lDataCount; - - lCache->GetChannelName(lChannelIndex, lChnlName); - DisplayString(" Channel Name: ", lChnlName.Buffer()); - lCache->GetChannelDataType(lChannelIndex, lChnlType); - switch (lChnlType) - { - case FbxCache::eUnknownData: - DisplayString(" Channel Type: Unknown Data"); break; - case FbxCache::eDouble: - DisplayString(" Channel Type: Double"); break; - case FbxCache::eDoubleArray: - DisplayString(" Channel Type: Double Array"); break; - case FbxCache::eDoubleVectorArray: - DisplayString(" Channel Type: Double Vector Array"); break; - case FbxCache::eInt32Array: - DisplayString(" Channel Type: Int32 Array"); break; - case FbxCache::eFloatArray: - DisplayString(" Channel Type: Float Array"); break; - case FbxCache::eFloatVectorArray: - DisplayString(" Channel Type: Float Vector Array"); break; - } - lCache->GetChannelInterpretation(lChannelIndex, lChnlInterp); - DisplayString(" Channel Interpretation: ", lChnlInterp.Buffer()); - lCache->GetChannelSamplingType(lChannelIndex, lChnlSampling); - DisplayInt(" Channel Sampling Type: ", lChnlSampling); - lCache->GetAnimationRange(lChannelIndex, start, stop); - lCache->GetChannelSamplingRate(lChannelIndex, rate); - lCache->GetChannelSampleCount(lChannelIndex, lChnlSampleCount); - DisplayInt(" Channel Sample Count: ", lChnlSampleCount); - - // Only display cache data if the data type is float vector array - if (lChnlType != FbxCache::eFloatVectorArray) - continue; - - if (lChnlInterp == "normals") - DisplayString(" Normal Cache Data"); - else - DisplayString(" Points Cache Data"); - float* lBuffer = NULL; - unsigned int lBufferSize = 0; - int lFrame = 0; - for (FbxTime t = start; t <= stop; t+=rate) - { - DisplayInt(" Frame ", lFrame); - lCache->GetChannelPointCount(lChannelIndex, t, lDataCount); - if (lBuffer == NULL) - { - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else if (lBufferSize < lDataCount*3) - { - delete [] lBuffer; - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else - memset(lBuffer, 0, lBufferSize*sizeof(float)); - - lCache->Read(lChannelIndex, t, lBuffer, lDataCount); - if (lChnlInterp == "normals") - { - // display normals cache data - // the normal data is per-polygon per-vertex. we can get the polygon vertex index - // from the index array of polygon vertex - FbxMesh* lMesh = (FbxMesh*)pGeometry; - - if (lMesh == NULL) - { - // Only Mesh can have normal cache data - continue; - } - - DisplayInt(" Normal Count ", lDataCount); - int pi, j, lPolygonCount = lMesh->GetPolygonCount(); - unsigned lNormalIndex = 0; - for (pi = 0; pi < lPolygonCount && lNormalIndex+2 < lDataCount*3; pi++) - { - DisplayInt(" Polygon ", pi); - DisplayString(" Normals for Each Polygon Vertex: "); - int lPolygonSize = lMesh->GetPolygonSize(pi); - for (j = 0; j < lPolygonSize && lNormalIndex+2 < lDataCount*3; j++) - { - FbxVector4 normal(lBuffer[lNormalIndex], lBuffer[lNormalIndex+1], lBuffer[lNormalIndex+2]); - Display3DVector(" Normal Cache Data ", normal); - lNormalIndex += 3; - } - } - } - else - { - DisplayInt(" Points Count: ", lDataCount); - for (unsigned int j = 0; j < lDataCount*3; j=j+3) - { - FbxVector4 points(lBuffer[j], lBuffer[j+1], lBuffer[j+2]); - Display3DVector(" Points Cache Data: ", points); - } - } - - lFrame++; - } - - if (lBuffer != NULL) - { - delete [] lBuffer; - lBuffer = NULL; - } - - lCache->CloseFile(); - } - } -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.h deleted file mode 100644 index bcfb73a..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCache.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CACHE_H -#define _DISPLAY_CACHE_H - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_CACHE_H diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.cxx deleted file mode 100644 index ffd5892..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.cxx +++ /dev/null @@ -1,288 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - - -void DisplayCamera(FbxNode* pNode) -{ - DisplayCamera((FbxCamera*) pNode->GetNodeAttribute(), (char *) pNode->GetName(), pNode->GetTarget(), pNode->GetTargetUp()); -} - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString("Camera Name: ", pName); - if (!pCamera) - { - DisplayString("NOT FOUND"); - return; - } - DisplayMetaDataConnections(pCamera); - - DisplayCameraPositionAndOrientation(pCamera, pTargetNode, pTargetUpNode); - - const char* lProjectionTypes[] = { "Perspective", "Orthogonal" }; - - DisplayString(" Projection Type: ", lProjectionTypes[pCamera->ProjectionType.Get()]); - - DisplayViewingAreaControls(pCamera); - - // If camera projection type is set to FbxCamera::eOrthogonal, the - // aperture and film controls are not relevant. - if (pCamera->ProjectionType.Get() != FbxCamera::eOrthogonal) - { - DisplayApertureAndFilmControls(pCamera); - } - - DisplayBackgroundProperties(pCamera); - DisplayCameraViewOptions(pCamera); - DisplayRenderOptions(pCamera); - DisplayDefaultAnimationValues(pCamera); -} - - -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString(" Camera Position and Orientation"); - Display3DVector(" Position: ", pCamera->Position.Get()); - - if (pTargetNode) - { - DisplayString(" Camera Interest: ",(char *) pTargetNode->GetName()); - } - else - { - Display3DVector(" Default Camera Interest Position: ", pCamera->InterestPosition.Get()); - } - - if (pTargetUpNode) - { - DisplayString(" Camera Up Target: ", (char *) pTargetUpNode->GetName()); - } - else - { - Display3DVector(" Up Vector: ", pCamera->UpVector.Get()); - } - - DisplayDouble(" Roll: ", pCamera->Roll.Get()); -} - - -void DisplayViewingAreaControls(FbxCamera* pCamera) -{ - DisplayString(" Viewing Area Controls"); - - const char* lCameraFormat[] = { "Custom", "D1 NTSC", "NTSC", "PAL", "D1 PAL", - "HD", "640x480", "320x200", "320x240", "128x128", - "Full Screen" }; - - DisplayString(" Format: ", lCameraFormat[pCamera->GetFormat()]); - - const char* lAspectRatioModes[] = { "Window Size", "Fixed Ratio", "Fixed Resolution", - "Fixed Width", "Fixed Height" }; - - DisplayString(" Aspect Ratio Mode: ", lAspectRatioModes[pCamera->GetAspectRatioMode()]); - - // If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - if (pCamera->GetAspectRatioMode() != FbxCamera::eWindowSize) - { - DisplayDouble(" Aspect Width: ", pCamera->AspectWidth.Get()); - DisplayDouble(" Aspect Height: ", pCamera->AspectHeight.Get()); - } - - DisplayDouble(" Pixel Ratio: ", pCamera->PixelAspectRatio.Get()); - DisplayDouble(" Near Plane: ", pCamera->NearPlane.Get()); - DisplayDouble(" Far Plane: ", pCamera->FarPlane.Get()); - DisplayBool(" Mouse Lock: ", pCamera->LockMode.Get()); -} - - -void DisplayApertureAndFilmControls(FbxCamera* pCamera) -{ - DisplayString(" Aperture and Film Controls"); - - const char* lCameraApertureFormats[] = { "Custom", - "16mm Theatrical", - "Super 16mm", - "35mm Academy", - "35mm TV Projection", - "35mm Full Aperture", - "35mm 1.85 Projection", - "35mm Anamorphic", - "70mm Projection", - "VistaVision", - "Dynavision", - "Imax" }; - - DisplayString(" Aperture Format: ", lCameraApertureFormats[pCamera->GetApertureFormat()]); - - const char* lCameraApertureModes[] = { "Horizontal and Vertical", "Horizontal", "Vertical", "Focal Length" }; - - DisplayString(" Aperture Mode: ", lCameraApertureModes[pCamera->GetApertureMode()]); - - DisplayDouble(" Aperture Width: ", pCamera->GetApertureWidth(), " inches"); - DisplayDouble(" Aperture Height: ", pCamera->GetApertureHeight(), " inches"); - DisplayDouble(" Squeeze Ratio: ", pCamera->GetSqueezeRatio()); - DisplayDouble(" Focal Length: ", pCamera->FocalLength.Get(), "mm"); - DisplayDouble(" Field of View: ", pCamera->FieldOfView.Get(), " degrees"); -} - - -void DisplayBackgroundProperties(FbxCamera* pCamera) -{ - DisplayString(" Background Properties"); - - DisplayString(" Background File Name: \"", (char *) pCamera->GetBackgroundFileName(), "\""); - - const char* lBackgroundDisplayModes[] = { "Disabled", "Always", "When Media" }; - - DisplayString(" Background Display Mode: ", lBackgroundDisplayModes[pCamera->ViewFrustumBackPlaneMode.Get()]); - - DisplayBool(" Foreground Matte Threshold Enable: ", pCamera->ShowFrontplate.Get()); - - // This option is only relevant if background drawing mode is set to eFOREGROUND or eBACKGROUND_AND_FOREGROUND. - if (pCamera->ForegroundOpacity.Get()) - { - DisplayDouble(" Foreground Matte Threshold: ", pCamera->BackgroundAlphaTreshold.Get()); - } - - FbxString lBackgroundPlacementOptions; - - if (pCamera->GetBackPlateFitImage()) - { - lBackgroundPlacementOptions += " Fit,"; - } - if (pCamera->GetBackPlateCenter()) - { - lBackgroundPlacementOptions += " Center,"; - } - if (pCamera->GetBackPlateKeepRatio()) - { - lBackgroundPlacementOptions += " Keep Ratio,"; - } - if (pCamera->GetBackPlateCrop()) - { - lBackgroundPlacementOptions += " Crop,"; - } - if (!lBackgroundPlacementOptions.IsEmpty()) - { - FbxString lString = lBackgroundPlacementOptions.Left(lBackgroundPlacementOptions.GetLen() - 1); - DisplayString(" Background Placement Options: ",lString.Buffer()); - } - - DisplayDouble(" Background Distance: ", pCamera->BackPlaneDistance.Get()); - - const char* lCameraBackgroundDistanceModes[] = { "Relative to Interest", "Absolute from Camera" }; - - DisplayString(" Background Distance Mode: ", lCameraBackgroundDistanceModes[pCamera->BackPlaneDistanceMode.Get()]); -} - - -void DisplayCameraViewOptions(FbxCamera* pCamera) -{ - DisplayString(" Camera View Options"); - - DisplayBool(" View Camera Interest: ", pCamera->ViewCameraToLookAt.Get()); - DisplayBool(" View Near Far Planes: ", pCamera->ViewFrustumNearFarPlane.Get()); - DisplayBool(" Show Grid: ", pCamera->ShowGrid.Get()); - DisplayBool(" Show Axis: ", pCamera->ShowAzimut.Get()); - DisplayBool(" Show Name: ", pCamera->ShowName.Get()); - DisplayBool(" Show Info on Moving: ", pCamera->ShowInfoOnMoving.Get()); - DisplayBool(" Show Time Code: ", pCamera->ShowTimeCode.Get()); - DisplayBool(" Display Safe Area: ", pCamera->DisplaySafeArea.Get()); - - const char* lSafeAreaStyles[] = { "Round", "Square" }; - FbxColor color; - FbxDouble3 c; - - DisplayString(" Safe Area Style: ", lSafeAreaStyles[pCamera->SafeAreaDisplayStyle.Get()]); - DisplayBool(" Show Audio: ", pCamera->ShowAudio.Get()); - - c = pCamera->BackgroundColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Background Color: ", color); - - c = pCamera->AudioColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Audio Color: ", color); - - DisplayBool(" Use Frame Color: ", pCamera->UseFrameColor.Get()); - - c = pCamera->FrameColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Frame Color: ", color); -} - - -void DisplayRenderOptions(FbxCamera* pCamera) -{ - DisplayString(" Render Options"); - - const char* lCameraRenderOptionsUsageTimes[] = { "Interactive", "At Render" }; - - DisplayString(" Render Options Usage Time: ", lCameraRenderOptionsUsageTimes[pCamera->UseRealTimeDOFAndAA.Get()]); - DisplayBool(" Use Antialiasing: ", pCamera->UseAntialiasing.Get()); - DisplayDouble(" Antialiasing Intensity: ", pCamera->AntialiasingIntensity.Get()); - - const char* lCameraAntialiasingMethods[] = { "Oversampling Antialiasing", "Hardware Antialiasing" }; - - DisplayString(" Antialiasing Method: ", lCameraAntialiasingMethods[pCamera->AntialiasingMethod.Get()]); - - // This option is only relevant if antialiasing method is set to eOVERSAMPLING_ANTIALIASING. - if (pCamera->AntialiasingMethod.Get() == FbxCamera::eAAOversampling) - { - DisplayInt(" Number of Samples: ", pCamera->FrameSamplingCount.Get()); - } - - const char* lCameraSamplingTypes[] = { "Uniform", "Stochastic" }; - - DisplayString(" Sampling Type: ", lCameraSamplingTypes[pCamera->FrameSamplingType.Get()]); - DisplayBool(" Use Accumulation Buffer: ", pCamera->UseAccumulationBuffer.Get()); - DisplayBool(" Use Depth of Field: ", pCamera->UseDepthOfField.Get()); - - const char* lCameraFocusDistanceSources[] = { "Camera Interest", "Specific Distance" }; - - DisplayString(" Focus Distance Source: ", lCameraFocusDistanceSources[pCamera->FocusSource.Get()]); - - // This parameter is only relevant if focus distance source is set to eSPECIFIC_DISTANCE. - if (pCamera->FocusSource.Get() == FbxCamera::eFocusSpecificDistance) - { - DisplayDouble(" Specific Distance: ", pCamera->FocusDistance.Get()); - } - - DisplayDouble(" Focus Angle: ", pCamera->FocusAngle.Get(), " degrees"); -} - - -void DisplayDefaultAnimationValues(FbxCamera* pCamera) -{ - DisplayString(" Default Animation Values"); - - DisplayDouble(" Default Field of View: ", pCamera->FieldOfView.Get()); - DisplayDouble(" Default Field of View X: ", pCamera->FieldOfViewX.Get()); - DisplayDouble(" Default Field of View Y: ", pCamera->FieldOfViewY.Get()); - DisplayDouble(" Default Optical Center X: ", pCamera->OpticalCenterX.Get()); - DisplayDouble(" Default Optical Center Y: ", pCamera->OpticalCenterY.Get()); - DisplayDouble(" Default Roll: ", pCamera->Roll.Get()); -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.h deleted file mode 100644 index ce12edf..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCamera.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CAMERA_H -#define _DISPLAY_CAMERA_H - -#include "DisplayCommon.h" - -void DisplayCamera(FbxNode* pNode); -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - -#endif // #ifndef _DISPLAY_CAMERA_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.cxx deleted file mode 100644 index 3a28223..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.cxx +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.h deleted file mode 100644 index e069c24..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayCommon.h +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.cxx deleted file mode 100644 index 3c67265..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.cxx +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayProperties(FbxObject* pObject); -void DisplayGenericInfo(FbxNode* pNode, int pDepth); -void DisplayGenericInfo(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayGenericInfo(lRootNode->GetChild(i), 0); - } - - //Other objects directly connected onto the scene - for( i = 0; i < pScene->GetSrcObjectCount(); ++i ) - { - DisplayProperties(pScene->GetSrcObject(i)); - } -} - - -void DisplayGenericInfo(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - DisplayString(lString.Buffer()); - - //Display generic info about that Node - DisplayProperties(pNode); - DisplayString(""); - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayGenericInfo(pNode->GetChild(i), pDepth + 1); - } -} - -void DisplayProperties(FbxObject* pObject) -{ - - DisplayString("Name: ", (char *)pObject->GetName()); - - // Display all the properties - int i, lCount = 0; - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - lCount++; - lProperty = pObject->GetNextProperty(lProperty); - } - - FbxString lTitleStr = " Property Count: "; - - if (lCount == 0) - return; // there are no properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - i=0; - lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - // exclude user properties - - FbxString lString; - DisplayInt(" Property ", i); - lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - lString = lProperty.GetPropertyDataType().GetName(); - DisplayString(" Type: ",lString.Buffer()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - - switch (lProperty.GetPropertyDataType().GetType()) - { - case eFbxBool: - DisplayBool(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble4: - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - break; - - case eFbxInt: - DisplayInt(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble3: - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - break; - - //case FbxEnumDT: - // DisplayInt(" Default Value: ", lProperty.Get()); - // break; - - case eFbxFloat: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - case eFbxString: - lString = lProperty.Get(); - DisplayString(" Default Value: ", lString.Buffer()); - break; - - default: - DisplayString(" Default Value: UNIDENTIFIED"); - break; - } - i++; - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.h deleted file mode 100644 index 76a0572..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGenericInfo.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GENERIC_INFO_H_ -#define _DISPLAY_GENERIC_INFO_H_ - -#include "DisplayCommon.h" - -void DisplayGenericInfo(FbxScene* pScene); - -#endif diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx deleted file mode 100644 index 22e956e..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" -#include "DisplayCamera.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayColor("Ambient Color: ", pGlobalSettings->GetAmbientColor()); - DisplayString(""); -} - - -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayString("Default Camera: ", pGlobalSettings->GetDefaultCamera()); - DisplayString(""); -} - - -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings) -{ - char lTimeString[256]; - - DisplayString("Time Mode : ", FbxGetTimeModeName(pGlobalSettings->GetTimeMode())); - - FbxTimeSpan lTs; - FbxTime lStart, lEnd; - pGlobalSettings->GetTimelineDefaultTimeSpan(lTs); - lStart = lTs.GetStart(); - lEnd = lTs.GetStop(); - DisplayString("Timeline default timespan: "); - DisplayString(" Start: ", lStart.GetTimeString(lTimeString, FbxUShort(256))); - DisplayString(" Stop : ", lEnd.GetTimeString(lTimeString, FbxUShort(256))); - - DisplayString(""); -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.h deleted file mode 100644 index d427de9..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayGlobalSettings.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GLOBAL_SETTINGS_H -#define _DISPLAY_GLOBAL_SETTINGS_H - -#include "DisplayCommon.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings); - -#endif // #ifndef _DISPLAY_GLOBAL_SETTINGS_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.cxx deleted file mode 100644 index c8b49cd..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.cxx +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -// Local functions prototype. -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -void DisplayHierarchy(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayHierarchy(lRootNode->GetChild(i), 0); - } -} - -void DisplayHierarchy(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - FBXSDK_printf(lString.Buffer()); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayHierarchy(pNode->GetChild(i), pDepth + 1); - } -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.h deleted file mode 100644 index 12dffe9..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayHierarchy.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_HIERARCHY_H -#define _DISPLAY_HIERARCHY_H - -#include "DisplayCommon.h" - -void DisplayHierarchy(FbxScene* pScene); -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -#endif // #ifndef _DISPLAY_HIERARCHY_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.cxx deleted file mode 100644 index 728a9ef..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.cxx +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLight.h" - -void DisplayDefaultAnimationValues(FbxLight* pLight); - -void DisplayLight(FbxNode* pNode) -{ - FbxLight* lLight = (FbxLight*) pNode->GetNodeAttribute(); - - DisplayString("Light Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lLight); - - const char* lLightTypes[] = { "Point", "Directional", "Spot", "Area", "Volume" }; - - DisplayString(" Type: ", lLightTypes[lLight->LightType.Get()]); - DisplayBool(" Cast Light: ", lLight->CastLight.Get()); - - if (!(lLight->FileName.Get().IsEmpty())) - { - DisplayString(" Gobo"); - - DisplayString(" File Name: \"", lLight->FileName.Get().Buffer(), "\""); - DisplayBool(" Ground Projection: ", lLight->DrawGroundProjection.Get()); - DisplayBool(" Volumetric Projection: ", lLight->DrawVolumetricLight.Get()); - DisplayBool(" Front Volumetric Projection: ", lLight->DrawFrontFacingVolumetricLight.Get()); - } - - DisplayDefaultAnimationValues(lLight); -} - - -void DisplayDefaultAnimationValues(FbxLight* pLight) -{ - DisplayString(" Default Animation Values"); - - FbxDouble3 c = pLight->Color.Get(); - FbxColor lColor(c[0], c[1], c[2]); - DisplayColor(" Default Color: ", lColor); - DisplayDouble(" Default Intensity: ", pLight->Intensity.Get()); - DisplayDouble(" Default Outer Angle: ", pLight->OuterAngle.Get()); - DisplayDouble(" Default Fog: ", pLight->Fog.Get()); -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.h deleted file mode 100644 index ca717ac..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLight.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LIGHT_H -#define _DISPLAY_LIGHT_H - -#include "DisplayCommon.h" - -void DisplayLight(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LIGHT_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.cxx deleted file mode 100644 index bf2aad7..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.cxx +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLink.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayLink(FbxGeometry* pGeometry) -{ - //Display cluster now - - //int i, lLinkCount; - //FbxCluster* lLink; - - int i, j; - int lSkinCount=0; - int lClusterCount=0; - FbxCluster* lCluster; - - lSkinCount=pGeometry->GetDeformerCount(FbxDeformer::eSkin); - - - - //lLinkCount = pGeometry->GetLinkCount(); - for(i=0; i!=lSkinCount; ++i) - { - lClusterCount = ((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetClusterCount(); - for (j = 0; j != lClusterCount; ++j) - { - DisplayInt(" Cluster ", i); - - lCluster=((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetCluster(j); - //lLink = pGeometry->GetLink(i); - - const char* lClusterModes[] = { "Normalize", "Additive", "Total1" }; - - DisplayString(" Mode: ", lClusterModes[lCluster->GetLinkMode()]); - - if(lCluster->GetLink() != NULL) - { - DisplayString(" Name: ", (char *) lCluster->GetLink()->GetName()); - } - - FbxString lString1 = " Link Indices: "; - FbxString lString2 = " Weight Values: "; - - int k, lIndexCount = lCluster->GetControlPointIndicesCount(); - int* lIndices = lCluster->GetControlPointIndices(); - double* lWeights = lCluster->GetControlPointWeights(); - - for(k = 0; k < lIndexCount; k++) - { - lString1 += lIndices[k]; - lString2 += (float) lWeights[k]; - - if (k < lIndexCount - 1) - { - lString1 += ", "; - lString2 += ", "; - } - } - - lString1 += "\n"; - lString2 += "\n"; - - FBXSDK_printf(lString1); - FBXSDK_printf(lString2); - - DisplayString(""); - - FbxAMatrix lMatrix; - - lMatrix = lCluster->GetTransformMatrix(lMatrix); - Display3DVector(" Transform Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Scaling: ", lMatrix.GetS()); - - lMatrix = lCluster->GetTransformLinkMatrix(lMatrix); - Display3DVector(" Transform Link Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Link Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Link Scaling: ", lMatrix.GetS()); - - if (lCluster->GetAssociateModel() != NULL) - { - lMatrix = lCluster->GetTransformAssociateModelMatrix(lMatrix); - DisplayString(" Associate Model: ", (char *) lCluster->GetAssociateModel()->GetName()); - Display3DVector(" Associate Model Translation: ", lMatrix.GetT()); - Display3DVector(" Associate Model Rotation: ", lMatrix.GetR()); - Display3DVector(" Associate Model Scaling: ", lMatrix.GetS()); - } - - DisplayString(""); - } - } -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.h deleted file mode 100644 index b3ab18d..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLink.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LINK_H -#define _DISPLAY_LINK_H - -#include "DisplayCommon.h" - -void DisplayLink(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_LINK_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.cxx deleted file mode 100644 index cac1610..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode) -{ - const char* lDisplayLevels[] = { "UseLOD", "Show", "Hide" }; - - DisplayString("LodGroup Name: ", (char *) pNode->GetName()); - - DisplayInt(" ", pNode->GetChildCount(), " Geometries"); - for (int i = 0; i < pNode->GetChildCount(); i++) - { - FbxNode* lChildNode = pNode->GetChild(i); - DisplayString(" ", lChildNode->GetName()); - } - - FbxLODGroup *lLodGroupAttr = (FbxLODGroup*)pNode->GetNodeAttribute(); - DisplayBool(" MinMaxDistance Enabled: ", lLodGroupAttr->MinMaxDistance.Get()); - if (lLodGroupAttr->MinMaxDistance.Get()) - { - DisplayDouble(" Min Distance: ", lLodGroupAttr->MinDistance.Get()); - DisplayDouble(" Max Distance: ", lLodGroupAttr->MaxDistance.Get()); - } - DisplayBool(" Is World Space: ", lLodGroupAttr->WorldSpace.Get()); - DisplayBool(" Thresholds used as Percentage: ", lLodGroupAttr->ThresholdsUsedAsPercentage.Get()); - - DisplayString(" Thresholds "); - for (int i = 0; i < lLodGroupAttr->GetNumThresholds(); i++) - { - FbxDistance lThreshVal; - bool res = lLodGroupAttr->GetThreshold(i, lThreshVal); - if (res || (!res && lLodGroupAttr->ThresholdsUsedAsPercentage.Get())) - // when thresholds are used as percentage, the GetThreshold returns false - // and we would need to make sure that the value is not bogus - DisplayDouble(" ", lThreshVal.value()); - } - - DisplayString(" DisplayLevels"); - for (int i = 0; i < lLodGroupAttr->GetNumDisplayLevels(); i++) - { - FbxLODGroup::EDisplayLevel lLevel; - if (lLodGroupAttr->GetDisplayLevel(i, lLevel)) - DisplayString(" ", lDisplayLevels[lLevel]); - } -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.h deleted file mode 100644 index 002874d..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayLodGroup.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LODGROUP_H -#define _DISPLAY_LODGROUP_H - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LODGROUP_H - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.cxx deleted file mode 100644 index 0745b77..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.cxx +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode) -{ - FbxMarker* lMarker = (FbxMarker*)pNode->GetNodeAttribute(); - FbxString lString; - - DisplayString("Marker Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMarker); - - // Type - lString = " Marker Type: "; - switch (lMarker->GetType()) - { - case FbxMarker::eStandard: lString += "Standard"; break; - case FbxMarker::eOptical: lString += "Optical"; break; - case FbxMarker::eEffectorIK: lString += "IK Effector"; break; - case FbxMarker::eEffectorFK: lString += "FK Effector"; break; - } - DisplayString(lString.Buffer()); - - // Look - lString = " Marker Look: "; - switch (lMarker->Look.Get()) - { - default: - break; - case FbxMarker::eCube: lString += "Cube"; break; - case FbxMarker::eHardCross: lString += "Hard Cross"; break; - case FbxMarker::eLightCross: lString += "Light Cross"; break; - case FbxMarker::eSphere: lString += "Sphere"; break; - } - DisplayString(lString.Buffer()); - - // Size - lString = FbxString(" Size: ") + FbxString(lMarker->Size.Get()); - DisplayString(lString.Buffer()); - - // Color - FbxDouble3 c = lMarker->Color.Get(); - FbxColor color(c[0], c[1], c[2]); - DisplayColor(" Color: ", color); - - // IKPivot - Display3DVector(" IKPivot: ", lMarker->IKPivot.Get()); -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.h deleted file mode 100644 index aa0dd06..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMarker.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MARKER_H -#define _DISPLAY_MARKER_H - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MARKER_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.cxx deleted file mode 100644 index 981bdc3..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.cxx +++ /dev/null @@ -1,252 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry) -{ - int lMaterialCount = 0; - FbxNode* lNode = NULL; - if(pGeometry){ - lNode = pGeometry->GetNode(); - if(lNode) - lMaterialCount = lNode->GetMaterialCount(); - } - - if (lMaterialCount > 0) - { - FbxPropertyT lKFbxDouble3; - FbxPropertyT lKFbxDouble1; - FbxColor theColor; - - for (int lCount = 0; lCount < lMaterialCount; lCount ++) - { - DisplayInt(" Material ", lCount); - - FbxSurfaceMaterial *lMaterial = lNode->GetMaterial(lCount); - - DisplayString(" Name: \"", (char *) lMaterial->GetName(), "\""); - - //Get the implementation to see if it's a hardware shader. - const FbxImplementation* lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_HLSL); - FbxString lImplemenationType = "HLSL"; - if(!lImplementation) - { - lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_CGFX); - lImplemenationType = "CGFX"; - } - if(lImplementation) - { - //Now we have a hardware shader, let's read it - FBXSDK_printf(" Hardware Shader Type: %s\n", lImplemenationType.Buffer()); - const FbxBindingTable* lRootTable = lImplementation->GetRootTable(); - FbxString lFileName = lRootTable->DescAbsoluteURL.Get(); - FbxString lTechniqueName = lRootTable->DescTAG.Get(); - - - const FbxBindingTable* lTable = lImplementation->GetRootTable(); - size_t lEntryNum = lTable->GetEntryCount(); - - for(int i=0;i <(int)lEntryNum; ++i) - { - const FbxBindingTableEntry& lEntry = lTable->GetEntry(i); - const char* lEntrySrcType = lEntry.GetEntryType(true); - FbxProperty lFbxProp; - - - FbxString lTest = lEntry.GetSource(); - FBXSDK_printf(" Entry: %s\n", lTest.Buffer()); - - - if ( strcmp( FbxPropertyEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lMaterial->FindPropertyHierarchical(lEntry.GetSource()); - if(!lFbxProp.IsValid()) - { - lFbxProp = lMaterial->RootProperty.FindHierarchical(lEntry.GetSource()); - } - - - } - else if( strcmp( FbxConstantEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lImplementation->GetConstants().FindHierarchical(lEntry.GetSource()); - } - if(lFbxProp.IsValid()) - { - if( lFbxProp.GetSrcObjectCount() > 0 ) - { - //do what you want with the textures - for(int j=0; j(); ++j) - { - FbxFileTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" File Texture: %s\n", lTex->GetFileName()); - } - for(int j=0; j(); ++j) - { - FbxLayeredTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Layered Texture: %s\n", lTex->GetName()); - } - for(int j=0; j(); ++j) - { - FbxProceduralTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Procedural Texture: %s\n", lTex->GetName()); - } - } - else - { - FbxDataType lFbxType = lFbxProp.GetPropertyDataType(); - FbxString blah = lFbxType.GetName(); - if(FbxBoolDT == lFbxType) - { - DisplayBool(" Bool: ", lFbxProp.Get() ); - } - else if ( FbxIntDT == lFbxType || FbxEnumDT == lFbxType ) - { - DisplayInt(" Int: ", lFbxProp.Get()); - } - else if ( FbxFloatDT == lFbxType) - { - DisplayDouble(" Float: ", lFbxProp.Get()); - - } - else if ( FbxDoubleDT == lFbxType) - { - DisplayDouble(" Double: ", lFbxProp.Get()); - } - else if ( FbxStringDT == lFbxType - || FbxUrlDT == lFbxType - || FbxXRefUrlDT == lFbxType ) - { - DisplayString(" String: ", lFbxProp.Get().Buffer()); - } - else if ( FbxDouble2DT == lFbxType) - { - FbxDouble2 lDouble2 = lFbxProp.Get(); - FbxVector2 lVect; - lVect[0] = lDouble2[0]; - lVect[1] = lDouble2[1]; - - Display2DVector(" 2D vector: ", lVect); - } - else if ( FbxDouble3DT == lFbxType || FbxColor3DT == lFbxType) - { - FbxDouble3 lDouble3 = lFbxProp.Get(); - - - FbxVector4 lVect; - lVect[0] = lDouble3[0]; - lVect[1] = lDouble3[1]; - lVect[2] = lDouble3[2]; - Display3DVector(" 3D vector: ", lVect); - } - - else if ( FbxDouble4DT == lFbxType || FbxColor4DT == lFbxType) - { - FbxDouble4 lDouble4 = lFbxProp.Get(); - FbxVector4 lVect; - lVect[0] = lDouble4[0]; - lVect[1] = lDouble4[1]; - lVect[2] = lDouble4[2]; - lVect[3] = lDouble4[3]; - Display4DVector(" 4D vector: ", lVect); - } - else if ( FbxDouble4x4DT == lFbxType) - { - FbxDouble4x4 lDouble44 = lFbxProp.Get(); - for(int j=0; j<4; ++j) - { - - FbxVector4 lVect; - lVect[0] = lDouble44[j][0]; - lVect[1] = lDouble44[j][1]; - lVect[2] = lDouble44[j][2]; - lVect[3] = lDouble44[j][3]; - Display4DVector(" 4x4D vector: ", lVect); - } - - } - } - - } - } - } - else if (lMaterial->GetClassId().Is(FbxSurfacePhong::ClassId)) - { - // We found a Phong material. Display its properties. - - // Display the Ambient Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Specular Color (unique to Phong materials) - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Specular; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Specular: ", theColor); - - // Display the Emissive Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - //Opacity is Transparency factor now - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - - // Display the Shininess - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->Shininess; - DisplayDouble(" Shininess: ", lKFbxDouble1.Get()); - - // Display the Reflectivity - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->ReflectionFactor; - DisplayDouble(" Reflectivity: ", lKFbxDouble1.Get()); - } - else if(lMaterial->GetClassId().Is(FbxSurfaceLambert::ClassId) ) - { - // We found a Lambert material. Display its properties. - // Display the Ambient Color - lKFbxDouble3=((FbxSurfaceLambert *)lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Emissive - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - // Display the Opacity - lKFbxDouble1 =((FbxSurfaceLambert *)lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - } - else - DisplayString("Unknown type of Material"); - - FbxPropertyT lString; - lString = lMaterial->ShadingModel; - DisplayString(" Shading Model: ", lString.Get().Buffer()); - DisplayString(""); - } - } -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.h deleted file mode 100644 index ec9fa99..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMaterial.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MATERIAL_H -#define _DISPLAY_MATERIAL_H - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_MATERIAL_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.cxx deleted file mode 100644 index 2265499..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.cxx +++ /dev/null @@ -1,602 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayMesh.h" - -#include "DisplayMaterial.h" -#include "DisplayTexture.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -#define MAT_HEADER_LENGTH 200 - -void DisplayControlsPoints(FbxMesh* pMesh); -void DisplayPolygons(FbxMesh* pMesh); -void DisplayMaterialMapping(FbxMesh* pMesh); -void DisplayTextureMapping(FbxMesh* pMesh); -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ); -void DisplayMaterialConnections(FbxMesh* pMesh); -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, - char * header, int pMatId, int l ); - -void DisplayMesh(FbxNode* pNode) -{ - FbxMesh* lMesh = (FbxMesh*) pNode->GetNodeAttribute (); - - DisplayString("Mesh Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMesh); - DisplayControlsPoints(lMesh); - DisplayPolygons(lMesh); - DisplayMaterialMapping(lMesh); - DisplayMaterial(lMesh); - DisplayTexture(lMesh); - DisplayMaterialConnections(lMesh); - DisplayLink(lMesh); - DisplayShape(lMesh); - - DisplayCache(lMesh); -} - - -void DisplayControlsPoints(FbxMesh* pMesh) -{ - int i, lControlPointsCount = pMesh->GetControlPointsCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - - DisplayString(" Control Points"); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - - for (int j = 0; j < pMesh->GetElementNormalCount(); j++) - { - FbxGeometryElementNormal* leNormals = pMesh->GetElementNormal( j); - if (leNormals->GetMappingMode() == FbxGeometryElement::eByControlPoint) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Normal Vector: "); - if (leNormals->GetReferenceMode() == FbxGeometryElement::eDirect) - Display3DVector(header, leNormals->GetDirectArray().GetAt(i)); - } - } - } - - DisplayString(""); -} - - -void DisplayPolygons(FbxMesh* pMesh) -{ - int i, j, lPolygonCount = pMesh->GetPolygonCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - char header[100]; - - DisplayString(" Polygons"); - - int vertexId = 0; - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - int l; - - for (l = 0; l < pMesh->GetElementPolygonGroupCount(); l++) - { - FbxGeometryElementPolygonGroup* lePolgrp = pMesh->GetElementPolygonGroup(l); - switch (lePolgrp->GetMappingMode()) - { - case FbxGeometryElement::eByPolygon: - if (lePolgrp->GetReferenceMode() == FbxGeometryElement::eIndex) - { - FBXSDK_sprintf(header, 100, " Assigned to group: "); - int polyGroupId = lePolgrp->GetIndexArray().GetAt(i); - DisplayInt(header, polyGroupId); - break; - } - default: - // any other mapping modes don't make sense - DisplayString(" \"unsupported group assignment\""); - break; - } - } - - int lPolygonSize = pMesh->GetPolygonSize(i); - - for (j = 0; j < lPolygonSize; j++) - { - int lControlPointIndex = pMesh->GetPolygonVertex(i, j); - if (lControlPointIndex < 0) - { - DisplayString(" Coordinates: Invalid index found!"); - continue; - } - else - Display3DVector(" Coordinates: ", lControlPoints[lControlPointIndex]); - - for (l = 0; l < pMesh->GetElementVertexColorCount(); l++) - { - FbxGeometryElementVertexColor* leVtxc = pMesh->GetElementVertexColor( l); - FBXSDK_sprintf(header, 100, " Color vertex: "); - - switch (leVtxc->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(lControlPointIndex); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(vertexId); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for (l = 0; l < pMesh->GetElementUVCount(); ++l) - { - FbxGeometryElementUV* leUV = pMesh->GetElementUV( l); - FBXSDK_sprintf(header, 100, " Texture UV: "); - - switch (leUV->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display2DVector(header, leUV->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leUV->GetIndexArray().GetAt(lControlPointIndex); - Display2DVector(header, leUV->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - int lTextureUVIndex = pMesh->GetTextureUVIndex(i, j); - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - case FbxGeometryElement::eIndexToDirect: - { - Display2DVector(header, leUV->GetDirectArray().GetAt(lTextureUVIndex)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for( l = 0; l < pMesh->GetElementNormalCount(); ++l) - { - FbxGeometryElementNormal* leNormal = pMesh->GetElementNormal( l); - FBXSDK_sprintf(header, 100, " Normal: "); - - if(leNormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leNormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leNormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leNormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leNormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementTangentCount(); ++l) - { - FbxGeometryElementTangent* leTangent = pMesh->GetElementTangent( l); - FBXSDK_sprintf(header, 100, " Tangent: "); - - if(leTangent->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leTangent->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leTangent->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leTangent->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leTangent->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementBinormalCount(); ++l) - { - - FbxGeometryElementBinormal* leBinormal = pMesh->GetElementBinormal( l); - - FBXSDK_sprintf(header, 100, " Binormal: "); - if(leBinormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leBinormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leBinormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leBinormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leBinormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - } - vertexId++; - } // for polygonSize - } // for polygonCount - - - //check visibility for the edges of the mesh - for(int l = 0; l < pMesh->GetElementVisibilityCount(); ++l) - { - FbxGeometryElementVisibility* leVisibility=pMesh->GetElementVisibility(l); - FBXSDK_sprintf(header, 100, " Edge Visibility : "); - DisplayString(header); - switch(leVisibility->GetMappingMode()) - { - default: - break; - //should be eByEdge - case FbxGeometryElement::eByEdge: - //should be eDirect - for(j=0; j!=pMesh->GetMeshEdgeCount();++j) - { - DisplayInt(" Edge ", j); - DisplayBool(" Edge visibility: ", leVisibility->GetDirectArray().GetAt(j)); - } - - break; - } - } - DisplayString(""); -} - -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ) -{ - int lLayeredTextureCount = pProperty.GetSrcObjectCount(); - if(lLayeredTextureCount > 0) - { - for(int j=0; j(j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - pConnectionString += " Texture "; - - for(int k =0; kGetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " on layer "; - pConnectionString += j; - } - pConnectionString += " |"; - } - else - { - //no layered texture simply get on the property - int lNbTextures = pProperty.GetSrcObjectCount(); - - if(lNbTextures > 0) - { - pConnectionString += " Texture "; - pConnectionString += " "; - - for(int j =0; j(j); - if(lTexture) - { - pConnectionString += "\""; - pConnectionString += (char*)lTexture->GetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " |"; - } - } -} - -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, char * header, int pMatId, int l ) -{ - if(!pMaterial) - return; - - FbxString lConnectionString = " Material %d -- "; - //Show all the textures - - FbxProperty lProperty; - //Diffuse Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuse); - DisplayTextureNames(lProperty, lConnectionString); - - //DiffuseFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuseFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Emissive Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissive); - DisplayTextureNames(lProperty, lConnectionString); - - //EmissiveFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissiveFactor); - DisplayTextureNames(lProperty, lConnectionString); - - - //Ambient Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbient); - DisplayTextureNames(lProperty, lConnectionString); - - //AmbientFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbientFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Specular Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecular); - DisplayTextureNames(lProperty, lConnectionString); - - //SpecularFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecularFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Shininess Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - DisplayTextureNames(lProperty, lConnectionString); - - //Bump Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sBump); - DisplayTextureNames(lProperty, lConnectionString); - - //Normal Map Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sNormalMap); - DisplayTextureNames(lProperty, lConnectionString); - - //Transparent Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparentColor); - DisplayTextureNames(lProperty, lConnectionString); - - //TransparencyFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparencyFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Reflection Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflection); - DisplayTextureNames(lProperty, lConnectionString); - - //ReflectionFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflectionFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Update header with material info - bool lStringOverflow = (lConnectionString.GetLen() + 10 >= MAT_HEADER_LENGTH); // allow for string length and some padding for "%d" - if (lStringOverflow) - { - // Truncate string! - lConnectionString = lConnectionString.Left(MAT_HEADER_LENGTH - 10); - lConnectionString = lConnectionString + "..."; - } - FBXSDK_sprintf(header, MAT_HEADER_LENGTH, lConnectionString.Buffer(), pMatId, l); - DisplayString(header); -} - -void DisplayMaterialConnections(FbxMesh* pMesh) -{ - int i, l, lPolygonCount = pMesh->GetPolygonCount(); - - char header[MAT_HEADER_LENGTH]; - - DisplayString(" Polygons Material Connections"); - - //check whether the material maps with only one mesh - bool lIsAllSame = true; - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial(l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - lIsAllSame = false; - break; - } - } - - //For eAllSame mapping type, just out the material and texture mapping info once - if(lIsAllSame) - { - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eAllSame) - { - FbxSurfaceMaterial* lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(0)); - int lMatId = lMaterialElement->GetIndexArray().GetAt(0); - if(lMatId >= 0) - { - DisplayInt(" All polygons share the same material in mesh ", l); - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - - //no material - if(l == 0) - DisplayString(" no material applied"); - } - - //For eByPolygon mapping type, just out the material and texture mapping info once - else - { - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - FbxSurfaceMaterial* lMaterial = NULL; - int lMatId = -1; - lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(i)); - lMatId = lMaterialElement->GetIndexArray().GetAt(i); - - if(lMatId >= 0) - { - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - } -} - - -void DisplayMaterialMapping(FbxMesh* pMesh) -{ - const char* lMappingTypes[] = { "None", "By Control Point", "By Polygon Vertex", "By Polygon", "By Edge", "All Same" }; - const char* lReferenceMode[] = { "Direct", "Index", "Index to Direct"}; - - int lMtrlCount = 0; - FbxNode* lNode = NULL; - if(pMesh){ - lNode = pMesh->GetNode(); - if(lNode) - lMtrlCount = lNode->GetMaterialCount(); - } - - for (int l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - FbxGeometryElementMaterial* leMat = pMesh->GetElementMaterial( l); - if (leMat) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Material Element %d: ", l); - DisplayString(header); - - - DisplayString(" Mapping: ", lMappingTypes[leMat->GetMappingMode()]); - DisplayString(" ReferenceMode: ", lReferenceMode[leMat->GetReferenceMode()]); - - int lMaterialCount = 0; - FbxString lString; - - if (leMat->GetReferenceMode() == FbxGeometryElement::eDirect || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - lMaterialCount = lMtrlCount; - } - - if (leMat->GetReferenceMode() == FbxGeometryElement::eIndex || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - int i; - - lString = " Indices: "; - - int lIndexArrayCount = leMat->GetIndexArray().GetCount(); - for (i = 0; i < lIndexArrayCount; i++) - { - lString += leMat->GetIndexArray().GetAt(i); - - if (i < lIndexArrayCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - - FBXSDK_printf(lString); - } - } - } - - DisplayString(""); -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.h deleted file mode 100644 index a86a939..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayMesh.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MESH_H -#define _DISPLAY_MESH_H - -#include "DisplayCommon.h" - -void DisplayMesh(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MESH_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.cxx deleted file mode 100644 index 60fd456..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayNurb.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayNurb(FbxNode* pNode) -{ - FbxNurbs* lNurbs = (FbxNurbs*) pNode->GetNodeAttribute (); - int i; - - DisplayString("Nurb Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lNurbs); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lNurbs->GetSurfaceMode()]); - - int lControlPointsCount = lNurbs->GetControlPointsCount(); - FbxVector4* lControlPoints = lNurbs->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lNurbTypes[] = { "Periodic", "Closed", "Open" }; - - DisplayString(" Nurb U Type: ", lNurbTypes[lNurbs->GetNurbsUType()]); - DisplayInt(" U Count: ", lNurbs->GetUCount()); - DisplayString(" Nurb V Type: ", lNurbTypes[lNurbs->GetNurbsVType()]); - DisplayInt(" V Count: ", lNurbs->GetVCount()); - DisplayInt(" U Order: ", lNurbs->GetUOrder()); - DisplayInt(" V Order: ", lNurbs->GetVOrder()); - DisplayInt(" U Step: ", lNurbs->GetUStep()); - DisplayInt(" V Step: ", lNurbs->GetVStep()); - - FbxString lString; - int lUKnotCount = lNurbs->GetUKnotCount(); - int lVKnotCount = lNurbs->GetVKnotCount(); - int lUMultiplicityCount = lNurbs->GetUCount(); - int lVMultiplicityCount = lNurbs->GetVCount(); - double* lUKnotVector = lNurbs->GetUKnotVector(); - double* lVKnotVector = lNurbs->GetVKnotVector(); - int* lUMultiplicityVector = lNurbs->GetUMultiplicityVector(); - int* lVMultiplicityVector = lNurbs->GetVMultiplicityVector(); - - lString = " U Knot Vector: "; - - for (i = 0; i < lUKnotCount; i++) - { - lString += (float) lUKnotVector[i]; - - if (i < lUKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Knot Vector: "; - - for (i = 0; i < lVKnotCount; i++) - { - lString += (float) lVKnotVector[i]; - - if (i < lVKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " U Multiplicity Vector: "; - - for (i = 0; i < lUMultiplicityCount; i++) - { - lString += lUMultiplicityVector[i]; - - if (i < lUMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Multiplicity Vector: "; - - for (i = 0; i < lVMultiplicityCount; i++) - { - lString += lVMultiplicityVector[i]; - - if (i < lVMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - DisplayString(""); - - DisplayTexture(lNurbs); - DisplayMaterial(lNurbs); - DisplayLink(lNurbs); - DisplayShape(lNurbs); - DisplayCache(lNurbs); -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.h deleted file mode 100644 index 9e9abd4..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayNurb.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_NURB_H -#define _DISPLAY_NURB_H - -#include "DisplayCommon.h" - -void DisplayNurb(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_NURB_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.cxx deleted file mode 100644 index 4ef3737..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.cxx +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPatch.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" - -void DisplayPatch(FbxNode* pNode) -{ - FbxPatch* lPatch = (FbxPatch*) pNode->GetNodeAttribute(); - - DisplayString("Patch Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lPatch); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lPatch->GetSurfaceMode()]); - - int i, lControlPointsCount = lPatch->GetControlPointsCount(); - FbxVector4* lControlPoints = lPatch->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lPatchTypes[] = { "Bezier", "Bezier Quadric", "Cardinal", "B-Spline", "Linear" }; - - DisplayString(" Patch U Type: ", lPatchTypes[lPatch->GetPatchUType()]); - DisplayInt(" U Count: ", lPatch->GetUCount()); - DisplayString(" Patch V Type: ", lPatchTypes[lPatch->GetPatchVType()]); - DisplayInt(" V Count: ", lPatch->GetVCount()); - DisplayInt(" U Step: ", lPatch->GetUStep()); - DisplayInt(" V Step: ", lPatch->GetVStep()); - DisplayBool(" U Closed: ", lPatch->GetUClosed()); - DisplayBool(" V Closed: ", lPatch->GetVClosed()); - DisplayBool(" U Capped Top: ", lPatch->GetUCappedTop()); - DisplayBool(" U Capped Bottom: ", lPatch->GetUCappedBottom()); - DisplayBool(" V Capped Top: ", lPatch->GetVCappedTop()); - DisplayBool(" V Capped Bottom: ", lPatch->GetVCappedBottom()); - - DisplayString(""); - - DisplayTexture(lPatch); - DisplayMaterial(lPatch); - DisplayLink(lPatch); - DisplayShape(lPatch); -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.h deleted file mode 100644 index c4b536e..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPatch.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PATCH_H -#define _DISPLAY_PATCH_H - -#include "DisplayCommon.h" - -void DisplayPatch(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PATCH_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx deleted file mode 100644 index 0c7597f..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -void DisplayPivotsAndLimits(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - // - // Pivots - // - FBXSDK_printf(" Pivot Information\n"); - - FbxNode::EPivotState lPivotState; - pNode->GetPivotState(FbxNode::eSourcePivot, lPivotState); - FBXSDK_printf(" Pivot State: %s\n", lPivotState == FbxNode::ePivotActive ? "Active" : "Reference"); - - lTmpVector = pNode->GetPreRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Pre-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetPostRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Post-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Limits - // - bool lIsActive, lMinXActive, lMinYActive, lMinZActive; - bool lMaxXActive, lMaxYActive, lMaxZActive; - FbxDouble3 lMinValues, lMaxValues; - - FBXSDK_printf(" Limits Information\n"); - - lIsActive = pNode->TranslationActive; - lMinXActive = pNode->TranslationMinX; - lMinYActive = pNode->TranslationMinY; - lMinZActive = pNode->TranslationMinZ; - lMaxXActive = pNode->TranslationMaxX; - lMaxYActive = pNode->TranslationMaxY; - lMaxZActive = pNode->TranslationMaxZ; - lMinValues = pNode->TranslationMin; - lMaxValues = pNode->TranslationMax; - - FBXSDK_printf(" Translation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->RotationActive; - lMinXActive = pNode->RotationMinX; - lMinYActive = pNode->RotationMinY; - lMinZActive = pNode->RotationMinZ; - lMaxXActive = pNode->RotationMaxX; - lMaxYActive = pNode->RotationMaxY; - lMaxZActive = pNode->RotationMaxZ; - lMinValues = pNode->RotationMin; - lMaxValues = pNode->RotationMax; - - FBXSDK_printf(" Rotation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->ScalingActive; - lMinXActive = pNode->ScalingMinX; - lMinYActive = pNode->ScalingMinY; - lMinZActive = pNode->ScalingMinZ; - lMaxXActive = pNode->ScalingMaxX; - lMaxYActive = pNode->ScalingMaxY; - lMaxZActive = pNode->ScalingMaxZ; - lMinValues = pNode->ScalingMin; - lMaxValues = pNode->ScalingMax; - - FBXSDK_printf(" Scaling limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h deleted file mode 100644 index fcb24e6..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PIVOTS_AND_LIMITS_H -#define _DISPLAY_PIVOTS_AND_LIMITS_H - -#include "DisplayCommon.h" - -void DisplayPivotsAndLimits(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PIVOTS_AND_LIMITS_H - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.cxx deleted file mode 100644 index 43b91b9..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.cxx +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPose.h" - -void DisplayPose(FbxScene* pScene) -{ - int i,j,k,lPoseCount; - FbxString lName; - - lPoseCount = pScene->GetPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxPose* lPose = pScene->GetPose(i); - - lName = lPose->GetName(); - DisplayString("Pose Name: ", lName.Buffer()); - - DisplayBool(" Is a bind pose: ", lPose->IsBindPose()); - - DisplayInt(" Number of items in the pose: ", lPose->GetCount()); - - DisplayString("",""); - - for (j=0; jGetCount(); j++) - { - lName = lPose->GetNodeName(j).GetCurrentName(); - DisplayString(" Item name: ", lName.Buffer()); - - if (!lPose->IsBindPose()) - { - // Rest pose can have local matrix - DisplayBool(" Is local space matrix: ", lPose->IsLocalMatrix(j)); - } - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxMatrix lMatrix = lPose->GetMatrix(j); - FbxVector4 lRow = lMatrix.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - } - } - - lPoseCount = pScene->GetCharacterPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxCharacterPose* lPose = pScene->GetCharacterPose(i); - FbxCharacter* lCharacter = lPose->GetCharacter(); - - if (!lCharacter) break; - - DisplayString("Character Pose Name: ", lCharacter->GetName()); - - FbxCharacterLink lCharacterLink; - FbxCharacter::ENodeId lNodeId = FbxCharacter::eHips; - - while (lCharacter->GetCharacterLink(lNodeId, &lCharacterLink)) - { - FbxAMatrix& lGlobalPosition = lCharacterLink.mNode->EvaluateGlobalTransform(FBXSDK_TIME_ZERO); - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxVector4 lRow = lGlobalPosition.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - - lNodeId = FbxCharacter::ENodeId(int(lNodeId) + 1); - } - } -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.h deleted file mode 100644 index 9865063..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayPose.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_POSE_H -#define _DISPLAY_POSE_H - -#include "DisplayCommon.h" - -void DisplayPose(FbxScene* pScene); - -#endif // #ifndef _DISPLAY_POSE_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.cxx deleted file mode 100644 index 50a138e..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry) -{ - int lBlendShapeCount, lBlendShapeChannelCount, lTargetShapeCount; - FbxBlendShape* lBlendShape; - FbxBlendShapeChannel* lBlendShapeChannel; - FbxShape* lShape; - - lBlendShapeCount = pGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - - for (int lBlendShapeIndex = 0; lBlendShapeIndex < lBlendShapeCount; ++lBlendShapeIndex) - { - lBlendShape = (FbxBlendShape*) pGeometry->GetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - DisplayString(" BlendShape ", (char *) lBlendShape->GetName()); - - lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lBlendShapeChannelIndex = 0; lBlendShapeChannelIndex < lBlendShapeChannelCount; ++lBlendShapeChannelIndex) - { - lBlendShapeChannel = lBlendShape->GetBlendShapeChannel(lBlendShapeChannelIndex); - DisplayString(" BlendShapeChannel ", (char *) lBlendShapeChannel->GetName()); - DisplayDouble(" Default Deform Value: ", lBlendShapeChannel->DeformPercent.Get()); - - lTargetShapeCount = lBlendShapeChannel->GetTargetShapeCount(); - for (int lTargetShapeIndex = 0; lTargetShapeIndex < lTargetShapeCount; ++lTargetShapeIndex) - { - lShape = lBlendShapeChannel->GetTargetShape(lTargetShapeIndex); - DisplayString(" TargetShape ", (char *) lShape->GetName()); - - int j, lControlPointsCount = lShape->GetControlPointsCount(); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - FbxLayerElementArrayTemplate* lNormals = NULL; - bool lStatus = lShape->GetNormals(&lNormals); - - for(j = 0; j < lControlPointsCount; j++) - { - DisplayInt(" Control Point ", j); - Display3DVector(" Coordinates: ", lControlPoints[j]); - - if (lStatus && lNormals && lNormals->GetCount() == lControlPointsCount) - { - Display3DVector(" Normal Vector: ", lNormals->GetAt(j)); - } - } - - DisplayString(""); - } - } - } -} - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.h deleted file mode 100644 index 90a58a8..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayShape.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SHAPE_H -#define _DISPLAY_SHAPE_H - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_SHAPE_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.cxx deleted file mode 100644 index 56c8834..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - DisplayString("Skeleton Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lSkeleton); - - const char* lSkeletonTypes[] = { "Root", "Limb", "Limb Node", "Effector" }; - - DisplayString(" Type: ", lSkeletonTypes[lSkeleton->GetSkeletonType()]); - - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimb) - { - DisplayDouble(" Limb Length: ", lSkeleton->LimbLength.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode) - { - DisplayDouble(" Limb Node Size: ", lSkeleton->Size.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eRoot) - { - DisplayDouble(" Limb Root Size: ", lSkeleton->Size.Get()); - } - - DisplayColor(" Color: ", lSkeleton->GetLimbNodeColor()); -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.h deleted file mode 100644 index 87c02aa..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplaySkeleton.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SKELETON_H -#define _DISPLAY_SKELETON_H - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_SKELETON_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.cxx deleted file mode 100644 index 3e3a1ab..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.cxx +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode) -{ - FbxFileTexture *lFileTexture = FbxCast(pTexture); - FbxProceduralTexture *lProceduralTexture = FbxCast(pTexture); - - DisplayString(" Name: \"", (char *) pTexture->GetName(), "\""); - if (lFileTexture) - { - DisplayString(" Type: File Texture"); - DisplayString(" File Name: \"", (char *) lFileTexture->GetFileName(), "\""); - } - else if (lProceduralTexture) - { - DisplayString(" Type: Procedural Texture"); - } - DisplayDouble(" Scale U: ", pTexture->GetScaleU()); - DisplayDouble(" Scale V: ", pTexture->GetScaleV()); - DisplayDouble(" Translation U: ", pTexture->GetTranslationU()); - DisplayDouble(" Translation V: ", pTexture->GetTranslationV()); - DisplayBool(" Swap UV: ", pTexture->GetSwapUV()); - DisplayDouble(" Rotation U: ", pTexture->GetRotationU()); - DisplayDouble(" Rotation V: ", pTexture->GetRotationV()); - DisplayDouble(" Rotation W: ", pTexture->GetRotationW()); - - const char* lAlphaSources[] = { "None", "RGB Intensity", "Black" }; - - DisplayString(" Alpha Source: ", lAlphaSources[pTexture->GetAlphaSource()]); - DisplayDouble(" Cropping Left: ", pTexture->GetCroppingLeft()); - DisplayDouble(" Cropping Top: ", pTexture->GetCroppingTop()); - DisplayDouble(" Cropping Right: ", pTexture->GetCroppingRight()); - DisplayDouble(" Cropping Bottom: ", pTexture->GetCroppingBottom()); - - const char* lMappingTypes[] = { "Null", "Planar", "Spherical", "Cylindrical", - "Box", "Face", "UV", "Environment" }; - - DisplayString(" Mapping Type: ", lMappingTypes[pTexture->GetMappingType()]); - - if (pTexture->GetMappingType() == FbxTexture::ePlanar) - { - const char* lPlanarMappingNormals[] = { "X", "Y", "Z" }; - - DisplayString(" Planar Mapping Normal: ", lPlanarMappingNormals[pTexture->GetPlanarMappingNormal()]); - } - - const char* lBlendModes[] = { "Translucent", "Additive", "Modulate", "Modulate2", "Over", "Normal", "Dissolve", "Darken", "ColorBurn", "LinearBurn", - "DarkerColor", "Lighten", "Screen", "ColorDodge", "LinearDodge", "LighterColor", "SoftLight", "HardLight", "VividLight", - "LinearLight", "PinLight", "HardMix", "Difference", "Exclusion", "Substract", "Divide", "Hue", "Saturation", "Color", - "Luminosity", "Overlay"}; - - if(pBlendMode >= 0) - DisplayString(" Blend Mode: ", lBlendModes[pBlendMode]); - DisplayDouble(" Alpha: ", pTexture->GetDefaultAlpha()); - - if (lFileTexture) - { - const char* lMaterialUses[] = { "Model Material", "Default Material" }; - DisplayString(" Material Use: ", lMaterialUses[lFileTexture->GetMaterialUse()]); - } - - const char* pTextureUses[] = { "Standard", "Shadow Map", "Light Map", - "Spherical Reflexion Map", "Sphere Reflexion Map", "Bump Normal Map" }; - - DisplayString(" Texture Use: ", pTextureUses[pTexture->GetTextureUse()]); - DisplayString(""); - -} - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex){ - - if( pProperty.IsValid() ) - { - int lTextureCount = pProperty.GetSrcObjectCount(); - - for (int j = 0; j < lTextureCount; ++j) - { - //Here we have to check if it's layeredtextures, or just textures: - FbxLayeredTexture *lLayeredTexture = pProperty.GetSrcObject(j); - if (lLayeredTexture) - { - DisplayInt(" Layered Texture: ", j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - for(int k =0; kGetSrcObject(k); - if(lTexture) - { - - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - //NOTE the blend mode is ALWAYS on the LayeredTexture and NOT the one on the texture. - //Why is that? because one texture can be shared on different layered textures and might - //have different blend modes. - - FbxLayeredTexture::EBlendMode lBlendMode; - lLayeredTexture->GetTextureBlendMode(k, lBlendMode); - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", k); - DisplayTextureInfo(lTexture, (int) lBlendMode); - } - - } - } - else - { - //no layered texture simply get on the property - FbxTexture* lTexture = pProperty.GetSrcObject(j); - if(lTexture) - { - //display connected Material header only at the first time - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", j); - DisplayTextureInfo(lTexture, -1); - } - } - } - }//end if pProperty - -} - - -void DisplayTexture(FbxGeometry* pGeometry) -{ - int lMaterialIndex; - FbxProperty lProperty; - if(pGeometry->GetNode()==NULL) - return; - int lNbMat = pGeometry->GetNode()->GetSrcObjectCount(); - for (lMaterialIndex = 0; lMaterialIndex < lNbMat; lMaterialIndex++){ - FbxSurfaceMaterial *lMaterial = pGeometry->GetNode()->GetSrcObject(lMaterialIndex); - bool lDisplayHeader = true; - - //go through all the possible textures - if(lMaterial){ - - int lTextureIndex; - FBXSDK_FOR_EACH_TEXTURE(lTextureIndex) - { - lProperty = lMaterial->FindProperty(FbxLayerElement::sTextureChannelNames[lTextureIndex]); - FindAndDisplayTextureInfoByProperty(lProperty, lDisplayHeader, lMaterialIndex); - } - - }//end if(lMaterial) - - }// end for lMaterialIndex -} diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.h deleted file mode 100644 index 370260b..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayTexture.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_TEXTURE_H -#define _DISPLAY_TEXTURE_H - -#include "DisplayCommon.h" - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex); -void DisplayTexture(FbxGeometry* pGeometry); -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode); - -#endif // #ifndef _DISPLAY_TEXTURE_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.cxx b/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.cxx deleted file mode 100644 index 87405b2..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.cxx +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayUserProperties.h" - -void DisplayUserProperties(FbxObject* pObject) -{ - int lCount = 0; - FbxString lTitleStr = " Property Count: "; - - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - lCount++; - - lProperty = pObject->GetNextProperty(lProperty); - } - - if (lCount == 0) - return; // there are no user properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - lProperty = pObject->GetFirstProperty(); - int i = 0; - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - DisplayInt(" Property ", i); - FbxString lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - DisplayString(" Type: ", lProperty.GetPropertyDataType().GetName()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - FbxDataType lPropertyDataType=lProperty.GetPropertyDataType(); - - // BOOL - if (lPropertyDataType.GetType() == eFbxBool) - { - DisplayBool(" Default Value: ", lProperty.Get()); - } - // REAL - else if (lPropertyDataType.GetType() == eFbxDouble || lPropertyDataType.GetType() == eFbxFloat) - { - DisplayDouble(" Default Value: ", lProperty.Get()); - } - // COLOR - else if (lPropertyDataType.Is(FbxColor3DT) || lPropertyDataType.Is(FbxColor4DT)) - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - // INTEGER - else if (lPropertyDataType.GetType() == eFbxInt) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // VECTOR - else if(lPropertyDataType.GetType() == eFbxDouble3 || lPropertyDataType.GetType() == eFbxDouble4) - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - // LIST - else if (lPropertyDataType.GetType() == eFbxEnum) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // UNIDENTIFIED - else - { - DisplayString(" Default Value: UNIDENTIFIED"); - } - i++; - } - - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.h b/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.h deleted file mode 100644 index e700645..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/DisplayUserProperties.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_USER_PROPERTIES_H -#define _DISPLAY_USER_PROPERTIES_H - -#include "DisplayCommon.h" - -void DisplayUserProperties(FbxObject* pObject); - -#endif // #ifndef _DISPLAY_USER_PROPERTIES_H - - diff --git a/sdk/Darwin/2019.2/samples/ImportScene/main.cxx b/sdk/Darwin/2019.2/samples/ImportScene/main.cxx deleted file mode 100644 index f240580..0000000 --- a/sdk/Darwin/2019.2/samples/ImportScene/main.cxx +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to detect if a scene is password -// protected, import and browse the scene to access node and animation -// information. It displays the content of the FBX file which name is -// passed as program argument. You can try it with the various FBX files -// output by the export examples. -// -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" -#include "DisplayCommon.h" -#include "DisplayHierarchy.h" -#include "DisplayAnimation.h" -#include "DisplayMarker.h" -#include "DisplaySkeleton.h" -#include "DisplayMesh.h" -#include "DisplayNurb.h" -#include "DisplayPatch.h" -#include "DisplayLodGroup.h" -#include "DisplayCamera.h" -#include "DisplayLight.h" -#include "DisplayGlobalSettings.h" -#include "DisplayPose.h" -#include "DisplayPivotsAndLimits.h" -#include "DisplayUserProperties.h" -#include "DisplayGenericInfo.h" - -// Local function prototypes. -void DisplayContent(FbxScene* pScene); -void DisplayContent(FbxNode* pNode); -void DisplayTarget(FbxNode* pNode); -void DisplayTransformPropagation(FbxNode* pNode); -void DisplayGeometricTransform(FbxNode* pNode); -void DisplayMetaData(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - // Load the scene. - - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - if( lFilePath.IsEmpty() ) - { - lResult = false; - FBXSDK_printf("\n\nUsage: ImportScene \n\n"); - } - else - { - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - } - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - // Display the scene. - DisplayMetaData(lScene); - - FBXSDK_printf("\n\n---------------------\nGlobal Light Settings\n---------------------\n\n"); - - if( gVerbose ) DisplayGlobalLightSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n----------------------\nGlobal Camera Settings\n----------------------\n\n"); - - if( gVerbose ) DisplayGlobalCameraSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n--------------------\nGlobal Time Settings\n--------------------\n\n"); - - if( gVerbose ) DisplayGlobalTimeSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n---------\nHierarchy\n---------\n\n"); - - if( gVerbose ) DisplayHierarchy(lScene); - - FBXSDK_printf("\n\n------------\nNode Content\n------------\n\n"); - - if( gVerbose ) DisplayContent(lScene); - - FBXSDK_printf("\n\n----\nPose\n----\n\n"); - - if( gVerbose ) DisplayPose(lScene); - - FBXSDK_printf("\n\n---------\nAnimation\n---------\n\n"); - - if( gVerbose ) DisplayAnimation(lScene); - - //now display generic information - - FBXSDK_printf("\n\n---------\nGeneric Information\n---------\n\n"); - if( gVerbose ) DisplayGenericInfo(lScene); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void DisplayContent(FbxScene* pScene) -{ - int i; - FbxNode* lNode = pScene->GetRootNode(); - - if(lNode) - { - for(i = 0; i < lNode->GetChildCount(); i++) - { - DisplayContent(lNode->GetChild(i)); - } - } -} - -void DisplayContent(FbxNode* pNode) -{ - FbxNodeAttribute::EType lAttributeType; - int i; - - if(pNode->GetNodeAttribute() == NULL) - { - FBXSDK_printf("NULL Node Attribute\n\n"); - } - else - { - lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType()); - - switch (lAttributeType) - { - default: - break; - case FbxNodeAttribute::eMarker: - DisplayMarker(pNode); - break; - - case FbxNodeAttribute::eSkeleton: - DisplaySkeleton(pNode); - break; - - case FbxNodeAttribute::eMesh: - DisplayMesh(pNode); - break; - - case FbxNodeAttribute::eNurbs: - DisplayNurb(pNode); - break; - - case FbxNodeAttribute::ePatch: - DisplayPatch(pNode); - break; - - case FbxNodeAttribute::eCamera: - DisplayCamera(pNode); - break; - - case FbxNodeAttribute::eLight: - DisplayLight(pNode); - break; - - case FbxNodeAttribute::eLODGroup: - DisplayLodGroup(pNode); - break; - } - } - - DisplayUserProperties(pNode); - DisplayTarget(pNode); - DisplayPivotsAndLimits(pNode); - DisplayTransformPropagation(pNode); - DisplayGeometricTransform(pNode); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayContent(pNode->GetChild(i)); - } -} - - -void DisplayTarget(FbxNode* pNode) -{ - if(pNode->GetTarget() != NULL) - { - DisplayString(" Target Name: ", (char *) pNode->GetTarget()->GetName()); - } -} - -void DisplayTransformPropagation(FbxNode* pNode) -{ - FBXSDK_printf(" Transformation Propagation\n"); - - // - // Rotation Space - // - EFbxRotationOrder lRotationOrder; - pNode->GetRotationOrder(FbxNode::eSourcePivot, lRotationOrder); - - FBXSDK_printf(" Rotation Space: "); - - switch (lRotationOrder) - { - case eEulerXYZ: - FBXSDK_printf("Euler XYZ\n"); - break; - case eEulerXZY: - FBXSDK_printf("Euler XZY\n"); - break; - case eEulerYZX: - FBXSDK_printf("Euler YZX\n"); - break; - case eEulerYXZ: - FBXSDK_printf("Euler YXZ\n"); - break; - case eEulerZXY: - FBXSDK_printf("Euler ZXY\n"); - break; - case eEulerZYX: - FBXSDK_printf("Euler ZYX\n"); - break; - case eSphericXYZ: - FBXSDK_printf("Spheric XYZ\n"); - break; - } - - // - // Use the Rotation space only for the limits - // (keep using eEulerXYZ for the rest) - // - FBXSDK_printf(" Use the Rotation Space for Limit specification only: %s\n", - pNode->GetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot) ? "Yes" : "No"); - - - // - // Inherit Type - // - FbxTransform::EInheritType lInheritType; - pNode->GetTransformationInheritType(lInheritType); - - FBXSDK_printf(" Transformation Inheritance: "); - - switch (lInheritType) - { - case FbxTransform::eInheritRrSs: - FBXSDK_printf("RrSs\n"); - break; - case FbxTransform::eInheritRSrs: - FBXSDK_printf("RSrs\n"); - break; - case FbxTransform::eInheritRrs: - FBXSDK_printf("Rrs\n"); - break; - } -} - -void DisplayGeometricTransform(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - FBXSDK_printf(" Geometric Transformations\n"); - - // - // Translation - // - lTmpVector = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - FBXSDK_printf(" Translation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Rotation - // - lTmpVector = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Scaling - // - lTmpVector = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); -} - - -void DisplayMetaData(FbxScene* pScene) -{ - FbxDocumentInfo* sceneInfo = pScene->GetSceneInfo(); - if (sceneInfo) - { - FBXSDK_printf("\n\n--------------------\nMeta-Data\n--------------------\n\n"); - FBXSDK_printf(" Title: %s\n", sceneInfo->mTitle.Buffer()); - FBXSDK_printf(" Subject: %s\n", sceneInfo->mSubject.Buffer()); - FBXSDK_printf(" Author: %s\n", sceneInfo->mAuthor.Buffer()); - FBXSDK_printf(" Keywords: %s\n", sceneInfo->mKeywords.Buffer()); - FBXSDK_printf(" Revision: %s\n", sceneInfo->mRevision.Buffer()); - FBXSDK_printf(" Comment: %s\n", sceneInfo->mComment.Buffer()); - - FbxThumbnail* thumbnail = sceneInfo->GetSceneThumbnail(); - if (thumbnail) - { - FBXSDK_printf(" Thumbnail:\n"); - - switch (thumbnail->GetDataFormat()) - { - case FbxThumbnail::eRGB_24: - FBXSDK_printf(" Format: RGB\n"); - break; - case FbxThumbnail::eRGBA_32: - FBXSDK_printf(" Format: RGBA\n"); - break; - } - - switch (thumbnail->GetSize()) - { - default: - break; - case FbxThumbnail::eNotSet: - FBXSDK_printf(" Size: no dimensions specified (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e64x64: - FBXSDK_printf(" Size: 64 x 64 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e128x128: - FBXSDK_printf(" Size: 128 x 128 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - } - } - } -} - diff --git a/sdk/Darwin/2019.2/samples/Instances/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Instances/CMakeLists.txt deleted file mode 100644 index 9728cbb..0000000 --- a/sdk/Darwin/2019.2/samples/Instances/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Instances .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Darwin/2019.2/samples/Instances/main.cxx b/sdk/Darwin/2019.2/samples/Instances/main.cxx deleted file mode 100644 index a73c19d..0000000 --- a/sdk/Darwin/2019.2/samples/Instances/main.cxx +++ /dev/null @@ -1,440 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/****************************************************************************/ -/* This example shows how to instanciate meshes and curves in FBX. */ -/* - Create a cube */ -/* - Create instances of this cube (new nodes that point to the same mesh) */ -/* - Apply the same materials to the polygons of these cubes */ -/* - Create an animation curve */ -/* - Animate all cubes using the same animation curve. */ -/****************************************************************************/ - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Instances.fbx" -#define SAMPLE_INSTANCE_COUNT 10 - -// Globals -int gNbCubes = -1; -FbxDouble3 gRed(1.0, 0.0, 0.0); -FbxDouble3 gGreen(0.0, 1.0, 0.0); -FbxDouble3 gBlue(0.0, 0.0, 1.0); -FbxDouble3 gGray(0.5, 0.5, 0.5); -FbxDouble3 gWhite(1.0, 1.0, 1.0); - -FbxSurfacePhong* gMatWhite; -FbxSurfacePhong* gMatGray; -FbxSurfacePhong* gMatRed; -FbxSurfacePhong* gMatGreen; -FbxSurfacePhong* gMatBlue; - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube); -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor); -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene); -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an output file name as an argument, and a cube number. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if ( gNbCubes < 1 ) gNbCubes = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - if( gNbCubes < 1 ) gNbCubes = SAMPLE_INSTANCE_COUNT; - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Initial cube position - double lX = 0.0; - double lY = 20.0; - double lZ = 0.0; - - // Create global materials - gMatWhite = CreateMaterial(pScene, gWhite); - gMatGray = CreateMaterial(pScene, gGray); - gMatRed = CreateMaterial(pScene, gRed); - gMatGreen = CreateMaterial(pScene, gGreen); - gMatBlue = CreateMaterial(pScene, gBlue); - - FbxMesh* lCubeMesh = NULL; - FbxNode* lCubeNode = NULL; - - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Cube Animation Stack"); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - for (int i = 0; i < gNbCubes; i++) - { - FbxString lCubeName = "Cube "; - lCubeName += (i+1); - - if (i == 0) - { - // Create first cube - lCubeNode = CreateCube(pScene, lCubeName.Buffer()); - lCubeMesh = lCubeNode->GetMesh(); - } - else - { - // Create cube instance - lCubeNode = CreateCubeInstance(pScene, lCubeName.Buffer(), lCubeMesh); - } - - // set the cube position - lCubeNode->LclTranslation.Set(FbxVector4(lX, lY, lZ)); - - // Animate cube - // Create an animation curve for each node. - FbxAnimCurve* lAnimCurve = CreateAnimCurve(pScene); - AnimateCube(lCubeNode, lAnimLayer, lAnimCurve, i%3); - // alternate sides of X - if (lX >= 0) - { - lX += 50; - } - else - { - lX -= 50; - } - lX *= -1.0; - lY += 30.0; - } - - return true; -} - - -// The cube rotates around X, Y or Z. -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis) -{ - FbxAnimCurveNode *lCurveNode = pCube->LclRotation.GetCurveNode(pAnimLayer, true); - - // Find out which channel to animate: rotate around X axis, Y axis, or Z axis. - if(pRotAxis == 0) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_X); - } - else if(pRotAxis == 1) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Y); - } - else if(pRotAxis == 2) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Z); - } -} - -// Create a cube with a fresh new mesh, and add it to the scene. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - // Set the normals on Layer 0. - FbxLayer* lLayer = lMesh->GetLayer(0); - if (lLayer == NULL) - { - lMesh->CreateLayer(); - lLayer = lMesh->GetLayer(0); - } - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxLayerElementNormal* lLayerElementNormal= FbxLayerElementNormal::Create(lMesh, ""); - - lLayerElementNormal->SetMappingMode(FbxLayerElement::eByControlPoint); - - // Set the normal values for every control point. - lLayerElementNormal->SetReferenceMode(FbxLayerElement::eDirect); - - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - - lLayer->SetNormals(lLayerElementNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - - - // Create UV for Diffuse channel. - FbxLayerElementUV* lUVDiffuseLayer = FbxLayerElementUV::Create(lMesh, "DiffuseUV"); - lUVDiffuseLayer->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lUVDiffuseLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetUVs(lUVDiffuseLayer, FbxLayerElement::eTextureDiffuse); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseLayer->GetDirectArray().Add(lVectors0); - lUVDiffuseLayer->GetDirectArray().Add(lVectors1); - lUVDiffuseLayer->GetDirectArray().Add(lVectors2); - lUVDiffuseLayer->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseLayer->GetIndexArray().SetCount(24); - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(j = 0; j < 4; j++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i*4 + j]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseLayer->GetIndexArray().SetAt(i*4+j, j); - } - - lMesh->EndPolygon (); - } - - // Set material indices - FbxLayerElementMaterial* lMaterialLayer = FbxLayerElementMaterial::Create(lMesh, "MaterialIndices"); - lMaterialLayer->SetMappingMode(FbxLayerElement::eByPolygon); - lMaterialLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetMaterials(lMaterialLayer); - - for (i = 0; i < 6; i++) - { - // the i-th material on FbxNode is applied to the i-th polygon - lMaterialLayer->GetIndexArray().Add(i); - } - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a cube instance with the given mesh as node attribute, and add it to the scene. -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube) -{ - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(pFirstCube); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - if (pFirstCube->GetNodeCount() % 2 == 0) - { - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - } - else - { - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - } - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a material that will be applied to a polygon -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor) -{ - // Create material - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene, "Polygon Material"); - - // Set its diffuse color - lMaterial->Diffuse.Set(pColor); - - return lMaterial; -} - -// Create a single animation curve that will be used by all cubes. -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene) -{ - FbxTime lTime; - int lKeyIndex = 0; - - // Create curve - FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - - // Add keys to the curve - lAnimCurve->KeyModifyBegin(); - - // First key: time 0, value 0 - lTime.SetSecondDouble(0.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - // Second key: time 20s, value -3600 - // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. - lTime.SetSecondDouble(20.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - - // Done adding keys. - lAnimCurve->KeyModifyEnd(); - - return lAnimCurve; -} - diff --git a/sdk/Darwin/2019.2/samples/Layers/1.jpg b/sdk/Darwin/2019.2/samples/Layers/1.jpg deleted file mode 100644 index 7ae1969..0000000 --- a/sdk/Darwin/2019.2/samples/Layers/1.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a273bfe3c0664b39bfeeebb94a923c766217dad1badb33f664dac365de288558 -size 8071 diff --git a/sdk/Darwin/2019.2/samples/Layers/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Layers/CMakeLists.txt deleted file mode 100644 index be9ba97..0000000 --- a/sdk/Darwin/2019.2/samples/Layers/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Layers .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/Layers/main.cxx b/sdk/Darwin/2019.2/samples/Layers/main.cxx deleted file mode 100644 index 951eb7b..0000000 --- a/sdk/Darwin/2019.2/samples/Layers/main.cxx +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cube with Layered textures and -// with materials mapped on it's faces. -// -// This sample illustrates how to use the following Elements: -// - Normal -// - Material -// - UVs -// - Vertex Color -// - Polygon Group -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Layers.fbx" -#define BACKGROUND_IMAGE_NAME "Spotty" -#define BACKGROUND_IMAGE "spotty.jpg" -#define GEO1_IMAGE_NAME "One" -#define GEO1_IMAGE "1.jpg" -#define GEO2_IMAGE_NAME "Waffle" -#define GEO2_IMAGE "waffle.jpg" - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // 2 uvs - static Vector2 lUVs0[14] = { - { 0.0, 0.0}, - { 1.0, 0.0}, - { 0.0, 1.0}, - { 1.0, 1.0}, - { 0.0, 2.0}, - { 1.0, 2.0}, - { 0.0, 3.0}, - { 1.0, 3.0}, - { 0.0, 4.0}, - { 1.0, 4.0}, - { 2.0, 0.0}, - { 2.0, 1.0}, - {-1.0, 0.0}, - {-1.0, 1.0} - }; - - static Vector2 lUVs1[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // colors - static Vector4 lColors[8] = { - // colors used for the materials - {1.0, 1.0, 1.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}, - {1.0, 0.0, 1.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 0.0, 1.0}, - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(f);//Material index. - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // create color vertices - /* We choose to define one color per control point. The other choice would - have been to use the eByPolygonVertex mapping mode. In this second case, - the reference mode should become eIndexToDirect. - */ - FbxGeometryElementVertexColor* lVertexColorElement = lMesh->CreateElementVertexColor(); - lVertexColorElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lVertexColorElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int c=0; c<8; c++) - lVertexColorElement->GetDirectArray().Add(FbxColor(lColors[c][0]*.8, lColors[c][1]*0.8, lColors[c][2]*.8, lColors[c][3]*.8)); - - - - // create polygroups. - /* We are going to make a first group with the 4 sides. - And a second group with the top and bottom sides. - - NOTE that the only reference mode allowed is eIndex - */ - FbxGeometryElementPolygonGroup* lPolygonGroupElement = lMesh->CreateElementPolygonGroup(); - lPolygonGroupElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lPolygonGroupElement->SetReferenceMode(FbxGeometryElement::eIndex); - lPolygonGroupElement->GetIndexArray().Add(0); // front face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // right side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // back face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // left side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(1); // bottom face assigned to group 1 - lPolygonGroupElement->GetIndexArray().Add(1); // top face assigned to group 1 - - - // create the UV textures mapping. - FbxTexture* lTexture[3]; - FbxLayeredTexture::EBlendMode lBlendMode[3]; - - // On layer 0 all the faces have the same texture - FbxGeometryElementUV* lUVElement0 = lMesh->CreateElementUV( BACKGROUND_IMAGE_NAME); - FBX_ASSERT( lUVElement0 != NULL); - lUVElement0->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement0->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - int i; - for (i = 0; i<14; i++) - lUVElement0->GetDirectArray().Add(FbxVector2(lUVs0[i][0], lUVs0[i][1])); - - for (i = 0; i<24; i++) - lUVElement0->GetIndexArray().Add(uvsId[i]); - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - - // Put a different material on each polygon - FbxSurfacePhong* lMaterial[6]; - for (i = 0; i < 6; i++ ) - { - FbxString lMaterialName = "material"; - lMaterialName += i; - - lMaterial[i] = FbxSurfacePhong::Create(pScene,lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial[i]->Emissive.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->Ambient.Set(FbxDouble3(lColors[i][0], lColors[i][1], lColors[i][2])); - lMaterial[i]->Diffuse.Set(FbxDouble3(1.0, 1.0, 1.0)); - lMaterial[i]->Specular.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->TransparencyFactor.Set(0.0); - lMaterial[i]->Shininess.Set(0.5); - lMaterial[i]->ShadingModel.Set(FbxString("phong")); - - // add materials to the node - lNode->AddMaterial(lMaterial[i]); - } - - // Create textures and texture mappings. - lTexture[0] = CreateTexture(pScene, BACKGROUND_IMAGE_NAME, BACKGROUND_IMAGE); - - lBlendMode[0] = FbxLayeredTexture::eTranslucent; - - // create second UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV( GEO1_IMAGE_NAME); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs1[i][0], lUVs1[i][1])); - - for (i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - lTexture[1] = CreateTexture(pScene, GEO1_IMAGE_NAME, GEO1_IMAGE); - lBlendMode[1] = FbxLayeredTexture::eModulate; - - - - FbxGeometryElementUV* lUVElement2 = lMesh->CreateElementUV( GEO2_IMAGE_NAME); - FBX_ASSERT( lUVElement2 != NULL); - // we re-use the UV mapping. - *lUVElement2 = *lUVElement0; - - lTexture[2] = CreateTexture(pScene, GEO2_IMAGE_NAME, GEO2_IMAGE); - - lBlendMode[2] = FbxLayeredTexture::eModulate; - - // Because we can only connect one texture to the material propery, we need - // to use a layered texture object to connect the multiple textures created above - // we know that 5 faces of the cube will use 2 textures (lTexture[0] and lTexture[1]) - // and only one face uses the three textures. Therefore we need two layered textures. - - FbxLayeredTexture* lLayeredTexture[2]; - - // the lLayeredTexure[1] is used for the 5 faces with two textures and lLayeredTexture[0] for - // the only face that uses the three textures - lLayeredTexture[0] = FbxLayeredTexture::Create(pScene, "layeredTexture0"); - lLayeredTexture[1] = FbxLayeredTexture::Create(pScene, "layeredTexture1"); - - // the first connected texture is the bottom one! - for (i = 0; i < 3; i++) - { - lLayeredTexture[0]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[0]->SetTextureBlendMode(i, lBlendMode[i]); - if (i < 2) - { - lLayeredTexture[1]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[1]->SetTextureBlendMode(i, lBlendMode[i]); - } - } - - // connect the layered textures to the 6 materials allocated before (material[0] is the - // material connected to the face 0 of the cube so it is the one that will have lLayeredTexture[0]. - lMaterial[0]->Diffuse.ConnectSrcObject(lLayeredTexture[0]); - for (i = 1; i < 6; i++) - lMaterial[i]->Diffuse.ConnectSrcObject(lLayeredTexture[1]); - - return lNode; -} - - -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,name); - lTexture->SetFileName(filename); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - return lTexture; -} diff --git a/sdk/Darwin/2019.2/samples/Layers/spotty.jpg b/sdk/Darwin/2019.2/samples/Layers/spotty.jpg deleted file mode 100644 index dd038e3..0000000 --- a/sdk/Darwin/2019.2/samples/Layers/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Darwin/2019.2/samples/Layers/waffle.jpg b/sdk/Darwin/2019.2/samples/Layers/waffle.jpg deleted file mode 100644 index d49e33b..0000000 --- a/sdk/Darwin/2019.2/samples/Layers/waffle.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f7ecae4205d129fbdb98c9c82cb6f8480753bbfc9a951ad1c38dd13653bad95 -size 23416 diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx deleted file mode 100644 index 7844985..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnReader.h" - -MyOwnReader::MyOwnReader(FbxManager &pManager, int pID): -FbxReader(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ -} - -MyOwnReader::~MyOwnReader() -{ - FileClose(); -} - -void MyOwnReader::GetVersion(int& pMajor, int& pMinor, int& pRevision) - -{ - pMajor = 1; - pMinor = 0; - pRevision=0; -} - -bool MyOwnReader::FileOpen(char* pFileName) -{ - if(mFilePointer != NULL) - FileClose(); - FBXSDK_fopen(mFilePointer, pFileName, "r"); - if(mFilePointer == NULL) - return false; - return true; -} -bool MyOwnReader::FileClose() -{ - if(mFilePointer!=NULL) - fclose(mFilePointer); - return true; - -} -bool MyOwnReader::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -bool MyOwnReader::GetReadOptions(bool /*pParseFileAsNeeded*/) -{ - return true; -} - -//Read the custom file and reconstruct node hierarchy. -bool MyOwnReader::Read(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - FbxNode* lRootNode = lScene->GetRootNode(); - FbxNodeAttribute * lRootNodeAttribute = FbxNull::Create(lScene,""); - lRootNode->SetNodeAttribute(lRootNodeAttribute); - - int lSize; - char* lBuffer = NULL; - if(mFilePointer != NULL) - { - //To obtain file size - fseek (mFilePointer , 0 , SEEK_END); - lSize = ftell (mFilePointer); - rewind (mFilePointer); - - //Read file content to a string. - lBuffer = (char*) malloc (sizeof(char)*lSize + 1); - size_t lRead = fread(lBuffer, 1, lSize, mFilePointer); - lBuffer[lRead]='\0'; - FbxString lString(lBuffer); - - //Parse the string to get name and relation of Nodes. - FbxString lSubString, lChildName, lParentName; - FbxNode* lChildNode; - FbxNode* lParentNode; - FbxNodeAttribute* lChildAttribute; - int lEndTokenCount = lString.GetTokenCount("\n"); - - for (int i = 0; i < lEndTokenCount; i++) - { - lSubString = lString.GetToken(i, "\n"); - FbxString lNodeString; - lChildName = lSubString.GetToken(0, "\""); - lParentName = lSubString.GetToken(2, "\""); - - //Build node hierarchy. - if(lParentName == "RootNode") - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(mManager,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lRootNode->AddChild(lChildNode); - } - else - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(lScene,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lParentNode = lRootNode->FindChild(lParentName.Buffer()); - lParentNode->AddChild(lChildNode); - } - } - free(lBuffer); - } - lResult = true; - } - return lResult; -} diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.h b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.h deleted file mode 100644 index ebf8f73..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnReader.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_READER_H -#define MY_OWN_READER_H - -#include - -// This class is a custom reader. -// The reader provide you the ability to get file version, read options and read hierarchy from file. -class MyOwnReader : public FbxReader -{ -public: - MyOwnReader(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnReader(); - - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - virtual bool FileOpen(char* pFileName); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif /* MY_OWN_READER_H */ diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx deleted file mode 100644 index 39bace5..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriter.h" - -MyOwnWriter::MyOwnWriter(FbxManager &pManager, int pID): -FbxWriter(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ - -} - -MyOwnWriter::~MyOwnWriter() -{ - FileClose(); -} - -// Create a file stream with pFileName -bool MyOwnWriter::FileCreate(char* pFileName) -{ - if(mFilePointer != NULL) - { - FileClose(); - } - FBXSDK_fopen(mFilePointer,pFileName,"w"); - if(mFilePointer == NULL) - { - return false; - } - return true; -} - -// Close the file stream -bool MyOwnWriter::FileClose() -{ - if(mFilePointer != NULL) - { - fclose(mFilePointer); - return true; - } - return false; -} - -// Check whether the file stream is open. -bool MyOwnWriter::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -// Get the file stream options -void MyOwnWriter::GetWriteOptions() -{ -} - -// Write file with stream options -bool MyOwnWriter::Write(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - PreprocessScene(*lScene); - FBXSDK_printf("I'm in my own writer\n"); - - FbxNode* lRootNode = lScene->GetRootNode(); - PrintHierarchy(lRootNode); - - PostprocessScene(*lScene); - lResult = true; - } - return lResult; -} - -// Write out Node Hierarchy recursively -void MyOwnWriter::PrintHierarchy(FbxNode* pStartNode) -{ - FbxNode* lChildNode; - const char* lParentName = pStartNode->GetName(); - for(int i = 0; iGetChildCount(); i++) - { - lChildNode = pStartNode->GetChild(i); - const char* lChildName = lChildNode->GetName(); - FBXSDK_fprintf(mFilePointer,"%s%s%s%s%s%s%s","\"",lChildName,"\"",", parent is ","\"",lParentName,"\"\n"); - } - - int lNodeChildCount = pStartNode->GetChildCount (); - while (lNodeChildCount > 0) - { - lNodeChildCount--; - lChildNode = pStartNode->GetChild (lNodeChildCount); - PrintHierarchy(lChildNode); - } -} - -// Pre-process the scene before write it out -bool MyOwnWriter::PreprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in pre-process\n"); - return true; -} - -// Post-process the scene after write it out -bool MyOwnWriter::PostprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in post process\n"); - return true; -} diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h deleted file mode 100644 index bd45fb6..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_WRITER_H -#define MY_OWN_WRITER_H - -#include - -//This class is a custom writer. -//The writer provide you the ability to write out node hierarchy to a custom file format. -class MyOwnWriter : public FbxWriter -{ -public: - MyOwnWriter(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnWriter(); - - virtual bool FileCreate(char* pFileName) ; - virtual bool FileClose() ; - virtual bool IsFileOpen(); - virtual void GetWriteOptions() ; - virtual void PrintHierarchy(FbxNode* pStartNode); - virtual bool Write(FbxDocument* pDocument); - - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx deleted file mode 100644 index 7975ae9..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriterReader.h" - -// Create your own writer. -// And your writer will get a pPluginID and pSubID. -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& /*pExporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnWriter >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnWriter -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int /*pId*/) -{ - static const char* sExt[] = - { - "CFF", - 0 - }; - - static const char* sDesc[] = - { - "Example Custom FileFormat (*.CFF)", - 0 - }; - - switch (pRequest) - { - case FbxWriter::eInfoExtension: - return sExt; - case FbxWriter::eInfoDescriptions: - return sDesc; - case FbxWriter::eInfoVersions: - return 0; - default: - return 0; - } -} - -void FillOwnWriterIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} - - -// Creates a MyOwnReader in the Sdk Manager -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& /*pImporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnReader >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnReader -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId) -{ - switch (pRequest) - { - case FbxReader::eInfoExtension: - return GetMyOwnWriterInfo(FbxWriter::eInfoExtension, pId); - case FbxReader::eInfoDescriptions: - return GetMyOwnWriterInfo(FbxWriter::eInfoDescriptions, pId); - default: - return 0; - } -} - -void FillOwnReaderIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} diff --git a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h b/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h deleted file mode 100644 index 2902496..0000000 --- a/sdk/Darwin/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h +++ /dev/null @@ -1,33 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//////////////////////////////////////////////////////////////////////////// -// This example illustrates how to create your own writer/reader, -// and this will be used in IOPluginRegistry to RegisterWriter/Reader. -//////////////////////////////////////////////////////////////////////////// - - -#ifndef MY_OWN_WRITER_PLUGIN_H -#define MY_OWN_WRITER_PLUGIN_H - -#include -#include "MyOwnWriter.h" -#include "MyOwnReader.h" - -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int pId); -void FillOwnWriterIOSettings(FbxIOSettings& pIOS); - -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId); -void FillOwnReaderIOSettings(FbxIOSettings& pIOS); - -#endif diff --git a/sdk/Darwin/2019.2/samples/Normals/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Normals/CMakeLists.txt deleted file mode 100644 index 4833c63..0000000 --- a/sdk/Darwin/2019.2/samples/Normals/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Normals .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Normals/Normals.fbx" "${FBX_BUILD_ROOT}/Normals.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/Normals/Normals.fbx b/sdk/Darwin/2019.2/samples/Normals/Normals.fbx deleted file mode 100644 index 801a458..0000000 --- a/sdk/Darwin/2019.2/samples/Normals/Normals.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a783718dd72e3d1acd76b6e41c950ca1f9f04743a4c7f3dd4e571169ff464d4 -size 704532 diff --git a/sdk/Darwin/2019.2/samples/Normals/main.cxx b/sdk/Darwin/2019.2/samples/Normals/main.cxx deleted file mode 100644 index 7b28bda..0000000 --- a/sdk/Darwin/2019.2/samples/Normals/main.cxx +++ /dev/null @@ -1,296 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get normals of mesh. -// 2) get smoothing info of mesh. -// 3) compute smoothing info from normals. -// 4) convert hard/soft edges info to smoothing group info. -// -//Background knowledge: -//There are two kinds of smoothing info: -//1. Smoothing groups info which is saved by polygon. It usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. -//2. Hard/soft edges info which is saved by edge. It usually come from Maya, because Maya can set hard/soft edges. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Get normals of mesh, according to different mapping mode and reference mode. -// 6. Recursively traverse each node in the scene. -// 7. Computing smoothing info from normals or convert smoothing info -// 8. Get smoothing info of mesh, according to different mapping mode and reference mode. -// 9. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Normals.fbx" - -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute = false, bool pConvertToSmoothingGroup = false); - -//get mesh normals info -void GetNormals(FbxNode* pNode); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //get normals info, if there're mesh in the scene - GetNormals(lRootNode); - - //set me true to compute smoothing info from normals - bool lComputeFromNormals = false; - //set me true to convert hard/soft edges info to smoothing groups info - bool lConvertToSmoothingGroup = false; - //get smoothing info, if there're mesh in the scene - GetSmoothing(lSdkManager, lRootNode, lComputeFromNormals, lConvertToSmoothingGroup); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//get mesh smoothing info -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute, bool pConvertToSmoothingGroup) -{ - if(!pNode || !pSdkManager) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //if there's no smoothing info in fbx file, but you still want to get smoothing info. - //please compute smoothing info from normals. - //Another case to recompute smoothing info from normals is: - //If users edit normals manually in 3ds Max or Maya and export the scene to FBX with smoothing info, - //The smoothing info may NOT match with normals. - //the mesh called "fbx_customNormals" in Normals.fbx is the case. All edges are hard, but normals actually represent the "soft" looking. - //Generally, the normals in fbx file holds the smoothing result you'd like to get. - //If you want to get correct smoothing info(smoothing group or hard/soft edges) which match with normals, - //please drop the original smoothing info of fbx file, and recompute smoothing info from normals. - //if you want to get soft/hard edge info, please call FbxGeometryConverter::ComputeEdgeSmoothingFromNormals(). - //if you want to get smoothing group info, please get soft/hard edge info first by ComputeEdgeSmoothingFromNormals() - //And then call FbxGeometryConverter::ComputePolygonSmoothingFromEdgeSmoothing(). - if(pCompute) - { - FbxGeometryConverter lGeometryConverter(pSdkManager); - lGeometryConverter.ComputeEdgeSmoothingFromNormals(lMesh); - //convert soft/hard edge info to smoothing group info - if(pConvertToSmoothingGroup) - lGeometryConverter.ComputePolygonSmoothingFromEdgeSmoothing(lMesh); - } - - //if there is smoothing groups info in your fbx file, but you want to get hard/soft edges info - //please use following code: - //FbxGeometryConverter lGeometryConverter(lSdkManager); - //lGeometryConverter.ComputeEdgeSmoothingFromPolygonSmoothing(lMesh); - - //get smoothing info - FbxGeometryElementSmoothing* lSmoothingElement = lMesh->GetElementSmoothing(); - if(lSmoothingElement) - { - //mapping mode is by edge. The mesh usually come from Maya, because Maya can set hard/soft edges. - //we can get smoothing info(which edges are soft, which edges are hard) by retrieving each edge. - if( lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByEdge ) - { - //Let's get smoothing of each edge, since the mapping mode of smoothing element is by edge - for(int lEdgeIndex = 0; lEdgeIndex < lMesh->GetMeshEdgeCount(); lEdgeIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as edge index. - //get smoothing by the index of edge - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lEdgeIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lEdgeIndex); - - //Got smoothing of each vertex. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("hard/soft value for edge[%d]: %d \n", lEdgeIndex, lSmoothingFlag); - //add your custom code here, to output smoothing or get them into a list, such as KArrayTemplate - //. . . - }//end for lEdgeIndex - }//end eByEdge - //mapping mode is by polygon. The mesh usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. - //we can get smoothing info(smoothing group ID for each polygon) by retrieving each polygon. - else if(lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - //Let's get smoothing of each polygon, since the mapping mode of smoothing element is by polygon. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as polygon index. - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lPolygonIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lPolygonIndex); - - //Got smoothing of each polygon. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("smoothing group ID for polygon[%d]: %d \n", lPolygonIndex, lSmoothingFlag); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lSmoothingElement - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetSmoothing(pSdkManager, pNode->GetChild(i), pCompute, pConvertToSmoothingGroup); - } -} - -//get mesh normals info -void GetNormals(FbxNode* pNode) -{ - if(!pNode) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //get the normal element - FbxGeometryElementNormal* lNormalElement = lMesh->GetElementNormal(); - if(lNormalElement) - { - //mapping mode is by control points. The mesh should be smooth and soft. - //we can get normals by retrieving each control point - if( lNormalElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - //Let's get normals of each vertex, since the mapping mode of normal element is by control point - for(int lVertexIndex = 0; lVertexIndex < lMesh->GetControlPointsCount(); lVertexIndex++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as vertex index. - //get normals by the index of control vertex - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lVertexIndex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lVertexIndex); - - //Got normals of each vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for vertex[%d]: %f %f %f %f \n", lVertexIndex, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - }//end for lVertexIndex - }//end eByControlPoint - //mapping mode is by polygon-vertex. - //we can get normals by retrieving polygon-vertex. - else if(lNormalElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lIndexByPolygonVertex = 0; - //Let's get normals of each polygon, since the mapping mode of normal element is by polygon-vertex. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - //get polygon size, you know how many vertices in current polygon. - int lPolygonSize = lMesh->GetPolygonSize(lPolygonIndex); - //retrieve each vertex of current polygon. - for(int i = 0; i < lPolygonSize; i++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as lIndexByPolygonVertex. - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lIndexByPolygonVertex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndexByPolygonVertex); - - //Got normals of each polygon-vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for polygon[%d]vertex[%d]: %f %f %f %f \n", - lPolygonIndex, i, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - lIndexByPolygonVertex++; - }//end for i //lPolygonSize - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lNormalElement - - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetNormals(pNode->GetChild(i)); - } -} - diff --git a/sdk/Darwin/2019.2/samples/Pivot/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Pivot/CMakeLists.txt deleted file mode 100644 index 1032a99..0000000 --- a/sdk/Darwin/2019.2/samples/Pivot/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Pivot .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx - ../Common/AnimationUtility.h - ../Common/AnimationUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/Pivot/main.cxx b/sdk/Darwin/2019.2/samples/Pivot/main.cxx deleted file mode 100644 index 6753549..0000000 --- a/sdk/Darwin/2019.2/samples/Pivot/main.cxx +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates how to get/set pivots, how to convert pivots -// and how to query local and global transform. -// -//Steps: -// 1. Initialize FBX SDK object. -// 2. Create default animation stack and animation layer. -// 3. Create a pyramid mesh and attach it to a node. -// 4. Set pivots. -// 5. Add animation to the pyramid node. -// 6. Evaluate the local and global transform. -// 7. Save the scene before pivot converting. -// 8. Convert the animation to reset pivots. -// 9. Save the scene after pivot converting. -// -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "../Common/AnimationUtility.h" -#include "../Common/GeometryUtility.h" - -const char * SAMPLE_FILENAME_BEFORE_CONVECTION = "pivot_before_convection.fbx"; -const char * SAMPLE_FILENAME_AFTER_CONVECTION = "pivot_after_convection.fbx"; - -const char * PYRAMID_NAME = "Pyramid"; - -const double KEY_TIME[] = {0.0, 0.5, 1.0}; -const float KEY_VALUE[] = {0.0, 90.0, 180.0}; - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create a animation stack and layer for the scene - FbxAnimStack * lAnimStack; - FbxAnimLayer * lAnimLayer = CreateDefaultAnimStackAndLayer(lScene, lAnimStack); - - // Create a pyramid mesh whose bottom width is 4 and height is 4. - // Attach this pyramid to a node and as a child of the root node of the scene - FbxNode * lPyramidNode = CreatePyramid(lScene, PYRAMID_NAME, 4, 4); - - // Enable pivot - lPyramidNode->SetRotationActive(true); - // Set the rotation pivot at the center of the pyramid - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 2, 0)); - // Add a post rotation for the pyramid - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, -90)); - - // Animate the Y channel of the local rotation - FbxAnimCurve * lAnimCurve = lPyramidNode->LclRotation.GetCurve(lAnimLayer, "Y", true); - if (lAnimCurve) - { - const int lKeyCount = sizeof(KEY_TIME)/sizeof(double); - for (int lKeyIndex = 0; lKeyIndex < lKeyCount; ++lKeyIndex) - { - FbxTime lTime; - FbxAnimCurveKey lKey; - lTime.SetSecondDouble(KEY_TIME[lKeyIndex]); - lKey.Set(lTime, KEY_VALUE[lKeyIndex]); - lAnimCurve->KeyAdd(lTime, lKey); - } - } - - // Query the local transform and global transform of the pyramid node at 0.5 second - FbxTime lTime; - lTime.SetSecondDouble(0.5); - FbxAMatrix lLocalTransform = lPyramidNode->EvaluateLocalTransform(lTime); - FbxAMatrix lGlobalTransform = lPyramidNode->EvaluateGlobalTransform(lTime); - - // Save the scene before pivot converting - bool lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_CONVECTION); - - // Set the target of pivot converting - // Reset the rotation pivot and post rotation, and maintain the animation - lPyramidNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - lPyramidNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - lPyramidNode->SetPostRotation(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetRotationPivot(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - - // Convert the animation between source pivot set and destination pivot set with a frame rate of 30 per second - lScene->GetRootNode()->ConvertPivotAnimationRecursive(lAnimStack, FbxNode::eDestinationPivot, 30.0); - - // Copy the rotation pivot and post rotation from destination set to source set in order to save them in file - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - - // Save the scene after pivot converting - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_CONVECTION); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} diff --git a/sdk/Darwin/2019.2/samples/ProceduralTexture/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ProceduralTexture/CMakeLists.txt deleted file mode 100644 index fc5e06f..0000000 --- a/sdk/Darwin/2019.2/samples/ProceduralTexture/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ProceduralTexture .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ProceduralTexture/a_texture.jpg" "${FBX_BUILD_ROOT}/${CMAKE_CFG_INTDIR}/a_texture.jpg" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/ProceduralTexture/a_texture.jpg b/sdk/Darwin/2019.2/samples/ProceduralTexture/a_texture.jpg deleted file mode 100644 index f162280..0000000 --- a/sdk/Darwin/2019.2/samples/ProceduralTexture/a_texture.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Darwin/2019.2/samples/ProceduralTexture/main.cxx b/sdk/Darwin/2019.2/samples/ProceduralTexture/main.cxx deleted file mode 100644 index f7cfb0e..0000000 --- a/sdk/Darwin/2019.2/samples/ProceduralTexture/main.cxx +++ /dev/null @@ -1,385 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a plane with a procedural texture applied. -// -// The example illustrates how to: -// 1) Create a procedural texture -// 2) Set the blob property of a procedural texture -// 3) Get the blob property of a procedural texture and dump it on disk -// -///////////////////////////////////////////////////////////////////////// - -#include -#include -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ProceduralTexture.fbx" -#define TEXTURE_FILENAME "a_texture.jpg" -#define FILENAME_PROP "Filename" - -// Function prototypes. -bool CreateSceneAndSaveFile(int argc, char** argv); -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv); -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene); -bool CreateScene(FbxScene* pScene); -FbxNode* CreatePlane(FbxScene* pScene, const char* pName); -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName); -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName); -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode); -void MapProceduralTexure(FbxProceduralTexture* pProcTex, FbxNode* pNode); - -int main(int argc, char** argv) -{ - bool lResult; - - lResult = CreateSceneAndSaveFile(argc, argv); - if(lResult == false) - { - return 1; - } - - lResult = ReadFileAndDumpProceduralTextureBlobOnDisk(argc, argv); - if(lResult == false) - { - return 1; - } - - return 0; -} - -bool CreateSceneAndSaveFile(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Save the scene. - // The example can take an output file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Saving the file...\n"); - lResult = SaveScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an input file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Reading the FBX file...\n"); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Create a new file for each procedural texture found in the file. - lResult = DumpProceduralTextureBlobOnDisk(lScene); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while dumping procedural texture blobs on disk...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene) -{ - FBXSDK_printf("Writing the blob on disk...\n"); - // Collect all the procedural textures proxy objects in scene - int lNbProcTex = pScene->GetSrcObjectCount(); - - if (!lNbProcTex) - { - return true; - } - - bool lWroteBlob = false; // Bool: Wrote at least one blob on disk - - // Directory for blob extraction - FbxString lDirPath = FbxGetCurrentWorkPath() + "/Blobs/"; - - for(int lIndex = 0; lIndex < lNbProcTex; lIndex++) - { - FbxProceduralTexture* lProcTex = pScene->GetSrcObject(lIndex); - if(!lProcTex) - { - continue; - } - - FbxProperty lFilenameProp = lProcTex->RootProperty.Find(FILENAME_PROP); - if (!lFilenameProp.IsValid()) - { - continue; - } - - // Read binary blob - void* lBlobBegin = NULL; - size_t lBlobSize = 0; - FbxBlob lBinaryBlob = lProcTex->GetBlob(); - lBlobSize = lBinaryBlob.Size(); - lBlobBegin = const_cast(lBinaryBlob.Access()); - - // Get file name to dump the blob to. - FbxString lFilename = lFilenameProp.Get(); - FbxString lFilePath = lDirPath + FbxPathUtils::GetFileName(lFilename, false) + lIndex + "." + FbxPathUtils::GetExtensionName(lFilename); - - bool lIsWritable = FbxPathUtils::Create(FbxPathUtils::GetFolderName(lFilePath)); - if (lIsWritable) - { - std::ofstream lDataStreamOut(lFilePath.Buffer(), std::ofstream::binary); - lDataStreamOut.write((const char *)lBlobBegin, lBlobSize); - lDataStreamOut.close(); - // So now we wrote the file! - lWroteBlob = true; - FBXSDK_printf("Blob is written on disk! File: %s\n", lFilePath.Buffer()); - } - } - - return lWroteBlob; -} - -bool CreateScene(FbxScene* pScene) -{ - FBXSDK_printf("Creating the scene...\n"); - FbxNode* lPlane = CreatePlane(pScene, "Plane"); - - FbxSurfacePhong* lPhong = CreatePhongMaterial(pScene, "Phong"); - MapPhong(lPhong, lPlane); - FbxProceduralTexture* lProcTex = CreateProceduralTexture(pScene, "ProcTex"); - MapProceduralTexure(lProcTex, lPlane); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPlane); - - return true; -} - -// Create a plane. -FbxNode* CreatePlane(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lNormal(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - // Set the normals. - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMesh->CreateElementNormal();; - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the actual normal value for all 4 control points. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygon - lMesh->BeginPolygon(-1, -1, false); - for (int j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[j]); - //Now we have to update the index array of the UVs for diffuse - lUVDiffuseElement->GetIndexArray().SetAt(j, j); - } - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -// Create a procedural texture. -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName) -{ - FbxProceduralTexture* lProceduralTexture = FbxProceduralTexture::Create(pScene, pName); - - // For this example we simply dump the binary content of a jpg to the - // procedural texture's blob property. - // In the general case, dump whatever information needed for the procedural - // texture to the blob property. - - FbxString lFilename = TEXTURE_FILENAME; - - //check whether the file is readable - bool lIsReadable = FbxFileUtils::Exist(lFilename); - - if (lIsReadable) - { - // create binary blob from the texture file - FbxBlob lBinaryBlob; - std::ifstream lDataStreamIn(lFilename, std::ifstream::binary); - char* lBlobBegin = (char*)malloc(4096); - char* lBlobEnd = lBlobBegin; - long long lBlobSize = 0; - long long lBlobPointerSize = 4096; - std::streamsize lNbRead = 0; - while(!lDataStreamIn.eof()) - { - lBlobEnd = lBlobBegin + lBlobSize; - lDataStreamIn.read(lBlobEnd, 4096); - lNbRead = lDataStreamIn.gcount(); - lBlobPointerSize += 4096; - lBlobBegin = (char *)realloc(lBlobBegin, size_t(lBlobPointerSize)); - lBlobSize += lNbRead; - } - lDataStreamIn.close(); - lBinaryBlob.Assign(lBlobBegin, (int)lBlobSize); - free(lBlobBegin); - - lProceduralTexture->SetBlob(lBinaryBlob); - } - - // Add a property to retain file name - FbxProperty lFilenameProp = FbxProperty::Create(lProceduralTexture, FbxStringDT, FILENAME_PROP); - if (lFilenameProp.IsValid()) - { - lFilenameProp.Set(lFilename); - } - - return lProceduralTexture; -} - - -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName) -{ - FbxSurfacePhong* lPhong = FbxSurfacePhong::Create(pScene, pName); - - return lPhong; -} - -// Map procedural texture over plane. -void MapProceduralTexure(FbxProceduralTexture* pProceduralTexture, FbxNode* pNode) -{ - // The note shading mode has to be set to FbxNode::eTextureShading for the texture to be displayed. - pNode->SetShadingMode(FbxNode::eTextureShading); - - // we have to connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNode->GetSrcObject(0); - if (lMaterial) - { - lMaterial->Diffuse.ConnectSrcObject(pProceduralTexture); - } - -} - -// Map material over mesh. -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode) -{ - // Create MaterialElement in the mesh - FbxMesh* lMesh = pNode->GetMesh(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lMesh->CreateElementMaterial(); - - // The material is mapped to the whole mesh - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNode->AddMaterial(pPhong); -} - diff --git a/sdk/Darwin/2019.2/samples/README.txt b/sdk/Darwin/2019.2/samples/README.txt deleted file mode 100644 index 2de14ab..0000000 --- a/sdk/Darwin/2019.2/samples/README.txt +++ /dev/null @@ -1,67 +0,0 @@ -================================================================================ - - FBX SDK SAMPLES README - -Welcome to the FBX SDK samples readme! This document explains how to call CMake -to generate the appropriate build files. - -Sincerely, -the Autodesk FBX team - -================================================================================ - -To generate the build files you need to call CMake with the desired generator -and the following options (omitting an option will set it to it's default -value as shown below between [] or explicitly said: - -FBX_SHARED : set at command line with -DFBX_SHARED=1 to enable the sample to - link with the FBX SDK dynamic library - -FBX_STATIC_RTL : set at command line with -DFBX_STATIC_RTL=1 to use the static - MSVCRT (/MT). By default will use the dynamic MSVCRT (/MD). - This option is only meaningful on the Windows platform. - -FBX_VARIANT : set at command line with -DFBX_VARIANT=[debug] or release. - This option is only meaningful on Unix/MacOS platforms. - On Windows, the generated solutions will contain the - Debug, Release and RelWithDebInfo targets. - -FBX_ARCH : set at command line with -DFBX_ARCH=[x64] or x86. - This option is only meaningful with the Make generator. - With the Visual Studio generators, this value is automatically - deduced based on the specified generator. - - -Although you can run cmake in the sample directory, to avoid mixing build files and source files -in the same folder, we strongly suggest you create a separate build folder and run cmake from there. - -Examples: -========== - -1) Building the ViewScene sample on Windows using Visual Studio 2015 (and the default settings): - - 1. cd samples\ViewScene - 2. mkdir build - 3. cd build - 4. cmake -G "Visual Studio 14 Win64" .. - - 5. Now that the ViewScene.sln and all the other related files have been generated in the samples\ViewScene\build, - load the solution in Visual Studio and build it. The build result will be written in the bin directory at the root - level of the FBX SDK installation. - -If you want to re-generate the solution with different settings, it is preferable that you first delete the content of -the build folder to avoid cmake cache incompatibilities. - -2) Building the ViewScene sample on Windows using Visual Studio 2015 32bits /MT - - cmake -G "Visual Studio 14" -DFBX_STATIC_RTL=1 .. - -3) Building the ViewScene sample on Windows using Visual Studio 2015 64 bits DLL - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 .. - -4) Wrong configuration, will display a warning and generates a DLL version - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 -DFBX_STATIC_RTL=1 .. - Both FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only. - diff --git a/sdk/Darwin/2019.2/samples/StereoCamera/CMakeLists.txt b/sdk/Darwin/2019.2/samples/StereoCamera/CMakeLists.txt deleted file mode 100644 index 441445e..0000000 --- a/sdk/Darwin/2019.2/samples/StereoCamera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(StereoCamera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/StereoCamera/StereoCamera.fbx" "${FBX_BUILD_ROOT}/StereoCamera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/StereoCamera/StereoCamera.fbx b/sdk/Darwin/2019.2/samples/StereoCamera/StereoCamera.fbx deleted file mode 100644 index a11ebff..0000000 --- a/sdk/Darwin/2019.2/samples/StereoCamera/StereoCamera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8482fd83f99669599757e7bd926f8d6000330e86493f1a6c34824f514c1e0c5 -size 22863 diff --git a/sdk/Darwin/2019.2/samples/StereoCamera/main.cxx b/sdk/Darwin/2019.2/samples/StereoCamera/main.cxx deleted file mode 100644 index 50b4de5..0000000 --- a/sdk/Darwin/2019.2/samples/StereoCamera/main.cxx +++ /dev/null @@ -1,243 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get a stereo camera from a scene -// 2) evaluate left/right camera -// 3) get local/global matrix of left and right camera -// 4) create stereo camera set -// 5) connect left/right and stereo -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get stereo camera by from node attribute type. -// 6. Get left and right camera. -// 7. Evaluate left/right camera. -// 8. Get local/global matrix of left and right camera. -// 9. Create stereo camera set after extracting stereo camera. -// 10. Connect left/right and stereo. -// 11. Get the updated values via connections. -// 12. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "StereoCamera.fbx" - -void PrintMatrix(const FbxAMatrix& pMatrix); - -void GetStereoCameraInfo(FbxNode* pNode); - -void CreateStereoCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //This function illustrates how to get stereo camera info from scene. - GetStereoCameraInfo(lRootNode); - - //create your own stereo camera set - CreateStereoCamera(lScene); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get stereo camera info from scene. -void GetStereoCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //detect stereo camera by node attribute type - if(pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCameraStereo) - { - //get stereo camera - FbxCameraStereo* lStereoCamera = (FbxCameraStereo*)pNode->GetNodeAttribute(); - - //once we get the FbxCameraStereo, its connection has already been done. - //it's easy to get its left and right camera - //get left camera - FbxCamera* lLeftCamera = lStereoCamera->GetLeftCamera(); - FbxString lLeftName = lLeftCamera->GetName(); - FBXSDK_printf("left camera: %s\n", lLeftName.Buffer()); - //get right camera - FbxCamera* lRightCamera = lStereoCamera->GetRightCamera(); - FbxString lRightName = lRightCamera->GetName(); - FBXSDK_printf("right camera: %s\n", lRightName.Buffer()); - - //FBX SDK support reevaluation functionality - //reevaluate left/right camera - double lLeftOffsetX = lStereoCamera->ReevaluateLeftCameraFilmOffsetX(); - FBXSDK_printf("reevaluated left camera film offset: %f\n", lLeftOffsetX); - double lLeftFbxOffsetX = lLeftCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX left camera film offset: %f\n", lLeftFbxOffsetX); - double lRightOffsetX = lStereoCamera->ReevaluateRightCameraFilmOffsetX(); - FBXSDK_printf("reevaluated right camera film offset: %f\n", lRightOffsetX); - double lRightFbxOffsetX = lRightCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX right camera film offset: %f\n", lRightFbxOffsetX); - - //get local/global matrix of left and right camera - //Then you can get their Translate, Rotate and Scale info. - FbxAMatrix lLeft_localMatrix = lStereoCamera->GetLeftCameraLocalMatrix(); - FbxAMatrix lRight_localMatrix = lStereoCamera->GetRightCameraLocalMatrix(); - FbxAMatrix lLeft_globalMatrix = lStereoCamera->GetLeftCameraGlobalMatrix(); - FbxAMatrix lRight_globalMatrix = lStereoCamera->GetRightCameraGlobalMatrix(); - - //print the local and global TRS for left camera - FBXSDK_printf("===local TRS of left camera===\n"); - PrintMatrix(lLeft_localMatrix); - FBXSDK_printf("===global TRS of left camera===\n"); - PrintMatrix(lLeft_globalMatrix); - - //print the local and global TRS for right camera - FBXSDK_printf("===local TRS of right camera===\n"); - PrintMatrix(lRight_localMatrix); - FBXSDK_printf("===global TRS of right camera===\n"); - PrintMatrix(lRight_globalMatrix); - }// end if pNode->GetNodeAttribute() - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetStereoCameraInfo(pNode->GetChild(i)); - } -} - -//print the TRS for the given matrix -void PrintMatrix(const FbxAMatrix& pMatrix) -{ - if( !gVerbose ) return; - - //print the TRS - FBXSDK_printf(" T : %f %f %f %f\n", - pMatrix.GetT()[0], - pMatrix.GetT()[1], - pMatrix.GetT()[2], - pMatrix.GetT()[3] ); - - FBXSDK_printf(" R : %f %f %f %f\n", - pMatrix.GetR()[0], - pMatrix.GetR()[1], - pMatrix.GetR()[2], - pMatrix.GetR()[3] ); - - FBXSDK_printf(" S : %f %f %f %f\n", - pMatrix.GetS()[0], - pMatrix.GetS()[1], - pMatrix.GetS()[2], - pMatrix.GetS()[3] ); -} - -//This function illustrates how to create and connect stereo camera. -void CreateStereoCamera(FbxScene* pScene) -{ - if(!pScene) - return; - - //create a fbx node for stereo camera - FbxNode* lMyStereoNode = FbxNode::Create(pScene,"myStereoNode"); - //create a cameraStereo, it's a node attribute of stereo camera node. - FbxCameraStereo* lMyStereoCamera = FbxCameraStereo::Create(pScene,"myStereoCamera"); - //set stereoCamera as a node attribute of the FBX node. - lMyStereoNode->SetNodeAttribute (lMyStereoCamera); - //create a camera(node attribute), it will be left camera of stereo - FbxCamera* lLeftCamera = FbxCamera::Create(pScene, "leftCamera"); - //create a camera(node attribute), it will be right camera of stereo - FbxCamera* lRightCamera = FbxCamera::Create(pScene, "rightCamera"); - //add left camera to stereo - lMyStereoCamera->SetLeftCamera(lLeftCamera); - //add right camera to stereo - lMyStereoCamera->SetRightCamera(lRightCamera); - - //During FBXSDK reevaluating, if ConnectProperties() is called, - //left and right camera property will be connected to stereo camera. - //It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - //FilmHeight, FilmSqueezeRatio] to stereo camera. - //If these properties of stereo camera have been modified by SDK, - //FBX will not automatically sync and update the corresponding properties of left/right camera. - //However, you could get the newest property of left/right camera since ConnectProperties() is called. - //To get the newest property value, please use lLeft_Camera->FocalLength.GetSrcProperty().Get(&lNewValue, ...); - //Then you can update your left/right camera properties, for example, lLeftCamera->FocalLength.Set(lNewValue); - lMyStereoCamera->ConnectProperties(); - - //test the connection - //get the focal length value of left camera. - double lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - double lFocalLength_Left_src = 0; - //get source property of left focal length, it should be stereo focal length. - FbxProperty lLeftSrcLengthProperty = lLeftCamera->FocalLength.GetSrcProperty(); - if(lLeftSrcLengthProperty.IsValid()) - { - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("Initialized FocalLength of left camera source: %f\n", lFocalLength_Left_src); - //modify the FocalLength of stereo camera - lMyStereoCamera->FocalLength.Set(3.333); - //get the FocalLength of left camera. It's 34.89 now. - //But it should be updated to 3.33 since stereo FocalLength has changed. - //FBX doesn't sync it from stereo camera - lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - //get the newest value from connected property. - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("FocalLength of left camera source: %f\n", lFocalLength_Left_src); - } -} - - diff --git a/sdk/Darwin/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx b/sdk/Darwin/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx deleted file mode 100644 index a63f31e..0000000 --- a/sdk/Darwin/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31d94ad7a973ec84133ede3ab562703d09e6cbce7bd0f634dfc2f6a30685972d -size 147917 diff --git a/sdk/Darwin/2019.2/samples/SwitchBinding/CMakeLists.txt b/sdk/Darwin/2019.2/samples/SwitchBinding/CMakeLists.txt deleted file mode 100644 index c95dadc..0000000 --- a/sdk/Darwin/2019.2/samples/SwitchBinding/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(SwitchBinding .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/SwitchBinding/Bind_Before_Switch.fbx" "${FBX_BUILD_ROOT}/Bind_Before_Switch.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Darwin/2019.2/samples/SwitchBinding/main.cxx b/sdk/Darwin/2019.2/samples/SwitchBinding/main.cxx deleted file mode 100644 index 5fee17b..0000000 --- a/sdk/Darwin/2019.2/samples/SwitchBinding/main.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// Switch binding from one cylinder to the other one. -// Please check out the animation to see difference. -// Illustrates how to: -// 1. Get skin deformer and cluster; -// 2. Detach skin; -// 3. Bind and create corresponding bindpose; -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access the two cylinders -// 4. Get the skin deformer and all clusters from the first cylinder -// 5. Remove clusters, skin deformer and bind pose from the first cylinder -// 6. Move joints to proper position for cylinder2 -// 7. Update clusters, skin deformer and create a bind pose for the second cylinder -// 8. Save the scene to output file -// 9. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -const char * SAMPLE_FILENAME_BEFORE_SWITCH = "Bind_Before_Switch.fbx"; -const char * SAMPLE_FILENAME_AFTER_SWITCH = "Bind_After_Switch.fbx"; - -void SwitchBinding( FbxScene* pScene ); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_SWITCH); - if( lResult ) - { - //Switch binding from the first cylinder to the second one. - SwitchBinding( lScene ); - - //Save the scene after switching binding. - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_SWITCH); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void SwitchBinding(FbxScene * pScene) -{ - //Get the two cylinders. - FbxMesh* lCylinder01 = pScene->GetSrcObject(0); - FbxMesh* lCylinder02 = pScene->GetSrcObject(1); - - //Get the skin deformer, which will be switched from the first cylinder to the the second one. - FbxSkin* lSkin = (FbxSkin *) lCylinder01->GetDeformer(0, FbxDeformer::eSkin); - - // Get all clusters through the skin deformer, later they will be re-used for the second cylinder. - FbxArray lClusterArray; - for (int lClusterIndex = 0; lClusterIndex < lSkin->GetClusterCount(); ++lClusterIndex) - { - FbxCluster* lCluster=lSkin->GetCluster(lClusterIndex); - lClusterArray.Add(lCluster); - } - - // Detach the first cylinder. - // Remove clusters from the skin deformer. - for (int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); ++lClusterIndex) - lSkin->RemoveCluster(lClusterArray[lClusterIndex]); - // Remove the skin deformer from the first cylinder. - // Currently, the only deformer connected to lCylinder01 is the skin deformer. - lCylinder01->RemoveDeformer(0); - // Remove the corresponding bindpose. - pScene->RemovePose(0) ; - - // Bind the second cylinder and create the corresponding bind pose. - // Move the joints into the second cylinder. Only need to move the root joint. - lClusterArray[0]->GetLink()->LclTranslation.Set(FbxDouble3 ( -11.0322688253132,5.3883395780739,0) ); - - // Prepare an array to collect nodes for bind pose, which is combined of the geometry and joints. - FbxArray lPoseNodeArray; - - // Add the second cylinder to node array of bind pose. - lPoseNodeArray.Add(lCylinder02->GetNode()); - - // Set proper transformation for each cluster and add them to the skin deformer. - // ThansformMatrix is the global transformation of the mesh when the binding happens. - // TransformLinkMatrix is the global transformation of the joint(Link) when the binding happens. - FbxAMatrix lTransformMatrix, lTransformLinkMatrix; - lTransformMatrix = lCylinder02->GetNode()->EvaluateGlobalTransform(); - for(int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); lClusterIndex++) - { - // All joints have the same TransformMatrix. - lClusterArray[lClusterIndex]->SetTransformMatrix(lTransformMatrix); - - // Compute global transformation of each joint and set it as TransformLinkMatrix. - lTransformLinkMatrix = lClusterArray[lClusterIndex]->GetLink()->EvaluateGlobalTransform(); - lClusterArray[lClusterIndex]->SetTransformLinkMatrix(lTransformLinkMatrix); - - // Add cluster to the skin deformer. - lSkin->AddCluster(lClusterArray[lClusterIndex]); - - // Add each joint(Link) to node array of bindpose. - lPoseNodeArray.Add(lClusterArray[lClusterIndex]->GetLink()); - } - - // Add the skin deformer to the second cylinder. - lCylinder02->AddDeformer(lSkin); - - // Create a pose by the node array and set it as bindpose. - FbxPose* lPose = FbxPose::Create(pScene,lCylinder02->GetNode()->GetName()); - lPose->SetIsBindPose(true); - for(int lPoseNodeIndex = 0; lPoseNodeIndexEvaluateGlobalTransform(); - lPose->Add(lPoseNodeArray[lPoseNodeIndex], lBindMatrix); - } - - // Add the bindpose to the scene. - pScene->AddPose(lPose); -} diff --git a/sdk/Darwin/2019.2/samples/Transformations/CMakeLists.txt b/sdk/Darwin/2019.2/samples/Transformations/CMakeLists.txt deleted file mode 100644 index 449f28f..0000000 --- a/sdk/Darwin/2019.2/samples/Transformations/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Transformations .) -SET(FBX_TARGET_SOURCE - main.cxx - DisplayCommon.h - DisplayCommon.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Transformations/JointHierarchy.fbx" "${FBX_BUILD_ROOT}/JointHierarchy.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.cxx b/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.cxx deleted file mode 100644 index 684a602..0000000 --- a/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.cxx +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.h b/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.h deleted file mode 100644 index 9be4903..0000000 --- a/sdk/Darwin/2019.2/samples/Transformations/DisplayCommon.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Darwin/2019.2/samples/Transformations/JointHierarchy.fbx b/sdk/Darwin/2019.2/samples/Transformations/JointHierarchy.fbx deleted file mode 100644 index 1efc604..0000000 --- a/sdk/Darwin/2019.2/samples/Transformations/JointHierarchy.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bb146cf8c339c49489e4c47bd9191abe45e2ddd77d2731f0d347ad3d8420642 -size 13019 diff --git a/sdk/Darwin/2019.2/samples/Transformations/main.cxx b/sdk/Darwin/2019.2/samples/Transformations/main.cxx deleted file mode 100644 index bc59c9a..0000000 --- a/sdk/Darwin/2019.2/samples/Transformations/main.cxx +++ /dev/null @@ -1,331 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// Illustrates the followings: -// 1. How to use FbxAMatrix in transformation calculation. -// 2. What EvaluateGlobalTransform() and EvaluateLocalTransform() actually do. -// 3. How to get global and local transform of each joint in a joint hierarchy. -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene. -// 2. Load the input file to scene. -// 3. Calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). -// 4. Alternative way to calculate global and local transform from scratch by node's properties. -// 5. Compare, the above two results should be the same. -// 6. Display the joint's global and local transformation. -// 7. Destroy the FBX SDK Manager and FBX Scene. -// -// Notice: This sample does not take rotation order into consideration. It only shows the transformation -// calculation with XYZ rotation order. -//////////////////////////////////////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "DisplayCommon.h" - -const char * SAMPLE_FILENAME = "JointHierarchy.fbx"; - -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode); -void CompareTransformations( FbxNode* pNode, FbxScene* pScene ); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - CompareTransformations( lScene->GetRootNode(), lScene ); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void CompareTransformations(FbxNode* pNode, FbxScene * pScene) -{ - if( pNode != pScene->GetRootNode()) - { - DisplayString(pNode->GetName()); - FbxNode* lParentNode = pNode->GetParent(); - - // The first way: calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). - FbxAMatrix lGlobal, lLocal; - lGlobal= pNode->EvaluateGlobalTransform(); - lLocal = pNode->EvaluateLocalTransform(); - - // The second way: calculate global and local transform from scratch by the node's properties. - FbxAMatrix lParentTransform,lLocalTransform, lGlobalTransform; - lGlobalTransform = CalculateGlobalTransform(pNode); - if(lParentNode) - { - // Get parent global transform. - lParentTransform = CalculateGlobalTransform(lParentNode); - // Calculate local transform according to: LocalTransform = ParentGlobalInverse * GlobalTransform. - lLocalTransform = lParentTransform.Inverse() * lGlobalTransform; - } - else - lLocalTransform = lGlobalTransform; - - // Compare, the results are the same. Display the global and local transformation of each joint. - if(lGlobal == lGlobalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("GlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two global transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - - if(lLocal == lLocalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("LocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two local transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - } - - int lChildCount = pNode->GetChildCount(); - for( int i = 0; iGetChild(i), pScene); - } -} - -/* -Terminology: -Suffix "M" means this is a matrix, suffix "V" means it is a vector. -T is translation. -R is rotation. -S is scaling. -SH is shear. -GlobalRM(x) means the Global Rotation Matrix of node "x". -GlobalRM(P(x)) means the Global Rotation Matrix of the parent node of node "x". -All other transforms are described in the similar way. - -The algorithm description: -To calculate global transform of a node x according to different InheritType, -we need to calculate GlobalTM(x) and [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))] separately. -GlobalM(x) = GlobalTM(x) * [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))]; - -InhereitType = RrSs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalSM(x); - -InhereitType = RSrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalRM(x) * LocalSM(x); - -InhereitType = Rrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * LocalSM(x); - -LocalM(x)= TM(x) * RoffsetM(x) * RpivotM(x) * RpreM(x) * RM(x) * RpostM(x) * RpivotM(x)^-1 * SoffsetM(x) *SpivotM(x) * SM(x) * SpivotM(x)^-1 -LocalTWithAllPivotAndOffsetInformationV(x) = Local(x).GetT(); -GlobalTV(x) = GlobalM(P(x)) * LocalTWithAllPivotAndOffsetInformationV(x); - -Notice: FBX SDK does not support shear yet, so all local transform won't have shear. -However, global transform might bring in shear by combine the global transform of node in higher hierarchy. -For example, if you scale the parent by a non-uniform scale and then rotate the child node, then a shear will -be generated on the child node's global transform. -In this case, we always compensates shear and store it in the scale matrix too according to following formula: -Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix -*/ -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode) -{ - FbxAMatrix lTranlationM, lScalingM, lScalingPivotM, lScalingOffsetM, lRotationOffsetM, lRotationPivotM, \ - lPreRotationM, lRotationM, lPostRotationM, lTransform; - - FbxAMatrix lParentGX, lGlobalT, lGlobalRS; - - if(!pNode) - { - lTransform.SetIdentity(); - return lTransform; - } - - // Construct translation matrix - FbxVector4 lTranslation = pNode->LclTranslation.Get(); - lTranlationM.SetT(lTranslation); - - // Construct rotation matrices - FbxVector4 lRotation = pNode->LclRotation.Get(); - FbxVector4 lPreRotation = pNode->PreRotation.Get(); - FbxVector4 lPostRotation = pNode->PostRotation.Get(); - lRotationM.SetR(lRotation); - lPreRotationM.SetR(lPreRotation); - lPostRotationM.SetR(lPostRotation); - - // Construct scaling matrix - FbxVector4 lScaling = pNode->LclScaling.Get(); - lScalingM.SetS(lScaling); - - // Construct offset and pivot matrices - FbxVector4 lScalingOffset = pNode->ScalingOffset.Get(); - FbxVector4 lScalingPivot = pNode->ScalingPivot.Get(); - FbxVector4 lRotationOffset = pNode->RotationOffset.Get(); - FbxVector4 lRotationPivot = pNode->RotationPivot.Get(); - lScalingOffsetM.SetT(lScalingOffset); - lScalingPivotM.SetT(lScalingPivot); - lRotationOffsetM.SetT(lRotationOffset); - lRotationPivotM.SetT(lRotationPivot); - - // Calculate the global transform matrix of the parent node - FbxNode* lParentNode = pNode->GetParent(); - if(lParentNode) - { - lParentGX = CalculateGlobalTransform(lParentNode); - } - else - { - lParentGX.SetIdentity(); - } - - //Construct Global Rotation - FbxAMatrix lLRM, lParentGRM; - FbxVector4 lParentGR = lParentGX.GetR(); - lParentGRM.SetR(lParentGR); - lLRM = lPreRotationM * lRotationM * lPostRotationM; - - //Construct Global Shear*Scaling - //FBX SDK does not support shear, to patch this, we use: - //Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix - FbxAMatrix lLSM, lParentGSM, lParentGRSM, lParentTM; - FbxVector4 lParentGT = lParentGX.GetT(); - lParentTM.SetT(lParentGT); - lParentGRSM = lParentTM.Inverse() * lParentGX; - lParentGSM = lParentGRM.Inverse() * lParentGRSM; - lLSM = lScalingM; - - //Do not consider translation now - FbxTransform::EInheritType lInheritType = pNode->InheritType.Get(); - if(lInheritType == FbxTransform::eInheritRrSs) - { - lGlobalRS = lParentGRM * lLRM * lParentGSM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRSrs) - { - lGlobalRS = lParentGRM * lParentGSM * lLRM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRrs) - { - FbxAMatrix lParentLSM; - FbxVector4 lParentLS = lParentNode->LclScaling.Get(); - lParentLSM.SetS(lParentLS); - - FbxAMatrix lParentGSM_noLocal = lParentGSM * lParentLSM.Inverse(); - lGlobalRS = lParentGRM * lLRM * lParentGSM_noLocal * lLSM; - } - else - { - FBXSDK_printf("error, unknown inherit type! \n"); - } - - // Construct translation matrix - // Calculate the local transform matrix - lTransform = lTranlationM * lRotationOffsetM * lRotationPivotM * lPreRotationM * lRotationM * lPostRotationM * lRotationPivotM.Inverse()\ - * lScalingOffsetM * lScalingPivotM * lScalingM * lScalingPivotM.Inverse(); - FbxVector4 lLocalTWithAllPivotAndOffsetInfo = lTransform.GetT(); - // Calculate global translation vector according to: - // GlobalTranslation = ParentGlobalTransform * LocalTranslationWithPivotAndOffsetInfo - FbxVector4 lGlobalTranslation = lParentGX.MultT(lLocalTWithAllPivotAndOffsetInfo); - lGlobalT.SetT(lGlobalTranslation); - - //Construct the whole global transform - lTransform = lGlobalT * lGlobalRS; - - return lTransform; -} - - diff --git a/sdk/Darwin/2019.2/samples/UVSample/CMakeLists.txt b/sdk/Darwin/2019.2/samples/UVSample/CMakeLists.txt deleted file mode 100644 index 71945f9..0000000 --- a/sdk/Darwin/2019.2/samples/UVSample/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UVSample .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.fbx" "${FBX_BUILD_ROOT}/sadface.fbx" - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.jpg" "${FBX_BUILD_ROOT}/sadface.jpg" -) - diff --git a/sdk/Darwin/2019.2/samples/UVSample/main.cxx b/sdk/Darwin/2019.2/samples/UVSample/main.cxx deleted file mode 100644 index 6d74d67..0000000 --- a/sdk/Darwin/2019.2/samples/UVSample/main.cxx +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example shows to the user how to get UV information from mesh, -// and how to modify UV information on a specific UV set. -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access Node and its mesh -// 4. Get the UVs Information from the mesh -// 5. Modify the UV information and apply to the mesh -// 6. Save the scene to output file -// 7. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" - -//input file path -static const char* sInputFile = "sadface.fbx"; - -//output file path -static const char* sOutputFile = "happyface.fbx"; - - -//We load the all the UV information from the mesh -void LoadUVInformation(FbxMesh* pMesh); - -//We modify certain UV set and save the UV to mesh -void SaveUVInformation(FbxMesh* pMesh); - - -int main() -{ - - //FBX SDK Default Manager - FbxManager* lSdkManager = NULL; - - //Scene to load from file - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, sInputFile); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - //Get the first node in the scene - FbxNode* lNodeOfInterest = lScene->GetRootNode()->GetChild(0); - if(lNodeOfInterest) - { - FbxMesh* lMeshOFInterest = lNodeOfInterest->GetMesh(); - if(lMeshOFInterest) - { - //first, load the UV information and display them - LoadUVInformation(lMeshOFInterest); - - //then, modify certain uv set and save it - SaveUVInformation(lMeshOFInterest); - - //save the modified scene to file - SaveScene(lSdkManager, lScene, sOutputFile); - } - } - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void LoadUVInformation(FbxMesh* pMesh) -{ - //get all UV set names - FbxStringList lUVSetNameList; - pMesh->GetUVSetNames(lUVSetNameList); - - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < lUVSetNameList.GetCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const char* lUVSetName = lUVSetNameList.GetStringAt(lUVSetIndex); - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetName); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //index array, where holds the index referenced to the uv data - const bool lUseIndex = lUVElement->GetReferenceMode() != FbxGeometryElement::eDirect; - const int lIndexCount= (lUseIndex) ? lUVElement->GetIndexArray().GetCount() : 0; - - //iterating through the data by polygon - const int lPolyCount = pMesh->GetPolygonCount(); - - if( lUVElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - FbxVector2 lUVValue; - - //get the index of the current vertex in control points array - int lPolyVertIndex = pMesh->GetPolygonVertex(lPolyIndex,lVertIndex); - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyVertIndex) : lPolyVertIndex; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - } - } - } - else if (lUVElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lPolyIndexCounter = 0; - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - if (lPolyIndexCounter < lIndexCount) - { - FbxVector2 lUVValue; - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyIndexCounter) : lPolyIndexCounter; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - - lPolyIndexCounter++; - } - } - } - } - } -} - -void SaveUVInformation(FbxMesh* pMesh) -{ - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < pMesh->GetElementUVCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetIndex); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //new UV data - int lNewUVCount = 274/2; - double lNewUVData[274] = - { - 0.000499486923217773,0.000499725341796875,0.10039958357811,0.000499695539474487,0.200299650430679,0.0004996657371521,0.300199747085571,0.0004996657371521,0.400099813938141,0.000499635934829712,0.49999988079071,0.000499606132507324,0.59989994764328,0.000499576330184937,0.69980001449585,0.000499546527862549,0.799700140953064,0.000499546527862549,0.899600148200989,0.000499516725540161,0.999500274658203,0.000499486923217773,0.000499516725540161,0.100399821996689,0.100399613380432,0.100399792194366,0.200299680233002,0.100399762392044,0.300199747085571,0.100399762392044,0.400099813938141,0.100399732589722,0.499999910593033,0.100399702787399,0.599900007247925,0.100399672985077,0.699800074100494,0.100399643182755,0.799700140953064,0.100399643182755,0.899600207805634,0.100399613380432,0.999500274658203,0.10039958357811,0.000499546527862549,0.200299888849258,0.100399643182755,0.200299859046936,0.200299710035324,0.400099903345108,0.300199776887894,0.400099903345108,0.400099843740463,0.40009993314743,0.499999940395355,0.400099962949753,0.599900007247925,0.400099992752075,0.699800074100494,0.400100022554398,0.799700140953064,0.400100022554398,0.899600267410278,0.200299680233002,0.999500334262848,0.200299650430679,0.000499546527862549,0.30019998550415,0.100399643182755,0.300199925899506,0.200299710035324,0.300199806690216,0.300199806690216,0.300199836492538,0.400099873542786,0.300199866294861,0.499999940395355,0.300199866294861,0.599900007247925,0.300199925899506,0.699800133705139,0.300199925899506,0.799700140953064,0.300199955701828,0.899600267410278,0.300199747085571,0.999500334262848,0.300199747085571,0.000499576330184937,0.40010005235672,0.100399672985077,0.400100022554398,0.200299739837646,0.200299739837646,0.300199806690216,0.200299769639969,0.400099903345108,0.200299799442291,0.499999970197678,0.200299799442291,0.59990006685257,0.200299829244614,0.699800133705139,0.200299859046936,0.799700200557709,0.200299888849258,0.899600267410278,0.400099813938141,0.999500393867493,0.400099813938141,0.000499606132507324, - 0.50000011920929,0.100399702787399,0.50000011920929,0.200299769639969,0.500000059604645,0.300199866294861,0.500000059604645,0.40009993314743,0.5,0.5,0.5,0.59990006685257,0.499999970197678,0.699800133705139,0.499999940395355,0.799700260162354,0.499999940395355,0.899600267410278,0.499999910593033,0.999500393867493,0.49999988079071,0.000499635934829712,0.599900186061859,0.100399732589722,0.599900186061859,0.200299799442291,0.599900126457214,0.300199866294861,0.599900126457214,0.40009993314743,0.599900126457214,0.5,0.59990006685257,0.599900126457214,0.59990006685257,0.699800193309784,0.599900007247925,0.799700260162354,0.599900007247925,0.899600327014923,0.599900007247925,0.999500393867493,0.59989994764328,0.0004996657371521,0.699800252914429,0.100399762392044,0.699800252914429,0.200299829244614,0.699800252914429,0.300199896097183,0.699800193309784,0.400099962949753,0.699800193309784,0.500000059604645,0.699800133705139,0.599900126457214,0.699800133705139,0.699800193309784,0.699800133705139,0.799700260162354,0.699800074100494,0.899600386619568,0.699800074100494,0.999500453472137,0.69980001449585,0.0004996657371521,0.799700379371643,0.100399762392044,0.799700319766998,0.200299829244614,0.799700260162354,0.300199925899506,0.799700260162354,0.400099992752075,0.799700260162354,0.500000059604645,0.799700260162354,0.599900126457214,0.799700200557709,0.699800252914429,0.799700140953064,0.799700260162354,0.799700140953064,0.899600386619568,0.799700140953064,0.999500453472137,0.799700140953064,0.000499695539474487,0.899600386619568,0.100399792194366,0.899600386619568,0.200299859046936,0.899600386619568,0.300199925899506,0.899600386619568,0.400100022554398,0.899600327014923,0.50000011920929,0.899600267410278,0.599900186061859,0.899600267410278,0.699800252914429,0.899600267410278,0.799700319766998,0.899600267410278,0.899600386619568,0.899600207805634,0.999500513076782,0.899600148200989,0.000499725341796875,0.999500513076782,0.100399821996689,0.999500513076782,0.200299888849258,0.999500453472137,0.30019998550415,0.999500453472137, - 0.40010005235672,0.999500393867493,0.50000011920929,0.999500393867493,0.599900186061859,0.999500393867493,0.699800252914429,0.999500334262848,0.799700379371643,0.999500334262848,0.899600386619568,0.999500274658203,0.999500513076782,0.999500274658203,0.200299710035324,0.200299829244614,0.300199776887894,0.200299829244614,0.400099843740463,0.200299799442291,0.499999940395355,0.200299769639969,0.599900007247925,0.200299739837646,0.699800074100494,0.200299710035324,0.799700140953064,0.200299710035324,0.200299710035324,0.300199925899506,0.799700140953064,0.300199776887894,0.200299739837646,0.400099992752075,0.300199806690216,0.400099962949753,0.400099903345108,0.40009993314743,0.499999970197678,0.40009993314743,0.59990006685257,0.400099903345108,0.699800133705139,0.400099873542786,0.799700200557709,0.400099843740463 - }; - - //new UV index data - int lNewUVIndexCount = 600; - int lNewUVIndices[600] = - { - 11,0,12,1,12,0,12,1,13,2,13,1,13,2,14,3,14,2,14,3,15,4,15,3,15,4,16,5,16,4,16,5,17,6,17,5,17,6,18,7,18,6,18,7,19,8,19,7,19,8,20,9,20,8,20,9,21,10,21,9,22,11,23,12,23,11,23,12,121,13,121,12,121,13,122,14,122,13,122,14,123,15,123,14,123,15,124,16,124,15,124,16,125,17,125,16,125,17,126,18,126,17,126,18,127,19,127,18,127,19,31,20,31,19,31,20,32,21,32,20,33,22,34,23,34,22,34,23,128,121,128,23,35,24,36,25,36,24,36,25,37,26,37,25,37,26,38,27,38,26,38,27,39,28,39,27,39,28,40,29,40,28,40,29,41,30,41,29,129,127,42,31,42,127,42,31,43,32,43,31,44,33,45,34,45,33,45,34,130,128,130,34,46,35,47,36,47,35,47,36,48,37,48,36,48,37,49,38,49,37,49,38,50,39,50,38,50,39,51,40,51,39,51,40,52,41,52,40,136,129,53,42,53,129,53,42,54,43,54,42,55,44,56,45,56,44,56,45,57,130,57,45,57,130,58,131,58,130,58,131,59,132,59,131,59,132,60,133,60,132,60,133,61,134,61,133,61,134,62,135,62,134,62,135,63,136,63,135,63,136,64,53,64,136,64,53,65,54,65,53,66,55,67,56,67,55,67,56,68,57,68,56,68,57,69,58,69,57,69,58,70,59,70,58,70,59,71,60,71,59,71,60,72,61,72,60,72,61,73,62,73,61,73,62,74,63,74,62,74,63,75,64,75,63,75,64,76,65,76,64,77,66,78,67,78,66,78,67,79,68,79,67,79,68,80,69,80,68,80,69,81,70,81,69,81,70,82,71,82,70,82,71,83,72,83,71,83,72,84,73,84,72,84,73,85,74,85,73,85,74,86,75,86,74,86,75,87,76,87,75,88,77,89,78,89,77,89,78,90,79,90,78,90,79,91,80,91,79,91,80,92,81,92,80,92,81,93,82,93,81,93,82,94,83,94,82,94,83,95,84,95,83,95,84,96,85,96,84,96,85,97,86,97,85,97,86,98,87,98,86,99,88,100,89,100,88,100,89,101,90,101,89,101,90,102,91,102,90,102,91,103,92,103,91,103,92,104,93,104,92,104,93,105,94,105,93,105,94,106,95,106,94,106,95,107,96,107,95,107,96,108,97,108,96,108,97,109,98,109,97,110,99,111,100,111,99,111,100,112,101,112,100,112,101,113,102,113,101,113,102,114,103,114,102,114,103,115,104,115,103,115,104,116,105,116,104,116,105,117,106,117,105,117,106,118,107,118,106,118,107,119,108,119,107,119,108,120,109,120,108 - }; - - //set new UV data to direct array - lUVElement->GetDirectArray().Resize(lNewUVCount); - for(int lUVIndex = 0; lUVIndex < lNewUVCount; lUVIndex++) - { - FbxVector2 lUV(lNewUVData[2*lUVIndex], lNewUVData[2*lUVIndex+1]); - lUVElement->GetDirectArray().SetAt(lUVIndex, lUV); - } - - //set new UV index data to index array - lUVElement->GetIndexArray().Resize(lNewUVIndexCount); - for(int lUVIndex = 0; lUVIndex < lNewUVIndexCount; lUVIndex++) - { - lUVElement->GetIndexArray().SetAt(lUVIndex, lNewUVIndices[lUVIndex]); - } - - return; - } -} - diff --git a/sdk/Darwin/2019.2/samples/UVSample/sadface.fbx b/sdk/Darwin/2019.2/samples/UVSample/sadface.fbx deleted file mode 100644 index 06d3fac..0000000 --- a/sdk/Darwin/2019.2/samples/UVSample/sadface.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:619179ea4689ea86114b4ab83b0d07e68ea5cbe28f84c9edf0a9ac293bf01f6e -size 33565 diff --git a/sdk/Darwin/2019.2/samples/UVSample/sadface.jpg b/sdk/Darwin/2019.2/samples/UVSample/sadface.jpg deleted file mode 100644 index 98a1cc8..0000000 --- a/sdk/Darwin/2019.2/samples/UVSample/sadface.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:725930d0108270cf385c655ffc37372961499e352fe1dc941a646892e031e7ce -size 6730 diff --git a/sdk/Darwin/2019.2/samples/UserProperties/CMakeLists.txt b/sdk/Darwin/2019.2/samples/UserProperties/CMakeLists.txt deleted file mode 100644 index e4b5970..0000000 --- a/sdk/Darwin/2019.2/samples/UserProperties/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UserProperties .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Darwin/2019.2/samples/UserProperties/main.cxx b/sdk/Darwin/2019.2/samples/UserProperties/main.cxx deleted file mode 100644 index a870319..0000000 --- a/sdk/Darwin/2019.2/samples/UserProperties/main.cxx +++ /dev/null @@ -1,539 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// In this example a scene is created containing a cube and a pyramid. -// -// The example illustrates two things: -// 1) How to create user properties, attach them to the cube and -// animate them. -// 2) How to create a constraint, constraining the pyramid to the cube. -// -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "UserProperties.fbx" -#define ANIM_STACK_ANIMATE_LIST "Animate Cube List" -#define ANIM_STACK_ANIMATE_CUBE "Animate Cube" -#define ANIM_STACK_ANIMATE_PYRAMID "Animate Pyramid" - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName); -void CreateUserProperties(FbxNode *pNode); -void AnimateList(FbxScene* pScene, FbxProperty* pList); -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode); -void AnimateCube(FbxScene* pScene, FbxNode* pNode); -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode); -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - FbxNode* lPyramid = CreatePyramid(lScene, "Pyramid"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - - // Create the user properties on the Cube. - CreateUserProperties(lCube); - - // - - // animate the list "MyList" - FbxProperty p6 = lCube->FindProperty("MyList", false); - AnimateList(lScene, &p6); - - // Constraint (position constraint) the pyramid to the cube. - FbxConstraintPosition* lPositionConstraint = (FbxConstraintPosition*)CreatePositionConstraint(lScene, lCube, lPyramid); - if( lPositionConstraint ) lPositionConstraint->ConnectDstObject(lScene); - - // Animate the cube: the pyramid will follow, because of the position constraint. - AnimateCube(lScene, lCube); - - // Animate the pyramid: it doesn't actually move, because it is constrained to the immobile cube. - AnimatePyramid(lScene, lPyramid); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, lSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription("FBX ascii (*.fbx)") ); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - typedef double Vector4[4]; - typedef double Vector2[2]; - - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the polygons - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - - FbxGeometryElementNormal* lNormlElement= lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormlElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Finally we create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - pScene->GetRootNode()->AddChild(lNode); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - - -// Create a pyramid. -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - FbxGeometryElementNormal* lNormlElement = lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Create polygons. - - // Pyramid base. - lMesh->BeginPolygon(); - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(); - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - pScene->GetRootNode()->AddChild(lNode); - - // Translate the pyramid - FbxVector4 lTranslation(-150, 0, 0, 0); - lNode->LclTranslation.Set(lTranslation); - - return lNode; -} - - -void CreateUserProperties(FbxNode *pNode) { - // Now we create the user properties - FbxProperty p1 = FbxProperty::Create(pNode, FbxBoolDT, "MyBooleanProperty", "My Bool"); - FbxProperty p2 = FbxProperty::Create(pNode, FbxFloatDT, "MyRealProperty", "My floating point number"); - FbxProperty p3 = FbxProperty::Create(pNode, FbxColor3DT, "MyColorProperty", "My Color"); - FbxProperty p4 = FbxProperty::Create(pNode, FbxIntDT, "MyInteger", ""); - FbxProperty p5 = FbxProperty::Create(pNode, FbxDouble4DT, "MyVector", ""); - FbxProperty p6 = FbxProperty::Create(pNode, FbxStringListDT, "MyList", ""); - - /* - NOTE: The properties labels exists only while the property object is in memory. - The label is not saved in the FBX file. When loading properties from the FBX file - it will take the same value as the property name. - */ - - // we now fill the properties. All the properties are user properties so we set the - // correct flag - p1.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p2.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p3.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p4.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p5.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p6.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - - // let's make MyColorProperty, MyVector and MyList animatables - p3.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p5.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p6.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - - // we set the default values - FbxColor lRed(1.0, 0.0, 0.0); - p1.Set(false); - p2.Set(3.33); - p3.Set(lRed); - p4.Set(11); - p5.Set(FbxDouble3(-1.1, 2.2, -3.3)); - p6.Set(2); - - // and some limits - p4.SetLimits(-5.0, 9.0); - p5.SetLimits(0.0, 2.1); - - // add elements to the list - p6.AddEnumValue("one"); - p6.AddEnumValue("two"); - p6.AddEnumValue("three"); - p6.AddEnumValue("Four"); - p6.InsertEnumValue(0, "zero"); -} - - -// Animate the user property given by pList. -void AnimateList(FbxScene* pScene, FbxProperty* pList) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_LIST); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxAnimCurveNode* lFbxFCurveNode = pList->GetCurveNode(lAnimLayer, true); - if (lFbxFCurveNode) - { - FbxTime lKeyTime; - FbxAnimCurve* lFCurve = lFbxFCurveNode->GetCurve(0U); - if (lFCurve == NULL) - lFCurve = lFbxFCurveNode->CreateCurve(lFbxFCurveNode->GetName()); - - lFCurve->KeyModifyBegin(); - lFCurve->ResizeKeyBuffer(5); - - // One way of setting a keyframe value - lKeyTime.SetSecondDouble(0.0); - FbxAnimCurveKey lKey1(lKeyTime, 0.0); - lKey1.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey1.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(0, lKey1); - - lKeyTime.SetSecondDouble(1.0); - FbxAnimCurveKey lKey2(lKeyTime, 1.0); - lKey2.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey2.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(1, lKey2); - - // an other way of setting a keyframe value - lKeyTime.SetSecondDouble(2.0); - - // the cast to TangentMode is intended - lFCurve->KeySet(2, lKeyTime, 2.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(3.0); - lFCurve->KeySet(3, lKeyTime, 3.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(4.0); - lFCurve->KeySet(4, lKeyTime, 0.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lFCurve->KeyModifyEnd(); - } -} - - -// Create a position constraint whith pSourceNode as source node and pConstraintedNode as constrained node. -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode) -{ - FbxConstraintPosition *lPositionConstraint = FbxConstraintPosition::Create(pScene,"Position"); - - // set constrained object - lPositionConstraint->SetConstrainedObject(pConstrainedNode); - - // set source - lPositionConstraint->AddConstraintSource(pSourceNode, 100.0); - - // Constrain the position in X, Y and Z - lPositionConstraint->AffectX = true; - lPositionConstraint->AffectY = true; - lPositionConstraint->AffectZ = true; - - // keep offset between source and constrained object - FbxVector4 lPositionSource; - FbxVector4 lPositionConstrainedObj; - lPositionSource = pSourceNode->LclTranslation.Get(); - lPositionConstrainedObj = pConstrainedNode->LclTranslation.Get(); - FbxVector4 lOffset = lPositionConstrainedObj - lPositionSource; - lPositionConstraint->Translation = FbxDouble3(lOffset); - - // activate property - FbxProperty lActive = lPositionConstraint->FindProperty("Active", false); - lActive.Set(true); - - - return lPositionConstraint; -} - - -// Animate the cube by translating it in X, Y and Z. -void AnimateCube(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_CUBE); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); - -} - - -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_PYRAMID); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); -} - - -// Animate a given node. -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurveX = NULL; - FbxAnimCurve* lCurveY = NULL; - FbxAnimCurve* lCurveZ = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // The CurveNode must be created in order to access the AnimCurves - pNode->LclTranslation.GetCurveNode(pAnimLayer, true); - lCurveX = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - lCurveY = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - lCurveZ = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - - if (lCurveX) - { - lCurveX->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveX->KeyModifyEnd(); - } - - if (lCurveY) - { - lCurveY->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveY->KeyModifyEnd(); - } - - if (lCurveZ) - { - lCurveZ->KeyModifyBegin(); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(8.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(9.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveZ->KeyModifyEnd(); - } - -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/CMakeLists.txt b/sdk/Darwin/2019.2/samples/ViewScene/CMakeLists.txt deleted file mode 100644 index a915449..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ViewScene .) -IF(CMAKE_OSX_SYSROOT MATCHES "Platforms/iPhone*") - MESSAGE(FATAL_ERROR "on iOS we don't have OpenGL stuff so we cannot compile ViewScene") - RETURN() -ENDIF() - -SET(FBX_TARGET_SOURCE - DrawScene.h - GetPosition.h - GlFunctions.h - SetCamera.h - SceneCache.h - SceneContext.h - DrawText.h - targa.h - DrawScene.cxx - GetPosition.cxx - GlFunctions.cxx - SetCamera.cxx - SceneCache.cxx - SceneContext.cxx - DrawText.cxx - main.cxx - targa.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_DEFINITIONS( - ${FBX_BUILD_DEFINES} - ${FBX_DEPENDENTS_DEFINES} -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET(SRC_LIB_ROOT ${FBX_ROOT}/samples/ViewScene/libs) -IF(WIN32) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.dll" "${FBX_BUILD_ROOT}/glew32.dll" - ) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.dll" "${FBX_BUILD_ROOT}/glut32.dll" - ) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) -ELSE(WIN32) - IF (APPLE) - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW32.a) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW64.a) - ENDIF() - SET(FBX_LINKER_FLAGS "-framework GLUT -framework OpenGL -framework Cocoa") - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - ELSEIF(LINUX) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW_amd64.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc34-amd64.a) - ELSE() - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc32.a) - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLUT} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_REQUIRED_LIBS_DEPENDENCY} GLU GL X11) - ENDIF(APPLE) -ENDIF(WIN32) - -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/humanoid.fbx" "${FBX_BUILD_ROOT}/humanoid.fbx" - - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/FBX_ASCII_TEXTURE" "${FBX_BUILD_ROOT}/FBX_ASCII_TEXTURE" -) diff --git a/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.cxx b/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.cxx deleted file mode 100644 index 4e2fdfe..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.cxx +++ /dev/null @@ -1,948 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawScene.h" -#include "SceneCache.h" -#include "GetPosition.h" - -void DrawNode(FbxNode* pNode, - FbxTime& lTime, - FbxAnimLayer * pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, - ShadingMode pShadingMode); -void DrawMarker(FbxAMatrix& pGlobalPosition); -void DrawSkeleton(FbxNode* pNode, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition); -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode); -void ComputeShapeDeformation(FbxMesh* pMesh, - FbxTime& pTime, - FbxAnimLayer * pAnimLayer, - FbxVector4* pVertexArray); -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose); -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray); -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition); -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition); -void DrawNull(FbxAMatrix& pGlobalPosition); -void MatrixScale(FbxAMatrix& pMatrix, double pValue); -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue); -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix); - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose) -{ - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - LightCache::IntializeEnvironment(pScene->GetGlobalSettings().GetAmbientColor()); - - // Setting the lights before drawing the whole scene - const int lLightCount = pScene->GetSrcObjectCount(); - for (int lLightIndex = 0; lLightIndex < lLightCount; ++lLightIndex) - { - FbxLight * lLight = pScene->GetSrcObject(lLightIndex); - FbxNode * lNode = lLight->GetNode(); - if (lNode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(lNode, pTime, pPose); - FbxAMatrix lGeometryOffset = GetGeometry(lNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - DrawLight(lNode, pTime, lGlobalOffPosition); - } - } -} - -// Draw recursively each node of the scene. To avoid recomputing -// uselessly the global positions, the global position of each -// node is passed to it's children while browsing the node tree. -// If the node is part of the given pose for the current scene, -// it will be drawn at the position specified in the pose, Otherwise -// it will be drawn at the given time. -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, FbxPose* pPose, - ShadingMode pShadingMode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(pNode, pTime, pPose, &pParentGlobalPosition); - - if (pNode->GetNodeAttribute()) - { - // Geometry offset. - // it is not inherited by the children. - FbxAMatrix lGeometryOffset = GetGeometry(pNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - - DrawNode(pNode, pTime, pAnimLayer, pParentGlobalPosition, lGlobalOffPosition, pPose, pShadingMode); - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - DrawNodeRecursive(pNode->GetChild(lChildIndex), pTime, pAnimLayer, lGlobalPosition, pPose, pShadingMode); - } -} - -// Draw the node following the content of it's node attribute. -void DrawNode(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - // All lights has been processed before the whole scene because they influence every geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMarker) - { - DrawMarker(pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - DrawSkeleton(pNode, pParentGlobalPosition, pGlobalPosition); - } - // NURBS and patch have been converted into triangluation meshes. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - DrawMesh(pNode, pTime, pAnimLayer, pGlobalPosition, pPose, pShadingMode); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eCamera) - { - DrawCamera(pNode, pTime, pAnimLayer, pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNull) - { - DrawNull(pGlobalPosition); - } - } - else - { - // Draw a Null for nodes without attribute. - DrawNull(pGlobalPosition); - } -} - - -// Draw a small box where the node is located. -void DrawMarker(FbxAMatrix& pGlobalPosition) -{ - GlDrawMarker(pGlobalPosition); -} - - -// Draw a limb between the node and its parent. -void DrawSkeleton(FbxNode* pNode, FbxAMatrix& pParentGlobalPosition, FbxAMatrix& pGlobalPosition) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - // Only draw the skeleton if it's a limb node and if - // the parent also has an attribute of type skeleton. - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode && - pNode->GetParent() && - pNode->GetParent()->GetNodeAttribute() && - pNode->GetParent()->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - GlDrawLimbNode(pParentGlobalPosition, pGlobalPosition); - } -} - - -// Draw the vertices of a mesh. -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxMesh* lMesh = pNode->GetMesh(); - const int lVertexCount = lMesh->GetControlPointsCount(); - - // No vertex to draw. - if (lVertexCount == 0) - { - return; - } - - const VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - - // If it has some defomer connection, update the vertices position - const bool lHasVertexCache = lMesh->GetDeformerCount(FbxDeformer::eVertexCache) && - (static_cast(lMesh->GetDeformer(0, FbxDeformer::eVertexCache)))->Active.Get(); - const bool lHasShape = lMesh->GetShapeCount() > 0; - const bool lHasSkin = lMesh->GetDeformerCount(FbxDeformer::eSkin) > 0; - const bool lHasDeformation = lHasVertexCache || lHasShape || lHasSkin; - - FbxVector4* lVertexArray = NULL; - if (!lMeshCache || lHasDeformation) - { - lVertexArray = new FbxVector4[lVertexCount]; - memcpy(lVertexArray, lMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - } - - if (lHasDeformation) - { - // Active vertex cache deformer will overwrite any other deformer - if (lHasVertexCache) - { - ReadVertexCacheData(lMesh, pTime, lVertexArray); - } - else - { - if (lHasShape) - { - // Deform the vertex array with the shapes. - ComputeShapeDeformation(lMesh, pTime, pAnimLayer, lVertexArray); - } - - //we need to get the number of clusters - const int lSkinCount = lMesh->GetDeformerCount(FbxDeformer::eSkin); - int lClusterCount = 0; - for (int lSkinIndex = 0; lSkinIndex < lSkinCount; ++lSkinIndex) - { - lClusterCount += ((FbxSkin *)(lMesh->GetDeformer(lSkinIndex, FbxDeformer::eSkin)))->GetClusterCount(); - } - if (lClusterCount) - { - // Deform the vertex array with the skin deformer. - ComputeSkinDeformation(pGlobalPosition, lMesh, pTime, lVertexArray, pPose); - } - } - - if (lMeshCache) - lMeshCache->UpdateVertexPosition(lMesh, lVertexArray); - } - - glPushMatrix(); - glMultMatrixd((const double*)pGlobalPosition); - - if (lMeshCache) - { - lMeshCache->BeginDraw(pShadingMode); - const int lSubMeshCount = lMeshCache->GetSubMeshCount(); - for (int lIndex = 0; lIndex < lSubMeshCount; ++lIndex) - { - if (pShadingMode == SHADING_MODE_SHADED) - { - const FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lIndex); - if (lMaterial) - { - const MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - if (lMaterialCache) - { - lMaterialCache->SetCurrentMaterial(); - } - } - else - { - // Draw green for faces without material - MaterialCache::SetDefaultMaterial(); - } - } - - lMeshCache->Draw(lIndex, pShadingMode); - } - lMeshCache->EndDraw(); - } - else - { - // OpenGL driver is too lower and use Immediate Mode - glColor4f(0.5f, 0.5f, 0.5f, 1.0f); - const int lPolygonCount = lMesh->GetPolygonCount(); - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; lPolygonIndex++) - { - const int lVerticeCount = lMesh->GetPolygonSize(lPolygonIndex); - glBegin(GL_LINE_LOOP); - for (int lVerticeIndex = 0; lVerticeIndex < lVerticeCount; lVerticeIndex++) - { - int index = lMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - if (index < 0) - { - FBX_ASSERT_NOW("Invalid index!"); - continue; - } - glVertex3dv((GLdouble *)lVertexArray[index]); - } - glEnd(); - } - } - - glPopMatrix(); - - delete [] lVertexArray; -} - - -// Deform the vertex array with the shapes contained in the mesh. -void ComputeShapeDeformation(FbxMesh* pMesh, FbxTime& pTime, FbxAnimLayer * pAnimLayer, FbxVector4* pVertexArray) -{ - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lSrcVertexArray = pVertexArray; - FbxVector4* lDstVertexArray = new FbxVector4[lVertexCount]; - memcpy(lDstVertexArray, pVertexArray, lVertexCount * sizeof(FbxVector4)); - - int lBlendShapeDeformerCount = pMesh->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - if(lChannel) - { - // Get the percentage of influence on this channel. - FbxAnimCurve* lFCurve = pMesh->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer); - if (!lFCurve) continue; - double lWeight = lFCurve->Evaluate(pTime); - - /* - If there is only one targetShape on this channel, the influence is easy to calculate: - influence = (targetShape - baseGeometry) * weight * 0.01 - dstGeometry = baseGeometry + influence - - But if there are more than one targetShapes on this channel, this is an in-between - blendshape, also called progressive morph. The calculation of influence is different. - - For example, given two in-between targets, the full weight percentage of first target - is 50, and the full weight percentage of the second target is 100. - When the weight percentage reach 50, the base geometry is already be fully morphed - to the first target shape. When the weight go over 50, it begin to morph from the - first target shape to the second target shape. - - To calculate influence when the weight percentage is 25: - 1. 25 falls in the scope of 0 and 50, the morphing is from base geometry to the first target. - 2. And since 25 is already half way between 0 and 50, so the real weight percentage change to - the first target is 50. - influence = (firstTargetShape - baseGeometry) * (25-0)/(50-0) * 100 - dstGeometry = baseGeometry + influence - - To calculate influence when the weight percentage is 75: - 1. 75 falls in the scope of 50 and 100, the morphing is from the first target to the second. - 2. And since 75 is already half way between 50 and 100, so the real weight percentage change - to the second target is 50. - influence = (secondTargetShape - firstTargetShape) * (75-50)/(100-50) * 100 - dstGeometry = firstTargetShape + influence - */ - - // Find the two shape indices for influence calculation according to the weight. - // Consider index of base geometry as -1. - - int lShapeCount = lChannel->GetTargetShapeCount(); - double* lFullWeights = lChannel->GetTargetShapeFullWeights(); - - // Find out which scope the lWeight falls in. - int lStartIndex = -1; - int lEndIndex = -1; - for(int lShapeIndex = 0; lShapeIndex 0 && lWeight <= lFullWeights[0]) - { - lEndIndex = 0; - break; - } - if(lWeight > lFullWeights[lShapeIndex] && lWeight < lFullWeights[lShapeIndex+1]) - { - lStartIndex = lShapeIndex; - lEndIndex = lShapeIndex + 1; - break; - } - } - - FbxShape* lStartShape = NULL; - FbxShape* lEndShape = NULL; - if(lStartIndex > -1) - { - lStartShape = lChannel->GetTargetShape(lStartIndex); - } - if(lEndIndex > -1) - { - lEndShape = lChannel->GetTargetShape(lEndIndex); - } - - //The weight percentage falls between base geometry and the first target shape. - if(lStartIndex == -1 && lEndShape) - { - double lEndWeight = lFullWeights[0]; - // Calculate the real weight. - lWeight = (lWeight/lEndWeight) * 100; - // Initialize the lDstVertexArray with vertex of base geometry. - memcpy(lDstVertexArray, lSrcVertexArray, lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the mesh vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lSrcVertexArray[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - //The weight percentage falls between two target shapes. - else if(lStartShape && lEndShape) - { - double lStartWeight = lFullWeights[lStartIndex]; - double lEndWeight = lFullWeights[lEndIndex]; - // Calculate the real weight. - lWeight = ((lWeight-lStartWeight)/(lEndWeight-lStartWeight)) * 100; - // Initialize the lDstVertexArray with vertex of the previous target shape geometry. - memcpy(lDstVertexArray, lStartShape->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the previous shape vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lStartShape->GetControlPoints()[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - }//If lChannel is valid - }//For each blend shape channel - }//For each blend shape deformer - - memcpy(pVertexArray, lDstVertexArray, lVertexCount * sizeof(FbxVector4)); - - delete [] lDstVertexArray; -} - -//Compute the transform matrix that the cluster will transform the vertex. -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose) -{ - FbxCluster::ELinkMode lClusterMode = pCluster->GetLinkMode(); - - FbxAMatrix lReferenceGlobalInitPosition; - FbxAMatrix lReferenceGlobalCurrentPosition; - FbxAMatrix lAssociateGlobalInitPosition; - FbxAMatrix lAssociateGlobalCurrentPosition; - FbxAMatrix lClusterGlobalInitPosition; - FbxAMatrix lClusterGlobalCurrentPosition; - - FbxAMatrix lReferenceGeometry; - FbxAMatrix lAssociateGeometry; - FbxAMatrix lClusterGeometry; - - FbxAMatrix lClusterRelativeInitPosition; - FbxAMatrix lClusterRelativeCurrentPositionInverse; - - if (lClusterMode == FbxCluster::eAdditive && pCluster->GetAssociateModel()) - { - pCluster->GetTransformAssociateModelMatrix(lAssociateGlobalInitPosition); - // Geometric transform of the model - lAssociateGeometry = GetGeometry(pCluster->GetAssociateModel()); - lAssociateGlobalInitPosition *= lAssociateGeometry; - lAssociateGlobalCurrentPosition = GetGlobalPosition(pCluster->GetAssociateModel(), pTime, pPose); - - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - lReferenceGlobalCurrentPosition = pGlobalPosition; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - // Multiply lClusterGlobalInitPosition by Geometric Transformation - lClusterGeometry = GetGeometry(pCluster->GetLink()); - lClusterGlobalInitPosition *= lClusterGeometry; - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the shift of the link relative to the reference. - //ModelM-1 * AssoM * AssoGX-1 * LinkGX * LinkM-1*ModelM - pVertexTransformMatrix = lReferenceGlobalInitPosition.Inverse() * lAssociateGlobalInitPosition * lAssociateGlobalCurrentPosition.Inverse() * - lClusterGlobalCurrentPosition * lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - } - else - { - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - lReferenceGlobalCurrentPosition = pGlobalPosition; - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the initial position of the link relative to the reference. - lClusterRelativeInitPosition = lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - - // Compute the current position of the link relative to the reference. - lClusterRelativeCurrentPositionInverse = lReferenceGlobalCurrentPosition.Inverse() * lClusterGlobalCurrentPosition; - - // Compute the shift of the link relative to the reference. - pVertexTransformMatrix = lClusterRelativeCurrentPositionInverse * lClusterRelativeInitPosition; - } -} - -// Deform the vertex array in classic linear way. -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - FbxAMatrix* lClusterDeformation = new FbxAMatrix[lVertexCount]; - memset(lClusterDeformation, 0, lVertexCount * sizeof(FbxAMatrix)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - if (lClusterMode == FbxCluster::eAdditive) - { - for (int i = 0; i < lVertexCount; ++i) - { - lClusterDeformation[i].SetIdentity(); - } - } - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - { - continue; - } - - // Compute the influence of the link on the vertex. - FbxAMatrix lInfluence = lVertexTransformMatrix; - MatrixScale(lInfluence, lWeight); - - if (lClusterMode == FbxCluster::eAdditive) - { - // Multiply with the product of the deformations on the vertex. - MatrixAddToDiagonal(lInfluence, 1.0 - lWeight); - lClusterDeformation[lIndex] = lInfluence * lClusterDeformation[lIndex]; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - // Add to the sum of the deformations on the vertex. - MatrixAdd(lClusterDeformation[lIndex], lInfluence); - - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeight = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeight != 0.0) - { - lDstVertex = lClusterDeformation[i].MultT(lSrcVertex); - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeight; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeight); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array in Dual Quaternion Skinning way. -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - - FbxDualQuaternion* lDQClusterDeformation = new FbxDualQuaternion[lVertexCount]; - memset(lDQClusterDeformation, 0, lVertexCount * sizeof(FbxDualQuaternion)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - FbxQuaternion lQ = lVertexTransformMatrix.GetQ(); - FbxVector4 lT = lVertexTransformMatrix.GetT(); - FbxDualQuaternion lDualQuaternion(lQ, lT); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - continue; - - // Compute the influence of the link on the vertex. - FbxDualQuaternion lInfluence = lDualQuaternion * lWeight; - if (lClusterMode == FbxCluster::eAdditive) - { - // Simply influenced by the dual quaternion. - lDQClusterDeformation[lIndex] = lInfluence; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - if(lClusterIndex == 0) - { - lDQClusterDeformation[lIndex] = lInfluence; - } - else - { - // Add to the sum of the deformations on the vertex. - // Make sure the deformation is accumulated in the same rotation direction. - // Use dot product to judge the sign. - double lSign = lDQClusterDeformation[lIndex].GetFirstQuaternion().DotProduct(lDualQuaternion.GetFirstQuaternion()); - if( lSign >= 0.0 ) - { - lDQClusterDeformation[lIndex] += lInfluence; - } - else - { - lDQClusterDeformation[lIndex] -= lInfluence; - } - } - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeightSum = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeightSum != 0.0) - { - lDQClusterDeformation[i].Normalize(); - lDstVertex = lDQClusterDeformation[i].Deform(lDstVertex); - - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeightSum; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeightSum); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lDQClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array according to the links contained in the mesh and the skinning type. -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - FbxSkin * lSkinDeformer = (FbxSkin *)pMesh->GetDeformer(0, FbxDeformer::eSkin); - FbxSkin::EType lSkinningType = lSkinDeformer->GetSkinningType(); - - if(lSkinningType == FbxSkin::eLinear || lSkinningType == FbxSkin::eRigid) - { - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eDualQuaternion) - { - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eBlend) - { - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lVertexArrayLinear = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayLinear, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - FbxVector4* lVertexArrayDQ = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayDQ, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayLinear, pPose); - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayDQ, pPose); - - // To blend the skinning according to the blend weights - // Final vertex = DQSVertex * blend weight + LinearVertex * (1- blend weight) - // DQSVertex: vertex that is deformed by dual quaternion skinning method; - // LinearVertex: vertex that is deformed by classic linear skinning method; - int lBlendWeightsCount = lSkinDeformer->GetControlPointIndicesCount(); - for(int lBWIndex = 0; lBWIndexGetControlPointBlendWeights()[lBWIndex]; - pVertexArray[lBWIndex] = lVertexArrayDQ[lBWIndex] * lBlendWeight + lVertexArrayLinear[lBWIndex] * (1 - lBlendWeight); - } - } -} - - -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray) -{ - FbxVertexCacheDeformer* lDeformer = static_cast(pMesh->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - unsigned int lVertexCount = (unsigned int)pMesh->GetControlPointsCount(); - bool lReadSucceed = false; - float* lReadBuf = NULL; - unsigned int BufferSize = 0; - - if (lDeformer->Type.Get() != FbxVertexCacheDeformer::ePositions) - // only process positions - return; - - unsigned int Length = 0; - lCache->Read(NULL, Length, FBXSDK_TIME_ZERO, lChannelIndex); - if (Length != lVertexCount*3) - // the content of the cache is by vertex not by control points (we don't support it here) - return; - - lReadSucceed = lCache->Read(&lReadBuf, BufferSize, pTime, lChannelIndex); - if (lReadSucceed) - { - unsigned int lReadBufIndex = 0; - - while (lReadBufIndex < 3*lVertexCount) - { - // In statements like "pVertexArray[lReadBufIndex/3].SetAt(2, lReadBuf[lReadBufIndex++])", - // on Mac platform, "lReadBufIndex++" is evaluated before "lReadBufIndex/3". - // So separate them. - pVertexArray[lReadBufIndex/3].mData[0] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[1] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[2] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - } - } -} - - -// Draw an oriented camera box where the node is located. -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition) -{ - FbxAMatrix lCameraGlobalPosition; - FbxVector4 lCameraPosition, lCameraDefaultDirection, lCameraInterestPosition; - - lCameraPosition = pGlobalPosition.GetT(); - - // By default, FBX cameras point towards the X positive axis. - FbxVector4 lXPositiveAxis(1.0, 0.0, 0.0); - lCameraDefaultDirection = lCameraPosition + lXPositiveAxis; - - lCameraGlobalPosition = pGlobalPosition; - - // If the camera is linked to an interest, get the interest position. - if (pNode->GetTarget()) - { - lCameraInterestPosition = GetGlobalPosition(pNode->GetTarget(), pTime).GetT(); - - // Compute the required rotation to make the camera point to it's interest. - FbxVector4 lCameraDirection; - FbxVector4::AxisAlignmentInEulerAngle(lCameraPosition, - lCameraDefaultDirection, - lCameraInterestPosition, - lCameraDirection); - - // Must override the camera rotation - // to make it point to it's interest. - lCameraGlobalPosition.SetR(lCameraDirection); - } - - // Get the camera roll. - FbxCamera* cam = pNode->GetCamera(); - double lRoll = 0; - - if (cam) - { - lRoll = cam->Roll.Get(); - FbxAnimCurve* fc = cam->Roll.GetCurve(pAnimLayer); - if (fc) fc->Evaluate(pTime); - } - GlDrawCamera(lCameraGlobalPosition, lRoll); -} - - -// Draw a colored sphere or cone where the node is located. -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition) -{ - const FbxLight* lLight = pNode->GetLight(); - if (!lLight) - return; - - // Must rotate the light's global position because - // FBX lights point towards the Y negative axis. - FbxAMatrix lLightRotation; - const FbxVector4 lYNegativeAxis(-90.0, 0.0, 0.0); - lLightRotation.SetR(lYNegativeAxis); - const FbxAMatrix lLightGlobalPosition = pGlobalPosition * lLightRotation; - - glPushMatrix(); - glMultMatrixd((const double*)lLightGlobalPosition); - - const LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - if (lLightCache) - { - lLightCache->SetLight(pTime); - } - - glPopMatrix(); -} - - -// Draw a cross hair where the node is located. -void DrawNull(FbxAMatrix& pGlobalPosition) -{ - GlDrawCrossHair(pGlobalPosition); -} - - -// Scale all the elements of a matrix. -void MatrixScale(FbxAMatrix& pMatrix, double pValue) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pMatrix[i][j] *= pValue; - } - } -} - - -// Add a value to all the elements in the diagonal of the matrix. -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue) -{ - pMatrix[0][0] += pValue; - pMatrix[1][1] += pValue; - pMatrix[2][2] += pValue; - pMatrix[3][3] += pValue; -} - - -// Sum two matrices element by element. -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pDstMatrix[i][j] += pSrcMatrix[i][j]; - } - } -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.h b/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.h deleted file mode 100644 index 95f3221..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/DrawScene.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_SCENE_H -#define _DRAW_SCENE_H - -#include "GlFunctions.h" - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose = NULL); - -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode); - -#endif // #ifndef _DRAW_SCENE_H - - - - - - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/DrawText.cxx b/sdk/Darwin/2019.2/samples/ViewScene/DrawText.cxx deleted file mode 100644 index f3db78a..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/DrawText.cxx +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawText.h" - -namespace -{ - const float DEFAULT_POINT_SIZE = 20.f; - const float DEFAULT_GAP = 0.f; - - // The font texture contains all printable ASCII (0x20-0x7E) in value order. - const char * TEXTURE_FILENAME = "FBX_ASCII_TEXTURE"; - const int TEXTURE_WIDTH = 256; - const int TEXTURE_HEIGHT = 256; - const char TEXTURE_MIN_GLYPH = 0x20; - const char TEXTURE_MAX_GLYPH = 0x7E; - const int TEXTURE_GLYPH_COUNT = TEXTURE_MAX_GLYPH - TEXTURE_MIN_GLYPH + 1; -} - -DrawText::DrawText() : mGlyph(NULL), mTextureName(0), mPointSize(DEFAULT_POINT_SIZE), mGap(DEFAULT_GAP) -{ - Initialize(); -} - -DrawText::~DrawText() -{ - delete [] mGlyph; - - glDeleteTextures(1, &mTextureName); -} - -void DrawText::Display(const char * pText) -{ - if (!mGlyph || mTextureName == 0) - return; - - // Push OpenGL attributes. - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_COLOR_BUFFER_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - glBindTexture(GL_TEXTURE_2D, mTextureName); - glEnable(GL_TEXTURE_2D); - - // Blend with background color - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - // Visible for double side - glDisable(GL_CULL_FACE); - - // Blend with foreground color - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glPushMatrix(); - const char * pCharacter = pText; - while (*pCharacter != '\0') - { - if (*pCharacter == '\n') - { - glPopMatrix(); - // Move to the next line, left align - glTranslatef(0, -mPointSize, 0); - glPushMatrix(); - } - else - { - Glyph * lGlyph = mGlyph + (*pCharacter - TEXTURE_MIN_GLYPH); - if (lGlyph) - { - // Draw a rectangle with texture, alpha on. - glBegin(GL_POLYGON); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_top * mPointSize); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_top * mPointSize); - glEnd(); - - const float advance = lGlyph->advance * mPointSize + mGap; - glTranslatef(advance, 0, 0); - } - else - { - FBXSDK_printf("Invalid character: %c.\n", *pCharacter); - } - - } - ++pCharacter; - } - glPopMatrix(); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); -} - -void DrawText::Initialize() -{ - FILE * lFile = NULL; - FBXSDK_fopen(lFile, TEXTURE_FILENAME, "rb"); - if (lFile == NULL) - { - FBXSDK_printf("Warning: Failed to open %s and no text will be displayed.\n", TEXTURE_FILENAME); - return; - } - - // Load the texture coordinates and vertex coordinates. - mGlyph = new Glyph[TEXTURE_GLYPH_COUNT]; - fread(mGlyph, sizeof(Glyph), TEXTURE_GLYPH_COUNT, lFile); - - // Load the texture data, two bytes every pixel. - // One byte for luminance, always be 0xFF; The other for alpha. - const int lTextureSize = TEXTURE_WIDTH * TEXTURE_HEIGHT * 2; - unsigned char * lTextureData = new unsigned char[lTextureSize]; - if (fread(lTextureData, 1, lTextureSize, lFile) == lTextureSize) - { - // Save the texture data in GPU - glGenTextures(1, &mTextureName); - glBindTexture(GL_TEXTURE_2D, mTextureName); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, lTextureData); - glBindTexture(GL_TEXTURE_2D, 0); - } - delete [] lTextureData; - - fclose(lFile); -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/DrawText.h b/sdk/Darwin/2019.2/samples/ViewScene/DrawText.h deleted file mode 100644 index 6171a88..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/DrawText.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_TEXT_H -#define _DRAW_TEXT_H - -#include "GlFunctions.h" - -// Utility classes for display text in OpenGL. - -class DrawText -{ -public: - DrawText(); - ~DrawText(); - - // Set the size of glyphs. - void SetPointSize(float pPointSize) { mPointSize = pPointSize; } - - // Set the extra horizontal size between two consecutive glyphs. - void SetGap(float pGap) { mGap = pGap; } - - // Display a string (ASCII only). - void Display(const char * pText); - -private: - // Initialize with pre-generated texture, containing glyph coordinates and bitmaps. - void Initialize(); - - struct Glyph - { - float advance; // horizontal distance from the origin of this glyph to next origin. - float texture_left; // texture coordinates of this glyph, range in [0, 1] - float texture_right; - float texture_bottom; - float texture_top; - float vertex_left; // vertex coordinates of this glyph - float vertex_right; // range almost in [0, 1], except some glyph with descend like 'g' or 'p' - float vertex_bottom; - float vertex_top; - }; - - Glyph * mGlyph; - GLuint mTextureName; - - float mPointSize; - float mGap; -}; - -#endif // _DRAW_TEXT_H - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE b/sdk/Darwin/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE deleted file mode 100644 index ecb7a6e..0000000 Binary files a/sdk/Darwin/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE and /dev/null differ diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GL/glew.h b/sdk/Darwin/2019.2/samples/ViewScene/GL/glew.h deleted file mode 100644 index af53170..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GL/glew.h +++ /dev/null @@ -1,15304 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * 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 - * BRIAN PAUL 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. - */ - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#ifndef __glew_h__ -#define __glew_h__ -#define __GLEW_H__ - -#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) -#error gl.h included before glew.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error glext.h included before glew.h -#endif -#if defined(__gl_ATI_h_) -#error glATI.h included before glew.h -#endif - -#define __gl_h_ -#define __GL_H__ -#define __X_GL_H -#define __glext_h_ -#define __GLEXT_H_ -#define __gl_ATI_h_ - -#if defined(_WIN32) - -/* - * GLEW does not include to avoid name space pollution. - * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t - * defined properly. - */ -/* */ -#ifndef APIENTRY -#define GLEW_APIENTRY_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define APIENTRY __stdcall -# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -#endif -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# endif -#endif -/* */ -#ifndef CALLBACK -#define GLEW_CALLBACK_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define CALLBACK __attribute__ ((__stdcall__)) -# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -#endif -/* and */ -#ifndef WINGDIAPI -#define GLEW_WINGDIAPI_DEFINED -#define WINGDIAPI __declspec(dllimport) -#endif -/* */ -#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -#endif -/* */ -#if !defined(_W64) -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif -#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) -# ifdef _WIN64 -typedef __int64 ptrdiff_t; -# else -typedef _W64 int ptrdiff_t; -# endif -# define _PTRDIFF_T_DEFINED -# define _PTRDIFF_T_ -#endif - -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# else -# define GLAPI WINGDIAPI -# endif -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -/* - * GLEW_STATIC needs to be set when using the static version. - * GLEW_BUILD is set when building the DLL version. - */ -#ifdef GLEW_STATIC -# define GLEWAPI extern -#else -# ifdef GLEW_BUILD -# define GLEWAPI extern __declspec(dllexport) -# else -# define GLEWAPI extern __declspec(dllimport) -# endif -#endif - -#else /* _UNIX */ - -/* - * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO - * C. On my system, this amounts to _3 lines_ of included code, all of - * them pretty much harmless. If you know of a way of detecting 32 vs - * 64 _targets_ at compile time you are free to replace this with - * something that's portable. For now, _this_ is the portable solution. - * (mem, 2004-01-04) - */ - -#include - -/* SGI MIPSPro doesn't like stdint.h in C++ mode */ - -#if defined(__sgi) && !defined(__GNUC__) -#include -#else -#include -#endif - -#define GLEW_APIENTRY_DEFINED -#define APIENTRY -#define GLEWAPI extern - -/* */ -#ifndef GLAPI -#define GLAPI extern -#endif -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#endif /* _WIN32 */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ - -#ifndef GL_VERSION_1_1 -#define GL_VERSION_1_1 1 - -typedef unsigned int GLenum; -typedef unsigned int GLbitfield; -typedef unsigned int GLuint; -typedef int GLint; -typedef int GLsizei; -typedef unsigned char GLboolean; -typedef signed char GLbyte; -typedef short GLshort; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLulong; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; -#if defined(_MSC_VER) -# if _MSC_VER < 1400 -typedef __int64 GLint64EXT; -typedef unsigned __int64 GLuint64EXT; -# else -typedef signed long long GLint64EXT; -typedef unsigned long long GLuint64EXT; -# endif -#else -# if defined(__MINGW32__) || defined(__CYGWIN__) -#include -# endif -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#endif -typedef GLint64EXT GLint64; -typedef GLuint64EXT GLuint64; -typedef struct __GLsync *GLsync; - -typedef char GLchar; -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, - GLenum category, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For ARB_debug_output */ - -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, - GLenum type, - GLuint id, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For GL_ARB_cl_event */ - -typedef struct _cl_context *cl_context; -typedef struct _cl_event *cl_event; - -#define GL_ACCUM 0x0100 -#define GL_LOAD 0x0101 -#define GL_RETURN 0x0102 -#define GL_MULT 0x0103 -#define GL_ADD 0x0104 -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000fffff -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_TRUE 1 -#define GL_FALSE 0 -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LIST_MODE 0x0B30 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_SHADE_MODEL 0x0B54 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_FOG 0x0B60 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_NORMALIZE 0x0BA1 -#define GL_VIEWPORT 0x0BA2 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_INDEX_MODE 0x0C30 -#define GL_RGBA_MODE 0x0C31 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_RENDER_MODE 0x0C40 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_INDEX_BITS 0x0D51 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_COLOR_INDEX 0x1900 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_BITMAP 0x1A00 -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_RENDER 0x1C00 -#define GL_FEEDBACK 0x1C01 -#define GL_SELECT 0x1C02 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_ENV 0x2300 -#define GL_EYE_LINEAR 0x2400 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_SPHERE_MAP 0x2402 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_PLANE 0x2502 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D -#define GL_LOGIC_OP GL_INDEX_LOGIC_OP -#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 - -GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); -GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); -GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -GLAPI void GLAPIENTRY glArrayElement (GLint i); -GLAPI void GLAPIENTRY glBegin (GLenum mode); -GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); -GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GLAPI void GLAPIENTRY glCallList (GLuint list); -GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -GLAPI void GLAPIENTRY glClear (GLbitfield mask); -GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); -GLAPI void GLAPIENTRY glClearIndex (GLfloat c); -GLAPI void GLAPIENTRY glClearStencil (GLint s); -GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); -GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); -GLAPI void GLAPIENTRY glColor3iv (const GLint *v); -GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); -GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); -GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); -GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); -GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -GLAPI void GLAPIENTRY glColor4iv (const GLint *v); -GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); -GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glCullFace (GLenum mode); -GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); -GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GLAPI void GLAPIENTRY glDepthFunc (GLenum func); -GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); -GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); -GLAPI void GLAPIENTRY glDisable (GLenum cap); -GLAPI void GLAPIENTRY glDisableClientState (GLenum array); -GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); -GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); -GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); -GLAPI void GLAPIENTRY glEnable (GLenum cap); -GLAPI void GLAPIENTRY glEnableClientState (GLenum array); -GLAPI void GLAPIENTRY glEnd (void); -GLAPI void GLAPIENTRY glEndList (void); -GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); -GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); -GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); -GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); -GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); -GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); -GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -GLAPI void GLAPIENTRY glFinish (void); -GLAPI void GLAPIENTRY glFlush (void); -GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glFrontFace (GLenum mode); -GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); -GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); -GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); -GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); -GLAPI GLenum GLAPIENTRY glGetError (void); -GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v); -GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v); -GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v); -GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values); -GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values); -GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values); -GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, GLvoid* *params); -GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); -GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); -GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); -GLAPI void GLAPIENTRY glIndexMask (GLuint mask); -GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glIndexd (GLdouble c); -GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); -GLAPI void GLAPIENTRY glIndexf (GLfloat c); -GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); -GLAPI void GLAPIENTRY glIndexi (GLint c); -GLAPI void GLAPIENTRY glIndexiv (const GLint *c); -GLAPI void GLAPIENTRY glIndexs (GLshort c); -GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); -GLAPI void GLAPIENTRY glIndexub (GLubyte c); -GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); -GLAPI void GLAPIENTRY glInitNames (void); -GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); -GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); -GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); -GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); -GLAPI void GLAPIENTRY glLineWidth (GLfloat width); -GLAPI void GLAPIENTRY glListBase (GLuint base); -GLAPI void GLAPIENTRY glLoadIdentity (void); -GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glLoadName (GLuint name); -GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); -GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); -GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); -GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); -GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); -GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); -GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); -GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void GLAPIENTRY glPassThrough (GLfloat token); -GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values); -GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values); -GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values); -GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor); -GLAPI void GLAPIENTRY glPointSize (GLfloat size); -GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask); -GLAPI void GLAPIENTRY glPopAttrib (void); -GLAPI void GLAPIENTRY glPopClientAttrib (void); -GLAPI void GLAPIENTRY glPopMatrix (void); -GLAPI void GLAPIENTRY glPopName (void); -GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushMatrix (void); -GLAPI void GLAPIENTRY glPushName (GLuint name); -GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); -GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); -GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); -GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); -GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); -GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); -GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); -GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); -GLAPI void GLAPIENTRY glShadeModel (GLenum mode); -GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GLAPI void GLAPIENTRY glStencilMask (GLuint mask); -GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s); -GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); -GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord1i (GLint s); -GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); -GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); -GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); -GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); -GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) - -#endif /* GL_VERSION_1_1 */ - -/* ---------------------------------- GLU ---------------------------------- */ - -/* this is where we can safely include GLU */ -#if defined(__APPLE__) && defined(__MACH__) -#include -#else -#include -#endif - -/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 - -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_RESCALE_NORMAL 0x803A -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E - -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); - -#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) -#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) -#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) -#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) - -#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) - -#endif /* GL_VERSION_1_2 */ - -/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ - -#ifndef GL_VERSION_1_2_1 -#define GL_VERSION_1_2_1 1 - -#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) - -#endif /* GL_VERSION_1_2_1 */ - -/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 - -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_SUBTRACT 0x84E7 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#define GL_MULTISAMPLE_BIT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); - -#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) -#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) -#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) -#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) -#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) -#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) -#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) -#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) -#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) -#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) -#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) -#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) -#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) -#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) -#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) -#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) -#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) -#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) -#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) -#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) -#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) -#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) -#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) -#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) -#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) -#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) -#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) -#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) -#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) -#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) -#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) -#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) -#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) -#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) -#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) -#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) -#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) -#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) -#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) -#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) -#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) -#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) -#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) -#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) -#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) -#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) - -#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) - -#endif /* GL_VERSION_1_3 */ - -/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 - -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_COMPARE_R_TO_TEXTURE 0x884E - -typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); - -#define glBlendColor GLEW_GET_FUN(__glewBlendColor) -#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) -#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) -#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) -#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) -#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) -#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) -#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) -#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) -#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) -#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) -#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) -#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) -#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) -#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) -#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) -#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) -#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) -#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) -#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) -#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) -#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) -#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) -#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) -#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) -#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) -#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) -#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) -#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) -#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) -#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) -#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) -#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) -#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) -#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) -#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) -#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) -#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) -#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) -#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) -#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) -#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) -#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) -#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) -#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) -#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) -#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) - -#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) - -#endif /* GL_VERSION_1_4 */ - -/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 - -#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE -#define GL_FOG_COORD GL_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY -#define GL_SRC0_RGB GL_SOURCE0_RGB -#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER -#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE -#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA -#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE -#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA -#define GL_SRC1_RGB GL_SOURCE1_RGB -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING -#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA -#define GL_SRC2_RGB GL_SOURCE2_RGB -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 - -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); -typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); - -#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) -#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) -#define glBufferData GLEW_GET_FUN(__glewBufferData) -#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) -#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) -#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) -#define glEndQuery GLEW_GET_FUN(__glewEndQuery) -#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) -#define glGenQueries GLEW_GET_FUN(__glewGenQueries) -#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) -#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) -#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) -#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) -#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) -#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) -#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) -#define glIsQuery GLEW_GET_FUN(__glewIsQuery) -#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) -#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) - -#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) - -#endif /* GL_VERSION_1_5 */ - -/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 - -#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 - -typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLint obj, GLsizei maxLength, GLsizei* length, GLchar* source); -typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - -#define glAttachShader GLEW_GET_FUN(__glewAttachShader) -#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) -#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) -#define glCompileShader GLEW_GET_FUN(__glewCompileShader) -#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) -#define glCreateShader GLEW_GET_FUN(__glewCreateShader) -#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) -#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) -#define glDetachShader GLEW_GET_FUN(__glewDetachShader) -#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) -#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) -#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) -#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) -#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) -#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) -#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) -#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) -#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) -#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) -#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) -#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) -#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) -#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) -#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) -#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) -#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) -#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) -#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) -#define glIsProgram GLEW_GET_FUN(__glewIsProgram) -#define glIsShader GLEW_GET_FUN(__glewIsShader) -#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) -#define glShaderSource GLEW_GET_FUN(__glewShaderSource) -#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) -#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) -#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) -#define glUniform1f GLEW_GET_FUN(__glewUniform1f) -#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) -#define glUniform1i GLEW_GET_FUN(__glewUniform1i) -#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) -#define glUniform2f GLEW_GET_FUN(__glewUniform2f) -#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) -#define glUniform2i GLEW_GET_FUN(__glewUniform2i) -#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) -#define glUniform3f GLEW_GET_FUN(__glewUniform3f) -#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) -#define glUniform3i GLEW_GET_FUN(__glewUniform3i) -#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) -#define glUniform4f GLEW_GET_FUN(__glewUniform4f) -#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) -#define glUniform4i GLEW_GET_FUN(__glewUniform4i) -#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) -#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) -#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) -#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) -#define glUseProgram GLEW_GET_FUN(__glewUseProgram) -#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) -#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) -#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) -#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) -#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) -#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) -#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) -#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) -#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) -#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) -#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) -#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) -#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) -#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) -#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) -#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) -#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) -#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) -#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) -#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) -#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) -#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) -#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) -#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) -#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) -#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) -#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) -#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) -#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) -#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) -#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) -#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) -#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) -#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) -#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) -#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) -#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) -#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) - -#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) - -#endif /* GL_VERSION_2_0 */ - -/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 - -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B - -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); - -#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) -#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) -#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) -#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) -#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) -#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) - -#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) - -#endif /* GL_VERSION_2_1 */ - -/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ - -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 - -#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES -#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 -#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 -#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 -#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB -#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 -#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 -#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 -#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_DEPTH_BUFFER 0x8223 -#define GL_STENCIL_BUFFER 0x8224 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_ALPHA_INTEGER 0x8D97 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); -typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLint*); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLchar **, GLenum); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); - -#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) -#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) -#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) -#define glClampColor GLEW_GET_FUN(__glewClampColor) -#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) -#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) -#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) -#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) -#define glColorMaski GLEW_GET_FUN(__glewColorMaski) -#define glDisablei GLEW_GET_FUN(__glewDisablei) -#define glEnablei GLEW_GET_FUN(__glewEnablei) -#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) -#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) -#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) -#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) -#define glGetStringi GLEW_GET_FUN(__glewGetStringi) -#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) -#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) -#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) -#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) -#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) -#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) -#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) -#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) -#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) -#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) -#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) -#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) -#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) -#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) -#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) -#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) -#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) -#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) -#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) -#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) -#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) -#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) -#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) -#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) -#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) -#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) -#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) -#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) -#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) -#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) -#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) -#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) -#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) -#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) -#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) -#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) -#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) -#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) -#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) - -#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) - -#endif /* GL_VERSION_3_0 */ - -/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ - -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 - -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint); - -#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) -#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) -#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) -#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) - -#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) - -#endif /* GL_VERSION_3_1 */ - -/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ - -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 - -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum, GLenum, GLint64 *); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *); - -#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) -#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) -#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) - -#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) - -#endif /* GL_VERSION_3_2 */ - -/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ - -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_RGB10_A2UI 0x906F - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) - -#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) - -#endif /* GL_VERSION_3_3 */ - -/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ - -#ifndef GL_VERSION_4_0 -#define GL_VERSION_4_0 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); - -#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) -#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) -#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) -#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) -#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) - -#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) - -#endif /* GL_VERSION_4_0 */ - -/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ - -#ifndef GL_VERSION_4_1 -#define GL_VERSION_4_1 1 - -#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) - -#endif /* GL_VERSION_4_1 */ - -/* -------------------------- GL_3DFX_multisample -------------------------- */ - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 - -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 - -#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) - -#endif /* GL_3DFX_multisample */ - -/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 - -typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); - -#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) - -#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) - -#endif /* GL_3DFX_tbuffer */ - -/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 - -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 - -#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) - -#endif /* GL_3DFX_texture_compression_FXT1 */ - -/* ----------------------- GL_AMD_conservative_depth ----------------------- */ - -#ifndef GL_AMD_conservative_depth -#define GL_AMD_conservative_depth 1 - -#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) - -#endif /* GL_AMD_conservative_depth */ - -/* -------------------------- GL_AMD_debug_output -------------------------- */ - -#ifndef GL_AMD_debug_output -#define GL_AMD_debug_output 1 - -#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 -#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 -#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 -#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A -#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B -#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C -#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D -#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E -#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F -#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, char* message); - -#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) -#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) -#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) -#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) - -#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) - -#endif /* GL_AMD_debug_output */ - -/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ - -#ifndef GL_AMD_draw_buffers_blend -#define GL_AMD_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); - -#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) -#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) -#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) -#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) - -#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) - -#endif /* GL_AMD_draw_buffers_blend */ - -/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ - -#ifndef GL_AMD_name_gen_delete -#define GL_AMD_name_gen_delete 1 - -#define GL_DATA_BUFFER_AMD 0x9151 -#define GL_PERFORMANCE_MONITOR_AMD 0x9152 -#define GL_QUERY_OBJECT_AMD 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 -#define GL_SAMPLER_OBJECT_AMD 0x9155 - -typedef void (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); -typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); - -#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) -#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) -#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) - -#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) - -#endif /* GL_AMD_name_gen_delete */ - -/* ----------------------- GL_AMD_performance_monitor ---------------------- */ - -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 - -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 - -typedef void (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void* data); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char *counterString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, char *groupString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); - -#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) -#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) -#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) -#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) -#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) -#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) -#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) -#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) -#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) -#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) -#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) - -#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) - -#endif /* GL_AMD_performance_monitor */ - -/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ - -#ifndef GL_AMD_seamless_cubemap_per_texture -#define GL_AMD_seamless_cubemap_per_texture 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F - -#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) - -#endif /* GL_AMD_seamless_cubemap_per_texture */ - -/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ - -#ifndef GL_AMD_shader_stencil_export -#define GL_AMD_shader_stencil_export 1 - -#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) - -#endif /* GL_AMD_shader_stencil_export */ - -/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ - -#ifndef GL_AMD_texture_texture4 -#define GL_AMD_texture_texture4 1 - -#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) - -#endif /* GL_AMD_texture_texture4 */ - -/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ - -#ifndef GL_AMD_transform_feedback3_lines_triangles -#define GL_AMD_transform_feedback3_lines_triangles 1 - -#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) - -#endif /* GL_AMD_transform_feedback3_lines_triangles */ - -/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ - -#ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator 1 - -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_DISCRETE_AMD 0x9006 -#define GL_CONTINUOUS_AMD 0x9007 - -typedef void (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); - -#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) -#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) - -#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) - -#endif /* GL_AMD_vertex_shader_tessellator */ - -/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ - -#ifndef GL_APPLE_aux_depth_stencil -#define GL_APPLE_aux_depth_stencil 1 - -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 - -#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) - -#endif /* GL_APPLE_aux_depth_stencil */ - -/* ------------------------ GL_APPLE_client_storage ------------------------ */ - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 - -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 - -#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) - -#endif /* GL_APPLE_client_storage */ - -/* ------------------------- GL_APPLE_element_array ------------------------ */ - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 - -#define GL_ELEMENT_ARRAY_APPLE 0x8A0C -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); - -#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) -#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) -#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) -#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) -#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) - -#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) - -#endif /* GL_APPLE_element_array */ - -/* ----------------------------- GL_APPLE_fence ---------------------------- */ - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 - -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); - -#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) -#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) -#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) -#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) -#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) -#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) -#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) -#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) - -#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) - -#endif /* GL_APPLE_fence */ - -/* ------------------------- GL_APPLE_float_pixels ------------------------- */ - -#ifndef GL_APPLE_float_pixels -#define GL_APPLE_float_pixels 1 - -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F - -#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) - -#endif /* GL_APPLE_float_pixels */ - -/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 - -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 - -typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); - -#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) -#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) - -#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) - -#endif /* GL_APPLE_flush_buffer_range */ - -/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ - -#ifndef GL_APPLE_object_purgeable -#define GL_APPLE_object_purgeable 1 - -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_RETAINED_APPLE 0x8A1B -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_PURGEABLE_APPLE 0x8A1D - -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); - -#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) -#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) -#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) - -#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) - -#endif /* GL_APPLE_object_purgeable */ - -/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ - -#ifndef GL_APPLE_pixel_buffer -#define GL_APPLE_pixel_buffer 1 - -#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 - -#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) - -#endif /* GL_APPLE_pixel_buffer */ - -/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ - -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 - -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#define GL_RGB_422_APPLE 0x8A1F - -#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) - -#endif /* GL_APPLE_rgb_422 */ - -/* --------------------------- GL_APPLE_row_bytes -------------------------- */ - -#ifndef GL_APPLE_row_bytes -#define GL_APPLE_row_bytes 1 - -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 - -#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) - -#endif /* GL_APPLE_row_bytes */ - -/* ------------------------ GL_APPLE_specular_vector ----------------------- */ - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 - -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 - -#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) - -#endif /* GL_APPLE_specular_vector */ - -/* ------------------------- GL_APPLE_texture_range ------------------------ */ - -#ifndef GL_APPLE_texture_range -#define GL_APPLE_texture_range 1 - -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); -typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); - -#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) -#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) - -#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) - -#endif /* GL_APPLE_texture_range */ - -/* ------------------------ GL_APPLE_transform_hint ------------------------ */ - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 - -#define GL_TRANSFORM_HINT_APPLE 0x85B1 - -#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) - -#endif /* GL_APPLE_transform_hint */ - -/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) -#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) -#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) -#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) - -#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) - -#endif /* GL_APPLE_vertex_array_object */ - -/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CLIENT_APPLE 0x85B4 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) -#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) -#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) - -#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) - -#endif /* GL_APPLE_vertex_array_range */ - -/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ - -#ifndef GL_APPLE_vertex_program_evaluators -#define GL_APPLE_vertex_program_evaluators 1 - -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 -#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 -#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 -#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 -#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 -#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 -#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 - -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); - -#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) -#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) -#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) -#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) -#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) -#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) -#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) - -#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) - -#endif /* GL_APPLE_vertex_program_evaluators */ - -/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 - -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB - -#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) - -#endif /* GL_APPLE_ycbcr_422 */ - -/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ - -#ifndef GL_ARB_ES2_compatibility -#define GL_ARB_ES2_compatibility 1 - -#define GL_FIXED 0x140C -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); -typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid*binary, GLsizei length); - -#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) -#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) -#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) -#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) -#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) - -#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) - -#endif /* GL_ARB_ES2_compatibility */ - -/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ - -#ifndef GL_ARB_blend_func_extended -#define GL_ARB_blend_func_extended 1 - -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name); - -#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) -#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) - -#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) - -#endif /* GL_ARB_blend_func_extended */ - -/* ---------------------------- GL_ARB_cl_event ---------------------------- */ - -#ifndef GL_ARB_cl_event -#define GL_ARB_cl_event 1 - -#define GL_SYNC_CL_EVENT_ARB 0x8240 -#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 - -typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); - -#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) - -#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) - -#endif /* GL_ARB_cl_event */ - -/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 - -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D - -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); - -#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) - -#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) - -#endif /* GL_ARB_color_buffer_float */ - -/* -------------------------- GL_ARB_compatibility ------------------------- */ - -#ifndef GL_ARB_compatibility -#define GL_ARB_compatibility 1 - -#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) - -#endif /* GL_ARB_compatibility */ - -/* --------------------------- GL_ARB_copy_buffer -------------------------- */ - -#ifndef GL_ARB_copy_buffer -#define GL_ARB_copy_buffer 1 - -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 - -typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); - -#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) - -#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) - -#endif /* GL_ARB_copy_buffer */ - -/* -------------------------- GL_ARB_debug_output -------------------------- */ - -#ifndef GL_ARB_debug_output -#define GL_ARB_debug_output 1 - -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 -#define GL_DEBUG_SOURCE_API_ARB 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A -#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B -#define GL_DEBUG_TYPE_ERROR_ARB 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E -#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 -#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 -#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog); - -#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) -#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) -#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) -#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) - -#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) - -#endif /* GL_ARB_debug_output */ - -/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ - -#ifndef GL_ARB_depth_buffer_float -#define GL_ARB_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD - -#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) - -#endif /* GL_ARB_depth_buffer_float */ - -/* --------------------------- GL_ARB_depth_clamp -------------------------- */ - -#ifndef GL_ARB_depth_clamp -#define GL_ARB_depth_clamp 1 - -#define GL_DEPTH_CLAMP 0x864F - -#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) - -#endif /* GL_ARB_depth_clamp */ - -/* -------------------------- GL_ARB_depth_texture ------------------------- */ - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B - -#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) - -#endif /* GL_ARB_depth_texture */ - -/* -------------------------- GL_ARB_draw_buffers -------------------------- */ - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) - -#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) - -#endif /* GL_ARB_draw_buffers */ - -/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ - -#ifndef GL_ARB_draw_buffers_blend -#define GL_ARB_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); - -#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) -#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) -#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) -#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) - -#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) - -#endif /* GL_ARB_draw_buffers_blend */ - -/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ - -#ifndef GL_ARB_draw_elements_base_vertex -#define GL_ARB_draw_elements_base_vertex 1 - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei* count, GLenum type, GLvoid**indices, GLsizei primcount, GLint *basevertex); - -#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) -#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) -#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) -#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) - -#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) - -#endif /* GL_ARB_draw_elements_base_vertex */ - -/* -------------------------- GL_ARB_draw_indirect ------------------------- */ - -#ifndef GL_ARB_draw_indirect -#define GL_ARB_draw_indirect 1 - -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect); - -#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) -#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) - -#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) - -#endif /* GL_ARB_draw_indirect */ - -/* ------------------------- GL_ARB_draw_instanced ------------------------- */ - -#ifndef GL_ARB_draw_instanced -#define GL_ARB_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); - -#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) -#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) - -#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) - -#endif /* GL_ARB_draw_instanced */ - -/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ - -#ifndef GL_ARB_explicit_attrib_location -#define GL_ARB_explicit_attrib_location 1 - -#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) - -#endif /* GL_ARB_explicit_attrib_location */ - -/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ - -#ifndef GL_ARB_fragment_coord_conventions -#define GL_ARB_fragment_coord_conventions 1 - -#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) - -#endif /* GL_ARB_fragment_coord_conventions */ - -/* ------------------------ GL_ARB_fragment_program ------------------------ */ - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 - -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 - -#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) - -#endif /* GL_ARB_fragment_program */ - -/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 - -#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) - -#endif /* GL_ARB_fragment_program_shadow */ - -/* ------------------------- GL_ARB_fragment_shader ------------------------ */ - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 - -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B - -#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) - -#endif /* GL_ARB_fragment_shader */ - -/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ - -#ifndef GL_ARB_framebuffer_object -#define GL_ARB_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_INDEX 0x8222 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_SRGB 0x8C40 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) -#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) -#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) -#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) -#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) -#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) -#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) -#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) -#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) -#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) -#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) -#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) -#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) -#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) -#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) -#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) -#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) -#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) -#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) -#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) - -#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) - -#endif /* GL_ARB_framebuffer_object */ - -/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ - -#ifndef GL_ARB_framebuffer_sRGB -#define GL_ARB_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB 0x8DB9 - -#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) - -#endif /* GL_ARB_framebuffer_sRGB */ - -/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ - -#ifndef GL_ARB_geometry_shader4 -#define GL_ARB_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_ARB 0xA -#define GL_LINE_STRIP_ADJACENCY_ARB 0xB -#define GL_TRIANGLES_ADJACENCY_ARB 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) -#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) -#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) -#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) - -#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) - -#endif /* GL_ARB_geometry_shader4 */ - -/* ----------------------- GL_ARB_get_program_binary ----------------------- */ - -#ifndef GL_ARB_get_program_binary -#define GL_ARB_get_program_binary 1 - -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, GLvoid*binary); -typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); - -#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) -#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) -#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) - -#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) - -#endif /* GL_ARB_get_program_binary */ - -/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ - -#ifndef GL_ARB_gpu_shader5 -#define GL_ARB_gpu_shader5 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) - -#endif /* GL_ARB_gpu_shader5 */ - -/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ - -#ifndef GL_ARB_gpu_shader_fp64 -#define GL_ARB_gpu_shader_fp64 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); - -#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) -#define glProgramUniform1dEXT GLEW_GET_FUN(__glewProgramUniform1dEXT) -#define glProgramUniform1dvEXT GLEW_GET_FUN(__glewProgramUniform1dvEXT) -#define glProgramUniform2dEXT GLEW_GET_FUN(__glewProgramUniform2dEXT) -#define glProgramUniform2dvEXT GLEW_GET_FUN(__glewProgramUniform2dvEXT) -#define glProgramUniform3dEXT GLEW_GET_FUN(__glewProgramUniform3dEXT) -#define glProgramUniform3dvEXT GLEW_GET_FUN(__glewProgramUniform3dvEXT) -#define glProgramUniform4dEXT GLEW_GET_FUN(__glewProgramUniform4dEXT) -#define glProgramUniform4dvEXT GLEW_GET_FUN(__glewProgramUniform4dvEXT) -#define glProgramUniformMatrix2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2dvEXT) -#define glProgramUniformMatrix2x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3dvEXT) -#define glProgramUniformMatrix2x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4dvEXT) -#define glProgramUniformMatrix3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3dvEXT) -#define glProgramUniformMatrix3x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2dvEXT) -#define glProgramUniformMatrix3x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4dvEXT) -#define glProgramUniformMatrix4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4dvEXT) -#define glProgramUniformMatrix4x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2dvEXT) -#define glProgramUniformMatrix4x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3dvEXT) -#define glUniform1d GLEW_GET_FUN(__glewUniform1d) -#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) -#define glUniform2d GLEW_GET_FUN(__glewUniform2d) -#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) -#define glUniform3d GLEW_GET_FUN(__glewUniform3d) -#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) -#define glUniform4d GLEW_GET_FUN(__glewUniform4d) -#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) -#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) -#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) -#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) -#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) -#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) -#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) -#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) -#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) -#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) - -#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) - -#endif /* GL_ARB_gpu_shader_fp64 */ - -/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 - -#define GL_HALF_FLOAT_ARB 0x140B - -#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) - -#endif /* GL_ARB_half_float_pixel */ - -/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ - -#ifndef GL_ARB_half_float_vertex -#define GL_ARB_half_float_vertex 1 - -#define GL_HALF_FLOAT 0x140B - -#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) - -#endif /* GL_ARB_half_float_vertex */ - -/* ----------------------------- GL_ARB_imaging ---------------------------- */ - -#ifndef GL_ARB_imaging -#define GL_ARB_imaging 1 - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_IGNORE_BORDER 0x8150 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_WRAP_BORDER 0x8152 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); - -#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) -#define glColorTable GLEW_GET_FUN(__glewColorTable) -#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) -#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) -#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) -#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) -#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) -#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) -#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) -#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) -#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) -#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) -#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) -#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) -#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) -#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) -#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) -#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) -#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) -#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) -#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) -#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) -#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) -#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) -#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) -#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) -#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) -#define glHistogram GLEW_GET_FUN(__glewHistogram) -#define glMinmax GLEW_GET_FUN(__glewMinmax) -#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) -#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) -#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) - -#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) - -#endif /* GL_ARB_imaging */ - -/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ - -#ifndef GL_ARB_instanced_arrays -#define GL_ARB_instanced_arrays 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) - -#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) - -#endif /* GL_ARB_instanced_arrays */ - -/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ - -#ifndef GL_ARB_map_buffer_range -#define GL_ARB_map_buffer_range 1 - -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 - -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - -#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) -#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) - -#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) - -#endif /* GL_ARB_map_buffer_range */ - -/* ------------------------- GL_ARB_matrix_palette ------------------------- */ - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 - -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 - -typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); - -#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) -#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) -#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) -#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) -#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) - -#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) - -#endif /* GL_ARB_matrix_palette */ - -/* --------------------------- GL_ARB_multisample -------------------------- */ - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 - -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); - -#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) - -#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) - -#endif /* GL_ARB_multisample */ - -/* -------------------------- GL_ARB_multitexture -------------------------- */ - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) -#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) -#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) -#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) -#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) -#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) -#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) -#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) -#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) -#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) -#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) -#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) -#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) -#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) -#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) -#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) -#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) -#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) -#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) -#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) -#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) -#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) -#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) -#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) -#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) -#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) -#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) -#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) -#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) -#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) -#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) -#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) -#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) -#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) - -#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) - -#endif /* GL_ARB_multitexture */ - -/* ------------------------- GL_ARB_occlusion_query ------------------------ */ - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 - -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); - -#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) -#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) -#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) -#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) -#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) -#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) -#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) -#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) - -#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) - -#endif /* GL_ARB_occlusion_query */ - -/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ - -#ifndef GL_ARB_occlusion_query2 -#define GL_ARB_occlusion_query2 1 - -#define GL_ANY_SAMPLES_PASSED 0x8C2F - -#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) - -#endif /* GL_ARB_occlusion_query2 */ - -/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF - -#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) - -#endif /* GL_ARB_pixel_buffer_object */ - -/* ------------------------ GL_ARB_point_parameters ------------------------ */ - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 - -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) -#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) - -#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) - -#endif /* GL_ARB_point_parameters */ - -/* -------------------------- GL_ARB_point_sprite -------------------------- */ - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 - -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 - -#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) - -#endif /* GL_ARB_point_sprite */ - -/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ - -#ifndef GL_ARB_provoking_vertex -#define GL_ARB_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); - -#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) - -#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) - -#endif /* GL_ARB_provoking_vertex */ - -/* --------------------------- GL_ARB_robustness --------------------------- */ - -#ifndef GL_ARB_robustness -#define GL_ARB_robustness 1 - -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 -#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 - -typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); -typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); -typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); -typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); -typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); -typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, GLvoid*column, GLvoid*span); -typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); -typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); - -#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) -#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) -#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) -#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) -#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) -#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) -#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) -#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) -#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) -#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) -#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) -#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) -#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) -#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) -#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) -#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) -#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) -#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) -#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) - -#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) - -#endif /* GL_ARB_robustness */ - -/* ------------------------- GL_ARB_sample_shading ------------------------- */ - -#ifndef GL_ARB_sample_shading -#define GL_ARB_sample_shading 1 - -#define GL_SAMPLE_SHADING_ARB 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 - -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); - -#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) - -#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) - -#endif /* GL_ARB_sample_shading */ - -/* ------------------------- GL_ARB_sampler_objects ------------------------ */ - -#ifndef GL_ARB_sampler_objects -#define GL_ARB_sampler_objects 1 - -#define GL_SAMPLER_BINDING 0x8919 - -typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); -typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); -typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); - -#define glBindSampler GLEW_GET_FUN(__glewBindSampler) -#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) -#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) -#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) -#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) -#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) -#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) -#define glIsSampler GLEW_GET_FUN(__glewIsSampler) -#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) -#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) -#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) -#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) -#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) -#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) - -#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) - -#endif /* GL_ARB_sampler_objects */ - -/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ - -#ifndef GL_ARB_seamless_cube_map -#define GL_ARB_seamless_cube_map 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F - -#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) - -#endif /* GL_ARB_seamless_cube_map */ - -/* --------------------- GL_ARB_separate_shader_objects -------------------- */ - -#ifndef GL_ARB_separate_shader_objects -#define GL_ARB_separate_shader_objects 1 - -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_ALL_SHADER_BITS 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const char ** strings); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, char *infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); - -#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) -#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) -#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) -#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) -#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) -#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) -#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) -#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) -#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) -#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) -#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) -#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) -#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) -#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) -#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) -#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) -#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) -#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) -#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) -#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) -#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) -#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) -#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) -#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) -#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) -#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) -#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) -#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) -#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) -#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) -#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) -#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) -#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) -#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) -#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) -#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) -#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) -#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) -#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) -#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) -#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) -#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) -#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) -#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) -#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) -#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) -#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) -#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) -#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) -#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) -#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) -#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) -#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) -#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) -#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) -#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) -#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) -#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) -#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) -#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) - -#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) - -#endif /* GL_ARB_separate_shader_objects */ - -/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ - -#ifndef GL_ARB_shader_bit_encoding -#define GL_ARB_shader_bit_encoding 1 - -#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) - -#endif /* GL_ARB_shader_bit_encoding */ - -/* ------------------------- GL_ARB_shader_objects ------------------------- */ - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 - -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 - -typedef char GLcharARB; -typedef unsigned int GLhandleARB; - -typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); -typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); - -#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) -#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) -#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) -#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) -#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) -#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) -#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) -#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) -#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) -#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) -#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) -#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) -#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) -#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) -#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) -#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) -#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) -#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) -#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) -#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) -#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) -#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) -#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) -#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) -#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) -#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) -#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) -#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) -#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) -#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) -#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) -#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) -#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) -#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) -#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) -#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) -#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) -#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) -#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) - -#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) - -#endif /* GL_ARB_shader_objects */ - -/* ------------------------ GL_ARB_shader_precision ------------------------ */ - -#ifndef GL_ARB_shader_precision -#define GL_ARB_shader_precision 1 - -#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) - -#endif /* GL_ARB_shader_precision */ - -/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ - -#ifndef GL_ARB_shader_stencil_export -#define GL_ARB_shader_stencil_export 1 - -#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) - -#endif /* GL_ARB_shader_stencil_export */ - -/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ - -#ifndef GL_ARB_shader_subroutine -#define GL_ARB_shader_subroutine 1 - -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B - -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); -typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name); -typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); -typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); - -#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) -#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) -#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) -#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) -#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) -#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) -#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) -#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) - -#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) - -#endif /* GL_ARB_shader_subroutine */ - -/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ - -#ifndef GL_ARB_shader_texture_lod -#define GL_ARB_shader_texture_lod 1 - -#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) - -#endif /* GL_ARB_shader_texture_lod */ - -/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 - -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C - -#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) - -#endif /* GL_ARB_shading_language_100 */ - -/* -------------------- GL_ARB_shading_language_include -------------------- */ - -#ifndef GL_ARB_shading_language_include -#define GL_ARB_shading_language_include 1 - -#define GL_SHADER_INCLUDE_ARB 0x8DAE -#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 -#define GL_NAMED_STRING_TYPE_ARB 0x8DEA - -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length); -typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string); - -#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) -#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) -#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) -#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) -#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) -#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) - -#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) - -#endif /* GL_ARB_shading_language_include */ - -/* ----------------------------- GL_ARB_shadow ----------------------------- */ - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 - -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E - -#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) - -#endif /* GL_ARB_shadow */ - -/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 - -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF - -#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) - -#endif /* GL_ARB_shadow_ambient */ - -/* ------------------------------ GL_ARB_sync ------------------------------ */ - -#ifndef GL_ARB_sync -#define GL_ARB_sync 1 - -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF - -typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); -typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); -typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); -typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); -typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); - -#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) -#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) -#define glFenceSync GLEW_GET_FUN(__glewFenceSync) -#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) -#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) -#define glIsSync GLEW_GET_FUN(__glewIsSync) -#define glWaitSync GLEW_GET_FUN(__glewWaitSync) - -#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) - -#endif /* GL_ARB_sync */ - -/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ - -#ifndef GL_ARB_tessellation_shader -#define GL_ARB_tessellation_shader 1 - -#define GL_PATCHES 0xE -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_PATCH_VERTICES 0x8E72 -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_ISOLINES 0x8E7A -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A - -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); - -#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) -#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) - -#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) - -#endif /* GL_ARB_tessellation_shader */ - -/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_ARB 0x812D - -#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) - -#endif /* GL_ARB_texture_border_clamp */ - -/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ - -#ifndef GL_ARB_texture_buffer_object -#define GL_ARB_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) - -#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) - -#endif /* GL_ARB_texture_buffer_object */ - -/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ - -#ifndef GL_ARB_texture_buffer_object_rgb32 -#define GL_ARB_texture_buffer_object_rgb32 1 - -#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) - -#endif /* GL_ARB_texture_buffer_object_rgb32 */ - -/* ----------------------- GL_ARB_texture_compression ---------------------- */ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 - -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 - -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); - -#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) -#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) -#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) -#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) -#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) -#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) -#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) - -#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) - -#endif /* GL_ARB_texture_compression */ - -/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ - -#ifndef GL_ARB_texture_compression_bptc -#define GL_ARB_texture_compression_bptc 1 - -#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F - -#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) - -#endif /* GL_ARB_texture_compression_bptc */ - -/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ - -#ifndef GL_ARB_texture_compression_rgtc -#define GL_ARB_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE - -#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) - -#endif /* GL_ARB_texture_compression_rgtc */ - -/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 - -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C - -#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) - -#endif /* GL_ARB_texture_cube_map */ - -/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ - -#ifndef GL_ARB_texture_cube_map_array -#define GL_ARB_texture_cube_map_array 1 - -#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F - -#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) - -#endif /* GL_ARB_texture_cube_map_array */ - -/* ------------------------- GL_ARB_texture_env_add ------------------------ */ - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 - -#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) - -#endif /* GL_ARB_texture_env_add */ - -/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 - -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A - -#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) - -#endif /* GL_ARB_texture_env_combine */ - -/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 - -#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) - -#endif /* GL_ARB_texture_env_crossbar */ - -/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 - -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF - -#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) - -#endif /* GL_ARB_texture_env_dot3 */ - -/* -------------------------- GL_ARB_texture_float ------------------------- */ - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 - -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 - -#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) - -#endif /* GL_ARB_texture_float */ - -/* ------------------------- GL_ARB_texture_gather ------------------------- */ - -#ifndef GL_ARB_texture_gather -#define GL_ARB_texture_gather 1 - -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F - -#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) - -#endif /* GL_ARB_texture_gather */ - -/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_ARB 0x8370 - -#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) - -#endif /* GL_ARB_texture_mirrored_repeat */ - -/* ----------------------- GL_ARB_texture_multisample ---------------------- */ - -#ifndef GL_ARB_texture_multisample -#define GL_ARB_texture_multisample 1 - -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); - -#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) -#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) -#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) -#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) - -#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) - -#endif /* GL_ARB_texture_multisample */ - -/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 - -#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) - -#endif /* GL_ARB_texture_non_power_of_two */ - -/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ - -#ifndef GL_ARB_texture_query_lod -#define GL_ARB_texture_query_lod 1 - -#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) - -#endif /* GL_ARB_texture_query_lod */ - -/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 - -#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) - -#endif /* GL_ARB_texture_rectangle */ - -/* --------------------------- GL_ARB_texture_rg --------------------------- */ - -#ifndef GL_ARB_texture_rg -#define GL_ARB_texture_rg 1 - -#define GL_RED 0x1903 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C - -#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) - -#endif /* GL_ARB_texture_rg */ - -/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ - -#ifndef GL_ARB_texture_rgb10_a2ui -#define GL_ARB_texture_rgb10_a2ui 1 - -#define GL_RGB10_A2UI 0x906F - -#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) - -#endif /* GL_ARB_texture_rgb10_a2ui */ - -/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ - -#ifndef GL_ARB_texture_swizzle -#define GL_ARB_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 - -#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) - -#endif /* GL_ARB_texture_swizzle */ - -/* --------------------------- GL_ARB_timer_query -------------------------- */ - -#ifndef GL_ARB_timer_query -#define GL_ARB_timer_query 1 - -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); -typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); - -#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) -#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) -#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) - -#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) - -#endif /* GL_ARB_timer_query */ - -/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ - -#ifndef GL_ARB_transform_feedback2 -#define GL_ARB_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); - -#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) -#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) -#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) -#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) -#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) -#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) -#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) - -#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) - -#endif /* GL_ARB_transform_feedback2 */ - -/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ - -#ifndef GL_ARB_transform_feedback3 -#define GL_ARB_transform_feedback3 1 - -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); -typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); - -#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) -#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) -#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) -#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) - -#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) - -#endif /* GL_ARB_transform_feedback3 */ - -/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 - -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 - -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); - -#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) -#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) -#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) -#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) - -#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) - -#endif /* GL_ARB_transpose_matrix */ - -/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ - -#ifndef GL_ARB_uniform_buffer_object -#define GL_ARB_uniform_buffer_object 1 - -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, char* uniformName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); -typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const char** uniformNames, GLuint* uniformIndices); -typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); - -#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) -#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) -#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) -#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) -#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) -#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) -#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) -#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) -#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) -#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) - -#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) - -#endif /* GL_ARB_uniform_buffer_object */ - -/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ - -#ifndef GL_ARB_vertex_array_bgra -#define GL_ARB_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) - -#endif /* GL_ARB_vertex_array_bgra */ - -/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ - -#ifndef GL_ARB_vertex_array_object -#define GL_ARB_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); - -#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) -#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) -#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) -#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) - -#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) - -#endif /* GL_ARB_vertex_array_object */ - -/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_ARB_vertex_attrib_64bit -#define GL_ARB_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) -#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) -#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) -#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) -#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) -#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) -#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) -#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) -#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) -#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) - -#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) - -#endif /* GL_ARB_vertex_attrib_64bit */ - -/* -------------------------- GL_ARB_vertex_blend -------------------------- */ - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 - -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F - -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); -typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); - -#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) -#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) -#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) -#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) -#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) -#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) -#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) -#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) -#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) -#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) - -#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) - -#endif /* GL_ARB_vertex_blend */ - -/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 - -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA - -typedef ptrdiff_t GLsizeiptrARB; -typedef ptrdiff_t GLintptrARB; - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); - -#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) -#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) -#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) -#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) -#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) -#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) -#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) -#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) -#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) -#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) -#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) - -#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) - -#endif /* GL_ARB_vertex_buffer_object */ - -/* ------------------------- GL_ARB_vertex_program ------------------------- */ - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 - -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF - -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); - -#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) -#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) -#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) -#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) -#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) -#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) -#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) -#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) -#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) -#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) -#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) -#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) -#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) -#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) -#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) -#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) -#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) -#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) -#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) -#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) -#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) -#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) -#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) -#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) -#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) -#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) -#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) -#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) -#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) -#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) -#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) -#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) -#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) -#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) -#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) -#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) -#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) -#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) -#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) -#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) -#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) -#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) -#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) -#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) -#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) -#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) -#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) -#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) -#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) -#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) -#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) -#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) -#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) -#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) -#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) -#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) -#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) -#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) -#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) -#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) -#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) -#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) - -#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) - -#endif /* GL_ARB_vertex_program */ - -/* -------------------------- GL_ARB_vertex_shader ------------------------- */ - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 - -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A - -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); - -#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) -#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) -#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) - -#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) - -#endif /* GL_ARB_vertex_shader */ - -/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ - -#ifndef GL_ARB_vertex_type_2_10_10_10_rev -#define GL_ARB_vertex_type_2_10_10_10_rev 1 - -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_INT_2_10_10_10_REV 0x8D9F - -typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); - -#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) -#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) -#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) -#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) -#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) -#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) -#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) -#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) -#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) -#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) -#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) -#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) -#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) -#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) -#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) -#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) -#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) -#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) -#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) -#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) -#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) -#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) -#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) -#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) -#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) -#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) -#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) -#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) -#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) -#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) -#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) -#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) -#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) -#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) -#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) -#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) -#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) -#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) - -#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) - -#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ - -/* ------------------------- GL_ARB_viewport_array ------------------------- */ - -#ifndef GL_ARB_viewport_array -#define GL_ARB_viewport_array 1 - -#define GL_DEPTH_RANGE 0x0B70 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_MAX_VIEWPORTS 0x825B -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_UNDEFINED_VERTEX 0x8260 -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); - -#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) -#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) -#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) -#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) -#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) -#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) -#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) -#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) -#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) -#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) - -#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) - -#endif /* GL_ARB_viewport_array */ - -/* --------------------------- GL_ARB_window_pos --------------------------- */ - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); - -#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) -#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) -#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) -#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) -#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) -#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) -#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) -#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) -#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) -#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) -#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) -#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) -#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) -#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) -#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) -#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) - -#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) - -#endif /* GL_ARB_window_pos */ - -/* ------------------------- GL_ATIX_point_sprites ------------------------- */ - -#ifndef GL_ATIX_point_sprites -#define GL_ATIX_point_sprites 1 - -#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 -#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 -#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 -#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 -#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 -#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 - -#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) - -#endif /* GL_ATIX_point_sprites */ - -/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ - -#ifndef GL_ATIX_texture_env_combine3 -#define GL_ATIX_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATIX 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 -#define GL_MODULATE_SUBTRACT_ATIX 0x8746 - -#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) - -#endif /* GL_ATIX_texture_env_combine3 */ - -/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ - -#ifndef GL_ATIX_texture_env_route -#define GL_ATIX_texture_env_route 1 - -#define GL_SECONDARY_COLOR_ATIX 0x8747 -#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 -#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 - -#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) - -#endif /* GL_ATIX_texture_env_route */ - -/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ - -#ifndef GL_ATIX_vertex_shader_output_point_size -#define GL_ATIX_vertex_shader_output_point_size 1 - -#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E - -#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) - -#endif /* GL_ATIX_vertex_shader_output_point_size */ - -/* -------------------------- GL_ATI_draw_buffers -------------------------- */ - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) - -#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) - -#endif /* GL_ATI_draw_buffers */ - -/* -------------------------- GL_ATI_element_array ------------------------- */ - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 - -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); - -#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) -#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) -#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) - -#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) - -#endif /* GL_ATI_element_array */ - -/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 - -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C - -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); - -#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) -#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) -#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) -#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) - -#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) - -#endif /* GL_ATI_envmap_bumpmap */ - -/* ------------------------- GL_ATI_fragment_shader ------------------------ */ - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 - -#define GL_RED_BIT_ATI 0x00000001 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B - -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); - -#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) -#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) -#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) -#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) -#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) -#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) -#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) -#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) -#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) -#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) -#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) -#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) -#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) -#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) - -#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) - -#endif /* GL_ATI_fragment_shader */ - -/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 - -typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); - -#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) -#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) - -#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) - -#endif /* GL_ATI_map_object_buffer */ - -/* ----------------------------- GL_ATI_meminfo ---------------------------- */ - -#ifndef GL_ATI_meminfo -#define GL_ATI_meminfo 1 - -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD - -#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) - -#endif /* GL_ATI_meminfo */ - -/* -------------------------- GL_ATI_pn_triangles -------------------------- */ - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 - -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 - -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); - -#define glPNTrianglesfATI GLEW_GET_FUN(__glPNTrianglewesfATI) -#define glPNTrianglesiATI GLEW_GET_FUN(__glPNTrianglewesiATI) - -#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) - -#endif /* GL_ATI_pn_triangles */ - -/* ------------------------ GL_ATI_separate_stencil ------------------------ */ - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 - -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 - -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); - -#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) -#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) - -#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) - -#endif /* GL_ATI_separate_stencil */ - -/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ - -#ifndef GL_ATI_shader_texture_lod -#define GL_ATI_shader_texture_lod 1 - -#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) - -#endif /* GL_ATI_shader_texture_lod */ - -/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 - -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 - -#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) - -#endif /* GL_ATI_text_fragment_shader */ - -/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ - -#ifndef GL_ATI_texture_compression_3dc -#define GL_ATI_texture_compression_3dc 1 - -#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 - -#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) - -#endif /* GL_ATI_texture_compression_3dc */ - -/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 - -#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) - -#endif /* GL_ATI_texture_env_combine3 */ - -/* -------------------------- GL_ATI_texture_float ------------------------- */ - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 - -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F - -#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) - -#endif /* GL_ATI_texture_float */ - -/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 - -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 - -#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) - -#endif /* GL_ATI_texture_mirror_once */ - -/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 - -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 - -typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); -typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); -typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); - -#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) -#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) -#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) -#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) -#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) -#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) -#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) -#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) -#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) -#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) -#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) -#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) - -#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) - -#endif /* GL_ATI_vertex_array_object */ - -/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); - -#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) -#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) -#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) - -#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) - -#endif /* GL_ATI_vertex_attrib_array_object */ - -/* ------------------------- GL_ATI_vertex_streams ------------------------- */ - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 - -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_SOURCE_ATI 0x876C -#define GL_VERTEX_STREAM0_ATI 0x876D -#define GL_VERTEX_STREAM1_ATI 0x876E -#define GL_VERTEX_STREAM2_ATI 0x876F -#define GL_VERTEX_STREAM3_ATI 0x8770 -#define GL_VERTEX_STREAM4_ATI 0x8771 -#define GL_VERTEX_STREAM5_ATI 0x8772 -#define GL_VERTEX_STREAM6_ATI 0x8773 -#define GL_VERTEX_STREAM7_ATI 0x8774 - -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); - -#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) -#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) -#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) -#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) -#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) -#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) -#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) -#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) -#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) -#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) -#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) -#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) -#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) -#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) -#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) -#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) -#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) -#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) -#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) -#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) -#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) -#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) -#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) -#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) -#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) -#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) -#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) -#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) -#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) -#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) -#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) -#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) -#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) -#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) -#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) -#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) -#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) - -#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) - -#endif /* GL_ATI_vertex_streams */ - -/* --------------------------- GL_EXT_422_pixels --------------------------- */ - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 - -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF - -#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) - -#endif /* GL_EXT_422_pixels */ - -/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ - -#ifndef GL_EXT_Cg_shader -#define GL_EXT_Cg_shader 1 - -#define GL_CG_VERTEX_SHADER_EXT 0x890E -#define GL_CG_FRAGMENT_SHADER_EXT 0x890F - -#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) - -#endif /* GL_EXT_Cg_shader */ - -/* ------------------------------ GL_EXT_abgr ------------------------------ */ - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 - -#define GL_ABGR_EXT 0x8000 - -#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) - -#endif /* GL_EXT_abgr */ - -/* ------------------------------ GL_EXT_bgra ------------------------------ */ - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 - -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 - -#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) - -#endif /* GL_EXT_bgra */ - -/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 - -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF - -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); - -#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) -#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) -#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) - -#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) - -#endif /* GL_EXT_bindable_uniform */ - -/* --------------------------- GL_EXT_blend_color -------------------------- */ - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 - -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 - -typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - -#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) - -#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) - -#endif /* GL_EXT_blend_color */ - -/* --------------------- GL_EXT_blend_equation_separate -------------------- */ - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 - -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); - -#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) - -#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) - -#endif /* GL_EXT_blend_equation_separate */ - -/* ----------------------- GL_EXT_blend_func_separate ---------------------- */ - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 - -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB - -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); - -#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) - -#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) - -#endif /* GL_EXT_blend_func_separate */ - -/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 - -#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) - -#endif /* GL_EXT_blend_logic_op */ - -/* -------------------------- GL_EXT_blend_minmax -------------------------- */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 - -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); - -#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) - -#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) - -#endif /* GL_EXT_blend_minmax */ - -/* ------------------------- GL_EXT_blend_subtract ------------------------- */ - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 - -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B - -#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) - -#endif /* GL_EXT_blend_subtract */ - -/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 - -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 - -#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) - -#endif /* GL_EXT_clip_volume_hint */ - -/* ------------------------------ GL_EXT_cmyka ----------------------------- */ - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 - -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F - -#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) - -#endif /* GL_EXT_cmyka */ - -/* ------------------------- GL_EXT_color_subtable ------------------------- */ - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); - -#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) -#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) - -#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) - -#endif /* GL_EXT_color_subtable */ - -/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 - -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 - -typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); - -#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) -#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) - -#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) - -#endif /* GL_EXT_compiled_vertex_array */ - -/* --------------------------- GL_EXT_convolution -------------------------- */ - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 - -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 - -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); - -#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) -#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) -#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) -#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) -#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) -#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) -#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) -#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) -#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) -#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) -#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) -#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) -#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) - -#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) - -#endif /* GL_EXT_convolution */ - -/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 - -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 - -typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); - -#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) -#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) - -#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) - -#endif /* GL_EXT_coordinate_frame */ - -/* -------------------------- GL_EXT_copy_texture -------------------------- */ - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 - -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) -#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) -#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) -#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) -#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) - -#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) - -#endif /* GL_EXT_copy_texture */ - -/* --------------------------- GL_EXT_cull_vertex -------------------------- */ - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 - -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC - -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); - -#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) -#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) - -#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) - -#endif /* GL_EXT_cull_vertex */ - -/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 - -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 - -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); - -#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) - -#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) - -#endif /* GL_EXT_depth_bounds_test */ - -/* ----------------------- GL_EXT_direct_state_access ---------------------- */ - -#ifndef GL_EXT_direct_state_access -#define GL_EXT_direct_state_access 1 - -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F - -typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); -typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid** param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid** param); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); -typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); - -#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) -#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) -#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) -#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) -#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) -#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) -#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) -#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) -#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) -#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) -#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) -#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) -#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) -#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) -#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) -#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) -#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) -#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) -#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) -#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) -#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) -#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) -#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) -#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) -#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) -#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) -#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) -#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) -#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) -#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) -#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) -#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) -#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) -#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) -#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) -#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) -#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) -#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) -#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) -#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) -#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) -#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) -#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) -#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) -#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) -#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) -#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) -#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) -#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) -#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) -#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) -#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) -#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) -#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) -#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) -#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) -#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) -#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) -#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) -#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) -#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) -#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) -#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) -#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) -#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) -#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) -#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) -#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) -#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) -#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) -#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) -#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) -#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) -#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) -#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) -#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) -#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) -#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) -#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) -#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) -#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) -#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) -#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) -#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) -#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) -#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) -#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) -#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) -#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) -#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) -#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) -#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) -#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) -#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) -#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) -#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) -#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) -#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) -#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) -#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) -#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) -#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) -#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) -#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) -#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) -#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) -#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) -#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) -#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) -#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) -#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) -#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) -#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) -#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) -#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) -#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) -#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) -#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) -#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) -#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) -#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) -#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) -#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) -#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) -#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) -#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) -#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) -#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) -#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) -#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) -#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) -#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) -#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) -#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) -#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) -#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) -#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) -#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) -#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) -#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) -#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) -#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) -#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) -#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) -#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) -#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) -#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) -#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) -#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) -#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) -#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) -#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) -#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) -#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) -#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) -#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) -#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) -#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) -#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) -#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) -#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) -#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) -#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) -#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) -#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) -#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) -#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) -#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) -#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) -#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) -#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) -#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) -#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) -#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) -#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) -#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) -#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) -#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) -#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) -#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) -#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) -#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) -#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) -#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) -#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) -#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) -#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) -#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) -#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) -#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) -#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) -#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) -#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) -#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) -#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) -#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) -#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) -#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) -#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) -#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) -#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) -#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) -#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) -#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) -#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) -#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) -#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) -#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) -#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) -#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) -#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) -#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) -#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) - -#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) - -#endif /* GL_EXT_direct_state_access */ - -/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 - -typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); -typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); - -#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) -#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) -#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) -#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) -#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) -#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) - -#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) - -#endif /* GL_EXT_draw_buffers2 */ - -/* ------------------------- GL_EXT_draw_instanced ------------------------- */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); - -#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) -#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) - -#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) - -#endif /* GL_EXT_draw_instanced */ - -/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 - -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 - -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); - -#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) - -#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) - -#endif /* GL_EXT_draw_range_elements */ - -/* ---------------------------- GL_EXT_fog_coord --------------------------- */ - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 - -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 - -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); - -#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) -#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) -#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) -#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) -#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) - -#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) - -#endif /* GL_EXT_fog_coord */ - -/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ - -#ifndef GL_EXT_fragment_lighting -#define GL_EXT_fragment_lighting 1 - -#define GL_FRAGMENT_LIGHTING_EXT 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 -#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 -#define GL_LIGHT_ENV_MODE_EXT 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B -#define GL_FRAGMENT_LIGHT0_EXT 0x840C -#define GL_FRAGMENT_LIGHT7_EXT 0x8413 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); - -#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) -#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) -#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) -#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) -#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) -#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) -#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) -#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) -#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) -#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) -#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) -#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) -#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) -#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) -#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) -#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) -#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) -#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) - -#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) - -#endif /* GL_EXT_fragment_lighting */ - -/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 - -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA - -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - -#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) - -#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) - -#endif /* GL_EXT_framebuffer_blit */ - -/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 - -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) - -#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) - -#endif /* GL_EXT_framebuffer_multisample */ - -/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) -#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) -#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) -#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) -#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) -#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) -#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) -#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) -#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) -#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) -#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) -#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) -#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) -#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) -#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) -#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) -#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) - -#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) - -#endif /* GL_EXT_framebuffer_object */ - -/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA - -#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) - -#endif /* GL_EXT_framebuffer_sRGB */ - -/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_EXT 0xA -#define GL_LINE_STRIP_ADJACENCY_EXT 0xB -#define GL_TRIANGLES_ADJACENCY_EXT 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) -#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) -#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) -#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) - -#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) - -#endif /* GL_EXT_geometry_shader4 */ - -/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); - -#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) -#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) - -#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) - -#endif /* GL_EXT_gpu_program_parameters */ - -/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); - -#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) -#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) -#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) -#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) -#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) -#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) -#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) -#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) -#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) -#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) -#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) -#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) -#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) -#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) -#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) -#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) -#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) -#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) -#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) -#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) -#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) -#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) -#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) -#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) -#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) -#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) -#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) -#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) -#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) -#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) -#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) -#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) -#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) -#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) - -#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) - -#endif /* GL_EXT_gpu_shader4 */ - -/* ---------------------------- GL_EXT_histogram --------------------------- */ - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 - -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 - -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); - -#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) -#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) -#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) -#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) -#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) -#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) -#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) -#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) -#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) -#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) - -#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) - -#endif /* GL_EXT_histogram */ - -/* ----------------------- GL_EXT_index_array_formats ---------------------- */ - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 - -#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) - -#endif /* GL_EXT_index_array_formats */ - -/* --------------------------- GL_EXT_index_func --------------------------- */ - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 - -typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); - -#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) - -#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) - -#endif /* GL_EXT_index_func */ - -/* ------------------------- GL_EXT_index_material ------------------------- */ - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 - -typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) - -#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) - -#endif /* GL_EXT_index_material */ - -/* -------------------------- GL_EXT_index_texture ------------------------- */ - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 - -#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) - -#endif /* GL_EXT_index_texture */ - -/* -------------------------- GL_EXT_light_texture ------------------------- */ - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 - -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 - -typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) -#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) -#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) - -#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) - -#endif /* GL_EXT_light_texture */ - -/* ------------------------- GL_EXT_misc_attribute ------------------------- */ - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 - -#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) - -#endif /* GL_EXT_misc_attribute */ - -/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); - -#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) -#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) - -#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) - -#endif /* GL_EXT_multi_draw_arrays */ - -/* --------------------------- GL_EXT_multisample -------------------------- */ - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 - -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); - -#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) -#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) - -#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) - -#endif /* GL_EXT_multisample */ - -/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 - -#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) - -#endif /* GL_EXT_packed_depth_stencil */ - -/* -------------------------- GL_EXT_packed_float -------------------------- */ - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 - -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C - -#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) - -#endif /* GL_EXT_packed_float */ - -/* -------------------------- GL_EXT_packed_pixels ------------------------- */ - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 - -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 - -#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) - -#endif /* GL_EXT_packed_pixels */ - -/* ------------------------ GL_EXT_paletted_texture ------------------------ */ - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 - -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 -#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); - -#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) -#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) -#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) -#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) - -#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) - -#endif /* GL_EXT_paletted_texture */ - -/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF - -#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) - -#endif /* GL_EXT_pixel_buffer_object */ - -/* ------------------------- GL_EXT_pixel_transform ------------------------ */ - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 - -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 - -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) -#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) -#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) -#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) -#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) -#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) - -#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) - -#endif /* GL_EXT_pixel_transform */ - -/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 - -#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) - -#endif /* GL_EXT_pixel_transform_color_table */ - -/* ------------------------ GL_EXT_point_parameters ------------------------ */ - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 - -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) -#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) - -#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) - -#endif /* GL_EXT_point_parameters */ - -/* ------------------------- GL_EXT_polygon_offset ------------------------- */ - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 - -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 - -typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); - -#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) - -#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) - -#endif /* GL_EXT_polygon_offset */ - -/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ - -#ifndef GL_EXT_provoking_vertex -#define GL_EXT_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_PROVOKING_VERTEX_EXT 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); - -#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) - -#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) - -#endif /* GL_EXT_provoking_vertex */ - -/* ------------------------- GL_EXT_rescale_normal ------------------------- */ - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 - -#define GL_RESCALE_NORMAL_EXT 0x803A - -#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) - -#endif /* GL_EXT_rescale_normal */ - -/* -------------------------- GL_EXT_scene_marker -------------------------- */ - -#ifndef GL_EXT_scene_marker -#define GL_EXT_scene_marker 1 - -typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); - -#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) -#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) - -#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) - -#endif /* GL_EXT_scene_marker */ - -/* ------------------------- GL_EXT_secondary_color ------------------------ */ - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 - -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E - -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); - -#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) -#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) -#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) -#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) -#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) -#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) -#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) -#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) -#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) -#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) -#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) -#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) -#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) -#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) -#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) -#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) -#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) - -#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) - -#endif /* GL_EXT_secondary_color */ - -/* --------------------- GL_EXT_separate_shader_objects -------------------- */ - -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 - -#define GL_ACTIVE_PROGRAM_EXT 0x8B8D - -typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const char* string); -typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); - -#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) -#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) -#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) - -#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) - -#endif /* GL_EXT_separate_shader_objects */ - -/* --------------------- GL_EXT_separate_specular_color -------------------- */ - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 - -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA - -#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) - -#endif /* GL_EXT_separate_specular_color */ - -/* --------------------- GL_EXT_shader_image_load_store -------------------- */ - -#ifndef GL_EXT_shader_image_load_store -#define GL_EXT_shader_image_load_store 1 - -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 -#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 -#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 -#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 -#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 -#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 -#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 -#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 -#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 -#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 -#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 -#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A -#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B -#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C -#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D -#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E -#define GL_IMAGE_1D_EXT 0x904C -#define GL_IMAGE_2D_EXT 0x904D -#define GL_IMAGE_3D_EXT 0x904E -#define GL_IMAGE_2D_RECT_EXT 0x904F -#define GL_IMAGE_CUBE_EXT 0x9050 -#define GL_IMAGE_BUFFER_EXT 0x9051 -#define GL_IMAGE_1D_ARRAY_EXT 0x9052 -#define GL_IMAGE_2D_ARRAY_EXT 0x9053 -#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 -#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 -#define GL_INT_IMAGE_1D_EXT 0x9057 -#define GL_INT_IMAGE_2D_EXT 0x9058 -#define GL_INT_IMAGE_3D_EXT 0x9059 -#define GL_INT_IMAGE_2D_RECT_EXT 0x905A -#define GL_INT_IMAGE_CUBE_EXT 0x905B -#define GL_INT_IMAGE_BUFFER_EXT 0x905C -#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D -#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E -#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F -#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 -#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 -#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 -#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C -#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D -#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E -#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); -typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); - -#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) -#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) - -#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) - -#endif /* GL_EXT_shader_image_load_store */ - -/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 - -#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) - -#endif /* GL_EXT_shadow_funcs */ - -/* --------------------- GL_EXT_shared_texture_palette --------------------- */ - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 - -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB - -#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) - -#endif /* GL_EXT_shared_texture_palette */ - -/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 - -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 - -#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) - -#endif /* GL_EXT_stencil_clear_tag */ - -/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 - -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 - -typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); - -#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) - -#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) - -#endif /* GL_EXT_stencil_two_side */ - -/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 - -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 - -#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) - -#endif /* GL_EXT_stencil_wrap */ - -/* --------------------------- GL_EXT_subtexture --------------------------- */ - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 - -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); - -#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) -#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) -#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) - -#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) - -#endif /* GL_EXT_subtexture */ - -/* ----------------------------- GL_EXT_texture ---------------------------- */ - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 - -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 - -#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) - -#endif /* GL_EXT_texture */ - -/* ---------------------------- GL_EXT_texture3D --------------------------- */ - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 - -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); - -#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) - -#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) - -#endif /* GL_EXT_texture3D */ - -/* -------------------------- GL_EXT_texture_array ------------------------- */ - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 - -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D - -#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) - -#endif /* GL_EXT_texture_array */ - -/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) - -#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) - -#endif /* GL_EXT_texture_buffer_object */ - -/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ - -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 - -#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) - -#endif /* GL_EXT_texture_compression_dxt1 */ - -/* -------------------- GL_EXT_texture_compression_latc -------------------- */ - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 - -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 - -#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) - -#endif /* GL_EXT_texture_compression_latc */ - -/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE - -#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) - -#endif /* GL_EXT_texture_compression_rgtc */ - -/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 - -#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) - -#endif /* GL_EXT_texture_compression_s3tc */ - -/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ - -#ifndef GL_EXT_texture_cube_map -#define GL_EXT_texture_cube_map 1 - -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C - -#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) - -#endif /* GL_EXT_texture_cube_map */ - -/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ - -#ifndef GL_EXT_texture_edge_clamp -#define GL_EXT_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_EXT 0x812F - -#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) - -#endif /* GL_EXT_texture_edge_clamp */ - -/* --------------------------- GL_EXT_texture_env -------------------------- */ - -#ifndef GL_EXT_texture_env -#define GL_EXT_texture_env 1 - -#define GL_TEXTURE_ENV0_EXT 0 -#define GL_ENV_BLEND_EXT 0 -#define GL_TEXTURE_ENV_SHIFT_EXT 0 -#define GL_ENV_REPLACE_EXT 0 -#define GL_ENV_ADD_EXT 0 -#define GL_ENV_SUBTRACT_EXT 0 -#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 -#define GL_ENV_REVERSE_SUBTRACT_EXT 0 -#define GL_ENV_REVERSE_BLEND_EXT 0 -#define GL_ENV_COPY_EXT 0 -#define GL_ENV_MODULATE_EXT 0 - -#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) - -#endif /* GL_EXT_texture_env */ - -/* ------------------------- GL_EXT_texture_env_add ------------------------ */ - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 - -#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) - -#endif /* GL_EXT_texture_env_add */ - -/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 - -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A - -#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) - -#endif /* GL_EXT_texture_env_combine */ - -/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 - -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 - -#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) - -#endif /* GL_EXT_texture_env_dot3 */ - -/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 - -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF - -#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) - -#endif /* GL_EXT_texture_filter_anisotropic */ - -/* ------------------------- GL_EXT_texture_integer ------------------------ */ - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 - -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E - -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); - -#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) -#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) -#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) -#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) -#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) -#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) - -#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) - -#endif /* GL_EXT_texture_integer */ - -/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 - -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 - -#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) - -#endif /* GL_EXT_texture_lod_bias */ - -/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 - -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 - -#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) - -#endif /* GL_EXT_texture_mirror_clamp */ - -/* ------------------------- GL_EXT_texture_object ------------------------- */ - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 - -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A - -typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); -typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); -typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); -typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); - -#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) -#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) -#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) -#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) -#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) -#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) - -#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) - -#endif /* GL_EXT_texture_object */ - -/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 - -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF - -typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); - -#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) - -#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) - -#endif /* GL_EXT_texture_perturb_normal */ - -/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ - -#ifndef GL_EXT_texture_rectangle -#define GL_EXT_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 - -#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) - -#endif /* GL_EXT_texture_rectangle */ - -/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F - -#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) - -#endif /* GL_EXT_texture_sRGB */ - -/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 - -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F - -#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) - -#endif /* GL_EXT_texture_shared_exponent */ - -/* -------------------------- GL_EXT_texture_snorm ------------------------- */ - -#ifndef GL_EXT_texture_snorm -#define GL_EXT_texture_snorm 1 - -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_ALPHA_SNORM 0x9010 -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_ALPHA8_SNORM 0x9014 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_ALPHA16_SNORM 0x9018 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_INTENSITY16_SNORM 0x901B - -#define GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) - -#endif /* GL_EXT_texture_snorm */ - -/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ - -#ifndef GL_EXT_texture_swizzle -#define GL_EXT_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 - -#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) - -#endif /* GL_EXT_texture_swizzle */ - -/* --------------------------- GL_EXT_timer_query -------------------------- */ - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 - -#define GL_TIME_ELAPSED_EXT 0x88BF - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); - -#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) -#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) - -#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) - -#endif /* GL_EXT_timer_query */ - -/* ----------------------- GL_EXT_transform_feedback ----------------------- */ - -#ifndef GL_EXT_transform_feedback -#define GL_EXT_transform_feedback 1 - -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F - -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); - -#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) -#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) -#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) -#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) -#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) -#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) -#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) - -#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) - -#endif /* GL_EXT_transform_feedback */ - -/* -------------------------- GL_EXT_vertex_array -------------------------- */ - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 - -#define GL_DOUBLE_EXT 0x140A -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 - -typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); - -#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) -#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) -#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) -#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) -#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) -#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) -#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) -#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) - -#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) - -#endif /* GL_EXT_vertex_array */ - -/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ - -#ifndef GL_EXT_vertex_array_bgra -#define GL_EXT_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) - -#endif /* GL_EXT_vertex_array_bgra */ - -/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_EXT_vertex_attrib_64bit -#define GL_EXT_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2_EXT 0x8F46 -#define GL_DOUBLE_MAT3_EXT 0x8F47 -#define GL_DOUBLE_MAT4_EXT 0x8F48 -#define GL_DOUBLE_VEC2_EXT 0x8FFC -#define GL_DOUBLE_VEC3_EXT 0x8FFD -#define GL_DOUBLE_VEC4_EXT 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) -#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) -#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) -#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) -#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) -#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) -#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) -#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) -#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) -#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) -#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) - -#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) - -#endif /* GL_EXT_vertex_attrib_64bit */ - -/* -------------------------- GL_EXT_vertex_shader ------------------------- */ - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 - -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED - -typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); -typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); -typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); -typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); - -#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) -#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) -#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) -#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) -#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) -#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) -#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) -#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) -#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) -#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) -#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) -#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) -#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) -#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) -#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) -#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) -#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) -#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) -#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) -#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) -#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) -#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) -#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) -#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) -#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) -#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) -#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) -#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) -#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) -#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) -#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) -#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) -#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) -#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) -#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) -#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) -#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) -#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) -#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) -#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) -#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) -#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) - -#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) - -#endif /* GL_EXT_vertex_shader */ - -/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 - -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 - -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); - -#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) -#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) -#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) - -#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) - -#endif /* GL_EXT_vertex_weighting */ - -/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ - -#ifndef GL_GREMEDY_frame_terminator -#define GL_GREMEDY_frame_terminator 1 - -typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); - -#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) - -#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) - -#endif /* GL_GREMEDY_frame_terminator */ - -/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 - -typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); - -#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) - -#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) - -#endif /* GL_GREMEDY_string_marker */ - -/* --------------------- GL_HP_convolution_border_modes -------------------- */ - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 - -#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) - -#endif /* GL_HP_convolution_border_modes */ - -/* ------------------------- GL_HP_image_transform ------------------------- */ - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 - -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) -#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) -#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) -#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) -#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) -#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) - -#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) - -#endif /* GL_HP_image_transform */ - -/* -------------------------- GL_HP_occlusion_test ------------------------- */ - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 - -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 - -#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) - -#endif /* GL_HP_occlusion_test */ - -/* ------------------------- GL_HP_texture_lighting ------------------------ */ - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 - -#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) - -#endif /* GL_HP_texture_lighting */ - -/* --------------------------- GL_IBM_cull_vertex -------------------------- */ - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 - -#define GL_CULL_VERTEX_IBM 103050 - -#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) - -#endif /* GL_IBM_cull_vertex */ - -/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); - -#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) -#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) - -#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) - -#endif /* GL_IBM_multimode_draw_arrays */ - -/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 - -#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 - -#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) - -#endif /* GL_IBM_rasterpos_clip */ - -/* --------------------------- GL_IBM_static_data -------------------------- */ - -#ifndef GL_IBM_static_data -#define GL_IBM_static_data 1 - -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 - -#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) - -#endif /* GL_IBM_static_data */ - -/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_IBM_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_IBM 0x8370 - -#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) - -#endif /* GL_IBM_texture_mirrored_repeat */ - -/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 - -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); - -#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) -#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) -#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) -#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) -#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) -#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) -#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) -#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) - -#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) - -#endif /* GL_IBM_vertex_array_lists */ - -/* -------------------------- GL_INGR_color_clamp -------------------------- */ - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 - -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 - -#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) - -#endif /* GL_INGR_color_clamp */ - -/* ------------------------- GL_INGR_interlace_read ------------------------ */ - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 - -#define GL_INTERLACE_READ_INGR 0x8568 - -#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) - -#endif /* GL_INGR_interlace_read */ - -/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 - -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); - -#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) -#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) -#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) -#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) - -#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) - -#endif /* GL_INTEL_parallel_arrays */ - -/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ - -#ifndef GL_INTEL_texture_scissor -#define GL_INTEL_texture_scissor 1 - -typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); -typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); - -#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) -#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) - -#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) - -#endif /* GL_INTEL_texture_scissor */ - -/* -------------------------- GL_KTX_buffer_region ------------------------- */ - -#ifndef GL_KTX_buffer_region -#define GL_KTX_buffer_region 1 - -#define GL_KTX_FRONT_REGION 0x0 -#define GL_KTX_BACK_REGION 0x1 -#define GL_KTX_Z_REGION 0x2 -#define GL_KTX_STENCIL_REGION 0x3 - -typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); -typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glBufferRegionEnabledEXT GLEW_GET_FUN(__glewBufferRegionEnabledEXT) -#define glDeleteBufferRegionEXT GLEW_GET_FUN(__glewDeleteBufferRegionEXT) -#define glDrawBufferRegionEXT GLEW_GET_FUN(__glewDrawBufferRegionEXT) -#define glNewBufferRegionEXT GLEW_GET_FUN(__glewNewBufferRegionEXT) -#define glReadBufferRegionEXT GLEW_GET_FUN(__glewReadBufferRegionEXT) - -#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) - -#endif /* GL_KTX_buffer_region */ - -/* ------------------------- GL_MESAX_texture_stack ------------------------ */ - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 - -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E - -#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) - -#endif /* GL_MESAX_texture_stack */ - -/* -------------------------- GL_MESA_pack_invert -------------------------- */ - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 - -#define GL_PACK_INVERT_MESA 0x8758 - -#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) - -#endif /* GL_MESA_pack_invert */ - -/* ------------------------- GL_MESA_resize_buffers ------------------------ */ - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 - -typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); - -#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) - -#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) - -#endif /* GL_MESA_resize_buffers */ - -/* --------------------------- GL_MESA_window_pos -------------------------- */ - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); - -#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) -#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) -#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) -#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) -#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) -#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) -#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) -#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) -#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) -#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) -#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) -#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) -#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) -#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) -#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) -#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) -#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) -#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) -#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) -#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) -#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) -#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) -#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) -#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) - -#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) - -#endif /* GL_MESA_window_pos */ - -/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 - -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 - -#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) - -#endif /* GL_MESA_ycbcr_texture */ - -/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ - -#ifndef GL_NVX_gpu_memory_info -#define GL_NVX_gpu_memory_info 1 - -#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 -#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 -#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 -#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A -#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B - -#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) - -#endif /* GL_NVX_gpu_memory_info */ - -/* --------------------------- GL_NV_blend_square -------------------------- */ - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 - -#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) - -#endif /* GL_NV_blend_square */ - -/* ------------------------ GL_NV_conditional_render ----------------------- */ - -#ifndef GL_NV_conditional_render -#define GL_NV_conditional_render 1 - -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); - -#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) -#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) - -#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) - -#endif /* GL_NV_conditional_render */ - -/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 - -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F - -#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) - -#endif /* GL_NV_copy_depth_to_color */ - -/* ---------------------------- GL_NV_copy_image --------------------------- */ - -#ifndef GL_NV_copy_image -#define GL_NV_copy_image 1 - -typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); - -#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) - -#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) - -#endif /* GL_NV_copy_image */ - -/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); - -#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) -#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) -#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) - -#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) - -#endif /* GL_NV_depth_buffer_float */ - -/* --------------------------- GL_NV_depth_clamp --------------------------- */ - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 - -#define GL_DEPTH_CLAMP_NV 0x864F - -#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) - -#endif /* GL_NV_depth_clamp */ - -/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ - -#ifndef GL_NV_depth_range_unclamped -#define GL_NV_depth_range_unclamped 1 - -#define GL_SAMPLE_COUNT_BITS_NV 0x8864 -#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 -#define GL_QUERY_RESULT_NV 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 -#define GL_SAMPLE_COUNT_NV 0x8914 - -#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) - -#endif /* GL_NV_depth_range_unclamped */ - -/* ---------------------------- GL_NV_evaluators --------------------------- */ - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 - -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 - -typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) -#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) -#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) -#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) -#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) -#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) -#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) -#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) -#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) - -#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) - -#endif /* GL_NV_evaluators */ - -/* ----------------------- GL_NV_explicit_multisample ---------------------- */ - -#ifndef GL_NV_explicit_multisample -#define GL_NV_explicit_multisample 1 - -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); - -#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) -#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) -#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) - -#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) - -#endif /* GL_NV_explicit_multisample */ - -/* ------------------------------ GL_NV_fence ------------------------------ */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 - -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); -typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); - -#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) -#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) -#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) -#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) -#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) -#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) -#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) - -#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) - -#endif /* GL_NV_fence */ - -/* --------------------------- GL_NV_float_buffer -------------------------- */ - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 - -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E - -#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) - -#endif /* GL_NV_float_buffer */ - -/* --------------------------- GL_NV_fog_distance -------------------------- */ - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 - -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C - -#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) - -#endif /* GL_NV_fog_distance */ - -/* ------------------------- GL_NV_fragment_program ------------------------ */ - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 - -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); - -#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) -#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) -#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) -#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) -#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) -#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) - -#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) - -#endif /* GL_NV_fragment_program */ - -/* ------------------------ GL_NV_fragment_program2 ------------------------ */ - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 - -#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) - -#endif /* GL_NV_fragment_program2 */ - -/* ------------------------ GL_NV_fragment_program4 ------------------------ */ - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 - -#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) - -#endif /* GL_NV_fragment_program4 */ - -/* --------------------- GL_NV_fragment_program_option --------------------- */ - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 - -#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) - -#endif /* GL_NV_fragment_program_option */ - -/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 - -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) - -#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) - -#endif /* GL_NV_framebuffer_multisample_coverage */ - -/* ------------------------ GL_NV_geometry_program4 ------------------------ */ - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 - -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 - -typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); - -#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) - -#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) - -#endif /* GL_NV_geometry_program4 */ - -/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 - -#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) - -#endif /* GL_NV_geometry_shader4 */ - -/* --------------------------- GL_NV_gpu_program4 -------------------------- */ - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 - -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); - -#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) -#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) -#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) -#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) -#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) -#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) -#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) -#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) -#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) -#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) -#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) -#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) - -#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) - -#endif /* GL_NV_gpu_program4 */ - -/* --------------------------- GL_NV_gpu_program5 -------------------------- */ - -#ifndef GL_NV_gpu_program5 -#define GL_NV_gpu_program5 1 - -#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C -#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F - -#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) - -#endif /* GL_NV_gpu_program5 */ - -/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ - -#ifndef GL_NV_gpu_program_fp64 -#define GL_NV_gpu_program_fp64 1 - -#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) - -#endif /* GL_NV_gpu_program_fp64 */ - -/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ - -#ifndef GL_NV_gpu_shader5 -#define GL_NV_gpu_shader5 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F -#define GL_INT8_NV 0x8FE0 -#define GL_INT8_VEC2_NV 0x8FE1 -#define GL_INT8_VEC3_NV 0x8FE2 -#define GL_INT8_VEC4_NV 0x8FE3 -#define GL_INT16_NV 0x8FE4 -#define GL_INT16_VEC2_NV 0x8FE5 -#define GL_INT16_VEC3_NV 0x8FE6 -#define GL_INT16_VEC4_NV 0x8FE7 -#define GL_INT64_VEC2_NV 0x8FE9 -#define GL_INT64_VEC3_NV 0x8FEA -#define GL_INT64_VEC4_NV 0x8FEB -#define GL_UNSIGNED_INT8_NV 0x8FEC -#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED -#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE -#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF -#define GL_UNSIGNED_INT16_NV 0x8FF0 -#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 -#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 -#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 -#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 -#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 -#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) -#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) -#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) -#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) -#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) -#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) -#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) -#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) -#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) -#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) -#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) -#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) -#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) -#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) -#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) -#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) -#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) -#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) -#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) -#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) -#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) -#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) -#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) -#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) -#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) -#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) -#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) -#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) -#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) -#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) -#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) -#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) -#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) -#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) - -#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) - -#endif /* GL_NV_gpu_shader5 */ - -/* ---------------------------- GL_NV_half_float --------------------------- */ - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 - -#define GL_HALF_FLOAT_NV 0x140B - -typedef unsigned short GLhalf; - -typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); -typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); -typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); - -#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) -#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) -#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) -#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) -#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) -#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) -#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) -#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) -#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) -#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) -#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) -#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) -#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) -#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) -#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) -#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) -#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) -#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) -#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) -#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) -#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) -#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) -#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) -#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) -#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) -#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) -#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) -#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) -#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) -#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) -#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) -#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) -#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) -#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) -#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) -#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) -#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) -#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) -#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) -#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) -#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) -#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) -#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) -#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) -#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) -#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) - -#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) - -#endif /* GL_NV_half_float */ - -/* ------------------------ GL_NV_light_max_exponent ----------------------- */ - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 - -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 - -#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) - -#endif /* GL_NV_light_max_exponent */ - -/* ----------------------- GL_NV_multisample_coverage ---------------------- */ - -#ifndef GL_NV_multisample_coverage -#define GL_NV_multisample_coverage 1 - -#define GL_COVERAGE_SAMPLES_NV 0x80A9 -#define GL_COLOR_SAMPLES_NV 0x8E20 - -#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) - -#endif /* GL_NV_multisample_coverage */ - -/* --------------------- GL_NV_multisample_filter_hint --------------------- */ - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 - -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 - -#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) - -#endif /* GL_NV_multisample_filter_hint */ - -/* ------------------------- GL_NV_occlusion_query ------------------------- */ - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 - -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 - -typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); - -#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) -#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) -#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) -#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) -#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) -#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) -#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) - -#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) - -#endif /* GL_NV_occlusion_query */ - -/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA - -#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) - -#endif /* GL_NV_packed_depth_stencil */ - -/* --------------------- GL_NV_parameter_buffer_object --------------------- */ - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 - -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 - -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); - -#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) -#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) -#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) - -#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) - -#endif /* GL_NV_parameter_buffer_object */ - -/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ - -#ifndef GL_NV_parameter_buffer_object2 -#define GL_NV_parameter_buffer_object2 1 - -#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) - -#endif /* GL_NV_parameter_buffer_object2 */ - -/* ------------------------- GL_NV_pixel_data_range ------------------------ */ - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 - -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D - -typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); - -#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) -#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) - -#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) - -#endif /* GL_NV_pixel_data_range */ - -/* --------------------------- GL_NV_point_sprite -------------------------- */ - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 - -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); - -#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) -#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) - -#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) - -#endif /* GL_NV_point_sprite */ - -/* -------------------------- GL_NV_present_video -------------------------- */ - -#ifndef GL_NV_present_video -#define GL_NV_present_video 1 - -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B - -typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); - -#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) -#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) -#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) -#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) -#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) -#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) - -#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) - -#endif /* GL_NV_present_video */ - -/* ------------------------ GL_NV_primitive_restart ------------------------ */ - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 - -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 - -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); - -#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) -#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) - -#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) - -#endif /* GL_NV_primitive_restart */ - -/* ------------------------ GL_NV_register_combiners ----------------------- */ - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 - -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 - -typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); - -#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) -#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) -#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) -#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) -#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) -#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) -#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) -#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) -#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) -#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) -#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) -#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) -#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) - -#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) - -#endif /* GL_NV_register_combiners */ - -/* ----------------------- GL_NV_register_combiners2 ----------------------- */ - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 - -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 - -typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); - -#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) -#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) - -#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) - -#endif /* GL_NV_register_combiners2 */ - -/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ - -#ifndef GL_NV_shader_buffer_load -#define GL_NV_shader_buffer_load 1 - -#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D -#define GL_GPU_ADDRESS_NV 0x8F34 -#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 - -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) -#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) -#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) -#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) -#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) -#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) -#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) -#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) -#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) -#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) -#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) -#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) -#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) - -#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) - -#endif /* GL_NV_shader_buffer_load */ - -/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ - -#ifndef GL_NV_tessellation_program5 -#define GL_NV_tessellation_program5 1 - -#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 -#define GL_TESS_CONTROL_PROGRAM_NV 0x891E -#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F -#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 -#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 - -#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) - -#endif /* GL_NV_tessellation_program5 */ - -/* -------------------------- GL_NV_texgen_emboss -------------------------- */ - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 - -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F - -#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) - -#endif /* GL_NV_texgen_emboss */ - -/* ------------------------ GL_NV_texgen_reflection ------------------------ */ - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 - -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 - -#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) - -#endif /* GL_NV_texgen_reflection */ - -/* ------------------------- GL_NV_texture_barrier ------------------------- */ - -#ifndef GL_NV_texture_barrier -#define GL_NV_texture_barrier 1 - -typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); - -#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) - -#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) - -#endif /* GL_NV_texture_barrier */ - -/* --------------------- GL_NV_texture_compression_vtc --------------------- */ - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 - -#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) - -#endif /* GL_NV_texture_compression_vtc */ - -/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 - -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B - -#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) - -#endif /* GL_NV_texture_env_combine4 */ - -/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 - -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F - -#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) - -#endif /* GL_NV_texture_expand_normal */ - -/* ------------------------ GL_NV_texture_rectangle ------------------------ */ - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 - -#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) - -#endif /* GL_NV_texture_rectangle */ - -/* -------------------------- GL_NV_texture_shader ------------------------- */ - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 - -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F - -#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) - -#endif /* GL_NV_texture_shader */ - -/* ------------------------- GL_NV_texture_shader2 ------------------------- */ - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 - -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D - -#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) - -#endif /* GL_NV_texture_shader2 */ - -/* ------------------------- GL_NV_texture_shader3 ------------------------- */ - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 - -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 - -#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) - -#endif /* GL_NV_texture_shader3 */ - -/* ------------------------ GL_NV_transform_feedback ----------------------- */ - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 - -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F - -typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); - -#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) -#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) -#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) -#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) -#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) -#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) -#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) -#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) -#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) -#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) -#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) - -#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) - -#endif /* GL_NV_transform_feedback */ - -/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ - -#ifndef GL_NV_transform_feedback2 -#define GL_NV_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); - -#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) -#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) -#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) -#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) -#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) -#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) -#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) - -#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) - -#endif /* GL_NV_transform_feedback2 */ - -/* -------------------------- GL_NV_vdpau_interop -------------------------- */ - -#ifndef GL_NV_vdpau_interop -#define GL_NV_vdpau_interop 1 - -#define GL_SURFACE_STATE_NV 0x86EB -#define GL_SURFACE_REGISTERED_NV 0x86FD -#define GL_SURFACE_MAPPED_NV 0x8700 -#define GL_WRITE_DISCARD_NV 0x88BE - -typedef GLintptr GLvdpauSurfaceNV; - -typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); -typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const GLvoid*getProcAddress); -typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); -typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); -typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); -typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); - -#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) -#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) -#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) -#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) -#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) -#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) -#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) -#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) -#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) -#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) - -#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) - -#endif /* GL_NV_vdpau_interop */ - -/* ------------------------ GL_NV_vertex_array_range ----------------------- */ - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) -#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) - -#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) - -#endif /* GL_NV_vertex_array_range */ - -/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 - -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 - -#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) - -#endif /* GL_NV_vertex_array_range2 */ - -/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ - -#ifndef GL_NV_vertex_attrib_integer_64bit -#define GL_NV_vertex_attrib_integer_64bit 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); - -#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) -#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) -#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) -#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) -#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) -#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) -#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) -#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) -#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) -#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) -#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) -#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) -#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) -#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) -#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) -#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) -#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) -#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) -#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) - -#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) - -#endif /* GL_NV_vertex_attrib_integer_64bit */ - -/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ - -#ifndef GL_NV_vertex_buffer_unified_memory -#define GL_NV_vertex_buffer_unified_memory 1 - -#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E -#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F -#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 -#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 -#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 -#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 -#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 -#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 -#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 -#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 -#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 -#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 -#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A -#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B -#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C -#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D -#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E -#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F -#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 -#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 -#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 -#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 -#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 -#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 -#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 - -typedef void (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); -typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); - -#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) -#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) -#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) -#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) -#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) -#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) -#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) -#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) -#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) -#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) -#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) -#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) - -#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) - -#endif /* GL_NV_vertex_buffer_unified_memory */ - -/* -------------------------- GL_NV_vertex_program ------------------------- */ - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 - -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F - -typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); - -#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) -#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) -#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) -#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) -#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) -#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) -#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) -#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) -#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) -#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) -#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) -#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) -#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) -#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) -#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) -#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) -#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) -#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) -#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) -#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) -#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) -#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) -#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) -#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) -#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) -#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) -#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) -#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) -#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) -#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) -#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) -#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) -#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) -#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) -#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) -#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) -#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) -#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) -#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) -#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) -#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) -#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) -#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) -#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) -#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) -#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) -#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) -#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) -#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) -#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) -#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) -#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) -#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) -#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) -#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) -#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) -#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) -#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) -#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) -#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) -#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) -#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) -#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) -#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) - -#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) - -#endif /* GL_NV_vertex_program */ - -/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 - -#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) - -#endif /* GL_NV_vertex_program1_1 */ - -/* ------------------------- GL_NV_vertex_program2 ------------------------- */ - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 - -#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) - -#endif /* GL_NV_vertex_program2 */ - -/* ---------------------- GL_NV_vertex_program2_option --------------------- */ - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 - -#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) - -#endif /* GL_NV_vertex_program2_option */ - -/* ------------------------- GL_NV_vertex_program3 ------------------------- */ - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 - -#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C - -#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) - -#endif /* GL_NV_vertex_program3 */ - -/* ------------------------- GL_NV_vertex_program4 ------------------------- */ - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD - -#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) - -#endif /* GL_NV_vertex_program4 */ - -/* ------------------------ GL_OES_byte_coordinates ------------------------ */ - -#ifndef GL_OES_byte_coordinates -#define GL_OES_byte_coordinates 1 - -#define GL_BYTE 0x1400 - -#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) - -#endif /* GL_OES_byte_coordinates */ - -/* ------------------- GL_OES_compressed_paletted_texture ------------------ */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 - -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 - -#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) - -#endif /* GL_OES_compressed_paletted_texture */ - -/* --------------------------- GL_OES_read_format -------------------------- */ - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 - -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B - -#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) - -#endif /* GL_OES_read_format */ - -/* ------------------------ GL_OES_single_precision ------------------------ */ - -#ifndef GL_OES_single_precision -#define GL_OES_single_precision 1 - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); -typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - -#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) -#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) -#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) -#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) -#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) -#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) - -#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) - -#endif /* GL_OES_single_precision */ - -/* ---------------------------- GL_OML_interlace --------------------------- */ - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 - -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 - -#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) - -#endif /* GL_OML_interlace */ - -/* ---------------------------- GL_OML_resample ---------------------------- */ - -#ifndef GL_OML_resample -#define GL_OML_resample 1 - -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 - -#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) - -#endif /* GL_OML_resample */ - -/* ---------------------------- GL_OML_subsample --------------------------- */ - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 - -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 - -#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) - -#endif /* GL_OML_subsample */ - -/* --------------------------- GL_PGI_misc_hints --------------------------- */ - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 - -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 -#define GL_CONSERVE_MEMORY_HINT_PGI 107005 -#define GL_RECLAIM_MEMORY_HINT_PGI 107006 -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 -#define GL_ALWAYS_FAST_HINT_PGI 107020 -#define GL_ALWAYS_SOFT_HINT_PGI 107021 -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 -#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 -#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 -#define GL_STRICT_LIGHTING_HINT_PGI 107031 -#define GL_STRICT_SCISSOR_HINT_PGI 107032 -#define GL_FULL_STIPPLE_HINT_PGI 107033 -#define GL_CLIP_NEAR_HINT_PGI 107040 -#define GL_CLIP_FAR_HINT_PGI 107041 -#define GL_WIDE_LINE_HINT_PGI 107042 -#define GL_BACK_NORMALS_HINT_PGI 107043 - -#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) - -#endif /* GL_PGI_misc_hints */ - -/* -------------------------- GL_PGI_vertex_hints -------------------------- */ - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 - -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_VERTEX_DATA_HINT_PGI 107050 -#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 -#define GL_MATERIAL_SIDE_HINT_PGI 107052 -#define GL_MAX_VERTEX_HINT_PGI 107053 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 - -#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) - -#endif /* GL_PGI_vertex_hints */ - -/* ----------------------- GL_REND_screen_coordinates ---------------------- */ - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 - -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 - -#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) - -#endif /* GL_REND_screen_coordinates */ - -/* ------------------------------- GL_S3_s3tc ------------------------------ */ - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 - -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA4_DXT5_S3TC 0x83A5 - -#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) - -#endif /* GL_S3_s3tc */ - -/* -------------------------- GL_SGIS_color_range -------------------------- */ - -#ifndef GL_SGIS_color_range -#define GL_SGIS_color_range 1 - -#define GL_EXTENDED_RANGE_SGIS 0x85A5 -#define GL_MIN_RED_SGIS 0x85A6 -#define GL_MAX_RED_SGIS 0x85A7 -#define GL_MIN_GREEN_SGIS 0x85A8 -#define GL_MAX_GREEN_SGIS 0x85A9 -#define GL_MIN_BLUE_SGIS 0x85AA -#define GL_MAX_BLUE_SGIS 0x85AB -#define GL_MIN_ALPHA_SGIS 0x85AC -#define GL_MAX_ALPHA_SGIS 0x85AD - -#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) - -#endif /* GL_SGIS_color_range */ - -/* ------------------------- GL_SGIS_detail_texture ------------------------ */ - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 - -typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); - -#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) -#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) - -#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) - -#endif /* GL_SGIS_detail_texture */ - -/* -------------------------- GL_SGIS_fog_function ------------------------- */ - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 - -typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); - -#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) -#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) - -#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) - -#endif /* GL_SGIS_fog_function */ - -/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 - -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 - -#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) - -#endif /* GL_SGIS_generate_mipmap */ - -/* -------------------------- GL_SGIS_multisample -------------------------- */ - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 - -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); - -#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) -#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) - -#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) - -#endif /* GL_SGIS_multisample */ - -/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 - -#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) - -#endif /* GL_SGIS_pixel_texture */ - -/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 - -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 - -#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) - -#endif /* GL_SGIS_point_line_texgen */ - -/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 - -typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); -typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); - -#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) -#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) - -#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) - -#endif /* GL_SGIS_sharpen_texture */ - -/* --------------------------- GL_SGIS_texture4D --------------------------- */ - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); - -#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) -#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) - -#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) - -#endif /* GL_SGIS_texture4D */ - -/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_SGIS 0x812D - -#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) - -#endif /* GL_SGIS_texture_border_clamp */ - -/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_SGIS 0x812F - -#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) - -#endif /* GL_SGIS_texture_edge_clamp */ - -/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 - -typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); -typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); - -#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) -#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) - -#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) - -#endif /* GL_SGIS_texture_filter4 */ - -/* -------------------------- GL_SGIS_texture_lod -------------------------- */ - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 - -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D - -#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) - -#endif /* GL_SGIS_texture_lod */ - -/* ------------------------- GL_SGIS_texture_select ------------------------ */ - -#ifndef GL_SGIS_texture_select -#define GL_SGIS_texture_select 1 - -#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) - -#endif /* GL_SGIS_texture_select */ - -/* ----------------------------- GL_SGIX_async ----------------------------- */ - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 - -#define GL_ASYNC_MARKER_SGIX 0x8329 - -typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); -typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); - -#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) -#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) -#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) -#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) -#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) -#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) - -#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) - -#endif /* GL_SGIX_async */ - -/* ------------------------ GL_SGIX_async_histogram ------------------------ */ - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 - -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D - -#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) - -#endif /* GL_SGIX_async_histogram */ - -/* -------------------------- GL_SGIX_async_pixel -------------------------- */ - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 - -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 - -#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) - -#endif /* GL_SGIX_async_pixel */ - -/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 - -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 - -#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) - -#endif /* GL_SGIX_blend_alpha_minmax */ - -/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 - -#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) - -#endif /* GL_SGIX_clipmap */ - -/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 - -#define GL_CONVOLUTION_HINT_SGIX 0x8316 - -#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) - -#endif /* GL_SGIX_convolution_accuracy */ - -/* ------------------------- GL_SGIX_depth_texture ------------------------- */ - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 - -#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) - -#endif /* GL_SGIX_depth_texture */ - -/* -------------------------- GL_SGIX_flush_raster ------------------------- */ - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 - -typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); - -#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) - -#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) - -#endif /* GL_SGIX_flush_raster */ - -/* --------------------------- GL_SGIX_fog_offset -------------------------- */ - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 - -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 - -#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) - -#endif /* GL_SGIX_fog_offset */ - -/* -------------------------- GL_SGIX_fog_texture -------------------------- */ - -#ifndef GL_SGIX_fog_texture -#define GL_SGIX_fog_texture 1 - -#define GL_TEXTURE_FOG_SGIX 0 -#define GL_FOG_PATCHY_FACTOR_SGIX 0 -#define GL_FRAGMENT_FOG_SGIX 0 - -typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); - -#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) - -#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) - -#endif /* GL_SGIX_fog_texture */ - -/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ - -#ifndef GL_SGIX_fragment_specular_lighting -#define GL_SGIX_fragment_specular_lighting 1 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); - -#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) -#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) -#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) -#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) -#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) -#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) -#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) -#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) -#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) -#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) -#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) -#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) -#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) -#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) -#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) -#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) -#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) - -#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) - -#endif /* GL_SGIX_fragment_specular_lighting */ - -/* --------------------------- GL_SGIX_framezoom --------------------------- */ - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 - -typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); - -#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) - -#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) - -#endif /* GL_SGIX_framezoom */ - -/* --------------------------- GL_SGIX_interlace --------------------------- */ - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 - -#define GL_INTERLACE_SGIX 0x8094 - -#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) - -#endif /* GL_SGIX_interlace */ - -/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 - -#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) - -#endif /* GL_SGIX_ir_instrument1 */ - -/* ------------------------- GL_SGIX_list_priority ------------------------- */ - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 - -#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) - -#endif /* GL_SGIX_list_priority */ - -/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 - -typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); - -#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) - -#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) - -#endif /* GL_SGIX_pixel_texture */ - -/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ - -#ifndef GL_SGIX_pixel_texture_bits -#define GL_SGIX_pixel_texture_bits 1 - -#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) - -#endif /* GL_SGIX_pixel_texture_bits */ - -/* ------------------------ GL_SGIX_reference_plane ------------------------ */ - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 - -typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); - -#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) - -#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) - -#endif /* GL_SGIX_reference_plane */ - -/* ---------------------------- GL_SGIX_resample --------------------------- */ - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 - -#define GL_PACK_RESAMPLE_SGIX 0x842E -#define GL_UNPACK_RESAMPLE_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 - -#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) - -#endif /* GL_SGIX_resample */ - -/* ----------------------------- GL_SGIX_shadow ---------------------------- */ - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 - -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D - -#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) - -#endif /* GL_SGIX_shadow */ - -/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 - -#define GL_SHADOW_AMBIENT_SGIX 0x80BF - -#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) - -#endif /* GL_SGIX_shadow_ambient */ - -/* ----------------------------- GL_SGIX_sprite ---------------------------- */ - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 - -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); - -#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) -#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) -#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) -#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) - -#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) - -#endif /* GL_SGIX_sprite */ - -/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 - -typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); - -#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) - -#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) - -#endif /* GL_SGIX_tag_sample_buffer */ - -/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 - -#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) - -#endif /* GL_SGIX_texture_add_env */ - -/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 - -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B - -#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) - -#endif /* GL_SGIX_texture_coordinate_clamp */ - -/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 - -#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) - -#endif /* GL_SGIX_texture_lod_bias */ - -/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 - -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E - -#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) - -#endif /* GL_SGIX_texture_multi_buffer */ - -/* ------------------------- GL_SGIX_texture_range ------------------------- */ - -#ifndef GL_SGIX_texture_range -#define GL_SGIX_texture_range 1 - -#define GL_RGB_SIGNED_SGIX 0x85E0 -#define GL_RGBA_SIGNED_SGIX 0x85E1 -#define GL_ALPHA_SIGNED_SGIX 0x85E2 -#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 -#define GL_INTENSITY_SIGNED_SGIX 0x85E4 -#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 -#define GL_RGB16_SIGNED_SGIX 0x85E6 -#define GL_RGBA16_SIGNED_SGIX 0x85E7 -#define GL_ALPHA16_SIGNED_SGIX 0x85E8 -#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 -#define GL_INTENSITY16_SIGNED_SGIX 0x85EA -#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB -#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC -#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED -#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE -#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF -#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 -#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 -#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 -#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 -#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 -#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 -#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 -#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 -#define GL_MIN_LUMINANCE_SGIS 0x85F8 -#define GL_MAX_LUMINANCE_SGIS 0x85F9 -#define GL_MIN_INTENSITY_SGIS 0x85FA -#define GL_MAX_INTENSITY_SGIS 0x85FB - -#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) - -#endif /* GL_SGIX_texture_range */ - -/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 - -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C - -#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) - -#endif /* GL_SGIX_texture_scale_bias */ - -/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) - -#endif /* GL_SGIX_vertex_preclip */ - -/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ - -#ifndef GL_SGIX_vertex_preclip_hint -#define GL_SGIX_vertex_preclip_hint 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) - -#endif /* GL_SGIX_vertex_preclip_hint */ - -/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 - -#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) - -#endif /* GL_SGIX_ycrcb */ - -/* -------------------------- GL_SGI_color_matrix -------------------------- */ - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 - -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB - -#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) - -#endif /* GL_SGI_color_matrix */ - -/* --------------------------- GL_SGI_color_table -------------------------- */ - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 - -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); - -#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) -#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) -#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) -#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) -#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) -#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) -#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) - -#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) - -#endif /* GL_SGI_color_table */ - -/* ----------------------- GL_SGI_texture_color_table ---------------------- */ - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 - -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD - -#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) - -#endif /* GL_SGI_texture_color_table */ - -/* ------------------------- GL_SUNX_constant_data ------------------------- */ - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 - -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 - -typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); - -#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) - -#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) - -#endif /* GL_SUNX_constant_data */ - -/* -------------------- GL_SUN_convolution_border_modes -------------------- */ - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 - -#define GL_WRAP_BORDER_SUN 0x81D4 - -#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) - -#endif /* GL_SUN_convolution_border_modes */ - -/* -------------------------- GL_SUN_global_alpha -------------------------- */ - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 - -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA - -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); - -#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) -#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) -#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) -#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) -#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) -#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) -#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) -#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) - -#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) - -#endif /* GL_SUN_global_alpha */ - -/* --------------------------- GL_SUN_mesh_array --------------------------- */ - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 - -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 - -#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) - -#endif /* GL_SUN_mesh_array */ - -/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ - -#ifndef GL_SUN_read_video_pixels -#define GL_SUN_read_video_pixels 1 - -typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); - -#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) - -#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) - -#endif /* GL_SUN_read_video_pixels */ - -/* --------------------------- GL_SUN_slice_accum -------------------------- */ - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 - -#define GL_SLICE_ACCUM_SUN 0x85CC - -#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) - -#endif /* GL_SUN_slice_accum */ - -/* -------------------------- GL_SUN_triangle_list ------------------------- */ - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 - -#define GL_RESTART_SUN 0x01 -#define GL_REPLACE_MIDDLE_SUN 0x02 -#define GL_REPLACE_OLDEST_SUN 0x03 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB - -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); - -#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) -#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) -#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) -#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) -#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) -#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) -#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) - -#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) - -#endif /* GL_SUN_triangle_list */ - -/* ----------------------------- GL_SUN_vertex ----------------------------- */ - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 - -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); - -#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) -#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) -#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) -#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) -#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) -#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) -#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) -#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) -#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) -#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) -#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) -#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) -#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) -#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) -#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) -#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) -#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) -#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) -#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) -#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) -#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) -#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) -#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) -#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) -#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) -#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) -#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) -#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) -#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) - -#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) - -#endif /* GL_SUN_vertex */ - -/* -------------------------- GL_WIN_phong_shading ------------------------- */ - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 - -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB - -#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) - -#endif /* GL_WIN_phong_shading */ - -/* -------------------------- GL_WIN_specular_fog -------------------------- */ - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 - -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC - -#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) - -#endif /* GL_WIN_specular_fog */ - -/* ---------------------------- GL_WIN_swap_hint --------------------------- */ - -#ifndef GL_WIN_swap_hint -#define GL_WIN_swap_hint 1 - -typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); - -#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) - -#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) - -#endif /* GL_WIN_swap_hint */ - -/* ------------------------------------------------------------------------- */ - -#if defined(GLEW_MX) && defined(_WIN32) -#define GLEW_FUN_EXPORT -#else -#define GLEW_FUN_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) -#define GLEW_VAR_EXPORT -#else -#define GLEW_VAR_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) && defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; - -GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; -GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; -GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; -GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; -GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; -GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; -GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; -GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; -GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; -GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; -GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; -GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; - -GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; -GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; -GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; -GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; -GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; -GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; -GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; -GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; -GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; -GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; -GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; -GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; -GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; -GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; -GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; -GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; - -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; -GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; -GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; -GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; -GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; -GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; -GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; -GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; -GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; -GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; - -GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; - -GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; -GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; -GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; - -GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; -GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; - -GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; -GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; -GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; -GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; -GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; - -GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; - -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; -GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; -GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; -GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; -GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; -GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; - -GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; - -GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; - -GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DEXTPROC __glewProgramUniform1dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVEXTPROC __glewProgramUniform1dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DEXTPROC __glewProgramUniform2dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVEXTPROC __glewProgramUniform2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DEXTPROC __glewProgramUniform3dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVEXTPROC __glewProgramUniform3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DEXTPROC __glewProgramUniform4dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVEXTPROC __glewProgramUniform4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC __glewProgramUniformMatrix2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC __glewProgramUniformMatrix2x3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC __glewProgramUniformMatrix2x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC __glewProgramUniformMatrix3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC __glewProgramUniformMatrix3x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC __glewProgramUniformMatrix3x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC __glewProgramUniformMatrix4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC __glewProgramUniformMatrix4x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC __glewProgramUniformMatrix4x3dvEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; -GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; -GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; -GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; -GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; -GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; -GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; -GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; -GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; -GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; -GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; - -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; -GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; - -GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; - -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; -GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; -GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; -GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; - -GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; -GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; -GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; -GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; -GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; -GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; -GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; -GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; -GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; - -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; - -GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; -GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; -GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; -GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; - -GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; -GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; - -GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; -GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; -GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; -GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; -GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; -GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; -GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; - -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; -GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; - -GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; -GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; -GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; -GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; - -GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; -GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; -GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; -GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; -GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; -GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; -GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; - -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; - -GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; - -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; -GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; -GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; -GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; -GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; - -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; -GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; -GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; -GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; -GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; - -GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; -GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; -GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; -GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; -GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; -GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; - -GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; -GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; - -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; - -GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; -GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; -GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; -GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; -GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; - -GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; -GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; -GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; - -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; - -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; -GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; -GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; -GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; - -GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; - -GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glPNTrianglewesfATI; -GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glPNTrianglewesiATI; - -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; - -GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; -GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; -GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; -GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; -GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; - -GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; - -GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; -GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; - -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; - -GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; - -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; -GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; - -GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; -GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; -GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; -GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; - -GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; -GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; - -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; - -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; -GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; -GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; -GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; - -GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; - -GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; - -GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; -GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; - -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; - -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; - -GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; -GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; - -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; - -GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; -GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; - -GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; -GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; - -GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; - -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; - -GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; -GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; - -GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; -GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; -GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; -GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; -GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; - -GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; - -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; - -GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; -GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; -GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; -GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; -GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; - -GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; -GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; -GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; -GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; -GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; -GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; -GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; -GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; -GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; -GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; -GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; -GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; - -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; - -GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; - -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; - -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; - -GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; -GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; - -GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDEXTPROC __glewBufferRegionEnabledEXT; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONEXTPROC __glewDeleteBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONEXTPROC __glewDrawBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONEXTPROC __glewNewBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONEXTPROC __glewReadBufferRegionEXT; - -GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; - -GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; - -GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; -GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; -GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; -GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; -GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; -GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; -GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; -GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; -GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; -GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; - -GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; -GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; - -GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; -GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; - -GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; -GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; - -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; -GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; -GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; - -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; -GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; - -GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; - -GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; -GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; - -GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; -GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; -GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; -GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; - -GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; -GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; -GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; -GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; -GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; -GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; - -GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; -GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; -GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; -GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; -GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; -GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; -GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; -GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; -GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; -GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; -GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; - -GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; - -GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; - -GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; -GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; - -GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; -GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; - -GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; - -GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; - -GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; - -GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; - -GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; - -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; - -GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; - -GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; - -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; - -GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; - -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; - -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; - -GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; - -#if defined(GLEW_MX) && !defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; -GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; -GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; - -#ifdef GLEW_MX -}; /* GLEWContextStruct */ -#endif /* GLEW_MX */ - -/* ------------------------------------------------------------------------- */ - -/* error codes */ -#define GLEW_OK 0 -#define GLEW_NO_ERROR 0 -#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ -#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* GL 1.1 and up are not supported */ -#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* GLX 1.2 and up are not supported */ - -/* string codes */ -#define GLEW_VERSION 1 -#define GLEW_VERSION_MAJOR 2 -#define GLEW_VERSION_MINOR 3 -#define GLEW_VERSION_MICRO 4 - -/* API */ -#ifdef GLEW_MX - -typedef struct GLEWContextStruct GLEWContext; -GLEWAPI GLenum glewContextInit (GLEWContext* ctx); -GLEWAPI GLboolean glewContextIsSupported (GLEWContext* ctx, const char* name); - -#define glewInit() glewContextInit(glewGetContext()) -#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) -#ifdef _WIN32 -# define GLEW_GET_FUN(x) glewGetContext()->x -#else -# define GLEW_GET_FUN(x) x -#endif - -#else /* GLEW_MX */ - -GLEWAPI GLenum glewInit (); -GLEWAPI GLboolean glewIsSupported (const char* name); -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) -#define GLEW_GET_FUN(x) x - -#endif /* GLEW_MX */ - -GLEWAPI GLboolean glewExperimental; -GLEWAPI GLboolean glewGetExtension (const char* name); -GLEWAPI const GLubyte* glewGetErrorString (GLenum error); -GLEWAPI const GLubyte* glewGetString (GLenum name); - -#ifdef __cplusplus -} -#endif - -#ifdef GLEW_APIENTRY_DEFINED -#undef GLEW_APIENTRY_DEFINED -#undef APIENTRY -#undef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifdef GLEW_CALLBACK_DEFINED -#undef GLEW_CALLBACK_DEFINED -#undef CALLBACK -#endif - -#ifdef GLEW_WINGDIAPI_DEFINED -#undef GLEW_WINGDIAPI_DEFINED -#undef WINGDIAPI -#endif - -#undef GLAPI -/* #undef GLEWAPI */ - -#endif /* __glew_h__ */ diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GL/glut.h b/sdk/Darwin/2019.2/samples/ViewScene/GL/glut.h deleted file mode 100644 index 0e6ddfb..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GL/glut.h +++ /dev/null @@ -1,716 +0,0 @@ -#ifndef __glut_h__ -#define __glut_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#if defined(_WIN32) - -/* GLUT 3.7 now tries to avoid including - to avoid name space pollution, but Win32's - needs APIENTRY and WINGDIAPI defined properly. */ -# if 0 - /* This would put tons of macros and crap in our clean name space. */ -# define WIN32_LEAN_AND_MEAN -# include -# else - /* XXX This is from Win32's */ -# ifndef APIENTRY -# define GLUT_APIENTRY_DEFINED -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif - /* XXX This is from Win32's */ -# ifndef CALLBACK -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) || defined(__LCC__) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* XXX Hack for lcc compiler. It doesn't support __declspec(dllimport), just __stdcall. */ -# if defined( __LCC__ ) -# undef WINGDIAPI -# define WINGDIAPI __stdcall -# else - /* XXX This is from Win32's and */ -# ifndef WINGDIAPI -# define GLUT_WINGDIAPI_DEFINED -# define WINGDIAPI __declspec(dllimport) -# endif -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA - in your compile preprocessor options. */ -# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) -# pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */ -/* To enable automatic SGI OpenGL for Windows library usage for GLUT, - define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */ -# ifdef GLUT_USE_SGI_OPENGL -# pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */ -# pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */ -# pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */ -# else -# pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */ -# pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */ -# pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */ -# endif -# endif - -/* To disable supression of annoying warnings about floats being promoted - to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor - options. */ -# ifndef GLUT_NO_WARNING_DISABLE -# pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */ -# pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -# endif - -/* Win32 has an annoying issue where there are multiple C run-time - libraries (CRTs). If the executable is linked with a different CRT - from the GLUT DLL, the GLUT DLL will not share the same CRT static - data seen by the executable. In particular, atexit callbacks registered - in the executable will not be called if GLUT calls its (different) - exit routine). GLUT is typically built with the - "/MD" option (the CRT with multithreading DLL support), but the Visual - C++ linker default is "/ML" (the single threaded CRT). - - One workaround to this issue is requiring users to always link with - the same CRT as GLUT is compiled with. That requires users supply a - non-standard option. GLUT 3.7 has its own built-in workaround where - the executable's "exit" function pointer is covertly passed to GLUT. - GLUT then calls the executable's exit function pointer to ensure that - any "atexit" calls registered by the application are called if GLUT - needs to exit. - - Note that the __glut*WithExit routines should NEVER be called directly. - To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ - -/* XXX This is from Win32's */ -# if !defined(_MSC_VER) && !defined(__cdecl) - /* Define __cdecl for non-Microsoft compilers. */ -# define __cdecl -# define GLUT_DEFINED___CDECL -# endif -# ifndef _CRTIMP -# ifdef _NTSDK - /* Definition compatible with NT SDK */ -# define _CRTIMP -# else - /* Current definition */ -# ifdef _DLL -# define _CRTIMP __declspec(dllimport) -# else -# define _CRTIMP -# endif -# endif -# define GLUT_DEFINED__CRTIMP -# endif - -/* GLUT API entry point declarations for Win32. */ -# ifdef GLUT_BUILDING_LIB -# define GLUTAPI __declspec(dllexport) -# else -# ifdef _DLL -# define GLUTAPI __declspec(dllimport) -# else -# define GLUTAPI extern -# endif -# endif - -/* GLUT callback calling convention for Win32. */ -# define GLUTCALLBACK __cdecl - -#endif /* _WIN32 */ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) -# ifndef GLUT_BUILDING_LIB -extern _CRTIMP void __cdecl exit(int); -# endif -#else -/* non-Win32 case. */ -/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */ -# define APIENTRY -# define GLUT_APIENTRY_DEFINED -# define CALLBACK -/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */ -# define GLUTAPI extern -# define GLUTCALLBACK -/* Prototype exit for the non-Win32 case (see above). */ -extern void exit(int); -#endif - -/** - GLUT API revision history: - - GLUT_API_VERSION is updated to reflect incompatible GLUT - API changes (interface changes, semantic changes, deletions, - or additions). - - GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 - - GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, - extension. Supports new input devices like tablet, dial and button - box, and Spaceball. Easy to query OpenGL extensions. - - GLUT_API_VERSION=3 glutMenuStatus added. - - GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, - glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic - video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc, - glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, - glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!). -**/ -#ifndef GLUT_API_VERSION /* allow this to be overriden */ -#define GLUT_API_VERSION 3 -#endif - -/** - GLUT implementation revision history: - - GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT - API revisions and implementation revisions (ie, bug fixes). - - GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of - GLUT Xlib-based implementation. 11/29/94 - - GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of - GLUT Xlib-based implementation providing GLUT version 2 - interfaces. - - GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 - - GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 - - GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 - - GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 - - GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner - and video resize. 1/3/97 - - GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines. - - GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release. - - GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling. - - GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support. - - GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface. - - GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa -**/ -#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */ -#define GLUT_XLIB_IMPLEMENTATION 15 -#endif - -/* Display mode bit masks. */ -#define GLUT_RGB 0 -#define GLUT_RGBA GLUT_RGB -#define GLUT_INDEX 1 -#define GLUT_SINGLE 0 -#define GLUT_DOUBLE 2 -#define GLUT_ACCUM 4 -#define GLUT_ALPHA 8 -#define GLUT_DEPTH 16 -#define GLUT_STENCIL 32 -#if (GLUT_API_VERSION >= 2) -#define GLUT_MULTISAMPLE 128 -#define GLUT_STEREO 256 -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_LUMINANCE 512 -#endif - -/* Mouse buttons. */ -#define GLUT_LEFT_BUTTON 0 -#define GLUT_MIDDLE_BUTTON 1 -#define GLUT_RIGHT_BUTTON 2 - -/* Mouse button state. */ -#define GLUT_DOWN 0 -#define GLUT_UP 1 - -#if (GLUT_API_VERSION >= 2) -/* function keys */ -#define GLUT_KEY_F1 1 -#define GLUT_KEY_F2 2 -#define GLUT_KEY_F3 3 -#define GLUT_KEY_F4 4 -#define GLUT_KEY_F5 5 -#define GLUT_KEY_F6 6 -#define GLUT_KEY_F7 7 -#define GLUT_KEY_F8 8 -#define GLUT_KEY_F9 9 -#define GLUT_KEY_F10 10 -#define GLUT_KEY_F11 11 -#define GLUT_KEY_F12 12 -/* directional keys */ -#define GLUT_KEY_LEFT 100 -#define GLUT_KEY_UP 101 -#define GLUT_KEY_RIGHT 102 -#define GLUT_KEY_DOWN 103 -#define GLUT_KEY_PAGE_UP 104 -#define GLUT_KEY_PAGE_DOWN 105 -#define GLUT_KEY_HOME 106 -#define GLUT_KEY_END 107 -#define GLUT_KEY_INSERT 108 -#endif - -/* Entry/exit state. */ -#define GLUT_LEFT 0 -#define GLUT_ENTERED 1 - -/* Menu usage state. */ -#define GLUT_MENU_NOT_IN_USE 0 -#define GLUT_MENU_IN_USE 1 - -/* Visibility state. */ -#define GLUT_NOT_VISIBLE 0 -#define GLUT_VISIBLE 1 - -/* Window status state. */ -#define GLUT_HIDDEN 0 -#define GLUT_FULLY_RETAINED 1 -#define GLUT_PARTIALLY_RETAINED 2 -#define GLUT_FULLY_COVERED 3 - -/* Color index component selection values. */ -#define GLUT_RED 0 -#define GLUT_GREEN 1 -#define GLUT_BLUE 2 - -#if defined(_WIN32) -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN ((void*)0) -#define GLUT_STROKE_MONO_ROMAN ((void*)1) - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 ((void*)2) -#define GLUT_BITMAP_8_BY_13 ((void*)3) -#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4) -#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 ((void*)6) -#define GLUT_BITMAP_HELVETICA_12 ((void*)7) -#define GLUT_BITMAP_HELVETICA_18 ((void*)8) -#endif -#else -/* Stroke font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutStrokeRoman; -GLUTAPI void *glutStrokeMonoRoman; - -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN (&glutStrokeRoman) -#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) - -/* Bitmap font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutBitmap9By15; -GLUTAPI void *glutBitmap8By13; -GLUTAPI void *glutBitmapTimesRoman10; -GLUTAPI void *glutBitmapTimesRoman24; -GLUTAPI void *glutBitmapHelvetica10; -GLUTAPI void *glutBitmapHelvetica12; -GLUTAPI void *glutBitmapHelvetica18; - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) -#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13) -#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10) -#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10) -#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12) -#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18) -#endif -#endif - -/* glutGet parameters. */ -#define GLUT_WINDOW_X ((GLenum) 100) -#define GLUT_WINDOW_Y ((GLenum) 101) -#define GLUT_WINDOW_WIDTH ((GLenum) 102) -#define GLUT_WINDOW_HEIGHT ((GLenum) 103) -#define GLUT_WINDOW_BUFFER_SIZE ((GLenum) 104) -#define GLUT_WINDOW_STENCIL_SIZE ((GLenum) 105) -#define GLUT_WINDOW_DEPTH_SIZE ((GLenum) 106) -#define GLUT_WINDOW_RED_SIZE ((GLenum) 107) -#define GLUT_WINDOW_GREEN_SIZE ((GLenum) 108) -#define GLUT_WINDOW_BLUE_SIZE ((GLenum) 109) -#define GLUT_WINDOW_ALPHA_SIZE ((GLenum) 110) -#define GLUT_WINDOW_ACCUM_RED_SIZE ((GLenum) 111) -#define GLUT_WINDOW_ACCUM_GREEN_SIZE ((GLenum) 112) -#define GLUT_WINDOW_ACCUM_BLUE_SIZE ((GLenum) 113) -#define GLUT_WINDOW_ACCUM_ALPHA_SIZE ((GLenum) 114) -#define GLUT_WINDOW_DOUBLEBUFFER ((GLenum) 115) -#define GLUT_WINDOW_RGBA ((GLenum) 116) -#define GLUT_WINDOW_PARENT ((GLenum) 117) -#define GLUT_WINDOW_NUM_CHILDREN ((GLenum) 118) -#define GLUT_WINDOW_COLORMAP_SIZE ((GLenum) 119) -#if (GLUT_API_VERSION >= 2) -#define GLUT_WINDOW_NUM_SAMPLES ((GLenum) 120) -#define GLUT_WINDOW_STEREO ((GLenum) 121) -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_WINDOW_CURSOR ((GLenum) 122) -#endif -#define GLUT_SCREEN_WIDTH ((GLenum) 200) -#define GLUT_SCREEN_HEIGHT ((GLenum) 201) -#define GLUT_SCREEN_WIDTH_MM ((GLenum) 202) -#define GLUT_SCREEN_HEIGHT_MM ((GLenum) 203) -#define GLUT_MENU_NUM_ITEMS ((GLenum) 300) -#define GLUT_DISPLAY_MODE_POSSIBLE ((GLenum) 400) -#define GLUT_INIT_WINDOW_X ((GLenum) 500) -#define GLUT_INIT_WINDOW_Y ((GLenum) 501) -#define GLUT_INIT_WINDOW_WIDTH ((GLenum) 502) -#define GLUT_INIT_WINDOW_HEIGHT ((GLenum) 503) -#define GLUT_INIT_DISPLAY_MODE ((GLenum) 504) -#if (GLUT_API_VERSION >= 2) -#define GLUT_ELAPSED_TIME ((GLenum) 700) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_WINDOW_FORMAT_ID ((GLenum) 123) -#endif - -#if (GLUT_API_VERSION >= 2) -/* glutDeviceGet parameters. */ -#define GLUT_HAS_KEYBOARD ((GLenum) 600) -#define GLUT_HAS_MOUSE ((GLenum) 601) -#define GLUT_HAS_SPACEBALL ((GLenum) 602) -#define GLUT_HAS_DIAL_AND_BUTTON_BOX ((GLenum) 603) -#define GLUT_HAS_TABLET ((GLenum) 604) -#define GLUT_NUM_MOUSE_BUTTONS ((GLenum) 605) -#define GLUT_NUM_SPACEBALL_BUTTONS ((GLenum) 606) -#define GLUT_NUM_BUTTON_BOX_BUTTONS ((GLenum) 607) -#define GLUT_NUM_DIALS ((GLenum) 608) -#define GLUT_NUM_TABLET_BUTTONS ((GLenum) 609) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_DEVICE_IGNORE_KEY_REPEAT ((GLenum) 610) -#define GLUT_DEVICE_KEY_REPEAT ((GLenum) 611) -#define GLUT_HAS_JOYSTICK ((GLenum) 612) -#define GLUT_OWNS_JOYSTICK ((GLenum) 613) -#define GLUT_JOYSTICK_BUTTONS ((GLenum) 614) -#define GLUT_JOYSTICK_AXES ((GLenum) 615) -#define GLUT_JOYSTICK_POLL_RATE ((GLenum) 616) -#endif - -#if (GLUT_API_VERSION >= 3) -/* glutLayerGet parameters. */ -#define GLUT_OVERLAY_POSSIBLE ((GLenum) 800) -#define GLUT_LAYER_IN_USE ((GLenum) 801) -#define GLUT_HAS_OVERLAY ((GLenum) 802) -#define GLUT_TRANSPARENT_INDEX ((GLenum) 803) -#define GLUT_NORMAL_DAMAGED ((GLenum) 804) -#define GLUT_OVERLAY_DAMAGED ((GLenum) 805) - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* glutVideoResizeGet parameters. */ -#define GLUT_VIDEO_RESIZE_POSSIBLE ((GLenum) 900) -#define GLUT_VIDEO_RESIZE_IN_USE ((GLenum) 901) -#define GLUT_VIDEO_RESIZE_X_DELTA ((GLenum) 902) -#define GLUT_VIDEO_RESIZE_Y_DELTA ((GLenum) 903) -#define GLUT_VIDEO_RESIZE_WIDTH_DELTA ((GLenum) 904) -#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA ((GLenum) 905) -#define GLUT_VIDEO_RESIZE_X ((GLenum) 906) -#define GLUT_VIDEO_RESIZE_Y ((GLenum) 907) -#define GLUT_VIDEO_RESIZE_WIDTH ((GLenum) 908) -#define GLUT_VIDEO_RESIZE_HEIGHT ((GLenum) 909) -#endif - -/* glutUseLayer parameters. */ -#define GLUT_NORMAL ((GLenum) 0) -#define GLUT_OVERLAY ((GLenum) 1) - -/* glutGetModifiers return mask. */ -#define GLUT_ACTIVE_SHIFT 1 -#define GLUT_ACTIVE_CTRL 2 -#define GLUT_ACTIVE_ALT 4 - -/* glutSetCursor parameters. */ -/* Basic arrows. */ -#define GLUT_CURSOR_RIGHT_ARROW 0 -#define GLUT_CURSOR_LEFT_ARROW 1 -/* Symbolic cursor shapes. */ -#define GLUT_CURSOR_INFO 2 -#define GLUT_CURSOR_DESTROY 3 -#define GLUT_CURSOR_HELP 4 -#define GLUT_CURSOR_CYCLE 5 -#define GLUT_CURSOR_SPRAY 6 -#define GLUT_CURSOR_WAIT 7 -#define GLUT_CURSOR_TEXT 8 -#define GLUT_CURSOR_CROSSHAIR 9 -/* Directional cursors. */ -#define GLUT_CURSOR_UP_DOWN 10 -#define GLUT_CURSOR_LEFT_RIGHT 11 -/* Sizing cursors. */ -#define GLUT_CURSOR_TOP_SIDE 12 -#define GLUT_CURSOR_BOTTOM_SIDE 13 -#define GLUT_CURSOR_LEFT_SIDE 14 -#define GLUT_CURSOR_RIGHT_SIDE 15 -#define GLUT_CURSOR_TOP_LEFT_CORNER 16 -#define GLUT_CURSOR_TOP_RIGHT_CORNER 17 -#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18 -#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19 -/* Inherit from parent window. */ -#define GLUT_CURSOR_INHERIT 100 -/* Blank cursor. */ -#define GLUT_CURSOR_NONE 101 -/* Fullscreen crosshair (if available). */ -#define GLUT_CURSOR_FULL_CROSSHAIR 102 -#endif - -/* GLUT initialization sub-API. */ -GLUTAPI void APIENTRY glutInit(int *argcp, char **argv); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } -#define glutInit glutInit_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutInitDisplayString(const char *string); -#endif -GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y); -GLUTAPI void APIENTRY glutInitWindowSize(int width, int height); -GLUTAPI void APIENTRY glutMainLoop(void); - -/* GLUT window sub-API. */ -GLUTAPI int APIENTRY glutCreateWindow(const char *title); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } -#define glutCreateWindow glutCreateWindow_ATEXIT_HACK -#endif -#endif -GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height); -GLUTAPI void APIENTRY glutDestroyWindow(int win); -GLUTAPI void APIENTRY glutPostRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutSwapBuffers(void); -GLUTAPI int APIENTRY glutGetWindow(void); -GLUTAPI void APIENTRY glutSetWindow(int win); -GLUTAPI void APIENTRY glutSetWindowTitle(const char *title); -GLUTAPI void APIENTRY glutSetIconTitle(const char *title); -GLUTAPI void APIENTRY glutPositionWindow(int x, int y); -GLUTAPI void APIENTRY glutReshapeWindow(int width, int height); -GLUTAPI void APIENTRY glutPopWindow(void); -GLUTAPI void APIENTRY glutPushWindow(void); -GLUTAPI void APIENTRY glutIconifyWindow(void); -GLUTAPI void APIENTRY glutShowWindow(void); -GLUTAPI void APIENTRY glutHideWindow(void); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutFullScreen(void); -GLUTAPI void APIENTRY glutSetCursor(int cursor); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWarpPointer(int x, int y); -#endif - -/* GLUT overlay sub-API. */ -GLUTAPI void APIENTRY glutEstablishOverlay(void); -GLUTAPI void APIENTRY glutRemoveOverlay(void); -GLUTAPI void APIENTRY glutUseLayer(GLenum layer); -GLUTAPI void APIENTRY glutPostOverlayRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutShowOverlay(void); -GLUTAPI void APIENTRY glutHideOverlay(void); -#endif - -/* GLUT menu sub-API. */ -GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int)); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); } -#define glutCreateMenu glutCreateMenu_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutDestroyMenu(int menu); -GLUTAPI int APIENTRY glutGetMenu(void); -GLUTAPI void APIENTRY glutSetMenu(int menu); -GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value); -GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu); -GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value); -GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu); -GLUTAPI void APIENTRY glutRemoveMenuItem(int item); -GLUTAPI void APIENTRY glutAttachMenu(int button); -GLUTAPI void APIENTRY glutDetachMenu(int button); - -/* GLUT window callback sub-API. */ -GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height)); -GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value); -GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state)); -#if (GLUT_API_VERSION >= 2) -GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value)); -GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y)); -GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void)); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state)); -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval); -#endif -#endif -#endif - -/* GLUT color index sub-API. */ -GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue); -GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component); -GLUTAPI void APIENTRY glutCopyColormap(int win); - -/* GLUT state retrieval sub-API. */ -GLUTAPI int APIENTRY glutGet(GLenum type); -GLUTAPI int APIENTRY glutDeviceGet(GLenum type); -#if (GLUT_API_VERSION >= 2) -/* GLUT extension support sub-API */ -GLUTAPI int APIENTRY glutExtensionSupported(const char *name); -#endif -#if (GLUT_API_VERSION >= 3) -GLUTAPI int APIENTRY glutGetModifiers(void); -GLUTAPI int APIENTRY glutLayerGet(GLenum type); -#endif - -/* GLUT font sub-API */ -GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character); -GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character); -GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character); -GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string); -GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string); -#endif - -/* GLUT pre-built models sub-API */ -GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCube(GLdouble size); -GLUTAPI void APIENTRY glutSolidCube(GLdouble size); -GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutWireDodecahedron(void); -GLUTAPI void APIENTRY glutSolidDodecahedron(void); -GLUTAPI void APIENTRY glutWireTeapot(GLdouble size); -GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size); -GLUTAPI void APIENTRY glutWireOctahedron(void); -GLUTAPI void APIENTRY glutSolidOctahedron(void); -GLUTAPI void APIENTRY glutWireTetrahedron(void); -GLUTAPI void APIENTRY glutSolidTetrahedron(void); -GLUTAPI void APIENTRY glutWireIcosahedron(void); -GLUTAPI void APIENTRY glutSolidIcosahedron(void); - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* GLUT video resize sub-API. */ -GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param); -GLUTAPI void APIENTRY glutSetupVideoResizing(void); -GLUTAPI void APIENTRY glutStopVideoResizing(void); -GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height); -GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height); - -/* GLUT debugging sub-API. */ -GLUTAPI void APIENTRY glutReportErrors(void); -#endif - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -/* GLUT device control sub-API. */ -/* glutSetKeyRepeat modes. */ -#define GLUT_KEY_REPEAT_OFF 0 -#define GLUT_KEY_REPEAT_ON 1 -#define GLUT_KEY_REPEAT_DEFAULT 2 - -/* Joystick button masks. */ -#define GLUT_JOYSTICK_BUTTON_A 1 -#define GLUT_JOYSTICK_BUTTON_B 2 -#define GLUT_JOYSTICK_BUTTON_C 4 -#define GLUT_JOYSTICK_BUTTON_D 8 - -GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore); -GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode); -GLUTAPI void APIENTRY glutForceJoystickFunc(void); - -/* GLUT game mode sub-API. */ -/* glutGameModeGet. */ -#define GLUT_GAME_MODE_ACTIVE ((GLenum) 0) -#define GLUT_GAME_MODE_POSSIBLE ((GLenum) 1) -#define GLUT_GAME_MODE_WIDTH ((GLenum) 2) -#define GLUT_GAME_MODE_HEIGHT ((GLenum) 3) -#define GLUT_GAME_MODE_PIXEL_DEPTH ((GLenum) 4) -#define GLUT_GAME_MODE_REFRESH_RATE ((GLenum) 5) -#define GLUT_GAME_MODE_DISPLAY_CHANGED ((GLenum) 6) - -GLUTAPI void APIENTRY glutGameModeString(const char *string); -GLUTAPI int APIENTRY glutEnterGameMode(void); -GLUTAPI void APIENTRY glutLeaveGameMode(void); -GLUTAPI int APIENTRY glutGameModeGet(GLenum mode); -#endif - -#ifdef __cplusplus -} - -#endif - -#ifdef GLUT_APIENTRY_DEFINED -# undef GLUT_APIENTRY_DEFINED -# undef APIENTRY -#endif - -#ifdef GLUT_WINGDIAPI_DEFINED -# undef GLUT_WINGDIAPI_DEFINED -# undef WINGDIAPI -#endif - -#ifdef GLUT_DEFINED___CDECL -# undef GLUT_DEFINED___CDECL -# undef __cdecl -#endif - -#ifdef GLUT_DEFINED__CRTIMP -# undef GLUT_DEFINED__CRTIMP -# undef _CRTIMP -#endif - -#endif /* __glut_h__ */ diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.cxx b/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.cxx deleted file mode 100644 index 72195a0..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains the functions to get the global -// position of a node for a given time in the current animation stack. -// -///////////////////////////////////////////////////////////////////////// - -#include "GetPosition.h" - -// Get the global position of the node for the current pose. -// If the specified node is not part of the pose or no pose is specified, get its -// global position at the current time. -FbxAMatrix GetGlobalPosition(FbxNode* pNode, const FbxTime& pTime, FbxPose* pPose, FbxAMatrix* pParentGlobalPosition) -{ - FbxAMatrix lGlobalPosition; - bool lPositionFound = false; - - if (pPose) - { - int lNodeIndex = pPose->Find(pNode); - - if (lNodeIndex > -1) - { - // The bind pose is always a global matrix. - // If we have a rest pose, we need to check if it is - // stored in global or local space. - if (pPose->IsBindPose() || !pPose->IsLocalMatrix(lNodeIndex)) - { - lGlobalPosition = GetPoseMatrix(pPose, lNodeIndex); - } - else - { - // We have a local matrix, we need to convert it to - // a global space matrix. - FbxAMatrix lParentGlobalPosition; - - if (pParentGlobalPosition) - { - lParentGlobalPosition = *pParentGlobalPosition; - } - else - { - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalPosition(pNode->GetParent(), pTime, pPose); - } - } - - FbxAMatrix lLocalPosition = GetPoseMatrix(pPose, lNodeIndex); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - - lPositionFound = true; - } - } - - if (!lPositionFound) - { - // There is no pose entry for that node, get the current global position instead. - - // Ideally this would use parent global position and local position to compute the global position. - // Unfortunately the equation - // lGlobalPosition = pParentGlobalPosition * lLocalPosition - // does not hold when inheritance type is other than "Parent" (RSrs). - // To compute the parent rotation and scaling is tricky in the RrSs and Rrs cases. - lGlobalPosition = pNode->EvaluateGlobalTransform(pTime); - } - - return lGlobalPosition; -} - -// Get the matrix of the given pose -FbxAMatrix GetPoseMatrix(FbxPose* pPose, int pNodeIndex) -{ - FbxAMatrix lPoseMatrix; - FbxMatrix lMatrix = pPose->GetMatrix(pNodeIndex); - - memcpy((double*)lPoseMatrix, (double*)lMatrix, sizeof(lMatrix.mData)); - - return lPoseMatrix; -} - -// Get the geometry offset to a node. It is never inherited by the children. -FbxAMatrix GetGeometry(FbxNode* pNode) -{ - const FbxVector4 lT = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - const FbxVector4 lR = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - const FbxVector4 lS = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - - return FbxAMatrix(lT, lR, lS); -} - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.h b/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.h deleted file mode 100644 index 1b26338..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GetPosition.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GET_POSITION_H -#define _GET_POSITION_H - -#include - -FbxAMatrix GetGlobalPosition(FbxNode* pNode, - const FbxTime& pTime, - FbxPose* pPose = NULL, - FbxAMatrix* pParentGlobalPosition = NULL); -FbxAMatrix GetPoseMatrix(FbxPose* pPose, - int pNodeIndex); -FbxAMatrix GetGeometry(FbxNode* pNode); - -#endif // #ifndef _GET_POSITION_H - - - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.cxx b/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.cxx deleted file mode 100644 index 89baece..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.cxx +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GlFunctions.h" - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glTranslated( pFilmOffsetX, pFilmOffsetY, 0); - gluPerspective(pFieldOfViewY, - pAspect, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(pLeftPlane, - pRightPlane, - pBottomPlane, - pTopPlane, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlDrawMarker(FbxAMatrix& pGlobalPosition) -{ - glColor3f(0.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - glBegin(GL_LINE_LOOP); - glVertex3f(+1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glEnd(); - - glPopMatrix(); -} - - -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, FbxAMatrix& pGlobalEndPosition) -{ - glColor3f(1.0, 0.0, 0.0); - glLineWidth(2.0); - - glBegin(GL_LINES); - - glVertex3dv((GLdouble *)pGlobalBasePosition.GetT()); - glVertex3dv((GLdouble *)pGlobalEndPosition.GetT()); - - glEnd(); -} - -void GlDrawCamera(FbxAMatrix& pGlobalPosition, double pRoll) -{ - glColor3d(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - glRotated(pRoll, 1.0, 0.0, 0.0); - - int i; - float lCamera[10][2] = {{ 0, 5.5 }, { -3, 4.5 }, - { -3, 7.5 }, { -6, 10.5 }, { -23, 10.5 }, - { -23, -4.5 }, { -20, -7.5 }, { -3, -7.5 }, - { -3, -4.5 }, { 0, -5.5 } }; - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - } - glEnd(); - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - } - } - glEnd(); - - for (i = 0; i < 10; i++) - { - glBegin( GL_LINES ); - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - glEnd(); - } - - glPopMatrix(); -} - - -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition) -{ - glColor3f(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - double lCrossHair[6][3] = { { -3, 0, 0 }, { 3, 0, 0 }, - { 0, -3, 0 }, { 0, 3, 0 }, - { 0, 0, -3 }, { 0, 0, 3 } }; - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[0]); - glVertex3dv(lCrossHair[1]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[2]); - glVertex3dv(lCrossHair[3]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[4]); - glVertex3dv(lCrossHair[5]); - - glEnd(); - - glPopMatrix(); -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.h b/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.h deleted file mode 100644 index 5df14df..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/GlFunctions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GL_FUNCTIONS_H -#define _GL_FUNCTIONS_H - -#include - -#include "GL/glew.h" -#define GLUT_DISABLE_ATEXIT_HACK -#if defined(__MACH__) -#include -#else -#include "GL/gl.h" -#include "GL/glu.h" -#endif - -#include - -enum ShadingMode -{ - SHADING_MODE_WIREFRAME, - SHADING_MODE_SHADED, -}; - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY); -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp); - -void GlDrawMarker(FbxAMatrix& pGlobalPosition); -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, - FbxAMatrix& pGlobalEndPosition); -void GlDrawCamera(FbxAMatrix& pGlobalPosition, - double pRoll); -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition); - -#endif // #ifndef _GL_FUNCTIONS_H - - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.cxx b/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.cxx deleted file mode 100644 index 1cdc401..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.cxx +++ /dev/null @@ -1,690 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneCache.h" - -namespace -{ - const float ANGLE_TO_RADIAN = 3.1415926f / 180.f; - const GLfloat BLACK_COLOR[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat GREEN_COLOR[] = {0.0f, 1.0f, 0.0f, 1.0f}; - const GLfloat WHITE_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat WIREFRAME_COLOR[] = {0.5f, 0.5f, 0.5f, 1.0f}; - - const int TRIANGLE_VERTEX_COUNT = 3; - - // Four floats for every position. - const int VERTEX_STRIDE = 4; - // Three floats for every normal. - const int NORMAL_STRIDE = 3; - // Two floats for every UV. - const int UV_STRIDE = 2; - - const GLfloat DEFAULT_LIGHT_POSITION[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat DEFAULT_DIRECTION_LIGHT_POSITION[] = {0.0f, 0.0f, 1.0f, 0.0f}; - const GLfloat DEFAULT_SPOT_LIGHT_DIRECTION[] = {0.0f, 0.0f, -1.0f}; - const GLfloat DEFAULT_LIGHT_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat DEFAULT_LIGHT_SPOT_CUTOFF = 180.0f; - - // Get specific property value and connected texture if any. - // Value = Property value * Factor property value (if no factor property, multiply by 1). - FbxDouble3 GetMaterialProperty(const FbxSurfaceMaterial * pMaterial, - const char * pPropertyName, - const char * pFactorPropertyName, - GLuint & pTextureName) - { - FbxDouble3 lResult(0, 0, 0); - const FbxProperty lProperty = pMaterial->FindProperty(pPropertyName); - const FbxProperty lFactorProperty = pMaterial->FindProperty(pFactorPropertyName); - if (lProperty.IsValid() && lFactorProperty.IsValid()) - { - lResult = lProperty.Get(); - double lFactor = lFactorProperty.Get(); - if (lFactor != 1) - { - lResult[0] *= lFactor; - lResult[1] *= lFactor; - lResult[2] *= lFactor; - } - } - - if (lProperty.IsValid()) - { - const int lTextureCount = lProperty.GetSrcObjectCount(); - if (lTextureCount) - { - const FbxFileTexture* lTexture = lProperty.GetSrcObject(); - if (lTexture && lTexture->GetUserDataPtr()) - { - pTextureName = *(static_cast(lTexture->GetUserDataPtr())); - } - } - } - - return lResult; - } -} - -VBOMesh::VBOMesh() : mHasNormal(false), mHasUV(false), mAllByControlPoint(true) -{ - // Reset every VBO to zero, which means no buffer. - for (int lVBOIndex = 0; lVBOIndex < VBO_COUNT; ++lVBOIndex) - { - mVBONames[lVBOIndex] = 0; - } -} - -VBOMesh::~VBOMesh() -{ - // Delete VBO objects, zeros are ignored automatically. - glDeleteBuffers(VBO_COUNT, mVBONames); - -// FbxArrayDelete(mSubMeshes); - - for(int i=0; i < mSubMeshes.GetCount(); i++) - { - delete mSubMeshes[i]; - } - - mSubMeshes.Clear(); - -} - -bool VBOMesh::Initialize(const FbxMesh *pMesh) -{ - if (!pMesh->GetNode()) - return false; - - const int lPolygonCount = pMesh->GetPolygonCount(); - - // Count the polygon count of each material - FbxLayerElementArrayTemplate* lMaterialIndice = NULL; - FbxGeometryElement::EMappingMode lMaterialMappingMode = FbxGeometryElement::eNone; - if (pMesh->GetElementMaterial()) - { - lMaterialIndice = &pMesh->GetElementMaterial()->GetIndexArray(); - lMaterialMappingMode = pMesh->GetElementMaterial()->GetMappingMode(); - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - FBX_ASSERT(lMaterialIndice->GetCount() == lPolygonCount); - if (lMaterialIndice->GetCount() == lPolygonCount) - { - // Count the faces of each material - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - const int lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - if (mSubMeshes.GetCount() < lMaterialIndex + 1) - { - mSubMeshes.Resize(lMaterialIndex + 1); - } - if (mSubMeshes[lMaterialIndex] == NULL) - { - mSubMeshes[lMaterialIndex] = new SubMesh; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Make sure we have no "holes" (NULL) in the mSubMeshes table. This can happen - // if, in the loop above, we resized the mSubMeshes by more than one slot. - for (int i = 0; i < mSubMeshes.GetCount(); i++) - { - if (mSubMeshes[i] == NULL) - mSubMeshes[i] = new SubMesh; - } - - // Record the offset (how many vertex) - const int lMaterialCount = mSubMeshes.GetCount(); - int lOffset = 0; - for (int lIndex = 0; lIndex < lMaterialCount; ++lIndex) - { - mSubMeshes[lIndex]->IndexOffset = lOffset; - lOffset += mSubMeshes[lIndex]->TriangleCount * 3; - // This will be used as counter in the following procedures, reset to zero - mSubMeshes[lIndex]->TriangleCount = 0; - } - FBX_ASSERT(lOffset == lPolygonCount * 3); - } - } - } - - // All faces will use the same material. - if (mSubMeshes.GetCount() == 0) - { - mSubMeshes.Resize(1); - mSubMeshes[0] = new SubMesh(); - } - - // Congregate all the data of a mesh to be cached in VBOs. - // If normal or UV is by polygon vertex, record all vertex attributes by polygon vertex. - mHasNormal = pMesh->GetElementNormalCount() > 0; - mHasUV = pMesh->GetElementUVCount() > 0; - FbxGeometryElement::EMappingMode lNormalMappingMode = FbxGeometryElement::eNone; - FbxGeometryElement::EMappingMode lUVMappingMode = FbxGeometryElement::eNone; - if (mHasNormal) - { - lNormalMappingMode = pMesh->GetElementNormal(0)->GetMappingMode(); - if (lNormalMappingMode == FbxGeometryElement::eNone) - { - mHasNormal = false; - } - if (mHasNormal && lNormalMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - if (mHasUV) - { - lUVMappingMode = pMesh->GetElementUV(0)->GetMappingMode(); - if (lUVMappingMode == FbxGeometryElement::eNone) - { - mHasUV = false; - } - if (mHasUV && lUVMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - - // Allocate the array memory, by control point or by polygon vertex. - int lPolygonVertexCount = pMesh->GetControlPointsCount(); - if (!mAllByControlPoint) - { - lPolygonVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - } - float * lVertices = new float[lPolygonVertexCount * VERTEX_STRIDE]; - unsigned int * lIndices = new unsigned int[lPolygonCount * TRIANGLE_VERTEX_COUNT]; - float * lNormals = NULL; - if (mHasNormal) - { - lNormals = new float[lPolygonVertexCount * NORMAL_STRIDE]; - } - float * lUVs = NULL; - FbxStringList lUVNames; - pMesh->GetUVSetNames(lUVNames); - const char * lUVName = NULL; - if (mHasUV && lUVNames.GetCount()) - { - lUVs = new float[lPolygonVertexCount * UV_STRIDE]; - lUVName = lUVNames[0]; - } - - // Populate the array with vertex attribute, if by control point. - const FbxVector4 * lControlPoints = pMesh->GetControlPoints(); - FbxVector4 lCurrentVertex; - FbxVector4 lCurrentNormal; - FbxVector2 lCurrentUV; - if (mAllByControlPoint) - { - const FbxGeometryElementNormal * lNormalElement = NULL; - const FbxGeometryElementUV * lUVElement = NULL; - if (mHasNormal) - { - lNormalElement = pMesh->GetElementNormal(0); - } - if (mHasUV) - { - lUVElement = pMesh->GetElementUV(0); - } - for (int lIndex = 0; lIndex < lPolygonVertexCount; ++lIndex) - { - // Save the vertex position. - lCurrentVertex = lControlPoints[lIndex]; - lVertices[lIndex * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - - // Save the normal. - if (mHasNormal) - { - int lNormalIndex = lIndex; - if (lNormalElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndex); - } - lCurrentNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - lNormals[lIndex * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lIndex * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lIndex * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - // Save the UV. - if (mHasUV) - { - int lUVIndex = lIndex; - if (lUVElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lUVIndex = lUVElement->GetIndexArray().GetAt(lIndex); - } - lCurrentUV = lUVElement->GetDirectArray().GetAt(lUVIndex); - lUVs[lIndex * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lIndex * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - - } - - int lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - // The material for current face. - int lMaterialIndex = 0; - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - } - - // Where should I save the vertex attribute index, according to the material - const int lIndexOffset = mSubMeshes[lMaterialIndex]->IndexOffset + - mSubMeshes[lMaterialIndex]->TriangleCount * 3; - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - if (mAllByControlPoint) - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lControlPointIndex); - } - // Populate the array with vertex attribute, if by polygon vertex. - else - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lVertexCount); - - lCurrentVertex = lControlPoints[lControlPointIndex]; - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - - if (mHasNormal) - { - pMesh->GetPolygonVertexNormal(lPolygonIndex, lVerticeIndex, lCurrentNormal); - lNormals[lVertexCount * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lVertexCount * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lVertexCount * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - if (mHasUV) - { - bool lUnmappedUV; - pMesh->GetPolygonVertexUV(lPolygonIndex, lVerticeIndex, lUVName, lCurrentUV, lUnmappedUV); - lUVs[lVertexCount * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lVertexCount * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - } - ++lVertexCount; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Create VBOs - glGenBuffers(VBO_COUNT, mVBONames); - - // Save vertex attributes into GPU - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - - if (mHasNormal) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * NORMAL_STRIDE * sizeof(float), lNormals, GL_STATIC_DRAW); - delete [] lNormals; - } - - if (mHasUV) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * UV_STRIDE * sizeof(float), lUVs, GL_STATIC_DRAW); - delete [] lUVs; - } - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, lPolygonCount * TRIANGLE_VERTEX_COUNT * sizeof(unsigned int), lIndices, GL_STATIC_DRAW); - delete [] lIndices; - - return true; -} - -void VBOMesh::UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const -{ - // Convert to the same sequence with data in GPU. - float * lVertices = NULL; - int lVertexCount = 0; - if (mAllByControlPoint) - { - lVertexCount = pMesh->GetControlPointsCount(); - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - for (int lIndex = 0; lIndex < lVertexCount; ++lIndex) - { - lVertices[lIndex * VERTEX_STRIDE] = static_cast(pVertices[lIndex][0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(pVertices[lIndex][1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(pVertices[lIndex][2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - } - } - else - { - const int lPolygonCount = pMesh->GetPolygonCount(); - lVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - - lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(pVertices[lControlPointIndex][0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(pVertices[lControlPointIndex][1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(pVertices[lControlPointIndex][2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - } - ++lVertexCount; - } - } - } - - // Transfer into GPU. - if (lVertices) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - } -} - -void VBOMesh::Draw(int pMaterialIndex, ShadingMode pShadingMode) const -{ -#if _MSC_VER >= 1900 && defined(_WIN64) - // this warning occurs when building 64bit. - #pragma warning( push ) - #pragma warning( disable : 4312) -#endif - - // Where to start. - GLsizei lOffset = mSubMeshes[pMaterialIndex]->IndexOffset * sizeof(unsigned int); - if ( pShadingMode == SHADING_MODE_SHADED) - { - const GLsizei lElementCount = mSubMeshes[pMaterialIndex]->TriangleCount * 3; - glDrawElements(GL_TRIANGLES, lElementCount, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - } - else - { - for (int lIndex = 0; lIndex < mSubMeshes[pMaterialIndex]->TriangleCount; ++lIndex) - { - // Draw line loop for every triangle. - glDrawElements(GL_LINE_LOOP, TRIANGLE_VERTEX_COUNT, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - lOffset += sizeof(unsigned int) * TRIANGLE_VERTEX_COUNT; - } - } -#if _MSC_VER >= 1900 && defined(_WIN64) - #pragma warning( pop ) -#endif -} - -void VBOMesh::BeginDraw(ShadingMode pShadingMode) const -{ - // Push OpenGL attributes. - glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_CURRENT_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - // Set vertex position array. - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glVertexPointer(VERTEX_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_VERTEX_ARRAY); - - // Set normal array. - if (mHasNormal && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glNormalPointer(GL_FLOAT, 0, 0); - glEnableClientState(GL_NORMAL_ARRAY); - } - - // Set UV array. - if (mHasUV && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glTexCoordPointer(UV_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - } - - // Set index array. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - - if (pShadingMode == SHADING_MODE_SHADED) - { - glEnable(GL_LIGHTING); - - glEnable(GL_TEXTURE_2D); - - glEnable(GL_NORMALIZE); - } - else - { - glColor4fv(WIREFRAME_COLOR); - } -} - -void VBOMesh::EndDraw() const -{ - // Reset VBO binding. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopClientAttrib(); -} - -MaterialCache::MaterialCache() : mShinness(0) -{ - -} - -MaterialCache::~MaterialCache() -{ - -} - -// Bake material properties. -bool MaterialCache::Initialize(const FbxSurfaceMaterial * pMaterial) -{ - const FbxDouble3 lEmissive = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sEmissive, FbxSurfaceMaterial::sEmissiveFactor, mEmissive.mTextureName); - mEmissive.mColor[0] = static_cast(lEmissive[0]); - mEmissive.mColor[1] = static_cast(lEmissive[1]); - mEmissive.mColor[2] = static_cast(lEmissive[2]); - - const FbxDouble3 lAmbient = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sAmbient, FbxSurfaceMaterial::sAmbientFactor, mAmbient.mTextureName); - mAmbient.mColor[0] = static_cast(lAmbient[0]); - mAmbient.mColor[1] = static_cast(lAmbient[1]); - mAmbient.mColor[2] = static_cast(lAmbient[2]); - - const FbxDouble3 lDiffuse = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sDiffuse, FbxSurfaceMaterial::sDiffuseFactor, mDiffuse.mTextureName); - mDiffuse.mColor[0] = static_cast(lDiffuse[0]); - mDiffuse.mColor[1] = static_cast(lDiffuse[1]); - mDiffuse.mColor[2] = static_cast(lDiffuse[2]); - - const FbxDouble3 lSpecular = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sSpecular, FbxSurfaceMaterial::sSpecularFactor, mSpecular.mTextureName); - mSpecular.mColor[0] = static_cast(lSpecular[0]); - mSpecular.mColor[1] = static_cast(lSpecular[1]); - mSpecular.mColor[2] = static_cast(lSpecular[2]); - - FbxProperty lShininessProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - if (lShininessProperty.IsValid()) - { - double lShininess = lShininessProperty.Get(); - mShinness = static_cast(lShininess); - } - - return true; -} - -void MaterialCache::SetCurrentMaterial() const -{ - glMaterialfv(GL_FRONT, GL_EMISSION, mEmissive.mColor); - glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient.mColor); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mDiffuse.mColor); - glMaterialfv(GL_FRONT, GL_SPECULAR, mSpecular.mColor); - glMaterialf(GL_FRONT, GL_SHININESS, mShinness); - - glBindTexture(GL_TEXTURE_2D, mDiffuse.mTextureName); -} - -void MaterialCache::SetDefaultMaterial() -{ - glMaterialfv(GL_FRONT, GL_EMISSION, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_AMBIENT, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_DIFFUSE, GREEN_COLOR); - glMaterialfv(GL_FRONT, GL_SPECULAR, BLACK_COLOR); - glMaterialf(GL_FRONT, GL_SHININESS, 0); - - glBindTexture(GL_TEXTURE_2D, 0); -} - -int LightCache::sLightCount = 0; - -LightCache::LightCache() : mType(FbxLight::ePoint) -{ - mLightIndex = GL_LIGHT0 + sLightCount++; -} - -LightCache::~LightCache() -{ - glDisable(mLightIndex); - --sLightCount; -} - -// Bake light properties. -bool LightCache::Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer) -{ - mType = pLight->LightType.Get(); - - FbxPropertyT lColorProperty = pLight->Color; - FbxDouble3 lLightColor = lColorProperty.Get(); - mColorRed.mValue = static_cast(lLightColor[0]); - mColorGreen.mValue = static_cast(lLightColor[1]); - mColorBlue.mValue = static_cast(lLightColor[2]); - - if (pAnimLayer) - { - mColorRed.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - mColorGreen.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - mColorBlue.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - } - - if (mType == FbxLight::eSpot) - { - FbxPropertyT lConeAngleProperty = pLight->InnerAngle; - mConeAngle.mValue = static_cast(lConeAngleProperty.Get()); - if (pAnimLayer) - mConeAngle.mAnimCurve = lConeAngleProperty.GetCurve(pAnimLayer); - } - - return true; -} - -void LightCache::SetLight(const FbxTime & pTime) const -{ - const GLfloat lLightColor[4] = {mColorRed.Get(pTime), mColorGreen.Get(pTime), mColorBlue.Get(pTime), 1.0f}; - const GLfloat lConeAngle = mConeAngle.Get(pTime); - - glColor3fv(lLightColor); - - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_POLYGON_BIT); - // Visible for double side. - glDisable(GL_CULL_FACE); - // Draw wire-frame geometry. - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - if (mType == FbxLight::eSpot) - { - // Draw a cone for spot light. - glPushMatrix(); - glScalef(1.0f, 1.0f, -1.0f); - const double lRadians = ANGLE_TO_RADIAN * lConeAngle; - const double lHeight = 15.0; - const double lBase = lHeight * tan(lRadians / 2); - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluCylinder(lQuadObj, 0.0, lBase, lHeight, 18, 1); - gluDeleteQuadric(lQuadObj); - glPopMatrix(); - } - else - { - // Draw a sphere for other types. - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluSphere(lQuadObj, 1.0, 10, 10); - gluDeleteQuadric(lQuadObj); - } - glPopAttrib(); - glPopAttrib(); - - // The transform have been set, so set in local coordinate. - if (mType == FbxLight::eDirectional) - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - } - else - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_LIGHT_POSITION); - } - - glLightfv(mLightIndex, GL_DIFFUSE, lLightColor); - glLightfv(mLightIndex, GL_SPECULAR, lLightColor); - - if (mType == FbxLight::eSpot && lConeAngle != 0.0) - { - glLightfv(mLightIndex, GL_SPOT_DIRECTION, DEFAULT_SPOT_LIGHT_DIRECTION); - - // If the cone angle is 0, equal to a point light. - if (lConeAngle != 0.0f) - { - // OpenGL use cut off angle, which is half of the cone angle. - glLightf(mLightIndex, GL_SPOT_CUTOFF, lConeAngle/2); - } - } - glEnable(mLightIndex); -} - -void LightCache::IntializeEnvironment(const FbxColor & pAmbientLight) -{ - glLightfv(GL_LIGHT0, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - glLightfv(GL_LIGHT0, GL_DIFFUSE, DEFAULT_LIGHT_COLOR); - glLightfv(GL_LIGHT0, GL_SPECULAR, DEFAULT_LIGHT_COLOR); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, DEFAULT_LIGHT_SPOT_CUTOFF); - glEnable(GL_LIGHT0); - - // Set ambient light. - GLfloat lAmbientLight[] = {static_cast(pAmbientLight[0]), static_cast(pAmbientLight[1]), - static_cast(pAmbientLight[2]), 1.0f}; - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lAmbientLight); -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.h b/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.h deleted file mode 100644 index 793447c..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SceneCache.h +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CACHE_H -#define _SCENE_CACHE_H - -#include "GlFunctions.h" - -// Save mesh vertices, normals, UVs and indices in GPU with OpenGL Vertex Buffer Objects -class VBOMesh -{ -public: - VBOMesh(); - ~VBOMesh(); - - // Save up data into GPU buffers. - bool Initialize(const FbxMesh * pMesh); - - // Update vertex positions for deformed meshes. - void UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const; - - // Bind buffers, set vertex arrays, turn on lighting and texture. - void BeginDraw(ShadingMode pShadingMode) const; - // Draw all the faces with specific material with given shading mode. - void Draw(int pMaterialIndex, ShadingMode pShadingMode) const; - // Unbind buffers, reset vertex arrays, turn off lighting and texture. - void EndDraw() const; - - // Get the count of material groups - int GetSubMeshCount() const { return mSubMeshes.GetCount(); } - -private: - enum - { - VERTEX_VBO, - NORMAL_VBO, - UV_VBO, - INDEX_VBO, - VBO_COUNT, - }; - - // For every material, record the offsets in every VBO and triangle counts - struct SubMesh - { - SubMesh() : IndexOffset(0), TriangleCount(0) {} - - int IndexOffset; - int TriangleCount; - }; - - GLuint mVBONames[VBO_COUNT]; - FbxArray mSubMeshes; - bool mHasNormal; - bool mHasUV; - bool mAllByControlPoint; // Save data in VBO by control point or by polygon vertex. -}; - -// Cache for FBX material -class MaterialCache -{ -public: - MaterialCache(); - ~MaterialCache(); - - bool Initialize(const FbxSurfaceMaterial * pMaterial); - - // Set material colors and binding diffuse texture if exists. - void SetCurrentMaterial() const; - - bool HasTexture() const { return mDiffuse.mTextureName != 0; } - - // Set default green color. - static void SetDefaultMaterial(); - -private: - struct ColorChannel - { - ColorChannel() : mTextureName(0) - { - mColor[0] = 0.0f; - mColor[1] = 0.0f; - mColor[2] = 0.0f; - mColor[3] = 1.0f; - } - - GLuint mTextureName; - GLfloat mColor[4]; - }; - ColorChannel mEmissive; - ColorChannel mAmbient; - ColorChannel mDiffuse; - ColorChannel mSpecular; - GLfloat mShinness; -}; - -// Property cache, value and animation curve. -struct PropertyChannel -{ - PropertyChannel() : mAnimCurve(NULL), mValue(0.0f) {} - // Query the channel value at specific time. - GLfloat Get(const FbxTime & pTime) const - { - if (mAnimCurve) - { - return mAnimCurve->Evaluate(pTime); - } - else - { - return mValue; - } - } - - FbxAnimCurve * mAnimCurve; - GLfloat mValue; -}; - -// Cache for FBX lights -class LightCache -{ -public: - LightCache(); - ~LightCache(); - - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - static void IntializeEnvironment(const FbxColor & pAmbientLight); - - bool Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer); - - // Draw a geometry (sphere for point and directional light, cone for spot light). - // And set light attributes. - void SetLight(const FbxTime & pTime) const; - -private: - static int sLightCount; // How many lights in this scene. - - GLuint mLightIndex; - FbxLight::EType mType; - PropertyChannel mColorRed; - PropertyChannel mColorGreen; - PropertyChannel mColorBlue; - PropertyChannel mConeAngle; -}; - -#endif // _SCENE_CACHE_H diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.cxx b/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.cxx deleted file mode 100644 index 5b2c668..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.cxx +++ /dev/null @@ -1,1019 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneContext.h" - -#include "SceneCache.h" -#include "SetCamera.h" -#include "DrawScene.h" -#include "DrawText.h" -#include "targa.h" -#include "../Common/Common.h" - -namespace -{ - // Default file of ViewScene example - const char * SAMPLE_FILENAME = "humanoid.fbx"; - - // Button and action definition - const int LEFT_BUTTON = 0; - const int MIDDLE_BUTTON = 1; - const int RIGHT_BUTTON = 2; - - const int BUTTON_DOWN = 0; - const int BUTTON_UP = 1; - - // Find all the cameras under this node recursively. - void FillCameraArrayRecursive(FbxNode* pNode, FbxArray& pCameraArray) - { - if (pNode) - { - if (pNode->GetNodeAttribute()) - { - if (pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCamera) - { - pCameraArray.Add(pNode); - } - } - - const int lCount = pNode->GetChildCount(); - for (int i = 0; i < lCount; i++) - { - FillCameraArrayRecursive(pNode->GetChild(i), pCameraArray); - } - } - } - - // Find all the cameras in this scene. - void FillCameraArray(FbxScene* pScene, FbxArray& pCameraArray) - { - pCameraArray.Clear(); - - FillCameraArrayRecursive(pScene->GetRootNode(), pCameraArray); - } - - // Find all poses in this scene. - void FillPoseArray(FbxScene* pScene, FbxArray& pPoseArray) - { - const int lPoseCount = pScene->GetPoseCount(); - - for (int i=0; i < lPoseCount; ++i) - { - pPoseArray.Add(pScene->GetPose(i)); - } - } - - void PreparePointCacheData(FbxScene* pScene, FbxTime &pCache_Start, FbxTime &pCache_Stop) - { - // This function show how to cycle through scene elements in a linear way. - const int lNodeCount = pScene->GetSrcObjectCount(); - FbxStatus lStatus; - - for (int lIndex=0; lIndexGetSrcObject(lIndex); - - if (lNode->GetGeometry()) - { - int i, lVertexCacheDeformerCount = lNode->GetGeometry()->GetDeformerCount(FbxDeformer::eVertexCache); - - // There should be a maximum of 1 Vertex Cache Deformer for the moment - lVertexCacheDeformerCount = lVertexCacheDeformerCount > 0 ? 1 : 0; - - for (i=0; i(lNode->GetGeometry()->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - // Process the point cache data only if the constraint is active - if (lDeformer->Active.Get()) - { - if (lCache->GetCacheFileFormat() == FbxCache::eMaxPointCacheV2) - { - // This code show how to convert from PC2 to MC point cache format - // turn it on if you need it. -#if 0 - if (!lCache->ConvertFromPC2ToMC(FbxCache::eMCOneFile, - FbxTime::GetFrameRate(pScene->GetGlobalTimeSettings().GetTimeMode()))) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lCache->GetStaus().GetErrorString(); - } -#endif - } - else if (lCache->GetCacheFileFormat() == FbxCache::eMayaCache) - { - // This code show how to convert from MC to PC2 point cache format - // turn it on if you need it. - //#if 0 - if (!lCache->ConvertFromMCToPC2(FbxTime::GetFrameRate(pScene->GetGlobalSettings().GetTimeMode()), 0, &lStatus)) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lStatus.GetErrorString(); - } - //#endif - } - - - // Now open the cache file to read from it - if (!lCache->OpenFileForRead(&lStatus)) - { - // Cannot open file - FbxString lTheErrorIs = lStatus.GetErrorString(); - - // Set the deformer inactive so we don't play it back - lDeformer->Active = false; - } - else - { - // get the start and stop time of the cache - FbxTime lChannel_Start; - FbxTime lChannel_Stop; - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - if(lCache->GetAnimationRange(lChannelIndex, lChannel_Start, lChannel_Stop)) - { - // get the smallest start time - if(lChannel_Start < pCache_Start) pCache_Start = lChannel_Start; - - // get the biggest stop time - if(lChannel_Stop > pCache_Stop) pCache_Stop = lChannel_Stop; - } - } - } - } - } - } - } - - // Load a texture file (TGA only now) into GPU and return the texture object name - bool LoadTextureFromFile(const FbxString & pFilePath, unsigned int & pTextureObject) - { - if (pFilePath.Right(3).Upper() == "TGA") - { - tga_image lTGAImage; - - if (tga_read(&lTGAImage, pFilePath.Buffer()) == TGA_NOERR) - { - // Make sure the image is left to right - if (tga_is_right_to_left(&lTGAImage)) - tga_flip_horiz(&lTGAImage); - - // Make sure the image is bottom to top - if (tga_is_top_to_bottom(&lTGAImage)) - tga_flip_vert(&lTGAImage); - - // Make the image BGR 24 - tga_convert_depth(&lTGAImage, 24); - - // Transfer the texture date into GPU - glGenTextures(1, &pTextureObject); - glBindTexture(GL_TEXTURE_2D, pTextureObject); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexImage2D(GL_TEXTURE_2D, 0, 3, lTGAImage.width, lTGAImage.height, 0, GL_BGR, - GL_UNSIGNED_BYTE, lTGAImage.image_data); - glBindTexture(GL_TEXTURE_2D, 0); - - tga_free_buffers(&lTGAImage); - - return true; - } - } - - return false; - } - - // Bake node attributes and materials under this node recursively. - // Currently only mesh, light and material. - void LoadCacheRecursive(FbxNode * pNode, FbxAnimLayer * pAnimLayer, bool pSupportVBO) - { - // Bake material and hook as user data. - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && !lMaterial->GetUserDataPtr()) - { - FbxAutoPtr lMaterialCache(new MaterialCache); - if (lMaterialCache->Initialize(lMaterial)) - { - lMaterial->SetUserDataPtr(lMaterialCache.Release()); - } - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Bake mesh as VBO(vertex buffer object) into GPU. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (pSupportVBO && lMesh && !lMesh->GetUserDataPtr()) - { - FbxAutoPtr lMeshCache(new VBOMesh); - if (lMeshCache->Initialize(lMesh)) - { - lMesh->SetUserDataPtr(lMeshCache.Release()); - } - } - } - // Bake light properties. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && !lLight->GetUserDataPtr()) - { - FbxAutoPtr lLightCache(new LightCache); - if (lLightCache->Initialize(lLight, pAnimLayer)) - { - lLight->SetUserDataPtr(lLightCache.Release()); - } - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - LoadCacheRecursive(pNode->GetChild(lChildIndex), pAnimLayer, pSupportVBO); - } - } - - // Unload the cache and release the memory under this node recursively. - void UnloadCacheRecursive(FbxNode * pNode) - { - // Unload the material cache - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && lMaterial->GetUserDataPtr()) - { - MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - lMaterial->SetUserDataPtr(NULL); - delete lMaterialCache; - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Unload the mesh cache - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (lMesh && lMesh->GetUserDataPtr()) - { - VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - lMesh->SetUserDataPtr(NULL); - delete lMeshCache; - } - } - // Unload the light cache - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && lLight->GetUserDataPtr()) - { - LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - lLight->SetUserDataPtr(NULL); - delete lLightCache; - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - UnloadCacheRecursive(pNode->GetChild(lChildIndex)); - } - } - - // Bake node attributes and materials for this scene and load the textures. - void LoadCacheRecursive(FbxScene * pScene, FbxAnimLayer * pAnimLayer, const char * pFbxFileName, bool pSupportVBO) - { - // Load the textures into GPU, only for file texture now - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && !lFileTexture->GetUserDataPtr()) - { - // Try to load the texture from absolute path - const FbxString lFileName = lFileTexture->GetFileName(); - - // Only TGA textures are supported now. - if (lFileName.Right(3).Upper() != "TGA") - { - FBXSDK_printf("Only TGA textures are supported now: %s\n", lFileName.Buffer()); - continue; - } - - GLuint lTextureObject = 0; - bool lStatus = LoadTextureFromFile(lFileName, lTextureObject); - - const FbxString lAbsFbxFileName = FbxPathUtils::Resolve(pFbxFileName); - const FbxString lAbsFolderName = FbxPathUtils::GetFolderName(lAbsFbxFileName); - if (!lStatus) - { - // Load texture from relative file name (relative to FBX file) - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lFileTexture->GetRelativeFileName()); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - // Load texture from file name only (relative to FBX file) - const FbxString lTextureFileName = FbxPathUtils::GetFileName(lFileName); - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lTextureFileName); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - FBXSDK_printf("Failed to load texture file: %s\n", lFileName.Buffer()); - continue; - } - - if (lStatus) - { - GLuint * lTextureName = new GLuint(lTextureObject); - lFileTexture->SetUserDataPtr(lTextureName); - } - } - } - - LoadCacheRecursive(pScene->GetRootNode(), pAnimLayer, pSupportVBO); - } - - // Unload the cache and release the memory fro this scene and release the textures in GPU - void UnloadCacheRecursive(FbxScene * pScene) - { - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && lFileTexture->GetUserDataPtr()) - { - GLuint * lTextureName = static_cast(lFileTexture->GetUserDataPtr()); - lFileTexture->SetUserDataPtr(NULL); - glDeleteTextures(1, lTextureName); - delete lTextureName; - } - } - - UnloadCacheRecursive(pScene->GetRootNode()); - } -} - -bool InitializeOpenGL() -{ - // Initialize GLEW. - GLenum lError = glewInit(); - if (lError != GLEW_OK) - { - FBXSDK_printf("GLEW Error: %s\n", glewGetErrorString(lError)); - return false; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glClearColor(0.0, 0.0, 0.0, 0.0); - - // OpenGL 1.5 at least. - if (!GLEW_VERSION_1_5) - { - FBXSDK_printf("The OpenGL version should be at least 1.5 to display shaded scene!\n"); - return false; - } - - return true; -} - -SceneContext::SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO) -: mFileName(pFileName), mStatus(UNLOADED), -mSdkManager(NULL), mScene(NULL), mImporter(NULL), mCurrentAnimLayer(NULL), mSelectedNode(NULL), -mPoseIndex(-1), mCameraStatus(CAMERA_NOTHING), mPause(false), mShadingMode(SHADING_MODE_SHADED), -mSupportVBO(pSupportVBO), mCameraZoomMode(ZOOM_FOCAL_LENGTH), -mWindowWidth(pWindowWidth), mWindowHeight(pWindowHeight), mDrawText(new DrawText) -{ - if (mFileName == NULL) - mFileName = SAMPLE_FILENAME; - - // initialize cache start and stop time - mCache_Start = FBXSDK_TIME_INFINITE; - mCache_Stop = FBXSDK_TIME_MINUS_INFINITE; - - // Create the FBX SDK manager which is the object allocator for almost - // all the classes in the SDK and create the scene. - InitializeSdkObjects(mSdkManager, mScene); - - if (mSdkManager) - { - // Create the importer. - int lFileFormat = -1; - mImporter = FbxImporter::Create(mSdkManager,""); - if (!mSdkManager->GetIOPluginRegistry()->DetectReaderFileFormat(mFileName, lFileFormat) ) - { - // Unrecognizable file format. Try to fall back to FbxImporter::eFBX_BINARY - lFileFormat = mSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( "FBX binary (*.fbx)" );; - } - - // Initialize the importer by providing a filename. - if(mImporter->Initialize(mFileName, lFileFormat) == true) - { - // The file is going to be imported at - // the end of the first display callback. - mWindowMessage = "Importing file "; - mWindowMessage += mFileName; - mWindowMessage += "\nPlease wait!"; - - // Set scene status flag to ready to load. - mStatus = MUST_BE_LOADED; - } - else - { - mWindowMessage = "Unable to open file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - mWindowMessage += "\nEsc to exit"; - } - } - else - { - mWindowMessage = "Unable to create the FBX SDK manager"; - mWindowMessage += "\nEsc to exit"; - } -} - -SceneContext::~SceneContext() -{ - FbxArrayDelete(mAnimStackNameArray); - - delete mDrawText; - - // Unload the cache and free the memory - if (mScene) - { - UnloadCacheRecursive(mScene); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(mSdkManager, true); -} - -bool SceneContext::LoadFile() -{ - bool lResult = false; - // Make sure that the scene is ready to load. - if (mStatus == MUST_BE_LOADED) - { - if (mImporter->Import(mScene) == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(mScene), &status, &details); - lResult = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lResult == false) - { - if (details.GetCount()) - { - mStatus = UNLOADED; - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - - if (lResult) - { - // Set the scene status flag to refresh - // the scene in the first timer callback. - mStatus = MUST_BE_REFRESHED; - - // Convert Axis System to what is used in this example, if needed - FbxAxisSystem SceneAxisSystem = mScene->GetGlobalSettings().GetAxisSystem(); - FbxAxisSystem OurAxisSystem(FbxAxisSystem::eYAxis, FbxAxisSystem::eParityOdd, FbxAxisSystem::eRightHanded); - if (SceneAxisSystem != OurAxisSystem) - { - OurAxisSystem.ConvertScene(mScene); - } - - // Convert Unit System to what is used in this example, if needed - FbxSystemUnit SceneSystemUnit = mScene->GetGlobalSettings().GetSystemUnit(); - if (SceneSystemUnit.GetScaleFactor() != 1.0) - { - //The unit in this example is centimeter. - FbxSystemUnit::cm.ConvertScene(mScene); - } - - // Get the list of all the animation stack. - mScene->FillAnimStackNameArray(mAnimStackNameArray); - - // Get the list of all the cameras in the scene. - FillCameraArray(mScene, mCameraArray); - - // Convert mesh, NURBS and patch into triangle mesh - FbxGeometryConverter lGeomConverter(mSdkManager); - lGeomConverter.Triangulate(mScene, /*replace*/true); - - // Bake the scene for one frame - LoadCacheRecursive(mScene, mCurrentAnimLayer, mFileName, mSupportVBO); - - // Convert any .PC2 point cache data into the .MC format for - // vertex cache deformer playback. - PreparePointCacheData(mScene, mCache_Start, mCache_Stop); - - // Get the list of pose in the scene - FillPoseArray(mScene, mPoseArray); - - // Initialize the window message. - mWindowMessage = "File "; - mWindowMessage += mFileName; - mWindowMessage += "\nClick on the right mouse button to enter menu."; - mWindowMessage += "\nEsc to exit."; - - // Initialize the frame period. - mFrameTime.SetTime(0, 0, 0, 1, 0, mScene->GetGlobalSettings().GetTimeMode()); - - // Print the keyboard shortcuts. - FBXSDK_printf("Play/Pause Animation: Space Bar.\n"); - FBXSDK_printf("Camera Rotate: Left Mouse Button.\n"); - FBXSDK_printf("Camera Pan: Left Mouse Button + Middle Mouse Button.\n"); - FBXSDK_printf("Camera Zoom: Middle Mouse Button.\n"); - } - } - else - { - // Import failed, set the scene status flag accordingly. - mStatus = UNLOADED; - - mWindowMessage = "Unable to import file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - } - - // Destroy the importer to release the file. - mImporter->Destroy(); - mImporter = NULL; - } - - return lResult; -} - -bool SceneContext::SetCurrentAnimStack(int pIndex) -{ - const int lAnimStackCount = mAnimStackNameArray.GetCount(); - if (!lAnimStackCount || pIndex >= lAnimStackCount) - { - return false; - } - - // select the base layer from the animation stack - FbxAnimStack * lCurrentAnimationStack = mScene->FindMember(mAnimStackNameArray[pIndex]->Buffer()); - if (lCurrentAnimationStack == NULL) - { - // this is a problem. The anim stack should be found in the scene! - return false; - } - - // we assume that the first animation layer connected to the animation stack is the base layer - // (this is the assumption made in the FBXSDK) - mCurrentAnimLayer = lCurrentAnimationStack->GetMember(); - mScene->SetCurrentAnimationStack(lCurrentAnimationStack); - - FbxTakeInfo* lCurrentTakeInfo = mScene->GetTakeInfo(*(mAnimStackNameArray[pIndex])); - if (lCurrentTakeInfo) - { - mStart = lCurrentTakeInfo->mLocalTimeSpan.GetStart(); - mStop = lCurrentTakeInfo->mLocalTimeSpan.GetStop(); - } - else - { - // Take the time line value - FbxTimeSpan lTimeLineTimeSpan; - mScene->GetGlobalSettings().GetTimelineDefaultTimeSpan(lTimeLineTimeSpan); - - mStart = lTimeLineTimeSpan.GetStart(); - mStop = lTimeLineTimeSpan.GetStop(); - } - - // check for smallest start with cache start - if(mCache_Start < mStart) - mStart = mCache_Start; - - // check for biggest stop with cache stop - if(mCache_Stop > mStop) - mStop = mCache_Stop; - - // move to beginning - mCurrentTime = mStart; - - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - return true; -} - -bool SceneContext::SetCurrentCamera(const char * pCameraName) -{ - if (!pCameraName) - { - return false; - } - - FbxGlobalSettings& lGlobalCameraSettings = mScene->GetGlobalSettings(); - lGlobalCameraSettings.SetDefaultCamera(pCameraName); - mStatus = MUST_BE_REFRESHED; - return true; -} - -bool SceneContext::SetCurrentPoseIndex(int pPoseIndex) -{ - mPoseIndex = pPoseIndex; - mStatus = MUST_BE_REFRESHED; - return true; -} - -void SceneContext::OnTimerClick() const -{ - // Loop in the animation stack if not paused. - if (mStop > mStart && !mPause) - { - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - mCurrentTime += mFrameTime; - - if (mCurrentTime > mStop) - { - mCurrentTime = mStart; - } - } - // Avoid displaying the same frame on - // and on if the animation stack has no length. - else - { - // Set the scene status flag to avoid refreshing - // the scene in the next timer callback. - mStatus = REFRESHED; - } -} - -// Redraw the scene -bool SceneContext::OnDisplay() -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // Test if the scene has been loaded yet. - if (mStatus != UNLOADED && mStatus != MUST_BE_LOADED) - { - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glEnable(GL_DEPTH_TEST); - // Draw the front face only, except for the texts and lights. - glEnable(GL_CULL_FACE); - - // Set the view to the current camera settings. - SetCamera(mScene, mCurrentTime, mCurrentAnimLayer, mCameraArray, - mWindowWidth, mWindowHeight); - - FbxPose * lPose = NULL; - if (mPoseIndex != -1) - { - lPose = mScene->GetPose(mPoseIndex); - } - - // If one node is selected, draw it and its children. - FbxAMatrix lDummyGlobalPosition; - - if (mSelectedNode) - { - // Set the lighting before other things. - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mSelectedNode, mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - // Otherwise, draw the whole scene. - else - { - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mScene->GetRootNode(), mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - - glPopAttrib(); - glPopAttrib(); - } - - DisplayWindowMessage(); - - return true; -} - -void SceneContext::OnReshape(int pWidth, int pHeight) -{ - glViewport(0, 0, (GLsizei)pWidth, (GLsizei)pHeight); - mWindowWidth = pWidth; - mWindowHeight = pHeight; -} - -void SceneContext::OnKeyboard(unsigned char pKey) -{ - // Zoom In on '+' or '=' keypad keys - if (pKey == 43 || pKey == 61) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // Zoom Out on '-' or '_' keypad keys - if (pKey == 45 || pKey == 95) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 0 - 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // 'N' enable/disable normal display - if (pKey == 'N' || pKey == 'n') - { - //gOGLScene->GetShadingManager()->SetDrawNormal(!gOGLScene->GetShadingManager()->IsDrawNormal()); - } - - // Pause and unpause when spacebar is pressed. - if (pKey == ' ') - { - SetPause(!GetPause()); - } -} - -void SceneContext::OnMouse(int pButton, int pState, int pX, int pY) -{ - // Move the camera (orbit, zoom or pan) with the mouse. - FbxCamera* lCamera = GetCurrentCamera(mScene); - if (lCamera) - { - mCamPosition = lCamera->Position.Get(); - mCamCenter = lCamera->InterestPosition.Get(); - mRoll = lCamera->Roll.Get(); - } - mLastX = pX; - mLastY = pY; - - switch (pButton) - { - case LEFT_BUTTON: - // ORBIT (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ZOOM) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ORBIT; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ZOOM; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - - case MIDDLE_BUTTON: - // ZOOM (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ORBIT) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ZOOM; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ORBIT; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - } -} - -void SceneContext::OnMouseMotion(int pX, int pY) -{ - int motion; - - switch (mCameraStatus) - { - default: - break; - case CAMERA_ORBIT: - CameraOrbit(mScene, mCamPosition, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_ZOOM: - motion = mLastY-pY; - CameraZoom(mScene, motion, mCameraZoomMode); - mLastY = pY; - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_PAN: - CameraPan(mScene, mCamPosition, mCamCenter, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - } -} - -void SceneContext::SetSelectedNode(FbxNode * pSelectedNode) -{ - mSelectedNode = pSelectedNode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::SetShadingMode(ShadingMode pMode) -{ - mShadingMode = pMode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::DisplayWindowMessage() -{ - glColor3f(1.0, 1.0, 1.0); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, mWindowWidth, 0, mWindowHeight); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - // Display message in the left up corner of the window - const float lX = 5; - const float lY = static_cast(mWindowHeight) - 20; - glTranslatef(lX, lY, 0); - - mDrawText->SetPointSize(15.f); - mDrawText->Display(mWindowMessage.Buffer()); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); -} - -void SceneContext::DisplayGrid(const FbxAMatrix & pTransform) -{ - glPushMatrix(); - glMultMatrixd(pTransform); - - // Draw a grid 500*500 - glColor3f(0.3f, 0.3f, 0.3f); - glLineWidth(1.0); - const int hw = 500; - const int step = 20; - const int bigstep = 100; - int i; - - // Draw Grid - for (i = -hw; i <= hw; i+=step) { - - if (i % bigstep == 0) { - glLineWidth(2.0); - } else { - glLineWidth(1.0); - } - glBegin(GL_LINES); - glVertex3i(i,0,-hw); - glVertex3i(i,0,hw); - glEnd(); - glBegin(GL_LINES); - glVertex3i(-hw,0,i); - glVertex3i(hw,0,i); - glEnd(); - - } - - // Write some grid info - const GLfloat zoffset = -2.f; - const GLfloat xoffset = 1.f; - mDrawText->SetPointSize(4.f); - for (i = -hw; i <= hw; i+=bigstep) - { - - FbxString scoord; - int lCount; - - // Don't display origin - //if (i == 0) continue; - if (i == 0) { - scoord = "0"; - lCount = (int)scoord.GetLen(); - glPushMatrix(); - glVertex3f(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - - mDrawText->Display(scoord.Buffer()); - - glPopMatrix(); - - continue; - } - - // X coordinates - scoord = "X: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - // Z coordinates - scoord = "Z: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(xoffset,0,i+zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - } - - glPopMatrix(); -} - - -void SceneContext::SetZoomMode( CameraZoomMode pZoomMode) -{ - if( pZoomMode == ZOOM_POSITION) - { - mCameraZoomMode = ZOOM_POSITION; - } - else - { - mCameraZoomMode = ZOOM_FOCAL_LENGTH; - } - -} diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.h b/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.h deleted file mode 100644 index 8e54a72..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SceneContext.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CONTEXT_H -#define _SCENE_CONTEXT_H - -#include "GlFunctions.h" - -class DrawText; - -// This class is responsive for loading files and recording current status as -// a bridge between window system such as GLUT or Qt and a specific FBX scene. -class SceneContext -{ -public: - enum Status - { - UNLOADED, // Unload file or load failure; - MUST_BE_LOADED, // Ready for loading file; - MUST_BE_REFRESHED, // Something changed and redraw needed; - REFRESHED // No redraw needed. - }; - Status GetStatus() const { return mStatus; } - - // Initialize with a .FBX, .DAE or .OBJ file name and current window size. - SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO); - ~SceneContext(); - - // Return the FBX scene for more informations. - const FbxScene * GetScene() const { return mScene; } - // Load the FBX or COLLADA file into memory. - bool LoadFile(); - - // The time period for one frame. - const FbxTime GetFrameTime() const { return mFrameTime; } - - // Call this method when redraw is needed. - bool OnDisplay(); - // Call this method when window size is changed. - void OnReshape(int pWidth, int pHeight); - // Call this method when keyboard input occurs. - void OnKeyboard(unsigned char pKey); - // Call this method when mouse buttons are pushed or released. - void OnMouse(int pButton, int pState, int pX, int pY); - // Call this method when mouse is moved. - void OnMouseMotion(int pX, int pY); - // Call this method when timer is finished, for animation display. - void OnTimerClick() const; - - // Methods for creating menus. - // Get all the cameras in current scene, including producer cameras. - const FbxArray & GetCameraArray() const { return mCameraArray; } - // Get all the animation stack names in current scene. - const FbxArray & GetAnimStackNameArray() const { return mAnimStackNameArray; } - // Get all the pose in current scene. - const FbxArray & GetPoseArray() const { return mPoseArray; } - - // The input index is corresponding to the array returned from GetAnimStackNameArray. - bool SetCurrentAnimStack(int pIndex); - // Set the current camera with its name. - bool SetCurrentCamera(const char * pCameraName); - // The input index is corresponding to the array returned from GetPoseArray. - bool SetCurrentPoseIndex(int pPoseIndex); - // Set the currently selected node from external window system. - void SetSelectedNode(FbxNode * pSelectedNode); - // Set the shading mode, wire-frame or shaded. - void SetShadingMode(ShadingMode pMode); - - // Pause the animation. - void SetPause(bool pPause) { mPause = pPause; } - // Check whether the animation is paused. - bool GetPause() const { return mPause; } - - - enum CameraZoomMode - { - ZOOM_FOCAL_LENGTH, - ZOOM_POSITION - }; - CameraZoomMode GetZoomMode() { return mCameraZoomMode; } - void SetZoomMode( CameraZoomMode pZoomMode); - -private: - // Display information about current status in the left-up corner of the window. - void DisplayWindowMessage(); - // Display a X-Z grid. - void DisplayGrid(const FbxAMatrix & pTransform); - - enum CameraStatus - { - CAMERA_NOTHING, - CAMERA_ORBIT, - CAMERA_ZOOM, - CAMERA_PAN - }; - - const char * mFileName; - mutable Status mStatus; - mutable FbxString mWindowMessage; - - FbxManager * mSdkManager; - FbxScene * mScene; - FbxImporter * mImporter; - FbxAnimLayer * mCurrentAnimLayer; - FbxNode * mSelectedNode; - - int mPoseIndex; - FbxArray mAnimStackNameArray; - FbxArray mCameraArray; - FbxArray mPoseArray; - - mutable FbxTime mFrameTime, mStart, mStop, mCurrentTime; - mutable FbxTime mCache_Start, mCache_Stop; - - // Data for camera manipulation - mutable int mLastX, mLastY; - mutable FbxVector4 mCamPosition, mCamCenter; - mutable double mRoll; - mutable CameraStatus mCameraStatus; - - bool mPause; - ShadingMode mShadingMode; - bool mSupportVBO; - - //camera zoom mode - CameraZoomMode mCameraZoomMode; - - int mWindowWidth, mWindowHeight; - // Utility class for draw text in OpenGL. - DrawText * mDrawText; -}; - -// Initialize GLEW, must be called after the window is created. -bool InitializeOpenGL(); - -#endif // _SCENE_CONTEXT_H - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.cxx b/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.cxx deleted file mode 100644 index b558be4..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.cxx +++ /dev/null @@ -1,896 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains functions to: -// 1) find the current camera; -// 2) get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 3) compute the orientation of a camera. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "GetPosition.h" -#include "GlFunctions.h" -#include "SetCamera.h" -#include "SceneContext.h" - -#define HFOV2VFOV(h, ar) (2.0 * atan((ar) * tan( (h * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectY / aspectX -#define VFOV2HFOV(v, ar) (2.0 * atan((ar) * tan( (v * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectX / aspectY - -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray); -void GetCameraAnimatedParameters(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer); -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera); - -static double gsOrthoCameraScale = 178.0; - - -// Set the view to the current camera settings. -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight) -{ - // Find the current camera at the given time. - FbxCamera* lCamera = GetCurrentCamera(pScene, pTime, pAnimLayer, pCameraArray); - if( lCamera == NULL) - return; - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lUp(0,1,0); - FbxVector4 lForward, lRight; - - if (lCamera) - { - lEye = lCamera->Position.Get(); - lUp = lCamera->UpVector.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = GetGlobalPosition(lCameraNode->GetTarget(), pTime).GetT(); - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - lCenter = lCamera->InterestPosition.Get(); - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector(GetGlobalPosition(lCameraNode, pTime).GetR()); - lGlobalRotation.SetR(lRotationVector); - - // Get the length - FbxVector4 lInterestPosition(lCamera->InterestPosition.Get()); - FbxVector4 lCameraGlobalPosition(GetGlobalPosition(lCameraNode, pTime).GetT()); - double lLength = (FbxVector4(lInterestPosition - lCameraGlobalPosition).Length()); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lCenter = lGlobalRotation.MultT(lRotationVector); - lCenter *= lLength; - lCenter += lEye; - - // Update the default up vector with the camera rotation. - lRotationVector = FbxVector4(0,1.0,0); - lUp = lGlobalRotation.MultT(lRotationVector); - } - } - - // Align the up vector. - lForward = lCenter - lEye; - lForward.Normalize(); - lRight = lForward.CrossProduct(lUp); - lRight.Normalize(); - lUp = lRight.CrossProduct(lForward); - lUp.Normalize(); - - // Rotate the up vector with the roll value. - double lRadians = 0; - - if (lCamera) - lRadians = lCamera->Roll.Get() * FBXSDK_PI_DIV_180; - lUp = lUp * cos( lRadians) + lRight * sin(lRadians); - - - double lNearPlane = 0.01; - if (lCamera) - lNearPlane = lCamera->GetNearPlane(); - double lFarPlane = 4000.0; - if (lCamera) - lFarPlane = lCamera->GetFarPlane(); - - //Get global scaling. - FbxVector4 lCameraScaling = GetGlobalPosition(lCameraNode, pTime).GetS(); - static const int FORWARD_SCALE = 2; - - //scaling near plane and far plane - lNearPlane *= lCameraScaling[ FORWARD_SCALE]; - lFarPlane *= lCameraScaling[ FORWARD_SCALE]; - - - - - - - // Get the relevant camera settings for a perspective view. - if (lCamera && lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - //get the aspect ratio - FbxCamera::EAspectRatioMode lCamAspectRatioMode = lCamera->GetAspectRatioMode(); - double lAspectX = lCamera->AspectWidth.Get(); - double lAspectY = lCamera->AspectHeight.Get(); - double lAspectRatio = 1.333333; - switch( lCamAspectRatioMode) - { - case FbxCamera::eWindowSize: - lAspectRatio = lAspectX / lAspectY; - break; - case FbxCamera::eFixedRatio: - lAspectRatio = lAspectX; - - break; - case FbxCamera::eFixedResolution: - lAspectRatio = lAspectX / lAspectY * lCamera->GetPixelRatio(); - break; - case FbxCamera::eFixedWidth: - lAspectRatio = lCamera->GetPixelRatio() / lAspectY; - break; - case FbxCamera::eFixedHeight: - lAspectRatio = lCamera->GetPixelRatio() * lAspectX; - break; - default: - break; - - } - - //get the aperture ratio - double lFilmHeight = lCamera->GetApertureHeight(); - double lFilmWidth = lCamera->GetApertureWidth() * lCamera->GetSqueezeRatio(); - //here we use Height : Width - double lApertureRatio = lFilmHeight / lFilmWidth; - - - //change the aspect ratio to Height : Width - lAspectRatio = 1 / lAspectRatio; - //revise the aspect ratio and aperture ratio - FbxCamera::EGateFit lCameraGateFit = lCamera->GateFit.Get(); - switch( lCameraGateFit ) - { - - case FbxCamera::eFitFill: - if( lApertureRatio > lAspectRatio) // the same as eHORIZONTAL_FIT - { - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - } - else if( lApertureRatio < lAspectRatio) //the same as eVERTICAL_FIT - { - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - } - break; - case FbxCamera::eFitVertical: - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitHorizontal: - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitStretch: - lAspectRatio = lApertureRatio; - break; - case FbxCamera::eFitOverscan: - if( lFilmWidth > lFilmHeight) - { - lFilmHeight = lFilmWidth * lAspectRatio; - } - else - { - lFilmWidth = lFilmHeight / lAspectRatio; - } - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitNone: - default: - break; - } - //change the aspect ratio to Width : Height - lAspectRatio = 1 / lAspectRatio; - - double lFieldOfViewX = 0.0; - double lFieldOfViewY = 0.0; - if ( lCamera->GetApertureMode() == FbxCamera::eVertical) - { - lFieldOfViewY = lCamera->FieldOfView.Get(); - lFieldOfViewX = VFOV2HFOV( lFieldOfViewY, 1 / lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizontal) - { - lFieldOfViewX = lCamera->FieldOfView.Get(); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eFocalLength) - { - lFieldOfViewX = lCamera->ComputeFieldOfView(lCamera->FocalLength.Get()); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - lFieldOfViewX = lCamera->FieldOfViewX.Get(); - lFieldOfViewY = lCamera->FieldOfViewY.Get(); - } - - - - double lRealScreenRatio = (double)pWindowWidth / (double)pWindowHeight; - int lViewPortPosX = 0, - lViewPortPosY = 0, - lViewPortSizeX = pWindowWidth, - lViewPortSizeY = pWindowHeight; - //compute the view port - if( lRealScreenRatio > lAspectRatio) - { - lViewPortSizeY = pWindowHeight; - lViewPortSizeX = (int)( lViewPortSizeY * lAspectRatio); - lViewPortPosY = 0; - lViewPortPosX = (int)((pWindowWidth - lViewPortSizeX) * 0.5); - } - else - { - lViewPortSizeX = pWindowWidth; - lViewPortSizeY = (int)(lViewPortSizeX / lAspectRatio); - lViewPortPosX = 0; - lViewPortPosY = (int)((pWindowHeight - lViewPortSizeY) * 0.5); - } - - //revise the Perspective since we have film offset - double lFilmOffsetX = lCamera->FilmOffsetX.Get(); - double lFilmOffsetY = lCamera->FilmOffsetY.Get(); - lFilmOffsetX = 0 - lFilmOffsetX / lFilmWidth * 2.0; - lFilmOffsetY = 0 - lFilmOffsetY / lFilmHeight * 2.0; - - GlSetCameraPerspective( lFieldOfViewY, lAspectRatio, lNearPlane, lFarPlane, lEye, lCenter, lUp, lFilmOffsetX, lFilmOffsetY); - - - - //glMatrixMode(GL_PROJECTION); - //double lTestPerpMatrix[ 16]; - //glGetDoublev( GL_PROJECTION_MATRIX, lTestPerpMatrix); - - //lTestPerpMatrix[ 8] -= lFilmOffsetX; - //lTestPerpMatrix[ 9] -= lFilmOffsetY; - // - //glLoadMatrixd( lTestPerpMatrix); - //glMatrixMode(GL_MODELVIEW); - - - glViewport( lViewPortPosX, lViewPortPosY, lViewPortSizeX, lViewPortSizeY); - - - } - // Get the relevant camera settings for an orthogonal view. - else - { - double lPixelRatio = 1.0; - if (lCamera) - lPixelRatio = lCamera->GetPixelRatio(); - - double lLeftPlane, lRightPlane, lBottomPlane, lTopPlane; - - if(pWindowWidth < pWindowHeight) - { - lLeftPlane = -gsOrthoCameraScale * lPixelRatio; - lRightPlane = gsOrthoCameraScale * lPixelRatio; - lBottomPlane = -gsOrthoCameraScale * pWindowHeight / pWindowWidth; - lTopPlane = gsOrthoCameraScale * pWindowHeight / pWindowWidth; - } - else - { - pWindowWidth *= (int) lPixelRatio; - lLeftPlane = -gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lRightPlane = gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lBottomPlane = -gsOrthoCameraScale; - lTopPlane = gsOrthoCameraScale; - } - - GlSetCameraOrthogonal(lLeftPlane, - lRightPlane, - lBottomPlane, - lTopPlane, - lNearPlane, - lFarPlane, - lEye, - lCenter, - lUp); - } -} - - -// Find the current camera at the given time. -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray) -{ - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxString lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - // check if we need to create the Producer cameras! - if (lGlobalCameraSettings.GetCameraProducerPerspective() == NULL && - lGlobalCameraSettings.GetCameraProducerBottom() == NULL && - lGlobalCameraSettings.GetCameraProducerTop() == NULL && - lGlobalCameraSettings.GetCameraProducerFront() == NULL && - lGlobalCameraSettings.GetCameraProducerBack() == NULL && - lGlobalCameraSettings.GetCameraProducerRight() == NULL && - lGlobalCameraSettings.GetCameraProducerLeft() == NULL) - { - lGlobalCameraSettings.CreateProducerCameras(); - } - - if (lCurrentCameraName.Compare(FBXSDK_CAMERA_PERSPECTIVE) == 0) - { - return lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BOTTOM) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_TOP) == 0) - { - return lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_FRONT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BACK) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_RIGHT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_LEFT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerLeft(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_SWITCHER) == 0) - { - FbxCameraSwitcher* lCameraSwitcher = pScene->GlobalCameraSettings().GetCameraSwitcher(); - FbxAnimCurve* lCurve = NULL; - if (lCameraSwitcher) - { - lCurve = lCameraSwitcher->CameraIndex.GetCurve(pAnimLayer); - int lCameraIndex = lCurve ? int(lCurve->Evaluate(pTime)) - 1 : 0; - if (lCameraIndex >= 0 && lCameraIndex < pCameraArray.GetCount()) - { - FbxNode* lNode = pCameraArray[lCameraIndex]; - - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - } - else - { - int i; - FbxNode* lNode = NULL; - - // Find the camera in the camera array. - for (i = 0; i < pCameraArray.GetCount(); i++) - { - if (lCurrentCameraName.Compare(pCameraArray[i]->GetName()) == 0) - { - lNode = pCameraArray[i]; - break; - } - } - - if (lNode) - { - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - - return lGlobalCameraSettings.GetCameraProducerPerspective(); -} - -// Get the animated parameters of a camera contained in the scene -// and store them in the associated member variables contained in -// the camera. -void GetCameraAnimatedParameters(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer) -{ - FbxCamera* lCamera = (FbxCamera*) pNode->GetNodeAttribute(); - lCamera->Position.Set(GetGlobalPosition(pNode, pTime).GetT()); - - FbxAnimCurve* fc = lCamera->Roll.GetCurve(pAnimLayer); - if (fc) - lCamera->Roll.Set(fc->Evaluate(pTime)); - - FbxCamera::EApertureMode lCameraApertureMode = lCamera->GetApertureMode(); - if (lCameraApertureMode == FbxCamera::eHorizontal || - lCameraApertureMode == FbxCamera::eVertical) - { - double lFieldOfView = lCamera->FieldOfView.Get(); - fc = lCamera->FieldOfView.GetCurve(pAnimLayer); - if (fc) - lFieldOfView = fc->Evaluate(pTime); - - //update FOV and focal length - lCamera->FieldOfView.Set( lFieldOfView); - lCamera->FocalLength.Set( lCamera->ComputeFocalLength( lFieldOfView)); - - } - else if ( lCameraApertureMode == FbxCamera::eHorizAndVert) - { - double lOldFieldOfViewX = lCamera->FieldOfViewX.Get(); - double lOldFieldOfViewY = lCamera->FieldOfViewY.Get(); - - //update FOV - double lNewFieldOfViewX = lOldFieldOfViewX; - double lNewFieldOfViewY = lOldFieldOfViewY; - fc = lCamera->FieldOfViewX.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewX = fc->Evaluate(pTime); - - fc = lCamera->FieldOfViewY.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewY = fc->Evaluate(pTime); - - lCamera->FieldOfViewX.Set(lNewFieldOfViewX); - lCamera->FieldOfViewY.Set(lNewFieldOfViewY); - - //update aspect - double lUpdatedApertureX = lCamera->GetApertureWidth(); - double lUpdatedApertureY = lCamera->GetApertureHeight(); - lUpdatedApertureX *= tan( lNewFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180); - lUpdatedApertureY *= tan( lNewFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180); - - lCamera->FilmWidth.Set( lUpdatedApertureX); - lCamera->FilmHeight.Set( lUpdatedApertureY); - lCamera->FilmAspectRatio.Set( lUpdatedApertureX / lUpdatedApertureY); - - - } - else if ( lCameraApertureMode == FbxCamera::eFocalLength) - { - double lFocalLength = lCamera->FocalLength.Get(); - fc = lCamera->FocalLength.GetCurve(pAnimLayer); - if (fc && fc ->Evaluate(pTime)) - lFocalLength = fc->Evaluate( pTime); - - - //update FOV and focal length - lCamera->FocalLength.Set( lFocalLength); - lCamera->FieldOfView.Set( lCamera->ComputeFieldOfView( lFocalLength)); - } -} - -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera) -{ - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (pCamera == lGlobalCameraSettings.GetCameraProducerPerspective()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerTop()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBottom()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerFront()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBack()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerRight()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerLeft()) - return true; - - return false; -} - -FbxCamera* GetCurrentCamera(FbxScene* pScene) -{ - FbxCamera* lRet = NULL; - FbxString lCurrentCameraName; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - if (lCurrentCameraName == FBXSDK_CAMERA_PERSPECTIVE) - { - lRet = lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_TOP) - { - lRet = lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BOTTOM) - { - lRet = lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_FRONT) - { - lRet = lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BACK) - { - lRet = lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_RIGHT) - { - lRet = lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_LEFT) - { - lRet = lGlobalCameraSettings.GetCameraProducerLeft(); - } - else - { - FbxNode* lCameraNode = pScene->FindNodeByName( lCurrentCameraName); - if( lCameraNode) - { - lRet = lCameraNode->GetCamera(); - } - } - return lRet; -} - - -double TransformAperture( double pAperture, double pTransform) -{ - double lTransformAperture = ( pAperture + pTransform); - if( lTransformAperture < 0.25) - { - lTransformAperture = 0.25; - } - if( lTransformAperture > 179.0) - { - lTransformAperture = 179.0; - } - return lTransformAperture; -} - -void UpdatePerspCameraAttributes( FbxCamera* pCamera, double pNewApertureW, double pNewApertureH) -{ - - if( pCamera == NULL || FbxAnimUtilities::IsAnimated( pCamera)) - return; - // update focal length or field of view. - double lApertureWidthOrig = pCamera->GetApertureWidth(); - double lApertureHeightOrig = pCamera->GetApertureHeight(); - - if (pCamera->GetApertureMode() == FbxCamera::eFocalLength) { - // update focal length according to hypothetic new apertures. - double lFLOrig = pCamera->FocalLength.Get(); - double lFOVOrig = pCamera->ComputeFieldOfView(lFLOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth( pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFLNew = pCamera->ComputeFocalLength(lFOVOrig); - double lFOVNew = pCamera->ComputeFieldOfView(lFLNew); - pCamera->FocalLength.Set(lFLNew); - pCamera->FieldOfView.Set(lFOVNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eVertical - || pCamera->GetApertureMode() == FbxCamera::eHorizontal) { - double lFOVOrig = pCamera->FieldOfView.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNew = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNew); - pCamera->FieldOfView.Set(lFOVNew); - pCamera->FocalLength.Set(lFLNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - double lFOVOrigX = pCamera->FieldOfViewX.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrigX); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNewX = pCamera->ComputeFieldOfView(lFLOrig); - double lFOVNewY = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewY); - pCamera->FocalLength.Set(lFLNew); - } - // reset aperture width and height - pCamera->SetApertureWidth(lApertureWidthOrig); - pCamera->SetApertureHeight(lApertureHeightOrig); -} - - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode) -{ - FbxCamera* lCamera = GetCurrentCamera(pScene); - if( lCamera == NULL) - return; - if( pZoomMode == SceneContext::ZOOM_FOCAL_LENGTH) - { - if (lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - double lTransform = 0 - pZoomDepth / 400.0; - - double lApertureW = lCamera->GetApertureWidth(); - lApertureW = TransformAperture( lApertureW, lTransform); - - double lApertureH = lCamera->GetApertureHeight(); - lApertureH = TransformAperture( lApertureH, lTransform); - - UpdatePerspCameraAttributes( lCamera, lApertureW, lApertureH); - - - } - else - { - if( pZoomDepth > 0) - gsOrthoCameraScale *= 0.8; - else - gsOrthoCameraScale *= 1.25; - } - } - else - { - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lForward(0,0,0); - - if (lCamera) - { - lEye = lCamera->Position.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = lCameraNode->GetTarget()->LclTranslation.Get(); - lForward = lCenter - lEye; - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - { - lCenter = lCamera->InterestPosition.Get(); - lForward = lCenter - lEye; - } - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector( lCameraNode->LclRotation.Get()); - lGlobalRotation.SetR(lRotationVector); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lForward = lGlobalRotation.MultT(lRotationVector); - } - } - lForward.Normalize(); - lEye += lForward * pZoomDepth; - FbxDouble3 lPosition(lEye[0], lEye[1], lEye[2]); - lCamera->Position.Set(lPosition); - - } -} - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY) -{ - // Orbit the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (lCamera != lGlobalCameraSettings.GetCameraProducerPerspective()) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxVector4 lRotationVector, lNewPosition, lCurPosition; - FbxAMatrix lRotation; - FbxVector4 lCenter = lCamera->InterestPosition.Get(); - - // current position - FbxVector4 lPosition = lCamera->Position.Get(); - lCurPosition = lPosition-lCenter; - - // translate - lNewPosition = lOrigCamPos-lCenter; - - int rotX; - if (lNewPosition[2] == 0) { - rotX = 90; - } else { - rotX = (int) (atan((double)lNewPosition[0]/(double)lNewPosition[2]) * FBXSDK_180_DIV_PI); - } - bool bRoll = (((int)OrigRoll % 360) != 0); - if ( (lNewPosition[2] < 0 && !bRoll) - || (lNewPosition[2] > 0 && bRoll) ) { - dY = -dY; - } - if (bRoll) dX = -dX; - - // Center on the X axis (push) - lRotationVector[1] = -rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the vertical movement: around the X axis - lRotationVector[1] = 0; - lRotationVector[0] = dY; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Back from the X axis (pop) - lRotationVector[0] = 0; - lRotationVector[1] = rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the horizontal movement - lRotationVector[1] = -dX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - - // Detect camera flip - if ( lNewPosition[0]*lCurPosition[0] < 0 - && lNewPosition[2]*lCurPosition[2] < 0) { - // flip -> roll 180. - double lRoll = lCamera->Roll.Get(); - lRoll = 180.0-lRoll; - lCamera->Roll.Set(lRoll); - } - - // Back from center - lNewPosition = lNewPosition + lCenter; - - lCamera->Position.Set(lNewPosition); - -} - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, double OrigRoll, int dX, int dY) { - // Pan the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - if (!IsProducerCamera(pScene, lCamera)) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - - FbxVector4 lRotationXV, lRotationYV, lTranslationV; - FbxAMatrix lRotationX, lRotationY, lRotationXInverse, lRotationYInverse, lTranslation; - FbxVector4 lNewPosition = lOrigCamPos; - FbxVector4 lNewCenter = lOrigCamCenter; - - // Translate the camera in dX and dY according to its point of view. - if (lCamera == lGlobalCameraSettings.GetCameraProducerTop()) { - lTranslationV[0] = -dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBottom()) { - lTranslationV[0] = dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerFront()) { - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBack()) { - lTranslationV[0] = dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerRight()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = dX; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerLeft()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = -dX; - } else { - // Perspective view. More computation. - - // Adjust displacement when there is roll - bool bRoll = (((int)OrigRoll % 360) != 0); - if (bRoll) { - dX = -dX; - dY = -dY; - } - - // Compute angles aY and aZ of the camera with Y and Z axis. - double aZ, aY; - /// Vector of distance between camera and center (lookat) - FbxVector4 lDist = lNewPosition - lNewCenter; - // Euclidian distance between camera and lookat - double dist = (double)(lDist[0]*lDist[0]+lDist[1]*lDist[1]+lDist[2]*lDist[2]); - // aZ - if (lDist[2] == 0) { - aZ = 90.0; - } else { - aZ = (atan((double)lDist[0]/(double)lDist[2]) * FBXSDK_180_DIV_PI); - } - if (lNewPosition[2] < lNewCenter[2]) aZ += 180; - // aY - if (dist > 0.001) { - aY = (asin(sqrt((double)(lDist[1]*lDist[1])/ dist)) * FBXSDK_180_DIV_PI); - } else { - aY = 0; - } - if (lNewPosition[1] < lNewCenter[1]) aY = -aY; - - - // Basis translation - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - - // Rotation around Y axis - lRotationYV[0] = 0; - lRotationYV[1] = -aZ; - lRotationYV[2] = 0; - lRotationY.SetR(lRotationYV); - // Rotation around X axis - lRotationXV[0] = aY; - lRotationXV[1] = 0; - lRotationXV[2] = 0; - lRotationX.SetR(lRotationXV); - - // Modify translation according to aY and aZ. - lTranslation.SetT(lTranslationV); - lRotationYInverse = lRotationY.Inverse(); - lRotationXInverse = lRotationX.Inverse(); - lTranslation = lRotationYInverse * lRotationXInverse * lTranslation * lRotationY * lRotationX; - lTranslationV = lTranslation.GetT(); - } - - // Translate camera and center according to pan. - lNewPosition += lTranslationV; - lNewCenter += lTranslationV; - - lCamera->Position.Set(lNewPosition); - lCamera->InterestPosition.Set(lNewCenter); -} - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.h b/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.h deleted file mode 100644 index 08aacbe..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/SetCamera.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SET_CAMERA_H -#define _SET_CAMERA_H - -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight); - -FbxCamera* GetCurrentCamera(FbxScene* pScene); - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode); - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY); - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, - double OrigRoll, int dX, int dY); - -#endif // #ifndef _SET_CAMERA_H - - - - - - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/humanoid.fbx b/sdk/Darwin/2019.2/samples/ViewScene/humanoid.fbx deleted file mode 100644 index 57d0733..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/humanoid.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ce40cb9b86d0bcdfb66a3382a80349b70037d65197906be34eab0db6eb9418c -size 8983744 diff --git a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW.a b/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW.a deleted file mode 100644 index 4801bee..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62c2f8b0cfe2db40189dcee8b1754a5dcc3c2012dabbac3ba819db7375740da7 -size 1011936 diff --git a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW32.a b/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW32.a deleted file mode 100644 index 02d0c46..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW32.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1724421de5c52edffe85da87eadbe105c5b20d54259d05a4f73d1d99109cd389 -size 504024 diff --git a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW64.a b/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW64.a deleted file mode 100644 index cfa1b79..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/libs/macos/libGLEW64.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6aa15d699e5742d1082046c260e5c3802c53d0587466f25e6cea6f1cdae51687 -size 507864 diff --git a/sdk/Darwin/2019.2/samples/ViewScene/main.cxx b/sdk/Darwin/2019.2/samples/ViewScene/main.cxx deleted file mode 100644 index 3998b51..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/main.cxx +++ /dev/null @@ -1,466 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to display the content of a FBX or a OBJ file -// in a graphical window. This program is based on the OpenGL Utility Toolkit -// (GLUT). Start the program on the command line by providing a FBX or a -// OBJ file name. A menu is provided to select the current camera and the current -// animation stack. -// -// Among other things, the example illustrates how to: -// 1) Use a custom memory allocator -// 2) Import a scene from a .FBX, .DAE or .OBJ file; -// 3) Convert the nurbs and patch attribute types of a scene into mesh -// node attributes; And trianglate all meshes. -// 4) Get the list of all the cameras in the scene; -// 5) Find the current camera; -// 6) Get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 7) Compute the local and global positions of a node; -// 8) Compute the orientation of a camera; -// 9) Compute the orientation of a light; -// 10) Compute the shape deformation of mesh vertices; -// 11) Compute the link deformation of mesh vertices. -// 12) Display the point cache simulation of a mesh. -// 13) Get the list of all pose in the scene; -// 14) Show the scene using at a specific pose. -// -///////////////////////////////////////////////////////////////////////// - -#include "SceneContext.h" -#include "GL/glut.h" - -void ExitFunction(); -void CreateMenus(); -void CameraSelectionCallback(int pItem); -void CameraZoomModeCallback(int pItem); -void AnimStackSelectionCallback(int pItem); -void MenuSelectionCallback(int pItem); -void PoseSelectionCallback(int pItem); -void ShadingModeSelectionCallback(int pItem); -void TimerCallback(int); -void DisplayCallback(); -void ReshapeCallback(int pWidth, int pHeight); -void KeyboardCallback(unsigned char pKey, int, int); -void MouseCallback(int button, int state, int x, int y); -void MotionCallback(int x, int y); - -SceneContext * gSceneContext; - -// Menu item ids. -#define PRODUCER_PERSPECTIVE_ITEM 100 -#define PRODUCER_TOP_ITEM 101 -#define PRODUCER_BOTTOM_ITEM 102 -#define PRODUCER_FRONT_ITEM 103 -#define PRODUCER_BACK_ITEM 104 -#define PRODUCER_RIGHT_ITEM 105 -#define PRODUCER_LEFT_ITEM 106 -#define CAMERA_SWITCHER_ITEM 107 -#define PLAY_ANIMATION 200 - - -const int MENU_SHADING_MODE_WIREFRAME = 300; -const int MENU_SHADING_MODE_SHADED = 301; -const char * MENU_STRING_SHADING_MODE_WIREFRAME = "Wireframe"; -const char * MENU_STRING_SHADING_MODE_SHADED = "Shaded"; - -const int MENU_ZOOM_FOCAL_LENGTH = 401; -const int MENU_ZOOM_POSITION = 402; - -const int MENU_EXIT = 400; - -const int DEFAULT_WINDOW_WIDTH = 720; -const int DEFAULT_WINDOW_HEIGHT = 486; - -class MyMemoryAllocator -{ -public: - static void* MyMalloc(size_t pSize) - { - char *p = (char*)malloc(pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyCalloc(size_t pCount, size_t pSize) - { - char *p = (char*)calloc(pCount, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyRealloc(void* pData, size_t pSize) - { - if (pData) - { - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - char *p = (char*)realloc((char*)pData - FBXSDK_MEMORY_ALIGNMENT, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - else - { // Mismatch - char *p = (char*)realloc((char*)pData, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - else - { - char *p = (char*)realloc(NULL, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - - static void MyFree(void* pData) - { - if (pData==NULL) - return; - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - free((char*)pData - FBXSDK_MEMORY_ALIGNMENT); - } - else - { // Mismatch - free(pData); - } - } -}; - -static bool gAutoQuit = false; - -int main(int argc, char** argv) -{ - // Set exit function to destroy objects created by the FBX SDK. - atexit(ExitFunction); - - // Use a custom memory allocator - FbxSetMallocHandler(MyMemoryAllocator::MyMalloc); - FbxSetReallocHandler(MyMemoryAllocator::MyRealloc); - FbxSetFreeHandler(MyMemoryAllocator::MyFree); - FbxSetCallocHandler(MyMemoryAllocator::MyCalloc); - - // glut initialisation - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT); - glutInitWindowPosition(100, 100); - glutCreateWindow("ViewScene"); - - // Initialize OpenGL. - const bool lSupportVBO = InitializeOpenGL(); - - // set glut callbacks - glutDisplayFunc(DisplayCallback); - glutReshapeFunc(ReshapeCallback); - glutKeyboardFunc(KeyboardCallback); - glutMouseFunc(MouseCallback); - glutMotionFunc(MotionCallback); - - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gAutoQuit = true; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - gSceneContext = new SceneContext(!lFilePath.IsEmpty() ? lFilePath.Buffer() : NULL, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT, lSupportVBO); - - glutMainLoop(); - - return 0; -} - - -// Function to destroy objects created by the FBX SDK. -void ExitFunction() -{ - delete gSceneContext; -} - -// Create the menus to select the current camera and the current animation stack. -void CreateMenus() -{ - // Create the submenu to select the current camera. - int lCameraMenu = glutCreateMenu(CameraSelectionCallback); - - // Add the producer cameras. - glutAddMenuEntry(FBXSDK_CAMERA_PERSPECTIVE, PRODUCER_PERSPECTIVE_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_TOP, PRODUCER_TOP_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BOTTOM, PRODUCER_BOTTOM_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_FRONT, PRODUCER_FRONT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BACK, PRODUCER_BACK_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_RIGHT, PRODUCER_RIGHT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_LEFT, PRODUCER_LEFT_ITEM); - - // Add the camera switcher if there is at least one camera in the scene. - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (lCameraArray.GetCount() > 0) - { - glutAddMenuEntry(FBXSDK_CAMERA_SWITCHER, CAMERA_SWITCHER_ITEM); - } - - // Add the cameras contained in the scene. - for (int lCameraIndex = 0; lCameraIndex < lCameraArray.GetCount(); ++lCameraIndex) - { - glutAddMenuEntry(lCameraArray[lCameraIndex]->GetName(), lCameraIndex); - } - - // Create the submenu to select the current animation stack. - int lAnimStackMenu = glutCreateMenu(AnimStackSelectionCallback); - int lCurrentAnimStackIndex = 0; - - // Add the animation stack names. - const FbxArray & lAnimStackNameArray = gSceneContext->GetAnimStackNameArray(); - for (int lPoseIndex = 0; lPoseIndex < lAnimStackNameArray.GetCount(); ++lPoseIndex) - { - glutAddMenuEntry(lAnimStackNameArray[lPoseIndex]->Buffer(), lPoseIndex); - - // Track the current animation stack index. - if (lAnimStackNameArray[lPoseIndex]->Compare(gSceneContext->GetScene()->ActiveAnimStackName.Get()) == 0) - { - lCurrentAnimStackIndex = lPoseIndex; - } - } - - // Call the animation stack selection callback immediately to - // initialize the start, stop and current time. - AnimStackSelectionCallback(lCurrentAnimStackIndex); - - const int lShadingModeMenu = glutCreateMenu(ShadingModeSelectionCallback); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_WIREFRAME, MENU_SHADING_MODE_WIREFRAME); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_SHADED, MENU_SHADING_MODE_SHADED); - - int lBindPoseCount = 0; - int lRestPoseCount = 0; - // Create a submenu for bind poses - int lBindPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - const FbxArray & lPoseArray = gSceneContext->GetPoseArray(); - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsBindPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lBindPoseCount++; - } - } - - // Create a submenu for rest poses - int lRestPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsRestPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lRestPoseCount++; - } - } - - // Create the submenu to go to a specific pose - int lPoseMenu = 0; - if (lBindPoseCount>0 || lRestPoseCount>0) - { - lPoseMenu = glutCreateMenu(PoseSelectionCallback); - if (lBindPoseCount>0) - glutAddSubMenu("Bind Pose", lBindPoseMenu); - if (lRestPoseCount>0) - glutAddSubMenu("Rest Pose", lRestPoseMenu); - } - - // Create the submenu to zoom mode - int lZoomMenu = glutCreateMenu( CameraZoomModeCallback); - glutAddMenuEntry( "Zooming lens", MENU_ZOOM_FOCAL_LENGTH); - glutAddMenuEntry( "Zooming Position", MENU_ZOOM_POSITION); - - // Build the main menu. - glutCreateMenu(MenuSelectionCallback); - glutAddSubMenu("Select Camera", lCameraMenu); - glutAddSubMenu("Select Animation Stack", lAnimStackMenu); - glutAddSubMenu("Select Shading Mode", lShadingModeMenu); - if (lBindPoseCount>0 || lRestPoseCount>0) - glutAddSubMenu("Go to Pose", lPoseMenu); - glutAddSubMenu( "Zoom Mode", lZoomMenu); - glutAddMenuEntry("Play", PLAY_ANIMATION); - glutAddMenuEntry("Exit", MENU_EXIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -// Select the current camera. -void CameraSelectionCallback(int pItem) -{ - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (pItem == PRODUCER_PERSPECTIVE_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_PERSPECTIVE); - } - else if (pItem == PRODUCER_TOP_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_TOP); - } - else if (pItem == PRODUCER_BOTTOM_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BOTTOM); - } - else if (pItem == PRODUCER_FRONT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_FRONT); - } - else if (pItem == PRODUCER_BACK_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BACK); - } - else if (pItem == PRODUCER_RIGHT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_RIGHT); - } - else if (pItem == PRODUCER_LEFT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_LEFT); - } - else if (pItem == CAMERA_SWITCHER_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_SWITCHER); - } - else if (pItem >= 0 && pItem < lCameraArray.GetCount()) - { - gSceneContext->SetCurrentCamera(lCameraArray[pItem]->GetName()); - } -} - -void CameraZoomModeCallback(int pItem) -{ - if( pItem == MENU_ZOOM_FOCAL_LENGTH) - gSceneContext->SetZoomMode( SceneContext::ZOOM_FOCAL_LENGTH); - else - gSceneContext->SetZoomMode(SceneContext::ZOOM_POSITION); -} - -// Select the current animation stack and set the start, stop and current time. -void AnimStackSelectionCallback( int pItem ) -{ - gSceneContext->SetCurrentAnimStack(pItem); -} - -void PoseSelectionCallback(int pItem) -{ - gSceneContext->SetCurrentPoseIndex(pItem); -} - -void ShadingModeSelectionCallback(int pItem) -{ - if (pItem == MENU_SHADING_MODE_WIREFRAME) - { - gSceneContext->SetShadingMode(SHADING_MODE_WIREFRAME); - } - else if (pItem == MENU_SHADING_MODE_SHADED) - { - gSceneContext->SetShadingMode(SHADING_MODE_SHADED); - } -} - -// Exit the application from the main menu. -void MenuSelectionCallback(int pItem) -{ - if (pItem == PLAY_ANIMATION) - { - gSceneContext->SetCurrentPoseIndex(-1); - } - else if (pItem == MENU_EXIT) - { - exit(0); - } -} - - -// Trigger the display of the current frame. -void TimerCallback(int) -{ - // Ask to display the current frame only if necessary. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_REFRESHED) - { - glutPostRedisplay(); - } - - gSceneContext->OnTimerClick(); - - // Call the timer to display the next frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); -} - - -// Refresh the application window. -void DisplayCallback() -{ - gSceneContext->OnDisplay(); - - glutSwapBuffers(); - - // Import the scene if it's ready to load. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_LOADED) - { - // This function is only called in the first display callback - // to make sure that the application window is opened and a - // status message is displayed before. - if (!gSceneContext->LoadFile()) - exit(1); - - CreateMenus(); - - // Call the timer to display the first frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); - } - - if( gAutoQuit ) exit(0); -} - - -// Resize the application window. -void ReshapeCallback(int pWidth, int pHeight) -{ - gSceneContext->OnReshape(pWidth, pHeight); -} - -// Exit the application from the keyboard. -void KeyboardCallback(unsigned char pKey, int /*pX*/, int /*pY*/) -{ - // Exit on ESC key. - if (pKey == 27) - { - exit(0); - } - - gSceneContext->OnKeyboard(pKey); -} - -void MouseCallback(int button, int state, int x, int y) -{ - gSceneContext->OnMouse(button, state, x, y); -} - - -void MotionCallback(int x, int y) -{ - gSceneContext->OnMouseMotion(x, y); -} - - - - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/targa.cxx b/sdk/Darwin/2019.2/samples/ViewScene/targa.cxx deleted file mode 100644 index 9d77fc4..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/targa.cxx +++ /dev/null @@ -1,1115 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without changes, for - * free or for profit, is allowed as long as this copyright notice is kept - * intact. Modified versions must be clearly marked as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -/*@unused@*/ static const char rcsid[] = - "$Id: targa.c,v 1.7 2003/06/21 09:30:53 emikulic Exp $"; - -#define TGA_KEEP_MACROS /* BIT, htole16, letoh16 */ -#ifdef __cplusplus -extern "C" { -#endif -#include "targa.h" -#ifdef __cplusplus -} -#endif - -#include -#include /* memcpy, memcmp */ - -#define SANE_DEPTH(x) ((x) == 8 || (x) == 16 || (x) == 24 || (x) == 32) -#define UNMAP_DEPTH(x) ((x) == 16 || (x) == 24 || (x) == 32) - -#ifdef _MSC_VER -#pragma warning(disable:4244) -#pragma warning(disable:4996) -#endif - -static const char tga_id[] = - "\0\0\0\0" /* extension area offset */ - "\0\0\0\0" /* developer directory offset */ - "TRUEVISION-XFILE."; - -static const size_t tga_id_length = 26; /* tga_id + \0 */ - - - -/* helpers */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp); -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row); -typedef enum { RAW, RLE } packet_type; -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp); -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type); - - - -uint8_t tga_get_attribute_bits(const tga_image *tga) -{ - return tga->image_descriptor & TGA_ATTRIB_BITS; -} - -int tga_is_right_to_left(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_R_TO_L_BIT) != 0; -} - -int tga_is_top_to_bottom(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_T_TO_B_BIT) != 0; -} - -int tga_is_colormapped(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP || - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE - ); -} - -int tga_is_rle(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE || - tga->image_type == TGA_IMAGE_TYPE_BGR_RLE || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - -int tga_is_mono(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_MONO || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - - - -/* --------------------------------------------------------------------------- - * Convert the numerical into a verbose error string. - * - * Returns: an error string - */ -const char *tga_error(const tga_result errcode) -{ - switch (errcode) - { - case TGA_NOERR: - return "no error"; - case TGAERR_FOPEN: - return "error opening file"; - case TGAERR_EOF: - return "premature end of file"; - case TGAERR_WRITE: - return "error writing to file"; - case TGAERR_CMAP_TYPE: - return "invalid color map type"; - case TGAERR_IMG_TYPE: - return "invalid image type"; - case TGAERR_NO_IMG: - return "no image data included"; - case TGAERR_CMAP_MISSING: - return "color-mapped image without color map"; - case TGAERR_CMAP_PRESENT: - return "non-color-mapped image with extraneous color map"; - case TGAERR_CMAP_LENGTH: - return "color map has zero length"; - case TGAERR_CMAP_DEPTH: - return "invalid color map depth"; - case TGAERR_ZERO_SIZE: - return "the image dimensions are zero"; - case TGAERR_PIXEL_DEPTH: - return "invalid pixel depth"; - case TGAERR_NO_MEM: - return "out of memory"; - case TGAERR_NOT_CMAP: - return "image is not color mapped"; - case TGAERR_RLE: - return "RLE data is corrupt"; - case TGAERR_INDEX_RANGE: - return "color map index out of range"; - case TGAERR_MONO: - return "image is mono"; - default: - return "unknown error code"; - } -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from a file named to . This is just a - * wrapper around tga_read_from_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_read(tga_image *dest, const char *filename) -{ - tga_result result; - FILE *fp = fopen(filename, "rb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_read_from_FILE(dest, fp); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from to . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. In the - * case of failure, the contents of dest are not guaranteed to be - * valid. - */ -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp) -{ - #define BARF(errcode) \ - { tga_free_buffers(dest); return errcode; } - - #define READ(destptr, size) \ - if (fread(destptr, size, 1, fp) != 1) BARF(TGAERR_EOF) - - #define READ16(dest) \ - { if (fread(&(dest), 2, 1, fp) != 1) BARF(TGAERR_EOF); \ - dest = letoh16(dest); } - - dest->image_id = NULL; - dest->color_map_data = NULL; - dest->image_data = NULL; - - READ(&dest->image_id_length,1); - READ(&dest->color_map_type,1); - if (dest->color_map_type != TGA_COLOR_MAP_ABSENT && - dest->color_map_type != TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_TYPE); - - READ(&dest->image_type, 1); - if (dest->image_type == TGA_IMAGE_TYPE_NONE) - BARF(TGAERR_NO_IMG); - - if (dest->image_type != TGA_IMAGE_TYPE_COLORMAP && - dest->image_type != TGA_IMAGE_TYPE_BGR && - dest->image_type != TGA_IMAGE_TYPE_MONO && - dest->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - dest->image_type != TGA_IMAGE_TYPE_BGR_RLE && - dest->image_type != TGA_IMAGE_TYPE_MONO_RLE) - BARF(TGAERR_IMG_TYPE); - - if (tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_ABSENT) - BARF(TGAERR_CMAP_MISSING); - - if (!tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_PRESENT); - - READ16(dest->color_map_origin); - READ16(dest->color_map_length); - READ(&dest->color_map_depth, 1); - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (dest->color_map_length == 0) - BARF(TGAERR_CMAP_LENGTH); - - if (!UNMAP_DEPTH(dest->color_map_depth)) - BARF(TGAERR_CMAP_DEPTH); - } - - READ16(dest->origin_x); - READ16(dest->origin_y); - READ16(dest->width); - READ16(dest->height); - - if (dest->width == 0 || dest->height == 0) - BARF(TGAERR_ZERO_SIZE); - - READ(&dest->pixel_depth, 1); - if (!SANE_DEPTH(dest->pixel_depth) || - (dest->pixel_depth != 8 && tga_is_colormapped(dest)) ) - BARF(TGAERR_PIXEL_DEPTH); - - READ(&dest->image_descriptor, 1); - - if (dest->image_id_length > 0) - { - dest->image_id = (uint8_t*)malloc(dest->image_id_length); - if (dest->image_id == NULL) BARF(TGAERR_NO_MEM); - READ(dest->image_id, dest->image_id_length); - } - - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - dest->color_map_data = (uint8_t*)malloc( - (dest->color_map_origin + dest->color_map_length) * - dest->color_map_depth / 8); - if (dest->color_map_data == NULL) BARF(TGAERR_NO_MEM); - READ(dest->color_map_data + - (dest->color_map_origin * dest->color_map_depth / 8), - dest->color_map_length * dest->color_map_depth / 8); - } - - dest->image_data = (uint8_t*) malloc( - dest->width * dest->height * dest->pixel_depth / 8); - if (dest->image_data == NULL) - BARF(TGAERR_NO_MEM); - - if (tga_is_rle(dest)) - { - /* read RLE */ - tga_result result = tga_read_rle(dest, fp); - if (result != TGA_NOERR) BARF(result); - } - else - { - /* uncompressed */ - READ(dest->image_data, - dest->width * dest->height * dest->pixel_depth / 8); - } - - return TGA_NOERR; - #undef BARF - #undef READ - #undef READ16 -} - - - -/* --------------------------------------------------------------------------- - * Helper function for tga_read_from_FILE(). Decompresses RLE image data from - * . Assumes header fields are set correctly. - */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp) -{ - #define RLE_BIT BIT(7) - #define READ(dest, size) \ - if (fread(dest, size, 1, fp) != 1) return TGAERR_EOF - - uint8_t *pos; - uint32_t p_loaded = 0, - p_expected = dest->width * dest->height; - uint8_t bpp = dest->pixel_depth/8; /* bytes per pixel */ - - pos = dest->image_data; - - while ((p_loaded < p_expected) && !feof(fp)) - { - uint8_t b; - READ(&b, 1); - if (b & RLE_BIT) - { - /* is an RLE packet */ - uint8_t count, tmp[4], i; - - count = (b & ~RLE_BIT) + 1; - READ(tmp, bpp); - - for (i=0; i p_expected) return TGAERR_RLE; - memcpy(pos, tmp, bpp); - pos += bpp; - } - } - else /* RAW packet */ - { - uint8_t count; - - count = (b & ~RLE_BIT) + 1; - if (p_loaded + count > p_expected) return TGAERR_RLE; - - p_loaded += count; - READ(pos, bpp*count); - pos += count * bpp; - } - } - return TGA_NOERR; - #undef RLE_BIT - #undef READ -} - - - -/* --------------------------------------------------------------------------- - * Write a Targa image to a file named from . This is just a - * wrapper around tga_write_to_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_write(const char *filename, const tga_image *src) -{ - tga_result result; - FILE *fp = fopen(filename, "wb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_write_to_FILE(fp, src); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Write one row of an image to using RLE. This is a helper function - * called from tga_write_to_FILE(). It assumes that has its header - * fields set up correctly. - */ -#define PIXEL(ofs) ( row + (ofs)*bpp ) -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row) -{ - #define WRITE(src, size) \ - if (fwrite(src, size, 1, fp) != 1) return TGAERR_WRITE - - uint16_t pos = 0; - uint16_t bpp = src->pixel_depth / 8; - - while (pos < src->width) - { - packet_type type = rle_packet_type(row, pos, src->width, bpp); - uint8_t len = rle_packet_len(row, pos, src->width, bpp, type); - uint8_t packet_header; - - packet_header = len - 1; - if (type == RLE) packet_header |= BIT(7); - - WRITE(&packet_header, 1); - if (type == RLE) - { - WRITE(PIXEL(pos), bpp); - } - else /* type == RAW */ - { - WRITE(PIXEL(pos), bpp*len); - } - - pos += len; - } - - return TGA_NOERR; - #undef WRITE -} - - - -/* --------------------------------------------------------------------------- - * Determine whether the next packet should be RAW or RLE for maximum - * efficiency. This is a helper function called from rle_packet_len() and - * tga_write_row_RLE(). - */ -#define SAME(ofs1, ofs2) (memcmp(PIXEL(ofs1), PIXEL(ofs2), bpp) == 0) - -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp) -{ - if (pos == width - 1) return RAW; /* one pixel */ - if (SAME(pos,pos+1)) /* dupe pixel */ - { - if (bpp > 1) return RLE; /* inefficient for bpp=1 */ - - /* three repeats makes the bpp=1 case efficient enough */ - if ((pos < width - 2) && SAME(pos+1,pos+2)) return RLE; - } - return RAW; -} - - - -/* --------------------------------------------------------------------------- - * Find the length of the current RLE packet. This is a helper function - * called from tga_write_row_RLE(). - */ -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type) -{ - uint8_t len = 2; - - if (pos == width - 1) return 1; - if (pos == width - 2) return 2; - - if (type == RLE) - { - while (pos + len < width) - { - if (SAME(pos, pos+len)) - len++; - else - return len; - - if (len == 128) return 128; - } - } - else /* type == RAW */ - { - while (pos + len < width) - { - if (rle_packet_type(row, pos+len, width, bpp) == RAW) - len++; - else - return len; - if (len == 128) return 128; - } - } - return len; /* hit end of row (width) */ -} -#undef SAME -#undef PIXEL - - - -/* --------------------------------------------------------------------------- - * Writes a Targa image to from . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. - * On failure, the contents of the file are not guaranteed - * to be valid. - */ -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src) -{ - #define WRITE(srcptr, size) \ - if (fwrite(srcptr, size, 1, fp) != 1) return TGAERR_WRITE - - #define WRITE16(src) \ - { uint16_t _temp = htole16(src); \ - if (fwrite(&_temp, 2, 1, fp) != 1) return TGAERR_WRITE; } - - WRITE(&src->image_id_length, 1); - - if (src->color_map_type != TGA_COLOR_MAP_ABSENT && - src->color_map_type != TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_TYPE; - WRITE(&src->color_map_type, 1); - - if (src->image_type == TGA_IMAGE_TYPE_NONE) - return TGAERR_NO_IMG; - if (src->image_type != TGA_IMAGE_TYPE_COLORMAP && - src->image_type != TGA_IMAGE_TYPE_BGR && - src->image_type != TGA_IMAGE_TYPE_MONO && - src->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - src->image_type != TGA_IMAGE_TYPE_BGR_RLE && - src->image_type != TGA_IMAGE_TYPE_MONO_RLE) - return TGAERR_IMG_TYPE; - WRITE(&src->image_type, 1); - - if (tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_ABSENT) - return TGAERR_CMAP_MISSING; - if (!tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_PRESENT; - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (src->color_map_length == 0) - return TGAERR_CMAP_LENGTH; - - if (!UNMAP_DEPTH(src->color_map_depth)) - return TGAERR_CMAP_DEPTH; - } - WRITE16(src->color_map_origin); - WRITE16(src->color_map_length); - WRITE(&src->color_map_depth, 1); - - WRITE16(src->origin_x); - WRITE16(src->origin_y); - - if (src->width == 0 || src->height == 0) - return TGAERR_ZERO_SIZE; - WRITE16(src->width); - WRITE16(src->height); - - if (!SANE_DEPTH(src->pixel_depth) || - (src->pixel_depth != 8 && tga_is_colormapped(src)) ) - return TGAERR_PIXEL_DEPTH; - WRITE(&src->pixel_depth, 1); - - WRITE(&src->image_descriptor, 1); - - if (src->image_id_length > 0) - WRITE(&src->image_id, src->image_id_length); - - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - WRITE(src->color_map_data + - (src->color_map_origin * src->color_map_depth / 8), - src->color_map_length * src->color_map_depth / 8); - - if (tga_is_rle(src)) - { - uint16_t row; - for (row=0; rowheight; row++) - { - tga_result result = tga_write_row_RLE(fp, src, - src->image_data + row*src->width*src->pixel_depth/8); - if (result != TGA_NOERR) return result; - } - } - else - { - /* uncompressed */ - WRITE(src->image_data, - src->width * src->height * src->pixel_depth / 8); - } - - WRITE(tga_id, tga_id_length); - - return TGA_NOERR; - #undef WRITE - #undef WRITE16 -} - - - -/* Convenient writing functions --------------------------------------------*/ - -/* - * This is just a helper function to initialise the header fields in a - * tga_image struct. - */ -static void init_tga_image(tga_image *img, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - img->image_id_length = 0; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->image_type = TGA_IMAGE_TYPE_NONE; /* override this below! */ - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - img->origin_x = 0; - img->origin_y = 0; - img->width = width; - img->height = height; - img->pixel_depth = depth; - img->image_descriptor = TGA_T_TO_B_BIT; - img->image_id = NULL; - img->color_map_data = NULL; - img->image_data = image; -} - - - -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO; - return tga_write(filename, &img); -} - - - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO_RLE; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Convenient manipulation functions ---------------------------------------*/ - -/* --------------------------------------------------------------------------- - * Horizontally flip the image in place. Reverses the right-to-left bit in - * the image descriptor. - */ -tga_result tga_flip_horiz(tga_image *img) -{ - uint16_t row; - size_t bpp; - uint8_t *left, *right; - int r_to_l; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - - for (row=0; rowheight; row++) - { - left = img->image_data + row * img->width * bpp; - right = left + (img->width - 1) * bpp; - - /* reverse from left to right */ - while (left < right) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, left, bpp); - memcpy(left, right, bpp); - memcpy(right, buffer, bpp); - - left += bpp; - right -= bpp; - } - } - - /* Correct image_descriptor's left-to-right-ness. */ - r_to_l = tga_is_right_to_left(img); - img->image_descriptor &= ~TGA_R_TO_L_BIT; /* mask out r-to-l bit */ - if (!r_to_l) - /* was l-to-r, need to set r_to_l */ - img->image_descriptor |= TGA_R_TO_L_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Vertically flip the image in place. Reverses the top-to-bottom bit in - * the image descriptor. - */ -tga_result tga_flip_vert(tga_image *img) -{ - uint16_t col; - size_t bpp, line; - uint8_t *top, *bottom; - int t_to_b; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - line = bpp * img->width; /* bytes per line */ - - for (col=0; colwidth; col++) - { - top = img->image_data + col * bpp; - bottom = top + (img->height - 1) * line; - - /* reverse from top to bottom */ - while (top < bottom) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, top, bpp); - memcpy(top, bottom, bpp); - memcpy(bottom, buffer, bpp); - - top += line; - bottom -= line; - } - } - - /* Correct image_descriptor's top-to-bottom-ness. */ - t_to_b = tga_is_top_to_bottom(img); - img->image_descriptor &= ~TGA_T_TO_B_BIT; /* mask out t-to-b bit */ - if (!t_to_b) - /* was b-to-t, need to set t_to_b */ - img->image_descriptor |= TGA_T_TO_B_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Convert a color-mapped image to unmapped BGR. Reallocates image_data to a - * bigger size, then converts the image backwards to avoid using a secondary - * buffer. Alters the necessary header fields and deallocates the color map. - */ -tga_result tga_color_unmap(tga_image *img) -{ - uint8_t bpp = img->color_map_depth / 8; /* bytes per pixel */ - int pos; - void *tmp; - - if (!tga_is_colormapped(img)) return TGAERR_NOT_CMAP; - if (img->pixel_depth != 8) return TGAERR_PIXEL_DEPTH; - if (!SANE_DEPTH(img->color_map_depth)) return TGAERR_CMAP_DEPTH; - - tmp = realloc(img->image_data, img->width * img->height * bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - for (pos = img->width * img->height - 1; pos >= 0; pos--) - { - uint8_t c_index = img->image_data[pos]; - uint8_t *c_bgr = img->color_map_data + (c_index * bpp); - - if (c_index >= img->color_map_origin + img->color_map_length) - return TGAERR_INDEX_RANGE; - - memcpy(img->image_data + (pos*bpp), c_bgr, (size_t)bpp); - } - - /* clean up */ - img->image_type = TGA_IMAGE_TYPE_BGR; - img->pixel_depth = img->color_map_depth; - - free(img->color_map_data); - img->color_map_data = NULL; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Return a pointer to a given pixel. Accounts for image orientation (T_TO_B, - * R_TO_L, etc). Returns NULL if the pixel is out of range. - */ -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y) -{ - if (x >= img->width || y >= img->height) - return NULL; - - if (!tga_is_top_to_bottom(img)) y = img->height - 1 - y; - if (tga_is_right_to_left(img)) x = img->width - 1 - x; - return img->image_data + (x + y * img->width) * img->pixel_depth/8; -} - - - -/* --------------------------------------------------------------------------- - * Unpack the pixel at the src pointer according to bits. Any of b,g,r,a can - * be set to NULL if not wanted. Returns TGAERR_PIXEL_DEPTH if a stupid - * number of bits is given. - */ -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a) -{ - switch (bits) - { - case 32: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = src[3]; - break; - - case 24: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = 0; - break; - - case 16: - { - uint16_t src16 = (uint16_t)(src[1] << 8) | (uint16_t)src[0]; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - if (b) *b = (uint8_t)(((src16 ) & FIVE_BITS) << 3); - if (g) *g = (uint8_t)(((src16 >> 5) & FIVE_BITS) << 3); - if (r) *r = (uint8_t)(((src16 >> 10) & FIVE_BITS) << 3); - if (a) *a = (uint8_t)( (src16 & BIT(15)) ? 255 : 0 ); - #undef FIVE_BITS - break; - } - - case 8: - if (b) *b = *src; - if (g) *g = *src; - if (r) *r = *src; - if (a) *a = 0; - break; - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Pack the pixel at the dest pointer according to bits. Returns - * TGAERR_PIXEL_DEPTH if a stupid number of bits is given. - */ -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a) -{ - switch (bits) - { - case 32: - dest[0] = b; - dest[1] = g; - dest[2] = r; - dest[3] = a; - break; - - case 24: - dest[0] = b; - dest[1] = g; - dest[2] = r; - break; - - case 16: - { - uint16_t tmp; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - tmp = (uint16_t)((b >> 3) & FIVE_BITS); - tmp |= ((g >> 3) & FIVE_BITS) << 5; - tmp |= ((r >> 3) & FIVE_BITS) << 10; - if (a > 127) tmp |= BIT(15); - #undef FIVE_BITS - - dest[0] = (uint8_t) (tmp & 0x00FF); - dest[1] = (uint8_t)((tmp & 0xFF00) >> 8); - break; - } - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Desaturate the specified Targa using the specified coefficients: - * output = ( red * cr + green * cg + blue * cb ) / dv - */ -tga_result tga_desaturate(tga_image *img, const int cr, const int cg, - const int cb, const int dv) -{ - uint8_t bpp = img->pixel_depth / 8; /* bytes per pixel */ - uint8_t *dest, *src, *tmp; - - if (tga_is_mono(img)) return TGAERR_MONO; - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width*img->height*bpp; - src += bpp) - { - uint8_t b, g, r; - (void)tga_unpack_pixel(src, img->pixel_depth, &b, &g, &r, NULL); - - *dest = (uint8_t)( ( (int)b * cb + - (int)g * cg + - (int)r * cr ) / dv ); - dest++; - } - - /* shrink */ - tmp = (uint8_t*)realloc(img->image_data, img->width * img->height); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - - img->pixel_depth = 8; - img->image_type = TGA_IMAGE_TYPE_MONO; - return TGA_NOERR; -} - -tga_result tga_desaturate_rec_601_1(tga_image *img) -{ - return tga_desaturate(img, 2989, 5866, 1145, 10000); -} - -tga_result tga_desaturate_rec_709(tga_image *img) -{ - return tga_desaturate(img, 2126, 7152, 722, 10000); -} - -tga_result tga_desaturate_itu(tga_image *img) -{ - return tga_desaturate(img, 2220, 7067, 713, 10000); -} - -tga_result tga_desaturate_avg(tga_image *img) -{ - return tga_desaturate(img, 1,1,1, 3); -} - - - -/* --------------------------------------------------------------------------- - * Convert an image to the given pixel depth. (one of 32, 24, 16) Avoids - * using a secondary buffer to do the conversion. - */ -tga_result tga_convert_depth(tga_image *img, const uint8_t bits) -{ - size_t src_size, dest_size; - uint8_t src_bpp, dest_bpp; - uint8_t *src, *dest; - - if (!UNMAP_DEPTH(bits) || - !SANE_DEPTH(img->pixel_depth) - ) return TGAERR_PIXEL_DEPTH; - - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - - if (img->pixel_depth == bits) return TGA_NOERR; /* no op, no err */ - - src_bpp = img->pixel_depth / 8; - dest_bpp = bits / 8; - - src_size = (size_t)( img->width * img->height * src_bpp ); - dest_size = (size_t)( img->width * img->height * dest_bpp ); - - if (src_size > dest_size) - { - void *tmp; - - /* convert forwards */ - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width * img->height * src_bpp; - src += src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest += dest_bpp; - } - - /* shrink */ - tmp = realloc(img->image_data, img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - } - else - { - /* expand */ - void *tmp = realloc(img->image_data, - img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - /* convert backwards */ - dest = img->image_data + (img->width*img->height - 1) * dest_bpp; - for (src = img->image_data + (img->width*img->height - 1) * src_bpp; - src >= img->image_data; - src -= src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest -= dest_bpp; - } - } - - img->pixel_depth = bits; - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Swap red and blue (RGB becomes BGR and vice verse). (in-place) - */ -tga_result tga_swap_red_blue(tga_image *img) -{ - uint8_t *ptr; - uint8_t bpp = img->pixel_depth / 8; - - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - for (ptr = img->image_data; - ptr < img->image_data + (img->width * img->height - 1) * bpp; - ptr += bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(ptr, img->pixel_depth, &b,&g,&r,&a); - (void)tga_pack_pixel(ptr, img->pixel_depth, r,g,b,a); - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Free the image_id, color_map_data and image_data buffers of the specified - * tga_image, if they're not already NULL. - */ -void tga_free_buffers(tga_image *img) -{ - if (img->image_id != NULL) - { - free(img->image_id); - img->image_id = NULL; - } - if (img->color_map_data != NULL) - { - free(img->color_map_data); - img->color_map_data = NULL; - } - if (img->image_data != NULL) - { - free(img->image_data); - img->image_data = NULL; - } -} - -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ - diff --git a/sdk/Darwin/2019.2/samples/ViewScene/targa.h b/sdk/Darwin/2019.2/samples/ViewScene/targa.h deleted file mode 100644 index 8709861..0000000 --- a/sdk/Darwin/2019.2/samples/ViewScene/targa.h +++ /dev/null @@ -1,209 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * $Id: targa.h,v 1.7 2003/06/21 09:30:53 emikulic Exp $ - * - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without - * changes, for free or for profit, is allowed as long as this copyright - * notice is kept intact. Modified versions have to be clearly marked - * as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -#ifndef _TARGA_H_ -#define _TARGA_H_ - -#include -#ifndef _MSC_VER -# include -#else /* MSVC */ - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif - -#define BIT(index) (1 << (index)) - -#ifdef _BIG_ENDIAN -# define htole16(x) ( (((x) & 0x00FF) << 8) | (((x) & 0xFF00) >> 8) ) -# define letoh16(x) htole16(x) -#else /* little endian */ -# define htole16(x) (x) -# define letoh16(x) (x) -#endif /* endianness */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Targa image and header fields -------------------------------------------*/ -typedef struct -{ - /* Note that Targa is stored in little-endian order */ - uint8_t image_id_length; - - uint8_t color_map_type; - /* color map = palette */ - #define TGA_COLOR_MAP_ABSENT 0 - #define TGA_COLOR_MAP_PRESENT 1 - - uint8_t image_type; - #define TGA_IMAGE_TYPE_NONE 0 /* no image data */ - #define TGA_IMAGE_TYPE_COLORMAP 1 /* uncompressed, color-mapped */ - #define TGA_IMAGE_TYPE_BGR 2 /* uncompressed, true-color */ - #define TGA_IMAGE_TYPE_MONO 3 /* uncompressed, black and white */ - #define TGA_IMAGE_TYPE_COLORMAP_RLE 9 /* run-length, color-mapped */ - #define TGA_IMAGE_TYPE_BGR_RLE 10 /* run-length, true-color */ - #define TGA_IMAGE_TYPE_MONO_RLE 11 /* run-length, black and white */ - - /* color map specification */ - uint16_t color_map_origin; /* index of first entry */ - uint16_t color_map_length; /* number of entries included */ - uint8_t color_map_depth; /* number of bits per entry */ - - /* image specification */ - uint16_t origin_x; - uint16_t origin_y; - uint16_t width; - uint16_t height; - uint8_t pixel_depth; - - uint8_t image_descriptor; - /* bits 0,1,2,3 - attribute bits per pixel - * bit 4 - set if image is stored right-to-left - * bit 5 - set if image is stored top-to-bottom - * bits 6,7 - unused (must be set to zero) - */ - #define TGA_ATTRIB_BITS (uint8_t)(BIT(0)|BIT(1)|BIT(2)|BIT(3)) - #define TGA_R_TO_L_BIT (uint8_t)BIT(4) - #define TGA_T_TO_B_BIT (uint8_t)BIT(5) - #define TGA_UNUSED_BITS (uint8_t)(BIT(6)|BIT(7)) - /* Note: right-to-left order is not honored by some Targa readers */ - - uint8_t *image_id; - /* The length of this field is given in image_id_length, it's read raw - * from the file so it's not not guaranteed to be zero-terminated. If - * it's not NULL, it needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *color_map_data; - /* See the "color map specification" fields above. If not NULL, this - * field needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *image_data; - /* Follows image specification fields (see above) */ - - /* Extension area and developer area are silently ignored. The Targa 2.0 - * spec says we're not required to read or write them. - */ - -} tga_image; - - - -/* For decoding header bits ------------------------------------------------*/ -uint8_t tga_get_attribute_bits(const tga_image *tga); -int tga_is_right_to_left(const tga_image *tga); -int tga_is_top_to_bottom(const tga_image *tga); -int tga_is_colormapped(const tga_image *tga); -int tga_is_rle(const tga_image *tga); -int tga_is_mono(const tga_image *tga); - - - -/* Error handling ----------------------------------------------------------*/ -typedef enum { - TGA_NOERR, - TGAERR_FOPEN, - TGAERR_EOF, - TGAERR_WRITE, - TGAERR_CMAP_TYPE, - TGAERR_IMG_TYPE, - TGAERR_NO_IMG, - TGAERR_CMAP_MISSING, - TGAERR_CMAP_PRESENT, - TGAERR_CMAP_LENGTH, - TGAERR_CMAP_DEPTH, - TGAERR_ZERO_SIZE, - TGAERR_PIXEL_DEPTH, - TGAERR_NO_MEM, - TGAERR_NOT_CMAP, - TGAERR_RLE, - TGAERR_INDEX_RANGE, - TGAERR_MONO -} tga_result; - -const char *tga_error(const tga_result errcode); - - - -/* Load/save ---------------------------------------------------------------*/ -tga_result tga_read(tga_image *dest, const char *filename); -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp); -tga_result tga_write(const char *filename, const tga_image *src); -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src); - - - -/* Convenient writing functions --------------------------------------------*/ -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -/* These functions will use tga_swap_red_blue to MODIFY your image data */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - - - -/* Manipulation ------------------------------------------------------------*/ -tga_result tga_flip_horiz(tga_image *img); -tga_result tga_flip_vert(tga_image *img); -tga_result tga_color_unmap(tga_image *img); - -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y); -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a); -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a); - -tga_result tga_desaturate(tga_image *img, - const int cr, const int cg, const int cb, const int dv); -tga_result tga_desaturate_rec_601_1(tga_image *img); -tga_result tga_desaturate_rec_709(tga_image *img); -tga_result tga_desaturate_itu(tga_image *img); -tga_result tga_desaturate_avg(tga_image *img); -tga_result tga_convert_depth(tga_image *img, const uint8_t bits); -tga_result tga_swap_red_blue(tga_image *img); - -void tga_free_buffers(tga_image *img); - - - -#ifndef TGA_KEEP_MACROS /* useful for targa.c */ -# undef htole16 -# undef letoh16 -#endif - -#ifdef __cplusplus -} // extern C -#endif - -#endif /* !_TARGA_H_ */ -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ diff --git a/sdk/Linux/2019.2/FBX_SDK_Online_Documentation.html b/sdk/Linux/2019.2/FBX_SDK_Online_Documentation.html deleted file mode 100644 index eb6ff87..0000000 --- a/sdk/Linux/2019.2/FBX_SDK_Online_Documentation.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/sdk/Linux/2019.2/License.txt b/sdk/Linux/2019.2/License.txt deleted file mode 100644 index e924f91..0000000 --- a/sdk/Linux/2019.2/License.txt +++ /dev/null @@ -1,204 +0,0 @@ - -Autodesk -LICENSE AND SERVICES AGREEMENT -Autodesk® FBX® SDK 2019 - -READ CAREFULLY: AUTODESK LICENSES THE SOFTWARE AND OTHER LICENSED MATERIALS ONLY ON THE CONDITION THAT LICENSEE ACCEPTS ALL OF THE TERMS CONTAINED OR REFERENCED IN THIS AGREEMENT. -By selecting the “I accept” button or other button or mechanism designed to acknowledge agreement to the terms of an electronic copy of this Agreement, or by installing, downloading, accessing, or otherwise copying or using all or any portion of the Autodesk Materials, (i) you accept this Agreement on behalf of the entity for which you are authorized to act (e.g., an employer) and acknowledge that such entity is legally bound by this Agreement (and you agree to act in a manner consistent with this Agreement) or, if there is no such entity for which you are authorized to act, you accept this Agreement on behalf of yourself as an individual and acknowledge that you are legally bound by this Agreement, and (ii) you represent and warrant that you have the right, power and authority to act on behalf of and bind such entity (if any) or yourself. You may not accept this Agreement on behalf of another entity unless you are an employee or other agent of such other entity with the right, power and authority to act on behalf of such other entity. -If Licensee is unwilling to accept this Agreement, or you do not have the right, power and authority to act on behalf of and bind such entity or yourself as an individual (if there is no such entity), (a) DO NOT SELECT THE “I ACCEPT” BUTTON OR OTHERWISE CLICK ON ANY BUTTON OR OTHER MECHANISM DESIGNED TO ACKNOWLEDGE AGREEMENT, AND DO NOT INSTALL, DOWNLOAD, ACCESS, OR OTHERWISE COPY OR USE ALL OR ANY PORTION OF THE AUTODESK MATERIALS; AND (b) WITHIN THIRTY (30) DAYS FROM THE DATE OF ACQUIRING THE AUTODESK MATERIALS, LICENSEE MAY RETURN THE AUTODESK MATERIALS (INCLUDING ANY COPIES) TO THE ENTITY FROM WHICH THEY WERE ACQUIRED FOR A REFUND OF THE APPLICABLE LICENSE FEES PAID BY THE LICENSEE. -The words “Autodesk", “Agreement” and “Licensee” and other capitalized terms used in this Agreement are defined terms. The definitions can be found in Exhibit A (if the terms are not defined in the main body of the Agreement). -1. License -1.1 License Grant. Subject to and conditioned on Licensee’s continuous compliance with this Agreement, Autodesk grants Licensee a nonexclusive, nonsublicensable, nontransferable, limited license to Install and Access the Licensed SDK and User Documentation, in each case solely (a) in the Territory, (b) within the scope of the License Type and Permitted Number specified in the applicable License Identification, and (c) in accordance with the other terms of this Agreement, to: -1.1.1       (a)    use the SDK for development, research, internal, educational, or commercial purposes: - (i) to create a software product with the capability to read and/or write and/or translate Licensee files, which software product links to the Library (“Developed Software”); and/or - (ii) to modify the Sample Code(s) solely to create an object code version(s) (“Modified Code(s)”); and/or - (b)     reproduce the Library to link to the Developed Software. -1.1.2      (a)     incorporate the executable version of the Developed Software into; and/or - (b)     incorporate the Modified Code(s) into; and/or - (c)     link the Library, in binary code form to; -software products developed by Licensee (“Licensee Product(s)”) for Licensee’s Internal Business Needs. - 1.1.3   reproduce, distribute and sublicense free of charge or for a fee Licensee Product(s) provided that Licensee must sublicense the Software, the Developed Software, the Library, the Sample Code(s) and the Modified Code(s) “as is”, without warranty of any kind. -Various License Types are described in Exhibit B. In any case where the License Identification does not specify a License Type or Permitted Number or Territory, or there is no License Identification, the License Type will, by default, be the Stand-alone (Individual) License and the Territory will be worldwide, subject to the Export Control requirements herein. - 1.1.4       Licensee shall reproduce and apply any copyright or other proprietary rights notices included on or embedded in the Software, or any part thereof, to any copies of the Software or any part thereof, or to the Developed Software, in any form. - 1.1.5       Licensee shall place the following statement in the copyright area of either: (i) the end-user License and/or terms of use for the Developed Software; or (ii) the ‘About Box’ or similar notice page of the Developed Software; and Licensee shall also include the following statement in the copyright area of either: (a) the on-line documentation regarding the Developed Software; or (b) any other document related to Developed Software that contains copyright information: -“This software contains Autodesk® FBX® code developed by Autodesk, Inc. Copyright 2018 Autodesk, Inc. All rights, reserved. Such code is provided “as is” and Autodesk, Inc. disclaims any and all warranties, whether express or implied, including without limitation the implied warranties of merchantability, fitness for a particular purpose or non-infringement of third party rights. In no event shall Autodesk, Inc. be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of such code.” -1.2 Upgrades and Previous Versions. - 1.2.1 Effect of Upgrades. If Autodesk or a Reseller provides Licensee with an Upgrade to other Licensed Materials previously licensed to Licensee, the Licensed Materials previously licensed to Licensee and any other Autodesk Materials relating thereto will thereafter be deemed to be a “Previous Version.” Except as set forth in Section 1.2.2 (Exception for Relationship Program Licensees), the license grant and other rights with respect to any Previous Version will terminate one hundred twenty (120) days after Installation of the Upgrade. Within such one hundred twenty (120) day period, except as set forth in Section 1.2.2 (Exception for Relationship Program Licensees), (a) Licensee must cease all use of any Previous Version and Uninstall all copies of the Previous Version, and (b) upon expiration of such period, such Previous Version will no longer constitute Licensed Materials but rather will be deemed to be Excluded Materials and Licensee will no longer have a license for any such Previous Version. At Autodesk’s request, Licensee agrees to destroy or return to Autodesk or the Reseller from which they were acquired all copies of the Previous Version. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of any Previous Version have been Uninstalled and, if so requested by Autodesk, destroyed or returned to Autodesk or the Reseller from which they were acquired. - 1.2.2 Exception for Relationship Program Licensees. The termination of rights as to Previous Versions described in Section 1.2.1 (Effect of Upgrades) may not apply to Licensee if and to the extent (a) Licensee participates in a Relationship Program and the Relationship Program Terms authorize Licensee to retain such Previous Versions or (b) otherwise authorized in writing by Autodesk. -1.3 Additional Terms. The Licensed Materials (or portions thereof) may be subject to terms (e.g., terms accompanying such Licensed Materials or made available in connection with ordering, installing, downloading, accessing, using or copying such Licensed Materials) that are in addition to or different from the terms set forth in this Agreement, and Licensee agrees to comply with such terms. -1.4 Other Materials. If Autodesk provides or makes available to Licensee any additional materials associated with the Licensed Materials, including any corrections, patches, service packs, updates or upgrades to, or new versions of, the Licensed Materials (including Upgrades) or any Supplemental Materials or User Documentation for the Licensed Materials, (a) such additional materials may include or be subject to other terms in addition to or different from the terms set forth in this Agreement (including, without limitation, additional or different fees, license terms, or restrictions on use), and Licensee agrees to comply with such terms, or (b) if there are no other terms for such additional materials, they will (except as otherwise provided by Section 1.2 (Upgrades and Previous Versions)) be subject to the same terms (including, without limitation, the licenses, applicable License Type and Permitted Number, and other terms of this Agreement) as the Licensed Materials to which such additional materials apply. In no event will the foregoing result in any rights with respect to Excluded Materials. -1.5 Authorized Users. Licensee may permit the Licensed Materials to be Installed and/or Accessed only by Licensee’s Personnel (except as otherwise designated in the applicable License Type), and any such Installation or Access will be subject to any other requirements imposed by this Agreement and the applicable License Type and Permitted Number. Licensee will be responsible for compliance with this Agreement by Licensee’s Personnel and any other persons who may have Access to the Autodesk Materials through Licensee (whether or not such Access is authorized by Autodesk or within the scope of the applicable License Type and Permitted Number). -1.6 Third-Party Licensed Materials. The Autodesk Materials may contain or be accompanied by third-party software, data or other materials that are subject to and provided in accordance with terms that are in addition to or different from the terms set forth in this Agreement. Such terms may be included or referenced in or with such third-party software, data or other materials (e.g., in the “About box”) or a web page specified by Autodesk (the URL for which may be obtained on Autodesk’s website or on request to Autodesk). Licensee agrees to comply with such terms. In addition, Licensee will take sole responsibility for obtaining and complying with any licenses that may be necessary to use third-party software, data or other materials that Licensee uses or obtains for use in conjunction with the Licensed Materials. Licensee acknowledges and agrees that Autodesk has no responsibility for, and makes no representations or warranties regarding, such third-party software, data or other materials or Licensee’s use of such third-party software, data or other materials. -1.7 Relationship Programs. Autodesk may offer to Licensee, and (if so) Licensee may participate in one (1) or more Relationship Programs applicable to the Licensed Materials licensed to Licensee under this Agreement (and such Relationship Programs may include rights in addition to or different from those set forth in this Agreement). Any Relationship Programs are subject to Autodesk’s terms therefor, which terms are set forth in the applicable Relationship Program Terms. Licensee agrees that if it requests, accepts, or makes use of any Relationship Program, Licensee will be bound by such terms, as they may be modified from time to time in accordance with the applicable Relationship Program Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such terms. Licensee acknowledges that Autodesk may require a further acceptance of such terms as a condition to participation in a Relationship Program. -1.8 Services. Autodesk may provide, and Licensee may elect to receive or benefit from, certain Services from time to time. Any Services are subject to Autodesk’s terms therefor, which terms are set forth in the applicable Services Terms. Licensee agrees that if it requests, accepts, or makes use of any Services, Licensee will be bound by such terms, as they may be modified from time to time in accordance with the applicable Services Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such terms. Licensee acknowledges that Autodesk may require a further acceptance of such terms as a condition to providing Services. -1.9 Archival Copy. Licensee’s license under Section 1.1 (License Grant) includes the right to make a single archival copy of the Licensed Materials in the Territory, provided that (a) the single-copy limitation will not apply to copies made as an incidental part of a routine backup of Licensee’s entire computer system on which the Licensed Materials are Installed in accordance with this Agreement, where such backup includes the making of copies of substantially all other software on such computer system and (b) any archival copy may be Accessed or Installed (other than on a backup storage medium from which the Licensed Materials cannot be Accessed) only when and for so long as the primary copy of the Licensed Materials is inaccessible and inoperable. Copies of the Licensed Materials that are Installed and are in excess of the Permitted Number at any time while the primary copy of the Licensed Materials is also Accessible are not "archival copies" as permitted under this Section 1.9 (Archival Copy). -1.10 Nature of Licenses. Licensee acknowledges and agrees that when Licensee acquires a license of Licensed Materials, (including through a Relationship Program or Services), Licensee’s acquisition is neither contingent on the delivery of any future features or functionality nor subject to any public or other comments (oral, written or otherwise) made by Autodesk regarding future features or functionality. -1.11 Feedback. -Licensee hereby grants Autodesk, under all of Licensee’s intellectual property and proprietary rights, the following worldwide, exclusive, transferable, perpetual, irrevocable, royalty-free, fully paid-up rights: (1) to make, have made, use, copy, modify, and create derivative works of the Feedback as part of or in connection with any Autodesk product, technology, service, content, material, specification or documentation (including without limitation in connection with the marketing or sale thereof); (2) to publicly perform or display, import, broadcast, transmit, distribute, license, offer to sell and sell, rent, lease or lend copies of the Feedback (and derivative works thereof and improvements thereon); and (3) to sublicense to third parties the foregoing rights, including the right to sublicense to further third parties. “Feedback” shall mean all suggestions, comments, input, ideas, reports, information or know-how (whether in oral or written form) provided by Licensee to Autodesk or an Autodesk affiliate in connection with Licensee’s evaluation of or use of the Licensed Materials. Feedback does not include any artwork or sample content created by Licensee using the Licensed Materials. -2. License Limitations; Prohibitions -2.1 Limitations and Exclusions. - 2.1.1 No License Granted; Unauthorized Activities. The parties acknowledge and agree that, notwithstanding anything to the contrary in this Agreement, no license is granted (whether expressly, by implication or otherwise) under this Agreement (and this Agreement expressly excludes any right) (a) to Excluded Materials, (b) to any Autodesk Materials that Licensee did not acquire lawfully or that Licensee acquired in violation of or in a manner inconsistent with this Agreement, (c) for Installation of or Access to the Licensed Materials beyond the applicable license term (whether a fixed term or Relationship Program period or term) or outside the scope of the applicable License Type or Permitted Number, (d) for Installation of the Licensed Materials on any Computer other than a Computer owned or leased, and controlled, by Licensee, unless otherwise authorized in writing by Autodesk, (e) to distribute, rent, loan, lease, sell, sublicense, transfer or otherwise provide all or any portion of the Autodesk Materials to any person or entity except as expressly set forth in this Agreement or as expressly authorized in writing by Autodesk, (f) to provide or make available any features or functionality of the Autodesk Materials to any person or entity (other than to and for Licensee itself for the purpose specified in the applicable License Type), whether or not over a network and whether or not on a hosted basis, (g) except as otherwise expressly provided with respect to a specific License Type, to Install or Access or allow the Installation of or Access to the Autodesk Materials over the Internet or other non-local network, including, without limitation, use in connection with a wide area network (WAN), virtual private network (VPN), virtualization, Web hosting, time-sharing, service bureau, software as a service, cloud or other service or technology, (h) to remove, alter or obscure any proprietary notices, labels or marks in the Autodesk Materials, (i) to decompile, disassemble or otherwise reverse engineer the Autodesk Materials, or (j) to translate, adapt, arrange, or create derivative works based on, or otherwise modify the Autodesk Materials for any purpose. - 2.1.2 Licensed Materials as a Single Product. The Licensed Materials are licensed to Licensee as a single product and the applicable components may not be separated for Installation or Access (and all such components must be Installed and Accessed on the same Computer except as authorized in writing by Autodesk). - 2.1.3 Territory. Except as otherwise authorized in writing by Autodesk, the licenses granted in this Agreement are granted only for the Territory. Nothing in this Agreement permits Licensee (including, without limitation, Licensee’s Personnel, if any) to Install or Access the Licensed Materials outside of the Territory. - 2.1.4 Effect of Unauthorized Use. Licensee will not engage in, and will not permit or assist any third party to engage in any of the uses or activities prohibited (or any uses or activities inconsistent with the limitations described) in this Section 2.1 (Limitations and Exclusions) (collectively, “Unauthorized Uses”). Any such Unauthorized Use, and any Installation of or Access to the Licensed Materials provided under this Agreement, outside of the scope of the applicable license grants (including, without limitation, outside the applicable License Type and/or Permitted Number) or otherwise not in accordance with this Agreement, constitute or result in infringement of Autodesk’s intellectual property rights as well as a breach of this Agreement. Licensee will notify Autodesk promptly of any such Unauthorized Uses or other unauthorized Installation or Access. - 2.1.5 Use of Open Source Software by Licensee.  If Licensee uses any third party software (including free or Open Source Software), whether or not in conjunction with the Software, Licensee shall ensure that its use does not: (i) create, or purport to create, obligations of Autodesk or any of its affiliates with respect to the Software; (ii) grant, or purport to grant, to any third party any rights to or immunities under Autodesk’s or any of its affiliates intellectual property rights; or (iii) cause the Software to be subject to any licensing terms other than those set forth in this Agreement. -2.2 Circumvention. - 2.2.1 Licensee may not (i) utilize any equipment, device, software, or other means to (or designed to) circumvent or remove any form of technical protection used by Autodesk in connection with the Autodesk Materials, or (ii) Install or Access the Autodesk Materials with any product code, authorization code, serial number, or other copy-protection device not supplied by Autodesk directly or through a Reseller. Without limitation of the generality of the foregoing, Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove the Autodesk License Manager or any tool or technical protection measure provided or made available by Autodesk for managing, monitoring or controlling Installation of or Access to Autodesk Materials. - 2.2.2 Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove any usage restrictions, or to enable functionality disabled by Autodesk, in connection with the Excluded Materials. Licensee may not bypass or delete any functionality or technical limitations of the Autodesk Materials that (or that are designed to) prevent or inhibit the unauthorized copying of, Installation or Access to the Excluded Materials. -3. All Rights Reserved -Autodesk and its licensors retain title to and ownership of, and all other rights with respect to, the Autodesk Materials and all copies thereof, including, without limitation, any related copyrights, trademarks, trade secrets, patents, and other intellectual property rights. Licensee has only the limited licenses granted with respect to the Licensed Materials expressly set forth in this Agreement, and Licensee has no other rights, implied or otherwise. Licensee acknowledges and agrees that the Autodesk Materials are licensed, not sold, and that rights to Install and Access the Licensed Materials are acquired only under the license from Autodesk. The structure and organization of Software included in the Autodesk Materials, any source code or similar materials relating to such Software, any API Information and Development Materials (both as described in Section 1.11 (APIs)), and any other Licensed Materials identified as confidential or proprietary are valuable trade secrets of, and confidential and proprietary information of, Autodesk and its suppliers, and (a) may not be distributed, disclosed or otherwise provided to third parties, and (b) may be used only internally and only in conjunction with and for Licensee’s own authorized internal use of the Licensed Materials. -4. Privacy; Use of Information; Connectivity -4.1 Privacy and Use of Information. Licensee acknowledges and agrees that Licensee (and third parties acting on Licensee’s behalf) may provide, and Autodesk and its Resellers (and third parties acting on behalf of Autodesk and its Resellers) may obtain, certain information and data with respect to Licensee (including, without limitation, personal information) and Licensee’s business in connection with this Agreement, including, without limitation, information and data provided to or obtained by Autodesk and its Resellers (or third parties acting on behalf of Autodesk and its Resellers) through the Customer Information Form and otherwise, in connection with ordering, registration, activation, updating, validating entitlement to, auditing, monitoring Installation of and Access to Autodesk Materials, Relationship Programs and Services and managing the relationship with Licensee. Licensee hereby consents to Autodesk maintaining, using, storing and disclosing such information and data (including, without limitation, personal information, if any) in conformity with Autodesk’s policies on privacy and data protection, as such policies may be updated from time to time, including without limitation Autodesk’s Privacy Statement, as currently located at http://usa.autodesk.com/privacy/. Without limitation of the generality of the foregoing, Licensee acknowledges and agrees that: (a) Autodesk may from time to time prompt Licensee (and third parties acting on Licensee’s behalf) to provide express agreement to the terms of Autodesk’s Privacy Statement and/or express agreement to specific uses of information and data (including, without limitation, personal information); (b) Autodesk may provide information and data, including, without limitation, information and data about Licensee’s use of Autodesk Materials, Relationship Programs, and Licensee’s support requests, to Autodesk subsidiaries and affiliates, Resellers and other third parties in connection with the provision, maintenance, administration or usage of Licensed Materials, Relationship Programs or Services or in connection with enforcement of any agreements relating to Licensed Materials, Relationship Programs or Services; and (c) Autodesk may make cross-border transfers of such information and data, including to jurisdictions with privacy or data protection laws that are less protective of Licensee than the jurisdiction in which Licensee is domiciled. Licensee acknowledges and agrees that such policies may be changed from time to time by Autodesk and that, effective upon posting on Autodesk’s website or other written notice from Autodesk, Licensee will be subject to such changes. -4.2 Connectivity. Certain Licensed Materials may facilitate or require Licensee’s access to and use of content and services that are hosted on websites maintained by Autodesk or by third parties. In some cases, such content and services may appear to be a feature or function within, or extension of, the Licensed Materials on Licensee’s Computer even though hosted on such websites. Accessing such content or services and use of Licensed Materials may cause Licensee’s Computer, without additional notice, to connect automatically to the Internet (transitorily, intermittently or on a regular basis) and to communicate with an Autodesk or third-party website—for example, for purposes of providing Licensee with additional information, features and functionality or to validate that the Licensed Materials and/or content or services are being used as permitted under this Agreement or other applicable terms. Such connectivity to Autodesk websites is governed by Autodesk’s policies on privacy and data protection described in this Section 4 (Privacy; Use of Information; Connectivity). Such connectivity to websites of third parties is governed by the terms (including the disclaimers and notices) found on such sites or otherwise associated with the third-party content or services. Autodesk does not control, endorse, or accept responsibility for any such third-party content or services, and any dealings between Licensee and any third party in connection with such content or services, including, without limitation, such third party’s privacy policies, use of personal information, delivery of and payment for goods and services, and any other terms associated with such dealings, are solely between Licensee and such third party. Autodesk may at any time, for any reason, modify or discontinue the availability of any third-party content or services. Access to and use of certain content and services (whether of Autodesk or third parties) may require assent to separate terms and/or payment of additional fees. -5. Limited Warranty and Disclaimers -5.1 Limited Warranty. Autodesk warrants that, as of the date on which the Licensed Materials are delivered to Licensee and for ninety (90) days thereafter or if the license term is shorter, such shorter period (“Warranty Period”), the Licensed Materials will provide the general features and functions described in the User Documentation portion of the Licensed Materials. Autodesk's entire liability and Licensee’s exclusive remedy during the Warranty Period (“Limited Warranty”) will be, with the exception of any statutory warranty or remedy that cannot be excluded or limited under law, at Autodesk's option, (i) to attempt to correct or work around errors, if any, or (ii) to refund the license fees, if any, paid by Licensee and terminate this Agreement or the license specific to such Licensed Materials. Such refund is subject to the return, during the Warranty Period, of the Autodesk Materials, with a copy of Licensee’s License Identification, to Licensee’s local Autodesk office or the Reseller from which Licensee acquired the Autodesk Materials. THE LIMITED WARRANTY SET FORTH IN THIS SECTION GIVES LICENSEE SPECIFIC LEGAL RIGHTS. LICENSEE MAY HAVE ADDITIONAL LEGAL RIGHTS UNDER LAW WHICH VARY FROM JURISDICTION TO JURISDICTION. AUTODESK DOES NOT SEEK TO LIMIT LICENSEE’S WARRANTY RIGHTS TO ANY EXTENT NOT PERMITTED BY LAW. -5.2 Disclaimer. EXCEPT FOR THE EXPRESS LIMITED WARRANTY PROVIDED IN SECTION 5.1 (LIMITED WARRANTY), AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, AUTODESK AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, NO WARRANTIES, REPRESENTATIONS, OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED (INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT, OR WARRANTIES OTHERWISE IMPLIED BY STATUTE OR FROM A COURSE OF DEALING OR USAGE OF TRADE) WITH RESPECT TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES (PURSUANT TO A RELATIONSHIP PROGRAM OR OTHERWISE). ANY STATEMENTS OR REPRESENTATIONS ABOUT THE AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES AND THEIR FEATURES OR FUNCTIONALITY IN THE LICENSED MATERIALS OR ANY COMMUNICATION WITH LICENSEE ARE FOR INFORMATION PURPOSES ONLY, AND DO NOT CONSTITUTE A WARRANTY, REPRESENTATION, OR CONDITION. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT: (a) THAT THE OPERATION OR OUTPUT OF THE LICENSED MATERIALS OR SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, SECURE, ACCURATE, RELIABLE, OR COMPLETE, WHETHER OR NOT UNDER A RELATIONSHIP PROGRAM OR SUPPORT BY AUTODESK OR ANY THIRD PARTY; (b) THAT ERRORS WILL BE CORRECTED BY AUTODESK OR ANY THIRD PARTY; OR (c) THAT AUTODESK OR ANY THIRD PARTY WILL RESOLVE ANY PARTICULAR SUPPORT REQUEST OR THAT SUCH RESOLUTION WILL MEET LICENSEE’S REQUIREMENTS OR EXPECTATIONS. NOTHING IN THE FOREGOING RESTRICTS THE EFFECT OF WARRANTIES OR CONDITIONS WHICH MAY BE IMPLIED BY LAW WHICH CANNOT BE EXCLUDED, RESTRICTED OR MODIFIED NOTWITHSTANDING A CONTRACTUAL RESTRICTION TO THE CONTRARY. WITHOUT LIMITING THE FOREGOING, AUTODESK AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, NO WARRANTIES THAT: (I) FUTURE VERSIONS OF THE SDK, LIBRARY AND/OR SAMPLE CODE(S), IF ANY, WILL CONTAIN FEATURES SIMILAR TO OR THE SAME AS THE SDK, LIBRARY AND/OR SAMPLE CODE(S), RESPECTIVELY OR WILL BE COMPATIBLE WITH THE SDK, LIBRARY AND/OR SAMPLE CODE(S), RESPECTIVELY; (II) THE SOFTWARE OR THE SDK, LIBRARY AND/OR SAMPLE CODE(S) WILL MEET LICENSEE REQUIREMENTS; OR (III) OPERATION OF THE SDK, LIBRARY OR SAMPLE CODE(S) WILL BE UNINTERRUPTED OR ERROR-FREE. -6. Warnings -6.1 Functionality Limitations. The Licensed Materials and Services (except for Licensed Materials designed for non-commercial use, such as Autodesk Materials designed to be used for household or other consumer purposes or licensed only for purposes of educational or individual learning) are commercial professional tools intended to be used by trained professionals only. Particularly in the case of commercial professional use, the Licensed Materials and Services are not a substitute for Licensee’s professional judgment or independent testing. The Licensed Materials and Services are intended only to assist Licensee with its design, analysis, simulation, estimation, testing and/or other activities and are not a substitute for Licensee’s own independent design, analysis, simulation, estimation, testing, and/or other activities, including those with respect to product stress, safety and utility. Due to the large variety of potential applications for the Licensed Materials and Services, the Licensed Materials and Services have not been tested in all situations under which they may be used. Autodesk will not be liable in any manner whatsoever for the results obtained through use of the Licensed Materials or Services. Persons using the Licensed Materials or Services are responsible for the supervision, management, and control of the Licensed Materials and Services and the results of using the Licensed Materials and Services. This responsibility includes, without limitation, the determination of appropriate uses for the Licensed Materials and Services and the selection of the Licensed Materials, Services and other computer programs and materials to help achieve intended results. Persons using the Licensed Materials or Services are also responsible for establishing the adequacy of independent procedures for testing the reliability, accuracy, completeness, and other characteristics of any output of the Licensed Materials or Services, including, without limitation, all items designed with the assistance of the Licensed Materials or Services. Licensee further acknowledges and agrees that the Licensed Materials form part of Licensee’s total unique hardware and software environment to deliver specific functionality, and that the Licensed Materials and Services provided by Autodesk may not achieve the results Licensee desires within Licensee’s design, analysis, simulation, estimation, and/or testing constraints. -6.2 Activation Codes and Security. -6.2.1 Activation Code Required for Installation/Access and Continued Use. Installation of and Access to the Licensed Materials require, and the continued use thereof may from time to time require, activation codes issued by Autodesk. Registration may be required before an activation code is issued by Autodesk. Licensee will provide Autodesk and its Reseller with any information required for such registration and agrees that any information provided to Autodesk or its Reseller will be accurate and current. Licensee will also maintain and update Licensee’s registration information, on an ongoing basis, through customer data registration processes, including without limitation the Customer Information Form, which may be provided by Autodesk. Licensee acknowledges and agrees that Autodesk may use such information in accordance with its Privacy Statement (as described or referenced in Section 4 (Privacy; Use of Information; Connectivity)). -6.2.2 Disabling Access. LICENSEE ACKNOWLEDGES AND AGREES THAT INSTALLATION OF AND ACCESS TO LICENSED MATERIALS MAY BE DISABLED BY THE ACTIVATION, SECURITY, AND TECHNICAL PROTECTION MECHANISMS IF LICENSEE TRIES TO TRANSFER ALL OR A PART OF THE LICENSED MATERIALS TO ANOTHER COMPUTER, IF LICENSEE TAMPERS WITH THE TECHNICAL PROTECTION MECHANISMS OR DATE-SETTING MECHANISMS ON A COMPUTER OR IN THE LICENSED MATERIALS, IF LICENSEE USES THE LICENSED MATERIALS PAST AN APPLICABLE RELATIONSHIP PROGRAM PERIOD OR FIXED TERM, OR IF LICENSEE UNDERTAKES CERTAIN OTHER ACTIONS THAT AFFECT THE SECURITY MODE OR UNDER OTHER CIRCUMSTANCES AND THAT, IN ANY SUCH EVENT, LICENSEE’S ACCESS TO LICENSEE’S WORK PRODUCT AND OTHER DATA MAY BE AFFECTED. MORE INFORMATION IS CONTAINED IN THE APPLICABLE LICENSED MATERIALS OR AVAILABLE FROM AUTODESK ON REQUEST. -6.2.3 Effect of Activation Codes. Licensee acknowledges and agrees that receipt of an activation code (whether or not provided to Licensee in error) will not constitute evidence of or affect the scope of Licensee’s license rights. Those rights will be only as set forth in this Agreement and the applicable License Identification. -6.3 Affected Data. Work product and other data created with Licensed Materials made available under certain License Types, including licenses that limit the permitted purpose to educational purposes or personal learning purposes, may contain certain notices and limitations that make the work product and other data usable only in certain circumstances (e.g., only in the education field). In addition, if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created, then such other work product or data may also be affected by these notices and limitations. Autodesk will have no responsibility or liability whatsoever if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created. In addition, Licensee will not remove, alter or obscure any such notices or limitations. -7. Limitations of Liability -7.1 Limitation on Type and Amount of Liability. IN NO EVENT WILL AUTODESK OR ITS SUPPLIERS HAVE ANY LIABILITY (DIRECTLY OR INDIRECTLY) FOR ANY INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL OR PUNITIVE DAMAGES; FOR LOSS OF PROFITS, USE, REVENUE, OR DATA; OR FOR BUSINESS INTERRUPTION (REGARDLESS OF THE LEGAL THEORY FOR SEEKING SUCH DAMAGES OR OTHER LIABILITY). IN ADDITION, THE LIABILITY OF AUTODESK AND ITS SUPPLIERS ARISING OUT OF OR RELATING TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES WILL NOT EXCEED THE AMOUNT PAID OR PAYABLE BY LICENSEE FOR SUCH AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES, RESPECTIVELY. -7.2 Application of and Basis for Limitations. THE LIMITATIONS OF LIABILITY IN THIS SECTION 7 (LIMITATIONS OF LIABILITY) WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW TO ANY DAMAGES OR OTHER LIABILITY, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE, EVEN IF AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LIABILITY AND REGARDLESS OF WHETHER THE LIMITED REMEDIES AVAILABLE HEREUNDER FAIL OF THEIR ESSENTIAL PURPOSE. ALSO, LICENSEE AGREES THAT THE LICENSE, RELATIONSHIP PROGRAMS AND SERVICES FEES AND OTHER FEES CHARGED BY AUTODESK AND PAID BY LICENSEE ARE BASED ON AND REFLECTIVE OF THE ALLOCATION OF RISK CONTEMPLATED BY THIS SECTION 7 (LIMITATIONS OF LIABILITY) AND THAT THE LIABILITY LIMITATIONS IN THIS SECTION 7 (LIMITATIONS OF LIABILITY) ARE AN ESSENTIAL ELEMENT OF THE AGREEMENT BETWEEN THE PARTIES. -8. Term and Termination -8.1 Term; Termination or Suspension. Each license under this Agreement, with respect to each specific set of Licensed Materials covered by this Agreement, will become effective as of the latest to occur of: (a) this Agreement becoming effective, (b) payment by Licensee of the applicable fees, excluding licenses (such as evaluation licenses) where no fees are required, (c) delivery of the specific Licensed Materials, and (d) in the case of Autodesk Materials provided in connection with a Relationship Program, upon commencement of the applicable Relationship Program period or fixed term. Each of Autodesk or Licensee may terminate this Agreement, Licensee’s license as to Licensed Materials, Licensee’s Relationship Program, and/or the provision of Services relating to the Licensed Materials if the other party is in breach of this Agreement and fails to cure such breach within ten (10) days after written notice of the breach; however, if Licensee is in breach of Section 1 (License) or Section 2 (License Limitations; Prohibitions), Autodesk may terminate this Agreement, Licensee’s license as to Licensed Materials, Licensee’s Relationship Program, and/or the provision of Services relating to the Licensed Materials immediately upon written notice of the breach. In addition, Autodesk may, as an alternative to termination, suspend Licensee’s license as to the Licensed Materials, Licensee’s Relationship Program, the provision of Services relating to the Licensed Materials, and/or other Autodesk obligations or Licensee rights under this Agreement (or under other terms, if any, relating to materials associated with the Licensed Materials), if Licensee fails to make a payment to Autodesk or a Reseller or otherwise fails to comply with the provisions of this Agreement or other terms relating to any such license, Relationship Program, Services, or other associated materials. Autodesk may also terminate this Agreement if Licensee becomes subject to bankruptcy proceedings, becomes insolvent, or makes an arrangement with Licensee’s creditors. This Agreement will terminate automatically without further notice or action by Autodesk if Licensee goes into liquidation. -Licensee acknowledges and agrees that Autodesk may assign or sub-contract any of its rights or obligations under this Agreement. -8.2 Effect of Termination of Agreement or License. Upon termination or expiration of this Agreement, the licenses granted hereunder will terminate. Upon termination or expiration of any license granted to Licensee, Licensee must cease all use of Autodesk Materials to which such license applies, any Relationship Program (including, without limitation, associated services), and any Services and Uninstall all copies of the Autodesk Materials. At Autodesk’s request, Licensee agrees to destroy or return to Autodesk or the Reseller from which they were acquired all Autodesk Materials. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of the Autodesk Materials have been Uninstalled and, if so requested by Autodesk, destroyed or returned to Autodesk or the Reseller from which they were acquired. If Licensee’s Relationship Program is terminated or expires, but this Agreement and Licensee’s license to the Licensed Materials remains in effect, any rights of Licensee based on the Relationship Program (including, without limitation, rights with respect to Previous Versions) will terminate, and (unless otherwise authorized by the Relationship Program Terms) Licensee must comply with the obligations of Section 1.2.1 (Effect of Upgrades) with respect to (including the obligations to cease use of, Uninstall and destroy or return) all copies of such Previous Versions. -8.3 Survival. Sections 1.3 (Additional Terms), 1.4 (Other Materials), 1.5 (Authorized Users), 1.6 (Third-Party Licensed Materials), 1.11 (APIs), 2.1.1 (No License Granted;Unauthorized Activities), 2.1.4 (Effect of Unauthorized Use), 2.2 (Circumvention), 3 (All Rights Reserved), 4 (Privacy; Use of Information; Connectivity), 5.2 (Disclaimer), 6 (Warnings), 7 (Limitations of Liability), 8 (Term and Termination), and 9 (General Provisions) and Exhibit A will survive any termination or expiration of this Agreement. -9. General Provisions -9.1 Notices. Notices in connection with this Agreement by either party will be in writing and will be sent by electronic mail, postal service, or a delivery service (such as UPS, FedEx or DHL), except that Licensee may not provide notice to Autodesk of an Autodesk breach or provide notice of termination of this Agreement by electronic mail. Notices from Autodesk to Licensee will be effective (a) in the case of notices by email, one (1) day after sending to the email address provided to Autodesk, or (b) in the case of notices by mail or delivery service, five (5) days after sending by regular post or delivery service to the address provided to Autodesk. Licensee hereby consents to service of process being effected on Licensee by registered mail sent to the address set forth on Licensee’s Customer Information Form (or, if no Customer Information Form has been provided, Licensee’s last address known by Autodesk) if so permitted by applicable law. Notices from Licensee to Autodesk will be effective (a) in the case of notices by email, one (1) day after sending to (and receipt by Autodesk at) CopyrightAgent@autodesk.com, or (b) in the case of notices by mail or delivery service, when received by Autodesk at Autodesk, Inc., 111 McInnis Parkway, San Rafael, California 94903, USA, Attention: Copyright Agent. If Licensee participates in a Relationship Program, either party may also provide notice as set forth in the Relationship Program Terms. -9.2 Governing Law and Jurisdiction. This Agreement will be governed by and construed in accordance with the laws of (a) Switzerland if Licensee acquired the Autodesk Materials in a country in Europe, Africa or the Middle East, (b) Singapore if Licensee acquired the Autodesk Materials in a country in Asia, Oceania or the Asia-Pacific region, or (c) the State of California (and, to the extent controlling, the federal laws of the United States) if Licensee acquired the Autodesk Materials in a country in the Americas (including the Caribbean) or any other country not specified in this Section 9.2 (Governing Law and Jurisdiction). The laws of such jurisdictions shall govern without reference to the conflicts-of-laws rules thereof. The UN Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transaction Act shall not apply to (and are excluded from the laws governing) this Agreement. In addition, each party agrees that any claim, action or dispute arising under or relating to this Agreement will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the Superior Court of the State of California, County of Marin, or the United States District Court for the Northern District of California in San Francisco, except that if Licensee has acquired the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, any such claim or dispute will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Switzerland, or (b) a country in Asia, Oceania or the Asia-Pacific region, any such claim or dispute will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Singapore. Nothing in the foregoing will prevent Autodesk from bringing an action for infringement of intellectual property rights in any country where such infringement is alleged to occur. -9.3 No Assignment; Insolvency. Licensee may not assign this Agreement or any rights hereunder (whether by purchase of stock or assets, merger, change of control, operation of law, or otherwise) without Autodesk's prior written consent, which may be withheld in Autodesk's sole and absolute discretion, and any unauthorized purported assignment by Licensee will be void. In the context of any bankruptcy or similar proceeding, Licensee acknowledges and agrees this Agreement is and shall be treated as an executory contract that may not be assumed and/or assigned without Autodesk's prior written consent, which consent may be withheld in Autodesk's sole and absolute discretion whether pursuant to Section 365(c)(1) of Title 11 of the United States Code or any other applicable law respecting the treatment of executory contracts within bankruptcy. Any assignment (regardless of how or on what basis the assignment may occur) will be conditioned on compliance with the following: at least thirty (30) days before assigning or agreeing to any assignment of rights under this Agreement (including transferring any copies of or right to use the Software), (a) Licensee must provide written notice to Autodesk, Uninstall all copies of the Software, and (without limitation of the generality of Section 9.7 (Audits)) allow Autodesk or its designee to inspect the records, systems and facilities of (or operated for) Licensee and its subsidiaries and affiliates to verify (by any means available to Autodesk, whether remotely or on premises) that all copies of the Software have been Uninstalled, (b) the proposed assignee must agree to comply (and Licensee must ensure that the assignee will comply) with all of the obligations of this Agreement with respect to such Software, which agreement must provide that Autodesk is a third-party beneficiary of the assignee’s agreement, and the assignee must provide a copy of the agreement to Autodesk, and (c) Licensee and proposed assignee must comply with all other transfer procedures identified by Autodesk. -9.4 Autodesk Subsidiaries and Affiliates. Licensee acknowledges and agrees that Autodesk may arrange to have its subsidiaries and affiliates engage in activities in connection with this Agreement, including, without limitation, delivering Autodesk Materials and providing Relationship Programs and Services, provided that Autodesk (and not such subsidiaries and affiliates) will remain subject to the obligations of Autodesk under this Agreement. Licensee also agrees that Autodesk’s subsidiaries and affiliates may enforce (including taking actions for breach of) this Agreement. -9.5 Exceptions to Prohibitions; Severability. -9.5.1 Exceptions to Prohibitions. The prohibitions contained in this Agreement will not apply where and to the extent applicable law does not allow such prohibitions to be enforced. Licensee may have other rights under the laws of the state or country within the Territory where the Licensed Materials are acquired, and this Agreement does not change Licensee’s rights under the laws of such state or country if and to the extent the laws of such state or country do not permit this Agreement to do so. Licensee will bear the burden of proof to demonstrate that applicable law does not allow (i) the enforcement of such prohibitions; or (ii) this Agreement to change particular rights in a state or country (and that Licensee has not exceeded the bounds of the unenforceable prohibitions and unchangeable rights). -9.5.2 Severability. If and to the extent any provision of this Agreement is held illegal, invalid, or unenforceable in whole or in part under applicable law, such provision or such portion thereof will be ineffective as to the jurisdiction in which it is illegal, invalid, or unenforceable to the extent of its illegality, invalidity, or unenforceability and will be deemed modified to the extent necessary to conform to applicable law so as to give the maximum effect to the intent of the parties. The illegality, invalidity, or unenforceability of such provision in that jurisdiction will not in any way affect the legality, validity, or enforceability of such provision or any other provision of this Agreement in any other jurisdiction. -9.6 No Waiver. No term or provision of this Agreement will be considered waived, and no breach excused, unless such waiver is in writing signed on behalf of the party against which the waiver is asserted. No waiver (whether express or implied) will constitute consent to, waiver of, or excuse of any other, different, or subsequent breach. -9.7 Audits. Licensee agrees that Autodesk has the right to require an audit (electronic or otherwise) of the Autodesk Materials and the Installation thereof and Access thereto. As part of any such audit, Autodesk or its authorized representative will have the right, on fifteen (15) days’ prior notice to Licensee, to inspect Licensee’s records, systems and facilities, including machine IDs, serial numbers and related information, to verify that the use of any and all Autodesk Materials is in conformance with this Agreement. Licensee will provide full cooperation to enable any such audit. If Autodesk determines that Licensee’s use is not in conformity with the Agreement, Licensee will obtain immediately and pay for valid license(s) to bring Licensee’s use into compliance with this Agreement and other applicable terms and pay the reasonable costs of the audit. In addition to such payment rights, Autodesk reserves the right to seek any other remedies available at law or in equity, whether under this Agreement or otherwise. -9.8 Language. The English language version of this Agreement is legally binding in case of any inconsistencies between the English version and any translations. If Licensee purchased the license for the Licensed Materials in Canada, Licensee agrees to the following: The parties hereto confirm that it is their wish that this Agreement, as well as other documents relating hereto, including notices, have been and shall be written in the English language only. Les parties ci-dessus confirment leur désir que cet accord ainsi que tous les documents, y compris tous avis qui s'y rattachent, soient rédigés en langue anglaise. -9.9 Construction. Ambiguities in this Agreement will not be construed against the drafter. -9.10 Force Majeure. Autodesk will not be liable for any loss, damage or penalty resulting from delays or failures in performance resulting from acts of God, supplier delay or other causes beyond Autodesk's reasonable control. -9.11 U.S. Government Rights. For U.S. Government procurements, all Autodesk Materials are deemed to be commercial computer software as defined in FAR 12.212 and subject to restricted rights as defined in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights" and DFARS 227.7202, “Rights in Commercial Computer Software or Commercial Computer Software Documentation”, as applicable, and any successor regulations. Any use, modification, reproduction release, performance, display or disclosure of the Autodesk Materials by the U.S. Government shall be solely in accordance with license rights and restrictions described herein. -9.12 Export Control. Licensee acknowledges and agrees that the Autodesk Materials and Services (including any data submitted by Licensee in connection with a Service and any Licensee-specific output generated by a Service) are subject to compliance with United States and other applicable country export control and trade sanctions laws, rules and regulations, including, without limitation the regulations promulgated by the U.S. Department of Commerce and the U.S. Department of the Treasury (collectively, "Export Control Laws"). Licensee represents, warrants and covenants that neither Licensee nor Licensee’s Personnel (i) are a citizen or resident of, or located within, a nation that is subject to U.S. trade sanctions or other significant trade restrictions (including, without limitation, Cuba, Iran, Sudan, Syria and North Korea), (ii) are identified on any of the U.S. government restricted party lists (including, without limitation, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked Persons, the U.S. Department of Commerce’s Denied Party List, Entity List and Unverified List and the U.S. Department of State’s proliferation-related lists), (iii) will, unless otherwise authorized under the Export Control Laws, use Autodesk Materials or Services in any restricted end use, including, without limitation, design, analysis, simulation, estimation, testing, or other activities related to nuclear, chemical/biological weapons, rocket systems or unmanned air vehicles applications, or (iv) will use the Autodesk Materials or Services to disclose, transfer, download, export, or re-export, directly or indirectly, any Licensee-specific output generated by the Autodesk Materials or Services, Licensee content, third party content, or any other content or material to any country, entity, or party that is ineligible to receive such items under the Export Control Laws or other laws or regulations to which Licensee may be subject. Licensee understands that the requirements and restrictions of the Export Control Laws as applicable to Licensee may vary depending on the Autodesk Materials or Services provided under this Agreement and may change over time. Licensee shall be solely responsible for (i) determining the precise controls applicable to the Autodesk Materials or Services, and (ii) complying with the Export Control Laws and monitoring any modifications to them. -9.13 Entire Agreement. This Agreement and any other terms referenced in this Agreement (such as the Relationship Program Terms and the Services Terms) constitute the entire agreement between the parties (and merge and supersede any prior or contemporaneous agreements, discussions, communications, agreements, representations, warranties, advertising or understandings) with respect to the subject matter hereof, except that particular Autodesk Materials may be subject to additional or different terms associated with such Autodesk Materials. The parties acknowledge that, in entering into this Agreement, they are not relying on any agreements, discussions, communications, agreements, representations, warranties, advertising or understandings other than as expressly set forth in this Agreement. Licensee acknowledges and agrees that Autodesk may add to or change the Relationship Program Terms and the Services Terms from time to time, provided that Autodesk will provide written notice of the additions or changes (and may allow Licensee not to renew, may permit Licensee to terminate, and may offer other options with respect to Relationship Programs or Services) before the additions or changes are effective as to Licensee. In the event of a conflict between this Agreement and any other terms of Autodesk (including, without limitation, the Relationship Program Terms, the Services Terms, or such additional or different terms), the other terms will apply. Terms stipulated by Licensee in any communication by Licensee which purport to vary this Agreement or such other terms will be void and of no effect unless agreed in a writing signed by an authorized representative of Autodesk. Any other modifications to this Agreement will also be invalid unless agreed to in a writing signed by an authorized representative of Autodesk. -10. Additional Terms. -This Section 10 (Additional Terms) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Maya; (ii) Autodesk Softimage; (iii) Autodesk 3ds Max; and (iv) Autodesk 3ds Max Design. -10.1 Rendering. -10.1.1 With regard to the Rendering Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the Rendering Software to be Installed or Accessed on a Networked Basis, solely for Licensee’s Internal Business Needs, specifically to render files created with the Software. However, if the Rendering Software is mental ray, and the Software is provided with a finite number of mental ray rendering nodes, then with regard to mental ray the foregoing is restricted to that number of mental ray rendering nodes. -10.1.2 With regard to the mental ray Batch Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the mental ray Batch Software to be Installed or Accessed on a Networked Basis, solely for Licensee’s Internal Business Needs, and used (i) specifically to render files created with the Software; or (ii) by the Rendering Software specifically to render files created with the Software. The total number of CPUs used by the mental ray Batch Software cannot exceed the number specified in the License Identification. -10.1.3 With regard to the mental ray Standalone (defined below), Licensee may allow the mental ray Standalone to be Installed or Accessed, on a Networked Basis, solely on Computing Device(s) (defined below) solely for Licensee’s Internal Business Needs specifically to render files created with the Software. With regard to mental ray Standalone, any reference in the Agreement to Computer is hereby deleted and “Computing Device(s)” substituted therefor. -10.1.4 With regard to the mental ray Satellite (defined below) for each of Autodesk 3ds Max, Autodesk Maya and Autodesk Softimage Software each mental ray Satellite executable(s) may run on one (1) or more host no more than four (4) client Computing Devices. With regard to mental ray Satellite, any reference in the Agreement to Computer is hereby deleted and “Computing Device(s)” substituted therefor. -10.1.5 Definitions. - (1) “mental ray Standalone” means the mental ray Standalone client/server executable, including the mental ray standard shader libraries and utility programs, used specifically for rendering files created with the Software. - (2) “Rendering Software” means a subset of the Software used specifically for rendering files created with the Software. - (3) “mental ray Batch Software” means a subset of the Software used: (i) specifically for rendering files created with the Software or (ii) by the Rendering Software specifically for rendering files created with the Software. - (4) “mental ray Satellite” means the mental ray Satellite server executable, including the mental ray standard shader libraries. mental ray Satellite is functionally equivalent to the mental ray Standalone server executable, used specifically for rendering files created with the Software except it is not able to read and write files in the complete mi2 format. - (5) “Computing Device” means (i) a single electronic assembly with a maximum of: (a) four (4) CPUs (regardless of the number of cores in each CPU) each CPU having one or more microprocessors, (b) four (4) discrete GPU-based computing boards; or (ii) a software implementation of the single electronic assembly, (a so-called 'virtual machine') described in (i) above, which single electronic assembly accepts information in digital or similar form and manipulates the information for a specific result based on a sequence of instructions. -10.2 Exceptions. -10.2.1 This Section 10.2 (Exceptions) applies to the Autodesk Media & Entertainment 3D entertainment Software that may be included within the Licensed Materials. Notwithstanding the provisions set forth in Section 2.1.1 (No License Granted; Unauthorized Activities) if: (i) the Redistributable Component (defined below) operates with the Software and with Licensee Application; and (ii) the Redistributable Component is linked to Licensee Application; then Licensee may reproduce and distribute the Redistributable Component and Licensee Application together, subject to Licensee’s strict adherence to all of the following terms and conditions: - (a) the class identifications for any classes of objects Licensee created shall be different from and clearly distinguishable from the class identifications used by Autodesk; - (b) modified Sample (defined below) code and any resulting binary files in Licensee Application are identified as developed by Licensee, and not by Autodesk; - (c) Licensee Application has Licensee’s copyright notice; - (d) any Modification (defined below), and resulting binary files, shall include the copyright notices of Autodesk, Inc. as well as the following statement: "This software contains copyrighted code owned by Autodesk, Inc. but has been modified and is not endorsed by Autodesk, Inc." The language of the copyright notice and the statement shall be in the same language as the Software language; - (e) distribution is strictly for not-for-profit purposes; - (f) distribution is either in binary form or text form; - (g) distribution is subject to a standard form of click-through end-user license agreement which license agreement, among other things: (1) protects Autodesk's interests consistent with the terms of this Agreement; and (2) prohibits the redistribution of the Redistributable Component; - (h) if the Redistributable Component operates with the Autodesk 3ds Max Software and/or Autodesk 3ds Max Design Software and with Licensee Application then prior to reproduction and distribution of the Redistributable Component and Licensee Application all MIDI files have been excluded from the Redistributable Component and Licensee Application; and - (i) Licensee agrees to defend, indemnify and hold harmless Autodesk and its subsidiaries and affiliates from and against any and all damages, costs, losses, liabilities, expenses and settlement amounts incurred in connection with any suit, claim or action by any third party alleging that the Redistributable Component and/or Licensee Application infringes or misappropriates any patent, copyrights, moral rights, trademark, trade secret and design rights, whether registered or unregistered, and including any application for registration of any of the foregoing and all rights or forms of protections of a similar nature having equivalent or similar effect to any of these, which may subsist anywhere in the world, of such third party. -10.2.2 Definitions. - (1) "Licensee Application" means, with regard to the Software, a Modification made by Licensee for designing, developing, and testing an application program made by Licensee. - (2) "Modification" means any: (i) addition to the substance of a Sample or any addition to the substance of the contents of a file containing a Sample; (ii) any deletion from the structure of a Sample, or any deletion from the structure of the contents of a file containing a Sample; and/or (iii) any new file that contains any part of a Sample; all of which, in Autodesk’s sole discretion, ensures that the Sample is not the primary source of value. - (3) "Redistributable Component" means the Sample(s) and/or a Modification. - (4) "Sample(s)" means sample source code, or individual animations, still images, and/or audio files contained in the Software, and located in the samples directory, the examples subdirectory, samples files or any similar type directory or file. -10.3 Additional Terms; Certain Softimage Materials. This Section 10.3 (Additional Terms; Certain Softimage Materials) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Softimage Mod Tool software; and (ii) Autodesk Softimage Mod Tool Pro software. -10.3.1 Autodesk Softimage Mod Tool Software. In the event the Software is Autodesk Softimage Mod Tool Software then the applicable Exhibit B License Type is B. 4. (Educational Stand-alone (Individual) License). -10.3.2 Autodesk Softimage Mod Tool Pro Software. In the event the Software is Autodesk Softimage Mod Tool Pro Software, then the applicable Exhibit B License Type is B. 1. (Stand-alone (Individual) License), however, Licensee’s Internal Business Needs are limited to the design, development and testing of an application program designed to function with the Software for Licensee’s internal use in producing multimedia content in conjunction with Licensee’s valid XNA® Creators Club Online Premium Membership. -11. Additional Terms: Quantity Take Off. -This Section 11 (Additional Terms; Quantity Take Off) applies to the Quantity Take Off Software that may be included within the Licensed Materials (“QTO Software”): -11.1 The QTO Software is based in part on the work of the Independent JPEG Group. -11.2 Portions of the QTO Software include Crystal Reports Runtime Software (“Runtime Software”) licensed from Business Objects Software Ltd (“Business Objects”). Licensee’s use of the Runtime Software is subject to the following terms: - (a) Licensee agrees not to alter disassemble, decompile, translate, adapt or reverse-engineer the Runtime Software or the report file (.RPT) format; - (b) Licensee agrees not to distribute the Runtime Software with any general-purpose report writing, data analysis or report delivery product or any other product that performs the same or similar functions as Business Objects’ product offerings; - (c) Licensee agrees not to use the Runtime Software to create for distribution a product that is generally competitive with Business Objects' product offerings; - (d) Licensee agrees not to use the Runtime Software to create for distribution a product that converts the report file (.RPT) format to an alternative report file format used by any general-purpose report writing, data analysis or report delivery product that is not the property of Business Objects; and - (e) Licensee agrees not to use the Crystal Reports Software on a rental or timesharing basis or to operate a service bureau facility for the benefit of third-parties. -11.3 BUSINESS OBJECTS AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. BUSINESS OBJECTS AND ITS SUPPLIERS SHALL HAVE NO LIABILITY WHATSOEVER UNDER THIS AGREEMENT OR IN CONNECTION WITH THE CRYSTAL REPORTS SOFTWARE. -12. Autodesk download technology may use the Akamai NetSession Interface, which may utilize a limited amount of your upload bandwidth and PC resources to connect you to a peered network and improve speed and reliability of Web content. The Akamai NetSession Interface is secure client-side networking technology that harnesses the power of your computer to deliver software and media available on the Akamai network. Your Akamai NetSession Interface works collectively with other Akamai NetSession Interfaces, along with thousands of Akamai edge servers, and runs as a networking service utilizing a limited amount of your computer's available resources. More information about the Akamai NetSession Interface is available here: http://www.akamai.com/client. By clicking "Accept" and using the Autodesk download technology, you accept the Akamai License Agreement (http://www.akamai.com/eula) in addition to the Autodesk License and Service Agreement. - -Exhibit A -Definitions -1. “Access” or “Accessible” means, with respect to a computer program or other materials, (a) to use or execute the computer program or other materials or (b) to use or otherwise benefit from the features or functionality of the computer program or other materials. -2. “Agreement” means this License and Services Agreement, including all exhibits and schedules thereto, as the License and Services Agreement may be amended from time to time in accordance with the terms thereof. -3. “Authorized User” means any individual person who Installs or Accesses, or is authorized to Install or Access, any of the Licensed Materials. -4. “Autodesk” means Autodesk, Inc., a Delaware corporation, except that if, Licensee acquires a license to the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, “Autodesk” means Autodesk Development Sàrl or (b) a country in Asia, Oceania or the Asia-Pacific region, “Autodesk” means Autodesk Asia Pte Ltd. -5. “Autodesk License Manager” means the tool known as Autodesk License Manager or any future Autodesk tool for managing, monitoring or controlling Installation of or Access to Autodesk Materials. -6. “Autodesk Materials” means any materials distributed or made available by Autodesk, directly or indirectly, including Software, Supplemental Materials, User Documentation and Excluded Materials (whether or not licensed to Licensee). -7. “Computer” means (i) a single electronic device, with one or more central processing units (CPUs), that accepts information in digital or similar form and manipulates the information for a specific result based on a sequence of instructions, or (ii) a software implementation of such a device (or so-called virtual machine). -8. “Customer Information Form” means a form completed by or on behalf of Licensee and submitted to Autodesk or a Reseller, directly or indirectly, in connection with Licensee’s order for a license of Autodesk Materials, Relationship Program or Services. -9. “Educational Licensee” means a Licensee who is also (a) a Qualified Educational Institution, (b) Faculty, (c) Student or (d) Other Authorized Educational Licensee. An Educational Licensee may be required to show proof of eligibility if requested by Autodesk. Autodesk, in its sole discretion, retains the right to determine the eligibility of an Educational Licensee. -10. “Educational Purposes” means (i) in the case of a Qualified Educational Institution, Faculty or Other Authorized Educational Licensees, purposes directly related to learning, teaching, training, research and development that are part of the instructional functions performed by a Qualified Educational Institution or Other Authorized Educational Licensee and (ii) in the case of Students, purposes related to learning, training, research or development. “Educational Purposes” does not include commercial, professional or any other for-profit purposes. -11. “Evaluation Purposes” means purposes of evaluation and demonstration of the capabilities of the Software or Supplemental Materials but excludes competitive analysis and any commercial, professional, or other for-profit purposes. -12. “Excluded Materials” means any materials, including Software, Supplemental Materials or User Documentation (and including, without limitation, any computer programs, modules or components of a computer program, functionality or features of a computer program, explanatory printed or electronic materials, content or other materials, if any), that may be provided or become available to Licensee, by any means, or that are on any media delivered to Licensee, for which (a) Licensee does not have a License Identification, or (b) Licensee has not paid (and continued to pay) the applicable fees. Licensee acknowledges that Excluded Materials are included on media or via download for convenience of the licensing mechanism used by Autodesk, and inclusion does not in any way authorize, expressly or impliedly, a right to use such Excluded Materials. -13. “Faculty” means an individual person who is an employee or independent contractor working for a Qualified Educational Institution. -14. “Install” and “Installation” means, with respect to a computer program or other materials, to copy the program or other materials onto a hard disk or other storage medium. -15. “License Identification” means one or more designations by Autodesk that set forth the License Type (among other things) for Licensee’s license of the Licensed Materials. The License Identification may be (a) located (i) in the Licensed Materials (e.g., in an “About” box, license information dialog box, or text file of Software), (ii) on or with Autodesk packaging, or (iii) in a written confirmation or other notice issued to Licensee by Autodesk and transmitted via email, facsimile, physical delivery, or otherwise, or (b) obtained from Autodesk on request. For clarification, License Identification does not include a designation, confirmation, packaging or other document provided by a Reseller or other third party. -16. “License Type” means a type of license specified by Autodesk for Autodesk Materials, including the types set forth in Exhibit B. License Type includes the terms specified by Autodesk for each type of license, including the applicable terms set forth in Exhibit B. License Type is determined by Autodesk and may be specified in the applicable License Identification. -17. “Licensed Materials” means Software, Supplemental Materials and User Documentation (a) downloaded by clicking on the “I accept” button or other button or mechanism associated with this Agreement or by otherwise indicating assent to this Agreement, (b) delivered prepackaged with this Agreement, or (c) otherwise accompanied by this Agreement, provided that (i) in the case of Software, the Software is identified in an applicable License Identification, and (ii) Licensee has paid (and continues to pay) the applicable fees. Licensed Materials also includes Supplemental Materials and User Documentation that Autodesk provides or makes available to Licensee for use with Software licensed under this Agreement if there are no separate terms for such materials specified by Autodesk. Licensed Materials includes, without limitation, any error corrections, patches, service packs, updates and upgrades to, and new versions of, the Licensed Materials that Autodesk provides or makes available to Licensee under Licensee’s then-current license. Licensee acknowledges that availability of Upgrades and new versions may be subject to additional fees and the Relationship Program Terms. In addition, Licensed Materials includes, without limitation, any Previous Versions and other Autodesk Materials that Licensee receives or retains pursuant to the Relationship Program Terms, but only for so long as and to the extent expressly authorized by the Relationship Program Terms. Notwithstanding the foregoing (or any other provision of this Agreement), Licensed Materials in all cases excludes Excluded Materials. -18. “Licensee” means (a) the company or other legal entity on behalf of which Autodesk Materials are acquired, if the Autodesk Materials are acquired on behalf of such an entity (e.g., by an employee, independent contractor, or other authorized representative), or (b) if there is no such entity, the individual who accepts this Agreement (e.g., by selecting the “I accept” button or other button or mechanism associated with this Agreement or otherwise indicating assent to this Agreement, or by installing, downloading, accessing, or otherwise copying or using all or any portion of the Autodesk Materials). For clarification, “Licensee” refers only to a single, specifically identified legal entity or individual, and does not include any subsidiary or affiliate of any such legal entity or individual or any other related person. -19. “Licensee’s Internal Business Needs” means, in reference to Licensed Materials, the use of such Licensed Materials (and the features and functionality thereof) by Licensee’s own Personnel to meet the internal requirements of Licensee’s business in the ordinary course of such business, provided that Internal Business Needs will in no event include providing or making available such Licensed Materials (or the features or functionality thereof) to any third party. -20. “Networked Basis” means a computing environment that includes a Computer acting as a file server which allows the Licensed Materials Installed on such Computer to be uploaded and Installed to, and operated, viewed or otherwise Accessed from, other Computers through a local area network connection or through a VPN connection subject to compliance with the VPN Requirements. -21. “Open Source” means any software code that: (a) contains, or is derived in any manner, (in whole or in part), from any software that is distributed as free software, open source software, shareware (e.g., Linux), or similar licensing or distribution models; and (b) is subject to any agreement with terms requiring that using, copying, modifying or redistributing the software requires that such software and/or the derivative works of such software be: (i) disclosed and/or distributed in source code form; (ii) be licensed for the purpose of making derivative works; and/or (iii) be redistributed free of charge; including, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models similar to, GNU’s General Public License (GPL) or Lesser/Library GPL (LGPL). -22. “Other Authorized Educational Licensee” means a Licensee described at http://www.autodesk.com/educationterms or as otherwise authorized in writing by Autodesk. -23. “Permitted Number” means a maximum number (e.g., number of authorized users, number of concurrent users, number of computers, sessions, etc.) applicable to a license of the Licensed Materials and to the License Type associated with such license. Such number is determined by Autodesk and may be specified in the applicable License Identification. -24. “Personal Learning Purposes” means (i) personal learning as a Student or (ii) in the case of a non-Student, personal learning, excluding (a) in-person or online classroom learning in any degree-granting or certificate granting program, and (b) learning related to any commercial, professional or other for-profit purposes. -25. “Personnel” means (a) Licensee’s individual employees and (b) individual persons who are independent contractors working on Licensee’s premises and who Install and Access the Licensed Materials only on and through Computers owned or leased and controlled by Licensee. -26. “Previous Versions” means, as to any then-current release of Licensed Materials, a prior release of the Licensed Materials as to which such then-current release is a successor or substitute (as determined by Autodesk). -27. “Qualified Educational Institution” means an educational institution which has been accredited by an authorized governmental agency within its applicable local, state, provincial, federal, or national government and has the primary purpose of teaching its enrolled students. Examples, without limitation, of entities that are included and excluded from this definition are described at http://www.autodesk.com/educationterms. -28. “Relationship Program” means (i) Subscription or (ii) a rental program offered generally by Autodesk pursuant to which Autodesk makes available Licensed Materials. -29. “Relationship Program Terms” means the terms for a Relationship Program set forth at http://usa.autodesk.com/company/legal-notices-trademarks/support-terms-and-conditions or any successor or supplemental web page of Autodesk (the URL for which may be obtained on Autodesk’s website or on request). -30. “Reseller” means a distributor or reseller authorized directly or indirectly by Autodesk to distribute authentic Autodesk Materials to Licensee. -31. ”Services” means services (including the results of services) provided or made available by Autodesk, including, without limitation, support services, storage, simulation and testing services, training and other benefits, but excluding services provided or made available as part of a Relationship Program. -32. “Services Terms” means the terms for Services set forth at a location where a user may order or register for, or that is displayed in connection with ordering or registering for, such Services (e.g., a web page) or, if there are no such terms, at http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-service (if the Services are web services) or http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-use for all other Services) or any successor or supplemental web pages of Autodesk. -33. “Software” means the Autodesk FBX SDK computer program, or a module or component of a computer program, including the software development kit (“SDK”) distributed or made available by Autodesk. The term “Software” may also refer to functions and features of a computer program. -34. “Stand-alone Basis” means (i) the Licensed Materials are Installed on a single Computer and (ii) the Licensed Materials cannot be Installed on, or operated, viewed or otherwise Accessed from or through any other Computer (e.g., through a network connection of any kind). -35. “Student” means an individual person enrolled as a student at a Qualified Educational Institution. -36. “Subscription” is the program offered generally by Autodesk under which Autodesk provides (among other things) updates and upgrades to, new versions of, and certain other support, services and training relating to Autodesk Materials. -37. “Supplemental Materials” means materials, other than Software and related User Documentation, that are distributed or made available by Autodesk for use with Software. Supplemental Materials include, without limitation, (a) content, such as sample drawings and designs, modules for drawings and designs, and representations of elements used in drawings and designs (e.g., buildings, parts of buildings, fixtures, furniture, bridges, roads, characters, backgrounds, settings and animations), (b) background materials, such as building codes and descriptions of building practices, (c) tools for rendering the output of the Software, such as fonts, and (d) Development Materials, application programming interfaces (APIs), and other similar developer materials (including API Information). -37 “Territory” (a) means the country, countries or jurisdiction(s) specified in the License Identification, or (b) if there is no such License Identification, or no country or jurisdiction is specified in the License Identification, means the country in which Licensee acquires a license to the Autodesk Materials. If the License Identification specifies, or Licensee acquires the Autodesk Materials in, a member country of the European Union or the European Free Trade Association, Territory means all the countries of the European Union and the European Free Trade Association. -38. “Uninstall” means to remove or disable a copy of Autodesk Materials from a hard drive or other storage medium through any means or otherwise to destroy or make unusable a copy of the Autodesk Materials. -39. “Upgrade” means a full commercial version of Licensed Materials (a) which is a successor to or substitute for a qualifying prior release (and may incorporate error corrections, patches, service packs and updates and upgrades to, and may enhance or add to the features or functionality of, the prior release) or different release of Licensed Materials, (b) is provided to a Licensee who has previously licensed the applicable qualifying prior or different release from Autodesk and (c) for which Autodesk generally charges a separate fee or makes available solely to customers under a Relationship Program. Whether Autodesk Materials are an Upgrade may be specified in the applicable License Identification. Whether Autodesk Materials are an Upgrade and whether Licensee has met the qualifications to license particular Autodesk Materials as an Upgrade are determined by Autodesk. -40. “User Documentation” means the explanatory or instructional materials for Software or Supplemental Materials (including materials regarding use of the Software or Supplemental Materials), whether in printed or electronic form, that Autodesk or a Reseller incorporates in the Software or Supplemental Materials (or the packaging for the Software or Supplemental Materials) or otherwise provides to its customers when or after such customers license, acquire or Install the Software or Supplemental Materials. -41. “VPN Requirements” means (i) the Licensed Materials are Accessed through a secure virtual private network (“VPN”); (ii) the maximum number of concurrent users Accessing the Licensed Materials (on a Networked Basis or through the VPN) does not exceed the Permitted Number at any time; (iii) all copies of the Licensed Materials are Installed and Accessed exclusively in conjunction with the technical protection device (if any) supplied with the Licensed Materials; and (iv) the VPN connection is secure and complies with current industry standard encryption and protection mechanisms. - - -Exhibit B -License Types -1. Stand-alone (Individual) License. If the License Identification identifies the License Type as a “Stand-alone License” or as an “Individual License," Licensee may Install a single primary copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Computer, on a Stand-alone Basis, and permit Access to such primary copy of the Licensed Materials solely by Licensee’s Personnel, and solely for Licensee’s Internal Business Needs. Licensee may also Install a single additional copy of such Licensed Materials on one (1) additional Computer, on a Stand-alone Basis; provided that (i) such additional copy of the Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an individual) or an employee of Licensee; (iii) such person Accesses the additional copy solely to perform work while away from that person’s usual work location and solely for Licensee’s Internal Business Needs; and (iv) the primary and additional copies are not Accessed at the same time. Stand-alone (Individual) License is for a perpetual term, except as otherwise provided in this Agreement. -2. Multi-seat Stand-alone License. If the License Identification identifies the License Type as a “Multi-seat Stand-alone License," Licensee may Install primary copies of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, on a Stand-alone Basis, and permit Access to such copies of the Licensed Materials solely by Licensee’s Personnel, and solely for Licensee’s Internal Business Needs. Licensee may also Install additional copies of such Licensed Materials on additional Computers in an amount up to the Permitted Number of Computers, on a Stand-alone Basis; provided that (i) each additional copy of such Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an individual) or an employee of Licensee; (iii) such person Accesses the additional copy solely to perform work while away from that person’s usual work location and solely for Licensee’s Internal Business Needs; and (iv) the primary and additional copies are not Accessed at the same time. Multi-seat Stand-alone License is for a perpetual term, except as otherwise provided in this Agreement. -3. Network License. If the License Identification identifies the License Type for the Licensed Materials as a “Network License," Licensee may Install copies of the specific release of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials on multiple Computers, on a Networked Basis, solely by Licensee’s Personnel, solely for Licensee’s Internal Business Needs, only so long as the maximum number of concurrent Authorized Users does not exceed the Permitted Number of Authorized Users or other limits imposed by the Autodesk License Manager (if any). Licensee may, at Licensee’s option, also Install the Licensed Materials on a Hot Backup Server; provided that Licensee may Access the Licensed Materials on the Hot Backup Server only during the time period when, and solely for as long as, the primary Installed copy of the Licensed Materials is inoperable and only subject to the same terms and conditions as are applicable to the primary Installed copy. A “Hot Backup Server” means a file server Computer that has a second copy of the Software and Supplemental Materials Installed but that is not permitted to be Accessible except when the primary Installed copy of the Software and Supplemental Materials are inoperable and only for so long as such primary Installed copy is inoperable. A Network License is for a perpetual term, except as otherwise provided in this Agreement. -4. Educational Stand-alone (Individual) License.  If the License Identification identifies the License Type as an “Educational Stand-alone (Individual) License,” an Educational Licensee may Install a copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by an Educational Licensee solely for Educational Purposes.  An Educational Stand-alone (Individual) License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Installation or as otherwise authorized in writing by Autodesk. -5. Educational Multi-seat Stand-alone License. If the License Identification identifies the License Type as an “Educational Multi-seat Stand-alone License,” an Educational Licensee may Install copies of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes. An Educational Multi-seat Stand-alone License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Installation or as otherwise authorized in writing by Autodesk. -6. Educational Network License. If the License Identification identifies the License Type as an “Educational Network License,” an Educational Licensee may Install copies of the specific release of the Licensed Materials designated in the applicable License Identification on a single file server Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), and Access such Licensed Materials on multiple Computers on a Networked Basis, and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes, only so long as the maximum number of concurrent Authorized Users does not exceed the Permitted Number of Authorized Users. An Educational Network License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Installation or as otherwise authorized in writing by Autodesk. -7. Personal Learning License. If the License Identification identifies the License Type as a “Personal Learning License”, Licensee may Install a copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by Licensee, as an individual, solely for Personal Learning Purposes and only at and from locations that are not labs or classrooms and are not operated for commercial, professional or for-profit purposes. A Personal Learning License Stand-alone is for a fixed term specified in the applicable License Identification. If no such term is specified, the term is thirteen (13) months from Installation. -8. Evaluation/Demonstration/Trial. If Autodesk identifies the License Type as a “demonstration”, “evaluation”, “trial,” “not for resale” or “NFR” version (each, an “Evaluation License”) in the applicable License Identification, Licensee may Install a copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials, solely by Licensee’s Personnel, solely for Evaluation Purposes, only so long as the maximum number of concurrent Authorized Users does not exceed one (1), and only from Licensee’s work location. An Evaluation License is for a fixed term specified in the applicable License Identification, or if no such term is specified, the term is thirty (30) days from Installation or as otherwise authorized in writing by Autodesk. -9. Fixed Term/Limited Duration/Rental License. If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration or as having a fixed term or as a rental license, Licensee’s right to Install and Access the Licensed Materials will continue only for the period, duration or term specified in the License Identification. Such Installation and Access will be in accordance with and subject to the applicable License Type and Permitted Number. If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration, or as having a fixed term, or a rental license but no period, duration or term is specified in the License Identification, the period, duration or term will be ninety (90) days from Installation (or the period specified in Sections B.6 (Educational Network License), B.7 (Personal Learning License) or B.8 (Evaluation/Demonstration/Trial) of this Exhibit B with respect to the licenses described in those sections). -10. Session Specific Network License. If the License Identification identifies the License Type as a "Session Specific Network License", Licensee may install one (1) copy of the specific release of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials from multiple Computers through a Supported Virtualization Application, on a Networked Basis, solely by Licensee's Personnel, solely for Licensee's Internal Business needs, only so long as the maximum number of concurrent Sessions does not exceed the Permitted Number or other limits imposed by the Autodesk License Manager tool (if any). For purposes of this Session Specific Network License, (a) a “Session” is defined as a single interactive information exchange between two Computers that are connected through a Supported Virtualization Application, and (b) “Supported Virtualization Application(s)” are those third party virtualization applications or methods that are specifically identified as supported by Autodesk in the User Documentation for the Licensed Materials. With respect to the applicable Supported Virtualization Application, Licensee agrees to activate any available session tracking mechanism, not disable any such session tracking mechanism and to retain all records generated by such session tracking mechanism. A Session Specific Network License is for a perpetual term, except as otherwise provided in this Agreement. - - - - - - - - - - - - - - - - diff --git a/sdk/Linux/2019.2/include/fbxsdk.h b/sdk/Linux/2019.2/include/fbxsdk.h deleted file mode 100644 index 7998fe8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk.h +++ /dev/null @@ -1,277 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk.h -#ifndef _FBXSDK_H_ -#define _FBXSDK_H_ - -/** - * \mainpage FBX SDK Reference - *

- * \section welcome Welcome to the FBX SDK Reference - * The FBX SDK Reference contains reference information on every header file, - * namespace, class, method, enum, typedef, variable, and other C++ elements - * that comprise the FBX software development kit (SDK). - *

- * The FBX SDK Reference is organized into the following sections: - *

  • Class List: an alphabetical list of FBX SDK classes - *
  • Class Hierarchy: a textual representation of the FBX SDK class structure - *
  • Graphical Class Hierarchy: a graphical representation of the FBX SDK class structure - *
  • File List: an alphabetical list of all documented header files
- *

- * \section otherdocumentation Other Documentation - * Apart from this reference guide, an FBX SDK Programming Guide and many FBX - * SDK examples are also provided. - *

- * \section aboutFBXSDK About the FBX SDK - * The FBX SDK is a C++ software development kit (SDK) that lets you import - * and export 3D scenes using the Autodesk FBX file format. The FBX SDK - * reads FBX files created with FiLMBOX version 2.5 and later and writes FBX - * files compatible with MotionBuilder version 6.0 and up. - */ - -#pragma pack(push, 8) //FBXSDK is compiled with default value (8) - -#include - -#ifndef FBXSDK_NAMESPACE_USING - #define FBXSDK_NAMESPACE_USING 1 -#endif - -//--------------------------------------------------------------------------------------- -//Core Base Includes -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Math Includes -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Sync Includes -#ifndef FBXSDK_ENV_WINSTORE - #include - #include - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ - -//--------------------------------------------------------------------------------------- -//Core Includes -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include - -//--------------------------------------------------------------------------------------- -//File I/O Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Animation Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Constraint Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Geometry Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Shading Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Utilities Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -#if defined(FBXSDK_NAMESPACE) && (FBXSDK_NAMESPACE_USING == 1) - using namespace FBXSDK_NAMESPACE; -#endif - -#pragma pack(pop) - -#endif /* _FBXSDK_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxalloc.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxalloc.h deleted file mode 100644 index 656c85d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxalloc.h +++ /dev/null @@ -1,420 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxalloc.h - * Allocation functions definition. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * The Microsoft Windows implementation in debug mode allows to specify where the - * allocations happen by providing the standard block type, file name and line number. - */ -#ifndef _FBXSDK_CORE_ARCH_ALLOC_H_ -#define _FBXSDK_CORE_ARCH_ALLOC_H_ - -#include - -#if defined(_DEBUG) && defined(FBXSDK_ENV_WIN) - #include -#endif - -#if defined(FBXSDK_ENV_MAC) - #include -#else - #include -#endif - -#include - -#if defined(FBXSDK_CPU_32) && !defined(FBXSDK_ENV_IOS) - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)8U) -#else - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)16U) -#endif - -#define FBXSDK_MEMORY_COPY(dst, src, size) {memcpy(dst,src,size);} - -typedef void* (*FbxMallocProc)(size_t); //! Function pointer signature used to replace "malloc" -typedef void* (*FbxCallocProc)(size_t, size_t); //! Function pointer signature used to replace "calloc" -typedef void* (*FbxReallocProc)(void*, size_t); //! Function pointer signature used to replace "realloc" -typedef void (*FbxFreeProc)(void*); //! Function pointer signature used to replace "free" - -/** Set the global memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate memory in the system. */ -FBXSDK_DLL void FbxSetMallocHandler(FbxMallocProc pHandler); - -/** Set the global zero'd memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate zero'd memory in the system. */ -FBXSDK_DLL void FbxSetCallocHandler(FbxCallocProc pHandler); - -/** Set the global memory re-allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to re-allocate memory in the system. */ -FBXSDK_DLL void FbxSetReallocHandler(FbxReallocProc pHandler); - -/** Set the global memory freeing function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to free memory in the system. */ -FBXSDK_DLL void FbxSetFreeHandler(FbxFreeProc pHandler); - -/** Get the global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetMallocHandler(); - -/** Get the global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetCallocHandler(); - -/** Get the global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetReallocHandler(); - -/** Get the global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetFreeHandler(); - -/** Get the default global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetDefaultMallocHandler(); - -/** Get the default global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetDefaultCallocHandler(); - -/** Get the default global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetDefaultReallocHandler(); - -/** Get the default global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetDefaultFreeHandler(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FBXSDK_DLL size_t FbxAllocSize(size_t pNbItems, size_t pItemSize); - FBXSDK_DLL void* FbxMalloc(size_t pSize); - FBXSDK_DLL void* FbxCalloc(size_t pCount, size_t pSize); - FBXSDK_DLL void* FbxRealloc(void* pData, size_t pSize); - FBXSDK_DLL void FbxFree(void* pData); - FBXSDK_DLL char* FbxStrDup(const char* pString); - FBXSDK_DLL wchar_t* FbxStrDupWC(const wchar_t* pString); - - //These versions of allocators use the default system mallocs, and on Windows we also pass the debugging parameters. - //If you define FBXSDK_ALLOC_DEBUG in your project, the FBX SDK will use these debug versions everywhere. - FBXSDK_DLL void* FbxMallocDebug(size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxCallocDebug(size_t pCount, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxReallocDebug(void* pData, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void FbxFreeDebug(void* pData, int pBlock); - - //When FBXSDK_ALLOC_DEBUG is defined, redirect allocation calls to the debug version. - #if defined(FBXSDK_ALLOC_DEBUG) - #define FbxMalloc(s) FbxMallocDebug(s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxCalloc(c, s) FbxCallocDebug(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxRealloc(p, s) FbxReallocDebug(p, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxFree(p) FbxFreeDebug(p, _NORMAL_BLOCK) - #endif -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -//! Deletion policy for pointer template classes that uses the delete operator. -template class FbxDeletionPolicyDefault -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - delete *pPtr; - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxDelete() function. -template void FbxDelete(T* p); -template void FbxDelete(const T* p); -template class FbxDeletionPolicyDelete -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** mPtr) - { - if( *mPtr ) - { - FbxDelete(*mPtr); - *mPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxFree() function. -template class FbxDeletionPolicyFree -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - FbxFree(*pPtr); - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the Destroy() function. -template class FbxDeletionPolicyObject -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - (*pPtr)->Destroy(); - *pPtr = NULL; - } - } -}; - -/** FbxAutoPtr mimics the \c auto_ptr class template implementation available in the C++ Standard Library. The \c auto_ptr template -* class describes an object that stores a pointer to a single allocated object of type Type* that ensures that the object to which -* it points gets destroyed automatically when control leaves a scope. */ -template > class FbxAutoPtr -{ -public: - //! Construct from a pointer. - explicit FbxAutoPtr(Type* pPtr=0) : mPtr(pPtr){} - - //! Destructor. - ~FbxAutoPtr() { Policy::DeleteIt(&mPtr); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - //! Reset the scoped pointer by swapping with another pointer. - inline void Reset(Type* pPtr=0) - { - FBX_ASSERT(pPtr == 0 || pPtr != mPtr); //Catch self-reset errors - FbxAutoPtr(pPtr).Swap(*this); - } - - //! Swap with another pointer. - inline void Swap(FbxAutoPtr& pOther) - { - Type* TmpPtr = pOther.mPtr; - pOther.mPtr = mPtr; - mPtr = TmpPtr; - } - - //! Release the pointer, so that it won't perform deletion in its destruction. - inline Type* Release() - { - Type* TmpPtr = mPtr; - mPtr = NULL; - return TmpPtr; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAutoPtr(const FbxAutoPtr&); - FbxAutoPtr& operator=(const FbxAutoPtr&); - - Type* mPtr; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxAutoFreePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoFreePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxAutoDeletePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDeletePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxAutoDestroyPtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDestroyPtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - - -/** FbxSharedPtr class describes an object that stores a pointer to a single allocated object of type -* Type* that ensures that the object to which it points gets destroyed automatically when the control -* leaves a scope and the reference count is 0. */ -class RefCount -{ -public: - RefCount() { Init(); }; - ~RefCount() { Init(); }; - - void Init() { count = 0; } - void IncRef() { count++; } - int DecRef() { count--; if (count < 0) count = 0; return count; } - -private: - int count; -}; - -template > class FbxSharedPtr -{ -public: - // Default constructor. - FbxSharedPtr() : - mPtr(0), - mRef(0) - {} - - //! Construct from a pointer. - explicit FbxSharedPtr(Type* pPtr) : - mPtr(pPtr), - mRef(0) - { - if (pPtr != 0) - { - mRef = (RefCount*)FbxMalloc(sizeof(RefCount)); - mRef->Init(); - mRef->IncRef(); - } - } - - //! Copy constructor - FbxSharedPtr(const FbxSharedPtr& pSPtr) : - mPtr(pSPtr.mPtr), - mRef(pSPtr.mRef) - { - if (pSPtr.mPtr != 0 && mRef != 0) - mRef->IncRef(); - } - - // Assignment operator - FbxSharedPtr& operator=(const FbxSharedPtr& pSPtr) - { - if (this != &pSPtr) // avoid self assignment - { - Reset(); - - if (pSPtr.mPtr) - { - mPtr = pSPtr.mPtr; - mRef = pSPtr.mRef; - FBX_ASSERT(mRef != NULL); - mRef->IncRef(); - } - } - return *this; - } - - //! Destructor. - ~FbxSharedPtr() { Destroy(); } - - void Destroy() { Reset(); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void Reset() - { - if (mRef) - { - FBX_ASSERT(mPtr != 0); - if (mRef->DecRef() == 0) - { - Policy::DeleteIt(&mPtr); - FbxFree(mRef); - mRef = NULL; - } - } - } - - Type* mPtr; - RefCount* mRef; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxSharedFreePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedFreePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxSharedDeletePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDeletePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxSharedDestroyPtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDestroyPtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - - - -#include - -#endif /* _FBXSDK_CORE_ARCH_ALLOC_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxarch.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxarch.h deleted file mode 100644 index b5246e1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxarch.h +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxarch.h - * Architecture definition. - * - * List of available preprocessor defines that can appear on various systems: - * - * Operating System Environment: - * FBXSDK_ENV_WIN (Windows) - * FBXSDK_ENV_WINSTORE (Windows Store App) - * FBXSDK_ENV_MAC (MacOSX) - * FBXSDK_ENV_IOS (iOS) - * FBXSDK_ENV_LINUX (Linux) - * - * Architecture: - * FBXSDK_ARCH_IX86 (Intel x86) - * FBXSDK_ARCH_AMD64 (AMD64) - * FBXSDK_ARCH_ARM (Advanced RISC Machine) - * - * Processor: - * FBXSDK_CPU_32 (32bit processor) - * FBXSDK_CPU_64 (64bit processor) - * - * Compiler: - * FBXSDK_COMPILER_MSC (Microsoft Compiler) - * FBXSDK_COMPILER_GNU (GNU Compiler) - * FBXSDK_COMPILER_INTEL (Intel Compiler) - * FBXSDK_COMPILER_CLANG (Clang Compiler) - * - * These definitions are based on the information found here: - * http://predef.sourceforge.net/index.php - * - */ -#ifndef _FBXSDK_CORE_ARCH_ARCH_H_ -#define _FBXSDK_CORE_ARCH_ARCH_H_ - -#if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------ - - #define FBXSDK_ENV_WIN 1 - - #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) - #define FBXSDK_ENV_WINSTORE 1 - #endif - - #if defined(_M_X64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(_M_IX86) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(_M_ARM) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #else - #error Unsupported architecture! - #endif - - #if defined(_MSC_VER) - #define FBXSDK_COMPILER_MSC 1 - #elif defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(__ICL) - #define FBXSDK_COMPILER_INTEL 1 - #else - #error Unsupported compiler! - #endif - -#elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X --------------------------- - - #include "TargetConditionals.h" - - #define FBXSDK_ENV_MAC 1 - - #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - #define FBXSDK_ENV_IOS 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(__arm64__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #endif - - #if defined(__clang__) - #define FBXSDK_COMPILER_CLANG 1 - #endif - - #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG) - #error Unsupported compiler! - #endif - -#elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux --------------------------------- - - #define FBXSDK_ENV_LINUX 1 - - #if defined(EMSCRIPTEN) - #define FBXSDK_ENV_EMSCRIPTEN 1 - #endif - - #if defined(ANDROID) - #define FBXSDK_ENV_ANDROID 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_COMPILER_EMSCRIPTEN 1 - #else - #error Unsupported compiler! - #endif - #else - #error Unsupported platform! -#endif - -//--------------------------------------------------------------------------------------- -//Compiler Specifics -#if defined(FBXSDK_SHARED) - #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL) - #define FBXSDK_DLLIMPORT __declspec(dllimport) - #define FBXSDK_DLLEXPORT __declspec(dllexport) - #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4) - #define FBXSDK_DLLIMPORT __attribute__((visibility("default"))) - #define FBXSDK_DLLEXPORT __attribute__((visibility("default"))) - #else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT - #endif -#else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT -#endif - -#ifndef FBXSDK_DLL - #define FBXSDK_DLL FBXSDK_DLLIMPORT -#endif - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' - #if _MSC_VER >= 1300 // 7.1 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN) - #define FBX_DEPRECATED __attribute__((deprecated)) -#elif defined(FBXSDK_COMPILER_INTEL) - #if __INTEL_COMPILER >= 810 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#else - #error Unsupported compiler! -#endif - -#ifdef FBXSDK_COMPILER_CLANG - #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p))) -#else - #define FBX_UNUSED(p) (void)(p) -#endif - -//--------------------------------------------------------------------------------------- -//Platform Standardization -#ifndef NULL - #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) - #define NULL (__null) - #else - #if defined(__cplusplus) - #define NULL 0 - #else - #define NULL ((void*)0) - #endif - #endif -#endif - -#if !defined(_MAX_PATH) - #define _MAX_PATH 260 -#endif - -#if defined(FBXSDK_ENV_WIN) - #define snprintf _snprintf //for stdio.h platform compatibility -#endif - -#if !defined(FBXSDK_COMPILER_MSC) - #ifndef strcmpi - #define strcmpi strcasecmp - #endif - #ifndef stricmp - #define stricmp strcasecmp - #endif - #ifndef strncmpi - #define strncmpi strncasecmp - #endif - #ifndef strnicmp - #define strnicmp strncasecmp - #endif -#endif - -#endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxdebug.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxdebug.h deleted file mode 100644 index 9e348b7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxdebug.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxdebug.h - * Debugging macros and functions. - * - * All macros and functions are removed in release builds. To enable asserts, a debug build is required as well - * as the environment variable "FBXSDK_ASSERT" set to 1 is also required. By default, assertions will pop-up - * a window. It is possible to disable the pop-up on the Windows platform by calling the following code: - * \code - * _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG); - * \endcode - */ -#ifndef _FBXSDK_CORE_ARCH_DEBUG_H_ -#define _FBXSDK_CORE_ARCH_DEBUG_H_ - -#include - -#include - -/** If this environment variable is set to 1, the FBX SDK will assert in debug builds */ -#define FBXSDK_ASSERT_ENVSTR "FBXSDK_ASSERT" - -/** The assertion procedure signature. If a different assertion procedure must be provided, it should have this signature. -* \param pFileName The file name where the assertion occurred. -* \param pFunctionName The function name where the assertion occurred. -* \param pLineNumber The line number in the file where the assertion occurred. -* \param pMessage The message to display when the assertion occurs. */ -typedef void (*FbxAssertProc)(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, const char* pMessage); - -/** Change the procedure used when assertion occurs. -* \param pAssertProc The procedure to be called when assertions occurs. */ -FBXSDK_DLL void FbxAssertSetProc(FbxAssertProc pAssertProc); - -//! Change the procedure back to the default one. -FBXSDK_DLL void FbxAssertSetDefaultProc(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -FBXSDK_DLL void _FbxAssert(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, bool pFormat, const char* pMessage, ...); -FBXSDK_DLL void _FbxTrace(const char* pMessage, ...); - -#ifdef _DEBUG - template struct FbxStaticAssertType; - template<> struct FbxStaticAssertType {enum{value=1};}; - template<> struct FbxStaticAssertType {enum{value=-1};}; - #define FBX_ASSERT(Condition) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,false,#Condition);}} - #define FBX_ASSERT_MSG(Condition, Message, ...) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__);}} - #define FBX_ASSERT_NOW(Message, ...) _FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__); - #define FBX_ASSERT_RETURN(Condition) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return;}} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return Value;}} - #define FBX_ASSERT_STATIC(Condition) typedef char FbxBuildBreakIfFalse[FbxStaticAssertType<(bool)(Condition)>::value]; - #define FBX_TRACE(Message, ...) {_FbxTrace(Message,##__VA_ARGS__);} -#else - #define FBX_ASSERT(Condition) ((void)0) - #define FBX_ASSERT_MSG(Condition, Message, ...) ((void)0) - #define FBX_ASSERT_NOW(Message, ...) ((void)0) - #define FBX_ASSERT_RETURN(Condition) if(!(Condition)){return;} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) if(!(Condition)){return Value;} - #define FBX_ASSERT_STATIC(Condition) - #define FBX_TRACE(Message, ...) ((void)0) -#endif - -template struct FbxIncompatibleWithArray{ enum {value = 0}; }; - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T)\ - struct FbxIncompatibleWithArray< T >{\ - union {\ - T t();\ - } catcherr;\ - enum {value = 1};} - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY(T)\ - template<> FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T) - -#define FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T) ((bool) FbxIncompatibleWithArray::value) - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_ARCH_DEBUG_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxnew.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxnew.h deleted file mode 100644 index d1575f4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxnew.h +++ /dev/null @@ -1,511 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxnew.h - * New operator override templates. - * - * Instead of overloading the operator new in the FBX SDK, we provide a set of templates - * that are used internally to create objects. This mechanic allows the FBX SDK to call - * a different memory allocator. - * \see FbxSetMallocHandler FbxSetCallocHandler FbxSetReallocHandler FbxSetFreeHandler FbxSetMSizeHandler - */ -#ifndef _FBXSDK_CORE_ARCH_NEW_H_ -#define _FBXSDK_CORE_ARCH_NEW_H_ - -#include - -#include - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(push) - #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized -#endif - -#include - -//Type traits for primitive types -template struct FbxSimpleType { enum {value = 0}; }; -template struct FbxSimpleType { enum {value = 1}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; - -#define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType{ union {T t;} catcherr; enum {value = 1};} - -FBXSDK_DEFINE_SIMPLE_TYPE(bool); -FBXSDK_DEFINE_SIMPLE_TYPE(char); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned char); -FBXSDK_DEFINE_SIMPLE_TYPE(short); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short); -FBXSDK_DEFINE_SIMPLE_TYPE(int); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned int); -FBXSDK_DEFINE_SIMPLE_TYPE(long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long); -FBXSDK_DEFINE_SIMPLE_TYPE(float); -FBXSDK_DEFINE_SIMPLE_TYPE(double); -FBXSDK_DEFINE_SIMPLE_TYPE(long double); -FBXSDK_DEFINE_SIMPLE_TYPE(long long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long); - -#define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType::value) - -template T* FbxNew() -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(); -} - -template T* FbxNew(T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(const T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9); -} - -template void FbxDelete(T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(p); - } -} - -template void FbxDelete(const T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(const_cast(p)); - } -} - -template T* FbxNewArray(const int n) -{ - size_t lSize = FbxAllocSize((size_t)n, sizeof(T)); - if( FBXSDK_IS_SIMPLE_TYPE(T) ) - { - return (T*)FbxMalloc(lSize); - } - else - { - void* pTmp = FbxMalloc(lSize + sizeof(int)); - T* p = (T*)((int*)pTmp+1); - *((int*)pTmp) = n; - for( int i = 0; i < n; ++i ) - { - new((T*)p+i)T; //in-place new, not allocating memory so it is safe. - } - return p; - } -} - -template void FbxDeleteArray(T* p) -{ - if( p ) - { - if( !FBXSDK_IS_SIMPLE_TYPE(T) ) - { - for( int i = 0; i < ((int*)p)[-1]; ++i ) - { - ((T*)p)[i].~T(); - } - FbxFree((int*)p-1); - } - else - { - FbxFree((void*)p); - } - } -} - -#define FBXSDK_FRIEND_NEW()\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew();\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p); - -#ifdef FBXSDK_COMPILER_MSC - #pragma warning(pop) -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_NEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h deleted file mode 100644 index 059dc4a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxstdcompliant.h -* Macros to properly support the CRT secure functions. */ -#ifndef _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ -#define _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ - -#include - -#include - -#if defined(FBXSDK_ENV_WIN) - #define FBXSDK_printf printf_s - #define FBXSDK_fprintf fprintf_s - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf_s(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf_s(dst, dstsize, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); } - #define FBXSDK_stricmp(dst, src) _stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) _strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy_s(dst, size, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy_s(dst, size, src, count) - #define FBXSDK_strcat(dst, size, src) strcat_s(dst, size, src) - #define FBXSDK_strtok(str, delim, ctx) strtok_s(str, delim, ctx) - #define FBXSDK_wcscpy(dst, size, src) wcscpy_s(dst, size, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, size, src) -#if !defined(FBXSDK_ENV_WINSTORE) - #define FBXSDK_getpid _getpid - #define FBXSDK_getcwd _getcwd -#else - inline int FBXSDK_getpid(){ return 0; } - inline char* FBXSDK_getcwd(char*,int){ return NULL; } -#endif - #define FBXSDK_localtime(ptm, time) { struct tm tms; ptm = &tms; localtime_s(ptm, time); } - #define FBXSDK_gmtime(ptm, time) { struct tm tms; ptm = &tms; gmtime_s(ptm, time); } - #define FBXSDK_fopen(fp, name, mode) fopen_s(&fp, name, mode) - -#elif defined(FBXSDK_ENV_MAC) || defined(FBXSDK_ENV_LINUX) - #define FBXSDK_printf printf - #define FBXSDK_fprintf fprintf - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf(dst, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf(dst, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf(dst, dstsize, format, vl); } - #define FBXSDK_stricmp(dst, src) stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy(dst, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy(dst, src, count) - #define FBXSDK_strcat(dst, size, src) strcat(dst, src) - #define FBXSDK_strtok(str, delim, ctx) strtok(str, delim) - #define FBXSDK_wcscpy(dst, size, src) wcscpy(dst, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, src) - #define FBXSDK_getpid getpid - #define FBXSDK_getcwd getcwd - #define FBXSDK_localtime(tm, time) tm=localtime(time) - #define FBXSDK_gmtime(tm, time) tm=gmtime(time) - #define FBXSDK_fopen(fp, name, mode) fp=fopen(name, mode) - -#else - #error Unsupported platform! -#endif - -#define FBXSDK_strdup FbxStrDup - -//The scanf family functions cannot easily be used in both secure and non-secure versions because -//Microsoft's secure version expects the size of the string/char* arguments following their address. -//On Unix machines the scanf family functions do not have this behavior and trying to use the same -//calls would result in compiler errors because the arguments would not match the format string. -//Using the following macros in the code will simply desable the warning at compile time. -#if defined(FBXSDK_COMPILER_MSC) && (_MSC_VER >= 1300) - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN\ - {\ - __pragma(warning(push))\ - __pragma(warning(disable : 4996))\ - } - - #define FBXSDK_CRT_SECURE_NO_WARNING_END\ - {\ - __pragma(warning(pop))\ - } -#else - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - #define FBXSDK_CRT_SECURE_NO_WARNING_END -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxtypes.h b/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxtypes.h deleted file mode 100644 index 35252d4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/arch/fbxtypes.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxtypes.h - * Basic types definition. - * - * Standard basic types used across the FBX SDK. There is also platform independent - * definitions that guarantee size across operating systems. The FBXSDK_SYSTEM_IS_LP64 - * define is set to 1 when the operating system defines the "long" C++ type as 64-bit. - */ -#ifndef _FBXSDK_CORE_ARCH_TYPES_H_ -#define _FBXSDK_CORE_ARCH_TYPES_H_ - -#include - -//Note: On MacOSX and Linux 64-bit, long is defined as 64-bits while on Windows -//it is still a 32-bits for backward compatibility. We stick with Windows standard. -#if defined(FBXSDK_CPU_64) && !defined(FBXSDK_ENV_WIN) - #define FBXSDK_SYSTEM_IS_LP64 1 -#endif - -#include - -class FbxObject; - -typedef bool FbxBool; -typedef signed char FbxChar; -typedef unsigned char FbxUChar; -typedef signed short FbxShort; -typedef unsigned short FbxUShort; -typedef signed int FbxInt; -typedef unsigned int FbxUInt; -typedef float FbxFloat; -typedef double FbxDouble; - -typedef FbxBool* FbxBoolPtr; -typedef FbxChar* FbxCharPtr; -typedef FbxUChar* FbxUCharPtr; -typedef FbxShort* FbxShortPtr; -typedef FbxUShort* FbxUShortPtr; -typedef FbxInt* FbxIntPtr; -typedef FbxUInt* FbxUIntPtr; -typedef FbxFloat* FbxFloatPtr; -typedef FbxDouble* FbxDoublePtr; - -typedef FbxInt FbxEnum; -typedef FbxObject* FbxReference; - -//------------------------------------------------------------------------------------- -//Architecture independent defines (guarantee size) -#if defined(FBXSDK_COMPILER_MSC) - #define FBXSDK_LONGLONG(x) (x##i64) - #define FBXSDK_ULONGLONG(x) (x##Ui64) - - typedef signed __int8 FbxInt8; - typedef unsigned __int8 FbxUInt8; - typedef signed __int16 FbxInt16; - typedef unsigned __int16 FbxUInt16; - typedef signed __int32 FbxInt32; - typedef unsigned __int32 FbxUInt32; - typedef signed __int64 FbxInt64; - typedef unsigned __int64 FbxUInt64; -#else - #define FBXSDK_LONGLONG(x) (x##LL) - #define FBXSDK_ULONGLONG(x) (x##ULL) - - typedef signed char FbxInt8; - typedef unsigned char FbxUInt8; - typedef signed short FbxInt16; - typedef unsigned short FbxUInt16; - typedef signed int FbxInt32; - typedef unsigned int FbxUInt32; - typedef signed long long FbxInt64; - typedef unsigned long long FbxUInt64; -#endif - -#ifdef FBXSDK_SYSTEM_IS_LP64 - typedef signed int FbxLong; - typedef unsigned int FbxULong; -#else - typedef signed long FbxLong; - typedef unsigned long FbxULong; -#endif -typedef FbxInt64 FbxLongLong; -typedef FbxUInt64 FbxULongLong; - -typedef FbxLong* FbxLongPtr; -typedef FbxULong* FbxULongPtr; -typedef FbxLongLong* FbxLongLongPtr; -typedef FbxULongLong* FbxULongLongPtr; - - -#if defined(FBXSDK_ENV_EMSCRIPTEN) - typedef FbxInt32 __int32_t; - typedef FbxUInt32 __uint32_t; - typedef FbxInt64 __int64_t; - typedef FbxUInt64 __uint64_t; -#endif - -//------------------------------------------------------------------------------------- -//Minimum and Maximum values for types -#define FBXSDK_CHAR_MIN -128 -#define FBXSDK_CHAR_MAX 127 -#define FBXSDK_UCHAR_MIN 0 -#define FBXSDK_UCHAR_MAX 255 -#define FBXSDK_SHORT_MIN -32768 -#define FBXSDK_SHORT_MAX 32767 -#define FBXSDK_USHORT_MIN 0 -#define FBXSDK_USHORT_MAX 65535 -#define FBXSDK_INT_MIN 0x80000000 -#define FBXSDK_INT_MAX 0x7fffffff -#define FBXSDK_UINT_MIN 0 -#define FBXSDK_UINT_MAX 0xffffffff -#define FBXSDK_LONG_MIN FBXSDK_INT_MIN -#define FBXSDK_LONG_MAX FBXSDK_INT_MAX -#define FBXSDK_ULONG_MIN FBXSDK_UINT_MIN -#define FBXSDK_ULONG_MAX FBXSDK_UINT_MAX -#define FBXSDK_LONGLONG_MIN FBXSDK_LONGLONG(0x8000000000000000) -#define FBXSDK_LONGLONG_MAX FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_ULONGLONG_MIN FBXSDK_ULONGLONG(0) -#define FBXSDK_ULONGLONG_MAX FBXSDK_ULONGLONG(0xffffffffffffffff) -#define FBXSDK_FLOAT_MIN FLT_MIN -#define FBXSDK_FLOAT_MAX FLT_MAX -#define FBXSDK_FLOAT_EPSILON FLT_EPSILON -#define FBXSDK_DOUBLE_MIN DBL_MIN -#define FBXSDK_DOUBLE_MAX DBL_MAX -#define FBXSDK_DOUBLE_EPSILON DBL_EPSILON -#define FBXSDK_TOLERANCE (1.0e-6) - -//------------------------------------------------------------------------------------- -//Handle and atomic definition (size change depending of architecture) -#if defined(FBXSDK_CPU_32) - typedef FbxUInt32 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_UINT_MIN - #define FBXSDK_REF_MAX FBXSDK_UINT_MAX - - typedef FbxLong FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONG_MAX -#elif defined(FBXSDK_CPU_64) - typedef FbxUInt64 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_ULONGLONG_MIN - #define FBXSDK_REF_MAX FBXSDK_ULONGLONG_MAX - - typedef FbxInt64 FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONGLONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONGLONG_MAX -#else - #error Unsupported architecture! -#endif - -//------------------------------------------------------------------------------------- -//Various utility functions for fbxsdk basic types -inline FbxChar FbxMin(const FbxChar){ return FBXSDK_CHAR_MIN; } -inline FbxUChar FbxMin(const FbxUChar){ return FBXSDK_UCHAR_MIN; } -inline FbxShort FbxMin(const FbxShort){ return FBXSDK_SHORT_MIN; } -inline FbxUShort FbxMin(const FbxUShort){ return FBXSDK_USHORT_MIN; } -inline FbxInt FbxMin(const FbxInt){ return FBXSDK_INT_MIN; } -inline FbxUInt FbxMin(const FbxUInt){ return FBXSDK_UINT_MIN; } -inline FbxLongLong FbxMin(const FbxLongLong){ return FBXSDK_LONGLONG_MIN; } -inline FbxULongLong FbxMin(const FbxULongLong){ return FBXSDK_ULONGLONG_MIN; } -inline FbxFloat FbxMin(const FbxFloat){ return FBXSDK_FLOAT_MIN; } -inline FbxDouble FbxMin(const FbxDouble){ return FBXSDK_DOUBLE_MIN; } - -inline FbxChar FbxMax(const FbxChar){ return FBXSDK_CHAR_MAX; } -inline FbxUChar FbxMax(const FbxUChar){ return FBXSDK_UCHAR_MAX; } -inline FbxShort FbxMax(const FbxShort){ return FBXSDK_SHORT_MAX; } -inline FbxUShort FbxMax(const FbxUShort){ return FBXSDK_USHORT_MAX; } -inline FbxInt FbxMax(const FbxInt){ return FBXSDK_INT_MAX; } -inline FbxUInt FbxMax(const FbxUInt){ return FBXSDK_UINT_MAX; } -inline FbxLongLong FbxMax(const FbxLongLong){ return FBXSDK_LONGLONG_MAX; } -inline FbxULongLong FbxMax(const FbxULongLong){ return FBXSDK_ULONGLONG_MAX; } -inline FbxFloat FbxMax(const FbxFloat){ return FBXSDK_FLOAT_MAX; } -inline FbxDouble FbxMax(const FbxDouble){ return FBXSDK_DOUBLE_MAX; } - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxLong FbxMin(const FbxLong){ return FBXSDK_LONG_MIN; } - inline FbxULong FbxMin(const FbxULong){ return FBXSDK_ULONG_MIN; } - inline FbxLong FbxMax(const FbxLong){ return FBXSDK_LONG_MAX; } - inline FbxULong FbxMax(const FbxULong){ return FBXSDK_ULONG_MAX; } -#endif - -template inline T FbxMin(const T){}; -template inline T FbxMax(const T){}; - -template inline T FbxMin(const T x, const T y){ return (x < y) ? x : y; } -template inline T FbxMax(const T x, const T y){ return (x > y) ? x : y; } - -//------------------------------------------------------------------------------------- -//Vector Template Types -template class FBXSDK_DLL FbxVectorTemplate2 -{ -public: - inline FbxVectorTemplate2(){ *this = T(0); } - inline explicit FbxVectorTemplate2(T pValue){ *this = pValue; } - inline FbxVectorTemplate2(T pData0, T pData1){ mData[0] = pData0; mData[1] = pData1; } - inline ~FbxVectorTemplate2(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline FbxVectorTemplate2& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; return *this; } - inline FbxVectorTemplate2& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline bool operator==(const FbxVectorTemplate2& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1])); } - inline bool operator!=(const FbxVectorTemplate2& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[2]; -}; - -template class FBXSDK_DLL FbxVectorTemplate3 -{ -public: - inline FbxVectorTemplate3(){ *this = T(0); } - inline explicit FbxVectorTemplate3(T pValue){ *this = pValue; } - inline FbxVectorTemplate3(T pData0, T pData1, T pData2){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; } - inline ~FbxVectorTemplate3(){} - inline T& operator[](int pIndex) { return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate2& () const { return *((FbxVectorTemplate2*)this); } - inline FbxVectorTemplate3& operator=(T const &pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate3& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; return *this; } - inline bool operator==(const FbxVectorTemplate3& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2])); } - inline bool operator!=(const FbxVectorTemplate3& pVector) const { return !operator==(pVector); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[3]; -}; - -template class FBXSDK_DLL FbxVectorTemplate4 -{ -public: - inline FbxVectorTemplate4(){ *this = T(0); } - inline explicit FbxVectorTemplate4(T pValue){ *this = pValue; } - inline FbxVectorTemplate4(T pData0, T pData1, T pData2, T pData3){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3; } - inline ~FbxVectorTemplate4(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate3& () const { return *((FbxVectorTemplate3*)this); } - inline FbxVectorTemplate4& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate3& pValue){ mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate4& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; mData[3] = pVector.mData[3]; return *this; } - inline bool operator==(const FbxVectorTemplate4& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2]) && (mData[3] == pVector.mData[3])); } - inline bool operator!=(const FbxVectorTemplate4& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[4]; -}; - -typedef FbxVectorTemplate2 FbxDouble2; -typedef FbxVectorTemplate3 FbxDouble3; -typedef FbxVectorTemplate4 FbxDouble4; -typedef FbxVectorTemplate4 FbxDouble4x4; - -#include - -#endif /* _FBXSDK_CORE_ARCH_TYPES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxarray.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxarray.h deleted file mode 100644 index 55a5110..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxarray.h +++ /dev/null @@ -1,489 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxarray.h -#ifndef _FBXSDK_CORE_BASE_ARRAY_H_ -#define _FBXSDK_CORE_BASE_ARRAY_H_ - -#include - -#include - -/** Class for array of basic elements such as pointers and basic types. This class will not -* call constructor and destructor for elements, thus it is not suitable for object references. -* Memory allocations are always done in a single contiguous memory region. */ -template class FbxArray -{ -public: - //! Element compare function pointer definition - typedef int (*CompareFunc)(const void*, const void*); - - //! Constructor. - FbxArray() : mSize(0), mCapacity(0), mArray(NULL){} - - //! Reserve constructor. - FbxArray(const int pCapacity) : mSize(0), mCapacity(0), mArray(NULL){ if( pCapacity > 0 ) Reserve(pCapacity); } - - //! Copy constructor. - FbxArray(const FbxArray& pArray) : mSize(0), mCapacity(0), mArray(NULL){ *this = pArray; } - - /** Destructor. - * \remark The destructor for each element will not be called. */ - ~FbxArray(){ Clear(); } - - /** Insert an element at the given position, growing the array if capacity is not sufficient. - * \param pIndex Position where to insert the element. Must be a positive value. - * \param pElement Element to insert in the array. - * \param pCompact If \c true and capacity is exceeded, grow capacity by one, otherwise double capacity (default). - * \return -1 if insert failed, otherwise the position of the inserted element in the array. - * \remark If the given index is greater than Size(), the element is appended at the end. Use compact mode only if you need to save memory. */ - inline int InsertAt(const int pIndex, const T& pElement, bool pCompact=false) - { - FBX_ASSERT_RETURN_VALUE(pIndex >= 0, -1); - int lIndex = FbxMin(pIndex, mSize); - if( mSize >= mCapacity ) - { - T lElement = pElement; //Copy element because we might move memory - int lNewCapacity = FbxMax(pCompact ? mCapacity + 1 : mCapacity * 2, 1); //We always double capacity when not compacting - T* lArray = Allocate(lNewCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, -1); - mArray = lArray; - mCapacity = lNewCapacity; - return InsertAt(pIndex, lElement); //Insert copied element because reference might be moved - } - - if( lIndex < mSize ) //Move elements to leave a space open to insert the new element - { - //If pElement is inside memmove range, copy element and insert copy instead - if( (&pElement >= &mArray[lIndex]) && (&pElement < &mArray[mSize]) ) - { - T lElement = pElement; - return InsertAt(pIndex, lElement); - } - memmove(&mArray[lIndex + 1], &mArray[lIndex], (mSize - lIndex) * sizeof(T)); - } - - memcpy(&mArray[lIndex], &pElement, sizeof(T)); - mSize++; - - return lIndex; - } - - /** Append an element at the end of the array, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int Add(const T& pElement) - { - return InsertAt(mSize, pElement); - } - - /** Append an element at the end of array, if not already present, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddUnique(const T& pElement) - { - int lIndex = Find(pElement); - return ( lIndex == -1 ) ? Add(pElement) : lIndex; - } - - /** Append an element at the end of the array, growing the array by one element if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddCompact(const T& pElement) - { - return InsertAt(mSize, pElement, true); - } - - /** Retrieve the number of element contained in the array. To increase the capacity without increasing the size, please use Reserve(). - * \return The number of element in the array. - * \remark The size of the array cannot exceed its capacity. */ - inline int Size() const { return mSize; } - - /** Retrieve the current allocated memory capacity of the array. - * \return The capacity of the array in number of element. - * \remark The capacity will always be greater or equal to its size. */ - inline int Capacity() const { return mCapacity; } - - /** Retrieve a reference of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return A reference to the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T& operator[](const int pIndex) const - { - #ifdef _DEBUG - FBX_ASSERT_MSG(pIndex >= 0, "Index is out of range!"); - if( pIndex >= mSize ) - { - if( pIndex < mCapacity ) - { - FBX_ASSERT_NOW("Index is out of range, but not outside of capacity! Call SetAt() to use reserved memory."); - } - else FBX_ASSERT_NOW("Index is out of range!"); - } - #endif - return (T&)mArray[pIndex]; - } - - /** Retrieve a copy of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return The value of the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T GetAt(const int pIndex) const - { - return operator[](pIndex); - } - - /** Retrieve a copy of the first element. - * \return Copy of the first element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetFirst() const - { - return GetAt(0); - } - - /** Retrieve a copy of the last element. - * \return Copy of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetLast() const - { - return GetAt(mSize-1); - } - - /** Find first matching element, from first to last. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int Find(const T& pElement, const int pStartIndex=0) const - { - FBX_ASSERT_RETURN_VALUE(pStartIndex >= 0, -1); - for( int i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Find first matching element, from last to first. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int FindReverse(const T& pElement, const int pStartIndex=FBXSDK_INT_MAX) const - { - for( int i = FbxMin(pStartIndex, mSize-1); i >= 0; --i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Request for allocation of additional memory without inserting new elements. After the memory has been reserved, please use SetAt() to initialize elements. - * \param pCapacity The number of additional element memory allocation requested. - * \return \c true if the memory allocation succeeded or if the capacity is unchanged, \c false otherwise. - * \remark If the requested capacity is less than or equal to the current capacity, this call has no effect. In either case, Size() is unchanged. */ - inline bool Reserve(const int pCapacity) - { - FBX_ASSERT_RETURN_VALUE(pCapacity > 0, false); - if( pCapacity > mCapacity ) - { - T* lArray = Allocate(pCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - mCapacity = pCapacity; - - //Initialize new memory to zero - memset(&mArray[mSize], 0, (mCapacity - mSize) * sizeof(T)); - } - return true; - } - - /** Set the element at given position in the array. - * \param pIndex Position of element in the array. - * \param pElement The new element. - * \remark If the index is outside range, and outside capacity, this call has no effect. However, if index is - * within capacity range, element count is increased such that Size() will become pIndex + 1. */ - inline void SetAt(const int pIndex, const T& pElement) - { - FBX_ASSERT_RETURN(pIndex >= 0 && pIndex < mCapacity); - if( pIndex >= mSize ) mSize = pIndex + 1; - if( mArray ) memcpy(&mArray[pIndex], &pElement, sizeof(T)); - } - - /** Set the value of the first element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetFirst(const T& pElement) - { - SetAt(0, pElement); - } - - /** Set the value of the last element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetLast(const T& pElement) - { - SetAt(mSize-1, pElement); - } - - /** Remove an element at the given position in the array. - * \param pIndex Position of the element to remove. - * \return Removed element. - * \remark No error will be thrown if the index is out of bounds. */ - inline T RemoveAt(const int pIndex) - { - T lElement = GetAt(pIndex); - if( pIndex + 1 < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + 1], (mSize - pIndex - 1) * sizeof(T)); - } - mSize--; - return lElement; - } - - /** Remove the first element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveFirst() - { - return RemoveAt(0); - } - - /** Remove the last element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveLast() - { - return RemoveAt(mSize-1); - } - - /** Remove first matching element in the array. - * \param pElement Element to be removed. - * \return \c true if a matching element is found and removed, \c false otherwise. */ - inline bool RemoveIt(const T& pElement) - { - int Index = Find(pElement); - if( Index >= 0 ) - { - RemoveAt(Index); - return true; - } - return false; - } - - /** Remove a range of elements at the given position in the array. - * \param pIndex Begin position of the elements to remove. - * \param pCount The count of elements to remove. - * \return \c true if successful, otherwise \c false. */ - inline void RemoveRange(const int pIndex, const int pCount) - { - FBX_ASSERT_RETURN(pIndex >= 0); - FBX_ASSERT_RETURN(pCount >= 0); - if( pIndex + pCount < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + pCount], (mSize - pIndex - pCount) * sizeof(T)); - } - mSize -= pCount; - } - - /** Inserts or erases elements at the end such that Size() becomes pSize, increasing capacity if needed. Please use SetAt() to initialize any new elements. - * \param pSize The new count of elements to set the array to. Must be greater or equal to zero. - * \return \c true if the memory (re)allocation succeeded, \c false otherwise. - * \remark If the requested element count is less than or equal to the current count, elements are freed from memory. Otherwise, the array grows and elements are unchanged. */ - inline bool Resize(const int pSize) - { - if( pSize == mSize && mSize == mCapacity ) return true; - - if( pSize == 0 ) - { - Clear(); - return true; - } - - FBX_ASSERT_RETURN_VALUE(pSize > 0, false); - if( pSize != mCapacity ) - { - T* lArray = Allocate(pSize); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - } - - if( pSize > mCapacity ) //Initialize new memory to zero - { - memset(&mArray[mSize], 0, (pSize - mSize) * sizeof(T)); - } - - mSize = pSize; - mCapacity = pSize; - return true; - } - - /** Increase size of array by the specified size. - * \param pSize The size to add to the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Grow(const int pSize) - { - return Resize(mSize + pSize); - } - - /** Reduce size of array by the specified size. - * \param pSize The size to remove from the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Shrink(const int pSize) - { - return Resize(mSize - pSize); - } - - /** Compact the array so that its capacity is the same as its size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Compact() - { - return Resize(mSize); - } - - /** Reset the number of element to zero and free the memory allocated. - * \remark This only free the memory allocated by the array, and doesn't call the destructor of each element. */ - inline void Clear() - { - if( mArray != NULL ) - { - mSize = 0; - mCapacity = 0; - FbxFree(mArray); - mArray = NULL; - } - } - - /** Sort the array using the specified compare function pointer - * \param pCompareFunc The compare function to use to sort elements. */ - inline void Sort(CompareFunc pCompareFunc) - { - qsort(mArray, mSize, sizeof(T), pCompareFunc); - } - - //! Get pointer to internal array of elements. - inline T* GetArray() const { return mArray ? (T*)mArray : NULL; } - - //! Cast operator. - inline operator T* (){ return mArray ? (T*)mArray : NULL; } - - /** Append another array at the end of this array. - * \param pOther The other array to append to this array. */ - inline void AddArray(const FbxArray& pOther) - { - if( Grow(pOther.mSize) ) - { - memcpy(&mArray[mSize - pOther.mSize], pOther.mArray, pOther.mSize * sizeof(T)); - } - } - - /** Append the elements of another array at the end of this array if they are not present. - * \param pOther Another array. */ - inline void AddArrayNoDuplicate(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - AddUnique(pOther[i]); - } - } - - /** Remove the elements of another array from this array is they are present. - * \param pOther Another array. */ - inline void RemoveArray(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - RemoveIt(pOther[i]); - } - } - - /** Operator to copy elements of an array. - * \return this array containing a copy of pOther elements. */ - inline FbxArray& operator=(const FbxArray& pOther) - { - if( this != &pOther ) - { - if( Resize(pOther.mSize) ) - { - memcpy(mArray, pOther.mArray, pOther.mSize * sizeof(T)); - } - } - return *this; - } - - /** Operator to compare elements of an array. - * \return \c true if the two arrays are equal, otherwise \c false. */ - inline bool operator==(const FbxArray& pOther) const - { - if( this == &pOther ) return true; - if( mSize != pOther.mSize ) return false; - return memcmp(mArray, pOther.mArray, sizeof(T) * mSize) == 0; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline int GetCount() const { return mSize; } - -private: - inline T* Allocate(const int pCapacity) - { - return (T*)FbxRealloc(mArray, FbxAllocSize(pCapacity, sizeof(T))); - } - - int mSize; - int mCapacity; - T* mArray; - -#if defined(FBXSDK_COMPILER_MSC) - //Previously class FbxArray is for pointers. Somehow, it's used to store other types. Here's a compile-time checking for known incompatible classes. - //If it happens you find new incompatible ones, declare them with macro FBXSDK_INCOMPATIBLE_WITH_ARRAY. Also see file fbxstring.h. - FBX_ASSERT_STATIC(FBXSDK_IS_SIMPLE_TYPE(T) || __is_enum(T) || (__has_trivial_constructor(T)&&__has_trivial_destructor(T)) || !FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T)); -#endif - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Call FbxFree on each element of the array, and then clear it. -template inline void FbxArrayFree(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxFree(pArray[i]); - } - pArray.Clear(); -} - -//! Call FbxDelete on each element of the array, and then clear it. -template inline void FbxArrayDelete(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxDelete(pArray[i]); - } - pArray.Clear(); -} - -//! Call Destroy on each element of the array, and then clear it. -template inline void FbxArrayDestroy(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - (pArray[i])->Destroy(); - } - pArray.Clear(); -} - -//! Make sure to break build if someone try to make FbxArray>, which is not supported. -template FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(FbxArray); - -#include - -#endif /* _FBXSDK_CORE_BASE_ARRAY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxbitset.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxbitset.h deleted file mode 100644 index 798b1bb..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxbitset.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbitset.h -#ifndef _FBXSDK_CORE_BASE_BITSET_H_ -#define _FBXSDK_CORE_BASE_BITSET_H_ - -#include - -#include - -/** An automatic growing array of bit. - * - * The bit array will automatically grow when specifying bit indexes that are greater - * than the array size when calling SetBit or UnsetBit. Indexes can vary from 0 to - * FBXSDK_UINT_MAX-1. When an invalid index is returned from any functions, FBXSDK_UINT_MAX - * is returned. The bit array is not thread safe. - */ -class FBXSDK_DLL FbxBitSet -{ -public: - /** Constructor. - * \param pInitialSize Initial bit array size in bit count (not in byte count!). - */ - FbxBitSet(const FbxUInt pInitialSize=0); - - //! Destructor. - virtual ~FbxBitSet(); - - /** Set the bit at the specified bit index to true regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void SetBit(const FbxUInt pBitIndex); - - /** Set all the bits to the specified value regardless of their current value. - * \param pValue The boolean value to set to all bits. - */ - void SetAllBits(const bool pValue); - - /** Set the bit at the specified bit index to false regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void UnsetBit(const FbxUInt pBitIndex); - - /** Get the bit boolean value at the specified bit index. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return True if the bit is set, false otherwise. - */ - bool GetBit(const FbxUInt pBitIndex) const; - - /** Get the bit index of the first bit that is currently set. - * \return The bit index of the first set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetFirstSetBitIndex() const; - - /** Get the bit index of the last bit that is currently set. - * \return The bit index of the last set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetLastSetBitIndex() const; - - /** Get the bit index of the next set bit after the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the next set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetNextSetBitIndex(const FbxUInt pBitIndex) const; - - /** Get the bit index of the previous set bit before the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the previous set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetPreviousSetBitIndex(const FbxUInt pBitIndex) const; - -private: - void Grow(const FbxUInt pNewSize); - - void* mData; - FbxUInt mSize; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_BITSET_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcharptrset.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcharptrset.h deleted file mode 100644 index 6c6d140..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcharptrset.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharptrset.h -#ifndef _FBXSDK_CORE_BASE_CHARPTRSET_H_ -#define _FBXSDK_CORE_BASE_CHARPTRSET_H_ - -#include - -#include - -/** This class contains the data structure support for char pointer set. - */ -class FBXSDK_DLL FbxCharPtrSet -{ -public: - /** Class constructor - * \param pItemPerBlock Number of item per block. Default is 20. */ - FbxCharPtrSet(int pItemPerBlock=20); - - //! Class destructor - ~FbxCharPtrSet(); - - /** Add a new item. - * \param pReference char pointer reference to the item. - * \param pItem FbxHandle to the item. */ - void Add(const char* pReference, FbxHandle pItem); - - /** Removes an item. - * \param pReference char reference to the item. - * \return true if successful. */ - bool Remove(const char* pReference); - - /** Get an item's reference. - * \param pReference char reference to the item. - * \param PIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle Get(const char* pReference, int* PIndex=NULL); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle& operator[](int pIndex); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \param pReference char reference to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle GetFromIndex(int pIndex, const char** pReference=NULL); - - /** Removes an item by index. - * \param pIndex index to the item. */ - void RemoveFromIndex(int pIndex); - - /** Get the number of item in the array. - * \return the number of element in the set. */ - inline int GetCount() const { return mCharPtrSetCount; } - - //! Sorts the array. - void Sort(); - - //! Clears the array. - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct CharPtrSet; - - inline void SetCaseSensitive(bool pIsCaseSensitive){ mIsCaseSensitive = pIsCaseSensitive; } - -private: - CharPtrSet* FindEqual(const char* pReference) const; - - CharPtrSet* mCharPtrSetArray; - int mCharPtrSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; - bool mIsCaseSensitive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CHARPTRSET_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h deleted file mode 100644 index 7eb99e1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainerallocators.h -#ifndef _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ -#define _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ - -#include - -#include - -/** An allocator class for use as a template parameter to one of the - * container class (FbxMap, FbxSet, FbxDynamicArray...) must implement these. - */ -class FBXSDK_DLL FbxBaseAllocator -{ -public: - /** The class constructor. - * \param pRecordSize the size of one record held by the container. - * \remarks The parameter pRecordSize is not necessarily the same - * size as of the value type, since the - * container may wrap the value into a private class. - */ - FbxBaseAllocator(const size_t pRecordSize) : - mRecordSize(pRecordSize) - { - } - - /** This tells the allocator that we are about to call AllocateRecords - * one or many times to allocate pRecordCount records. - * \param pRecordCount - * \remarks This gives the allocator a chance to do whatever it deems necessary - * to optimize subsequent allocations, for example, by preallocating a - * sufficiently large pool of memory. - */ - void Reserve(const size_t /*pRecordCount*/) - { - // By default, ignore all preallocating requests. - } - - /** Returns a pointer to a uninitialized continuous block of memory - * able to hold pRecordCount * pRecordSize bytes. - * \param pRecordCount - * \remarks pRecordSize was defined in the Constructor description, above. - */ - void* AllocateRecords(const size_t pRecordCount=1) - { - return FbxMalloc(FbxAllocSize(pRecordCount, mRecordSize)); - } - - /** Frees a block of memory returned by AllocateRecords. - * \param pRecord - */ - void FreeMemory(void* pRecord) - { - FbxFree(pRecord); - } - - /** \return the size of each record allocated. - */ - size_t GetRecordSize() const - { - return mRecordSize; - } - -private: - size_t mRecordSize; -}; - -/** This allocator only frees the allocated memory when it is deleted. - * This is a good allocator for building dictionaries, where we only - * add things to a container, but never remove them. - */ -class FbxHungryAllocator -{ -public: - FbxHungryAllocator(size_t pRecordSize) : - mRecordSize(pRecordSize), - mRecordPoolSize(0), - mData(NULL) - { - } - - FbxHungryAllocator(const FbxHungryAllocator& pOther) : - mRecordSize(pOther.mRecordSize), - mRecordPoolSize(pOther.mRecordPoolSize), - mData(NULL) - { - } - - ~FbxHungryAllocator() - { - MemoryBlock* lCurrent = mData; - MemoryBlock* lNext = lCurrent ? lCurrent->mNextBlock : 0; - while (lCurrent) - { - FbxDelete(lCurrent); - lCurrent = lNext; - lNext = lCurrent ? lCurrent->mNextBlock : 0; - } - } - - void Reserve(const size_t pRecordCount) - { - MemoryBlock* lMem = FbxNew< MemoryBlock >(pRecordCount* mRecordSize); - lMem->mNextBlock = mData; - mData = lMem; - mRecordPoolSize += pRecordCount; - } - - void* AllocateRecords(const size_t pRecordCount = 1) - { - MemoryBlock* lBlock = mData; - void* lRecord = NULL; - - while( (lBlock != NULL) && ((lRecord = lBlock->GetChunk(pRecordCount * mRecordSize)) == NULL) ) - { - lBlock = lBlock->mNextBlock; - } - - if( lRecord == NULL ) - { - size_t lNumRecordToAllocate = mRecordPoolSize / 8 == 0 ? 2 : mRecordPoolSize / 8; - if( lNumRecordToAllocate < pRecordCount ) - { - lNumRecordToAllocate = pRecordCount; - } - Reserve(lNumRecordToAllocate); - lRecord = AllocateRecords(pRecordCount); - } - return lRecord; - } - - void FreeMemory(void* /*pRecord*/) - { - // "Hungry": release memory only when the allocator is destroyed. - } - - size_t GetRecordSize() const - { - return mRecordSize; - } - - FbxHungryAllocator& operator=(const FbxHungryAllocator& pOther) - { - if( this != &pOther ) - { - // The next call to AllocateRecords() may skip over currently reserved - // records if the size changes drastically, but otherwise GetChunk() - // is size-oblivious. - if( mRecordSize < pOther.mRecordSize ) - { - mRecordPoolSize = 0; - } - - mRecordSize = pOther.mRecordSize; - } - return(*this); - } - -private: - class MemoryBlock - { - public: - MemoryBlock(size_t pSize) : - mNextBlock(NULL), - mData(NULL), - mFreeData(NULL), - mEnd(NULL) - { - mData = FbxMalloc(pSize); - mFreeData = mData; - mEnd = reinterpret_cast(mData) + pSize; - } - - ~MemoryBlock() - { - FbxFree(mData); - } - - void* GetChunk(const size_t pSize) - { - if( reinterpret_cast(mFreeData) + pSize < mEnd ) - { - void* lChunk = mFreeData; - mFreeData = reinterpret_cast(mFreeData) + pSize; - return lChunk; - } - return NULL; - } - - MemoryBlock* mNextBlock; - void* mData; - void* mFreeData; - void* mEnd; - }; - - size_t mRecordSize; - size_t mRecordPoolSize; - MemoryBlock* mData; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h deleted file mode 100644 index edaa45f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdynamicarray.h -#ifndef _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ -#define _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ - -#include - -#include - -#include - -/** Template class for dynamic array holding objects. - * \nosubgrouping - * \see FbxStaticArray - */ -template class FbxDynamicArray -{ -public: - //! Default constructor. - FbxDynamicArray() : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - } - - /** Constructor. - * \param pInitialSize initial capacity of this array */ - FbxDynamicArray(const size_t pInitialSize) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pInitialSize); - } - - /** Copy constructor. - * \remarks The copy constructor of \c Type will be - * invoked in order to copy the value of elements to the - * new array. - */ - FbxDynamicArray(const FbxDynamicArray& pArray) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - } - - //! Destructor. - ~FbxDynamicArray() - { - for( size_t i = 0; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mAllocator.FreeMemory(mArray); - } - - //! Gets the current capacity of the array. - size_t Capacity() const - { - return mCapacity; - } - - //! Gets the size of the array. - size_t Size() const - { - return mSize; - } - - /** Assures that sufficient memory is allocated to hold n objects in the array, and increases the capacity if necessary. - * \param pCount Number of objects to reserve */ - void Reserve(const size_t pCount) - { - if( pCount > mCapacity ) - { - //We don't use mAllocator.PreAllocate, because we want our array to be continuous in memory. - Type* lNewArray = (Type*)mAllocator.AllocateRecords(pCount); - MoveArray(lNewArray, mArray, mSize); - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mCapacity = pCount; - } - } - - /** Appends n objects at the end of the array. - * \param pItem object to append - * \param pNCopies number of copies to append */ - void PushBack(const Type& pItem, const size_t pNCopies = 1) - { - if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - Reserve(lNewSize); - } - FBX_ASSERT(mSize + pNCopies <= mCapacity); - Fill(mArray + mSize, pItem, pNCopies); - mSize += pNCopies; - } - - /** Inserts n objects at the specified position. - * \param pIndex position index - * \param pItem object to insert - * \param pNCopies number of copies to append */ - void Insert(const size_t pIndex, const Type& pItem, const size_t pNCopies=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - Type lValue = pItem; // in case pItem is in array - if( pNCopies == 0 ) - { - } - else if( pIndex >= mSize ) - { - PushBack(pItem, pNCopies); - } - else if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //not enough room, grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - - Type* lNewArray = (Type*)mAllocator.AllocateRecords(lNewSize); - MoveArray(lNewArray, mArray, pIndex); // copy prefix - Fill(lNewArray + pIndex, pItem, pNCopies); // copy values - MoveArray(lNewArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); // copy suffix - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mSize += pNCopies; - mCapacity = lNewSize; - } - else - { - // copy suffix backwards - MoveArrayBackwards(mArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); - Fill(mArray + pIndex, pItem, pNCopies); // copy values - mSize += pNCopies; - } - } - - /** Removes n objects at the end. - * \param pNElements number of objects to remove */ - void PopBack(size_t pNElements=1) - { - FBX_ASSERT(pNElements <= mSize); - for( size_t i = mSize - pNElements; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mSize -= pNElements; - } - - /** Removes n objects at the specified position. - * \param pIndex position index - * \param pNElements number of objects to remove */ - void Remove(const size_t pIndex, size_t pNElements=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - FBX_ASSERT(pIndex + pNElements <= mSize); - if( pIndex + pNElements >= mSize ) - { - PopBack(pNElements); - } - else - { - for( size_t i = pIndex; i < pIndex + pNElements; ++i ) - { - mArray[i].~Type(); - } - MoveOverlappingArray(&mArray[pIndex], &mArray[pIndex + pNElements], mSize - pIndex - pNElements); - mSize -= pNElements; - } - } - - /** Gets nth object in the array. - * \param pIndex position index */ - Type& operator[](const size_t pIndex) - { - return mArray[pIndex]; - } - - /** Gets nth object in the array. - * \param pIndex position index */ - const Type& operator[](const size_t pIndex) const - { - return mArray[pIndex]; - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - Type& First() - { - return operator[](0); - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - const Type& First() const - { - return operator[](0); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - Type& Last() - { - return operator[](mSize-1); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - const Type& Last() const - { - return operator[](mSize-1); - } - - /** Find first matching element, from first to last. - * \param pItem The item to try to find in the array. - * \param pStartIndex The index to start searching from. - * \return Index of the first matching item, otherwise returns -1 (equivalent of SIZE_MAX for size_t). */ - size_t Find(const Type& pItem, const size_t pStartIndex=0) const - { - for( size_t i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pItem ) return i; - } - return -1; - } - - /** Assignment operator. - * \remarks The copy constructor of \c Type will be invoked in order to copy the value of elements to the new array. */ - FbxDynamicArray& operator=(const FbxDynamicArray& pArray) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - return *this; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - static void CopyArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - } - - static void MoveArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - - for( int i = 0; i < int(pCount); i++ ) - { - pSrc[i].~Type(); - } - } - - static void MoveOverlappingArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - pSrc[i].~Type(); - } - } - - static void MoveArrayBackwards(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); ++i ) - { - new(&(pDest[pCount-1-i])) Type(pSrc[pCount-1-i]); //in-place new won't allocate memory, so it is safe - pSrc[pCount-1-i].~Type(); - } - } - - static void Fill(Type* pDest, const Type& pItem, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pItem); //in-place new won't allocate memory, so it is safe - } - } - - Type* mArray; - size_t mCapacity; - size_t mSize; - Allocator mAllocator; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfile.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfile.h deleted file mode 100644 index 6a80834..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfile.h +++ /dev/null @@ -1,257 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfile.h -#ifndef _FBXSDK_CORE_BASE_FILE_H_ -#define _FBXSDK_CORE_BASE_FILE_H_ - -#include - -#include - -#include - -class FbxStream; - -/** - Class for interfacing with files, providing a similar interface for files independant of the OS or filesystem. -*/ -class FBXSDK_DLL FbxFile -{ -public: - enum EMode {eNone, eReadOnly, eReadWrite, eCreateWriteOnly, eCreateReadWrite, eCreateAppend}; - enum ESeekPos {eBegin, eCurrent, eEnd}; - - FbxFile(); - virtual ~FbxFile(); - - /** Opens a file on disk using the specified read/write mode. - * \param pFileName_UTF8 Filename in UTF8 (compatible with ASCII) - * \param pMode Mode in which to open the file, e.g. eReadOnly, eCreateReadWrite, etc. - * \param pBinary Whether the file is to be opened in binary or text mode. - * \return True if opening is successful. - */ - virtual bool Open(const char* pFileName_UTF8, const EMode pMode=eCreateReadWrite, const bool pBinary=true); - - /** Opens a file from a data stream using the specified read/write mode. - * \param pStream Stream instance with which the file will be read/written - * \param pStreamData User-defined data to pass as a parameter to the stream's Open() method. - * \param pMode Deprecated/Unused. - * \return True if opening is successful. - */ - virtual bool Open(FbxStream* pStream, void* pStreamData, const char* pMode); - - /** Closes a file, freeing its handle. - * \return True if closing is successful. - */ - virtual bool Close(); - - /** Seek to a specific position in the file, starting from either beginning, current position or end - * \param pOffset Offset to seek to (advance the file position cursor) starting from pSeekPos - * \param pSeekPos Starting position from which to seek to. Beginning, current position or end. - */ - virtual void Seek(const FbxInt64 pOffset, const ESeekPos pSeekPos=eBegin); - - /** Returns the position at which the file cursor currently is. For example, will be ==0 for beginning and ==FileSize for end. - * \return The position at which the file cursor currently is. - */ - virtual FbxInt64 Tell() const; - - /** Read a part of the file into a buffer - * \param pDstBuf Pre-allocated buffer in which to read data - * \param pSize Size of the data chunk to be read in bytes - * \return Number of bytes read. - */ - virtual size_t Read(void* pDstBuf, const size_t pSize); - - /** Read a part of the file as a string into a buffer - * \param pDstBuf Pre-allocated buffer in which to read the string - * \param pDstSize Size of the data chunk to be read in characters - * \param pStopAtFirstWhiteSpace If true, will stop reading at first white space, otherwise it will stop at the first line feed (\n) - * \return Pointer on the data read. Equivalent to parameter pDstBuf - */ - virtual char* ReadString(char* pDstBuf, const size_t pDstSize, bool pStopAtFirstWhiteSpace=false); - - /** Write a buffer to an opened file - * \param pSrcBuf Pre-allocated buffer from which to write data - * \param pSize Size of the data chunk to be written in bytes - * \return Number of bytes written. - */ - virtual size_t Write(const void* pSrcBuf, const size_t pSize); - - /** Write a formatted string to an opened file - * \param pFormat Pre-allocated format buffer from which to write data - * \param ... Variable number of arguments describing the values in the previous parameter. - * \return True if data was successfully written - */ - virtual bool WriteFormat(const char* pFormat, ...); - - /** Modify the size of a file. Null characters ('\0') are appended if the file is extended. - * If the file is truncated, all data from the end of the shortened file to the original length of the file is lost. - * Please note that this function considers the current file cursor as the beginning of the file. - * It is therefore required to use Seek(0) prior to calling it if we want the size specified by the - * pSize parameter to be absolute. - * \param pSize New desired file size - * \return True if file was successfully truncated - */ - virtual bool Truncate(const FbxInt64 pSize); - - /** Checks whether the current file cursor position is at the end of file. - * \return True if the cursor is at the end of file, false otherwise. - */ - virtual bool EndOfFile() const; - - /** Gets the size of the currently opened file. - * \return File size - */ - virtual FbxInt64 GetSize(); - - /** Unused function in this default implementation. Must be implemented by memory files. - * \param pMemPtr Unused - * \param pSize Unused - */ - virtual void GetMemoryFileInfo(void** pMemPtr, size_t pSize); - - /** Checks whether the file is currently opened. - * \return True if file is opened, false otherwise - */ - bool IsOpen() const; - - /** Checks whether the file is currently opened with a user-provided streaming interface instead of just the file name - * \return True if file has been opened with a stream interface, false otherwise - */ - bool IsStream() const; - - /** Returns the full file path name, as provided when opening it. - * \return File full path - */ - const char* GetFilePathName() const; - - /** Returns the mode with which the file was opened, when calling the Open() method. - * \return Mode with which the file was opened - */ - EMode GetFileMode() const; - - /** Returns last encountered error when performing any operation on the file. - * \return Last error code - */ - int GetLastError(); - - /** Resets the current error code and the end of file indicator of the opened file - */ - void ClearError(); - -protected: - FILE* mFilePtr; - FbxStream* mStreamPtr; - bool mIsOpen; - bool mIsStream; - EMode mMode; - FbxString mFileName; -}; - -class FBXSDK_DLL FbxFileUtils -{ -public: - /** Delete a file from disk. - * \param pFileName_UTF8 The file to be deleted. - * \return True if delete is successful. - */ - static bool Delete(const char* pFileName_UTF8); - - /** Rename a file on disk. - * \param pFileName_UTF8 The file to be renamed. - * \param pNewName_UTF8 The new file name upon rename. - * \return True if rename is successful. - */ - static bool Rename(const char* pFileName_UTF8, const char* pNewName_UTF8); - - /** Copy one file's content to another file (if the destination file not exist, it will be created). - * \param pDestination_UTF8 The destination file path - * \param pSource_UTF8 The source file path - * \return Return true if copy is successfully. - */ - static bool Copy(const char* pDestination_UTF8, const char* pSource_UTF8); - - //! Get given file's size. - static FbxInt64 Size(const char* pFilePath_UTF8); - - /** Find if the specified file exist. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file exist. - */ - static bool Exist(const char* pFilePath_UTF8); - - /** Find if the specified file is in read-only mode. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file is in read-only mode. - */ - static bool IsReadOnly(const char* pFilePath_UTF8); - - // We return a KLong that in fact is a cast of a time_t. - //! Get given file's last date. - static FbxLong GetLastDate(const char* pPath_UTF8); - - //! Set the given file's last date as the given date. - static bool SetLastDate(const char* pPath_UTF8, FbxLong pTime); - - /** Get some content of a file. - * \param pStr The content get from file. - * \param pSize The size of content. - * \param pStream The opened stream of file. - */ - static char* FGets(char* pStr, int pSize, FILE* pStream); -}; - -template inline const T FbxSwab(const T x) -{ - switch( sizeof(x) ) - { - case 2: - { - FbxUInt8 t[2]; - t[0] = ((FbxUInt8*)&x)[1]; - t[1] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 4: - { - FbxUInt8 t[4]; - t[0] = ((FbxUInt8*)&x)[3]; - t[1] = ((FbxUInt8*)&x)[2]; - t[2] = ((FbxUInt8*)&x)[1]; - t[3] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 8: - { - FbxUInt8 t[8]; - t[0] = ((FbxUInt8*)&x)[7]; - t[1] = ((FbxUInt8*)&x)[6]; - t[2] = ((FbxUInt8*)&x)[5]; - t[3] = ((FbxUInt8*)&x)[4]; - t[4] = ((FbxUInt8*)&x)[3]; - t[5] = ((FbxUInt8*)&x)[2]; - t[6] = ((FbxUInt8*)&x)[1]; - t[7] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - default: - return x; - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_FILE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfolder.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfolder.h deleted file mode 100644 index b9af90f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxfolder.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfolder.h -#ifndef _FBXSDK_CORE_BASE_FOLDER_H_ -#define _FBXSDK_CORE_BASE_FOLDER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -#include - -/** Class for iterating into file system folders and the items contained. */ -class FBXSDK_DLL FbxFolder -{ -public: - //! The different entry type that can be found in folders. - enum EEntryType - { - eRegularEntry, //!< Regular entry, such as file. - eFolderEntry //!< Folder entry that potentially contain more files. - }; - - /** Open the specified folder for browsing its content. - * \param pFolderPath_UTF8 The folder path to open. - * \return True if the folder path was successfully open, false otherwise. */ - bool Open(const char* pFolderPath_UTF8); - - /** Get the next item in the folder. - * \return True if another item was found after the current one. */ - bool Next(); - - /** Get the type of the current entry in the folder. - * \return The entry type. */ - EEntryType GetEntryType() const; - - /** Retrieve the name of the current entry in the folder. - * \return The name of the current entry. */ - FbxString GetEntryName() const; - - /** Retrieve the extension name of the current entry. - * \return The extension name of the current entry. */ - char* GetEntryExtension() const; - - /** Close the folder when done browsing its content. */ - void Close(); - - /** Find out if the folder was successfully opened the last time Open was called. - * \return True if the folder is currently open. */ - bool IsOpen() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFolder(); - ~FbxFolder(); - -private: - struct FolderImpl; - FolderImpl* mImpl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_BASE_FOLDER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxhashmap.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxhashmap.h deleted file mode 100644 index 1cefa6f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxhashmap.h +++ /dev/null @@ -1,411 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhashmap.h -#ifndef _FBXSDK_CORE_BASE_HASHMAP_H_ -#define _FBXSDK_CORE_BASE_HASHMAP_H_ - -#include - -#include -#include - -#include - -template class FbxNoOpDestruct { public: static inline void DoIt(T&) {} }; -template class FbxPtrDestruct { public: static inline void DoIt(T& v) { FbxDelete(v); v = NULL; } }; - -//True if equal, false otherwise -template class FbxDefaultComparator{ public: static inline bool CompareIt( const T& t1, const T& t2 ) { return t1 == t2; } }; - -/** \brief This object represents a standard hash map. You must provide the typename of KEY and VALUE as well - as the typename of the class that contains the hash function to use to hash values. The hash class must - overload operator() and be built like this. - \code - class SimpleHash - { - public: - inline unsigned int operator() ( const int pKey ) const - { - return pKey; - } - }; - \endcode - * \nosubgrouping - */ -template< typename KEY, typename VALUE, typename HASH, class Destruct = FbxNoOpDestruct, class Comparator = FbxDefaultComparator > -class FbxHashMap -{ -public: - typedef KEY KeyType; - typedef VALUE ValueType; - typedef HASH HashFunctorType; - -private: - - class ListItem - { - public: - ListItem* mNext; - ValueType mValue; - KeyType mKey; - - ListItem() - : - mNext(NULL) - { - } - - ~ListItem() - { - Destruct::DoIt(mValue); - } - }; - -public: - /** - Iterate through every element in a hash map. - */ - class Iterator - { - public: - - typedef ListItem ListItemType; - typedef FbxPair< KeyType, ValueType > KeyValuePair; - - /** - Copy constructor - */ - Iterator( const Iterator& pOther ) - : - mMap( pOther.mMap ), - mBucketIndex( pOther.mBucketIndex ), - mCurrentItem( pOther.mCurrentItem ) - { - - } - - /** - Destructor - */ - ~Iterator(){}; - - /** - Used to dereference an iterator and give it a behavior more similar to a pointer. - \return The KeyValuePair currently referenced by the iterator - */ - KeyValuePair operator*() const - { - KeyValuePair lItem; - - if( mCurrentItem ) - { - lItem.mFirst = mCurrentItem->mKey; - lItem.mSecond = mCurrentItem->mValue; - return lItem; - } - - FBX_ASSERT_NOW("Accessing out of bounds iterator"); - - return lItem; - } - - /** - Advances the iterator to the next keyvaluepair in the hashmap. It does not wrap around so - advancing after reaching the last element will not point back to the first one. - */ - void Next() - { - if( !mCurrentItem ) - return; - - if( mCurrentItem->mNext ) - { - mCurrentItem = mCurrentItem->mNext; - return; - } - else - { - mBucketIndex++; - for( ; mBucketIndex < mMap->mBuckets.GetCount(); ++mBucketIndex ) - { - if( mMap->mBuckets[ mBucketIndex ] ) - { - mCurrentItem = mMap->mBuckets[ mBucketIndex ]; - return; - } - } - - if( mBucketIndex >= mMap->mBuckets.GetCount() ) - { - *this = mMap->End(); - return; - } - } - } - - /** - Check equivalence between two iterators. There are 3 conditions for equivalence between 2 iterators: - 1) Item being referenced by the iterator must be equivalent - 2) They must point at the same index - 3) They must point on the same map - \return true if both iterators are equal, false otherwise - */ - bool operator==( const Iterator& pOther ) const - { - return mCurrentItem == pOther.mCurrentItem && - mBucketIndex == pOther.mBucketIndex && - mMap == pOther.mMap; - } - - /** - Check inequivalence between 2 iterators. Please see operator== for more information. - \return true if both iterators are NOT equal, false if they are - */ - bool operator!=( const Iterator& pOther ) const - { - return !(*this == pOther); - } - - /** - Assign the current iterator to the one on the right hand side of the operator. After assignment they will - reference the same object, at the same index, in the same map. - \return The new iterator - */ - Iterator& operator=( const Iterator& pOther ) - { - this->mBucketIndex = pOther.mBucketIndex; - this->mMap = pOther.mMap; - this->mCurrentItem = pOther.mCurrentItem; - return *this; - } - - private: - const FbxHashMap* mMap; - - int mBucketIndex; - ListItemType* mCurrentItem; - - Iterator(const FbxHashMap* pMap, int pBucketIndex, ListItemType* pCurrentItem) - : - mMap( pMap ), - mBucketIndex(pBucketIndex), - mCurrentItem(pCurrentItem) - { - - } - - friend class FbxHashMap; - }; - - /** - Construct a FbxHashMap with an user-defined maximum number of elements. - \param pBucketSize Initial maximum number of elements. - */ - FbxHashMap( int pBucketSize ) - { - mBuckets.Resize( pBucketSize ); - } - - /** - Construct a FbxHashMap with the default maximum number of elements (30) - */ - FbxHashMap() - { - mBuckets.Resize(30); - } - - /** - Clear all elements in the hash map before destroying itself - */ - ~FbxHashMap() - { - Clear(); - mBuckets.Clear(); - } - - /** - Calls operator delete on all elements of the hashmap, de-allocating all memory and destroying them - */ - void Clear() - { - for( int i = 0; i < mBuckets.GetCount(); ++i) - { - if( mBuckets[i] ) - { - ListItem* lNext = mBuckets[i]->mNext; - while( lNext ) - { - ListItem* lNextNext = lNext->mNext; - FbxDelete(lNext); - lNext = lNextNext; - } - - FbxDelete(mBuckets[i]); - mBuckets[i] = NULL; - } - } - } - - /** - Find an element in the hashmap. If no element exist with the specified key, returns an iterator pointing on the - end of the map (not an actual KeyValuePair). - \param pKey The value of the key corresponding to the element - \return An Iterator referencing that element - */ - const Iterator Find( const KeyType& pKey ) const - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - /** - Remove an element in the hashmap. - \param pKey The key value of the element to remove - \return The value of the element that was just deleted. If the element does not exist, a value created with its default constructor will be returned - */ - VALUE Remove( const KEY& pKey ) - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets.GetAt(lIndex); - ListItem* lLastItem = NULL; - - while( lItem ) - { - if( lItem->mKey == pKey ) - { - if( lLastItem ) - lLastItem->mNext = lItem->mNext; - - if( mBuckets.GetAt(lIndex) == lItem ) - mBuckets.SetAt(lIndex, lItem->mNext ); - - VALUE lValue = lItem->mValue; - FbxDelete(lItem); - - return lValue; - } - - lLastItem = lItem; - lItem = lItem->mNext; - } - - return VALUE(); - } - - /** Add or retrieve a KeyValuePair from the Hashmap. If there is already an entry in the map for an element - with key value specified in parameter, the value will be returned. Otherwise, a new entry will be created - with this key value and the default value for ValueType will be returned. It can be modified using the - assignment operator - \param pKey The key for which to retrieve/add a value. - \return Value of the element referenced by the key specified in parameter. - */ - ValueType& operator[]( const KeyType& pKey ) - { - unsigned int lIndex = 0; - Iterator lIt = InternalFind( pKey, lIndex); - if( lIt != End() ) - { - return lIt.mCurrentItem->mValue; - } - - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = FbxNew< ListItem >(); - lItem->mNext = NULL; - lItem->mKey = pKey; - - if( !mBuckets.GetAt(lIndex) ) - { - mBuckets.SetAt(lIndex, lItem); - } - else - { - lItem->mNext = mBuckets.GetAt(lIndex); - mBuckets.SetAt(lIndex, lItem); - } - - return lItem->mValue; - } - - /** Returns an iterator pointing on the first non-null element in the map - \return An iterator pointing on the first non-null element in the map. - */ - Iterator Start() const - { - for( int i = 0; i < mBuckets.GetCount(); ++i ) - { - if( mBuckets[i] ) - { - Iterator lIt( this, i, mBuckets[i] ); - return lIt; - } - } - - return End(); - } - - /** Returns an iterator pointing on the last element in the map. This is not an actual KeyValuePair but - * but an iterator pointing on a null element. - \return Iterator pointing on a null value at the end of the map - */ - Iterator End() const - { - Iterator lIt( this, 0, NULL ); - return lIt; - } - -private: - - // Avoid calculating the hashvalue twice - const Iterator InternalFind( const KeyType& pKey, unsigned int& pOutCalculatedIndex ) const - { - pOutCalculatedIndex = mHashFunctor(pKey); - unsigned int lIndex = pOutCalculatedIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - - // not implemented yet! - FbxHashMap( const FbxHashMap& pOther ) {}; - - FbxArray mBuckets; - HashFunctorType mHashFunctor; - - friend class Iterator; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_HASHMAP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h deleted file mode 100644 index e001cf7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxintrusivelist.h -#ifndef _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ -#define _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#define FBXSDK_INTRUSIVE_LIST_NODE(Class, NodeCount)\ - public: inline FbxListNode& GetListNode(int index = 0){ return this->mNode[index]; }\ - private: FbxListNode mNode[NodeCount]; - -template class FbxListNode -{ - typedef FbxListNode NodeT; - -public: - explicit FbxListNode(T* pData = 0):mNext(0),mPrev(0),mData(pData){} - ~FbxListNode(){ Disconnect(); } - - void Disconnect() - { - if ( mPrev != 0 ) - mPrev->mNext = mNext; - - if ( mNext != 0 ) - mNext->mPrev = mPrev; - - mPrev = mNext = 0; - } - - NodeT* mNext; - NodeT* mPrev; - T* mData; -}; - -//----------------------------------------------------------------- -// template arg T: Type listed -// arg NodeIndex: If an object listed has multiple list node, which -// index corresponds to the right node -template class FbxIntrusiveList -{ -public: - typedef T allocator_type; - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T* pointer; - typedef const T* const_pointer; - - typedef FbxListNode NodeT; - - // Construction / Destruction - FbxIntrusiveList():mHead(0) - { - mHead.mNext = mHead.mPrev = &mHead; - } - ~FbxIntrusiveList() - { - while(!Empty()) - Begin().Get()->Disconnect(); // LINUXNote: should be Erase(Begin()); but there's an issue with gcc 4.2 - }; - - // true if the list's size is 0. - bool Empty() const - { - return ((mHead.mNext==&mHead)&&(mHead.mPrev==&mHead)); - } - - // Back Insertion Sequence Inserts a new element at the end. - void PushBack(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = &mHead; - pNode->mPrev = mHead.mPrev; - - pNode->mPrev->mNext = pNode; - mHead.mPrev = pNode; - } - } - - void PushFront(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = mHead.mNext; - pNode->mPrev = &mHead; - - pNode->mNext->mPrev = pNode; - mHead.mNext = pNode; - } - } - - void PopFront() - { - iterator begin = Begin(); - Erase(begin); - } - - void PopBack() - { - Erase(--(End())); - } - -public: - class IntrusiveListIterator - { - public: - explicit IntrusiveListIterator(NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListIterator operator++(int) - { - IntrusiveListIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListIterator operator--(int) - { - IntrusiveListIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListIterator& operator=(const IntrusiveListIterator &other){mPtr = other.mPtr; return *this;} - - reference operator*() const { return *(mPtr->mData); } - pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListIterator& other)const{ return !(*this == other); } - - inline NodeT* Get()const { return mPtr; } - - private: - NodeT* mPtr; - }; - - class IntrusiveListConstIterator - { - public: - explicit IntrusiveListConstIterator(const NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListConstIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListConstIterator operator++(int) - { - IntrusiveListConstIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListConstIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListConstIterator operator--(int) - { - IntrusiveListConstIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListConstIterator& operator=(const IntrusiveListConstIterator &other){mPtr = other.mPtr; return *this;} - - const_reference operator*() const { return *(mPtr->mData); } - const_pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListConstIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListConstIterator& other)const{ return !(*this == other); } - - inline const NodeT* Get()const { return mPtr; } - - private: - mutable const NodeT* mPtr; - }; - - // --- Iterator definitions --- - typedef IntrusiveListIterator iterator; - typedef IntrusiveListConstIterator const_iterator; - - // iterator support - inline iterator Begin() { return iterator(mHead.mNext); } - inline const_iterator Begin() const { return const_iterator(mHead.mNext); } - inline iterator End() { return iterator(&mHead); } - inline const_iterator End() const { return const_iterator(&mHead); } - - // Because there is no real use, for the reverse iterators, - // they have not been implemented. - - reference Front(){return (*Begin());} - const_reference Front() const { return (*Begin()); } - reference Back(){ return (*(--End())); } - const_reference Back() const{ return (*(--End())); } - - iterator& Erase(iterator& it) - { - it.Get()->Disconnect(); - return (++it); - } -private: - NodeT mHead; - - // Not copyable - FbxIntrusiveList(const FbxIntrusiveList&); - FbxIntrusiveList& operator=(const FbxIntrusiveList& Right){return (*this);} -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmap.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmap.h deleted file mode 100644 index d8708fc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmap.h +++ /dev/null @@ -1,408 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmap.h -#ifndef _FBXSDK_CORE_BASE_MAP_H_ -#define _FBXSDK_CORE_BASE_MAP_H_ - -#include - -#include -#include - -#include - -class FbxObject; - -/** Default compare functor for FbxMap and FbxSet, which assumes operator < is defined. -Here is examples of different compare class implementations: -With Key = int -\code -class IntCompare -{ - inline int operator()(int pKeyA, int pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = Class -\code -class ClassCompare -{ - inline int operator()(const Class& pKeyA, const Class& pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = char* -\code -class StrCompare -{ - inline int operator()(const char* pKeyA, const char* pKeyB) const - { - return strcmp(pKeyA, pKeyB); - } -}; -\endcode -*/ -template struct FbxLessCompare -{ - inline int operator()(const Type& pLeft, const Type& pRight) const - { - return (pLeft < pRight) ? -1 : ((pRight < pLeft) ? 1 : 0); - } -}; - -/** This class implements an efficient map based on key comparison, which stores key-value pairs. -It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxMap -{ -protected: - //! This class defines the key-value pairs used by the map. - class KeyValuePair : private FbxPair - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Key KeyType; - typedef const Key ConstKeyType; - typedef Type ValueType; - typedef const Type ConstValueType; - - KeyValuePair(const Key& pFirst, const Type& pSecond) : FbxPair(pFirst, pSecond){} - ConstKeyType& GetKey() const { return this->mFirst; } - KeyType& GetKey(){ return this->mFirst; } - ConstValueType& GetValue() const { return this->mSecond; } - ValueType& GetValue(){ return this->mSecond; } - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the map. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef Key KeyType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of key-value pairs it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a key-value pair. - * \param pKey The key. - * \param pValue The value. - * \return If the key is already present in the map, returns the existing pair and false; else returns the pointer to the new key-value and true. */ - inline FbxPair Insert(const KeyType& pKey, const ValueType& pValue) - { - return mTree.Insert(KeyValuePair(pKey, pValue)); - } - - /** Delete a key-value pair. - * \param pKey The key. - * \return \c true if success, \c false if key is not found. */ - inline bool Remove(const KeyType& pKey) - { - return mTree.Remove(pKey); - } - - //! Clear the map. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the map is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the map. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the map. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if the key is not found. */ - inline const RecordType* Find(const KeyType& pKey) const - { - return mTree.Find(pKey); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if it's not found. */ - inline RecordType* Find(const KeyType& pKey) - { - return mTree.Find(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - return mTree.UpperBound(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline RecordType* UpperBound(const KeyType& pKey) - { - return mTree.UpperBound(pKey); - } - - /** Retrieve the reference of the value in the key-value pairs in map. - * \param pKey The key. - * \return The reference of the value. - * \remark If the key is not found, a new key-value pair will be inserted. */ - inline ValueType& operator[](const KeyType& pKey) - { - RecordType* lRecord = Find(pKey); - - if( !lRecord ) - { - lRecord = Insert(pKey, ValueType()).mFirst; - } - - return lRecord->GetValue(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxMap(){} - inline FbxMap(const FbxMap& pMap) : mTree(pMap.mTree){} - inline ~FbxMap(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A simple map class representing a dictionary-like data structure. -* \nosubgrouping */ -template class FbxSimpleMap -{ -public: - typedef typename FbxMap::RecordType* Iterator; - - /** Add a key-value pair as an element. - * \param pKey The new key. - * \param pValue The new value. */ - inline void Add(const Key& pKey, const Type& pValue) - { - mMap.Insert(pKey, pValue); - } - - /** Find an element with a given key. - * \param pKey The given key. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Key& pKey) const - { - return (Iterator)mMap.Find(pKey); - } - - /** Find an element with a given value. - * \param pValue The given value. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Type& pValue) const - { - Iterator lIterator = GetFirst(); - while( lIterator ) - { - if( lIterator->GetValue() == pValue ) - { - return lIterator; - } - lIterator = GetNext(lIterator); - } - return 0; - } - - /** Remove an element from the map. - * \param pIterator The given element. */ - inline void Remove(Iterator pIterator) - { - if( pIterator ) mMap.Remove(pIterator->GetKey()); - } - - /** Get the first element. - * \return The the heading element. */ - inline Iterator GetFirst() const - { - return (Iterator)mMap.Minimum(); - } - - /** Get the next element of a given element. - * \param pIterator The given element. - * \return The next element. */ - inline Iterator GetNext(Iterator pIterator) const - { - return (Iterator)pIterator ? pIterator->Successor() : 0; - } - - //! Remove all of the elements. - inline void Clear() - { - mMap.Clear(); - } - - /** Reserve the space for given number elements. - * \param pSize The given number. */ - inline void Reserve(int pSize) - { - mMap.Reserve(pSize); - } - - /** Query the count of elements in the map. - * \return The count of elements. */ - inline int GetCount() const - { - return mMap.GetSize(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSimpleMap(){} - -private: - FbxMap mMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** This class template declare a simple FbxObject map. -* \nosubgrouping */ -template class FbxObjectMap : public FbxSimpleMap -{ -public: - //! Constructor - inline FbxObjectMap(){} - - /** Get the object contained in an element. - * \param pIterator The given element. - * \return The object. - */ - inline FbxObject* Get(typename FbxSimpleMap::Iterator pIterator) - { - return pIterator ? pIterator->GetValue() : 0; - } -}; - -/** A class that maps strings to objects with a basic string comparator. -* \nosubgrouping */ -class FbxObjectStringMap : public FbxObjectMap -{ -public: - //! Constructor - inline FbxObjectStringMap(){} -}; - -//! Call FbxFree on each element of the map, and then clear it. -template inline void FbxMapFree(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxFree(i->GetValue()); - } - pMap.Clear(); -} - -//! Call FbxDelete on each element of the map, and then clear it. -template inline void FbxMapDelete(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxDelete(i->GetValue()); - } - pMap.Clear(); -} - -//! Call Destroy on each element of the map, and then clear it. -template inline void FbxMapDestroy(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - i->GetValue()->Destroy(); - } - pMap.Clear(); -} - -template class FbxSimpleMap; -template class FbxObjectMap; - -#include - -#endif /* _FBXSDK_CORE_BASE_MAP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmemorypool.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmemorypool.h deleted file mode 100644 index 4665683..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmemorypool.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmemorypool.h -#ifndef _FBXSDK_CORE_BASE_MEMORY_H_ -#define _FBXSDK_CORE_BASE_MEMORY_H_ - -#include - -#include - -#include - -/** \brief Class to create a simple fixed-size-blocks memory pool to allocate memory dynamically. */ -class FBXSDK_DLL FbxMemoryPool -{ -public: - /** Memory pool constructor. - * \param pBlockSize The size of one memory block. - * \param pBlockCount The count of block that should be pre-allocated. - * \param pResizable Whether memory pool can grow if no block are availalbe upon calling Allocate. - * \param pConcurrent Whether the pool supports concurrent allocation and release operations. - * \remark All memory blocks must be released before the memory pool is destroyed, otherwise a memory leak will occur. */ - FbxMemoryPool(size_t pBlockSize, FbxInt64 pBlockCount=0, bool pResizable=true, bool pConcurrent=true); - - /** Memory pool destructor. Upon destruction, all memory blocks of the pool will be de-allocated. */ - ~FbxMemoryPool(); - - /** Free memory of all memory blocks from this memory pool, also effectively resetting the block count to zero. - * \remark The block size and alignment/resize/concurrent support will remain unchanged. */ - void Reset(); - - /** Allocate or lock a memory block for usage. - * \return An memory block pointer that can be NULL if the memory pool cannot grow in size and no blocks are available. */ - void* Allocate(); - - /** Dispose or unlock a memory block. - * \param pMemBlock A pointer to the memory block to release. This will not free the block's memory, instead simply putting it back in the available stack. */ - void Release(void* pMemBlock); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void* Pop(); - - FbxInt64 mMaxBlockCount; - FbxAtomic mFreeBlockCount; - void* mFreeBlocksStack; - size_t mBlockSize; - bool mResizable; - bool mSupportConcurrentAccess; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MEMORY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmultimap.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmultimap.h deleted file mode 100644 index a5901ed..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxmultimap.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmultimap.h -#ifndef _FBXSDK_CORE_BASE_MULTIMAP_H_ -#define _FBXSDK_CORE_BASE_MULTIMAP_H_ - -#include - -#include - -/** Class to manipulate a map that can contain multiple times the same key. -* \nosubgrouping */ -class FBXSDK_DLL FbxMultiMap -{ -public: - struct Pair - { - FbxHandle mKey; - FbxHandle mItem; - }; - - /** If can't find the matching item,append a item at the end of the array. - * If find the matching item ,insert the new item before the matching item. - * \param pKey The value of Key in new item, also is the character for matching. - * \param pItem The value of Item in new item. - * \return If add successfully return true,otherwise return false. - */ - bool Add(FbxHandle pKey, FbxHandle pItem); - - /** Remove the first matching item, whose reference is the same as given. - * \param pKey The given reference. - * \return If remove successfully return true,otherwise return false. - */ - bool Remove(FbxHandle pKey); - - /** Remove all the matching item, whose item is the same as given. - * \param pItem The given item. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveItem(FbxHandle pItem); - - /** Set first matching item with the given parameter. - * \param pKey The character for matching. - * \param pItem The value of Item that the matching item will be set. - * \return If set successfully return true,otherwise return false. - */ - bool SetItem(FbxHandle pKey, FbxHandle pItem); - - /** Get first matching item with the given parameter. - * \param pKey The character for matching. - * \param pIndex The pointer to the index of the matching item. - * \return The value of Item in the matching item. - * \remarks If there are multiple elements that match the character, the index returned is unspecified. - */ - FbxHandle Get(FbxHandle pKey, int* pIndex=NULL); - - //! Delete the array. - void Clear(); - - /** Get the item of the given index. - * \param pIndex The index for matching. - * \param pKey The pointer to the Key of the matching item. - * \return The value of Item in the matching item. - */ - FbxHandle GetFromIndex(int pIndex, FbxHandle* pKey=NULL); - - /** Remove the item of the given index - * \param pIndex The given index. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveFromIndex(int pIndex); - - /** Get number of items in the array. - * \return The number of items in the array. */ - int GetCount() const { return mSetCount; } - - /** Swap the value of Key and Item in every item of array, and sort the new array with the value of Key. */ - void Swap(); - - /** Sort the array according the value of Key in each item. */ - void Sort(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiMap(int pItemPerBlock=20); - FbxMultiMap(const FbxMultiMap& pOther); - ~FbxMultiMap(); - - FbxMultiMap& operator=(const FbxMultiMap&); - -private: - Pair* FindEqual(FbxHandle pKey) const; - - Pair* mSetArray; - int mSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MULTIMAP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxpair.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxpair.h deleted file mode 100644 index b1cebfb..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxpair.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpair.h -#ifndef _FBXSDK_CORE_BASE_PAIR_H_ -#define _FBXSDK_CORE_BASE_PAIR_H_ - -#include - -#include - -/** This class template holds a pair of objects. -* \nosubgrouping */ -template class FbxPair -{ -public: - //! Constructor. - inline FbxPair() : mFirst(), mSecond() {} - - /** Constructor. - * \param pFirst The first object. - * \param pSecond The second object. */ - inline FbxPair(const First& pFirst, const Second& pSecond) : mFirst(pFirst), mSecond(pSecond) {} - - /** Assignment operator. - * \param pOther The pair to be copied. */ - inline FbxPair& operator=(const FbxPair& pOther) - { - mFirst = pOther.mFirst; - mSecond = pOther.mSecond; - return *this; - } - - /** Comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator==(const FbxPair& pOther) - { - return mFirst == pOther.mFirst && mSecond == pOther.mSecond; - } - - /** Inverse comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator!=(const FbxPair& pOther) - { - return !operator==(pOther); - } - - First mFirst; //!< The first object in the pair. - Second mSecond; //!< The second object in the pair. -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_PAIR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxredblacktree.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxredblacktree.h deleted file mode 100644 index 5d7d4ee..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxredblacktree.h +++ /dev/null @@ -1,1398 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxredblacktree.h -#ifndef _FBXSDK_CORE_BASE_REDBLACKTREE_H_ -#define _FBXSDK_CORE_BASE_REDBLACKTREE_H_ - -#include - -#include -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxRedBlackConstIterator; - -template class FbxRedBlackIterator -{ -public: - FbxRedBlackIterator() : mRecord(0) {} - FbxRedBlackIterator(RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackIterator& operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackIterator operator++(int) - { - FbxRedBlackIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackIterator& operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackIterator operator--(int) - { - FbxRedBlackIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - RecordType* mRecord; - - friend class FbxRedBlackConstIterator; -}; - -template class FbxRedBlackConstIterator -{ -public: - FbxRedBlackConstIterator() : mRecord(0) {} - FbxRedBlackConstIterator(const RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackConstIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackConstIterator & operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackConstIterator operator++(int) - { - FbxRedBlackConstIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackConstIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackConstIterator & operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackConstIterator operator--(int) - { - FbxRedBlackConstIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackConstIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - const RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackConstIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackConstIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - const RecordType* mRecord; - - friend class FbxRedBlackIterator; -}; - -//! Implements an efficient ordered data storage. -template class FbxRedBlackTree -{ -public: - typedef Type DataType; - typedef typename Type::KeyType KeyType; - typedef typename Type::ConstKeyType ConstKeyType; - typedef typename Type::ValueType ValueType; - typedef typename Type::ConstValueType ConstValueType; - typedef Allocator AllocatorType; - - /** - This class represents a node in the tree. It contains the key, - the value, and internal tree management data. - */ - class RecordType - { - public: - inline ConstKeyType& GetKey() const { return mData.GetKey(); } - inline ConstValueType& GetValue() const { return mData.GetValue(); } - inline ValueType& GetValue() { return mData.GetValue(); } - - inline const RecordType* Minimum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline RecordType* Minimum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline const RecordType* Maximum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline RecordType* Maximum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline const RecordType* Predecessor() const - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mLefttChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Predecessor() - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mLeftChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline const RecordType* Successor() const - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Successor() - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline int GetBlackDepth() { return mBlackDepth; } - - private: - enum ETreeType {eRed, eBlack}; - - inline RecordType(const DataType& pData) - : mData(pData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(eRed) - , mBlackDepth(0) - { - } - - inline RecordType(const RecordType& pRecordType) - : mData(pRecordType.mData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(pRecordType.mColor) - , mBlackDepth(pRecordType.mBlackDepth) - { - } - - DataType mData; - - friend class FbxRedBlackTree; - - RecordType* mParent; - RecordType* mLeftChild; - RecordType* mRightChild; - unsigned int mColor:2; - unsigned int mBlackDepth:30; - }; - -public: - typedef FbxRedBlackConstIterator ConstIteratorType; - typedef FbxRedBlackIterator IteratorType; - - inline FbxRedBlackTree() : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) {} - inline FbxRedBlackTree(const FbxRedBlackTree& pTree) : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) { operator=(pTree); } - inline ~FbxRedBlackTree() { Clear(); } - - /** Deep copy pTree in this. - * \param pTree The tree to copy in this tree. */ - inline FbxRedBlackTree& operator=(const FbxRedBlackTree& pTree) - { - if( this != &pTree ) - { - Clear(); - - mAllocator = pTree.mAllocator; - - if( pTree.mRoot ) - { - void* lBuffer = mAllocator.AllocateRecords(); - mRoot = new(lBuffer) RecordType(*(pTree.mRoot)); //in-place new won't allocate memory, so it is safe - mRoot->mLeftChild = DuplicateSubTree(pTree.mRoot->mLeftChild); - mRoot->mRightChild = DuplicateSubTree(pTree.mRoot->mRightChild); - - if (mRoot->mLeftChild) - { - mRoot->mLeftChild->mParent = mRoot; - } - - if (mRoot->mRightChild) - { - mRoot->mRightChild->mParent = mRoot; - } - } - else - { - FBX_ASSERT( pTree.mSize == 0 ); - FBX_ASSERT( mRoot == 0 ); - } - - mSize = pTree.mSize; - } - - return *this; - } - - inline bool operator==(const FbxRedBlackTree& pTree) const - { - // Check a few quick shortcuts - if( this == &pTree ) - return true; - - if( GetSize() != pTree.GetSize() ) - return false; - - // Iterator through all nodes; if we reach the end of both iterators at the same - // time then we have two iterators that match. - ConstIteratorType End; - ConstIteratorType Iter1(Minimum()); - ConstIteratorType Iter2(pTree.Minimum()); - - while( (Iter1 != End) && (Iter2 != End) && - (Iter1->GetKey() == Iter2->GetKey()) && - (Iter1->GetValue() == Iter2->GetValue()) ) - { - ++Iter1; - ++Iter2; - } - - return Iter1 == End && Iter2 == End; - } - - /** Ask Allocator to reserve space to hold pRecordCount elements. - * \param pRecordCount - */ - inline void Reserve(unsigned int pRecordCount) - { - mAllocator.Reserve(pRecordCount); - } - - /** Get the number of elements in the tree. Takes O(1) time. - * \return The number of elements in the tree. - */ - inline int GetSize() const { return mSize; } - - inline bool Empty() const { return mSize == 0; } - - /** Insert a new element in the tree. Takes O(log n) time. - * \param pData The element to insert. - * \return If pData.GetKey() is already present in the tree, returns the - * existing record and false; else returns the new record and true. - */ - inline FbxPair Insert(const DataType& pData) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lParent = 0; - RecordType* lNode = mRoot; - while (lNode != 0) - { - const KeyType& lNodeKey = lNode->GetKey(); - const KeyType& lDataKey = pData.GetKey(); - - if (lCompareKeys(lNodeKey, lDataKey) < 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNodeKey, lDataKey) > 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode == 0) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNode = new(lBuffer) RecordType(pData); //in-place new won't allocate memory, so it is safe - mSize++; - - FBX_ASSERT(lNode == lBuffer); - - if (lParent) - { - if (lCompareKeys(lParent->GetKey(), pData.GetKey()) < 0) - { - FBX_ASSERT(lParent->mRightChild == 0); - lParent->mRightChild = lNode; - lNode->mParent = lParent; - } - else - { - FBX_ASSERT(lParent->mLeftChild == 0); - lParent->mLeftChild = lNode; - lNode->mParent = lParent; - } - } - else - { - mRoot = lNode; - } - - // Fix red black tree property - FixNodesAfterInsertion(lNode); - - lResult = true; - } - - return FbxPair(lNode, lResult); - } - - /** Remove an element identified by a key from the tree. Takes O(log n) time. - * \param pKey The key identifying the element to remove. - */ - inline bool Remove(const KeyType& pKey) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode) - { - RemoveNode(lNode); - mSize--; - lNode->~RecordType(); - mAllocator.FreeMemory(lNode); - - lResult = true; - } - - return lResult; - } - - /** Remove all elements from the tree. Takes O(n) time. Recursive. - */ - inline void Clear() - { - if (mRoot) - { - ClearSubTree(mRoot->mLeftChild); - ClearSubTree(mRoot->mRightChild); - mRoot->~RecordType(); - mAllocator.FreeMemory(mRoot); - mRoot = 0; - mSize = 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Minimum() const - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Minimum() - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Maximum() const - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Maximum() - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* Find(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* Find(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - const RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* UpperBound(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - -protected: - RecordType* mRoot; - int mSize; - - AllocatorType mAllocator; - - inline RecordType* DuplicateSubTree(const RecordType* pNode) - { - RecordType* lNewSubTree = 0; - - if (pNode) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNewSubTree = new(lBuffer) RecordType(*pNode); //in-place new won't allocate memory, so it is safe - lNewSubTree->mLeftChild = DuplicateSubTree(pNode->mLeftChild); - lNewSubTree->mRightChild = DuplicateSubTree(pNode->mRightChild); - - if (lNewSubTree->mLeftChild) - { - lNewSubTree->mLeftChild->mParent = lNewSubTree; - } - - if (lNewSubTree->mRightChild) - { - lNewSubTree->mRightChild->mParent = lNewSubTree; - } - } - - return lNewSubTree; - } - - inline void FixNodesAfterInsertion(RecordType* pNode) - { - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (lNode->mParent == 0) - { - lNode->mColor = RecordType::eBlack; - } - else if (lNode->mParent->mColor == RecordType::eRed) - { - RecordType* lUncle = 0; - if (lNode->mParent == lNode->mParent->mParent->mLeftChild) - { - lUncle = lNode->mParent->mParent->mRightChild; - } - else if (lNode->mParent == lNode->mParent->mParent->mRightChild) - { - lUncle = lNode->mParent->mParent->mLeftChild; - } - - // since lNode->mParent is red, lNode->mParent->mParent exists - - if (lUncle && lUncle->mColor == RecordType::eRed) - { - lNode->mParent->mColor = RecordType::eBlack; - lUncle->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - lNode = lNode->mParent->mParent; - - lDone = false; - } - else - { - if ((lNode == lNode->mParent->mRightChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - LeftRotate(lNode->mParent); - lNode = lNode->mLeftChild; - } - else if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mRightChild)) - { - RightRotate(lNode->mParent); - lNode = lNode->mRightChild; - } - - lNode->mParent->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - RightRotate(lNode->mParent->mParent); - } - else - { - LeftRotate(lNode->mParent->mParent); - } - } - } - } - - mRoot->mColor = RecordType::eBlack; - } - - inline void LeftRotate(RecordType* pNode) - { - FBX_ASSERT_RETURN(pNode); - - RecordType* lNode = pNode->mRightChild; - FBX_ASSERT_RETURN(lNode); - - #ifdef _DEBUG - RecordType* A = pNode->mLeftChild; - RecordType* B = lNode->mLeftChild; - RecordType* C = lNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mRightChild = lNode->mLeftChild; - if (pNode->mRightChild) - { - pNode->mRightChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mLeftChild) - { - pNode->mParent->mLeftChild = lNode; - } - else - { - pNode->mParent->mRightChild = lNode; - } - pNode->mParent = lNode; - lNode->mLeftChild = pNode; - - FBX_ASSERT(pNode->mLeftChild == A); - FBX_ASSERT(pNode->mRightChild == B); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(lNode->mLeftChild == pNode); - FBX_ASSERT(lNode->mRightChild == C); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(A == 0 || A->mParent == pNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == lNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RightRotate(RecordType* pNode) - { - RecordType* lNode = pNode->mLeftChild; - - #ifdef _DEBUG - RecordType* A = lNode->mLeftChild; - RecordType* B = lNode->mRightChild; - RecordType* C = pNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mLeftChild = lNode->mRightChild; - if (pNode->mLeftChild) - { - pNode->mLeftChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mRightChild) - { - pNode->mParent->mRightChild = lNode; - } - else - { - pNode->mParent->mLeftChild = lNode; - } - pNode->mParent = lNode; - lNode->mRightChild = pNode; - - FBX_ASSERT(lNode->mLeftChild == A); - FBX_ASSERT(lNode->mRightChild == pNode); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(pNode->mLeftChild == B); - FBX_ASSERT(pNode->mRightChild == C); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(A == 0 || A->mParent == lNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == pNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RemoveNode(RecordType* pNode) - { - if (pNode->mLeftChild == 0) - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = 0; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = 0; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mParent, 0); - } - } - else - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mRightChild; - pNode->mRightChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mRightChild->mParent, pNode->mRightChild); - } - } - } - else - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mLeftChild; - pNode->mLeftChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mLeftChild->mParent, pNode->mLeftChild); - } - } - else - { - RecordType* lMinRightNode = pNode->mRightChild->Minimum(); - RemoveNode(lMinRightNode); - - lMinRightNode->mColor = pNode->mColor; - ReplaceNode(pNode, lMinRightNode); - } - } - - pNode->mParent = 0; - pNode->mLeftChild = 0; - pNode->mRightChild = 0; - } - - inline void ReplaceNode(RecordType* pNodeToReplace, RecordType* pReplacement) - { - pReplacement->mParent = pNodeToReplace->mParent; - if (pNodeToReplace->mParent) - { - if (pNodeToReplace->mParent->mLeftChild == pNodeToReplace) - { - pNodeToReplace->mParent->mLeftChild = pReplacement; - } - else if (pNodeToReplace->mParent->mRightChild == pNodeToReplace) - { - pNodeToReplace->mParent->mRightChild = pReplacement; - } - } - else - { - FBX_ASSERT(mRoot == pNodeToReplace); - mRoot = pReplacement; - } - - pReplacement->mLeftChild = pNodeToReplace->mLeftChild; - if (pReplacement->mLeftChild) - { - pReplacement->mLeftChild->mParent = pReplacement; - } - - pReplacement->mRightChild = pNodeToReplace->mRightChild; - if (pReplacement->mRightChild) - { - pReplacement->mRightChild->mParent = pReplacement; - } - } - - inline RecordType* Sibling(const RecordType* pParent, const RecordType* pNode) const - { - if (pParent) - { - if (pParent->mLeftChild == pNode) - { - return pParent->mRightChild; - } - else if (pParent->mRightChild == pNode) - { - return pParent->mLeftChild; - } - } - - return 0; - } - - inline bool IsBlack(const RecordType* pNode) - { - return ((pNode == 0) || (pNode->mColor == RecordType::eBlack)); - } - - inline void FixNodesAfterRemoval(RecordType* pParent, RecordType* pNode) - { - RecordType* lParent = pParent; - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (!IsBlack(lNode)) - { - lNode->mColor = RecordType::eBlack; - } - else if (lParent != NULL) - { - RecordType* lSibling = Sibling(lParent, lNode); - - if (!IsBlack(lSibling)) - { - lParent->mColor = RecordType::eRed; - lSibling->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - LeftRotate(lParent); - } - else - { - RightRotate(lParent); - } - - // update sibling: it may have change after rotation - // parent was not affected by this rotation - lSibling = Sibling(lParent, lNode); - } - - /* check this for null sibling */ - if (lSibling && - IsBlack(lParent) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lNode = lParent; - lParent = lParent->mParent; - lDone = false; - } - else - { - if (!IsBlack(lParent) && - IsBlack(lSibling) && - ((lSibling == 0) || IsBlack(lSibling->mLeftChild)) && - ((lSibling == 0) || IsBlack(lSibling->mRightChild))) - { - if (lSibling) - { - lSibling->mColor = RecordType::eRed; - } - lParent->mColor = RecordType::eBlack; - } - else if( lSibling != 0 ) - { - if ((lNode == lParent->mLeftChild) && - IsBlack(lSibling) && - !IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mLeftChild->mColor = RecordType::eBlack; - RightRotate(lSibling); - } - else if ((lNode == lParent->mRightChild) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - !IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mRightChild->mColor = RecordType::eBlack; - LeftRotate(lSibling); - } - - // update sibling: it may have change after rotation - lSibling = Sibling(lParent, lNode); - FBX_ASSERT(lSibling != 0 && lParent != 0); // lSibling is now - // the former red - // child of the - // former sibling - - if( lSibling != 0 && lParent != 0 ) - { - lSibling->mColor = lParent->mColor; - lParent->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - if (lSibling->mRightChild) - { - lSibling->mRightChild->mColor = RecordType::eBlack; - } - LeftRotate(lParent); - } - else - { - if (lSibling->mLeftChild) - { - lSibling->mLeftChild->mColor = RecordType::eBlack; - } - RightRotate(lParent); - } - } - } - } - } - } - - if (mRoot) - { - mRoot->mColor = RecordType::eBlack; - } - } - - inline void ClearSubTree(RecordType* pNode) - { - if (pNode) - { - ClearSubTree(pNode->mLeftChild); - ClearSubTree(pNode->mRightChild); - pNode->~RecordType(); - mAllocator.FreeMemory(pNode); - } - } - - inline int GetSubTreeSize(RecordType* pNode) const - { - if (pNode) - { - return GetSubTreeSize(pNode->mLeftChild) + GetSubTreeSize(pNode->mRightChild) + 1; - } - else - { - return 0; - } - } - -#if 0 - inline void IsSane() - { - FBX_ASSERT((mRoot == 0) || (mRoot->mColor == RecordType::eBlack)); - FBX_ASSERT(((mRoot == 0) && (mSize == 0)) || (mRoot != 0) && (mSize != 0)); - IsSubTreeSane(mRoot); - - ComputeBlackDepth(mRoot, 0); - - RecordType* lNode = mRoot; - unsigned int lLeafBlackDepth = 0; - while (lNode) - { - if (lNode->mLeftChild == 0) - { - lLeafBlackDepth = lNode->mBlackDepth + ((lNode->mColor == RecordType::eBlack) ? 1 : 0); - } - - lNode = lNode->mLeftChild; - } - - CheckLeavesBlackDepth(mRoot, lLeafBlackDepth); - } - - inline void IsSubTreeSane(const RecordType* pNode) const - { - Compare lCompareKeys; - - if (pNode) - { - FBX_ASSERT(pNode != pNode->mParent); - FBX_ASSERT(pNode != pNode->mLeftChild); - FBX_ASSERT(pNode != pNode->mRightChild); - - // Check for two consecutive red nodes - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mLeftChild == NULL) || - (pNode->mLeftChild->mColor == RecordType::eBlack)); - - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mRightChild == NULL) || - (pNode->mRightChild->mColor == RecordType::eBlack)); - - // Check key ordering - FBX_ASSERT((pNode->mLeftChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mLeftChild->GetKey()) > 0)); - - FBX_ASSERT((pNode->mRightChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mRightChild->GetKey()) < 0)); - - IsSubTreeSane(pNode->mLeftChild); - IsSubTreeSane(pNode->mRightChild); - } - } - - inline void ComputeBlackDepth(RecordType* pNode, unsigned int pDepth) - { - if( pNode ) - { - pNode->mBlackDepth = pDepth; - if( pNode->mColor == RecordType::eBlack ) - { - pDepth++; - } - ComputeBlackDepth(pNode->mLeftChild, pDepth); - ComputeBlackDepth(pNode->mRightChild, pDepth); - } - } - - inline void CheckLeavesBlackDepth(RecordType* pNode, unsigned int pBlackDepth) - { - if( pNode ) - { - if( pNode->mLeftChild == 0 || pNode->mRightChild == 0 ) - { - FBX_ASSERT((pNode->mBlackDepth + ((pNode->mColor == RecordType::eBlack) ? 1 : 0)) == pBlackDepth); - } - CheckLeavesBlackDepth(pNode->mLeftChild, pBlackDepth); - CheckLeavesBlackDepth(pNode->mRightChild, pBlackDepth); - } - } -#endif -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /*_FBXSDK_CORE_BASE_REDBLACKTREE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxset.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxset.h deleted file mode 100644 index b1231a2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxset.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxset.h -#ifndef _FBXSDK_CORE_BASE_SET_H_ -#define _FBXSDK_CORE_BASE_SET_H_ - -#include - -#include -#include - -#include - -/** This class implements an efficient set based on value comparison, which stores values. -* It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxSet -{ -protected: - //! This class defines the value type used by the set. - class Value - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Type KeyType; - typedef const Type ConstKeyType; - typedef const Type ValueType; - typedef const Type ConstValueType; - - inline Value(const Type& pValue) : mValue(pValue){} - inline KeyType& GetKey() const { return mValue; } - inline ConstKeyType& GetKey(){ return mValue; } - inline ValueType& GetValue() const { return mValue; } - inline ConstValueType& GetValue(){ return mValue; } - - protected: - ValueType mValue; - - private: - Value& operator=(const Value&); - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the set. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. - */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of values it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a value. - * \param pValue The value. - * \return If the value is already present in the map, returns the existing value and false; else returns the pointer to the new value and true. */ - inline FbxPair Insert(const ValueType& pValue) - { - return mTree.Insert(Value(pValue)); - } - - /** Delete a value. - * \param pValue The value. - * \return \c true if success, \c false if value is not found. */ - inline int Remove(const ValueType& pValue) - { - return mTree.Remove(pValue); - } - - //! Clear the set. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the set is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the set. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the set. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline const RecordType* Find(const ValueType& pValue) const - { - return mTree.Find(pValue); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline RecordType* Find(const ValueType& pValue) - { - return mTree.Find(pValue); - } - - //! Retrieve the minimum value in the set. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the minimum value in the set. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the maximum value in the set. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the maximum value in the set. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - - //! Equality operator. - inline bool operator==(const FbxSet& pOther) const - { - return (this == &pOther) || (mTree == pOther.mTree); - } - - //! Inequality operator. - inline bool operator != (const FbxSet& pOther) const - { - return !(*this == pOther); - } - - /** Intersect with another set. - * \param pOther The other set. - * \return The intersection set of the two sets. */ - inline FbxSet Intersect(const FbxSet& pOther) const - { - FbxSet lReturn; - ConstIterator lBegin = Begin(); - for (; lBegin != End(); ++lBegin) - { - if (pOther.Find(lBegin->GetValue()) != NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - - /** Unite with another set. - * \param pOther The other set. - * \return The union set of the two sets (no duplicated items). */ - inline FbxSet Union(const FbxSet& pOther) const - { - FbxSet lReturn(*this); - ConstIterator lBegin = pOther.Begin(); - for (; lBegin != End(); ++lBegin) - { - if (Find(lBegin->GetValue()) == NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSet(){} - inline FbxSet(const FbxSet& pSet) : mTree(pSet.mTree){} - inline ~FbxSet(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_SET_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstatus.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstatus.h deleted file mode 100644 index 3e67a68..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstatus.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatus.h -#ifndef _FBXSDK_CORE_BASE_STATUS_H_ -#define _FBXSDK_CORE_BASE_STATUS_H_ - -#include - -#include - -#include - -/** This class facilitates the testing/reporting of errors. It encapsulates the - * status code and the internal FBXSDK error code as returned by the API functions. - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatus -{ -public: - - - //! Available status codes. - enum EStatusCode { - eSuccess = 0, //!< Operation was successful - eFailure, //!< Operation failed - eInsufficientMemory, //!< Operation failed due to insufficient memory - eInvalidParameter, //!< An invalid parameter was provided - eIndexOutOfRange, //!< Index value outside the valid range - ePasswordError, //!< Operation on FBX file password failed - eInvalidFileVersion, //!< File version not supported (anymore or yet) - eInvalidFile, //!< Operation on the file access failed - eSceneCheckFail //!< Scene validation failure - }; - - //! Default constructor. - FbxStatus(); - - FbxStatus(EStatusCode pCode); - FbxStatus(const FbxStatus& rhs); - - FbxStatus& operator=(const FbxStatus& rhs); - - /** Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if all the members of \e rhs are equal to this instance members and \c False otherwise. - */ - bool operator==(const FbxStatus& rhs) const { return (mCode == rhs.mCode); } - /** Equivalence operator. - * \param pCode Status code to compare. - * \return \c True if the code member of this instance equals \e pCode and \c False otherwise. - */ - bool operator==(const EStatusCode pCode) const { return (mCode == pCode); } - /** Non-Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if at least one member of \e rhs is not equal to this instance member and \c True otherwise. - */ - bool operator!=(const FbxStatus& rhs) const { return (mCode != rhs.mCode); } - /** Non-Equivalence operator. - * \param rhs Status code to compare. - * \return \c True if the code member of this instance equals \e rhs and \c False otherwise. - */ - bool operator!=(const EStatusCode rhs) const { return (mCode != rhs); } - - /** The conversion operator that converts a FbxStatus object to bool. - * The result it returns will be \c True if the FbxStatus does not contain - * an error, and \c False if it does. - */ - operator bool() const { return mCode==eSuccess; } - - /** Determines whether there is an error. - * \return \c True if an error occured and \c False if the operation was sucessful. - */ - bool Error() const { return !this->operator bool(); } - - //! Clear error code and message from the instance. After this call, it will behave as if it contained eSuccess. - void Clear(); - - //! Retrieve the type of error that occurred, as specified in the enumeration. - EStatusCode GetCode() const { return mCode; } - - /** Change the current code of the instance. - * \param rhs New code value. - */ - void SetCode(const EStatusCode rhs); - - /** Change the current code of the instance. - * \param rhs New code value. - * \param pErrorMsg Optional error description string. This string can have formatting characters - * The function will use the vsnprintf function to assemble the final string - * using an internal buffer of 4096 characters. - */ - void SetCode(const EStatusCode rhs, const char* pErrorMsg, ...); - - //! Get the error message string corresponding to the current code. - const char* GetErrorString() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -private: - EStatusCode mCode; - FbxString mErrorString; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS */ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STATUS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstring.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstring.h deleted file mode 100644 index a604e67..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstring.h +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstring.h -#ifndef _FBXSDK_CORE_BASE_STRING_H_ -#define _FBXSDK_CORE_BASE_STRING_H_ - -#include - -#include - -/** Convert string from UTF8 to wide-char -* \param pInUTF8 Input string -* \param pOutWideChar output string -* \param pOutWideCharSize size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxUTF8ToWC(const char* pInUTF8, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - -/** Convert string from wide-char to UTF8 -* \param pInWideChar input string -* \param pOutUTF8 output string -* \param pOutUTF8Size size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxWCToUTF8(const wchar_t* pInWideChar, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - -#if defined(FBXSDK_ENV_WIN) - /** Convert string from wide-char to ANSI - * \param pInWideChar input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxWCToAnsi(const wchar_t* pInWideChar, char*& pOutANSI, size_t* pOutANSISize=NULL); - - /** Convert string from ANSI to wide-char - * \param pInANSI input string - * \param pOutWideChar output string - * \param pOutWideCharSize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToWC(const char* pInANSI, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - - /** Convert string from ANSI to UTF8 - * \param pInANSI input string - * \param outUTF8 output string - * \param pOutUTF8Size size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToUTF8(const char* pInANSI, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - - /** Convert string from UTF8 to ANSI - * \param pInUTF8 input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxUTF8ToAnsi(const char* pInUTF8, char*& pOutANSI, size_t* pOutANSISize=NULL); -#endif - -/** Utility class to manipulate strings. -* \nosubgrouping */ -class FBXSDK_DLL FbxString -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxString(); - - /** Copy constructor. - * \param pString The FbxString to be copied. */ - FbxString(const FbxString& pString); - - /** String constructor. - * \param pString The string used to construct FbxString. */ - FbxString(const char* pString); - - /** Character constructor. - * \param pChar The character used to construct FbxString. - * \param pNbRepeat The number of times to repeat the character. Default value is 1 */ - FbxString(char pChar, size_t pNbRepeat=1); - - /** String constructor with maximum length. - * \param pCharPtr The string used to construct FbxString. - * \param pLength Maximum length. */ - FbxString(const char* pCharPtr, size_t pLength); - - /** Integer constructor. - * \param pValue The int value used to construct FbxString. */ - FbxString(const int pValue); - - /** Float constructor. - * \param pValue The float value used to construct FbxString. */ - FbxString(const float pValue); - - /** Double constructor. - * \param pValue The double value used to construct FbxString. */ - FbxString(const double pValue); - - //! Destructor. - ~FbxString(); - //@} - - /** - * \name Buffer Access and Validation - */ - //@{ - //! Get string length like "C" strlen(). - size_t GetLen() const; - - //! Get string length like "C" strlen(). - size_t Size() const; - - //! Return \c true if string length equal zero. - bool IsEmpty() const; - - //! Discard the content of the string. - FbxString& Clear(); - - /** Access by reference. - * \param pIndex The index. - * \return The reference of the char at pIndex. */ - char& operator[](int pIndex); - - /** Access by copy. - * \param pIndex The index. - * \return The char at pIndex. */ - char operator[](int pIndex) const; - - //! Non-const buffer access. - char* Buffer(); - - //! Const buffer access. - const char* Buffer()const; - //@} - - /** - * \name String Operations - */ - //@{ - /** FbxString assignment operator. - * \param pString The FbxString to be assigned. */ - const FbxString& operator=(const FbxString& pString); - - /** Character assignment operator. - * \param pChar The character to be assigned. */ - const FbxString& operator=(char pChar); - - /** String assignment operator. - * \param pString The string to be assigned. */ - const FbxString& operator=(const char* pString); - - /** Int assignment operator. - * \param pValue The int value to be assigned. */ - const FbxString& operator=(int pValue); - - /** Float assignment operator. - * \param pValue The float value to be assigned. */ - const FbxString& operator=(float pValue); - - /** Double assignment operator. - * \param pValue The double value to be assigned. */ - const FbxString& operator=(double pValue); - - /** FbxString append. - * \param pString The FbxString to be appended. */ - const FbxString& operator+=(const FbxString& pString); - - /** Character append. - * \param pChar The character to be appended. */ - const FbxString& operator+=(char pChar); - - /** String append. - * \param pString The string to be appended. */ - const FbxString& operator+=(const char* pString); - - /** Integer append. - * \param pValue The int value to be appended. */ - const FbxString& operator+=(int pValue); - - /** Float append. - * \param pValue The float value to be appended. */ - const FbxString& operator+=(float pValue); - - /** Double append. - * \param pValue The double value to be appended. */ - const FbxString& operator+=(double pValue); - - /** Equality operator. - * \param pString The FbxString to be compared. */ - bool operator== (const FbxString& pString) const; - - /** Inequality operator. - * \param pString The FbxString to be compared. */ - bool operator!= (const FbxString& pString) const; - - /** Inferior to operator. - * \param pString The FbxString to be compared. */ - bool operator< (const FbxString& pString) const; - - /** Inferior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator<= (const FbxString& pString) const; - - /** Superior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator>= (const FbxString& pString) const; - - /** Superior to operator. - * \param pString The FbxString to be compared. */ - bool operator> (const FbxString& pString) const; - - /** Equality operator. - * \param pString The string to be compared. */ - bool operator== (const char* pString) const; - - /** Inequality operator. - * \param pString The string to be compared. */ - bool operator!= (const char* pString) const; - - /** Inferior to operator. - * \param pString The string to be compared. */ - bool operator< (const char* pString) const; - - /** Inferior or equal to operator. - * \param pString The string to be compared. */ - bool operator<= (const char* pString) const; - - /** Superior or equal to operator. - * \param pString The string to be compared. */ - bool operator>= (const char* pString) const; - - /** Superior to operator. - * \param pString The string to be compared. */ - bool operator> (const char* pString) const; - - /** FbxString concatenation. - * \param pString1 FbxString 1 to be concatenated to FbxString 2. - * \param pString2 FbxString 2 to be concatenated to FbxString 1 */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - - /** Character concatenation. - * \param pString FbxString to be concatenated to Character. - * \param pChar Character to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - - /** Character concatenation. - * \param pChar Character to be concatenated to FbxString - * \param pString FbxString to be concatenated to Character. */ - friend FBXSDK_DLL FbxString operator+(char pChar, const FbxString& pString); - - /** String concatenation. - * \param pString1 FbxString to be concatenated to String. - * \param pString2 String to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - - /** String concatenation. - * \param pString1 String to be concatenated to FbxString - * \param pString2 FbxString to be concatenated to String. */ - friend FBXSDK_DLL FbxString operator+(const char* pString1, const FbxString& pString2); - - /** Integer concatenation. - * \param pString FbxString to be concatenated to Integer. - * \param pValue Integer to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - - /** Integer concatenation. - * \param pValue Integer to be concatenated to FbxString - * \param pString FbxString to be concatenated to Integer. */ - friend FBXSDK_DLL FbxString operator+(int pValue, const FbxString& pString); - - /** Float concatenation. - * \param pString FbxString to be concatenated to Float. - * \param pValue Float to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - - /** Float concatenation. - * \param pValue Float to be concatenated to FbxString - * \param pString FbxString to be concatenated to Float. */ - friend FBXSDK_DLL FbxString operator+( float pValue, const FbxString& pString); - - /** Double concatenation. - * \param pString FbxString to be concatenated to Double. - * \param pValue Double to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - - //! Cast operator. - operator const char*() const; - - /** String assignment function with maximum length. - * \param pString The string to be assigned. - * \param pLength The maximum length of string to be assigned. */ - const FbxString& Copy(const char* pString, size_t pLength); - - /** Append as "C" strncat(). - * \param pString The string to be appended. - * \param pLength The length of chars to be appended. */ - const FbxString& Append(const char* pString, size_t pLength); - - /** Compare as "C" strcmp(). - * \param pString The string to be compared. */ - int Compare(const char* pString) const; - - /** Compare as "C" stricmp(). - * \param pString The string to be compared. */ - int CompareNoCase(const char* pString) const; - - /** Swap the contents of two strings. - * \param pString The FbxString to be swapped. */ - void Swap(FbxString& pString); - - //! Uppercase conversion. - FbxString Upper() const; - - //! Lowercase conversion. - FbxString Lower() const; - //@} - - /** - * \name Substring Extraction - */ - //@{ - /** Extract middle string for a given length. - * \param pFirst The start index of FbxString to be extracted. - * \param pCount The length of sub-string to be extracted. */ - FbxString Mid(size_t pFirst, size_t pCount) const; - - /** Extract middle string up to the end. - * \param pFirst The start index of FbxString to be extracted. */ - FbxString Mid(size_t pFirst) const; - - /** Extract left string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Left(size_t pCount) const; - - /** Extract right string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Right(size_t pCount) const; - //@} - - /** - * \name Padding - */ - //@{ - /** \enum EPaddingType Padding types. - * - \e eRight - * - \e eLeft - * - \e eBoth */ - enum EPaddingType {eRight, eLeft, eBoth}; - - /** Add padding characters. - * \param pPadding The padding type. - * \param pLen The length limit of FbxString after padding. - * \param pCar The character to be padded. */ - FbxString Pad(EPaddingType pPadding, size_t pLen, char pCar=' ') const; - - /** Remove padding characters. - * \param pPadding The padding type. - * \param pCar The character to be padded. - * \remark If pCar == '\0' the function will remove all the characters that are tested by isspace(). */ - FbxString UnPad(EPaddingType pPadding, char pCar='\0') const; - //@} - - /** - * \name Search - */ - //@{ - /** Look for a single character match, like "C" strchr(). - * \param pChar The character to look for. - * \param pStartPosition Start position to look for. - * \return Index or -1 if not found. */ - int Find(char pChar, size_t pStartPosition=0) const; - - /** Look for a substring match, like "C" strstr(). - * \param pStrSub The substring to look for. - * \param pStartPosition Start position to look for. - * \return Starting index or -1 if not found. */ - int Find(const char* pStrSub, size_t pStartPosition=0) const; - - /** Look for the last occurrence of character in string, like "C" strrchr(). - * \param pChar The character to look for. - * \return Index or -1 if not found. */ - int ReverseFind(char pChar) const; - - /** Look for a single character match, like "C" strpbrk(). - * \param pStrCharSet The character set. - * \param pStartPosition The start position. - * \return Index or -1 if not found. */ - int FindOneOf(const char* pStrCharSet, size_t pStartPosition=0) const; - - /** Replace a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \param pStartPosition The start position. - * \return \c true if substring found and replaced. */ - bool FindAndReplace(const char* pFind, const char* pReplaceBy, size_t pStartPosition=0); - - /** Replace all occurrence of a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \return \c true if something got replaced. */ - bool ReplaceAll(const char* pFind, const char* pReplaceBy); - - /** Replace all occurrence of character to find by replacement character. - * \param pFind The character to look for. - * \param pReplaceBy The character to replace by. - * \return \c true if character found and replaced. */ - bool ReplaceAll(char pFind, char pReplaceBy); - //@} - - /** - * \name Token Extraction - */ - //@{ - /** Get number of tokens. - * \param pSpans The span - * \return The number of tokens. */ - int GetTokenCount(const char* pSpans) const; - - /** Get token at given index. - * \param pTokenIndex The token index. - * \param pSpans The span */ - FbxString GetToken(int pTokenIndex, const char* pSpans) const; - //@} - -private: - // Lengths/sizes in characters. - // Note: an extra character is always allocated. - char* mData; // Actual string (zero terminated). - - FbxString(size_t pSrc1Len, const char* pSrc1Data, size_t pSrc2Len, const char* pSrc2Data); // Previously ConcatCopy - void Init(); - - //! Invalidate string. - void Invalidate(); - - void FreeBuffer(); - void FreeBuffer(char *&pOldData); - - bool AllocCopy(FbxString& pDest, size_t pCopyLen, size_t pCopyIndex) const; - bool AllocBuffer(size_t pLen); - bool AllocBuffer(size_t pLen, char*& pOldData); - - bool AssignCopy(size_t pSrcLen, const char* pSrcData); - bool ConcatInPlace(size_t pSrcLen, const char* pSrcData); - - bool IsIn(char pChar, const char* pString) const; - bool InternalFindAndReplace(const char* pFind, const char* pReplaceBy, size_t& pStartPosition); -}; - -FBXSDK_INCOMPATIBLE_WITH_ARRAY(FbxString); - -//! FbxString concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - -//! Character concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - -//! String concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - -//! Integer concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - -//! Float concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - -//! Double concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - -//! Functor to compare FbxString -struct FbxStringCompare { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.Compare(pKeyB); } }; - -//! Functor to compare FbxString without case sensitivity -struct FbxStringCompareNoCase { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.CompareNoCase(pKeyB); } }; - -//! Functor to compare "C" strings -struct FbxCharPtrCompare { inline int operator()(const char* pKeyA, const char* pKeyB) const { return strcmp(pKeyA, pKeyB); } }; - -//! Functor to compare "C" strings without case sensitivity -struct FbxCharPtrCompareNoCase { inline int operator()(const char* pKeyA, const char* pKeyB) const { return FBXSDK_stricmp(pKeyA, pKeyB); } }; - -/** Remove the given char in the given string. -* \param pString The given string. -* \param pToRemove The given char that ought to be removed. -* \remarks Strings used in this function are case-sensitive. */ -inline void FbxRemoveChar(FbxString& pString, char pToRemove) -{ - int lPos = pString.ReverseFind(pToRemove); - while( lPos >= 0 ) - { - pString = pString.Left(lPos) + pString.Mid(lPos + 1); - lPos = pString.ReverseFind(pToRemove); - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstringlist.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstringlist.h deleted file mode 100644 index 8a34cf2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxstringlist.h +++ /dev/null @@ -1,368 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstringlist.h -#ifndef _FBXSDK_CORE_BASE_STRING_LIST_H_ -#define _FBXSDK_CORE_BASE_STRING_LIST_H_ - -#include - -#include -#include - -#include - -//! Wraps a string (FbxString) and a pointer (FbxHandle). -class FbxStringListItem -{ -public: - FbxStringListItem(){ mReference = 0; } - FbxStringListItem(const char* pString, FbxHandle pRef=0){ mString = pString; mReference = pRef; } - - FbxString mString; - FbxHandle mReference; -}; - -inline int FbxCompareStringListSort(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem**)E1)->mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareStringListFindEqual(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareCaseSensitiveStringList(const void *E1,const void *E2) -{ - return strcmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -//! Base class of FbxStringList. -template class FbxStringListT -{ -protected: - FbxArray mList; - -public: - /** - * \name Operation With The Array - */ - //@{ - - /** Append a item at the end of the array. - * \return Index of appended pointer. - */ - int AddItem( Type* pItem ) { return mList.Add( pItem ); } - - /** Insert a item in the array. - * \param pIndex Position where to insert the item. - * \param pItem Item to insert. - * \return Position of the inserted item in the array. - * \remarks If the given index is out of range, the pointer is appended at the end of the array. - */ - int InsertItemAt( int pIndex, Type* pItem ) { return mList.InsertAt( pIndex, pItem ); } - - //! Access item at given index. - Type* GetItemAt( int pIndex ) const { return mList[pIndex]; } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no matching element. - */ - int FindItem( Type* pItem ) const { return mList.Find( pItem ); } - //}@ - -public : - /** - * \name Constructor and Destructor - */ - //@{ - - //! Default constructor. - FbxStringListT() - { - } - - //! Destructor. - virtual ~FbxStringListT() { Clear(); } - //}@ - - //!Remove the item at the end of the array and delete the associated object. - void RemoveLast() { RemoveAt( mList.GetCount()-1 ); } - - /** Get number of items in the array. - * \return The number of items in the array. - */ - inline int GetCount() const { return mList.GetCount(); } - - //! Access the string in the item at given index. - FbxString& operator[](int pIndex) { return mList[pIndex]->mString; } - - //! Access the value of reference in the item at given index. - FbxHandle GetReferenceAt(int pIndex) const { return mList[pIndex]->mReference; } - - //! Set the value of reference at given index. - void SetReferenceAt(int pIndex, FbxHandle pRef) { mList[pIndex]->mReference = pRef; } - - //! Access the pointer of string at given index. - char* GetStringAt(int pIndex) const { if (pIndexmString.Buffer(); else return NULL; } - - //! Set string at given index. - virtual bool SetStringAt(int pIndex, const char* pString) - { - if (pIndexmString = pString; - return true; - } else return false; - } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int Find( Type& pItem ) const - { - for (int Count=0; CountmReference==pReference) { - return Count; - } - } - return -1; - } - - /** Find first matching item in array whose string address is the same as given pointer. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int FindIndex( const char* pString ) const - { - for (int lCount=0; lCountmString==pString) { - return lCount; - } - } - return -1; - } - - /** Access the value of reference of the first matching item in array - * whose string address is the same as given pointer. - * \return The value of reference of the first matching item found or NULL if there is no - * matching element. - */ - FbxHandle FindReference(const char* pString ) const - { - int lIndex = FindIndex( pString ); - if (lIndex!=-1) { - return mList[lIndex]->mReference; - } - return 0; // NULL - } - - //! Remove first matching item. - bool Remove ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item in array whose string address is the same as given pointer. - bool Remove (const char* pString ) - { - int lIndex = FindIndex( pString ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item. - bool RemoveIt ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Sort the array by the string of every item,not case sensitive. - void Sort( ) - { - qsort( &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListSort ); - } - - /** Find first matching item which has the same string as given parameter,not case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindEqual(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListFindEqual ); - } - else - { - return NULL ; - } - } - - /** Find first matching item which has the same string as given parameter, case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindCaseSensitive(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*), FbxCompareCaseSensitiveStringList); - } - else - { - return NULL ; - } - - } - - - //! Add a new item at the end of array. - int Add( const char* pString, FbxHandle pItem=0 ) - { - return InsertAt( mList.GetCount(),pString,pItem ); - } - - virtual int InsertAt( int pIndex, const char* pString, FbxHandle pItem=0 ) - { - return mList.InsertAt( pIndex,FbxNew< Type >( pString,(FbxHandle)pItem )); - } - - /** Remove the item at the given position in the array and delete the associated object. - * \param pIndex Position of the item to remove. - * \remarks If the index is not valid, nothing is performed. Otherwise, - * the item is removed from the array and the items are shifted to fill the - * empty slot. - */ - virtual void RemoveAt(int pIndex) - { - FbxDelete(mList.RemoveAt(pIndex)); - } - - //! Delete the array. - virtual void Clear() - { - FbxArrayDelete(mList); - } - - /** Get the string of all the item. - * \return The text of string, each item's string separated by '~'. - */ - virtual void GetText(FbxString& pText) const - { - int lCount; - for (lCount=0; lCountmString; - if (lCount -{ -public: - /** - * \name Constructors - */ - //@{ - //! Default constructor. - FbxStringList(); - - //! Copy constructor. - FbxStringList( const FbxStringList& pOriginal ); - //@} - - /** - * \name Assignment Operators - */ - //@{ - //! FbxStringList assignment function. - void CopyFrom( const FbxStringList* pOriginal ); - - //! FbxStringList assignment operator. - FbxStringList& operator=(const FbxStringList& pOriginal); - //@} -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_LIST_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtime.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtime.h deleted file mode 100644 index 1deb3bf..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtime.h +++ /dev/null @@ -1,648 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtime.h -#ifndef _FBXSDK_CORE_BASE_TIME_H_ -#define _FBXSDK_CORE_BASE_TIME_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_TIME_INFINITE FbxTime(FBXSDK_TC_INFINITY) -#define FBXSDK_TIME_MINUS_INFINITE FbxTime(FBXSDK_TC_MINFINITY) -#define FBXSDK_TIME_ZERO FbxTime(FBXSDK_TC_ZERO) -#define FBXSDK_TIME_EPSILON FbxTime(FBXSDK_TC_EPSILON) -#define FBXSDK_TIME_ONE_SECOND FbxTime(FBXSDK_TC_SECOND) -#define FBXSDK_TIME_ONE_MINUTE FbxTime(FBXSDK_TC_MINUTE) -#define FBXSDK_TIME_ONE_HOUR FbxTime(FBXSDK_TC_HOUR) -#define FBXSDK_TIME_ASSERT_EPSILON 0.5 -#define FBXSDK_TIME_FORWARD 1 -#define FBXSDK_TIME_BACKWARD -1 - -class FbxTimeModeObject; - -/** Class to encapsulate time units. - * \nosubgrouping - * FbxTime can measure time in hour, minute, second, frame, field, residual and also combination of these units. - * It is recommended to use FbxTime for all time related operations. For example, currently it is used in FbxGlobalSettings, - * FbxGlobalTimeSettings, FbxCache, all curve filters and all animation-related classes, etc. - * FbxTime is just used to represent a moment, to represent a period of time, FbxTimeSpan should be used. - * \see FbxTimeSpan - */ -class FBXSDK_DLL FbxTime -{ -public: - /** Long long constructor. - * \param pTime Initial value defined as a 64bit integer. - */ - FbxTime(const FbxLongLong pTime=0){ mTime = pTime; } - - /** - * \name Time Modes and Protocols - */ - //@{ - /** Time modes. - * \remarks - * EMode \c eNTSCDropFrame is used for broadcasting operations where - * clock time must be (almost) in sync with time code. To bring back color - * NTSC time code with clock time, this mode drops 2 frames per minute - * except for every 10 minutes (00, 10, 20, 30, 40, 50). 108 frames are - * dropped per hour. Over 24 hours the error is 2 frames and 1/4 of a - * frame. A time-code of 01:00:03:18 equals a clock time of 01:00:00:00 - * - * \par - * EMode \c eNTSCFullFrame represents a time address and therefore is NOT - * IN SYNC with clock time. A time code of 01:00:00:00 equals a clock time - * of 01:00:03:18. - * - * - \e eDefaultMode - * - \e eFrames120 120 frames/s - * - \e eFrames100 100 frames/s - * - \e eFrames60 60 frames/s - * - \e eFrames50 50 frames/s - * - \e eFrames48 48 frame/s - * - \e eFrames30 30 frames/s (black and white NTSC) - * - \e eFrames30Drop 30 frames/s (use when display in frame is selected, equivalent to NTSC drop) - * - \e eNTSCDropFrame ~29.97 frames/s drop color NTSC - * - \e eNTSCFullFrame ~29.97 frames/s color NTSC - * - \e ePAL 25 frames/s PAL/SECAM - * - \e eFrames24 24 frames/s Film/Cinema - * - \e eFrames1000 1000 milli/s (use for date time) - * - \e eFilmFullFrame ~23.976 frames/s - * - \e eCustom Custom frame rate value - * - \e eFrames96 96 frames/s - * - \e eFrames72 72 frames/s - * - \e eFrames59dot94 ~59.94 frames/s - * - \e eModesCount Number of time modes - */ - enum EMode - { - eDefaultMode, - eFrames120, - eFrames100, - eFrames60, - eFrames50, - eFrames48, - eFrames30, - eFrames30Drop, - eNTSCDropFrame, - eNTSCFullFrame, - ePAL, - eFrames24, - eFrames1000, - eFilmFullFrame, - eCustom, - eFrames96, - eFrames72, - eFrames59dot94, - eModesCount - }; - - /** Time protocols enumaration - * - \e eSMPTE SMPTE EProtocol - * - \e eFrameCount Frame count - * - \e eDefaultProtocol Default protocol (initialized to eFRAMES) - */ - enum EProtocol {eSMPTE, eFrameCount, eDefaultProtocol}; - - /** Set default time mode. - * \param pTimeMode Time mode identifier. - * \param pFrameRate Custom framerate, only have effect in case of pTimeMode = FbxTime::eCustom - * \remarks It is meaningless to set default time mode to \c eDefaultMode. - */ - static void SetGlobalTimeMode(EMode pTimeMode, double pFrameRate=0.0); - - /** Get default time mode. - * \return Currently set time mode identifier. - * \remarks Default time mode initial value is eFrames30. - */ - static EMode GetGlobalTimeMode(); - - /** Set default time protocol. - * \param pTimeProtocol Time protocol identifier. - * \remarks It is meaningless to set default time protocol to \c eDefaultProtocol. - */ - static void SetGlobalTimeProtocol(EProtocol pTimeProtocol); - - /** Get default time protocol. - * \return Currently set time protocol identifier. - * \remarks Default time protocol initial value is eSMPTE. - */ - static EProtocol GetGlobalTimeProtocol(); - - /** Get frame rate associated with time mode, in frames per second. - * \param pTimeMode Time mode identifier. - * \return Frame rate value. - */ - static double GetFrameRate(EMode pTimeMode); - - /** Get time mode associated with frame rate. - * \param pFrameRate The frame rate value. - * \param pPrecision The tolerance value. - * \return The corresponding time mode identifier or \c eDefaultMode if no time - * mode associated to the given frame rate is found. - */ - static EMode ConvertFrameRateToTimeMode(double pFrameRate, double pPrecision=0.00000001); - //@} - - /** - * \name Time Conversion - */ - //@{ - /** Set time in internal format. - * \param pTime Time value to set. - */ - inline void Set(FbxLongLong pTime){ mTime = pTime; } - - /** Get time in internal format. - * \return Time value. - */ - inline FbxLongLong Get() const { return mTime; } - - /** Set time in milliseconds. - * \param pMilliSeconds Time value to set. - */ - inline void SetMilliSeconds(FbxLongLong pMilliSeconds){ mTime = pMilliSeconds * FBXSDK_TC_MILLISECOND; } - - /** Get time in milliseconds. - * \return Time value. - */ - inline FbxLongLong GetMilliSeconds() const { return mTime / FBXSDK_TC_MILLISECOND; } - - /** Set time in seconds. - * \param pTime Time value to set. - */ - void SetSecondDouble(double pTime); - - /** Get time in seconds. - * \return Time value. - */ - double GetSecondDouble() const; - - /** Set time in hour/minute/second/frame/field format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame and pField are summed together. - * For example, it is possible to set the time to 83 seconds in the following - * ways: SetTime(0,1,23) or SetTime(0,0,83). - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame=0, int pField=0, EMode pTimeMode=eDefaultMode); - - /** Set time in hour/minute/second/frame/field/residual format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pResidual The hundredths of frame value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame, pField and pResidual - * are summed together, just like above. - * pResidual represents hundredths of frame, and won't necessarily - * correspond to an exact internal value. - * - * \remarks The time mode can't have a default value, because - * otherwise SetTime(int, int, int, int, int, int) - * would be ambiguous. Please specify DEFAULT_MODE. - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame, int pField, int pResidual, EMode pTimeMode); - - /** Get time in hour/minute/second/frame/field/residual format. - * \param pHour The returned hours value. - * \param pMinute The returned minutes value. - * \param pSecond The returned seconds value. - * \param pFrame The returned frames values. - * \param pField The returned field value. - * \param pResidual The returned hundredths of frame value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - * \return \c true if the pTimeMode parameter is a valid identifier and thus the extraction - * succeeded. If the function returns \c false, all the values are set to 0. - */ - bool GetTime(int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField, int& pResidual, EMode pTimeMode=eDefaultMode) const; - - /** Snaps a time value to the time value associated with the nearest frame. - * \param pRound If \c true the return value is rounded to the nearest integer. - * \return The snapped time value. - */ - FbxTime GetFramedTime(bool pRound=true) const; - - /** Set time in frame format. - * \param pFrames The number of frames. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFrame(FbxLongLong pFrames, EMode pTimeMode=eDefaultMode); - - /** Set time in frame format, including fractions. - * \param pFrames The number of frames in decimal value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFramePrecise(FbxDouble pFrames, EMode pTimeMode=eDefaultMode); - - /** Get number of hours in time. - * \return Hours value. - */ - int GetHourCount() const; - - /** Get number of minutes in time. - * \return Minutes value. - */ - int GetMinuteCount() const; - - /** Get number of seconds in time. - * \return Seconds value. - */ - int GetSecondCount() const; - - /** Get number of frames in time. - * \param pTimeMode Time mode identifier. - * \return Integer value representing the frame count. - */ - FbxLongLong GetFrameCount(EMode pTimeMode=eDefaultMode) const; - - /** Get precise number of frames in time, including fractions. - * \param pTimeMode Time mode identifier. - * \return Decimal value representing the frame count, including fractions. - */ - FbxDouble GetFrameCountPrecise(EMode pTimeMode=eDefaultMode) const; - - /** Get number of fields in time. - * \param pTimeMode Time mode identifier. - * \return Fields value. - */ - FbxLongLong GetFieldCount(EMode pTimeMode=eDefaultMode) const; - - /** Get residual time exceeding last full field. - * \param pTimeMode Time mode identifier. - * \return Residual value. - */ - int GetResidual(EMode pTimeMode=eDefaultMode) const; - - /** Test for Drop Frame mode - * \param pTimeMode Time mode identifier. - * \return True if the pTimeMode is a Drop Frame mode. - */ - static bool IsDropFrame(EMode pTimeMode=eDefaultMode); - - /** Separator char between second and frame. - * \param pTimeMode Time mode identifier. - * \return ';' is returned if pTimeMode is a DropFrame mode otherwise ':'. - */ - char GetFrameSeparator(EMode pTimeMode=eDefaultMode) const; - - /** Get time in a human readable format. - * \param pTimeString An array large enough to contain a minimum of 19 characters. - * \param pTimeStringSize Size of the pTimeString buffer used with secure functions. - * \param pInfo The amount of information if time protocol is \c eSMPTE: - *

  • 1 means hours only - *
  • 2 means hours and minutes - *
  • 3 means hours, minutes and seconds - *
  • 4 means hours, minutes, seconds and frames - *
  • 5 means hours, minutes, seconds, frames and field - *
  • 6 means hours, minutes, seconds, frames, field and residual value
- * \param pTimeMode Requested time mode. - * \param pTimeFormat Requested time protocol. - * \return pTimeString parameter filled with a time value or set to a empty string - * if parameter pInfo is not valid. - */ - char* GetTimeString(char* pTimeString, const FbxUShort& pTimeStringSize, int pInfo=5, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - enum EElement {eHours, eMinutes, eSeconds, eFrames, eField, eResidual}; - - /** Get the time in a human readable format. - * \param pStart The starting element type used to format the time string. - * \param pEnd The last element type used to format the time string. - * \param pTimeMode The time mode requested. - * \param pTimeFormat The time format requested. - * \return The human readable time string. */ - FbxString GetTimeString(EElement pStart=eHours, EElement pEnd=eResidual, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - /** Set time in a human readable format. - * \param pTime An array of a maximum of 18 characters. - * If time protocol is \c eSMPTE, pTimeString must be formatted this way: - * "[hours:]minutes[:seconds[.frames[.fields]]]". Hours, minutes, seconds, - * frames and fields are parsed as integers and brackets indicate optional - * parts. - * If time protocol is \c eFRAME, pTimeString must be formatted this way: - * "frames". Frames is parsed as a 64 bits integer. - * \param pTimeMode Given time mode. - * \param pTimeFormat Given time protocol. - * \return True if the set time string succeed, otherwise return false. - */ - bool SetTimeString(const char* pTime, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol); - //@} - - /** - * \name Time Operators - */ - //@{ - /** Equality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if equal, \c false otherwise. - */ - inline bool operator==(const FbxTime& pTime) const { return mTime == pTime.mTime; } - - /** Inequality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if unequal, \c false otherwise. - */ - inline bool operator!=(const FbxTime& pTime) const { return mTime != pTime.mTime; } - - /** Superior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator>=(const FbxTime& pTime) const { return mTime >= pTime.mTime; } - - /** Inferior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator<=(const FbxTime& pTime) const { return mTime <= pTime.mTime; } - - /** Superior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior to the passed FbxTime, \c false otherwise. - */ - inline bool operator>(const FbxTime& pTime) const { return mTime > pTime.mTime; } - - /** Inferior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior to the passed FbxTime, \c false otherwise. - */ - inline bool operator<(const FbxTime& pTime) const { return mTime < pTime.mTime; } - - /** Assignment operator. - * \param pTime The FbxTime to be assigned. - */ - inline FbxTime& operator=(const FbxTime& pTime) { mTime = pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return This FbxTime after addition. - */ - inline FbxTime& operator+=(const FbxTime& pTime) { mTime += pTime.mTime; return *this; } - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return This FbxTime after subtraction. - */ - inline FbxTime& operator-=(const FbxTime& pTime) { mTime -= pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return A temporary FbxTime after addition. - */ - FbxTime operator+(const FbxTime& pTime) const; - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return A temporary FbxTime after subtraction. - */ - FbxTime operator-(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param Mult Multiply this FbxTime by int Mult. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const int Mult) const; - - /** Division operator. - * \param pTime Divide this FbxTime by pTime. - * \return A temporary FbxTime after division. - */ - FbxTime operator/(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param pTime Multiply this FbxTime by pTime. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const FbxTime& pTime) const; -/* - //! Increment time of one unit of the internal format (prefix form). - inline FbxTime& operator++() { mTime += 1; return (*this); } - - //! Increment time of one unit of the internal format (postfix form). - inline const FbxTime operator++(int) { FbxTime lOld = *this; ++(*this); return lOld; } - - //! Decrement time of one unit of the internal format (prefix form). - inline FbxTime& operator--() { mTime -= 1; return (*this); } - - //! Decrement time of one unit of the internal format (postfix form). - inline const FbxTime operator--(int) { FbxTime lOld = *this; --(*this); return lOld; }*/ - //@} - - /** One frame value for a specified time mode. - * \param pTimeMode Time mode identifier. - * \return the time code of a one frame. - */ - static FbxLongLong GetOneFrameValue(EMode pTimeMode=eDefaultMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Keep compatibility with old fbx format - enum EOldMode - { - eOLD_DEFAULT_MODE, //Default mode set using FbxTime::SetGlobalTimeMode(EMode pTimeMode) - eOLD_CINEMA, //24 frameOLD_s/s - eOLD_PAL, //25 frameOLD_s/s PAL/SECAM - eOLD_FRAMES30, //30 frameOLD_s/s BLACK & WHITE NTSC - eOLD_NTSC_DROP_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES50, //50 frameOLD_s/s - eOLD_FRAMES60, //60 frameOLD_s/s - eOLD_FRAMES100, //100 frameOLD_s/s - eOLD_FRAMES120, //120 frameOLD_s/s - eOLD_NTSC_FULL_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES30_DROP, //30 frameOLD_s/s - eOLD_FRAMES1000 //1000 frameOLD_s/s - }; - -private: - FbxLongLong mTime; //In 1 / 46,186,158,000 Seconds - - static EMode gsGlobalTimeMode; - static EProtocol gsGlobalTimeProtocol; - static FbxTimeModeObject* gsTimeObject; - - void InternalSetTime(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField, EMode pTimeMode); - - friend FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); - friend FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); - friend FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); - friend FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate); - friend FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FbxTime in seconds constructor. - * \param pTime - */ -FBXSDK_DLL inline FbxTime FbxTimeSeconds(const FbxDouble& pTime=0.0) -{ - FbxTime lTime; - lTime.SetSecondDouble(pTime); - return lTime; -} - -/** Class to encapsulate time intervals. - * \nosubgrouping - * \see FbxTime - */ -class FBXSDK_DLL FbxTimeSpan -{ -public: - //! Constructor. - FbxTimeSpan() {} - - /** Constructor. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - FbxTimeSpan(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start and stop time. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - inline void Set(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start time. - * \param pStart Beginning of the time interval. - */ - inline void SetStart(FbxTime pStart){ mStart = pStart; } - - /** Set stop time. - * \param pStop Ending of the time interval. - */ - inline void SetStop(FbxTime pStop){ mStop = pStop; } - - /** Get start time. - * \return Beginning of time interval. - */ - inline FbxTime GetStart() const { return mStart; } - - /** Get stop time. - * \return Ending of time interval. - */ - inline FbxTime GetStop() const { return mStop; } - - /** Get time interval in absolute value. - * \return Time interval. - */ - inline FbxTime GetDuration() const { if( mStop > mStart ) return mStop - mStart; else return mStart - mStop; } - - /** Get time interval. - * \return Signed time interval. - */ - inline FbxTime GetSignedDuration() const { return mStop - mStart; } - - /** Get direction of the time interval. - * \return \c FBXSDK_TIME_FORWARD if time interval is forward, \c FBXSDK_TIME_BACKWARD if backward. - */ - inline int GetDirection() const { if( mStop >= mStart ) return FBXSDK_TIME_FORWARD; else return FBXSDK_TIME_BACKWARD; } - - /** Return \c true if the time is inside the timespan. - * \param pTime Judge whether pTime is inside the timespan. - * \return \c True if is, \c false otherwise. - */ - bool IsInside(FbxTime pTime) const; - - /** Return the intersection of the two time spans. - * \param pTime - * \return The intersection of pTime and this FbxTimeSpan. - */ - FbxTimeSpan Intersect(const FbxTimeSpan& pTime) const; - - /** Inequality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxTimeSpan& pTime) const; - - /** Equality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxTimeSpan& pTime) const; - - /** Unite with another FbxTimeSpan - * \param pSpan The FbxTimeSpan - * \param pDirection FBXSDK_TIME_FORWARD or FBXSDK_TIME_BACKWARD - * \remarks This function assumes both of the FbxTimeSpan objects are in the same direction. - * Use FBXSDK_TIME_FORWARD when start < stop in both timespan - * Use FBXSDK_TIME_BACKWARD when start > stop in both timespan - */ - void UnionAssignment(const FbxTimeSpan& pSpan, int pDirection=FBXSDK_TIME_FORWARD); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mStart; - FbxTime mStop; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxLocalTime -{ -public: - FbxLocalTime(); - - int mYear; - int mMonth; - int mDay; - int mHour; - int mMinute; - int mSecond; - int mMillisecond; -}; - -FBXSDK_DLL void FbxGetCurrentLocalTime(FbxLocalTime& pLocalTime); - -FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); -FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); -FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); -FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate=0.0); -FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); - -// Use those functions to keep the compatibility with old time mode since we added new time mode. -FBXSDK_DLL FbxTime::EOldMode FbxGetOldTimeModeCorrespondance(FbxTime::EMode pMode); -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromOldValue(FbxTime::EOldMode pOldMode); - -// We now store the framerate instead of the time mode. -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromFrameRate(char* pFrameRate); -FBXSDK_DLL void FbxGetControlStringList(char* pControlString, FbxTime::EProtocol pTimeFormat); -FBXSDK_DLL const char* FbxGetGlobalFrameRateString(FbxTime::EMode pTimeMode); -FBXSDK_DLL const char* FbxGetGlobalTimeModeString(FbxTime::EMode pTimeMode); -FBXSDK_DLL double FbxGetFrameRate(FbxTime::EMode pTimeMode); - -// Time format -FBXSDK_DLL FbxTime::EProtocol FbxSelectionToTimeFormat(int pSelection); -FBXSDK_DLL FbxTime::EMode FbxSelectionToTimeMode(int pSelection); -FBXSDK_DLL int FbxTimeToSelection(FbxTime::EMode pTimeMode=FbxTime::eDefaultMode, int pTimeFormat=FbxTime::eDefaultProtocol); -FBXSDK_DLL const char* FbxGetTimeModeName(FbxTime::EMode pTimeMode); -FBXSDK_DLL int FbxGetFrameRateStringListIndex(FbxTime::EMode pTimeMode); -FBXSDK_DLL bool FbxIsValidCustomFrameRate(double pFramerate); -FBXSDK_DLL bool FbxGetNearestCustomFrameRate(double pFramerate, double& pNearestRate); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIME_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtimecode.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtimecode.h deleted file mode 100644 index 4861b91..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxtimecode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtimecode.h -#ifndef _FBXSDK_CORE_BASE_TIMECODE_H_ -#define _FBXSDK_CORE_BASE_TIMECODE_H_ - -#include - -#include - -#define FBXSDK_TC_ZERO FBXSDK_LONGLONG(0) -#define FBXSDK_TC_EPSILON FBXSDK_LONGLONG(1) -#define FBXSDK_TC_MINFINITY FBXSDK_LONGLONG(-0x7fffffffffffffff) -#define FBXSDK_TC_INFINITY FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_TC_FIX_DEN FBXSDK_LONGLONG(100000000) - -#define FBXSDK_TC_MILLISECOND FBXSDK_LONGLONG(46186158) -#define FBXSDK_TC_SECOND FbxLongLong(FBXSDK_TC_MILLISECOND*1000) -#define FBXSDK_TC_MINUTE FbxLongLong(FBXSDK_TC_SECOND*60) -#define FBXSDK_TC_HOUR FbxLongLong(FBXSDK_TC_MINUTE*60) -#define FBXSDK_TC_DAY FbxLongLong(FBXSDK_TC_HOUR*24) - -// Frame @ 30 Hz -#define FBXSDK_TC_NTSC_FIELD FbxLongLong(FBXSDK_TC_SECOND/30/2) -#define FBXSDK_TC_NTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30) - -// Frame @ 29.9700299700 Hz -#define FBXSDK_TC_MNTSC_FIELD FbxLongLong(FBXSDK_TC_MNTSC_FRAME/2) -#define FBXSDK_TC_MNTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30*1001/1000) -#define FBXSDK_TC_MNTSC_2_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*2) -#define FBXSDK_TC_MNTSC_30_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) -#define FBXSDK_TC_MNTSC_1798_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1798) // leap minute -#define FBXSDK_TC_MNTSC_1800_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1800) // ~1 minute -#define FBXSDK_TC_MNTSC_17982_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*17982) // ~10 minutes -#define FBXSDK_TC_MNTSC_107892_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*107892) // ~1 hour -#define FBXSDK_TC_MNTSC_108000_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*108000) - -// For 29.9700299700 non-drop, btw : same values as with 23.976 -#define FBXSDK_TC_MNTSC_1_SECOND FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) // 1 frame * 30 -#define FBXSDK_TC_MNTSC_1_MINUTE FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*60) // 1 minute (1800 frames) -#define FBXSDK_TC_MNTSC_1_HOUR FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MNTSC_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*30/1001) -#define FBXSDK_TC_MNTSC_DEN FBXSDK_TC_FIX_DEN - -// Frame @ 25 Hz -#define FBXSDK_TC_PAL_FIELD FbxLongLong(FBXSDK_TC_SECOND/25/2) -#define FBXSDK_TC_PAL_FRAME FbxLongLong(FBXSDK_TC_SECOND/25) - -// Frame @ 24 Hz -#define FBXSDK_TC_FILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24) - -// Frame @ 23.9760239760 Hz -#define FBXSDK_TC_MFILM_FIELD FbxLongLong(FBXSDK_TC_MFILM_FRAME/2) -#define FBXSDK_TC_MFILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24*1001/1000) -#define FBXSDK_TC_MFILM_1_SECOND FbxLongLong(FBXSDK_TC_MFILM_FRAME*24) // 1 frame * 24 -#define FBXSDK_TC_MFILM_1_MINUTE FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*60) // 1 minute (1440 frames) -#define FBXSDK_TC_MFILM_1_HOUR FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MFILM_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*24/1001) -#define FBXSDK_TC_MFILM_DEN FBXSDK_TC_FIX_DEN - -////////////////////////////////////////////////////////////////////////////////////////// - -#define FBXSDK_TC_REM(quot, num, den) ((quot) = (num) / (den), (quot) * (den)) -#define FBXSDK_TC_HOUR_REM(quot, num, den) ((quot) = ((num - (-FbxLongLong(num < 0) & (den - 1))) / (den)), (quot) * (den)) - -FBXSDK_DLL FbxLongLong FbxTCSeconds(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCMinutes(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCHours(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCSetRate(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCGetRate(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCSetNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSCnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSCnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC_2Xnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC_2Xnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetPAL(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetPAL(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetFILM(int pHour, int pMinute, int pSecond, FbxLongLong pFrame); -FBXSDK_DLL FbxLongLong FbxTCGetFILM(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame); -FBXSDK_DLL FbxLongLong FbxTCSetFILMND(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetFILMND(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIMECODE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxutils.h b/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxutils.h deleted file mode 100644 index eb17d28..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/base/fbxutils.h +++ /dev/null @@ -1,172 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxutils.h -#ifndef _FBXSDK_CORE_BASE_UTILITIES_H_ -#define _FBXSDK_CORE_BASE_UTILITIES_H_ - -#include - -#include -#include - -#include - -#ifndef FBXSDK_ENV_WINSTORE - /** Retrieve the environment variable value. - * \return A new string containing the environment variable value. */ - FBXSDK_DLL FbxString FbxGetEnv(const char* pEnvVar); - - /** Get the application directory - * \return The application directory. */ - FBXSDK_DLL FbxString FbxGetApplicationDirectory(); -#endif - -/** Retrieve the system temporary folder path name. -* \return A new string containing the system temporary folder path name. */ -FBXSDK_DLL FbxString FbxGetSystemTempPath(); - -/** Override the system temporary folder path name. - * \param pPathUTF8 The system temporary folder to use for override. - * \return True if the system temporary folder path has been set and False otherwise. - * \remark The system temporary folder is limited to _MAX_PATH characters. Trying to set - * a longer value will fail and the current system temporary folder path is left unchanged. - */ -FBXSDK_DLL bool FbxSetSystemTempPath(const char* pPathUTF8); - -/** Retrieve the working directory of the system in UTF8 format. -* \return A string that contain the current working directory of the system. */ -FBXSDK_DLL FbxString FbxGetCurrentWorkPath(); - -/** Change the working directory of the system. */ -FBXSDK_DLL void FbxSetCurrentWorkPath(const char* pPath_UTF8); - -class FBXSDK_DLL FbxPathUtils -{ -public: - /** Bind together a root path with a file path. - * \param pRootPath The root path that will get binded to the file path. - * \param pFilePath The file path to bind to the root path. - * \param pCleanPath If true, the resulting path will be cleaned via FbxPathUtils::Clean(). - * \return Both paths binded together forming a new file path. - * \remark If the file path is already a full valid path, pFilePath is returned. - */ - static FbxString Bind(const char* pRootPath, const char* pFilePath, bool pCleanPath=true); - - /** Extract the folder name from the given file path. - * \param pFilePath The given file path. - * \return The folder name. If there isn't any '\\' or '/' in the given file path, it will return pFilePath. - */ - static FbxString GetFolderName(const char* pFilePath); - - /** Extract file name from the given file path. - * \param pFilePath The given file path. - * \param pWithExtension Decide the file name with extension or without extension. - * If it is true, return the file name with extension; - * if it is false, return the file name without extension. - */ - static FbxString GetFileName(const char* pFilePath, bool pWithExtension=true); - - /** Extract the file extension in the given file path. - * \param pFilePath The file path to extract the extension. - * \return The file extension without the '.' character. - * \remark Return empty string if the file path doesn't contain a valid extension. - */ - static FbxString GetExtensionName(const char* pFilePath); - - /** Change or append a file extension to the specified file path. - * \param pFilePath The file path to change the file extension - * \param pExtension The extension to change or append to the file path. - * \return The file path with the file extension changed/added. - * \remark If the file path doesn't end with a valid file name, pFilePath is returned. - */ - static FbxString ChangeExtension(const char* pFilePath, const char* pExtension); - - //! Test if the given path is relative path, if it is return true. - static bool IsRelative(const char* pPath); - - /** Get the given new path's relative path to the given root path. - * \param pRootPath The given root path - * \param pNewPath The given new path. If it is only file name, the default directory is work directory. - * \return The relative path. - * \remarks If the given two paths have the same drive, the function will turn '\\' in the relative path to '/'. - */ - static FbxString GetRelativePath(const char* pRootPath, const char* pNewPath); - - //! Get the given new path's relative path to the given root path. - static FbxString GetRelativeFilePath(const char* pRootPath, const char* pNewFilePath); - - /** Get the full path of given path (if the given path is relative path, - * it will take current directory as default root path.) - */ - static FbxString Resolve(const char* pRelPath); - - //! Clean the redundant and useless denotations in given path name. - static FbxString Clean(const char* pPath); - - /** Generate full safe file path name you can use to create new file. - * \param pFolder The folder where the file name should be attempted to be created. - * \param pPrefix The prefix of generated file name. - * \return A valid file path that can safely be used to create a new file. - */ - static FbxString GenerateFileName(const char* pFolder, const char* pPrefix); - - /** Verify if the specified folder path exist. - * \param pFolderPathUTF8 The folder path to test its existance. - * \return True if the folder path exist, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Exist(const char* pFolderPathUTF8); - - /** Create the specified folder path if it doesn't exist. - * \param pFolderPathUTF8 The folder path to create, in UTF8 encoding. - * \return True if folder path already exist, or if it was successfully created, false otherwise. - * \remark This function will create multiple folders if needed, and it also work for relative paths. */ - static bool Create(const char* pFolderPathUTF8); - - /** Delete the specified folder path and all its content recursively. - * \param pFolderPathUTF8 The folder path to delete, in UTF8 encoding. - * \return True if folder path was successfully deleted, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Delete(const char* pFolderPathUTF8); - -#ifndef FBXSDK_ENV_WINSTORE - /** Verify if the folder contains items or not. - * \param pFolderPath_UTF8 The folder path to test if it contains items. - * \return True if the folder contain any kind of entry type. */ - static bool IsEmpty(const char* pFolderPath_UTF8); -#endif -}; - -/** Global accessor to an FbxStatus object. -* This object is not used internally by the FBX SDK. It is provided for convenience and its usage is shown in the custom reader/writers samples. */ -class FBXSDK_DLL FbxStatusGlobal -{ -public: - static FbxStatus& GetRef() - { - if( !mStatusPtr ) - { - mStatusPtr = FbxNew(); - } - return *mStatusPtr; - } - -private: - FbxStatusGlobal(){ mStatusPtr = NULL; } - ~FbxStatusGlobal(){ FbxDelete(mStatusPtr); } - static FbxStatusGlobal sgFbxStatusGlobal; - static FbxStatus* mStatusPtr; -}; - - -#include - -#endif /* _FBXSDK_CORE_BASE_UTILITIES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxclassid.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxclassid.h deleted file mode 100644 index a98eed1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxclassid.h +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclassid.h -#ifndef _FBXSDK_CORE_CLASSID_H_ -#define _FBXSDK_CORE_CLASSID_H_ - -#include - -#include - -class FbxClassIdInfo; -class FbxObject; -class FbxPropertyHandle; -class FbxManager; - -//! The function pointer type for object constructor functions. -typedef FbxObject* (*FbxObjectCreateProc)(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - -/** Internal class used to differentiate objects during run-time. Essentially, each class has an unique ClassId, that the -* system can request in order to test if the class match the description. This class implement the necessary tools to be able -* to perform hierarchic class testing. This means that a class B that inherits from the class A will answer yes to a "Is A" -* query of type A or B, but will answer no to a class C that can still inherit from A. All class must inherit from FbxObject -* before they can have their own ClassId. When using the standard macros to create new types of objects in the FBX SDK, a -* static ClassId will automatically be generated for that new class. -* -* When objects are exported to an FBX file, their class type is maintained using 3 sort of strings. They are the Object Type -* string, the Object Sub Type string and the Object Type Prefix. There is no good or bad way to choose the value of these -* identifiers, but it is preferable to use meaningful values to keep the ASCII version of FBX readable and easy to understand. -* \see FbxObject */ -class FBXSDK_DLL FbxClassId -{ -public: - //! Constructor. - FbxClassId(); - - /** Advanced constructor were we can specify the general parameters for this ClassId. - * \param pClassName The name of the class represented. - * \param pParentClassId The parent ClassId of this class. - * \param pConstructor A function pointer to a construction method for this ClassId. - * \param pFBXType The FBX file Object Type string associated to this class. - * \param pFBXSubType The FBX file Object Sub Type string associated to this class. */ - FbxClassId(const char* pClassName, const FbxClassId& pParentClassId, FbxObjectCreateProc pConstructor=0, const char* pFBXType=NULL, const char* pFBXSubType=NULL); - - //! Destructor. - void Destroy(); - - /** Retrieve the class name. - * \return The class identification string name. */ - const char* GetName() const; - - /** Retrieve the parent ClassId. - * \return The parent ClassId. */ - FbxClassId GetParent() const; - - /** Create an instance of this class. - * \param pManager The FBX SDK Manager to be used to instantiate this object. This allow the object to use the same memory manager as the provided manager. - * \param pName The name to assign to this new object instance. - * \param pFrom An object to clone if it matches the same ClassId. This is an optional parameter. - * \return The newly created instance of this class. */ - FbxObject* Create(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - - /** Override the function pointer method to construct this object. - * \param pConstructor A newly defined function pointer to a construction method to replace the existing one. - * \return True if the operation was successful. */ - bool Override(FbxObjectCreateProc pConstructor); - - /** Test if this class is a hierarchical children of the specified class type. This is the standard method to differentiate object classes. - * \param pId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool Is(const FbxClassId& pId) const; - - /** Equivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is exactly the same, \c false otherwise. - * \remark This function only perform direct equality test, and doesn't test hierarchic children. */ - bool operator==(const FbxClassId& pClassId) const; - - /** Inequivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is not the same, \c false otherwise. - * \remark This function only perform direct inequality test, and doesn't test hierarchic children. */ - bool operator!=(const FbxClassId& pClassId) const; - - /** Retrieve the FBX file Object Type string associated to this class. - * \param pAskParent If \c true, retrieve the parent ClassId, but only if self ClassId is not valid. - * \return The FBX file Object Type string associated to this class. */ - const char* GetFbxFileTypeName(bool pAskParent=false) const; - - /** Retrieve the FBX file Object Sub Type string associated to this class. - * \return The FBX file Object Sub Type string associated to this class. */ - const char* GetFbxFileSubTypeName() const; - - /** Find out if self ClassId is valid or not. - * \return \c true if self ClassId is valid, \c false otherwise. */ - inline bool IsValid() const { return mClassInfo ? true : false; } - - /** Set the Object Type Prefix string associated to this class. This will change the "ObjectTypePrefix::" found in front - * of object name in the FBX file. This is useful to differentiate objects by their name without using the Object Type or - * Sub Type strings in the file. - * \param pObjectTypePrefix The Object Type prefix string. */ - void SetObjectTypePrefix(const char* pObjectTypePrefix); - - /** Retrieve the Object Type Prefix string associated to this class. - * \return The Object Type Prefix string. */ - const char* GetObjectTypePrefix(); - - /** Retrieve the root property handle of this class. This is useful to access the default property hierarchy for this - * class. This allow users to retrieve information such as the default value for all properties of this class. - * \return The root property handle for this class. */ - FbxPropertyHandle* GetRootClassDefaultPropertyHandle(); - - /** Increase the instance reference count for this class type. - * \return the new count of reference to this class after increment. */ - int ClassInstanceIncRef(); - - /** Decrease the instance reference count for this class type. - * \return the new count of reference to this class after decrement. */ - int ClassInstanceDecRef(); - - /** Retrieve the instance reference count for this class type. - * \return The reference count of this class type. */ - int GetInstanceRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxClassIdInfo* GetClassIdInfo() { return mClassInfo; } - inline const FbxClassIdInfo* GetClassIdInfo() const { return mClassInfo; } - -private: - FbxClassId(FbxClassIdInfo* mClassInfo); - - bool SetFbxFileTypeName(const char* pName); - bool SetFbxFileSubTypeName(const char* pName); - - FbxClassIdInfo* mClassInfo; - - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxClassId -struct FbxClassIdCompare -{ - inline int operator()(const FbxClassId& pKeyA, const FbxClassId& pKeyB) const - { - const FbxClassIdInfo* lKeyA = pKeyA.GetClassIdInfo(); - const FbxClassIdInfo* lKeyB = pKeyB.GetClassIdInfo(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -#include - -#endif /* _FBXSDK_CORE_CLASSID_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxconnectionpoint.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxconnectionpoint.h deleted file mode 100644 index 21057b6..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxconnectionpoint.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconnectionpoint.h -#ifndef _FBXSDK_CORE_CONNECTION_POINT_H_ -#define _FBXSDK_CORE_CONNECTION_POINT_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxConnection -{ -public: - enum EType - { - eNone = 0, - // System or user - eSystem = 1 << 0, - eUser = 1 << 1, - eSystemOrUser = eUser | eSystem, - // Type of Link - eReference = 1 << 2, - eContains = 1 << 3, - eData = 1 << 4, - eLinkType = eReference | eContains | eData, - eDefault = eUser | eReference, - eUnidirectional = 1 << 7 - }; -}; - -class FbxConnectionPointFilter; - -class FBXSDK_DLL FbxConnectionPoint -{ -public: - enum EDirection - { - eDirSrc = 1 << 0, // Contains sources - eDirDst = 1 << 1, // Contains destinations - eDirUni = 1 << 2, // Connection is not 2 ways - eDirBoth = eDirSrc | eDirDst, - eDirMask = eDirSrc | eDirDst | eDirUni - }; - - enum EType - { - eStandard = 0, - eSubConnection = 1 << 3, // Connect is a sub Connect of another - eTypeMask = eSubConnection - }; - - enum EAttribute - { - eDefault = 0, - eCache = 1 << 4, - eAttributeMask = eCache - }; - - enum EAllocFlag - { - eNotAllocated = 0, - eAllocated = 1 << 5, - eAllocFlagMask = eAllocated - }; - - enum ECleanedFlag - { - eNotCleaned = 0, - eCleaned = 1 << 6, - eCleanedFlagMask = eCleaned - }; - - enum EEvent - { - eSrcConnectRequest, - eDstConnectRequest, - eSrcConnect, - eDstConnect, - eSrcConnected, - eDstConnected, - eSrcDisconnect, - eDstDisconnect, - eSrcDisconnected, - eDstDisconnected, - eSrcReplaceBegin, - eSrcReplaceEnd, - eDstReplaceBegin, - eDstReplaceEnd, - eSrcReorder, - eSrcReordered - }; - - // Constructor/Destructor - FbxConnectionPoint(void* pData=0); - virtual ~FbxConnectionPoint(); - - void SetFilter(FbxConnectionPointFilter* pConnectFilter, EType pType=eStandard); - void InternalClear(); - - //! Clear the ConnectList without any regards to what is connected - void WipeConnectionList(); - void Destroy(); - void SubConnectRemoveAll(); - - inline FbxConnectionPoint* GetSubOwnerConnect(){ return GetConnectType() == eSubConnection ? mOwner : NULL; } - inline FbxConnectionPointFilter* GetFilter(){ return mFilter; } - - virtual bool IsInReplace(FbxConnectionPoint* p1, FbxConnectionPoint* p2); - - inline void SetConnectType(EType pType){ mFlags = (mFlags & ~eTypeMask) | pType; } - inline EType GetConnectType(){ return EType(mFlags & eTypeMask); } - inline void SetDirection(int pDirections){ mFlags = (mFlags & ~eDirMask) | pDirections; } - inline EDirection GetDirection(){ return EDirection(mFlags & eDirMask); } - inline void SetAttribute(int pAttributes){ mFlags = (mFlags & ~eAttributeMask) | pAttributes; } - inline EAttribute GetAttribute(){ return EAttribute(mFlags & eAttributeMask); } - inline void SetAllocatedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eAllocated : mFlags & ~eAllocFlagMask; } - inline bool GetAllocatedFlag(){ return ( mFlags & eAllocFlagMask ) ? true : false; } - inline void SetCleanedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eCleaned : mFlags & ~eCleanedFlagMask; } - inline bool GetCleanedFlag(){ return ( mFlags & eCleanedFlagMask ) ? true : false; } - - bool IsValidSrc(FbxConnectionPoint* pConnect); - bool IsValidDst(FbxConnectionPoint* pConnect); - bool IsValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool IsValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool RequestValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - bool RequestValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - - bool ConnectSrc(FbxConnectionPoint* pSrc,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDst(FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectSrcAt(int pDst_SrcIndex, FbxConnectionPoint* pSrc, FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDstAt(int pSrc_DstIndex, FbxConnectionPoint* pDst, FbxConnection::EType pConnectionType=FbxConnection::eNone); - static bool ConnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType); - static bool ConnectAt(FbxConnectionPoint* pSrc, int pSrc_DstIndex, FbxConnectionPoint* pDst, int pDst_SrcIndex, FbxConnection::EType pConnectionType); - - bool DisconnectDst(FbxConnectionPoint* pSrc); - bool DisconnectSrc(FbxConnectionPoint* pSrc); - void DisconnectAllSrc(); - void DisconnectAllDst(); - static bool DisconnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst); - bool DisconnectDstAt(int pIndex); - bool DisconnectSrcAt(int pIndex); - - bool ReplaceInDst(FbxConnectionPoint* pDstOld, FbxConnectionPoint* pDstNew, int pIndexInNew); - bool ReplaceInSrc(FbxConnectionPoint* pSrcOld, FbxConnectionPoint* pSrcNew, int pIndexInNew); - bool ReplaceDstAt(int pIndex, FbxConnectionPoint* pDst); - bool ReplaceSrcAt(int pIndex, FbxConnectionPoint* pSrc); - bool SwapSrc(int pIndexA, int pIndexB); - - /** Change the position of a source Connect. - * \param pIndex Position of the Connect to move. - * \param pAtIndex Position where to move the Connect. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at position pAtIndex. - */ - bool MoveSrcAt(int pIndex, int pAtIndex); - - /** Change the position of a source Connect. - * \param pSrc Connect to move. - * \param pAtSrc Connect at which position to move. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at the position where pAtSrc was before the move. - */ - bool MoveSrcAt(FbxConnectionPoint* pSrc, FbxConnectionPoint* pAtSrc); - - // Access services - bool IsConnectedSrc(FbxConnectionPoint*); - bool IsConnectedDst(FbxConnectionPoint*); - inline bool IsConnected(FbxConnectionPoint* pConnect) { return IsConnectedSrc(pConnect) || IsConnectedDst(pConnect); } - - inline int GetSrcCount() const { return mConnectionList.GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex) const { return mConnectionList.GetSrc(pIndex);} - inline FbxConnection::EType GetSrcType(int pIndex) const { return mConnectionList.GetSrcType(pIndex);} - inline int GetDstCount() const { return mConnectionList.GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex) const { return mConnectionList.GetDst(pIndex);} - inline FbxConnection::EType GetDstType(int pIndex) const { return mConnectionList.GetDstType(pIndex);} - - inline int FindSrc(FbxConnectionPoint* pConnect){ return mConnectionList.FindSrc(pConnect); } - inline int FindDst(FbxConnectionPoint* pConnect){ return mConnectionList.FindDst(pConnect); } - - // Filtered versions - inline int GetSrcCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcCount() : GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrc(pIndex) : GetSrc(pIndex); } - inline FbxConnection::EType GetSrcType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcType(pIndex) : GetSrcType(pIndex); } - inline int GetDstCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstCount() : GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDst(pIndex): GetDst(pIndex); } - inline FbxConnection::EType GetDstType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstType(pIndex) : GetDstType(pIndex); } - - void* GetData(){ return mData; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class ConnectionList - { - public: - ConnectionList(); - ~ConnectionList(); - - void Clear(); - - void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddSrc(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveSrcAt(int pIndex); - int FindSrc(FbxConnectionPoint* pConnect) const; - int GetSrcCount() const; - FbxConnectionPoint* GetSrc(int pIndex) const; - FbxConnection::EType GetSrcType(int pIndex) const; - - void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddDst(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveDstAt(int pIndex); - int FindDst(FbxConnectionPoint* pConnect) const; - int GetDstCount() const; - FbxConnectionPoint* GetDst(int pIndex) const; - FbxConnection::EType GetDstType(int pIndex) const; - - protected: - struct Connection { - Connection(FbxConnectionPoint* pPoint, FbxConnection::EType pType) : mPoint(pPoint), mType(pType){} - FbxConnectionPoint* mPoint; FbxConnection::EType mType; - }; - FbxArray mSrcList; - FbxArray mDstList; - }; - - void SubConnectAdd(FbxConnectionPoint* pConnect); - void SubConnectRemove(FbxConnectionPoint* pConnect); - FbxConnectionPoint* SubConnectFind(FbxConnectionPointFilter* pFilter); - FbxConnectionPoint* SubConnectGetOrCreate(FbxConnectionPointFilter* pFilter); - void SubConnectFill(FbxConnectionPoint* pConnect); - - virtual bool ConnectNotify(EEvent pAction, FbxConnectionPoint* pThis, int pIndex, FbxConnectionPoint* pConnect=NULL, FbxConnection::EType pConnectionType=FbxConnection::eNone, FbxConnectionPoint* pNewConnect=NULL); - virtual void ConnectCleanUp(FbxConnectionPoint* pThis); - - int FindSrcIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - int FindDstIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - - bool InternalMoveSrcBefore(int pIndex, int pBeforeIndex); - -private: - inline void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertSrcAt(pIndex, pConnect, pConnectionType); } - inline void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertDstAt(pIndex, pConnect, pConnectionType); } - inline void RemoveSrcAt(int pIndex){ mConnectionList.RemoveSrcAt(pIndex); } - inline void RemoveDstAt(int pIndex){ mConnectionList.RemoveDstAt(pIndex); } - - static bool InternalConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool UserConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool EmitReplaceNotify(FbxConnectionPoint* pDstOwner, FbxConnectionPoint* pSrcOwner, FbxConnectionPoint* pDst, FbxConnectionPoint* pSrc, EEvent pConnectAction, FbxConnectionPoint* pNew); - - virtual bool SetOwnerConnect(FbxConnectionPoint* pConnect); - inline FbxConnectionPoint* GetOwnerConnect(){ return mOwner; } - bool ConnectOwnedConnect(FbxConnectionPoint* pConnect); - bool DisconnectOwnedConnect(FbxConnectionPoint* pConnect); - - void* mData; - int mFlags; - FbxConnectionPoint* mOwner; - ConnectionList mConnectionList; - FbxArray mSubConnectList; - FbxArray mSubConnectCreatedList; - FbxConnectionPointFilter* mFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Class to manage Connect Filter */ -class FBXSDK_DLL FbxConnectionPointFilter -{ -public: - virtual ~FbxConnectionPointFilter() {}; - - //! Return reference ConnectionPoint filter. - virtual FbxConnectionPointFilter* Ref(); - - //! Cancel reference - virtual void Unref(); - - //! Get unique filter ID - virtual FbxInt GetUniqueId() const { return 0; } - - /** Judge if the given Connection Point is valid - * \param pConnect The given Connection Point. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValid(FbxConnectionPoint* pConnect) const; - - /** Judge if the given Connection Point is a valid connection - * \param pConnect The given Connection Point. - * \param pType Connection type. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValidConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pType) const; - - /** Judge if it is equal with the given ConnectionPoint filter. - * \param pConnectFilter The given ConnectionPoint filter. - * \return \c True if equal, \c false if unequal. */ - virtual bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; -}; - -#include - -#endif /* _FBXSDK_CORE_CONNECTION_POINT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxdatatypes.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxdatatypes.h deleted file mode 100644 index 1b2552c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxdatatypes.h +++ /dev/null @@ -1,267 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdatatypes.h -#ifndef _FBXSDK_CORE_DATA_TYPES_H_ -#define _FBXSDK_CORE_DATA_TYPES_H_ - -#include - -#include -#include - -#include - -/** FBX SDK data type class - * \nosubgrouping - */ -class FBXSDK_DLL FbxDataType -{ -public: - static FbxDataType Create(const char* pName, const EFbxType pType); - static FbxDataType Create(const char* pName, const FbxDataType& pDataType); - - /** - *\name Constructor and Destructor. - */ - //@{ - //! Constructor. - FbxDataType(); - - /** Copy constructor. - * \param pDataType Another FbxDataType object copied to this one. - */ - FbxDataType(const FbxDataType& pDataType); - - //! Destroy this datatype. - void Destroy(); - - /** Constructor. - * \param pTypeInfoHandle Type information handle - */ - FbxDataType(const FbxPropertyHandle& pTypeInfoHandle); - - //! Destructor. - ~FbxDataType(); - //@} - - /** Assignment operator - * \param pDataType Datatype whose value is assigned to this datatype. - * \return This datatype - */ - inline FbxDataType& operator=(const FbxDataType& pDataType){ mTypeInfoHandle=pDataType.mTypeInfoHandle; return *this; } - - /** - * \name boolean operation - */ - //@{ - /** Equality operator - * \param pDataType Datatype to compare to. - * \return \c true if equal,\c false otherwise. - */ - inline bool operator==(const FbxDataType& pDataType) const { return mTypeInfoHandle==pDataType.mTypeInfoHandle; } - - /** Non-equality operator - * \param pDataType Datatype to compare to. - * \return \c true if unequal,\c false otherwise. - */ - inline bool operator!=(const FbxDataType& pDataType) const { return mTypeInfoHandle!=pDataType.mTypeInfoHandle; } - //@} - - /** Test whether this datatype is a valid datatype. - * \return \c true if valid, \c false otherwise. - */ - inline bool Valid() const { return mTypeInfoHandle.Valid(); } - - /** Test if this datatype is the specified datatype. - * \param pDataType Datatype to compare to. - * \return \c true if this datatype is the specified datatype, \c false otherwise. - */ - inline bool Is(const FbxDataType& pDataType) const { return mTypeInfoHandle.Is(pDataType.mTypeInfoHandle); } - - /** Retrieve this data type. - * \return This data type. - */ - EFbxType GetType() const; - - /** Retrieve data type name. - * \return Data type name. - */ - const char* GetName() const; - - /** Retrieve the information handle of this data type. - * \return Information handle of this data type. - */ - inline const FbxPropertyHandle& GetTypeInfoHandle() const { return mTypeInfoHandle; } - -private: - FbxPropertyHandle mTypeInfoHandle; - friend class FbxManager; -}; - -/** Retrieve data type from type enumeration index - * \param pType The type enumeration index - * \return The corresponding data type - */ -FBXSDK_DLL const FbxDataType& FbxGetDataTypeFromEnum(const EFbxType pType); - -/** Retrieve data type name string used by I/O operations - * \param pDataType The data type instance to retrieve its I/O name string - * \return The data type name string - * \remark This function is only used during I/O operations. It is not equal - * to the actual data type name. - */ -FBXSDK_DLL const char* FbxGetDataTypeNameForIO(const FbxDataType& pDataType); - -//! \name Basic Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxBoolDT; - extern FBXSDK_DLL FbxDataType FbxCharDT; - extern FBXSDK_DLL FbxDataType FbxUCharDT; - extern FBXSDK_DLL FbxDataType FbxShortDT; - extern FBXSDK_DLL FbxDataType FbxUShortDT; - extern FBXSDK_DLL FbxDataType FbxIntDT; - extern FBXSDK_DLL FbxDataType FbxUIntDT; - extern FBXSDK_DLL FbxDataType FbxLongLongDT; - extern FBXSDK_DLL FbxDataType FbxULongLongDT; - extern FBXSDK_DLL FbxDataType FbxFloatDT; - extern FBXSDK_DLL FbxDataType FbxHalfFloatDT; - extern FBXSDK_DLL FbxDataType FbxDoubleDT; - extern FBXSDK_DLL FbxDataType FbxDouble2DT; - extern FBXSDK_DLL FbxDataType FbxDouble3DT; - extern FBXSDK_DLL FbxDataType FbxDouble4DT; - extern FBXSDK_DLL FbxDataType FbxDouble4x4DT; - extern FBXSDK_DLL FbxDataType FbxEnumDT; - extern FBXSDK_DLL FbxDataType FbxStringDT; - extern FBXSDK_DLL FbxDataType FbxTimeDT; - extern FBXSDK_DLL FbxDataType FbxReferenceDT; - extern FBXSDK_DLL FbxDataType FbxBlobDT; - extern FBXSDK_DLL FbxDataType FbxDistanceDT; - extern FBXSDK_DLL FbxDataType FbxDateTimeDT; -//@} - -//! \name Extended Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxColor3DT; - extern FBXSDK_DLL FbxDataType FbxColor4DT; - extern FBXSDK_DLL FbxDataType FbxCompoundDT; - extern FBXSDK_DLL FbxDataType FbxReferenceObjectDT; - extern FBXSDK_DLL FbxDataType FbxReferencePropertyDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityInheritanceDT; - extern FBXSDK_DLL FbxDataType FbxUrlDT; - extern FBXSDK_DLL FbxDataType FbxXRefUrlDT; -//@} - -//! \name Transform Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxTranslationDT; - extern FBXSDK_DLL FbxDataType FbxRotationDT; - extern FBXSDK_DLL FbxDataType FbxScalingDT; - extern FBXSDK_DLL FbxDataType FbxQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxLocalTranslationDT; - extern FBXSDK_DLL FbxDataType FbxLocalRotationDT; - extern FBXSDK_DLL FbxDataType FbxLocalScalingDT; - extern FBXSDK_DLL FbxDataType FbxLocalQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxTransformMatrixDT; - extern FBXSDK_DLL FbxDataType FbxTranslationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxRotationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxScalingMatrixDT; -//@} - -//! \name Material Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveDT; - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialBumpDT; - extern FBXSDK_DLL FbxDataType FbxMaterialNormalMapDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparentColorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparencyFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialShininessDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialVectorDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonTextureDT; -//@} - -//! \name Layer Element Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxLayerElementUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementNormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementBinormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTangentDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementMaterialDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTextureDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementPolygonGroupDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUVDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVertexColorDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementSmoothingDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementCreaseDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementHoleDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUserDataDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVisibilityDT; -//@} - -//! \name I/O Specialized Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxAliasDT; - extern FBXSDK_DLL FbxDataType FbxPresetsDT; - extern FBXSDK_DLL FbxDataType FbxStatisticsDT; - extern FBXSDK_DLL FbxDataType FbxTextLineDT; - extern FBXSDK_DLL FbxDataType FbxUnitsDT; - extern FBXSDK_DLL FbxDataType FbxWarningDT; - extern FBXSDK_DLL FbxDataType FbxWebDT; -//@} - -//! \name External Support Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxActionDT; - extern FBXSDK_DLL FbxDataType FbxCameraIndexDT; - extern FBXSDK_DLL FbxDataType FbxCharPtrDT; - extern FBXSDK_DLL FbxDataType FbxConeAngleDT; - extern FBXSDK_DLL FbxDataType FbxEventDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewXDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewYDT; - extern FBXSDK_DLL FbxDataType FbxFogDT; - extern FBXSDK_DLL FbxDataType FbxHSBDT; - extern FBXSDK_DLL FbxDataType FbxIKReachTranslationDT; - extern FBXSDK_DLL FbxDataType FbxIKReachRotationDT; - extern FBXSDK_DLL FbxDataType FbxIntensityDT; - extern FBXSDK_DLL FbxDataType FbxLookAtDT; - extern FBXSDK_DLL FbxDataType FbxOcclusionDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterXDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterYDT; - extern FBXSDK_DLL FbxDataType FbxOrientationDT; - extern FBXSDK_DLL FbxDataType FbxRealDT; - extern FBXSDK_DLL FbxDataType FbxRollDT; - extern FBXSDK_DLL FbxDataType FbxScalingUVDT; - extern FBXSDK_DLL FbxDataType FbxShapeDT; - extern FBXSDK_DLL FbxDataType FbxStringListDT; - extern FBXSDK_DLL FbxDataType FbxTextureRotationDT; - extern FBXSDK_DLL FbxDataType FbxTimeCodeDT; - extern FBXSDK_DLL FbxDataType FbxTimeWarpDT; - extern FBXSDK_DLL FbxDataType FbxTranslationUVDT; - extern FBXSDK_DLL FbxDataType FbxWeightDT; -//@} - -#include - -#endif /* _FBXSDK_CORE_DATA_TYPES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxemitter.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxemitter.h deleted file mode 100644 index 32f6170..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxemitter.h +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxemitter.h -#ifndef _FBXSDK_CORE_EMITTER_H_ -#define _FBXSDK_CORE_EMITTER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Base class to emit event with the specified event type. -* The event type could be a specific class which derived from FbxEvent. Please read FbxEmitter::Emit() for more details. -* Event emitter contains a list of event handlers. -* FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. -* Before using emitter to emit an event, one or more event handlers must be added to the handlers list of current emitter. -* In other words, it's "bind event handlers to emitter". -* There are two ways to bind event handlers to emitter. -* \li 1. If you already got an event handler and would like to bind it to current emitter, please call FbxEmitter::AddListener(). -* \li 2. Or you can create an event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the specified emitter. -* It's similar to unbind or remove an even handler. For more details, -* \see FbxEmitter::RemoveListener() -* \see FbxListener::Unbind() -* \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventHandler FbxEvent FbxEventBase -*/ -class FBXSDK_DLL FbxEmitter -{ -public: - /** Add the specified event handler to current emitter list. - * \param pHandler The event handler will be added to the handlers list of current emitter. */ - void AddListener(FbxEventHandler& pHandler); - - /** Remove the specified event handler from current emitter list. - * \param pHandler The event handler will be removed from the handlers list of current emitter. */ - void RemoveListener(FbxEventHandler& pHandler); - - /** Emit an event with the specified the event type. One the event is emitted, the listener to this event will receive a signal. - * \param pEvent Specify the event type to emit. Could be a specific class which derived from FbxEvent, such as FbxObjectPropertyChanged. - * \see FbxEventBase FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport - * \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary */ - template void Emit(const EventType& pEvent) const - { - if( !mData ) return; - EventHandlerList::iterator itBegin = mData->mEventHandlerList.Begin(); - EventHandlerList::iterator itEnd = mData->mEventHandlerList.End(); - for( EventHandlerList::iterator it = itBegin; it != itEnd; ++it ) - { - if ((*it).GetHandlerEventType() == pEvent.GetTypeId()) - { - (*it).FunctionCall(pEvent); - } - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEmitter(); - ~FbxEmitter(); - -protected: - typedef FbxIntrusiveList EventHandlerList; - struct EventData { EventHandlerList mEventHandlerList; }; - EventData* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_EMITTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxevent.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxevent.h deleted file mode 100644 index b0c02f1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxevent.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxevent.h -#ifndef _FBXSDK_CORE_EVENT_H_ -#define _FBXSDK_CORE_EVENT_H_ - -#include - -#include - -#include - -/** FBX SDK event base class. - * An event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. - * You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return - * it to you with the right information in it. FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. - * Meanwhile, plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * The derived class of FbxEventBase contains a type ID to distinguish different types of events. - * FBX object can emit different types of FBX events at different conditions. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * For example, if a certain property of a FBX object is changed, the FBX object(emitter) can emit an event which type is FbxObjectPropertyChanged. - * The plug-in(listener) who are listening to FbxObjectPropertyChanged, will receive a signal and take action to process the event data. - * \nosubgrouping - * \see FbxEvent FbxEventHandler FbxListener FbxEmitter - */ -class FBXSDK_DLL FbxEventBase -{ - public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor - virtual ~FbxEventBase(); - //@} - - /** Retrieve the event type ID - * \return type id - */ - virtual int GetTypeId() const = 0; - - /** Force events to give us a name - * \return event name - */ - virtual const char* GetEventName() const = 0; - - protected: - static int GetStaticTypeId(const char*); -}; - -// Force events to declare a name by using an abstract method, and force them to use -// the proper name by making the call from FbxEvent<> go through the private static -// method. -#define FBXSDK_EVENT_DECLARE(Class) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: static const char* FbxEventName() { return #Class; } \ - friend class FbxEvent; \ - -// -// Similar to above, but to be used when you've got an event template, and the -// type is something know to FBX -// -#define FBXSDK_EVENT_TYPE_DECLARE(Class, FBXType) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: \ - static const char* FbxEventName() { \ - static FbxString lEventName = FbxString(#Class) + FbxString("<") + \ - FbxGetDataTypeFromEnum(FbxTypeOf(FBXType())).GetName() + ">"; \ - \ - return lEventName.Buffer(); \ - } \ - friend class FbxEvent< Class >; - - - -//This is for templates classes that will uses non fbxtypes in their templates -//We force the the creation of an UNIQUE string for each types so that we can -//retrieve the event within multiple DLLs - -//to be able to use this, the char EventName[] = "uniqueEventName"; must be declared -//globally. - -#define FBXSDK_EVENT_TEMPLATE_HEADER(ClassName, TemplateName)\ -template < class TemplateName, const char* T > \ -class ClassName: public FbxEvent< ClassName >\ -{\ - public: virtual const char* GetEventName() const {return FbxEventName();}\ - private: static const char* FbxEventName() {\ - static FbxString lEventName = (FbxString(#ClassName) +"<"+ FbxString(T) +">");\ - return lEventName.Buffer();\ - }\ - friend class FbxEvent< ClassName >; - - -//This is the footer macro, to put at the end to close the template class -//created by FBXSDK_EVENT_TEMPLATE_HEADER -#define FBXSDK_EVENT_TEMPLATE_FOOTER()\ -}; - -/** FBX event class, derived from FbxEventBase, and it contains a type ID for event. -* It's a template class. You can derive your own types of even. Such as: -* \code class FbxEventCustom : public FbxEvent \endcode -* \see FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport -* \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary -* \nosubgrouping -* \remarks A FBX event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. -* An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \see FbxEventBase FbxEventHandler FbxListener FbxEmitter -*/ -//--------------------------------------------------- -// T : We use the curiously recurring template pattern -// to initialize the typeId of each event type -template class FbxEvent : public FbxEventBase -{ -public: - //!Destructor - virtual ~FbxEvent(){} - - /** Update the type ID of current event with the given type ID. - * \param pTypeId the new type ID. - */ - static void ForceTypeId(int pTypeId) - { - // This is to handle specific cases where the type ID must be hard coded - // It is useful for shared event across DLL. We can then guarantee that - // The ID of a certain type will always have the same ID - smTypeId = pTypeId; - } - - /** Retrieve the event type ID - * \note This may be called from multiple threads. - * \return type id - */ - virtual int GetTypeId() const - { - return GetStaticTypeId(); - } - - /** Retrieve the event type ID - * \return type id - */ - static int GetStaticTypeId() - { - if( !smTypeId ) - { - if( !smTypeId ) - { - // If this does not compile, you need to add - // FBXSDK_EVENT_DECLARE(YourEventClassName) to your class declaration - smTypeId = FbxEventBase::GetStaticTypeId(T::FbxEventName()); - } - } - - return smTypeId; - } - -private: - //! The type ID of event - static int smTypeId; -}; - -// Static members implementation -template int FbxEvent::smTypeId = 0; - -#include - -#endif /* _FBXSDK_CORE_EVENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxeventhandler.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxeventhandler.h deleted file mode 100644 index 5cf4521..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxeventhandler.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxeventhandler.h -#ifndef _FBXSDK_CORE_EVENT_HANDLER_H_ -#define _FBXSDK_CORE_EVENT_HANDLER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Event handler class contains a listener and a callback function. -* Event handler is used to bind emitter and listener together. Its callback function can process event data. -* To generate a valid event handler, you can create an event emitter and event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the listener and the created emitter. -* After that, the emitter and listener are bound together via event handler. -* \remarks An object(emitter) can emit a certain type of event, the object(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventBase FbxEvent FbxEmitter -*/ -class FbxEventHandler -{ -public: - //! Event handler base type. - enum EType - { - eListener, //!< Listener event handler type. - eEmitter, //!< Emitter event handler type. - eCount //!< Count of different event handler types. - }; - - /** Get event type of current handler. - * \return The type ID of event. */ - virtual int GetHandlerEventType()=0; - - /** Call function that process event data. - * \param pEvent specify the event type. pEvent could be a specific class which derived from FbxEventBase. - * \see FbxEventBase */ - virtual void FunctionCall(const FbxEventBase& pEvent)=0; - - /** Get listener of current handler. - * \return A pointer to the listener object. */ - virtual FbxListener* GetListener()=0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEventHandler(){} - virtual ~FbxEventHandler(){} - - FBXSDK_INTRUSIVE_LIST_NODE(FbxEventHandler, eCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*); - -public: - FbxMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxConstMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*) const; - -public: - FbxConstMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxFuncEventHandler : public FbxEventHandler -{ - typedef void (*CallbackFnc)(const EventType*, FbxListener*); - -public: - FbxFuncEventHandler(FbxListener* pListener, CallbackFnc pFunction) : mListener(pListener), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mFunction)(reinterpret_cast(&pEvent), mListener); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - FbxListener* mListener; - CallbackFnc mFunction; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_EVENT_HANDLER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxlistener.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxlistener.h deleted file mode 100644 index 85b13c9..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxlistener.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlistener.h -#ifndef _FBXSDK_CORE_LISTENER_H_ -#define _FBXSDK_CORE_LISTENER_H_ - -#include - -#include -#include -#include - -#include - -/**FBX SDK listener class. Once an event is emitted by an emitter, a listener should be created to listen to the event. - * The listener could receive a signal and take action to process the event data. - * \note The data will be process by the callback function of FbxListener::Bind(). - * Plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * To emit event, you could create an emitter and a listener, and then bind them together via event handler. - * To listen to an event which is emitted by an emitter, you should bind current listener to the emitter by calling FbxListener::Bind(). - * Event listener contains a list of event handlers. - * \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, - * will receive a signal and take action to process the event data. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * \see FbxEmitter FbxEventHandler FbxEvent FbxEventBase - */ -class FBXSDK_DLL FbxListener -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor. - ~FbxListener(); - //!Constructor. - FbxListener(){} - //@} - - //////////////////////////////////////////////////////////////////////////////////////// - /** - * \name Bind and unbind methods - */ - //@{ - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)) - { - FbxMemberFuncEventHandler* eventHandler = - FbxNew< FbxMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)const) - { - FbxConstMemberFuncEventHandler* eventHandler = - FbxNew< FbxConstMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (*pFunc)(const EventType*,FbxListener*)) - { - FbxFuncEventHandler* eventHandler = - FbxNew< FbxFuncEventHandler >(this, pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Unbind an event handler. The specified event handler will be removed from the handlers list of current listener. - * \param aBindId The event handler to unbind. - */ - void Unbind(const FbxEventHandler* aBindId); - //@} - -private: - typedef FbxIntrusiveList EventHandlerList; - EventHandlerList mEventHandler; -}; - -#include - -#endif /* _FBXSDK_CORE_LISTENER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxloadingstrategy.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxloadingstrategy.h deleted file mode 100644 index 393defc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxloadingstrategy.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxloadingstrategy.h -#ifndef _FBXSDK_CORE_LOADING_STRATEGY_H_ -#define _FBXSDK_CORE_LOADING_STRATEGY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * Abstract class used to implemented some plug-in loading strategy. - * A loading strategy dictate how some plug-ins will be loaded for instance. - * We could have a simple strategy that loads only a single dll on PC. - * We could also implement a strategy that load multiple dlls from a directory. - */ -class FBXSDK_DLL FbxLoadingStrategy : public FbxPluginContainer -{ -public: - /** Result state of loading plug-in. - */ - enum EState - { - eAllLoaded, //!< Plug-ins are loaded. - eNoneLoaded, //!< No plug-ins are loaded. - eAllFailed, //!< Plug-ins failed to load. - eSomeFailed //!< Not all found plug-ins are loaded. - }; - - /** - *\name Public interface - */ - //@{ - /** Execute the operation of loading the plug-in(s). The way it is executed is determined by the specific implementations. - * \param pData Plug in data that can be access inside the plug-ins. - * \return The state of the loading action. - */ - EState Load(FbxPluginData& pData); - - /** Execute the operation of unloading the plug-in(s). The way it is executed is determined by the specific implementations. - */ - void Unload(); - //@} - -protected: - /** - *\name User implementation - */ - //@{ - /** Called by the Load method, it contains the specific user implementation strategy to load the desired plug-in(s). - * \param pData Plug in data that can be access inside the plug-ins. - * \return If the plugin loading is successful return \c true, otherwise return \c false - */ - virtual bool SpecificLoad(FbxPluginData& pData) = 0; - - /** Called by the Unload method, it contains the specific user implementation strategy to unload the desired plug-in(s). - */ - virtual void SpecificUnload(FbxPluginData& pData) = 0; - //@} - - //! Whether the plugin is loaded or not. - EState mPluginsLoadedState; - -private: - FbxPluginData mData; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_LOADING_STRATEGY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxmanager.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxmanager.h deleted file mode 100644 index 39340df..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxmanager.h +++ /dev/null @@ -1,555 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanager.h -#ifndef _FBXSDK_CORE_MANAGER_H_ -#define _FBXSDK_CORE_MANAGER_H_ - -#include - -#include - -#include - -class FbxIOSettings; -class FbxIOPluginRegistry; -class FbxAnimEvaluator; -class FbxSceneReference; -class FbxUserNotification; -class FbxMessageEmitter; -class FbxLocalizationManager; -class FbxXRefManager; -class FbxManager_internal; - -#ifndef FBXSDK_ENV_WINSTORE - class FbxPlugin; -#endif - -/** SDK object manager. - * The SDK manager is in charge of: - * \li scene element allocation, for example, FbxScene::Create(pSdkManager, ""). - * \li scene element deallocation, call FbxManager::Destroy() to deallocates all object created by the SDK manager. - * \li scene element search and access, please see \ref GlobalObjectManagement section. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * It must be done before the first FbxManager creation. - * - * FbxSetMallocHandler(); - * FbxSetCallocHandler(); - * FbxSetReallocHandler(); - * FbxSetFreeHandler(); - * - * Upon destruction, all objects allocated by the SDK manager and not explicitly destroyed are destroyed as well. - * A derived class can be defined to allocate and deallocate specialized scene elements. - * \remarks You could create more than one SDK manager. However, it's better to NOT share the same object among different managers. - * \nosubgrouping - */ -class FBXSDK_DLL FbxManager -{ -public: - /** - * \name FBX SDK Manager Creation/Destruction - */ - //@{ - /** SDK manager allocation method. - * \return A pointer to the SDK manager or \c NULL if this is an - * evaluation copy of the FBX SDK and it is expired. - */ - static FbxManager* Create(); - - /** Destructor. - * Deallocates all object previously created by the SDK manager. - */ - virtual void Destroy(); - //@} - - /** - * \name Versions Queries - */ - //@{ - /** Get FBX SDK version string. - * \param pFull If true, the complete version string including revision number and release date will be returned, - * otherwise only the version numbering is returned. - */ - static const char* GetVersion(bool pFull=true); - - /** Get the current default FBX file format version number for this version of the FBX SDK. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - */ - static void GetFileFormatVersion(int& pMajor, int& pMinor, int& pRevision); - //@} - - - /** - * \name Object Registration, Definition and Management - */ - //@{ - /** Class registration. - * \param pName The class name. For example, "FbxMesh" for FbxMesh class. - * \param T1 FBX type of the specified class. - * \param T2 FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterFbxClass("FbxCamera", FBX_TYPE(FbxCamera), FBX_TYPE(FbxNodeAttribute)); \endcode - */ - template inline FbxClassId RegisterFbxClass(const char* pName, const T1* /*T1*/, const T2* /*T2*/, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0) - { - T1::ClassId = Internal_RegisterFbxClass(pName, T2::ClassId, (FbxObjectCreateProc)T1::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - return T1::ClassId; - } - - /** Runtime class registration. - * \param pName The class name. For example, "FbxUIWidgetBoolean". - * \param T FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterRuntimeFbxClass( "FbxUIWidgetBoolean", FBX_TYPE(FbxUIWidgetDefinition), NULL, "FbxUIWidgetBoolean"); \endcode - */ - template inline FbxClassId RegisterRuntimeFbxClass(const char* pName, const T* /*T*/, const char* pFbxFileTypeName=0,const char* pFbxFileSubTypeName=0) - { - return Internal_RegisterFbxClass(pName, T::ClassId, (FbxObjectCreateProc)T::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - } - - /** Runtime class unregistration. - * \param pName The class name. - */ - inline void UnregisterRuntimeFbxClass(const char* pName) - { - FbxClassId lClassId = FindClass(pName); - if( !(lClassId == FbxClassId()) ) - { - Internal_UnregisterFbxClass(lClassId); - } - } - - /** Override class. - * \param pFBX_TYPE_Class FBX type of class. - * \param pFBX_TYPE_OverridenClass FBX type of overridden class. - * \return The class Id - */ - template inline FbxClassId OverrideFbxClass(const T1* pFBX_TYPE_Class, const T2* pFBX_TYPE_OverridenClass) - { - T1::ClassId = Internal_OverrideFbxClass(T2::ClassId,(FbxObjectCreateProc)T1::Allocate ); - return T1::ClassId; - } - - /** Create a new object of the specified ClassId. - * \param pClassId The ClassId of the object to be created. - * \param pName The name given to the newly created object. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean - * the new object will become a source to the container, connection-wise. - * \param pCloneFrom A valid object pointer to use as the reference for cloning the object upon construction. - * \return If not null, a new instance of the specified class. - * \remark This function will return NULL if the ClassId used is invalid. New ClassId can be registered using - * the function RegisterFbxClass(). - */ - FbxObject* CreateNewObjectFromClassId(FbxClassId pClassId, const char* pName, FbxObject* pContainer=NULL, const FbxObject* pCloneFrom=NULL); - - /** Find class by the specified name. - * \param pClassName Class Name to find. - */ - FbxClassId FindClass(const char* pClassName) const; - - /** Find file class. - * \param pFbxFileTypeName Specify the type name in FBX file to find. - * \param pFbxFileSubTypeName Specify by The sub type name in FBX file to find. - */ - FbxClassId FindFbxFileClass(const char* pFbxFileTypeName, const char* pFbxFileSubTypeName) const; - - /** Class unregistration. - * \param pFBX_TYPE_Class FBX type of unregistered class. - */ - template inline void UnregisterFbxClass(const T*) - { - Internal_UnregisterFbxClass(T::ClassId); - T::ClassId = FbxClassId(); - } - //@} - - /** - * \name Data Type Management - */ - //@{ - /** Register a new data type to the manager - * \param pName The type name. - * \param pType The data type. - * \return The newly created FbxDataType - */ - FbxDataType CreateDataType(const char* pName, const EFbxType pType); - - /** List the data types - * \return the number of registered datatypes - */ - int GetDataTypeCount() const; - - /** Find a data types at pIndex. - * \param pIndex The data type index. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataType(const int pIndex) const; - - /** Find a data type from the type name. - * \param pDataType The type name. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataTypeFromName(const char* pDataType) const; - //@} - - /** - * \name User Notification Object - */ - //@{ - /** Access to the unique UserNotification object. - * \return The pointer to the user notification or \c NULL \c if the object - * has not been allocated. - */ - FbxUserNotification* GetUserNotification() const; - - /** Set the user notification - * \param pUN - */ - void SetUserNotification(FbxUserNotification* pUN); - //@} - - /** - * \name IOSettings Object - */ - //@{ - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings* GetIOSettings() const; - - /** Set the IOSettings pointer - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings* pIOSettings); - //@} - - - /** - * \name Message Emitter (for Message Logging) - */ - //@{ - /** Access to the unique FbxMessageEmitter object. - * \return The pointer to the message emitter. - */ - FbxMessageEmitter& GetMessageEmitter(); - /** Sets to the unique FbxMessageEmitter object. - * \param pMessageEmitter the emitter to use, passing NULL will reset to the default emitter. - * The object will be deleted when the SDK manager is destroyed, thus ownership is transfered. - */ - bool SetMessageEmitter(FbxMessageEmitter* pMessageEmitter); - //@} - - - /** - * \name Localization Hierarchy - */ - //@{ - /** Add a localization object to the known localization providers. - * \param pLocManager the localization object to register. - */ - void AddLocalization(FbxLocalizationManager* pLocManager); - - /** Remove a localization object from the known localization providers. - * \param pLocManager the localization object to remove. - */ - void RemoveLocalization(FbxLocalizationManager* pLocManager); - - /** Select the current locale for localization. - * \param pLocale the locale name, for example "fr" or "en-US". - */ - bool SetLocale(const char* pLocale); - - /** Localization helper function. Calls each registered localization manager - * until one can localizes the text. - * \param pID the identifier for the text to localize. - * \param pDefault the default text. Uses pID if NULL. - * \return the potentially localized text. May return the parameter passed in. - */ - const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name XRef Manager - */ - //@{ - /** Retrieve the manager responsible for managing object XRef resolution. - * \return The XRef manager for this SDK manager. - */ - FbxXRefManager& GetXRefManager(); - //@} - - /** - * \name Library Management - */ - //@{ - /** Retrieve the main object Libraries - * \return The Root library - */ - FbxLibrary* GetRootLibrary() const; - FbxLibrary* GetSystemLibraries() const; - FbxLibrary* GetUserLibraries() const; - //@} - - /** - * \name Plug-in Registry Object - */ - //@{ - /** Access to the unique FbxIOPluginRegistry object. - * \return The pointer to the user FbxIOPluginRegistry - */ - FbxIOPluginRegistry* GetIOPluginRegistry() const; - //@} - - /** - * \name Fbx Generic Plugins Management - */ - //@{ - #ifndef FBXSDK_ENV_WINSTORE - /** Load plug-ins directory - * \param pFilename The directory path. - * \param pExtensions The plug in extension. - * \return \c True - */ - bool LoadPluginsDirectory(const char* pFilename, const char* pExtensions=NULL); - - /** Load plug-in - * \param pFilename The file name - * \return \c True - */ - bool LoadPlugin(const char* pFilename); - - /** Unload all plug-ins - */ - bool UnloadPlugins(); - - /** Emit plugins event. - * \param pEvent The event to be emitted. - */ - bool EmitPluginsEvent(const FbxEventBase& pEvent); - - //!Get plugins. - FbxArray GetPlugins() const; - - /** get plugins count - * \return The number of plugins. - */ - int GetPluginCount() const; - - /** Find plug in. - * \param pName The plug in name. - * \param pVersion The plug in version. - * \return The plugin, \c null if not found. - */ - FbxPlugin* FindPlugin(const char* pName, const char* pVersion) const; - #endif /* !FBXSDK_ENV_WINSTORE */ - //@} - - - /** - * \name IO Settings - */ - //@{ - // Add IOSettings in hierarchy from different modules - - /** Fill IO Settings for registered readers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings& pIOS); - - /** Fill IO Settings for registered writers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings& pIOS); - - /** Fill common IO Settings - * \param pIOS The properties hierarchies to fill. - * \param pImport If \c true, import properties are set, otherwise export properties are set. - */ - void FillCommonIOSettings(FbxIOSettings& pIOS, bool pImport); - //@} - - /** - * \name Global Object Management - */ - //@{ - /** Register object with the manager. - * \internal - * \param pObject The object to be registered. - * \anchor GlobalObjectManagement - */ - void RegisterObject(FbxObject* pObject); - - /** Unregister object with the manager. - * \internal - * \param pObject The object to be unregistered. - */ - void UnregisterObject(FbxObject* pObject); - - /** Register a list of objects with the manager. - * \internal - * \param pArray The list of object to be registered. - */ - void RegisterObjects(const FbxArray& pArray); - - /** Unregister a list of objects with the manager. - * \internal - * \param pArray The list of object to be unregistered. - */ - void UnregisterObjects(const FbxArray& pArray); - - /** Increment the scene destroying counter. - * \remarks Call this function before the destroying list is changed. - */ - void IncreaseDestroyingSceneFlag(); - /** Shrink the object list and decrements the scene destroying counter. - * \remarks Call this function after the destroying is changed. - * Use IncreasDestroyingSceneFlag() and DecreaseDestroyingSceneFlag() in pairs. - */ - void DecreaseDestroyingSceneFlag(); - /** - * \name Reference Management - */ - //@{ - /** Get number of references. - * \return Number of references. - */ - int GetReferenceCount() const; - - /** Get reference at given index. - * \param pIndex Position in the list of references. - * \return Pointer to the reference or \c NULL if index is out of bounds. - */ - FbxSceneReference* GetReference(int pIndex) const; - - /** Add a reference. - * \param pReference The reference to be added. - * \return If the reference is correctly added to the scene, return \c true otherwise, if the reference is - * already there, returns \c false. - */ - int AddReference(FbxSceneReference* pReference); - - /** Remove the specified reference from reference list. - * \param pReference The reference to be removed. - * \return If the reference was successfully removed, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool RemoveReference(FbxSceneReference* pReference); - - /** Clear the specified reference from the SDK manager. - * \param pReference The reference to be removed. - * \return If the reference was successfully cleared from the SDK manager, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool ClearReference(FbxSceneReference* pReference); - //@} - - /** Add a prefix to a name. - * \param pPrefix The prefix to be added to the \c pName. This - * string must contain the "::" characters in order to be considered - * as a prefix. - * \param pName The name to be prefix. - * \return The prefixed string - * \remarks If a prefix already exists, it is removed before - * adding \c pPrefix. - */ - static FbxString PrefixName(const char* pPrefix, const char* pName); - - /** Get the count of document available in this manager - * \return The count of document owned by this manager. - */ - int GetDocumentCount(); - - /** Get the document at pIndex in the manager's list. - * \param pIndex The index of the document to retrieve. - * \return The document at the specified index. Will return NULL if index is invalid. - */ - FbxDocument* GetDocument(int pIndex); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxManager* GetDefaultManager(); - void CreateMissingBindPoses(FbxScene* pScene); - int GetBindPoseCount(FbxScene *pScene) const; - int GetFbxClassCount() const; - FbxClassId GetNextFbxClass(FbxClassId pClassId /* invalid id: first one */) const; - -protected: - FbxManager(); - virtual ~FbxManager(); - - void Clear(); - void ClassInit(); - void ClassRelease(); - void DataTypeInit(); - void DataTypeRelease(); - -private: - bool CanAutoDestroySrcObject(FbxObject* pObject, FbxObject* pSrcObject, bool pRecursive) const; - - void Create_Common_Import_IOSettings_Groups(FbxIOSettings& pIOS); - void Create_Common_Export_IOSettings_Groups(FbxIOSettings& pIOS); - void Add_Common_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_Export_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Export_IOSettings(FbxIOSettings& pIOS); - - FbxClassId Internal_RegisterFbxClass(const char* pClassName, FbxClassId pParentClassId, FbxObjectCreateProc=0, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0); - bool Internal_RegisterFbxClass(FbxClassId pClassId); - FbxClassId Internal_OverrideFbxClass(FbxClassId pClassId, FbxObjectCreateProc=0); - void Internal_UnregisterFbxClass(FbxClassId pClassId); - - void RemoveObjectsOfType(const FbxClassId& pClassId); - - FbxAnimEvaluator* GetDefaultAnimationEvaluator(); - - FbxArray mObjects; - FbxArray mDocuments; - - FbxIOSettings* mIOSettings; - FbxIOPluginRegistry* mRegistry; - FbxUserNotification* mUserNotification; - FbxMessageEmitter* mMessageEmitter; - FbxArray mLocalizationManagerArray; - FbxArray mSceneReferenceArray; - FbxAnimEvaluator* mDefaultAnimationEvaluator; - - FbxArray mDestroyingObjects; - FbxArray mDestroyingDocuments; - int mIsDestroyingScene; - - FbxManager_internal* mInternal; - static FbxManager* smDefaultManager; - - FBXSDK_FRIEND_NEW(); - friend class FbxObject; - friend class FbxProperty; //For GetDefaultAnimationEvaluator() - friend class FbxNode; //For GetDefaultAnimationEvaluator() - friend class FbxScene; //For GetDefaultAnimationEvaluator() - friend class FbxAnimEvaluator; //For GetDefaultAnimationEvaluator() -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MANAGER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxmodule.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxmodule.h deleted file mode 100644 index cdac5bb..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxmodule.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmodule.h -#ifndef _FBXSDK_CORE_MODULE_H_ -#define _FBXSDK_CORE_MODULE_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -typedef void* FbxModule; - -/** Loads the specified module into the address space of the calling process. - * \param pFilePath The full file path name of the module to load. - * \return The module handle if it successfully loaded, otherwise NULL. - * \remark The specified module may cause other modules to be loaded. - */ -FBXSDK_DLL FbxModule FbxModuleLoad(const char* pFilePath); - -/** Retrieves the address of an exported function or variable from the specified module. - * \param pModuleHandle A valid module handle. - * \param pProcName The procedure name to search. - * \return The procedure handle if valid, otherwise NULL. - */ -FBXSDK_DLL void* FbxModuleGetProc(FbxModule pModuleHandle, const char* pProcName); - -/** Frees the loaded module and, if necessary, decrements its reference count. - * \param pModuleHandle A valid module handle. - * \return \c true on success, \c false otherwise. - * \remark When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid. - */ -FBXSDK_DLL bool FbxModuleFree(FbxModule pModuleHandle); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_MODULE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxobject.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxobject.h deleted file mode 100644 index 1508f42..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxobject.h +++ /dev/null @@ -1,1557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobject.h -#ifndef _FBXSDK_CORE_OBJECT_H_ -#define _FBXSDK_CORE_OBJECT_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxDocument; -class FbxImplementation; -class FbxImplementationFilter; -class FbxLibrary; -class FbxMessage; -class FbxPeripheral; -class FbxUserDataRecord; -class FbxConnectEvent; - -//! \internal Macro used to declare ClassId mechanics. -#define FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ -private:\ - Class(const Class&);\ - Class& operator=(const Class&);\ -protected:\ - virtual ~Class(){};\ -public:\ - static FbxClassId ClassId;\ - virtual FbxClassId GetClassId() Const_Override { return ClassId; }\ - friend class FBXSDK_NAMESPACE::FbxManager;\ - typedef Parent ParentClass;\ - static Class* Create(FbxManager* pManager, const char* pName);\ - -//! \internal Macro used to declare the FbxObject class. -#define FBXSDK_FBXOBJECT_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_FRIEND_NEW()\ - static Class* Create(FbxObject* pContainer, const char* pName);\ -protected:\ - static Class* Allocate(FbxManager* pManager, const char* pName, const Class* pFrom);\ - -//! Macro used to declare a new class derived from FbxObject. -#define FBXSDK_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_FBXOBJECT_DECLARE(Class, Parent, const override)\ -protected:\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to declare a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_CLASS_DECLARE(Class, Parent, const override)\ -protected:\ - static FbxObjectCreateProc Allocate;\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to implement a new class derived from FbxObject. -#define FBXSDK_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - Class* Class::Create(FbxObject* pContainer, const char* pName)\ - {\ - FBX_ASSERT_RETURN_VALUE(pContainer && pContainer->GetFbxManager(), NULL);\ - return (Class*)pContainer->GetFbxManager()->CreateNewObjectFromClassId(Class::ClassId, pName, pContainer);\ - }\ - Class* Class::Allocate(FbxManager* pManager, const char* pName, const Class* pFrom)\ - {\ - Class* lNewObject = FbxNew(*pManager, pName);\ - lNewObject->Construct(pFrom);\ - lNewObject->SetObjectFlags(FbxObject::eInitialized, true);\ - return lNewObject;\ - }\ - -//! Macro used to implement a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - FbxObjectCreateProc Class::Allocate = 0;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - -/** The base class of most FBX objects. Provides the benefits of connectivity, identity, run-time typing, - * properties, naming, copying, cloning, selection, and automated file IO. Most of - * the FBX SDK API deals with FbxObject pointers when it comes to manipulate objects in its simplest form. - * - * The ClassID mechanism replaces the dynamic_cast mechanism for efficient run-time type information. - * - * The FbxObject provides methods for managing the connections between objects. - * Using connections, objects can be related to each other to form hierarchies or structures. All of - * the FBX scene's object relations are expressed as connections between objects. Those connections can - * be altered as needed to reflect most kind of setups encountered in this world. For example, - * connections can be used to express parenting between transform nodes. Connections are not strict in - * the sense that we allow any type of objects to connect to any other type of objects. The meaning of - * the connection is purely semantic. As of yet, we do not provide the functionality to validate if - * the connections made by the users are allowed or not. - * - * FbxObject provide a property (FbxProperty) mechanism to describe characteristics of - * objects in a scene. Properties may be either static or dynamic. Static properties are defined in the class direction - * and can be accessed directly by their name on the object exposing them without - * the need for a search in the property list of the object. Dynamic properties can be added during run-time, - * while the program is running. Objects can have an unlimited amount of properties. - * Properties can be listed at run-time, allowing for a flexible support of custom data - * on objects, since they might be considered by the FBX file readers/writers depending on the flags set. - * - * Here is an example of a new empty minimal class template for FBX objects: - * \code - * //Declaration - * class MyClass : public FbxObject - * { - * FBXSDK_OBJECT_DECLARE(MyClass, FbxObject); //Be careful! The second parameter to this macro must be the parent class name! - * - * public: - * //Declare methods and properties here... - * }; - * \endcode - * \code - * //Implementation - * FBXSDK_OBJECT_IMPLEMENT(MyClass); - * \endcode - * Before the new class can be used, it needs to be registered to the manager with the following method: - * \code - * MyFbxManager->RegisterFbxClass("MyClassName", FBX_TYPE(MyClass), FBX_TYPE(FbxObject)); //Be careful! The 3rd parameter must be the parent class! If the parent class change, it must be updated here too! - * \endcode - * Then to create or delete instances of your new class, the following methods must be used: - * \code - * //Creating a new instance - * MyClass* MyObject = MyClass::Create(MyFbxManager, "Object Name"); - * - * //Deleting this instance - * MyObject->Destroy(); - * MyObject = NULL; - * \endcode - * \see FbxProperty - */ -class FBXSDK_DLL FbxObject : public FbxEmitter -{ - FBXSDK_FBXOBJECT_DECLARE(FbxObject, FbxEmitter, const); - -public: - //! \name General Object Management - //@{ - /** Templated test if this class is a hierarchical children of the specified class type. - * \return \c true if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - template inline bool Is() const { return GetClassId().Is(T::ClassId); } - - /** Retrieve the FbxManager this object belongs to. - * \return A pointer to the manager that this object belongs to. */ - FbxManager* GetFbxManager() const; - - /** Returns a const pointer to the document that contains this object. - * \return A const pointer to the document that contains this object or \c NULL if the object does not belong to any document. */ - FbxDocument* GetDocument() const; - - /** Returns a const pointer to the root document that contains this object. - * \return A const pointer to the root document that contains this object or \c NULL if the object does not belong to any document. - * \remarks It returns this pointer if this object is a document object and does not belong to any document. That means this object is the root document. */ - FbxDocument* GetRootDocument() const; - - /** Returns a const pointer to the scene that contains this object. - * \return A pointer to the scene that contains this object or \c NULL if the object does not belong to any scene. */ - FbxScene* GetScene() const; - - /** Unregister and delete this object from memory. This will also breaks all connections as well as removing all the instance of all the properties of this object with the object's class. - * \param pRecursive If true, all children (source) objects will also be unregistered and deleted. */ - void Destroy(bool pRecursive=false); - - /** Reset all the properties of this object to their default values. */ - void ResetProperties(); - //@} - - //! \name Object Flags Management - //@{ - //! Flags available to control objects. - enum EObjectFlag - { - eNone = 0, //!< No flags. - eInitialized = 1 << 0, //!< Automatically set when FbxObject::Construct() is completed. - eSystem = 1 << 1, //!< When set, object is deleted upon FbxManager destroy only. Use carefully! - eSavable = 1 << 2, //!< If set, object is stored in FBX file upon export. All objects are savable by default. - eSelected = 1 << 3, //!< Used by the selection mechanic to specify a selected object. - eHidden = 1 << 4, //!< Used for interface representation; if set, the object should not be visible. - eContentLoaded = 1 << 5, //!< Used by load-on-demand mechanic to specify if an object has its content loaded. - eDontLocalize = 1 << 6, //!< Used by asset builder; Do not localize this object - eCopyCalledByClone = 1 << 16 //!< Used internally. If set, modify the Copy behavior of the object - }; - - /** Set the state of object flags. - * \param pFlags Bit flags which value is going to be changed. - * \param pValue If \c true, bit flags will be set, otherwise bits will be un-set. */ - void SetObjectFlags(EObjectFlag pFlags, bool pValue); - - /** Get the state of object flags. - * \param pFlags Bit flags to query. - * \return \c true if the specified bit flags are all set. */ - bool GetObjectFlags(EObjectFlag pFlags) const; - - /** Override all object flags at once. - * \param pFlags The bit flags to set all the object flags to. - * \remark This function will override all flags; unspecified bit flags will be un-set. */ - void SetAllObjectFlags(FbxUInt pFlags); - - /** Get all object flags at once. - * \return All bit flags at once. */ - FbxUInt GetAllObjectFlags() const; - //@} - - //! \name Copying, Cloning and Referencing - //@{ - /** Copy an object content into this object. - * \param pObject The source object to copy data from. - * \return Returns the destination object being modified by the source. - * \remark This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied. */ - virtual FbxObject& Copy(const FbxObject& pObject); - - //! Types of clones that can be created for FbxObject. - enum ECloneType - { - eDeepClone, //!< A deep copy of the object. Changes to either the original or clone properties do not propagate to each other. - eReferenceClone //!< Changes to original object properties propagate to clone. Changes to clone properties do not propagate to original. - }; - - /** Creates a clone of this object. - * By default, the connections are NOT cloned. If the desired effect is to clone the connections as well, you must clone using the FbxCloneManager - * (refer to this class documentation for further details). - * - * \param pCloneType The type of clone to be created. By default, the clone type is eDeepClone. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean the new object - * will become a source to the container, connection-wise. - * \param pSet See remark section. - * \return The new clone, or NULL (if the specified clone type is not supported). - * \remark When doing either a "deep" or "reference" clone type, the clone will always get its properties values set from - * the source object properties values. - * \remark Since this is a virtual function, some classes might do additional tasks. - * \remark The \e pSet argument is not used in the default implementation of this method. Specialized implementations should - * cast this pointer to FbxCloneManager::CloneSet to have access to the cloned objects so far. Typically, this - * pointer is set by the clone manager. - */ - virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; - - /** Checks if this object is a reference clone of another object. - * \return \c True if this object is a clone of another object, \c false otherwise */ - bool IsAReferenceTo() const; - - /** If this object is a reference clone, returns the original object (from which the clone originates). - * \return The original object, or NULL (if this object is not a reference clone). */ - FbxObject* GetReferenceTo() const; - - /** Checks if any objects are reference cloned from this object. - * \return \c True if there are objects reference cloned from this object, \c false otherwise. */ - bool IsReferencedBy() const; - - /** Returns the number of objects that are reference clones of this object. - * \return The number of objects that are reference clones of this object. */ - int GetReferencedByCount() const; - - /** Returns a reference clone of this object at the specified index. - * \param pIndex The specified index, valid values are [0, GetReferencedByCount()) - * \return The reference clone, or NULL (if pIndex is out of range). */ - FbxObject* GetReferencedBy(int pIndex) const; - //@} - - /** - * \name Object Name Management - */ - //@{ - /** Sets the name of this object. - * \param pName The object name as a \c NULL terminated string. - */ - void SetName(const char* pName); - - /** Returns the full name of this object. - * \return The full name as a \c NULL terminated string. - */ - const char* GetName() const; - - /** Returns the name of the object without the namespace qualifier. - * \return The object name without the namespace qualifier. - */ - FbxString GetNameWithoutNameSpacePrefix() const; - - /** Returns the name of the object with the namespace qualifier. - * \return The object name with the namespace qualifier. - */ - FbxString GetNameWithNameSpacePrefix() const; - - /** Sets the initial name of the object. - * \param pName The object's initial name as a \c NULL terminated string. - */ - void SetInitialName(const char* pName); - - /** Returns the initial name of the object. - * \return The object's initial name as a \c NULL terminated string. - */ - const char* GetInitialName() const; - - /** Returns the namespace of the object. - * \return The object's namespace as a \c NULL terminated string. - */ - FbxString GetNameSpaceOnly(); - - /** Sets the namespace of the object. - * \param pNameSpace The object's namespace as a \c NULL terminated string. - */ - void SetNameSpace(FbxString pNameSpace); - - /** Returns an array of all the namespaces for this object - * \param identifier The identifier of the namespaces. - * \return The array of all namespaces. - */ - FbxArray GetNameSpaceArray(char identifier); - - /** Returns only the name (no namespace or prefix) of the object. - * \return The name only as a \c NULL terminated string. - */ - FbxString GetNameOnly() const; - - /** Returns the namespace qualifier. - * \return The namespace qualifier. - */ - FbxString GetNameSpacePrefix() const; - - /** Removes the prefix of pName - * \param pName Whose prefix is removed. - * \return A temporary string without prefix. - */ - static FbxString RemovePrefix(const char* pName); - - /** Strips the prefix of pName - * \param lName Whose prefix is stripped. - * \return lName stripped of its prefix. - */ - static FbxString StripPrefix(FbxString& lName); - - /** Strips the prefix of pName - * \param pName Whose prefix is stripped. - * \return A temporary string stripped of its prefix. - */ - static FbxString StripPrefix(const char* pName); - - //!Returns the unique ID of this object. - const FbxUInt64& GetUniqueID() const; - //@} - - /** - * \name Selection management - */ - //@{ - /** Returns if this object is currently in a selected state. - * \return \c True if this object is selected, \c false otherwise. - */ - virtual bool GetSelected(); - - /** Sets whether this object is currently selected. - * \param pSelected The selection flag. - */ - virtual void SetSelected(bool pSelected); - //@} - - /** - * \name User data - */ - //@{ - /** Sets the data pointer for an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - void SetUserDataPtr(const FbxUInt64& pUserID, void* pUserData); - - /** Returns the data pointer of an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - void* GetUserDataPtr(const FbxUInt64& pUserID) const; - - /** Sets the data pointer for the user data record whose ID is the object ID. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - inline void SetUserDataPtr(void* pUserData){ SetUserDataPtr(GetUniqueID(), pUserData); } - - /** Returns the data pointer of the user data record whose ID is the object ID. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - inline void* GetUserDataPtr() const { return GetUserDataPtr(GetUniqueID()); } - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this object to a source object. - * \param pObject The source object to which this object connects. - * \param pType The connection type between this object and the source object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectSrcObject(pObject,pType); } - - /** Judges whether this object connects with the source object. - * \param pObject The source object. - * \return \c True if this object connects with the source object, \c false otherwise. - */ - inline bool IsConnectedSrcObject(const FbxObject* pObject) const { return RootProperty.IsConnectedSrcObject(pObject); } - - /** Disconnects this object from a source object. - * \param pObject The source object from which this object will be disconnected. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcObject(FbxObject* pObject){ return RootProperty.DisconnectSrcObject(pObject); } - - /** Disconnects this object from all source objects. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(); } - - /** Disconnects this object from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(pCriteria); } - - /** Returns the number of source objects with which this object connects. - * \return The number of source objects with which this object connects. - */ - inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(); } - - /** Returns the number of source objects that satisfy the given criteria with which this object connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this object connects. - */ - inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(pCriteria); } - - /** Returns the source object with which this object connects at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(int pIndex=0) const { return RootProperty.GetSrcObject(pIndex); } - - /** Returns the source object that satisfies the criteria at the specified index with which this object connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetSrcObject(pCriteria,pIndex); } - - /** Searches the source object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pName,pStartIndex); } - - /** Searches the source object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all source objects of the specified class type. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all source objects that are of the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this object connects. - * \return The number of source objects of the specified class type with which this object connects. */ - template inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of source objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. */ - template inline T* GetSrcObject(int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that is of the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name that is the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this object to one destination object. - * \param pObject The destination object with which this object connects. - * \param pType The connection type between this object and the destination object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectDstObject(pObject,pType); } - - /** Judges whether this object connects with the destination object. - * \param pObject The destination object. - * \return \c True if this object connects with the destination object, \c false otherwise. - */ - inline bool IsConnectedDstObject(const FbxObject* pObject) const { return RootProperty.IsConnectedDstObject(pObject); } - - /** Disconnects this object from the destination object. - * \param pObject The destination object from which this object disconnects. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstObject(FbxObject* pObject) { return RootProperty.DisconnectDstObject(pObject); } - - /** Disconnects this object from all destination objects. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(); } - - /** Disconnects this object from all destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(pCriteria); } - - /** Returns the number of destination objects with which this object connects. - * \return The number of destination objects with which this object connects. - */ - inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(); } - - /** Returns the number of destination objects with which this object connects that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects with which this object connects that satisfy the given criteria. - */ - inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(pCriteria); } - - /** Returns the destination object at the specified index with which this object connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(int pIndex=0) const { return RootProperty.GetDstObject(pIndex); } - - /** Returns the destination object with which this object connects that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetDstObject(pCriteria,pIndex); } - - /** Searches the destination object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pName,pStartIndex); } - - /** Searches the destination object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all destination objects of the specified class type. - * \return \c true if it disconnects all destination objects of the specified class type successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all destination objects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all destination objects successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this object connects. - * \return The number of destination objects of the specified class type with which this object connects. */ - template inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object with which this object connects that is the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. */ - template inline T* GetDstObject(int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object with which this object connects that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that is the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name Property Management - */ - //@{ - /** Returns the first property of this object. - * \return The first property of this object. - */ - inline FbxProperty GetFirstProperty() const - { - return RootProperty.GetFirstDescendent(); - } - - /** Returns the next property of this object that follows the specified property. - * \param pProperty The specified property. - * \return The next property of this object that follows pProperty. - */ - inline FbxProperty GetNextProperty(const FbxProperty& pProperty) const - { - return RootProperty.GetNextDescendent(pProperty); - } - - /** Searches a property by name. - * \param pName The property name. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pCaseSensitive ); - } - - /** Searches a property by name and data type. - * \param pName The property name. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pDataType, pCaseSensitive ); - } - - /** Searches a property by full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pCaseSensitive ); - } - - /** Searches a property by full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pDataType, pCaseSensitive ); - } - - /** Returns the class root property. - * \return The class root property if it exists, else an invalid FbxProperty. See FbxProperty::IsValid(). - * \remarks Class FbxObject and its sub-classes all have a class root property. This class root property contains basic information about the class type, such as the class name. - */ - FbxProperty GetClassRootProperty(); - - /** Connects this object to a source property. - * \param pProperty The source property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.ConnectSrcProperty(pProperty); } - - /** Determines whether this object connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this object connects with the specified source property, \c false otherwise. - */ - inline bool IsConnectedSrcProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedSrcProperty(pProperty); } - - /** Disconnects this object from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectSrcProperty(pProperty); } - - /** Returns the number of source properties with which this object connects. - * \return The number of source properties with which this object connects. - */ - inline int GetSrcPropertyCount() const { return RootProperty.GetSrcPropertyCount(); } - - /** Returns the source property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - inline FbxProperty GetSrcProperty(int pIndex=0) const { return RootProperty.GetSrcProperty(pIndex); } - - /** Searches a source property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - inline FbxProperty FindSrcProperty(const char* pName,int pStartIndex=0) const { return RootProperty.FindSrcProperty(pName,pStartIndex); } - - /** Connects this object to a destination property. - * \param pProperty The destination property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstProperty(const FbxProperty& pProperty) { return RootProperty.ConnectDstProperty(pProperty); } - - /** Determines if this object connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this object connects with the specified destination property, \c false otherwise. - */ - inline bool IsConnectedDstProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedDstProperty(pProperty); } - - /** Disconnects this object from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectDstProperty(pProperty); } - - /** Returns the number of destination properties with which this object connects. - * \return The number of destination properties with which this object connects. - */ - inline int GetDstPropertyCount() const { return RootProperty.GetDstPropertyCount(); } - - /** Returns the destination property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - inline FbxProperty GetDstProperty(int pIndex=0) const { return RootProperty.GetDstProperty(pIndex); } - - /** Searches a destination property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - inline FbxProperty FindDstProperty(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstProperty(pName,pStartIndex); } - //@} - - /** - * \name Off-Loading Management - * \remarks You can modify the unloaded state flag using the SetObjectFlags() - * method. The ContentIsUnloaded() method below (implemented in this class) - * is simply a synonym of GetObjectFlags(eCONTENT_UNLOADED_FLAG) - */ - //@{ - /** Unloads this object's content using the offload peripheral that is currently set in the document - * then flushes it from memory. - * \return 2 if the object's content is already unloaded or 1 if - * this object's content has been successfully unloaded to the current - * peripheral. - * - * \remarks If the content is locked more than once, or the peripheral cannot handle - * this object's unloading, or if an error occurs, this method returns 0 and does not flush the content. - */ - int ContentUnload(); - - /** Loads this object's content using the offload peripheral that is currently set in the document. - * \return 1 if this object's content has been successfully loaded from the current - * peripheral, 2 if the content is already loaded, and 0 if an error occurs or - * the object's content is locked. - * \remarks On a successful Load attempt, the object content is locked. - */ - int ContentLoad(); - - /** Judges if this object's content is loaded. - * \return \c True if this object's content is loaded, \c false otherwise. - * \remarks An object that has not been filled yet must be considered - * unloaded. - */ - bool ContentIsLoaded() const; - - /** Decreases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentDecrementLockCount(); - - /** Increases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentIncrementLockCount(); - - /** Judges if this object's content is locked. The content is considered locked if the content lock count - * is greater than 0 - * \return \c True if this object's content is locked, \c false otherwise. - * \remarks A locked state prevents the object content from being unloaded from memory but - * does not block the loading. - */ - bool ContentIsLocked() const; - - /** Writes the content of the object to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - virtual bool ContentWriteTo(FbxStream& pStream) const; - - /** Reads the content of the object from the given stream. - * \param pStream The source stream. - * \return \c True if the object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - virtual bool ContentReadFrom(const FbxStream& pStream); - //@} - - /** - * \name Logging. - */ - //@{ - /** Emits a message in all available message emitters in the document or SDK manager. - * \param pMessage The message to emit. - * \remarks The ownership of the message is transferred, don't delete it. - */ - void EmitMessage(FbxMessage* pMessage) const; - //@} - - /** - * \name Localization helper. - */ - //@{ - /** Localization helper function, it calls the implementation of FBX SDK manager. - * Sub-classes that manage their own localization could over-ride this function. - * \param pID The identifier of the text to be localized. - * \param pDefault The default text. Uses pID as the default text if pDefault is NULL. - * \return The localized text or the default text if the text can't be localized, . - */ - virtual const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name Application Implementation Management - */ - //@{ - /** Returns a handle on the parent library of this object. - * \return The parent library of this object, or \c NULL if the parent library doesn't exist. - */ - FbxLibrary* GetParentLibrary() const; - - /** Adds an implementation. - * \param pImplementation The implementation to be added. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has not already been added to this node. - */ - bool AddImplementation(FbxImplementation* pImplementation); - - /** Removes an implementation. - * \param pImplementation The implementation to be removed. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - */ - bool RemoveImplementation(FbxImplementation* pImplementation); - - /** Determines if this shading node has a default implementation. - * \return \c True if this shading node has a default implementation, \c false otherwise. - */ - bool HasDefaultImplementation(void) const; - - /** Returns the default implementation of this shading node. - * \return The default implementation of this shading node. - */ - FbxImplementation* GetDefaultImplementation(void) const; - - /** Sets the default implementation of this shading node. - * \param pImplementation The implementation to be set. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - * Only the implementation which has already been added can be set as the default implementation. - */ - bool SetDefaultImplementation(FbxImplementation* pImplementation); - - /** Returns the number of implementations that satisfy a given criteria. - * \param pCriteria The given criteria. - * \returns The number of implementations. - */ - int GetImplementationCount(const FbxImplementationFilter* pCriteria=NULL) const; - - /** Returns the implementation at the specified index that satisfies the given criteria. - * \param pIndex The specified index. - * \param pCriteria The given criteria. - * \return The implementation at the specified index, NULL if not found. - */ - FbxImplementation* GetImplementation(int pIndex, const FbxImplementationFilter* pCriteria=NULL) const; - //@} - - /** - * \name Object Storage && Retrieval - */ - //@{ - /** Returns the URL of this object. - * \return The URL of this object. - * \remarks The URL indicates where the object is stored. - */ - virtual FbxString GetUrl() const; - - /** Sets the URL of this object. - * \param pUrl The URL to be set. - * \return \c True on success, \c false otherwise. - * \remarks The URL indicates where the object is stored. - */ - virtual bool SetUrl(const char* pUrl); - //@} - - /** \name Run-time ClassId Management */ - //@{ - /** Set the run-time ClassId for this class. In most contexts, users do not have to change the run-time ClassId, they are automatically generated when registered a new class during run-time. - * \param pClassId The ClassId to set as the run-time ClassId for this object. */ - void SetRuntimeClassId(const FbxClassId& pClassId); - - /** Retrieve the run-time ClassId for this object. - * \return The run-time ClassId for this object. */ - FbxClassId GetRuntimeClassId() const; - - /** Test if this class is a hierarchical children of the specified class type. This test will be performed on the run-time class registered with the FBX SDK Manager rather than the static ClassId generated at compile time. - * \param pClassId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remarks This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool IsRuntime(const FbxClassId& pClassId) const; - - /** Find out if the ClassId was registered during run-time rather than at compile time. - * \return True if the run-time ClassId is inequal to the ClassId. */ - bool IsRuntimePlug() const; - //@} - - /** Compact the memory used by this object. - * \remark Note that this function might not result in saved memory because it depends if the sub-class implements it, or if any memory can actually be saved. */ - virtual void Compact(); - - //! The root property that holds all children property for this object - FbxProperty RootProperty; - -protected: - /** Optional constructor override, automatically called by default constructor. - * \param pFrom If not null, the function must take it into account like a copy constructor. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Construct(pFrom) at the beginning. */ - virtual void Construct(const FbxObject* pFrom); - - /** Optional property constructor override, automatically called by default constructor. - * \param pForceSet If the property value must be set regardless of default value. - * \remark If your object have properties, they must be initialized in this function. */ - virtual void ConstructProperties(bool pForceSet); - - /** Optional destructor override, automatically called by default destructor. - * \param pRecursive If true, children objects should be destroyed as well. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Destruct(pResursive) at the end. */ - virtual void Destruct(bool pRecursive); - - /** Clears this object's content from memory. This method must be overridden in the derived classes. - * \remark This method is called by ContentUnload() if the object content's unloading is successful. */ - virtual void ContentClear(); - - /** Retrieves the peripheral of that object. - * \return The current peripheral for that object - * \remark A peripheral manipulates the content of an object. For instance, a peripheral can load the connections of an object on demand. */ - virtual FbxPeripheral* GetPeripheral(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - virtual bool Compare(FbxObject* pOtherObject); - - //Basic comparison operator implementation. It simply compare property values between source and target. - //NOTE: If a property cannot be found on one of the object, the comparison fails (return false). - //Different classid will fail comparison as well as different property count. Reference properties are not compared. - bool operator==(const FbxObject& pObject); - bool operator!=(const FbxObject& pObject); - - virtual void SetDocument(FbxDocument* pDocument); - - inline FbxPropertyHandle& GetPropertyHandle() { return RootProperty.mPropertyHandle; } - - //Important note: If this function is not implemented, the pFileSubTypeName string used when registering your - //class via FbxManager::RegisterFbxClass will be used instead. This makes it useless to re-implement this - //function if you do not intend to return a different string for the same class. - virtual const char* GetTypeName() const; - virtual FbxStringList GetTypeFlags() const; - - // This function will go as deep as possible to clear the Connection list without sending - // notifications to the connections to give them the chance to Disconnect themselves. - // This is a bypass of the intended workflow and should be used with care. - void WipeAllConnections(); - - //Used as global flag to modify the behavior of FbxObject::Destruct() during a ForceKill() on the scene. This is for internal use. - static void SetWipeMode(bool pState); - static bool GetWipeMode(); - -protected: - FbxObject(FbxManager& pManager, const char* pName); - - enum EPropertyNotifyType - { - ePropertySetRequest, - ePropertySet, - ePropertyGet - }; - - virtual bool ConnectNotify(const FbxConnectEvent& pEvent); - virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); - bool Copyable(const FbxObject& pObject); - -private: - void CopyPropertiesFrom(const FbxObject& pFrom); - void SetClassRootProperty(FbxProperty& lProperty); - int GetFlatPropertyCount() const; - - FbxNameHandler mName; - FbxClassId mRuntimeClassId; - FbxUserDataRecord* mUserData; - FbxManager* mManager; - FbxImplementation* mDefaultImplementation; - FbxUInt64 mUniqueID; - FbxInt32 mObjectFlags; - FbxInt32 mContentLockCount; - FbxInt32 mUserDataCount; - static bool mWipeMode; - - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A utility class for iterating over the properties (FbxProperty) of any FbxObject. -* \nosubgrouping -*/ -template class FbxIterator -{ -public: - /** Constructor. - *\param pObject The object whose properties are going to be iterated. - */ - FbxIterator(const FbxObject* pObject) : mObject(pObject) {} - - /** Get the first property of the object. - * \return The first property of the object. - */ - inline const FbxProperty& GetFirst() { mProperty = mObject->GetFirstProperty(); return mProperty; } - - /** Get next property of the object. - * \return The next property of the object. - */ - inline const FbxProperty& GetNext() { mProperty = mObject->GetNextProperty(mProperty); return mProperty; } - -private: - FbxProperty mProperty; - const FbxObject* mObject; -}; - -/** A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } - - FbxProperty mProperty; //! The property to iterate. If iterate an object, this is the root property of the object. - FbxClassId mClassId; //! The class ID specifies the type of the source objects to be retrieved. - int mSize; //! The number of source objects whose type is specified by mClassId. - int mIndex; //! Iterate index. -}; - -/** - * A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorSrcBase with template. - * \nosubgrouping - */ -template class FbxIteratorSrc : protected FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxObject* pObject) : FbxIteratorSrcBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxProperty& pProperty) : FbxIteratorSrcBase(pProperty,Type::ClassId) {} - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorSrcBase::GetFirst(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorSrcBase::GetNext(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorSrcBase::GetSafeNext(); } - - /** - * Get the last source object that connects to the property or object. - * \return The last source object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorSrcBase::GetLast(); } - - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorSrcBase::GetPrevious(); } - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last source object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorSrcBase::GetSafePrevious(); } -}; - -/** A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorDstBase -{ -protected: - /** The property to iterate. If iterate an object, this is the root property of the object. */ - FbxProperty mProperty; - /** The class ID specifies the type of the destination objects to be retrieved. */ - FbxClassId mClassId; - /** The number of destination objects whose type is specified by mClassId. */ - int mSize; - /** Iterate index. */ - int mIndex; - -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - * \param pClassId The class ID specifies the type of the destination objects. - */ - inline FbxIteratorDstBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorDstBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } -}; - -/** - * A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorDstBase with template. - * \nosubgrouping - */ -template class FbxIteratorDst : protected FbxIteratorDstBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxObject* pObject) : FbxIteratorDstBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxProperty& pProperty) : FbxIteratorDstBase(pProperty,Type::ClassId) {} - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorDstBase::GetFirst(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorDstBase::GetNext(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorDstBase::GetSafeNext(); } - - /** - * Get the last destination object that connects to the property or object. - * \return The last destination object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorDstBase::GetLast(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorDstBase::GetPrevious(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last destination object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorDstBase::GetSafePrevious(); } -}; - -/** Convert the class type parameter into a C class parameter for other function inputs. - * Usage example: - * \code - * //Assuming MyCamera is a valid FbxCamera object - * bool AreCamerasObject = MyCamera->Is(); //Should return true :) - * \endcode - */ -#define FBX_TYPE(class) ((const class*)0) - -/** Safe casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline T* FbxCast(FbxObject* pObject) -{ - return pObject && pObject->Is() ? (T*)pObject : 0; -} - -/** Safe const casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline const T* FbxCast(const FbxObject* pObject) -{ - return pObject && pObject->Is() ? (const T*)pObject : 0; -} - -//! Macro used to iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject). -#define FbxForEach(Iterator, Object) for((Object)=(Iterator).GetFirst();(Object)!=0;(Object)=(Iterator).GetNext()) - -//! Macro used to reversely iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject) -#define FbxForEachReverse(Iterator, Object) for(Object=(Iterator).GetLast();(Object)!=0;Object=(Iterator).GetPrevious()) - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxConnectEvent -{ -public: - enum EType - { - eConnectRequest, - eConnect, - eConnected, - eDisconnectRequest, - eDisconnect, - eDisconnected - }; - - enum EDirection - { - eSource, - eDestination - }; - - inline FbxConnectEvent(EType pType,EDirection pDir,FbxProperty *pSrc,FbxProperty *pDst) : - mType(pType), - mDirection(pDir), - mSrc(pSrc), - mDst(pDst) - { - } - inline EType GetType() const { return mType; } - inline EDirection GetDirection() const { return mDirection; } - inline FbxProperty& GetSrc() const { return *mSrc; } - inline FbxProperty& GetDst() const { return *mDst; } - template inline T* GetSrcIfObject() const { return mSrc->IsRoot() ? FbxCast(mSrc->GetFbxObject()) : (T*)0; } - template inline T* GetDstIfObject() const { return mDst->IsRoot() ? FbxCast(mDst->GetFbxObject()) : (T*)0; } - -private: - EType mType; - EDirection mDirection; - FbxProperty* mSrc; - FbxProperty* mDst; -}; - -class FbxObjectPropertyChanged : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxObjectPropertyChanged); - -public: - FbxObjectPropertyChanged(FbxProperty pProp) : mProp(pProp) {} - FbxProperty mProp; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_OBJECT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxperipheral.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxperipheral.h deleted file mode 100644 index d5e7265..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxperipheral.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxperipheral.h -#ifndef _FBXSDK_CORE_PERIPHERAL_H_ -#define _FBXSDK_CORE_PERIPHERAL_H_ - -#include - -#include - -class FbxObject; - -/** FbxPeripheral is an interface to load/unload content of FbxObject from memory to -somewhere you defined, for example, to a temporary file on disk . -* \nosubgrouping -* You need to inherited your own peripheral class from this class and overload -* the functions to control what information of a FbxObject you want to load/unload, -* and where you are going to load/unload these information to. -* For example, you can ask an object to dump itself on disk to free some memory and vice-versa -* when you want to load/unload this object from your scene flexibly. -*/ -class FBXSDK_DLL FbxPeripheral -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - //!Constructor. - FbxPeripheral(); - - //!Destructor. - virtual ~FbxPeripheral(); - //@} - - /** Reset the peripheral to its initial state. - */ - virtual void Reset() = 0; - - /** Unload the content of pObject. - * \param pObject Object whose content is to be offloaded into - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool UnloadContentOf(FbxObject* pObject) = 0; - - /** Load the content of pObject. - * \param pObject Object whose content is to be loaded from - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool LoadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can unload the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content and - * has enough space in its storage area.\c false otherwise. - */ - virtual bool CanUnloadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can load the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content. - * \c false otherwise. - */ - virtual bool CanLoadContentOf(FbxObject* pObject) = 0; - - /** Initialize the connections of an object - * \param pObject Object on which the request for connection is done. - */ - virtual void InitializeConnectionsOf(FbxObject* pObject) = 0; - - /** Uninitialize the connections of an object - * \param pObject Object on which the request for disconnection is done. - */ - virtual void UninitializeConnectionsOf(FbxObject* pObject) = 0; -}; - -// predefined offload peripherals -extern FBXSDK_DLL FbxPeripheral* NULL_PERIPHERAL; -extern FBXSDK_DLL FbxPeripheral* TMPFILE_PERIPHERAL; -#include - -#endif /* _FBXSDK_CORE_PERIPHERAL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugin.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugin.h deleted file mode 100644 index 960e4d9..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugin.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugin.h -#ifndef _FBXSDK_CORE_PLUGIN_H_ -#define _FBXSDK_CORE_PLUGIN_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include -#include - -#include - -class FbxManager; -class FbxPluginContainer; - -//! Plug-in declaration macro that must to be used when defining new FbxPlugin objects. -#define FBXSDK_PLUGIN_DECLARE(Plugin)\ - FBXSDK_FRIEND_NEW();\ -public:\ - static Plugin * Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle);\ - void Destroy(); - -//! Plug-in implementation macro that must be used when implementing new FbxPlugin objects. -#define FBXSDK_PLUGIN_IMPLEMENT(Plugin)\ - Plugin* Plugin::Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle){ return FbxNew(pDefinition, pModuleHandle); }\ - void Plugin::Destroy(){ FbxDelete(this); } - -/** Structure used by plug-ins for identification purposes. - * \note To avoid confusions in the system, it is recommended to choose an appropriate unique identifier string name when - * defining your plug-in, as well as incrementing the version string to a correct value whenever something changes in the - * implementation of the plug-in. Both of these string are used when comparing plug-ins for searches, as well as - * identification in FBX files. - */ -struct FBXSDK_DLL FbxPluginDef -{ - //! Constructor - FbxPluginDef() : - mName("Unknown Name"), - mVersion("Unknown Version") - { - } - - FbxString mName; //!< The identifier name string of the plug-in. If the name is already used by another plug-in, the plug-in will still register. - FbxString mVersion; //!< The version string of the plug-in. -}; - -/** Data used to communicate information between an application and the plug-in. - */ -struct FBXSDK_DLL FbxPluginData -{ - //! Constructor - FbxPluginData() : - mQueryEmitter(NULL), - mSDKManager(NULL), - mPluginContainer(NULL) - { - } - - //! Copy Constructor - explicit FbxPluginData(const FbxPluginData& pOther) : - mQueryEmitter(pOther.mQueryEmitter), - mSDKManager(pOther.mSDKManager), - mPluginContainer(pOther.mPluginContainer) - { - } - - FbxEmitter* mQueryEmitter; //!< The emitter on which the plug-in can listen to receive events. - FbxManager* mSDKManager; //!< The FBX SDK Manager on which the plug-in was instanced. - FbxPluginContainer* mPluginContainer; //!< The container which will have the ownership of the plug-in. -}; - -/** The base class to inherit from when creating new plug-ins for the FBX SDK. Plug-ins for the FBX SDK are extremely flexible - * allowing a wide-range of possibilities. For example, one can write his own plug-in to add new readers/writers to the current list - * of supported I/O formats, or add new dynamic classes to instantiate custom objects that can later be stored in FBX files. We also use the same - * interface for plug-ins written using the FBX Extension SDK, which allow additional callbacks for other various Autodesk products - * enabling greater interoperability with multiple various SDKs. - * - * Here is typical implementation of an FBX SDK plug-in that doesn't do anything else than just registering itself: - * \code - * class MyPlugin : public FbxPlugin - * { - * FBXSDK_PLUGIN_DECLARE(MyPlugin); //This macro is mandatory for any plug-in definition - * - * protected: - * explicit MyPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle) : FbxPlugin(pDefinition, pModuleHandle) - * { - * } - * - * //Abstract functions that *must* be implemented - * virtual bool SpecificInitialize() - * { - * //For example, here we could register as many new I/O readers/writers as we would like, or classes, etc. - * return true; - * } - * - * virtual bool SpecificTerminate() - * { - * //Here we would have to unregister whatever we registered to the FBX SDK - * return true; - * } - * }; - * - * FBXSDK_PLUGIN_IMPLEMENT(MyPlugin); //This macro is mandatory for any plug-in implementation - * - * //Standard C export needed for any new FBX SDK plug-in - * extern "C" - * { - * static MyPlugin* sMyPluginInstance = NULL; //The module is owner of the plug-in - * - * //This function will be called when an application will request the plug-in - * #ifdef FBXSDK_ENV_WIN - * __declspec(dllexport) void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #else - * void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #endif - * { - * if( sPlugin == NULL ) - * { - * //Create the plug-in definition which contains the information about the plug-in - * FbxPluginDef sPluginDef; - * sPluginDef.mName = "My Plugin"; - * sPluginDef.mVersion = "1.0"; - * - * //Create an instance of the plug-in - * sMyPluginInstance = MyPlugin::Create(sPluginDef, pLibHandle); - * - * //Register the plug-in with the FBX SDK - * pContainer.Register(*sPlugin); - * } - * } - * } - * \endcode - * \see FbxPluginDef, FbxPluginData - */ -class FBXSDK_DLL FbxPlugin : public FbxListener -{ - FBXSDK_INTRUSIVE_LIST_NODE(FbxPlugin, 1); - -public: - /** Abstract function called once at the end of the plug-in construction. At that moment, plug-in data have been properly initialized. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificInitialize()=0; - - /** Abstract function called once at the beginning of the plug-in destruction. At that moment, plug-in data is fully available. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificTerminate()=0; - - /** Virtual function called once when the FBX SDK is about to write an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be written in the FBX file. - */ - virtual void WriteBegin(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to write plug-in's parameters. Users can re-implement it in their plug-in if they need - * to store properties in the FBX file for their own usage. The object in parameter is used to store those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to store properties about the plug-in. - */ - virtual void WriteParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK wrote an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered, but the changes will not appear in the FBX file. - * If not re-implemented, this function does nothing. - * \param pScene The scene that was written in the FBX file. - */ - virtual void WriteEnd(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be read in the FBX file. - */ - virtual void ReadBegin(FbxScene& pScene); - - /** Virtual function called once after the FBX SDK reads the plug-in's parameters. Users can re-implement it in their plug-in if they need - * to retrieve properties for their own usage. The object in parameter is used to retrieve those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to read properties about the plug-in. - */ - virtual void ReadParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that was read in the FBX file. - */ - virtual void ReadEnd(FbxScene& pScene); - - /** Accessor to the plug-in definition structure that contains basic information on the plug-in like its name or version. This is - * the only method available to differentiate plug-ins. - * \return The definition structure for this plug-in. - */ - const FbxPluginDef& GetDefinition() const; - - /** Retrieve the module address pointer for this plug-in. With this module instance handle, for example someone can query procedures addresses, - * allowing more complex interactions, as well as other operating system module specific functions. - */ - FbxModule GetModuleHdl(); - -protected: - /** Use the Create() and Destroy() methods declared and implemented in the FBXSDK_PLUGIN_DECLARE and FBXSDK_PLUGIN_IMPLEMENT macros to construct and destroy FbxPlugin objects. - * \param pDefinition The definition associated with this plug-in. Each plug-in must have its own definition to differentiate it with other plug-ins. - * \param pModuleHandle A pointer to the plug-in module address. - */ - explicit FbxPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle); - - /** Accessor to the plug-in private data. - * \return The data for the current plug-in. - */ - FbxPluginData& GetData(); - - /** Const accessor to the plug-in private data. - * \return The const data for the current plug-in. - */ - const FbxPluginData& GetData() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - inline FbxObject& GetPluginSettings() { return *mPluginSettings; } - inline const FbxObject& GetPluginSettings() const { return *mPluginSettings; } - template inline FbxEventHandler* Bind(void (ListernerType::*pFunc)(const EventType*)) - { - return FbxListener::Bind(*(GetData().mQueryEmitter), pFunc ); - } - virtual void Destroy() = 0; - -protected: - virtual ~FbxPlugin(); - -private: - bool Initialize(const FbxPluginData& pData); - bool Terminate(); - - bool mInitialized; - FbxPluginData mData; - FbxPluginDef mDefinition; - FbxModule mModuleHandle; - FbxObject* mPluginSettings; - - friend class FbxLoadingStrategy; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugincontainer.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugincontainer.h deleted file mode 100644 index 4e5d389..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxplugincontainer.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugincontainer.h -#ifndef _FBXSDK_CORE_PLUGIN_CONTAINER_H_ -#define _FBXSDK_CORE_PLUGIN_CONTAINER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** Manages registration and ownership of FBX SDK plug-ins (FbxPlugin). - * The FBX SDK will provide a pointer to FbxPluginContainer as an argument - * to the FBXPluginRegistration() function exported from a plug-in's DLL. - * A plug-in must register itself explicitly with the FbxPluginContainer - * by calling FbxPluginContainer::Register() after it is constructed. - * For an example of this process see the code example in the FbxPlugin - * class documentation. - * \see FbxPlugin - */ -class FBXSDK_DLL FbxPluginContainer : public FbxEmitter -{ -public: - //! Definition of a plug-in list. - typedef FbxIntrusiveList PluginList; - - /** The registration function that must be called when the module containing the plug-in is loaded. - * \param pPlugin The plug-in to register. - */ - void Register(FbxPlugin& pPlugin); - - /** The unregistration function that must be called when the module containing the plug-in is unloaded. - * \param pPlugin The plug-in to unregister. - */ - void Unregister(FbxPlugin& pPlugin); - - /** Const accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - const PluginList& GetPlugins() const; - - /** Accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - PluginList& GetPlugins(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual ~FbxPluginContainer(); - PluginList mPlugins; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_CONTAINER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxproperty.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxproperty.h deleted file mode 100644 index e2d0511..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxproperty.h +++ /dev/null @@ -1,1240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproperty.h -#ifndef _FBXSDK_CORE_PROPERTY_H_ -#define _FBXSDK_CORE_PROPERTY_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxObject; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; -class FbxAnimEvaluator; - -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval = false); - -/** \brief Class to hold user properties. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProperty -{ -public: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Creates a runtime property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, parent property checks if it has a child property already with pName, if \c false, the new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pCompoundProperty already has a child property with pName. - */ - static FbxProperty Create(const FbxProperty& pCompoundProperty, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a runtime property on the specified object. - * \param pObject The object on which the property will be created. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, pObject checks whether it already has a property with pName, if \c false, a new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pObject already has a child property with pName. - */ - static FbxProperty Create(FbxObject* pObject, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a dynamic property from another property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, parent property checks if it already has a child property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(const FbxProperty& pCompoundProperty, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Creates a dynamic property from another property on the specified object. - * \param pObject The object that contains this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, pObject checks if it already has a property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(FbxObject* pObject, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Destroys a dynamic property. - */ - void Destroy(); - - /** Destroys a dynamic property and its children - * \remarks Destroy all children of current property, and current property will also be destroyed. - */ - void DestroyRecursively(); - - /** Destroys children of a dynamic property. - * \remarks Destroy all children of current property, and current property will not be destroyed. - */ - void DestroyChildren(); - - /** Static property constructor. - */ - FbxProperty(); - - /** Copy constructor for properties. - * \param pProperty The property copied to this one. - */ - FbxProperty(const FbxProperty& pProperty); - - /** Copy constructor for properties. - * \param pPropertyHandle The property handle copied to this property handle. - */ - FbxProperty(const FbxPropertyHandle& pPropertyHandle); - - /** Static property destructor. - */ - ~FbxProperty(); - //@} - - /** - * \name Property Identification. - */ - //@{ - /** Returns the property data type. - * \return The property data type. - */ - FbxDataType GetPropertyDataType() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - FbxString GetName() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - const char* GetNameAsCStr() const; - - /** Returns the hierarchical name of the property. - * \return Property hierarchical name string. - */ - FbxString GetHierarchicalName() const; - - /** Returns the property label. - * \param pReturnNameIfEmpty If \c true, lets this method return the internal name if the label is empty. - * \return The property label if set, or the property internal name if the pReturnNameIfEmpty - * flag is set to \c true and the label has not been defined. - * \remarks Some applications may ignore the label field and work uniquely with the - * internal name. Therefore, it should not be taken for granted that a label exists. Also, remember - * that the label does not get saved in the FBX file. It only exists while the property object is - * in memory. - */ - FbxString GetLabel(bool pReturnNameIfEmpty=true) const; - - - /** Sets a label for the property. - * \param pLabel Label string. - */ - void SetLabel(const FbxString& pLabel); - - /** Returns the object that contains the property. - * \return The property object owner (or null if the property is an orphan). - */ - FbxObject* GetFbxObject() const; - //@} - - /** - * \name User data - */ - //@{ - /** Sets the user tag. - * \param pTag The user tag to be set. - */ - void SetUserTag(int pTag); - - //! Gets the user tag. - int GetUserTag(); - - /** Sets the user data pointer. - * \param pUserData The user data pointer. - */ - void SetUserDataPtr(void* pUserData); - - /** Gets the user data pointer. - * \return The user data pointer. - */ - void* GetUserDataPtr(); - //@} - - /** - * \name Property Flags. - */ - //@{ - /** Changes the property attribute. - * \param pFlag Property attribute identifier. - * \param pValue New state of pFlag. - */ - void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue); - - /** Returns the state of the property attribute. - * \param pFlag Property attribute identifier. - * \return The state of the property attribute(pFlag). - */ - bool GetFlag(FbxPropertyFlags::EFlags pFlag) const; - - /** Returns the state of all of the property attributes. - * \return The state of the property attributes(pFlags). - */ - FbxPropertyFlags::EFlags GetFlags() const; - - /** Returns the inheritance type of the given flag, similar to GetValueInheritType(). - * \param pFlag The flag to be queried. - * \return The inheritance type of the specific flag. - */ - FbxPropertyFlags::EInheritType GetFlagInheritType( FbxPropertyFlags::EFlags pFlag ) const; - - /** Sets the inheritance type for the specific flag, similar to SetValueInheritType(). - * \param pFlag The flag to be set. - * \param pType The inheritance type to be set. - * \return \c True on success, \c false otherwise. - */ - bool SetFlagInheritType( FbxPropertyFlags::EFlags pFlag, FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property flag has been modified from its default value. - * \param pFlag The flag to be queried. - * \return \c True if the value of this property has changed, \c false otherwise - */ - bool ModifiedFlag( FbxPropertyFlags::EFlags pFlag ) const; - //@} - - /** - * \name Assignment and comparison operators - */ - //@{ - /** Assignment operator. - * \param pProperty The property assigned to this property. - * \return This property. - */ - FbxProperty& operator= (const FbxProperty& pProperty); - - /** Equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if equal, \c false otherwise. - */ - bool operator== (const FbxProperty& pProperty) const; - - /** Non-equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!= (const FbxProperty& pProperty) const; - - /** Lesser operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxProperty& pProperty) const; - - /** Greater operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxProperty& pProperty) const; - - /** Equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue doesn't equal zero, or this property is invalid and pValue equals zero, \c false otherwise. - */ - inline bool operator== (int pValue) const { return (pValue == 0) ? !IsValid() : IsValid(); } - - /** Non-equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue equals zero, or this property is invalid and pValue doesn't equal zero, \c false otherwise. - */ - inline bool operator!= (int pValue) const { return (pValue != 0) ? !IsValid() : IsValid(); } - - /** Compares this property's value to another property's value. - * \param pProperty The property whose value is compared with this property's value. - * \return \c True if equal, \c false otherwise. - */ - bool CompareValue(const FbxProperty& pProperty) const; - //@} - - /** Copies the value of a property. - * \param pProperty The property from which to derive the value. - * \return \c True if value has been copied successfully, \c false otherwise. - */ - bool CopyValue(const FbxProperty& pProperty); - - /** - * \name Value management. - */ - //@{ - /** Gets the value of the property. - * \tparam T The data type of the value. - * \return The property value. - */ - template inline T Get() const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Sets the value of the property. - * \param pValue The new value - * \return \c True if type is compatible and the value is set successfully, \c false otherwise. - */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** Judges the property's validity. - * \return \c True if this property is valid, \c false otherwise. - */ - bool IsValid() const; - - /** Checks if the specified property's value has changed from its default value. - * \param pProperty Property that is tested. - * \return \c True if the property value is still the default, \c false otherwise. - * \remarks If the inheritance type of pProperty's value is eOverride, pProperty's value should - * have been modified, so pProperty doesn't have the default value. - * If the inheritance type of pProperty's value is eInherit, that means pProperty's value inherits - * the referenced object's property value, so pProperty has the default value. - */ - static bool HasDefaultValue(FbxProperty& pProperty); - - /** Queries the inheritance type of the property. - * Use this method to determine if this property's value is overridden from the default - * value, or from the referenced object, if this object is a clone. - * \return The inheritance type of the property. - */ - FbxPropertyFlags::EInheritType GetValueInheritType() const; - - /** Sets the inheritance type of the property. - * Use the method to explicitly override the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * You can also use this to explicitly inherit the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * \param pType The new inheritance type. - * \return \c True on success, \c false otherwise. - */ - bool SetValueInheritType( FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property's value has been modified from its default value. - * \return \c True if the value of the property has changed, \c false otherwise. - * \remarks If the inheritance type of the property's value is eOverride, the property's value should - * have been modified, it returns \c true. - * If the inheritance type of the property's value is eInherit, that means the property's value inherits - * the referenced object's property value, so the property's value is not modified and it returns \c false. - */ - bool Modified() const; - //@} - - /** - * \name Property Limits. - * Property limits are provided for convenience if some applications desire to - * bound the range of possible values for a given type property. FBX will never - * apply these limits internally, however it will store and retrieve the limits values - * from files, and will assure that they are persistent in memory - * while the property exists. - * - * Notes: - * - The limit value is truncated to the property data type. - * - * - These limits are meaningless for the boolean type. It is the responsibility of the - * calling application to implement the necessary instructions to limit the property of boolean type. - * - * - The SetMinLimit/SetMaxLimit methods will do nothing if SupportSetLimitsAsDoube() returns false. - */ - //@{ - /** Returns whether setting limits as a double number on this property type is allowed. - * \return \c True if allowed, \c false otherwise. - */ - bool SupportSetLimitAsDouble() const; - - /** Sets a minimum property value limit. - * \param pMin Minimum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMinLimit(double pMin); - - /** Returns whether a minimum limit exists, if it returns false, - * calling GetMinLimit() produces undefined behavior. - * \return \c True when a minimum limit exists, \c false otherwise. - */ - bool HasMinLimit() const; - - /** Returns the minimum property value limit. - * \return The minimum value limit. - */ - double GetMinLimit() const; - - /** Returns whether a maximum limit exists, if it returns false, - * calling GetMaxLimit() produces undefined behavior. - * \return \c True when a maximum limit exists, \c false otherwise. - */ - bool HasMaxLimit() const; - - /** Sets a maximum property value limit. - * \param pMax Maximum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMaxLimit(double pMax); - - /** Returns the maximum property value. - * \return The maximum value limit. - */ - double GetMaxLimit() const; - - /** Sets the minimum and maximum value limit of the property. - * \param pMin Minimum value allowed. - * \param pMax Maximum value allowed. - \return \c True if both the min and max limit have been set, \c false otherwise. - */ - bool SetLimits(double pMin, double pMax); - //@} - - /** - * \name Enum and property list - */ - //@{ - /** Adds a string value at the end of the enumeration list. - * \param pStringValue The string value to be added. - * \return The index in the list where the string is added or -1 if the action failed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to add a value that is already - * in the enumeration list will fail. - * Empty strings are not allowed. - */ - int AddEnumValue(const char* pStringValue); - - /** Inserts a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value to be inserted. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to insert a value that is already - * in the enumeration list will fail. - * pIndex must be in the range [0, ListValueGetCount()]. - * Empty strings are not allowed. - */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Returns the number of elements in the enumeration list. - * \return The number of elements in the enumeration list. - * \remarks This function returns 0 if the property type is not eFbxEnum or eFbxEnumM. - */ - int GetEnumCount() const; - - /** Sets a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value at the specific index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to set a value that is already - * in the enumeration list will fail. - * The function assigns the string value to the specific index. - * A string value must exist at the specific index in order to be changed. - * Empty strings are not allowed. - */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Removes the string value at the specified index. - * \param pIndex Index of the string value to be removed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnuM. - */ - void RemoveEnumValue(int pIndex); - - /** Returns a string value at the specified index - * \param pIndex Zero bound index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - */ - const char* GetEnumValue(int pIndex) const; - //@} - - /** - * \name Hierarchical properties - */ - //@{ - /** Judges if this property is the root property. - * \return \c True when this property is a root property, \c false otherwise. - */ - inline bool IsRoot() const { return mPropertyHandle.IsRoot(); } - - /** Judges whether this property is a child of the specified property. - * \param pParent The specified property. - * \return \c True when this property is a child of the specified property, \c false otherwise. - */ - inline bool IsChildOf(const FbxProperty& pParent) const { return mPropertyHandle.IsChildOf(pParent.mPropertyHandle); } - - /** Judges whether this property is a descendant of the specified property. - * \param pAncestor The specified property. - * \return \c True when this property is a descendant of the specified property, \c false otherwise. - */ - inline bool IsDescendentOf(const FbxProperty& pAncestor) const { return mPropertyHandle.IsDescendentOf(pAncestor.mPropertyHandle); } - - /** Returns the parent property of this property. - * \return The parent of this property. - */ - inline FbxProperty GetParent() const { return FbxProperty(mPropertyHandle.GetParent()); } - - /** Returns the first child of this property. - * \return The first child of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetChild() const { return FbxProperty(mPropertyHandle.GetChild()); } - - /** Returns the sibling of this property. - * \return The sibling of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetSibling() const { return FbxProperty(mPropertyHandle.GetSibling()); } - - /** Returns the first property that is a descendant of this property. - * \return The first descendant of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetFirstDescendent() const { return FbxProperty(mPropertyHandle.GetFirstDescendent()); } - - /** Returns the property that follows pProperty that is a descendant of this property. - * \param pProperty The last found descendant. - * \return The property that follows pProperty, if there is none, an invalid property is returned. - */ - inline FbxProperty GetNextDescendent(const FbxProperty& pProperty) const { return FbxProperty(mPropertyHandle.GetNextDescendent(pProperty.mPropertyHandle)); } - - /** Searches a property using its name. - * \param pName The name of the property as a \c NULL terminated string. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pCaseSensitive)); } - - /** Searches a property using its name and data type. - * \param pName The name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - - /** Searches a property using its full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pCaseSensitive)); } - - /** Searches a property using its full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - //@} - - /** - * \name Optimizations - */ - //@{ - //! Internal function for building a property name map. - inline void BeginCreateOrFindProperty(){ mPropertyHandle.BeginCreateOrFindProperty(); } - - //! Internal function for clearing the property name map. - inline void EndCreateOrFindProperty(){ mPropertyHandle.EndCreateOrFindProperty(); } - - //!This is an internal class that you can use to build and clear the name map of properties. You can use the name map to speed up searching for property names. - class FbxPropertyNameCache - { - public: - /** Constructor, the name map is created in the constructor. - * \param prop Property for building and clearing the name map. - */ - FbxPropertyNameCache(const FbxProperty& prop) : mProp(const_cast(prop)){ mProp.BeginCreateOrFindProperty(); } - - //! Destructor, the name map is destroyed in destructor. - ~FbxPropertyNameCache(){ mProp.EndCreateOrFindProperty(); } - - private: - FbxProperty& mProp; - FbxPropertyNameCache& operator=(const FbxPropertyNameCache& pOther){ mProp = pOther.mProp; mProp.BeginCreateOrFindProperty(); return *this; } - }; - //@} - - /** - * \name Animation Curve Management - */ - //@{ - /** Retrieve the proper animation evaluator to use for this property. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Find out if the property is animated: has a curve node with curves. - * \param pAnimLayer The animation layer to test for curve presence. Set to NULL if you want to use the default animation layer of the default animation stack. - * \return \c true if the property is animated. */ - bool IsAnimated(FbxAnimLayer* pAnimLayer=NULL) const; - - /** Evaluate the value of a property if it has animation and return the result as the template type. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ - template T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - FbxPropertyValue& EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Creates a FbxAnimCurveNode on the specified layer. - * \param pAnimLayer The animation layer the FbxAnimCurveNode object is attached to. - * \return Pointer to the created FbxAnimCurveNode. - * \remarks This function check the property FbxPropertyFlags::eAnimatable flag and fails to execute if it is not set. - * \remarks If created, the FbxAnimCurveNode is automatically connected to the property and the animation layer. - * \remarks The created FbxAnimCurveNode does not automatically allocate anim curves. - * \remarks On the successful execution of this function, the property eAnimated flag is set to \c true. */ - FbxAnimCurveNode* CreateCurveNode(FbxAnimLayer* pAnimLayer); - - /** Get the property's animation curve node on the default animation stack and base layer. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(bool pCreate=false); - - /** Get the property's animation curve node on the specified animation stack, using its base layer. - * \param pAnimStack The animation stack to use to get or create the property's animation curve node. - * \c NULL can be passed to automatically specify the default animation stack. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimStack* pAnimStack, bool pCreate=false); - - /** Get the property's animation curve node on the specified animation layer. - * \param pAnimLayer The animation layer to use to get or create the property's animation curve node. Cannot be NULL. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimLayer* pAnimLayer, bool pCreate=false); - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), NULL, pCreate); - } - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pChannel, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), pChannel, pCreate); - } - - /** Get the FbxAnimCurve of the specified channel from the specified animation layer. - * This function looks for the FbxAnimCurveNode named pName and the channel pChannel. It - * will retrieves the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pName Name of the curve node. It is an error to leave this field empty. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL - * use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. - * \remark If pChannel is NULL, this function is the equivalent of GetCurve(FbxAnimLayer*, bool). */ - FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pName, const char* pChannel, bool pCreate); - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this property to one source object. - * \param pObject The source object to which this property connects. - * \param pType The connection type between the property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the source object. - * \param pObject The source object. - * \return \c True if this property connects with the source object, \c false otherwise. - */ - bool IsConnectedSrcObject(const FbxObject* pObject) const; - - /** Disconnects this property from one source object. - * \param pObject The source object from which this property will be disconnected. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcObject(FbxObject* pObject); - - /** Disconnects this property from all the source objects. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(); - - /** Disconnects this property from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(const FbxCriteria& pCriteria); - - /** Returns the number of source objects with which this property connects. - * \return The number of source objects with which this property connects. - */ - int GetSrcObjectCount() const; - - /** Returns the number of source objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this property connects. - */ - int GetSrcObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the source object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const int pIndex=0) const; - - /** Returns the source object that satisfies the criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the source object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the source object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all source objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all source objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this property connects. - * \tparam T The specified class type. - * \return The number of source objects of the specified class type with which this property connects. - */ - template inline int GetSrcObjectCount() const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of source objects which are of the specified class type and satisfy the given criteria. - */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object which is of the specified class type and satisfies the given criteria at the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this property to one destination object. - * \param pObject The destination object with which this property connects. - * \param pType The connection type between this property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the destination object. - * \param pObject The destination object. - * \return \c True if this property connects with the destination object, \c false otherwise. - */ - bool IsConnectedDstObject(const FbxObject* pObject) const; - - /** Disconnects this property from the destination object. - * \param pObject The destination object from which this property disconnects from. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstObject(FbxObject* pObject); - - /** Disconnects this property from all the destination objects. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(); - - /** Disconnects this property from all the destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(const FbxCriteria& pCriteria); - - /** Returns the number of destination objects with which this property connects. - * \return The number of destination objects with which this property connects. - */ - int GetDstObjectCount() const; - - /** Returns the number of destination objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of destination objects that satisfy given criteria with which this property connects. - */ - int GetDstObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the destination object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const int pIndex=0) const; - - /** Returns the destination object that satisfies given criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies given criteria at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the destination object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the destination object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all the destination objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all the destination objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this property connects. - * \tparam T The specified class type. - * \return The number of destination objects of the specified class type with which this property connects. - */ - template inline int GetDstObjectCount() const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object of the specified class type at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object which is of the specified class type and satisfies the given criteria at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name General Property Connection and Relationship Management - */ - //@{ - // Properties - /** Connects this property to a source property. - * \param pProperty The source property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcProperty(const FbxProperty& pProperty); - - /** Judges whether this property connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this property connects with the specified source property, \c false otherwise. - */ - bool IsConnectedSrcProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcProperty(const FbxProperty& pProperty); - - /** Returns the number of source properties with which this property connects. - * \return The number of source properties with which this property connects. - */ - int GetSrcPropertyCount() const; - - /** Connects this property to a destination property. - * \param pProperty The destination property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstProperty(const FbxProperty& pProperty); - - /** Judges if this property connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this property connects with the specified destination property, \c false otherwise. - */ - bool IsConnectedDstProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstProperty(const FbxProperty& pProperty); - - /** Returns the number of destination properties with which this property connects. - * \return The number of destination properties with which this property connects. - */ - int GetDstPropertyCount() const; - - //!Clears the connection cache of this property, this cache is used to store the connections that satisfy the given criteria. - void ClearConnectCache(); - - /** Returns the source property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - FbxProperty GetSrcProperty(const int pIndex=0) const; - - /** Searches the source property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - FbxProperty FindSrcProperty(const char* pName, const int pStartIndex=0) const; - - /** Returns the destination property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - FbxProperty GetDstProperty(const int pIndex=0) const; - - /** Searches the destination property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - FbxProperty FindDstProperty(const char* pName, const int pStartIndex=0) const; - //@} - - //! Hierarchical separator of properties. - static const char* sHierarchicalSeparator; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxProperty(FbxObject* pObject, const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - FbxProperty(const FbxProperty& pParent, const char* pName, const FbxDataType& pDataType, const char* pLabel); - - bool Set(const void* pValue, const EFbxType& pValueType, bool pCheckForValueEquality=true); - bool Get(void* pValue, const EFbxType& pValueType) const; - - bool NotifySetRequest(); - bool NotifySet(); - bool NotifyGet() const; - -private: - inline void* Get() const { FBX_ASSERT_NOW("Cannot get property value as void!"); return NULL; } - inline bool Set(const void* &){ FBX_ASSERT_NOW("Cannot set property value as void!"); return false; } - - bool ConnectSrc(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectSrc(const FbxProperty& pProperty); - bool DisconnectAllSrc(); - bool DisconnectAllSrc(const FbxCriteria& pCriteria); - bool IsConnectedSrc(const FbxProperty& pProperty) const; - int GetSrcCount() const; - int GetSrcCount(const FbxCriteria& pCriteria) const; - FbxProperty GetSrc(int pIndex=0) const; - FbxProperty GetSrc(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindSrc(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - bool ConnectDst(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectDst(const FbxProperty& pProperty); - bool DisconnectAllDst(); - bool DisconnectAllDst(const FbxCriteria& pCriteria); - bool IsConnectedDst(const FbxProperty& pProperty) const; - int GetDstCount() const; - int GetDstCount(const FbxCriteria& pCriteria) const; - FbxProperty GetDst(int pIndex=0) const; - FbxProperty GetDst(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindDst(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - mutable FbxPropertyHandle mPropertyHandle; - - friend class FbxObject; - friend class FbxIOSettings; - friend class FbxBindingOperator; - friend class FbxAnimEvalClassic; - friend void FbxMarkObject(FbxObject* pObject, FbxMap& pObjectDstDisconnectCount, FbxSet& pObjectsToDeleted, FbxArray& pObjectToDeletedInSequence); - friend void FbxCleanUpConnectionsAtDestructionBoundary(FbxScene* pObject, FbxArray& pObjectToDeletedInSequence); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief This template class is used to contain user properties of specific data types. -* \nosubgrouping -*/ -template class FbxPropertyT : public FbxProperty -{ -public: - /** - * \name Static initialization. - */ - //@{ - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pValue The value of the property. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(pValue)), pValue, pForceSet, pFlags); - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pCompound The parent property of this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals to the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxProperty pCompound, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pCompound, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - //@} - - /** \name Value Management */ - //@{ - /** Assignment function - * \param pValue The value assigned to this property. - * \return This property. */ - FbxPropertyT& Set(const T& pValue){ FbxProperty::Set(&pValue, FbxTypeOf(pValue)); return *this; } - - /** Retrieve function - * \return The value of the property. */ - T Get() const { T lValue; FbxProperty::Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Assignment operator - * \param pValue The value of type T assigned to this property. - * \return This property. */ - FbxPropertyT& operator=(const T& pValue){ return Set(pValue); } - - /** Type cast operator - * \return The value of the property of type T. */ - operator T() const { return Get(); } - //@} - - /** \name Animation Evaluation */ - //@{ - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false) - { - return EvaluatePropertyValue(*this, pTime, pForceEval); - } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -template <> class FbxPropertyT : public FbxProperty -{ -public: - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(eFbxReference), pValue, pForceSet, pFlags); - } - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - Set(pValue); // since we will trigger callbacks in there! - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - FbxReference Get() const - { - FbxProperty::NotifyGet(); - return GetSrcObject(); - } - - FbxPropertyT& Set(const FbxReference& pValue) - { - if( FbxProperty::NotifySetRequest() ) - { - DisconnectAllSrcObject(); - if( ConnectSrcObject(pValue) ) - { - FbxProperty::SetValueInheritType(FbxPropertyFlags::eOverride); - FbxProperty::NotifySet(); - } - } - return *this; - } - - operator FbxReference() const - { - return Get(); - } - - FbxPropertyT& operator=(const FbxReference& pValue) - { - return Set(pValue); - } -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertydef.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertydef.h deleted file mode 100644 index dbb82aa..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertydef.h +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertydef.h -#ifndef _FBXSDK_CORE_PROPERTY_DEFINITION_H_ -#define _FBXSDK_CORE_PROPERTY_DEFINITION_H_ - -#include - -#include - -#include - -#define FBXSDK_PROPERTY_ID_NULL -1 -#define FBXSDK_PROPERTY_ID_ROOT 0 - -class FbxPropertyPage; - -class FBXSDK_DLL FbxPropertyFlags -{ -public: - //! Property inherit types - enum EInheritType - { - eOverride, //!< Property override this flag from its reference property. - eInherit, //!< Property inherit this flag from its reference property. - eDeleted //!< Property has been deleted, so inheritance is invalid. - }; - - //! Property flags that affect their behaviors - enum EFlags - { - eNone = 0, //!< No flag. - eStatic = 1 << 0, //!< Property is defined in the class declaration, so it wasn't created dynamically. - eAnimatable = 1 << 1, //!< Property can be animated, thus is can have am animation curve node connected. - eAnimated = 1 << 2, //!< Property is animated, so it also has an animation curve node connected. - eImported = 1 << 3, //!< Property has been created during import process when reading FBX file. - eUserDefined = 1 << 4, //!< Property has been defined by user, not by the FBX SDK. - eHidden = 1 << 5, //!< Property should not be displayed on user interface. - eNotSavable = 1 << 6, //!< Property value must not be exported when writing FBX files. - - eLockedMember0 = 1 << 7, //!< This property has its member #0 locked. - eLockedMember1 = 1 << 8, //!< This property has its member #1 locked. - eLockedMember2 = 1 << 9, //!< This property has its member #2 locked. - eLockedMember3 = 1 << 10, //!< This property has its member #3 locked. - eLockedAll = eLockedMember0 | eLockedMember1 | eLockedMember2 | eLockedMember3, - eMutedMember0 = 1 << 11, //!< This property has its member #0 muted. - eMutedMember1 = 1 << 12, //!< This property has its member #1 muted. - eMutedMember2 = 1 << 13, //!< This property has its member #2 muted. - eMutedMember3 = 1 << 14, //!< This property has its member #3 muted. - eMutedAll = eMutedMember0 | eMutedMember1 | eMutedMember2 | eMutedMember3, - - //Private flags - eUIDisabled = 1 << 15, //!< Private flag for dynamic UI in FBX plug-ins. - eUIGroup = 1 << 16, //!< Private flag for dynamic UI in FBX plug-ins. - eUIBoolGroup = 1 << 17, //!< Private flag for dynamic UI in FBX plug-ins. - eUIExpanded = 1 << 18, //!< Private flag for dynamic UI in FBX plug-ins. - eUINoCaption = 1 << 19, //!< Private flag for dynamic UI in FBX plug-ins. - eUIPanel = 1 << 20, //!< Private flag for dynamic UI in FBX plug-ins. - eUILeftLabel = 1 << 21, //!< Private flag for dynamic UI in FBX plug-ins. - eUIHidden = 1 << 22, //!< Private flag for dynamic UI in FBX plug-ins. - - eCtrlFlags = eStatic | eAnimatable | eAnimated | eImported | eUserDefined | eHidden | eNotSavable | eLockedAll | eMutedAll, - eUIFlags = eUIDisabled | eUIGroup | eUIBoolGroup | eUIExpanded | eUINoCaption | eUIPanel | eUILeftLabel | eUIHidden, - eAllFlags = eCtrlFlags | eUIFlags, - - eFlagCount = 23, - }; - - bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetFlags() const; - FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const; - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const; - - bool SetMask(FbxPropertyFlags::EFlags pFlags); - bool UnsetMask(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetMask() const; - - bool Equal(const FbxPropertyFlags& pOther, FbxPropertyFlags::EFlags pFlags) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyFlags(); - explicit FbxPropertyFlags(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags Clone(FbxPropertyPage* pPage); - - static const int sLockedMembersMax = 4; //Maximum number of property sub-member that can be locked. - static const int sLockedMembersBitOffset = 7; //Number of bits to shift to get to the first locked member flag. - static const int sMutedMembersMax = 4; //Maximum number of property sub-member that can be muted. - static const int sMutedMembersBitOffset = 11; //Number of bits to shift to get to the first muted member flag. - -private: - FbxUInt32 mFlagData, mMaskData; - - FBX_ASSERT_STATIC(sizeof(FbxUInt32) * 8 >= FbxPropertyFlags::eFlagCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPropertyValue -{ -public: - static FbxPropertyValue* Create(void* pData, EFbxType pType); - void Destroy(); - FbxPropertyValue* Clone(FbxPropertyPage*); - - bool Get(void* pValue, EFbxType pValueType); - bool Set(const void* pValue, EFbxType pValueType); - size_t GetSizeOf() const; - size_t GetComponentCount() const; - - void IncRef(); - void DecRef(); - int GetRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyValue(); - -private: - FbxPropertyValue(void* pValue, EFbxType pType); - ~FbxPropertyValue(); - - int mRef; - EFbxType mType; - void* mValue; - - FBXSDK_FRIEND_NEW(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_DEFINITION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertyhandle.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertyhandle.h deleted file mode 100644 index 527a653..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertyhandle.h +++ /dev/null @@ -1,576 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyhandle.h -#ifndef _FBXSDK_CORE_PROPERTY_HANDLE_H_ -#define _FBXSDK_CORE_PROPERTY_HANDLE_H_ - -#include - -#include -#include -#include - -#include - -class FbxPropertyPage; -class FbxPropertyHandle; -class FbxConnectionPointFilter; - -//! \brief Class to manage property handle. -class FBXSDK_DLL FbxPropertyHandle -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //! Create an instance - static FbxPropertyHandle Create(); - - /** Create an instance with given instance. - * \param pInstanceOf The given instance. */ - static FbxPropertyHandle Create(const FbxPropertyHandle& pInstanceOf); - - /** Create an instance with given name and type. - * \param pName Property name. - * \param pType Property type. */ - static FbxPropertyHandle Create(const char* pName, EFbxType pType=eFbxUndefined); - - /** Create an instance with given name and type info. - * \param pName - * \param pTypeInfo */ - static FbxPropertyHandle Create(const char* pName, FbxPropertyHandle pTypeInfo); - - /** If this property is root property, delete the property page, otherwise delete the property. - * \return If succeed, return true. */ - bool Destroy(); - - //! Default constructor. - FbxPropertyHandle(); - - /** Copy constructor. - * \param pAddress FbxPropertyHandle copied to this one. */ - FbxPropertyHandle(const FbxPropertyHandle& pAddress); - - //! Destructor - ~FbxPropertyHandle(); - - /** Character constructor. - * \param pPage - * \param pId */ - FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT); - //@} - - /** - * \name Assignment and basic info - */ - //@{ - /** FbxPropertyHandle assignment operator. - * \param pHandle FbxPropertyHandle assigned to this one. */ - FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle); - - /** Equality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool operator==(const FbxPropertyHandle& pHandle) const; - - /** Inequality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if unequal, \c false otherwise. */ - bool operator!=(const FbxPropertyHandle& pHandle) const; - - /** Lesser operator, used to sort property handle in map. - * \param pHandle The property handle compared to this property handle. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxPropertyHandle& pHandle) const; - - /** Greater operator, used to sort property handle in map. - * \param pProperty The property handle compared to this property handle. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxPropertyHandle& pHandle) const; - - /** Compare type info together - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool Is(const FbxPropertyHandle& pHandle) const; - - //! Judge validity - bool Valid() const; - - //! Get the property name - const char* GetName() const; - - //! Get the property label - const char* GetLabel() const; - - /** Set a label to the property - * \param pLabel The given label string - * \return \c true if successful. */ - bool SetLabel(const char* pLabel); - - //! Get the property type - EFbxType GetType() const; - - //! Get the property type info - FbxPropertyHandle GetTypeInfo() const; - - //! Get the property attribute state - FbxPropertyFlags::EFlags GetFlags() const; - - /** Gets the inheritance type for the given flag. - * \param pFlags The flag to query - * \param pCheckReferences Decide whether check instance. If it is true, check instance. - * \return The inheritance type */ - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckReferences) const; - - /** According the given parameter Change the attributes of the property. - * \param pFlags The given flags used as mask. - * \param pValue If pValue is true, set mask with given flags, otherwise unset mask with given flags. - * \return If succeed, return true. */ - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - - /**Sets the inheritance type for the given flag - * \param pFlags The flag to set - * \param pType The inheritance type to set - * \return If succeed, return true. */ - bool SetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, FbxPropertyFlags::EInheritType pType); - - //! Get the property user data. - void* GetUserData() const; - - /** Set user data to the property - * \param pUserData The given user data - * \return If succeed, return true. */ - bool SetUserData(const void* pUserData); - - //! Get the property user tag - int GetUserTag() const; - - /** Set user tag to the property - * \param pUserData The given user tag - * \return If succeed, return true. */ - bool SetUserTag(int pUserData); - //@} - - /** - * \name Enum management - */ - //@{ - /** Add new value at the end of the enum list in the property. - * \param pStringValue The given new value - * \return The index of the value. */ - int AddEnumValue(const char* pStringValue); - - /** Insert new value at the given index of the enum list in property. - * \param pIndex The given index - * \param pStringValue The given new value */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Get the enum count of enum list in property - * \return The enum count of enum list in property */ - int GetEnumCount(); - - /** Set value at the given index of the enum list in the property. - * \param pIndex The given index - * \param pStringValue The given new value used to instead the old value. */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Remove the value at the index of the enum list in the property. - * \param pIndex The given index */ - void RemoveEnumValue(int pIndex); - - /** Get the value at the index of enum list in the property. - * \param pIndex The given index - * \return The value at the given index */ - char* GetEnumValue(int pIndex); - //@} - - /** - * \name Child and Struct management - */ - //@{ - //! Create the map for find property in the property page - void BeginCreateOrFindProperty(); - - //! Clear the map which created for find property. - void EndCreateOrFindProperty(); - - /** Judge if the property is the root property. - * \return Return true if this property is root property. */ - inline bool IsRoot() const { return ( mPage && mId == 0 ) ? true : false; } - - /** Judge if the property is the child property of the given parent property. - * \param pParent The given parent property handle - * \return Return true if this property is child of given property. */ - bool IsChildOf(const FbxPropertyHandle& pParent) const; - - /** Judge if the property is descendent property of the given property. - * \param pParent The given parent property handle - * \return Return true if this property is descendant of given property. */ - bool IsDescendentOf(const FbxPropertyHandle& pParent) const; - - /** Set parent property handle.No matter what enters,the result is always false. - * \param pOther - * \return False */ - bool SetParent(const FbxPropertyHandle& pOther ); - - /** Add a property to the property page. - * \param pName The name of property. - * \param pTypeInfo The added property's type info. - * \return The handle of the new added property */ - FbxPropertyHandle Add(const char* pName, const FbxPropertyHandle& pTypeInfo); - - /** Get parent property - * \return If the parent property exists, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetParent() const; - - /** Get child property - * \return If the child property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetChild() const; - - /** Get sibling property - * \return If the sibling property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetSibling() const; - - /** Get first descendent property - * \return If the descendent property is exist, return the first descendent property handle,otherwise return -1. */ - FbxPropertyHandle GetFirstDescendent() const; - - /** Get first descendent property which after the given property - * \param pHandle The given property handle - * \return If the descendent property can be found after the given property, - * return the first found property handle,otherwise return -1. */ - FbxPropertyHandle GetNextDescendent(const FbxPropertyHandle& pHandle) const; - - /** Find the property with given name - * \param pName The given property name - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, bool pCaseSensitive) const; - - /** Find the property with given name and type info. - * \param pName The given property name - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - //@} - - /** - * \name Connection management - */ - //@{ - /** Connect source property. - * \param pSrc The given source property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get source properties' count. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source count of the sub connection point. - * Otherwise, return the src count of this property. - * \return The count of source properties */ - int GetSrcCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get source property with the given index. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source property of the sub connection point. - * Otherwise, return the source property of this property. - * \param pIndex The given index - * \return The source property handle. */ - FbxPropertyHandle GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect source property. - * \param pSrc The given source property - * \return If disconnect successfully, return true, otherwise return false. */ - bool DisconnectSrc(const FbxPropertyHandle& pSrc); - - /** Judge if it is connected with the given source property. - * \param pSrc The given source property - * \return If it is connected, return true, otherwise return false. */ - bool IsConnectedSrc(const FbxPropertyHandle& pSrc); - - /** Connect destination property. - * \param pDst The given destination property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get destination properties' count. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination count of the sub connection point. - * Otherwise, return the destination count of this property. - * \return The count of destination properties */ - int GetDstCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get destination property with the given index. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination property of the sub connection point. - * Otherwise, return the destination property of this property. - * \param pIndex The given index - * \return The destination property handle. */ - FbxPropertyHandle GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect destination property. - * \param pDst The given destination property - * \return If disconnect successfully, return true,otherwise, return false. */ - bool DisconnectDst(const FbxPropertyHandle& pDst); - - /** Judge if it is connected with the given destination property. - * \param pDst The given destination property - * \return If it is connected, return true,otherwise, return false. */ - bool IsConnectedDst(const FbxPropertyHandle& pDst); - - //! Clear connect cache - void ClearConnectCache(); - - //! Clear all connect without sending any notification (Internal use ONLY) - void WipeAllConnections(); - //@} - - /** \name Limits Functions - * Minimum and maximum value limits can be associated with properties, but FBX - * will not verify that these limits are respected. FBX however will store and - * retrieve limits from files, and will assure that they are persistent in memory - * while the property handle object exists. - * - * Soft minimums and maximums values are specifying a second set of limits that can be - * used for UI objects such as sliders. FBX will handle them the same way it does - * with the normal limits. */ - //@{ - /** Judge if this property has a minimum value. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool HasMin() const; - - /** Get the minimum value and value type of this property. - * \param pValue The minimum value of this property. - * \param pValueType The value type of this property. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool GetMin(void* pValue, EFbxType pValueType) const; - - /** Set the minimum value and value type for this property. - * \param pValue The given minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. - */ - template inline bool SetMin(const T& pValue){ return SetMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The minimum value of this property */ - template inline T GetMin(const T* pFBX_TYPE) const { T lValue; GetMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft minimum value. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool HasSoftMin() const; - - /** Get the soft minimum value and value type of this property. - * \param pValue The soft minimum value of this property. - * \param pValueType The value type of this property. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool GetSoftMin(void* pValue, EFbxType pValueType) const; - - /** Set the soft minimum value and value type for this property. - * \param pValue The given soft minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMin(const T& pValue){ return SetSoftMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft minimum value of this property */ - template inline T GetSoftMin(const T* pFBX_TYPE) const { T lValue; GetSoftMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has maximum value. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool HasMax() const; - - /** Get the maximum value and value type of this property. - * \param pValue The maximum value of this property. - * \param pValueType The value type of this property. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool GetMax(void* pValue, EFbxType pValueType) const; - - /** Set the maximum value and value type for this property. - * \param pValue The given maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetMax(const T& pValue){ return SetMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The maximum value of this property */ - template inline T GetMax(const T* pFBX_TYPE) const { T lValue; GetMax(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft maximum value. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool HasSoftMax() const; - - /** Get the soft maximum value and value type of this property. - * \param pValue The soft maximum value of this property. - * \param pValueType The value type of this property. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool GetSoftMax(void* pValue, EFbxType pValueType) const; - - /** Set the soft maximum value and value type for this property. - * \param pValue The given soft maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMax(const T& pValue){ return SetSoftMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft maximum value of this property */ - template inline T GetSoftMax(const T* pFBX_TYPE) const { T lValue; GetSoftMax(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Value - */ - //@{ - /** Get value inherit type of this property. - * \param pCheckReferences If it is true,check instance of this property page,otherwise,only check this page. - * \return The value inherit type of this property */ - FbxPropertyFlags::EInheritType GetValueInheritType(bool pCheckReferences) const; - - /** Set value inherit type for this property . - * \param pType The given value inherit type. - * \return If set successfully, return true,otherwise, return false. */ - bool SetValueInheritType(FbxPropertyFlags::EInheritType pType); - - /** Get default value and value type of this property . - * \param pValue The gotten default value of this property. - * \param pValueType The gotten default value type of this property. - * \return If default value be gotten successfully, return true,otherwise, return false. */ - bool GetDefaultValue(void* pValue, EFbxType pValueType) const; - - /** Get value and value type of this property . - * \param pValue The gotten value of this property. - * \param pValueType The gotten value type of this property. - * \return If value be gotten successfully, return true,otherwise, return false. */ - bool Get(void* pValue, EFbxType pValueType) const; - - /** Set property value and value type for this property. - * \param pValue The given property value . - * \param pValueType The given property value type - * \param pCheckValueEquality If it is true, when the given value is equal with - * the property value, the property value will not be set. - * \return If the property value be set successfully, return true,otherwise, return false. */ - bool Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality); - - /** Set property value with the given value . - * \param pValue The given value . - * \return If set successfully, return true,otherwise, return false. */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** get property value. - * \param pFBX_TYPE Not be used. - * \return The gotten property value. */ - template inline T Get(const T* pFBX_TYPE) const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Page settings - */ - //@{ - /** Set the property page data pointer. - * \param pData The given page data pointer. */ - void SetPageDataPtr(void* pData); - - /** Get property page data pointer. - * \return The gotten property page data pointer. */ - void* GetPageDataPtr() const; - //@} - - /** - * \name Page Internal Entry Management - */ - //@{ - /** Push properties to parent instance. - * \return If push successful return true,otherwise,return false. */ - bool PushPropertiesToParentInstance(); - //@} - - /** - * \name Reference Management - */ - //@{ - /** Judge if this property page is a instance of other page. - * \return If this property page is a instance of other page, return true,otherwise,return false. */ - bool IsAReferenceTo(void) const; - - /** Get the property page which this property page make reference to - * \return The property page which this property page make reference to */ - void* GetReferenceTo(void) const; - - /** Judge if this property page is referenced by other pages. - * \return If this property page is referenced by other pages, return true,otherwise,return false. */ - bool IsReferencedBy(void) const; - - /** Get the count of property pages which make reference to this property page. - * \return The count of property pages which make reference to this property page. */ - int GetReferencedByCount(void) const; - - /** According the given index,get the property page which make reference to this property page. - * \param pIndex The given index - * \return The pointer to the property page which reference to this property page and be found by index. */ - void* GetReferencedBy(int pIndex) const; - //@} - -private: - FbxPropertyPage* mPage; - FbxInt mId; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertypage.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertypage.h deleted file mode 100644 index 89d7335..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertypage.h +++ /dev/null @@ -1,1747 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertypage.h -#ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_ -#define _FBXSDK_CORE_PROPERTY_PAGE_H_ - -#include - -#include -#include -#include -#include - -#include - -typedef FbxPair FbxNameMapKey; - -struct FbxNameMapCompare -{ - inline int operator()(const FbxNameMapKey& pKeyA, const FbxNameMapKey& pKeyB) const - { - if( pKeyA.mFirst < pKeyB.mFirst ) return -1; - else if( pKeyA.mFirst > pKeyB.mFirst ) return 1; - return strcmp(pKeyA.mSecond, pKeyB.mSecond); - } -}; - -class FBXSDK_DLL FbxPropertyInfo -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyInfo* Create(const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyInfo >(pName,pTypeInfo); } - static FbxPropertyInfo* Create(const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyInfo >(pName,pType); } - void Destroy() { FbxDelete(this); } - FbxPropertyInfo* Clone(FbxPropertyPage* /*pPage*/) - { - // @@@@@ Filter is missing - // @@@@@ Clone is incomplete - if (mTypeInfo) - { - return FbxNew< FbxPropertyInfo >(mName,mTypeInfo); - } - else - { - return FbxNew< FbxPropertyInfo >(mName,mType); - } - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - - // Labels and Types - - inline FbxStringSymbol GetName() const { return mName; } - EFbxType GetType() const; - FbxPropertyPage* GetTypeInfo() const { return mTypeInfo; } - - inline void SetLabel(const char* pLabel) { mLabel=pLabel; } - inline const char* GetLabel() const { return mLabel.IsEmpty() ? "" : ((const char*)mLabel); } - - inline void SetUserTag(int pUserTag) { mUserTag=pUserTag; } - inline int GetUserTag() const { return mUserTag; } - - inline void SetUserData(const void* pUserData) { mUserData=(void*)pUserData; } - inline void* GetUserData() const { return mUserData; } - - // Enum list - int AddEnumValue(const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - return mEnumList->Add((char*)pStringValue); - } - return -1; - } - - void InsertEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - mEnumList->InsertAt(pIndex,(char*)pStringValue); - } - } - - int GetEnumCount() - { - return mEnumList ? mEnumList->GetCount() : 0; - } - - void SetEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if (lCanAdd) - mEnumList->SetStringAt(pIndex,(char*)pStringValue); - } - } - - void RemoveEnumValue(int pIndex) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - mEnumList->RemoveAt(pIndex); - } - } - - char* GetEnumValue(int pIndex) - { - char* lValue = NULL; - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0; - } - return lValue; - } - - - // Min and Max values - enum EValueIndex {eValueMin, eValueSoftMin, eValueMax, eValueSoftMax, eValueCount}; - - bool HasMinMax(EValueIndex pId) const - { - return mMinMaxValue[pId] != NULL; - } - - bool GetMinMax(EValueIndex pId, void* pValue, EFbxType pValueType) const - { - if (mMinMaxValue[pId]) { - return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType()); - } - return false; - } - - bool SetMinMax(EValueIndex pId, const void* pValue, EFbxType pValueType) - { - if (!mMinMaxValue[pId]) { - size_t lSize = FbxTypeSizeOf(GetType()); - if (lSize) { - mMinMaxValue[pId] = FbxMalloc(lSize); - } - } - if (mMinMaxValue[pId]) { - return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType); - } - return false; - } - -private: - FbxPropertyInfo(const char* pName, FbxPropertyPage* pTypeInfo) - : mRef(0) - , mName(pName) - , mType(eFbxUndefined) - , mTypeInfo(pTypeInfo) - , mUserTag(0) - , mUserData(0) - , mFilter(0) - { - for (int i=0; i mEnumList; -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (push) - #pragma warning (disable: 4355) -#endif - -class FBXSDK_DLL FbxPropertyConnect -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyConnect* Create(FbxPropertyPage* pPage,FbxInt pId) { return FbxNew< FbxPropertyConnect >(pPage,pId); } - void Destroy() { FbxDelete(this); } - FbxPropertyConnect* Clone(FbxPropertyPage* pPage) - { - return FbxNew< FbxPropertyConnect >(pPage,mId); - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - -// Properties - FbxPropertyPage* GetPage() { return mPage; } - FbxInt GetPropertyId() { return mId; } - -// ClearConnectCache() -// ------------------------------------------------------ - inline void ClearConnectCache() - { - mConnectionPoint.SubConnectRemoveAll(); - } - - //! Clear all connect without sending any notification (Internal use ONLY) - inline void WipeAllConnections() - { - mConnectionPoint.WipeConnectionList(); - } - -// Properties - inline bool ConnectSrc(FbxPropertyConnect* pSrc, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectSrc(&pSrc->mConnectionPoint,pType); - } - inline bool DisconnectSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.DisconnectSrc(&pSrc->mConnectionPoint); - } - inline bool IsConnectedSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline int GetSrcCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetSrcCount(pFilter); - } - inline FbxPropertyConnect* GetSrc(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetSrc(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - inline bool ConnectDst(FbxPropertyConnect* pDst, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectDst(&pDst->mConnectionPoint,pType); - } - inline bool IsConnectedDst(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline bool DisconnectDst(FbxPropertyConnect* pDst) - { - return mConnectionPoint.DisconnectDst(&pDst->mConnectionPoint); - } - inline int GetDstCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetDstCount(pFilter); - } - inline FbxPropertyConnect* GetDst(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetDst(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - - int mRef; - FbxConnectionPoint mConnectionPoint; - FbxPropertyPage* mPage; - FbxInt mId; - -private: - FbxPropertyConnect(FbxPropertyPage* pPage,FbxInt pId) : - mRef(0), - mConnectionPoint(this), - mPage(pPage), - mId(pId) - { - } - - ~FbxPropertyConnect(){ if( FbxObject::GetWipeMode() ) mConnectionPoint.WipeConnectionList(); } -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (pop) -#endif - -class FBXSDK_DLL FbxPropertyEntry -{ -public: - static FbxPropertyEntry* Create(FbxInt pParentId, FbxPropertyInfo* pInfo, FbxPropertyValue* pValue, FbxPropertyConnect* pConnect){ return FbxNew(pParentId, pInfo, pValue, pConnect); } - - void Destroy() { FbxDelete(this); } - - inline FbxInt GetParentId(){ return mParentId; } - inline bool IsEmpty(){ return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ? false : true; } - - inline FbxPropertyInfo* Get(const FbxPropertyInfo* /*pType*/){ return mInfo; } - - void Set(FbxPropertyInfo* pInfo) - { - FbxPropertyInfo* lInfo = mInfo; - if( pInfo ) pInfo->IncRef(); - mInfo = pInfo; - if( lInfo ) lInfo->DecRef(); - } - - inline FbxPropertyValue* Get(const FbxPropertyValue* /*pType*/){ return mValue; } - - void Set(FbxPropertyValue* pValue) - { - FbxPropertyValue* lValue = mValue; - if( pValue ) pValue->IncRef(); - mValue = pValue; - if( lValue ) lValue->DecRef(); - } - - inline FbxPropertyConnect* Get(const FbxPropertyConnect* /*pType*/){ return mConnect; } - - void Set(FbxPropertyConnect* pConnect) - { - FbxPropertyConnect* lConnect = mConnect; - if( pConnect ) pConnect->IncRef(); - mConnect = pConnect; - if( lConnect ) lConnect->DecRef(); - } - - inline FbxPropertyFlags* Get(const FbxPropertyFlags* /*pType*/){ return &mFlags; } - inline void Set(FbxPropertyFlags pType){ mFlags = pType; } - inline void Set(FbxPropertyFlags* pType){ mFlags = pType ? *pType : FbxPropertyFlags(FbxPropertyFlags::eNone); } - -private: - FbxPropertyEntry(FbxInt pParentId,FbxPropertyInfo *pInfo,FbxPropertyValue *pValue,FbxPropertyConnect *pConnect) : - mInfo(pInfo), - mValue(pValue), - mConnect(pConnect), - mParentId(pParentId), - mFlags(FbxPropertyFlags::eNone) - { - if( mInfo ) mInfo->IncRef(); - if( mValue ) mValue->IncRef(); - if( mConnect ) mConnect->IncRef(); - } - - ~FbxPropertyEntry() - { - if( mInfo ) mInfo->DecRef(); - if( mValue ) mValue->DecRef(); - if( mConnect ) mConnect->DecRef(); - } - - FbxPropertyInfo* mInfo; - FbxPropertyValue* mValue; - FbxPropertyConnect* mConnect; - FbxInt mParentId; - FbxPropertyFlags mFlags; - - FBXSDK_FRIEND_NEW(); - friend class FbxPropertyPage; -}; - -class FBXSDK_DLL FbxPropertyIdGenerator -{ -public: - FbxPropertyIdGenerator() : mRef(0), mNextId(0) {} - - inline FbxInt GetNextId() const { return mNextId; } - inline FbxInt GetNextIdAndInc() { return mNextId++; } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if( mRef == 0 ) FbxDelete(this); } - -private: - FbxInt mRef, mNextId; -}; - -class FBXSDK_DLL FbxPropertyPage -{ - -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyPage* Create (FbxPropertyPage* pInstanceOf=0) { return FbxNew< FbxPropertyPage >(pInstanceOf); } - static FbxPropertyPage* Create (const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyPage >(pName,pTypeInfo); } - static FbxPropertyPage* Create (const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyPage >(pName,pType); } - void Destroy() { FbxDelete(this); } - - template inline T* GetPropertyItem(const T* pItemType,FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - if (pFoundIn) *pFoundIn = 0; - if (lReferenceEntry) { - T* lItem = lReferenceEntry->Get( FBX_TYPE(T) ); - if (lItem) { - if (pFoundIn) *pFoundIn = lReferencePage; - return lItem; - } else { - return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ; - } - } - return 0; - } - - template inline T* ChangePropertyItemState(const T* pItemType, FbxInt pIndex, FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = NULL; - T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage); - if( pInheritType == FbxPropertyFlags::eOverride ) - { - if( lReferencePage == this ) - { - return lItem; - } - else if( lItem ) - { - FbxPropertyEntry* lEntry = ChangePropertyEntryState(pIndex, FbxPropertyFlags::eOverride); - lEntry->Set(lItem->Clone(this)); - return lEntry->Get(FBX_TYPE(T)); - } - } - else - { - // can't inherit entries that were created on our page. - bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) == NULL); - if( lOwnEntry && FbxPropertyFlags::eInherit == pInheritType) return 0; - - if( lItem && (lReferencePage == this) ) - { - FbxPropertyEntry* lEntry = GetPropertyEntry(pIndex); - lEntry->Set((T*)0); - if( lEntry->IsEmpty() ) - { - ChangePropertyEntryState(pIndex, FbxPropertyFlags::eInherit); - } - } - return 0; - } - return 0; - } - - template FbxPropertyPage* GetFirstPropertyItem(FbxInt pId, const T* pItem) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(T), pId, &lReferencePage); - if( lReferencePage && lReferencePage->mInstanceOf ) - { - FbxPropertyPage* lReferencePage2 = lReferencePage->mInstanceOf->GetFirstPropertyItem(pId, pItem); - return lReferencePage2 ? lReferencePage2 : lReferencePage; - } - return lReferencePage; - } - - const char* GetName(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetName()) : ""; - } - - const char* GetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetLabel()) : ""; - } - - bool SetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const char* pLabel="") - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetLabel(pLabel); - return true; - } else { - return false; - } - } - - void* GetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserData() : 0; - } - - bool SetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const void* pUserData=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserData(pUserData); - return true; - } else { - return false; - } - } - - int GetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserTag() : 0; - } - - bool SetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,int pUserTag=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserTag(pUserTag); - return true; - } else { - return false; - } - } - - EFbxType GetType(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetType() : eFbxUndefined; - } - - FbxInt GetParent(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyEntry* lPropertyEntry = GetPropertyEntry( pId ); - return lPropertyEntry ? lPropertyEntry->GetParentId() : FBXSDK_PROPERTY_ID_NULL; - } - - FbxPropertyPage* GetTypeInfo(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetTypeInfo() : 0; - } - FbxInt Add(FbxInt pParentId, const char* pName, EFbxType pType) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pType),FbxPropertyValue::Create(0,pType),0); - } - FbxInt Add(FbxInt pParentId, const char* pName, FbxPropertyPage* pTypeInfo) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pTypeInfo),FbxPropertyValue::Create(0,pTypeInfo->GetType()),0); - } - - inline bool Reparent( FbxInt /*pChildId*/, FbxInt /*pNewParentId*/ ) - { - // Not implemented. - /* - if( GetParent(pChildId) != pNewParentId && pChildId < mEntries.GetCount() ) - { - FbxPropertyEntry* lChildEntry = mEntries[pChildId]; - lChildEntry->mParentId = pNewParentId; - - //@@@@@ TODO: propagate to instances - - return true; - } - */ - return false; - } - - inline bool IsChildOf(FbxInt pId,FbxInt pParentId) const - { - return GetParent(pId)==pParentId; - - } - - inline bool IsDescendentOf(FbxInt pId,FbxInt pAncestorId) const - { - if (pAncestorId>0) { - FbxInt lParentId = GetParent(pId); - while (lParentId != FBXSDK_PROPERTY_ID_NULL ) { - if (lParentId==pAncestorId) { - return true; - } - lParentId = GetParent(lParentId); - } - return false; - } else { - return true; - } - - } - - //#define PROPERTY_PAGE_SANITY_CHECK // Debug purpose only. Never enable it in a production release. - - /** Retrieves the first child property id of a specified property id. - * \param pParentId The specified property id - * \return the first child property id - */ - FbxInt GetChild(FbxInt pParentId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pParentId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pParentId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != pParentId); - ret1 = lId; - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next sibling property id of a specified property id. - * \param pId The specified property id - * \return the next sibling property id - */ - FbxInt GetSibling(FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lReferenceParentId = GetParent(pId); - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != lReferenceParentId); - - ret1 = pId; - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the first descendent property id of a specified property id. - * \param pAnscestorId The specified property id - * \return the first descendent property id - */ - FbxInt GetFirstDescendent(FbxInt pAnscestorId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pAnscestorId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pAnscestorId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(lId, pAnscestorId)) - { - ret1 = lId; - break; - } - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next descendent property id of a specified property id, with given a descendent property id. - * \param pAnscestorId The specified property id - * \param pId The descendent property id - * \return the next descendent property id - */ - FbxInt GetNextDescendent(FbxInt pAnscestorId, FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(pId, pAnscestorId) ) - { - ret1 = pId; - break; - } - } - - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - - } - - FbxInt FastFind (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive) - { - FbxInt lId = FBXSDK_PROPERTY_ID_NULL; - - bool lSlowQuery = true; - if( mNameMap.mSecond.GetSize() > 0 ) - { - lSlowQuery = false; - // try to use the map if we've got it - NameMap::RecordType* lIterator = mNameMap.mSecond.Find( FbxNameMapKey( pId, pName ) ); - if( !lIterator ) - { - lId = FBXSDK_PROPERTY_ID_NULL; - } - else - { - lId = lIterator->GetValue(); - if (lId != FBXSDK_PROPERTY_ID_NULL && pTypeInfo) - { - lSlowQuery = true; - - // Try to match types. - // If they are mismatched, fall back to the slow query, - // since we might have multiple property with the same name but different types - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if (lPropertyInfo) - { - FbxPropertyPage* lTypeInfo2 = lPropertyInfo->GetTypeInfo(); - if ( lTypeInfo2 && lTypeInfo2->Is(pTypeInfo) ) - { - lSlowQuery = false; - } - } - } - } - } - - if (!lSlowQuery) - return lId; - - // fall back if there's no map or we got one with a different type - - lId = GetChild(pId); - FbxStringSymbol lSearchSymbol( pName ); - while( lId != FBXSDK_PROPERTY_ID_NULL ) { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if ( (!pTypeInfo || lPropertyInfo->GetTypeInfo()->Is(pTypeInfo)) && - ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->GetName(),pName)==0) || - (pCaseSensitive && lPropertyInfo->GetName() == lSearchSymbol)) ) { - return lId; - } - lId = GetSibling(lId); - } - - return FBXSDK_PROPERTY_ID_NULL; - } - - FbxInt Find (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive, const char* pChildrenSeparators ) - { - if (pChildrenSeparators) - { - FbxInt lId; - size_t lFoundIndex = strcspn(pName,pChildrenSeparators); - - // Strip the first part of the name and search - if (lFoundIndexAddEnumValue(pStringValue) : - 1; - } - - void InsertEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->InsertEnumValue(pIndex,pStringValue); - } - - int GetEnumCount(FbxInt pId) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetEnumCount() : 0; - } - - void SetEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->SetEnumValue(pIndex,pStringValue); - } - - void RemoveEnumValue(FbxInt pId, int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->RemoveEnumValue(pIndex); - } - - char* GetEnumValue(FbxInt pId,int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetEnumValue(pIndex) : (char*)""; - } - - // Connection - // --------------------------------- - void ClearConnectCache(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - if (lPropertyConnect) { - lPropertyConnect->ClearConnectCache(); - } - } - - void WipeAllConnections(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - if (lPropertyConnect) { - lPropertyConnect->WipeAllConnections(); - } - } - - bool ConnectSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId, FbxConnection::EType pType) - { - FbxPropertyEntry* lDstEntry = ChangePropertyEntryState(pDstId,FbxPropertyFlags::eOverride); - FbxPropertyEntry* lSrcEntry = pSrcPage->ChangePropertyEntryState(pSrcId,FbxPropertyFlags::eOverride); - FbxPropertyConnect* lDstConnect= lDstEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - FbxPropertyConnect* lSrcConnect= lSrcEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - - // Make sure we have a connection point on both sides of the connection - if (!lDstConnect) { - lDstConnect = FbxPropertyConnect::Create( this,pDstId ); - lDstEntry->Set( lDstConnect ); - } - if (!lSrcConnect) { - lSrcConnect = FbxPropertyConnect::Create( pSrcPage,pSrcId ); - lSrcEntry->Set( lSrcConnect ); - } - - // Must @@@@@@@ Propagate to inherited children - return lDstConnect->ConnectSrc(lSrcConnect,pType); - - } - - bool DisconnectSrc(FbxInt pDstId,FbxPropertyPage* pSrcPage,FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->DisconnectSrc(lSrcConnect); - } - return false; - } - - bool IsConnectedSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->IsConnectedSrc(lSrcConnect); - } - return false; - } - - int GetSrcCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetSrcCount(pFilter) : 0; - } - - bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pSrcPage, FbxInt* pSrcId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lSrc = lPropertyConnect->GetSrc(pFilter,pIndex); - if (lSrc) - { - if (pSrcPage) *pSrcPage = lSrc->GetPage(); - if (pSrcId) *pSrcId = lSrc->GetPropertyId(); - return true; - } - } - return false; - } - - bool ConnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId, FbxConnection::EType pType) - { - return pDstPage->ConnectSrc(pDstId,this,pSrcId,pType); - } - - bool DisconnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->DisconnectSrc(pDstId,this,pSrcId); - } - - bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->IsConnectedSrc(pDstId,this,pSrcId); - } - - int GetDstCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetDstCount(pFilter) : 0; - } - - bool GetDst(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pDstPage, FbxInt* pDstId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lDst = lPropertyConnect->GetDst(pFilter,pIndex); - if (lDst) - { - if (pDstPage) *pDstPage = lDst->GetPage(); - if (pDstId) *pDstId = lDst->GetPropertyId(); - return true; - } - } - return false; - } - - // Min and Max - // --------------------------------- - enum EValueIndex { eValueMin,eValueSoftMin,eValueMax,eValueSoftMax,eValueCount }; - - bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - - return lPropertyInfo ? lPropertyInfo->HasMinMax(pValueId) : false; - } - - bool GetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetMinMax(pValueId,pValue,pValueType) : false; - } - - bool SetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, const void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->SetMinMax(pValueId,pValue,pValueType) : false; - } - - // Value - // --------------------------------- - bool Get(FbxInt pId, void* pValue, EFbxType pValueType) - { - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId ); - return lPropertyValue ? lPropertyValue->Get(pValue,pValueType) : 0; - } - - bool Set(FbxInt pId, const void* pValue, EFbxType pValueType, bool pCheckValueEquality) - { - if( pCheckValueEquality ) - { - FbxPropertyPage* lReferencePage = NULL; - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage ); - void* lCurrentValue = FbxTypeAllocate( pValueType ); - bool lValuesEqual = false; - bool lValueChanged = false; - if( lReferencePage && lReferencePage != this ) - { - // this page inherits, so check if we have to override the value. - if( lPropertyValue ) - { - lPropertyValue->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - } - } - else - { - FbxPropertyPage* lReferencePage2 = NULL; - FbxPropertyValue* lPropertyValue2 = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage2 ) : NULL; - if( lReferencePage2 && lPropertyValue2 ) - { - // this page is an override, but there is another page before us that overrides the value - lPropertyValue2->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - - if( lValuesEqual ) - { - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, FbxPropertyFlags::eInherit ); - lValueChanged = true; - } - - } - // else this page is the originator of the property, so no need to check, - } - - FbxTypeDeallocate(pValueType, lCurrentValue); - lCurrentValue = NULL; - - if( lValuesEqual ) - return lValueChanged; - } - - FbxPropertyValue* lPropertyValue = ChangePropertyItemState( FBX_TYPE(FbxPropertyValue),pId,FbxPropertyFlags::eOverride ); - return lPropertyValue ? lPropertyValue->Set(pValue,pValueType) : false; - } - - inline FbxPropertyFlags::EInheritType GetValueInherit(FbxInt pId, bool pCheckInstanceOf) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(FbxPropertyValue), pId, &lReferencePage); - - // check one level - if( !pCheckInstanceOf ) - { - return lReferencePage == this ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - else - { - if( lReferencePage == this ) return FbxPropertyFlags::eOverride; // this page is either an override, or the originator - else if( !lReferencePage->mInstanceOf ) return FbxPropertyFlags::eInherit; // the reference is the class root, so we must be inheriting - - // The reference page is not the class root, might be another override, or the originator. - FbxPropertyValue* lPropertyValue = lReferencePage->mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ); - - // if lReferencePage->mInstanceOf has the property value, - // lReferencePage is an override - // else - // its the originator, so this page inherits from it. - return lPropertyValue ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - } - - inline bool SetValueInherit(FbxInt pId, FbxPropertyFlags::EInheritType pType) - { - // no support for this mode yet - if( FbxPropertyFlags::eDeleted == pType ) - return false; - - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, pType ); - - // Above call doesn't return error codes, so just check that we match types. - return GetValueInherit(pId, false) == pType; - } - - inline bool GetDefaultValue(FbxInt pId, void* pValue, EFbxType pValueType) const - { - FbxPropertyPage* lReferencePage = GetFirstPropertyItem( pId, FBX_TYPE(FbxPropertyValue) ); - FbxPropertyValue* lPropertyValue = lReferencePage ? lReferencePage->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ) : NULL; - - return lPropertyValue ? lPropertyValue->Get( pValue, pValueType ) : false; - } - - - // useful set and get functions - template inline bool Set( FbxInt pId, const T& pValue ) { return Set( pId,&pValue,FbxTypeOf(pValue),true ); } - template inline T Get( FbxInt pId, const T* pFBX_TYPE) { T lValue; Get( pId,&lValue,FbxTypeOf(lValue) ); return lValue; } - - - void SetDataPtr(void* pDataPtr) { mDataPtr = pDataPtr; } - void* GetDataPtr() const { return mDataPtr; } - - // Instance and override management - // ------------------------------------------ - void PushPropertiesToParentInstance() - { - if (mInstanceOf) { - const int lCount = GetPropertyEntryCount(); - // push the existing properties into the parent - // ---------------------------------------------- - for( int i = 0; i < lCount; ++i ) - { - FbxPropertyEntry* lParentEntry = mInstanceOf->ChangePropertyEntryState( (FbxInt)i,FbxPropertyFlags::eOverride ); - FbxPropertyEntry* lEntry = GetPropertyEntry( (FbxInt)i ); - - if( !lParentEntry ) - { - lParentEntry = FbxPropertyEntry::Create( lEntry->GetParentId(), 0, 0, 0 ); - mInstanceOf->mEntryMap.Insert( i, lParentEntry ); - - //mInstanceOf->AddChild(i); - - } - - FBX_ASSERT( lParentEntry ); - - // Add it to the parent - // Don't touch the connections - // ----------------------------------------- - if (lParentEntry) { - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyInfo)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyValue)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyFlags)) ); - } - - /* - else { - mInstanceOf->Add( - lEntry->GetParentId(), - lEntry->Get(FBX_TYPE(FbxPropertyInfo)), // The info - lEntry->Get(FBX_TYPE(FbxPropertyValue)), // The Value - 0, // The connections - false, - false - ); - } - */ - - // Empty the current entry - // Don't touch the connections - // ----------------------------------------- - ChangePropertyItemState(FBX_TYPE(FbxPropertyInfo), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyValue), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), i,FbxPropertyFlags::eInherit); - } - } - } - - inline const FbxPropertyPage* GetInstanceOf() const { return mInstanceOf; } - inline FbxPropertyPage* GetInstanceOf() { return mInstanceOf; } - - inline const FbxArray& GetInstances() const { return mInstances; } - inline FbxArray& GetInstances() { return mInstances; } - - - // Flags - // ------------------------------------------ - FbxPropertyFlags::EFlags GetFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - FbxPropertyFlags::EFlags lFlags = FbxPropertyFlags::eNone; - - if( lPropertyFlags ) - { - if( !mInstanceOf ) // no inheritance. - lFlags = lPropertyFlags->GetFlags(); - else - { - lFlags = mInstanceOf->GetFlags(pId); - lFlags = lPropertyFlags->GetMergedFlags(lFlags); - } - } - return lFlags; - } - - bool ModifyFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone,bool pValue=true,bool pCheckFlagEquality=true) - { - if( pCheckFlagEquality ) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lFlag = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( lFlag ) - { - if( lFoundIn == this ) - { - // set them in us. - lFlag->ModifyFlags( pFlags, pValue ); - - // we override this entry, check if we need to revert - FbxPropertyFlags* lInheritedFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lInheritedFlags && lInheritedFlags->Equal( *lFlag, pFlags ) ) - { - lFlag->UnsetMask( pFlags ); - - if( lFlag->GetMask() == 0 ) - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - } - else - { - // its not us. Just check if we need to set. - FbxPropertyFlags lNewValues( pFlags ); - if( lFlag->Equal( lNewValues, pFlags ) ) - return true; - } - } - } - - FbxPropertyFlags* lPropertyFlags = ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride); - return lPropertyFlags ? lPropertyFlags->ModifyFlags( pFlags, pValue ) : false; - } - - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( !pCheckInstanceOf ) - return lFoundIn != this ? FbxPropertyFlags::eInherit : ( lPropertyFlags ? lPropertyFlags->GetFlagsInheritType(pFlags) : FbxPropertyFlags::eInherit ); - else - { - // This code basically counts the number of overrides for the - // given flags. The original entry is always considered an override. - // so if we see more than one, something overrode the original. - // and thus we are an override. - FbxPropertyPage* lRefPage = lFoundIn; - bool lFoundOverride = false; - while( lRefPage ) - { - lPropertyFlags = lRefPage->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ); - - if( !lPropertyFlags ) - break; // gone too far, break. - - if( lPropertyFlags->GetFlagsInheritType( pFlags ) == FbxPropertyFlags::eOverride ) - { - if( this == lRefPage || lFoundOverride ) - return FbxPropertyFlags::eOverride; // found two overrides or this page is the override. - else - lFoundOverride = true; // signal that we found the first override. - } - lRefPage = lRefPage->mInstanceOf; - } - - return FbxPropertyFlags::eInherit; - } - } - - bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = NULL; - - if( FbxPropertyFlags::eOverride == pInheritType ) - { - lPropertyFlags = ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride ); - - // we should initialize our flag to the inherited value, if any. - FbxPropertyFlags* lParentFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lParentFlags && lPropertyFlags ) - { - FbxPropertyFlags::EFlags lParentValues = lParentFlags->GetFlags(); - lPropertyFlags->SetFlags( pFlags, lParentValues ); - return lPropertyFlags->SetMask( pFlags ); - } - - return false; - } - else if( FbxPropertyFlags::eInherit == pInheritType ) - { - lPropertyFlags = GetPropertyItem(FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn); - if( !lPropertyFlags ) return false; - if( lFoundIn != this ) return true; // not us - lPropertyFlags->UnsetMask( pFlags ); - if( lPropertyFlags->GetMask() == 0 ) // revert - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - return false; - } - - inline void BeginCreateOrFindProperty() - { - if( 0 == mNameMap.mFirst ) - { - mNameMap.mSecond.Reserve(20); - - // push the existing properties into the map. Note: this includes the root property! - FbxInt lFoundId = FBXSDK_PROPERTY_ID_ROOT; - FbxPropertyEntry* lEntry = GetPropertyEntry(lFoundId); - while(lFoundId != FBXSDK_PROPERTY_ID_NULL) - { - FbxPropertyInfo* lInfo = lEntry->Get(FBX_TYPE(FbxPropertyInfo)); - //FBX_ASSERT( lInfo ); - if (lInfo) - { - mNameMap.mSecond.Insert(FbxNameMapKey(lEntry->GetParentId(), lInfo->GetName()), lFoundId); - } - lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry); - } - mNameMap.mFirst++; - } - } - - inline void EndCreateOrFindProperty() - { - if( mNameMap.mFirst > 0 ) - { - if( --(mNameMap.mFirst) == 0 ) - mNameMap.mSecond.Clear(); - } - } - -protected: - FbxPropertyPage(FbxPropertyPage* pInstanceOf=0) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - // instances don't need to create a root property - if( !pInstanceOf ) - { - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,"",eFbxUndefined); - } - - // Hook the instances - // ------------------------ - mInstanceOf = pInstanceOf; - if (mInstanceOf) { - mInstanceOf->mInstances.Add(this); - - mPropNextId = mInstanceOf->mPropNextId; - mPropNextId->IncRef(); - } - } - FbxPropertyPage(const char* pName, EFbxType pType) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pType); - } - FbxPropertyPage(const char* pName, FbxPropertyPage* pTypeInfo) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pTypeInfo); - } - ~FbxPropertyPage() - { - // Propagate our property entries. - int i = 0, j = 0; - for( i = 0; i < mInstances.GetCount(); ++i ) - { - for( j = 0; j < GetPropertyEntryCount(); ++j ) - { - if( mInstances[i]->ChangePropertyEntryState((FbxInt)j, FbxPropertyFlags::eOverride) ) - { - // Clone the info and values. Don't clone the connections, - // since they aren't propagated. - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyInfo), (FbxInt)j, FbxPropertyFlags::eOverride ); - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), (FbxInt)j, FbxPropertyFlags::eOverride ); - - // Since all entries have their own flags, just override the ones in the instance. - mInstances[i]->SetFlagsInheritType(FbxPropertyFlags::eOverride, FbxPropertyFlags::eAllFlags, (FbxInt)j ); - } - } - - // Instances become their own copies. - mInstances[i]->mInstanceOf = NULL; - } - - FbxMapDestroy(mEntryMap); - - if (mInstanceOf) { - int lIndex = mInstanceOf->mInstances.Find(this); - mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]); - mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1); - - //mInstanceOf->mInstances.RemoveIt(this); - } - - mPropNextId->DecRef(); - mPropNextId = NULL; - - mInstanceOf = NULL; - mInstances.Clear(); - } - - inline bool Is(FbxPropertyPage* pPage) - { - // @@@@@@@@@@@@@@@ Must complete for sub types - return this==pPage; - } - -// Internal entry management -private: - - /** Retrieves the smallest property id of which are larger than a specified one. - * \param pId The specified property id - * \param pIncrementIfNone Whether it returns FBXSDK_PROPERTY_ID_NULL or pId+1, if not found. - * \return The property id described above. - */ - FbxInt GetMinimumPropertyId(FbxInt pId, bool pIncrementIfNone = true) const - { - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - FbxInt lMin = FBXSDK_PROPERTY_ID_NULL; - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lMin = lElement->GetKey(); - } - - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyId(pId,false) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lMin == FBXSDK_PROPERTY_ID_NULL; - - if( lParentNull && lMinNull ) return pIncrementIfNone ? pId+1 : FBXSDK_PROPERTY_ID_NULL; - else if( lMinNull ) lMin = lParentMin; - else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin; - - return lMin; - } - - /** Retrieves the smallest property id of which are larger than a specified one, and retrieve its entry. - * \param pId The specified property id - * \param pEntry The returned property entry - * \return The property id described above. - */ - FbxInt GetMinimumPropertyIdAndEntry(FbxInt pId, FbxPropertyEntry** pEntry) const - { - FbxInt lFoundId = FBXSDK_PROPERTY_ID_NULL; - FbxPropertyEntry* lFoundEntry = NULL; - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lFoundId = lElement->GetKey(); - lFoundEntry = lElement->GetValue(); - } - - FbxPropertyEntry* lParentEntry = NULL; - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyIdAndEntry(pId, &lParentEntry) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lFoundId == FBXSDK_PROPERTY_ID_NULL; - - if( lMinNull && !lParentNull ) - { - lFoundId = lParentMin; - lFoundEntry = lParentEntry; - } - else if( !lMinNull && !lParentNull ) - { - lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin; - lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry; - } - - if (pEntry) - *pEntry = lFoundEntry; - return lFoundId; - } - - int GetPropertyEntryCount() const - { - int lCount = 0; - const EntryMap::RecordType* lElement = mEntryMap.Maximum(); - - if (NULL != lElement) - { - lCount = lElement->GetKey() + 1; - } - - int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0; - return lParentCount > lCount ? lParentCount : lCount; - } - - FbxPropertyEntry* GetPropertyEntry(FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex); - if (NULL != lElement) - { - if( pFoundIn ) - { - *pFoundIn = const_cast(this); - } - return lElement->GetValue(); - } - - if( pFoundIn ) - { - *pFoundIn = 0; - } - - return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0; - } - - FbxPropertyEntry* ChangePropertyEntryState(FbxInt pIndex,FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - - if (pInheritType==FbxPropertyFlags::eOverride) { - if (lReferencePage==this) { - return lReferenceEntry; - } else if (lReferenceEntry) { - // must create an entry - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(lReferenceEntry->GetParentId(),0,0,0); - mEntryMap.Insert( pIndex, lEntry ); - - return lEntry; - } - } else { - if (lReferenceEntry && (lReferencePage==this)) { - mEntryMap.Remove(pIndex); - lReferenceEntry->Destroy(); - } - } - return 0; - } - - FbxInt Add(FbxInt pParentId,FbxPropertyInfo* pInfo,FbxPropertyValue* pValue,FbxPropertyConnect* pConnect,bool pRecursive=true) - { - FbxInt lId = mPropNextId->GetNextIdAndInc(); - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(pParentId,pInfo,pValue,pConnect); - - // entries created through Add() are not overrides of another entry. - // Thus, set all of their flags by default. - FbxPropertyFlags* lFlags = lEntry->Get( FBX_TYPE(FbxPropertyFlags) ); - if( lFlags ) lFlags->ModifyFlags( FbxPropertyFlags::eAllFlags, false ); - - mEntryMap.Insert( lId, lEntry ); - - // We only add to the map if this Add is called after BeginCreateOrFindProperty() - // in which case the size is always > 0 because it includes the root property - if( mNameMap.mSecond.GetSize() > 0 ) - mNameMap.mSecond.Insert( FbxNameMapKey( pParentId, pInfo->GetName()), lId ); - - // If the entry has multiple children(Struct Datatype) - // Recurse for the entries and create an entry in this structure - if (pRecursive) { - FbxPropertyPage* lTypeInfo = pInfo->GetTypeInfo(); - if (lTypeInfo) { - FbxInt lChildId; - lChildId = lTypeInfo->GetChild(); - while (lChildId!=FBXSDK_PROPERTY_ID_NULL) { - FbxPropertyInfo* lPropertyInfo = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyInfo),lChildId ); - FbxPropertyValue* lPropertyValue = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyValue),lChildId ); - FbxPropertyConnect* lPropertyConnect = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),lChildId ); - - Add ( lId, lPropertyInfo ? lPropertyInfo->Clone(this) : 0 , lPropertyValue ? lPropertyValue->Clone(this) : 0, - lPropertyConnect ? lPropertyConnect->Clone(this) : 0 ); - lChildId = lTypeInfo->GetSibling(lChildId ); - } - } - } - return lId; - } - - // Property management - typedef FbxMap, FbxHungryAllocator> EntryMap; - EntryMap mEntryMap; - - // instance management - FbxPropertyPage* mInstanceOf; - FbxArray mInstances; - - void* mDataPtr; - - // speed up structure - typedef FbxMap NameMap; - typedef FbxPair NameLookupPair; - NameLookupPair mNameMap; - - FbxPropertyIdGenerator* mPropNextId; - - friend class FbxPropertyHandle; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_PAGE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertytypes.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertytypes.h deleted file mode 100644 index 9aa2d7c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxpropertytypes.h +++ /dev/null @@ -1,1178 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertytypes.h -#ifndef _FBXSDK_CORE_PROPERTY_TYPES_H_ -#define _FBXSDK_CORE_PROPERTY_TYPES_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -//! Type identifier constants -enum EFbxType -{ - eFbxUndefined, //!< Unidentified. - eFbxChar, //!< 8 bit signed integer. - eFbxUChar, //!< 8 bit unsigned integer. - eFbxShort, //!< 16 bit signed integer. - eFbxUShort, //!< 16 bit unsigned integer. - eFbxUInt, //!< 32 bit unsigned integer. - eFbxLongLong, //!< 64 bit signed integer. - eFbxULongLong, //!< 64 bit unsigned integer. - eFbxHalfFloat, //!< 16 bit floating point. - eFbxBool, //!< Boolean. - eFbxInt, //!< 32 bit signed integer. - eFbxFloat, //!< Floating point value. - eFbxDouble, //!< Double width floating point value. - eFbxDouble2, //!< Vector of two double values. - eFbxDouble3, //!< Vector of three double values. - eFbxDouble4, //!< Vector of four double values. - eFbxDouble4x4, //!< Four vectors of four double values. - eFbxEnum = 17, //!< Enumeration. - eFbxEnumM =-17, //!< Enumeration allowing duplicated items. - eFbxString = 18, //!< String. - eFbxTime, //!< Time value. - eFbxReference, //!< Reference to object or property. - eFbxBlob, //!< Binary data block type. - eFbxDistance, //!< Distance. - eFbxDateTime, //!< Date and time. - eFbxTypeCount = 24 //!< Indicates the number of type identifiers constants. -}; - -/** Class to represent colors in RGBA format using doubles. - * \nosubgrouping - */ -class FBXSDK_DLL FbxColor -{ -public: - //! Constructor. - FbxColor(); - - /** Constructor. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - FbxColor(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - FbxColor(const FbxDouble3& pRGB, const double pAlpha=1.0); - FbxColor(const FbxDouble4& pRGBA); - - //! Destructor. - ~FbxColor(); - - /** Re-initialize the color object with their new values. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - void Set(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - - /** Indicate if all the members in the color objects are within their valid range. - * \return \c true if all the members are within their valid range. - */ - bool IsValid() const; - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - double& operator[](int pIndex); - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - const double& operator[](int pIndex) const; - - /** - * \name Operators - */ - //@{ - /** Assignment operator. - * \param pColor FbxColor to be copied. - */ - FbxColor& operator=(const FbxColor& pColor); - FbxColor& operator=(const FbxDouble3& pColor); - FbxColor& operator=(const FbxDouble4& pColor); - - /** Equality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if equal, \c false if unequal. - */ - bool operator==(const FbxColor& pColor) const; - - /** Inequality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if unequal, \c false if equal. - */ - bool operator!=(const FbxColor& pColor) const; - //@} - - /** - * name Public Members - */ - //@{ - //! Valid range is from 0.0 to 1.0. - double mRed; - - //! Valid range is from 0.0 to 1.0. - double mGreen; - - //! Valid range is from 0.0 to 1.0. - double mBlue; - - //! Valid range is from 0.0 to 1.0. - double mAlpha; - //@} -}; - -/** FBX SDK half-float class. - * Property used to store half-float (16 bit float) number. - * This class only holds the value in 2 byte buffer (unsigned short). There is - * no direct math manipulation of this type except for the conversion to/from - * float. On disk, this type is also saved as an unsigned short. - * \nosubgrouping - */ -class FBXSDK_DLL FbxHalfFloat -{ -public: - /** - *\name Constructors - */ - //@{ - FbxHalfFloat(); - FbxHalfFloat(float pVal); - FbxHalfFloat(const FbxHalfFloat& pVal); - //@} - - /** Assign operator - * \param pValue The half-float to be assigned to this instance. - * \return This half-float. - */ - FbxHalfFloat& operator=(const FbxHalfFloat& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The half-float to be compared with this one. - * \return \c True, if the two values are equal, \c false otherwise. - */ - bool operator==(const FbxHalfFloat& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The half-float to be compared with this one - * \return \c True, if the two values are unequal, \c false otherwise. - */ - bool operator!=(const FbxHalfFloat& pRHS) const; - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve the value as a float. - */ - float value() const; - - /** Retrieve the value as it is stored. - */ - unsigned short internal_value() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef unsigned short half; - half mValue; - - // we want to extract the mantissa, exponent and sign from the float number. - // by the IEEE 754 binary standard, the float number is divided as: - // sign : 1 bit - // mantissa : 23 bits - // exponent : 8 bits - // exponent bias : 127 - // and the half-float is: - // sing : 1 bit - // mantissa : 10 bits - // exponent : 5 bits - // exponent bias : - - half FtoHF(float *f); - float HFtoF(half h) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FBX SDK blob class. - * Uninitialized data of a specified size, to be filled by the user. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBlob -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. Set attributes to 0. - FbxBlob(); - - /** Constructor. Construct a buffer with uninitialized data of a specified size, to be filled by the user. - * \param pSize Buffer size. - */ - FbxBlob(int pSize); - - /** Copy constructor. - * \param pRHS The blob to be copied to this blob. - */ - FbxBlob(const FbxBlob& pRHS); - - /** Constructor. - * \param pData The data to be filled in the buffer. - * \param pSize Buffer size. - */ - FbxBlob(const void* pData, int pSize); - - //! Destructor - ~FbxBlob(); - //@} - - /** - * \name Assignment. - */ - //@{ - /** Share the buffer of the specified blob with this blob. - * \param pValue The blob whose buffer is shared with this blob. - * \return This blob. - */ - FbxBlob& operator=(const FbxBlob& pValue); - - /** Copy the data in the buffer. - * \param pData The buffer to be copied data from. - * \param pSize Buffer size. - */ - void Assign(const void* pData, int pSize); // Always makes a copy. - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are equal, \c false otherwise. - */ - bool operator==(const FbxBlob& pRHS) const; // Compare the contents. - - /** Inequality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are unequal, otherwise false. - */ - bool operator!=(const FbxBlob& pRHS) const; - //@} - - //!Make a copy if the reference count > 1 (i.e. if the buffer is shared). - void* Modify(); - - /** - * \name Access - */ - //@{ - - /** Retrieve the buffer pointer. - * \return The buffer pointer. - */ - const void * Access() const; - - /** Retrieve the buffer size - * \return The buffer size. - */ - int Size() const; - //@} - - //! Free the memory if this blob is the last one to hold it. - void Clear(); - -protected: - int* mRefCount; - void* mData; - int mSize; -}; - -/** FBX SDK date&time class. - * Property used to store date and time information; not related to a FbxTime, which is - * used for film-related operations. - * The date and time property does not make any provisions for UTC, GMT or local - * zones; this is entirely up to client code to know what they are dealing with. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDateTime -{ -public: - /** - *\name Constructors - */ - //@{ - //! Default constructor. Set attributes to 0. - FbxDateTime(); - - /** Constructor. - * \param pDay Day - * \param pMonth Month - * \param pYear Year - * \param pHour Hour - * \param pMin Minute - * \param pSec Second - * \param pMillisecond Millisecond - * \remark If one or more argument is invalid, the object is reset to 0. - */ - FbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond=0); - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equivalence operator. - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are equal, \c false otherwise. - */ - bool operator==(const FbxDateTime& pRHS) const; - - /** Non-equivalence operator - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are not equal, \c false otherwise. - */ - bool operator!=(const FbxDateTime& pRHS) const; - //@} - - //! Set the attributes to 0. - void Clear(); - - /** Validates each field is within a normal range (month is 1-12, etc). - * \return \c True, if each field is within a normal range, \c false otherwise. - */ - bool isValid() const; - - /** - * \name Access - */ - //@{ - /** Set the date. - * \param pDay Day to be set. - * \param pMonth Month to be set. - * \param pYear Year to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setDate(int pDay, int pMonth, int pYear); - - /** Set the time. - * \param pHour Hour to be set. - * \param pMin Minute to be set. - * \param pSec Second to be set. - * \param pMillisecond Millisecond to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0); - //@} - - /** - * \name Operation with string - */ - //@{ - /** Get the string format from this date&time. - * \return The string format got from this date&time. - */ - FbxString toString() const; - - /** Get date&time from the string format. - * \return \c True, if get date&time from the string format successfully, \c false otherwise. - * \remarks ! This will only work with the format returned by toString(); if the format - * is not the same will return 'false' and the content of this object will - * remain unchanged. - */ - bool fromString(const char*); - //@} - - /** Get date&time from current date&time of GMT. - * \return The date&time equal to current date&time of GMT. - */ - static FbxDateTime currentDateTimeGMT(); - -private: - FbxShort mMillisecond; // 0-999 - FbxShort mYear; // No check - - FbxChar mMonth; // 1-12 - FbxChar mDay; // 1-31; no check with regards to the month - FbxChar mHour; // 0-23 - FbxChar mMinute; // 0-59 - FbxChar mSecond; // 0-59 -}; - -/** FBX SDK distance class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDistance -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxDistance(); - - /** Constructor with default values. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - */ - FbxDistance(float pValue, FbxSystemUnit pUnit); - - /** Constructor. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - * \remarks This constructor will convert string to FbxSystemUnit. - */ - FbxDistance(float pValue, const char* pUnit); - - //! Destructor. - ~FbxDistance(); - //@} - - /** Assign operator - * \param pValue The distance to be assigned to this distance. - * \return This distance. - */ - FbxDistance& operator=(const FbxDistance& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are equal, \c false otherwise. - */ - bool operator==(const FbxDistance& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are unequal, \c false otherwise. - */ - bool operator!=(const FbxDistance& pRHS) const; - //@} - - const FbxString unitName() const; - - /** - * \name Access - */ - //@{ - /** Retrieve the measurement unit - * \return The measure unit of the distance. - */ - const FbxSystemUnit unit() const; - - /** Retrieve the distance value - * \return The value of the distance in the defined measurement unit. - */ - float value() const; - //@} - - /** Get the value of distance when converting this measurement unit to inch. - * \return The value of distance when converting this measurement unit to inch. - */ - float internalValue() const; - - /** Get the value of distance when converting this measurement unit to the specified measurement unit. - * \param pUnit The measurement unit to be converted to. - * \return The value of distance when using the specified measurement unit. - */ - float valueAs(const FbxSystemUnit& pUnit) const; - -private: - float mValue; - FbxSystemUnit mUnit; -}; - -/** Retrieve a type enumeration memory footprint size -* \param pType The type enumeration -* \return The size of this type in memory */ -FBXSDK_DLL size_t FbxTypeSizeOf(const EFbxType pType); - -/** Retrieve a type enumeration component count -* \param pType The type enumeration -* \return The number of component used by this type */ -FBXSDK_DLL size_t FbxTypeComponentCount(const EFbxType pType); - -// Type management for properties -inline EFbxType FbxTypeOf(const FbxChar&){ return eFbxChar; } -inline EFbxType FbxTypeOf(const FbxUChar&){ return eFbxUChar; } -inline EFbxType FbxTypeOf(const FbxShort&){ return eFbxShort; } -inline EFbxType FbxTypeOf(const FbxUShort&){ return eFbxUShort; } -inline EFbxType FbxTypeOf(const FbxUInt&){ return eFbxUInt; } -inline EFbxType FbxTypeOf(const FbxLongLong&){ return eFbxLongLong; } -inline EFbxType FbxTypeOf(const FbxULongLong&){ return eFbxULongLong; } -inline EFbxType FbxTypeOf(const FbxHalfFloat&){ return eFbxHalfFloat; } -inline EFbxType FbxTypeOf(const FbxBool&){ return eFbxBool; } -inline EFbxType FbxTypeOf(const FbxInt&){ return eFbxInt; } -inline EFbxType FbxTypeOf(const FbxFloat&){ return eFbxFloat; } -inline EFbxType FbxTypeOf(const FbxDouble&){ return eFbxDouble; } -inline EFbxType FbxTypeOf(const FbxDouble2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxDouble3&){ return eFbxDouble3; } -inline EFbxType FbxTypeOf(const FbxDouble4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDouble4x4&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxVector2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxVector4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxQuaternion&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxAMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxString&){ return eFbxString; } -inline EFbxType FbxTypeOf(const FbxTime&){ return eFbxTime; } -inline EFbxType FbxTypeOf(const FbxReference&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxBlob&){ return eFbxBlob; } -inline EFbxType FbxTypeOf(const FbxColor&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDistance&){ return eFbxDistance; } -inline EFbxType FbxTypeOf(const FbxDateTime&){ return eFbxDateTime; } - -template inline EFbxType FbxTypeOf(const T&){ FBX_ASSERT_NOW("Unknown type!"); return eFbxUndefined; } - -bool FBXSDK_DLL FbxTypeCopyStr(FbxDouble& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxBool& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxLongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxULongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxHalfFloat& pDst, const FbxString& pSrc); - -// Copy types and conversions -template inline bool FbxTypeCopy(T1&, const T2&){ FBX_ASSERT_NOW("Incompatible type assignment!" ); return false; } - -//! Same type conversion -inline bool FbxTypeCopy(FbxChar& pDst, const FbxChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxUChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxLongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxULongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxBool& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble2& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4x4& pDst, const FbxDouble4x4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxString& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxTime& pDst, const FbxTime& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxReference& pDst, const FbxReference& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBlob& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDistance& pDst, const FbxDistance& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxDateTime& pSrc){ pDst = pSrc; return true; } - -//To FbxBool -inline bool FbxTypeCopy(FbxBool& pDst, const FbxChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxLongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxULongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxHalfFloat& /*pSrc */){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxFloat& pSrc){ pDst = pSrc == 0.f ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxDouble& pSrc){ pDst = pSrc == 0. ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxChar -inline bool FbxTypeCopy(FbxChar& pDst, const FbxUChar& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxBool& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxInt& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxFloat& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxDouble& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUChar -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxChar& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxBool& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxInt& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxFloat& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxDouble& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxShort -inline bool FbxTypeCopy(FbxShort& pDst, const FbxChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxUChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxBool& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxInt& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxFloat& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxDouble& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUShort -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxShort& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxBool& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxInt& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxFloat& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxDouble& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxInt -inline bool FbxTypeCopy(FbxInt& pDst, const FbxChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUInt& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxULongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxBool& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxFloat& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxDouble& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUInt -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxULongLong& pSrc) { pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxBool& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxInt& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxFloat& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxDouble& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxLongLong -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxULongLong& pSrc) { pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxBool& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxULongLong -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxLongLong& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxBool& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxHalfFloat -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxLongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxULongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxBool& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxFloat& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDouble& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDistance& pSrc){ FbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxFloat -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc.value() ; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxBool& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDouble& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble2& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble3& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4x4& pSrc){ pDst = (FbxDouble)pSrc[0][0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxTime& pSrc){ pDst = (FbxDouble)pSrc.GetSecondDouble(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } - -//To FbxDouble2 -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } - -//To FbxDouble3 -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble4 -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxString -inline bool FbxTypeCopy(FbxString& pDst, const FbxChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxLongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxULongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxHalfFloat& pSrc){ pDst=FbxString((float)pSrc.value()); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBool& pSrc){ pDst=pSrc ? "true" : "false"; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxFloat& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble2& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble3& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2])+","+FbxString(pSrc[3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4x4& pSrc){ pDst=FbxString(pSrc[0][0])+","+FbxString(pSrc[0][1])+","+FbxString(pSrc[0][2])+","+FbxString(pSrc[0][3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxTime& pSrc){ char lTimeStr[128]; pSrc.GetTimeString(lTimeStr, FbxUShort(128)); pDst=lTimeStr; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxReference& /*pSrc*/){ pDst=""; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBlob& /*pSrc*/){ pDst=""; return true; } // Or convert to ASCII-85? -inline bool FbxTypeCopy(FbxString& pDst, const FbxDistance& pSrc){ pDst= FbxString(pSrc.value()) + " " +pSrc.unitName(); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDateTime& pSrc){ pDst= pSrc.toString(); return true; } - -//To FbxBlob -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxLongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxULongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxHalfFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBool& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble2& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble3& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4x4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxString& pSrc) -{ - bool lCastable = pSrc.GetLen() == pSrc.GetLen(); - FBX_ASSERT( lCastable ); - if( lCastable ) - pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen()); - return lCastable; -} -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxTime& pSrc){ FbxLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDistance -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDateTime -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxString& pSrc){ return pDst.fromString(pSrc); } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } - -template inline bool FbxTypeCopy(T& pDst, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -template inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const T& pSrc) -{ - switch( pDstType ) - { - case eFbxChar: return FbxTypeCopy(*(FbxChar*)pDst, pSrc); - case eFbxUChar: return FbxTypeCopy(*(FbxUChar*)pDst, pSrc); - case eFbxShort: return FbxTypeCopy(*(FbxShort*)pDst, pSrc); - case eFbxUShort: return FbxTypeCopy(*(FbxUShort*)pDst, pSrc); - case eFbxUInt: return FbxTypeCopy(*(FbxUInt*)pDst, pSrc); - case eFbxLongLong: return FbxTypeCopy(*(FbxLongLong*)pDst, pSrc); - case eFbxULongLong: return FbxTypeCopy(*(FbxULongLong*)pDst, pSrc); - case eFbxHalfFloat: return FbxTypeCopy(*(FbxHalfFloat*)pDst, pSrc); - case eFbxBool: return FbxTypeCopy(*(FbxBool*)pDst, pSrc); - case eFbxInt: return FbxTypeCopy(*(FbxInt*)pDst, pSrc); - case eFbxFloat: return FbxTypeCopy(*(FbxFloat*)pDst, pSrc); - case eFbxDouble: return FbxTypeCopy(*(FbxDouble*)pDst, pSrc); - case eFbxDouble2: return FbxTypeCopy(*(FbxDouble2*)pDst, pSrc); - case eFbxDouble3: return FbxTypeCopy(*(FbxDouble3*)pDst, pSrc); - case eFbxDouble4: return FbxTypeCopy(*(FbxDouble4*)pDst, pSrc); - case eFbxDouble4x4: return FbxTypeCopy(*(FbxDouble4x4*)pDst, pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(*(FbxEnum*)pDst, pSrc); - case eFbxString: return FbxTypeCopy(*(FbxString*)pDst, pSrc); - case eFbxTime: return FbxTypeCopy(*(FbxTime*)pDst, pSrc); - case eFbxBlob: return FbxTypeCopy(*(FbxBlob*)pDst, pSrc); - case eFbxDistance: return FbxTypeCopy(*(FbxDistance*)pDst, pSrc); - case eFbxDateTime: return FbxTypeCopy(*(FbxDateTime*)pDst, pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, pDstType, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, pDstType, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, pDstType, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, pDstType, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, pDstType, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, pDstType, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, pDstType, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, pDstType, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, pDstType, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, pDstType, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, pDstType, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, pDstType, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, pDstType, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, pDstType, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, pDstType, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, pDstType, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, pDstType, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, pDstType, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, pDstType, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, pDstType, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -/** Creates a fbx primitive type and initializes its memory. - * \param pType The type of object to create. - * \return A pointer to the new primitive object. Note that the caller owns the returned object. - * The pointer returned is NULL if pType is eFbxUndefined or an unknown type. - */ -FBXSDK_DLL void* FbxTypeAllocate(const EFbxType pType); - -/** Destroys an fbx primitive type. If the return value is true - * the memory pointed to by pData has been deleted and should - * no longer be accessed. - * \param pType The type of object being deleted - * \param pData Pointer to the object being deleted. - * \return true if the object was destroyed, false otherwise. - */ -FBXSDK_DLL bool FbxTypeDeallocate(const EFbxType pType, void* pData); - -/** Compare two values of the same type - * \param pA first value - * \param pB second value - * \param pType The data type of both values - * \return \c true if equal, \c false otherwise - */ -FBXSDK_DLL bool FbxTypeCompare(const void* pA, const void* pB, const EFbxType pType); - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_TYPES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxquery.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxquery.h deleted file mode 100644 index 8a5d971..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxquery.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquery.h -#ifndef _FBXSDK_CORE_QUERY_H_ -#define _FBXSDK_CORE_QUERY_H_ - -#include - -#include -#include -#include -#include - -#include - -#define FBXSDK_QUERY_UNIQUE_ID 0x14000000 - -class FbxProperty; - -/** Base class to manage query. A query contains a filter and reference ID, which will be used to search and retrieve objects. -* The derived query classes are used to create FbxCriteria. -* \nosubgrouping */ -class FBXSDK_DLL FbxQuery -{ -public: - //! Get unique filter Id - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID; } - - /** Judge if the given property is valid. - * \param pProperty The given property. - * \return \c true always, not implemented. */ - virtual bool IsValid(const FbxProperty& pProperty) const; - - /** This compares whether two FbxQuery are the same, NOT whether the query matches or not. It's strictly the equivalent of an operator==, but virtual. - * \param pOtherQuery The given FbxQuery */ - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - - //! Add one to ref count. - void Ref(); - - //! Minus one to ref count, if ref count is zero, delete this query object. - void Unref(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxQuery(); - virtual ~FbxQuery(); - -private: - class InternalFilter : public FbxConnectionPointFilter - { - public: - InternalFilter(FbxQuery* pQuery); - ~InternalFilter(); - - public: - FbxConnectionPointFilter* Ref(); - void Unref(); - FbxInt GetUniqueId() const { return mQuery->GetUniqueId(); } - bool IsValid(FbxConnectionPoint* pConnect) const; - bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; - - FbxQuery* mQuery; - }; - - InternalFilter mFilter; - int mRefCount; - - FBXSDK_FRIEND_NEW(); - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Defines a filtering criteria for a query of objects, connections and properties, so that only those satisfying the criteria are -* affected by the query. Some examples of kinds of criteria are object type, connection type, or property. Criteria can be combined -* using logical operators such as "and" and "or". -* \note -* Objects are basic elements in FBX. Each of them has a hierarchy type and some properties. Objects and properties can be connected -* through a connection to represent a relationship between them. (e.g. child-parent, container membership, reference, etc.,). In a -* query, you could select object or properties based on these criteria. -* Here are some examples: -* \code -* FbxObject* lObject = FbxObject::Create(lManager, "Object"); -* int lSrcLightCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(FbxLight::ClassId)); -* int lSrcDeformerCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectTypeStrict(FbxDeformer::ClassId)); -* int lSrcPropertyCount = lObject->RootProperty.GetSrcCount(FbxCriteria::IsProperty()); -* \endcode -* \see FbxQuery -* \see FbxProperty::GetSrcObjectCount(const FbxCriteria&) const -* \see FbxCollection::GetMemberCount(const FbxCriteria&) const -* \nosubgrouping */ -class FBXSDK_DLL FbxCriteria -{ -public: - /** Creates a new query criteria that only selects objects which have a specific - * class ID or derive from a class with a specific class ID. - * \param pClassId The base type class ID */ - static FbxCriteria ObjectType(const FbxClassId& pClassId); - - /** Creates a new query criteria that only selects objects which have a specific class ID. - * \param pClassId The type class ID */ - static FbxCriteria ObjectTypeStrict(const FbxClassId& pClassId); - - //! Creates a new query criteria that only selects properties. - static FbxCriteria IsProperty(); - - /** Gets a logical conjunction (and) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator&&(const FbxCriteria& pCriteria) const; - - /** Gets a logical disjunction (or) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator||(const FbxCriteria& pCriteria) const; - - //! Returns a negated version of the criteria. - FbxCriteria operator!() const; - - /** Retrieves the query. - * \return The query of this criteria */ - FbxQuery* GetQuery() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxCriteria(); - FbxCriteria(const FbxCriteria& pCriteria); - FbxCriteria(FbxQuery* pQuery); - ~FbxCriteria(); - - FbxCriteria& operator=(const FbxCriteria& pCriteria); - -private: - FbxQuery* mQuery; - - static void FreeGlobalCache(); - - FBXSDK_FRIEND_NEW(); - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxCriteria -struct FbxCriteriaCompare -{ - inline int operator()(const FbxCriteria& pKeyA, const FbxCriteria& pKeyB) const - { - const FbxQuery* lKeyA = pKeyA.GetQuery(); - const FbxQuery* lKeyB = pKeyB.GetQuery(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxQueryOperator : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - enum EType {eAND, eOR}; - - static FbxQueryOperator* Create(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID+1; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperator(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual ~FbxQueryOperator(); - -private: - FbxQuery *mA, *mB; - EType mOperator; -}; - -class FBXSDK_DLL FbxQueryOperatorUnary : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryOperatorUnary* Create(FbxQuery* pA); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+2; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperatorUnary(FbxQuery* pA); - virtual ~FbxQueryOperatorUnary(); - -private: - FbxQuery* mA; -}; - -class FBXSDK_DLL FbxQueryClassId : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryClassId* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+3; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryClassId(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsA : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsA* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+4; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsA(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsProperty : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsProperty* Create(); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+5; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsProperty(); -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_QUERY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxqueryevent.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxqueryevent.h deleted file mode 100644 index 2608ed5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxqueryevent.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxqueryevent.h -#ifndef _FBXSDK_CORE_QUERY_EVENT_H_ -#define _FBXSDK_CORE_QUERY_EVENT_H_ - -#include - -#include - -#include - -/** A query event is something that is emitted by an entity, with the goal of being filled by someone that listen to it. -* You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return -* it to you with the right information in it. A query event is emitted, and plug-in who are listening to that type of query, -* fill the data that can be accessed by the query emitter. -*/ -template class FbxQueryEvent : public FbxEvent > -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * \param pData The requested data. - */ - explicit FbxQueryEvent(QueryT* pData):mData(pData){} - - /** Accessor to a mutable reference to the data. Event are usually const and can't be modified by listener. - * This special type of event can have is content modified via this accessor. - * \return A mutable reference the requested data. - */ - QueryT& GetData()const { return *mData; } - //@} - -private: - mutable QueryT* mData; - -private: - virtual const char* GetEventName() const { FBX_ASSERT(false); return ""; } - static const char* FbxEventName() { FBX_ASSERT(false); return ""; } - friend class FbxEvent< FbxQueryEvent >; -}; - -#include - -#endif /* _FBXSDK_CORE_QUERY_EVENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h deleted file mode 100644 index 38ebfee..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingdirectory.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -class FbxPluginHandle; - -//! A plug-in loading strategy that loads all DLLs with a specific extension from a specific directory. When this class is destroyed all of the plug-ins are unloaded. -class FBXSDK_DLL FbxScopedLoadingDirectory : public FbxLoadingStrategy -{ -public: - /** Constructor, which also load plug-ins in the folder specified. - * \param pDirectoryPath The directory path. - * \param pPluginExtension The plug-in extension. */ - FbxScopedLoadingDirectory(const char* pDirectoryPath, const char* pPluginExtension); - - /** Destructor. Unload plug-ins. */ - virtual ~FbxScopedLoadingDirectory(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxString mDirectoryPath; - FbxString mExtension; - - FbxArray mPluginHandles; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h deleted file mode 100644 index 66529e8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingfilename.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * A plug-in loading strategy that loads a single DLL by specifying the file name in the constructor, and unloads the DLL in its destructor. - */ -class FBXSDK_DLL FbxScopedLoadingFileName : public FbxLoadingStrategy -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * Load plug-in. - * \param pPath The file path. - */ - explicit FbxScopedLoadingFileName(const char* pPath); - - /** Destructor. - * Unload plug-in. - */ - virtual ~FbxScopedLoadingFileName(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxModule mInstance; - FbxString mPath; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxstream.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxstream.h deleted file mode 100644 index ef349a4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxstream.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstream.h -#ifndef _FBXSDK_CORE_STREAM_H_ -#define _FBXSDK_CORE_STREAM_H_ - -#include - -#include - -#include - -/** Abstract class for implementing I/O operations through a stream of data. -* For instance, it can be used to read data from a memory source, thus making it possible to import files from memory. However, -* for the time being, the FbxStream class is only supported with FBX files. -*/ -class FBXSDK_DLL FbxStream -{ -public: - /** Current stream state. */ - enum EState - { - eClosed, //!< The stream is closed. - eOpen, //!< The stream is open. - eEmpty //!< The stream is empty. - }; - - /** Query the current state of the stream. */ - virtual EState GetState() = 0; - - /** Open the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Open(void* pStreamData) = 0; - - /** Close the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Close() = 0; - - /** Empties the internal data of the stream. - * \return True if successful. */ - virtual bool Flush() = 0; - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. */ - virtual int Write(const void* /*pData*/, int /*pSize*/) = 0; - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. */ - virtual int Read(void* /*pData*/, int /*pSize*/) const = 0; - - /** Read a string from the stream. - * The default implementation is written in terms of Read() but does not cope with DOS line endings. - * Subclasses may need to override this if DOS line endings are to be supported. - * \param pBuffer Pointer to the memory block where the read bytes are stored. - * \param pMaxSize Maximum number of bytes to be read from the stream. - * \param pStopAtFirstWhiteSpace Stop reading when any whitespace is encountered. Otherwise read to end of line (like fgets()). - * \return pBuffer, if successful, else NULL. - * \remark The default implementation terminates the \e pBuffer with a null character and assumes there is enough room for it. - * For example, a call with \e pMaxSize = 1 will fill \e pBuffer with the null character only. */ - virtual char* ReadString(char* pBuffer, int pMaxSize, bool pStopAtFirstWhiteSpace=false); - - /** If not specified by KFbxImporter::Initialize(), the importer will ask - * the stream to select an appropriate reader ID to associate with the stream. - * FbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetReaderID() const = 0; - - /** If not specified by KFbxExporter::Initialize(), the exporter will ask - * the stream to select an appropriate writer ID to associate with the stream. - * KFbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetWriterID() const = 0; - - /** Adjust the current stream position. - * \param pSeekPos Pre-defined position where offset is added (FbxFile::eBegin, FbxFile::eCurrent:, FbxFile::eEnd) - * \param pOffset Number of bytes to offset from pSeekPos. */ - virtual void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos)=0; - - /** Get the current stream position. - * \return Current number of bytes from the beginning of the stream. */ - virtual long GetPosition() const = 0; - - /** Set the current stream position. - * \param pPosition Number of bytes from the beginning of the stream to seek to. */ - virtual void SetPosition(long pPosition)=0; - - /** Return 0 if no errors occurred. Otherwise, return 1 to indicate - * an error. This method will be invoked whenever FBX needs to verify - * that the last operation succeeded. */ - virtual int GetError() const = 0; - - /** Clear current error condition by setting the current error value to 0. */ - virtual void ClearError() = 0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStream(){}; - virtual ~FbxStream(){}; - - int Write(const char* pData, int pSize){ return Write((void*)pData, pSize); } - int Write(const int* pData, int pSize){ return Write((void*)pData, pSize); } - int Read(char* pData, int pSize) const { return Read((void*)pData, pSize); } - int Read(int* pData, int pSize) const { return Read((void*)pData, pSize); } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_STREAM_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxsymbol.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxsymbol.h deleted file mode 100644 index 260fe40..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxsymbol.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsymbol.h -#ifndef _FBXSDK_CORE_SYMBOL_H_ -#define _FBXSDK_CORE_SYMBOL_H_ - -#include - -#include -#include - -#include - -/** Defines a symbol string. A symbol string is a string that is unique and stored in a global symbol table. -* \nosubgrouping */ -class FBXSDK_DLL FbxSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - * \param pRealm The real value for this symbol. - */ - FbxSymbol(const char* pName, const char* pRealm); - - //! Destructor. - ~FbxSymbol(); - //@} - - /** - * \name Access function. - */ - //@{ - /** - * Get ID in global symbol table. - * \return Symbol ID in global symbol table. - */ - unsigned int GetID() const; - //@} - - /** - * \name Symbol comparison - */ - //@{ - /** Equality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator==(FbxSymbol const& pSymbol) const; - - /** Inequality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator!=(FbxSymbol const& pSymbol) const; - //@} - -private: - unsigned int mID; -}; - -typedef FbxMap< FbxString, int, FbxStringCompare > FbxStringSymbolMap; - - -/** This class is to mark a string as symbol. - * String Symbol only has its name. - * /remarks Each symbol is unique. That means there are no symbols which have the same name. -* \nosubgrouping */ -class FBXSDK_DLL FbxStringSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - //! Default constructor. - FbxStringSymbol(); - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - */ - FbxStringSymbol(const char* pName); - - //! Copy constructor. - FbxStringSymbol(const FbxStringSymbol& pOther); - - //! Destructor. - ~FbxStringSymbol(); - //@} - - //! Cast operator to const char* type. - inline operator const char*() const { return mItem ? ((const char*) mItem->GetKey()) : NULL; } - - - /** Determine the symbol empty or not. - * \return \c true if empty. \c false otherwise. - */ - inline bool IsEmpty() const - { - return !mItem || mItem->GetKey().IsEmpty(); - } - - //! Static function to allocate global string symbol map. - static void AllocateGlobalStringSymbolMap(); - - //! Static function to deallocate global string symbol map. - static void FreeGlobalStringSymbolMap(); - - /** Assignment operator. - * \param pName The symbol value. - * \return The self after assignment. - */ - FbxStringSymbol& operator=(const char* pName); - -private: - FbxStringSymbolMap::RecordType* mItem; -}; - -#include - -#endif /* _FBXSDK_CORE_SYMBOL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxsystemunit.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxsystemunit.h deleted file mode 100644 index 92fa5e5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxsystemunit.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsystemunit.h -#ifndef _FBXSDK_CORE_SYSTEM_UNIT_H_ -#define _FBXSDK_CORE_SYSTEM_UNIT_H_ - -#include - -#include -#include - -#include - -class FbxAMatrix; -class FbxScene; -class FbxNode; -class FbxAnimCurveNode; - -/** \brief This class describes the units of measurement used within a particular scene. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSystemUnit -{ -public: - - /** Struct to define various options that you can use to convert the system unit of a scene. - * The default values are: - * mConvertRrsNodes = true - * mConvertLimits = true - * mConvertClusters = true - * mConvertLightIntensity = true - * mConvertPhotometricLProperties = true - * mConvertCameraClipPlanes = true - * - * The default configuration have been tested to give the best conversion results in the majority of the case. - * \remark Changing any of these values will have a direct impact on the whole scene behavior. - */ - struct ConversionOptions - { - //! This flag indicates whether or not to convert the nodes that do not inherit their parent's scale. - bool mConvertRrsNodes; - - //! This flag indicates whether or not to convert limits. - bool mConvertLimits; - - //! This flag indicates whether or not to convert clusters. - bool mConvertClusters; - - //! This flag indicates whether or not to convert the light intensity property. - bool mConvertLightIntensity; - - //! This flag indicates whether or not to convert photometric lights properties. - bool mConvertPhotometricLProperties; - - //! This flag indicates whether or not to convert the cameras clip planes. - bool mConvertCameraClipPlanes; - }; - - FbxSystemUnit(); - - /** Constructor. - * \param pScaleFactor The equivalent number of centimeters in the new system unit. - * For example, an inch unit uses a scale factor of 2.54. - * \param pMultiplier A multiplier factor of pScaleFactor. - */ - FbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0); - - /** Destructor. - */ - ~FbxSystemUnit(); - - //! Predefined system unit for millimeters. - static const FbxSystemUnit mm; - - //! Predefined system unit for decimeters. - static const FbxSystemUnit dm; - - //! Predefined system unit for centimeters. - static const FbxSystemUnit cm; - - //! Predefined system unit for meters. - static const FbxSystemUnit m; - - //! Predefined system unit for kilometers. - static const FbxSystemUnit km; - - //! Predefined system unit for inches. - static const FbxSystemUnit Inch; - - //! Predefined system unit for feet. - static const FbxSystemUnit Foot; - - //! Predefined system unit for miles. - static const FbxSystemUnit Mile; - - //! Predefined system unit for yards. - static const FbxSystemUnit Yard; - - #define FBXSDK_SYSTEM_UNIT_PREDEF_COUNT 9 - - //! Points to a FbxSystemUnit array to store the predefined system units. The array size is FBXSDK_SYSTEM_UNIT_PREDEF_COUNT. - static const FbxSystemUnit *sPredefinedUnits; - - //! Stores the default conversion options. - static const ConversionOptions DefaultConversionOptions; - - /** Converts a scene from its system units to this system unit. - * \param pScene The scene to convert. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertScene( FbxScene* pScene, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts the child (or children) of the given node from the system unit to this system unit. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene to which the pRoot node belongs. It also does not adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The given node. - * \param pSrcUnit The source system unit. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertChildren( FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts a scene from its system unit to this system unit, using the specified - * Fbx_Root node. This method is provided for backwards compatibility only - * and instead you should use ConvertScene( FbxScene* , const ConversionOptions& ) whenever possible. - * \param pScene The scene to convert. - * \param pFbxRoot The Fbx_Root node to use for conversion. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions - */ - void ConvertScene( FbxScene* pScene, FbxNode* pFbxRoot, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Returns the system unit's scale factor, relative to centimeters. - * This factor scales system unit values to centimeters. If you want to scale values to centimeters, use this value. - * Ignore the "multiplier" (returned by GetMultiplier()) value. - * \return The the system unit's scale factor, relative to centimeters. - */ - double GetScaleFactor() const; - - /** Returns a unit label for the current scale factor. - * \param pAbbreviated If \c true, returns abbreviated string. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString(bool pAbbreviated = true) const; - - /** Returns a unit label for the current scale factor. - * The first letter of the label is in upper case and the label should be pluralized. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString_Plurial() const; - - /** Returns the multiplier factor of the system unit. - */ - double GetMultiplier() const; - - /** Equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxSystemUnit& pOther) const; - - /** Non-equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxSystemUnit& pOther) const; - - /** Assignment operation. - * \param pSystemUnit Unit system assigned to this one. - */ - FbxSystemUnit& operator=(const FbxSystemUnit& pSystemUnit); - - /** Returns the conversion factor from this system unit to the target system unit, excluding the multiplier factor. - * \param pTarget The target system unit. - */ - double GetConversionFactorTo( const FbxSystemUnit& pTarget ) const; - - /** Returns the conversion factor from the source system unit to this system unit, excluding the multiplier factor. - * \param pSource The source system unit. - */ - double GetConversionFactorFrom( const FbxSystemUnit& pSource ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ApplyMultiplier(FbxNode* pRoot, bool pSubChildrenOnly) const; - void ConvertSTProperties(FbxArray& pNodes, double pConversionFactor) const; - void ConvertSProperty(FbxArray& pNodes, double pConversionFactor) const; - void ConvertAnimCurveNode(FbxArray& pFCurves, double pConversionFactor) const; - double GetConversionFactor(double pTargetScaleFactor, double pSourceScaleFactor) const; - void AdjustPivots(FbxNode* pNode, double pConversionFactor, FbxAMatrix& pOriginalGlobalM ) const; - void AdjustLimits(FbxNode* pNode, double pConversionFactor) const; - void AdjustPoses(FbxScene* pScene, double pConversionFactor) const; - void AdjustCluster(FbxNode* pNode, double pConversionFactor) const; - void AdjustLightIntensity(FbxNode* pNode, const double pConversionFactor) const; - void AdjustPhotometricLightProperties(FbxNode* pNode, const double pConversionFactor) const; - void AdjustCameraClipPlanes(FbxNode* pNode, const double pConversionFactor) const; - void ConvertChildren(FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const ConversionOptions& pOptions) const; - - double mScaleFactor; - double mMultiplier; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_SYSTEM_UNIT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/fbxxref.h b/sdk/Linux/2019.2/include/fbxsdk/core/fbxxref.h deleted file mode 100644 index cee8a59..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/fbxxref.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxxref.h -#ifndef _FBXSDK_CORE_XREF_H_ -#define _FBXSDK_CORE_XREF_H_ - -#include - -#include -#include - -#include - -class FbxProperty; -class FbxDocument; -class FbxXRefManagerProject; - -/** This class manages external references to files. - * \nosubgrouping - */ -class FBXSDK_DLL FbxXRefManager -{ -public: - //! Default constructor. - FbxXRefManager(); - - //! Destructor. - virtual ~FbxXRefManager(); - - /** - * \name Predefined Project Types - */ - //@{ - - //! This project represents an URL for storing temporary files. - static const char* sTemporaryFileProject; - - //! This project represents an URL for configuration files. - static const char* sConfigurationProject; - - //! This project represents an URL for storing localization files (that is not part of the asset library). - static const char* sLocalizationProject; - - /** This project is used for creating the ".fbm" folders that are used for - * storing embedded resources in FBX files. - * - * When not set, or if the folder is not writable, the ".fbm" - * folder is created alongside the FBX file. - * - * If we cannot write in that folder, we look at the sTemporaryFileProject location. - * If no folder is set in the sTemporaryFileProject location, or it is not - * writable, the operating system's Temp folder becomes the location. - */ - static const char* sEmbeddedFileProject; - //@} - - /** - * \name XRef URL properties - */ - //@{ - /** Returns the number of URLs that are stored in a property. - * \param pProperty The property. - * \return The URL count. - */ - static int GetUrlCount(FbxProperty const &pProperty); - - /** Returns the number of URLs that are stored in a string. - * \param pUrl The string. - * \return The URL count. - */ - - static int GetUrlCount(FbxString const& pUrl); - - /** Checks whether the URL at the given index stored in the property is relative or not. - * \param pProperty The property. - * \param pIndex The URL index. - * \return \c True if the URL is relative, \c false if the URL is not relative. - */ - static bool IsRelativeUrl (FbxProperty const &pProperty,int pIndex); - - /** Returns the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \return The URL - */ - static FbxString GetUrl(FbxProperty const &pProperty,int pIndex); - - /** Tries to resolve the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (FbxProperty const &pProperty,int pIndex,FbxString & pResolvedPath) const; - - /** Tries to resolve the specified URL. - * \param pUrl The specified URL. - * \param pDoc The document whose ".fbm" folder is used to resolve the URL. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl, FbxDocument* pDoc, FbxString& pResolvedPath) const; - //@} - - /** Looks for the first file that matches a specified "pattern", - * which is built as: - * - * if pOptExt is given: prefix*.ext - * If pOptExt is NULL: prefix* - * if pOptExt is "" or ".": prefix*. - * - * Returns the URL of the first matching files. This function cannot be - * used to resolve folders, only files. - * - * If a document is given, we start by looking at the document's ".fbm" folder. - * \param pPrefix The prefix of the pattern. - * \param pOptExt The extension of the pattern. - * \param pDoc The given document. - * \param pResolvedPath Filled with the first matching URL. - * \return \c True if one matching file is found, returns \c false if no matching file is found. - */ - bool GetFirstMatchingUrl(const char* pPrefix, const char* pOptExt, const FbxDocument* pDoc, FbxString& pResolvedPath) const; - - /** - * \name XRef Resolve URL and Projects - */ - //@{ - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pUrl); - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pExtension The extension of the project. - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, returns \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pExtension,const char *pUrl); - - /** Adds an XRef project based on the document's EmbeddedUrl - * property if set, if EmbeddedUrl is not set, based on its current URL property. - * \param pDoc The document used to name the project and to specify the URL. - * \return \c True if the project is added successfully, returns \c false if no project is added. - * \remarks The project name is set as the document name and the URL is set as EmbeddedUrl or URL of the document. - */ - bool AddXRefProject (FbxDocument* pDoc); - - /** Removes an XRef Projects. - * \param pName The name of the project to be removed. - * \return \c True if the project is removed successfully, returns \c false if the project with the name does not exist. - */ - bool RemoveXRefProject(const char *pName); - - /** Removes all XRef Projects. - * \return \c True always. - */ - bool RemoveAllXRefProjects(); - - /** Returns the number of XRef Projects. - * \return The number of XRef Projects. - */ - int GetXRefProjectCount() const; - - /** Returns the name of the XRef project at the specified index. - * \param pIndex The XRef project index. - * \return The XRef project name. - */ - const char *GetXRefProjectName(int pIndex) const; - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName); // FIXME: Should be const, will break AV. - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName) const; - - /** Returns the base URL for the given project. - * \param pIndex The index of the project. - * \return The base URL of the project or NULL if the index is out of bounds. - */ - const char* GetXRefProjectUrl(int pIndex) const; - - /** Checks if a project with the given name is defined in this manager. - * \param pName The name of the project. - * \return \c True if the project is defined in this manager, returns \c false if it isn't defined in this manager. - */ - inline bool HasXRefProject( const char* pName ) { return GetXRefProjectUrl(pName) != NULL; } - - /** Tries to resolve an relative URL - * \param pUrl The relative URL to be resolved. - * \param pResolvePath Filled with the resolved path. - * \return \c True if the URL is resolved, returns \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl,FbxString & pResolvePath) const; - - //@} -private: - FbxArray mProjects; - - static bool UrlExist(const char* pUrl); -}; - -#include - -#endif /* _FBXSDK_CORE_XREF_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h deleted file mode 100644 index 288d379..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h +++ /dev/null @@ -1,340 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaffinematrix.h -#ifndef _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ -#define _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ - -#include - -#include - -#include - -/** FBX SDK affine matrix class. - * \nosubgrouping - * Matrices are defined using the Column Major scheme. When a FbxAMatrix represents a transformation (translation, rotation and scale), - * the last row of the matrix represents the translation part of the transformation. - * - * \remarks It is important to realize that an affine matrix must respect a certain structure. To be sure the structure is respected, - * use SetT, SetR, SetS, SetQ, SetTRS or SetTQS. If by mistake bad data is entered in this affine matrix, some functions such as - * Inverse() will yield wrong results. If a matrix is needed to hold values that aren't associate with an affine matrix, please use FbxMatrix instead. - */ -class FBXSDK_DLL FbxAMatrix : public FbxDouble4x4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxAMatrix(); - - /** Copy constructor. - * \param pOther FbxAMatrix copied to this one. - */ - FbxAMatrix(const FbxAMatrix& pOther); - - /** Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. - */ - FbxAMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - //! Destructor. - ~FbxAMatrix(); - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Cell [ pX, pY ] value. - */ - double Get(int pY, int pX) const; - - /** Extract translation vector. - * \return Translation vector. - */ - FbxVector4 GetT() const; - - /** Extract rotation vector. - * \return Rotation vector. - * \remarks The returned rotation vector is in Euler angle and the rotation order is XYZ. - */ - FbxVector4 GetR() const; - - /** Extract quaternion vector. - * \return Quaternion vector. - */ - FbxQuaternion GetQ() const; - - /** Extract scale vector. - * \return Scale vector. - */ - FbxVector4 GetS() const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. - */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. - */ - FbxVector4 GetColumn(int pX) const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set matrix's translation. - * \param pT Translation vector. - */ - void SetT(const FbxVector4& pT); - - /** Set matrix's Euler rotation. - * \param pR X, Y and Z rotation values expressed as a vector. - * \remarks The rotation transform is constructed in rotation order XYZ. - */ - void SetR(const FbxVector4& pR); - - /** Set matrix's quaternion. - * \param pQ The new quaternion. - */ - void SetQ(const FbxQuaternion& pQ); - - /** Set matrix's scale. - * \param pS X, Y and Z scaling factors expressed as a vector. - */ - void SetS(const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Rotation vector. - * \param pS Scale vector. - */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion vector. - * \param pS Scale vector. - */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Assignment operator. - * \param pM FbxAMatrix assigned to this one. - */ - FbxAMatrix& operator=(const FbxAMatrix& pM); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return The scaled matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator*(double pValue) const; - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return The divided matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator/(double pValue) const; - - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the multiplication. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator*=(double pValue); - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the division. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Multiply matrix by a translation vector. - * \param pVector4 Translation vector. - * \return t' = M * t - */ - FbxVector4 MultT(const FbxVector4& pVector4) const; - - /** Multiply matrix by an Euler rotation vector. - * \param pVector4 Euler Rotation vector. - * \return r' = M * r - */ - FbxVector4 MultR(const FbxVector4& pVector4) const; - - /** Multiply matrix by a quaternion. - * \param pQuaternion Rotation value. - * \return q' = M * q - */ - FbxQuaternion MultQ(const FbxQuaternion& pQuaternion) const; - - /** Multiply matrix by a scale vector. - * \param pVector4 Scaling vector. - * \return s' = M * s - */ - FbxVector4 MultS(const FbxVector4& pVector4) const; - //@} - - /** - * \name Matrix Operations - */ - //@{ - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. - */ - FbxAMatrix operator-() const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return this * pMatrix. - * \remarks Transformations are pre-multiplied. - * That means to scale, then rotate, and then translate a vector V, the transform should be T * R * S * V. \n - * Below is an example of code that shows how to construct rotation transform in XYZ rotation order. - * \code - * FbxAMatrix lRotateXM, lRotateYM, lRotateZM, lRotateXYZM, lRotateM; - * // Construct rotation matrix around X, Y and Z axises separately and then combine them. - * FbxVector4 lRotateX(10, 0, 0); - * FbxVector4 lRotateY(0, 10, 0); - * FbxVector4 lRotateZ(0, 0, 10); - * lRotateXM.SetR(lRotateX); - * lRotateYM.SetR(lRotateY); - * lRotateZM.SetR(lRotateZ); - * lRotateXYZM = lRotateZM * lRotateYM * lRotateXM; - * - * // Alternatively, we can use SetR() directly. - * // lRotateXYZM and lRotateM will be the same. - * FbxVector4 lRotateXYZ (10, 10, 10); - * lRotateM.SetR(lRotateXYZ); - * \endcode - * \note Please refer to the FBX SDK programmers guide for more details. - */ - FbxAMatrix operator*(const FbxAMatrix& pOther) const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return \e this updated with the result of the multiplication. - */ - FbxAMatrix& operator*=(const FbxAMatrix& pOther); - - /** Calculate the matrix inverse. - * \return The inverse matrix of \e this. - */ - FbxAMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return The transposed matrix of \e this. - */ - FbxAMatrix Transpose() const; - - /** Calculate a spherical linear interpolation matrix. - * \param pOther The other rotation matrix to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. - * \remark This matrix and other matrix should contain only rotations, otherwise result may be undefined. */ - FbxAMatrix Slerp(const FbxAMatrix& pOther, double pWeight) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxAMatrix& pOther) const; - - /** Non-equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxAMatrix& pOther) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the matrix in a double pointer. - operator double* (); - //! Cast the matrix in a const double pointer. - operator const double* () const; - //! Define 4*4 array as a new type - typedef const double(kDouble44)[4][4] ; - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - /** Find out if the matrix is equal to identity matrix. - * \return \c true if the matrix is equal to identity matrix, \c false otherwise. */ - bool IsIdentity(const double pThreshold=FBXSDK_TOLERANCE); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS); - void SetRow(int pY, const FbxVector4& pRow); - void SetTOnly(const FbxVector4& pT); - void SetROnly(const FbxVector4& pR); - void SetQOnly(const FbxQuaternion& pQ); - FbxVector4 GetROnly() const; - FbxQuaternion GetUnnormalizedQ() const; - - // pOrd is assumed to be an FbxEuler::EOrder (or its synonym EFbxRotationOrder) - void SetR(const FbxVector4& pV, const int pOrd); - FbxVector4 GetR(const int pOrd) const; - - void MultRM(const FbxVector4& pR); - void MultSM(const FbxVector4& pS); - bool IsRightHand() const; - double Determinant() const; - int Compare(const FbxAMatrix pM, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h deleted file mode 100644 index 234866a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h +++ /dev/null @@ -1,325 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdualquaternion.h -#ifndef _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK dual quaternion class to represent rigid transformation, which is combined by two quaternions. - * A transformation is said to be rigid if it preserves relative distances and angles. - * That means rotation and translation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDualQuaternion -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxDualQuaternion(); - - /** Constructor. - * \param pV1 FbxQuaternion object. - * \param pV2 FbxQuaternion object. - */ - FbxDualQuaternion(const FbxQuaternion& pV1, const FbxQuaternion& pV2); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxDualQuaternion(const FbxDualQuaternion& pV); - - /** Constructor. - * \param pRotation The rotation the dual quaternion is going to represent. - * \param pTranslation The translation the dual quaternion is going to represent. - */ - FbxDualQuaternion(const FbxQuaternion& pRotation, const FbxVector4& pTranslation); - - /** Constructor. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - FbxDualQuaternion(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - //! Destructor. - ~FbxDualQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pDualQuaternion FbxDualQuaternion object assigned to this one. - */ - FbxDualQuaternion& operator=(const FbxDualQuaternion& pDualQuaternion); - - /** Set vector. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - void Set(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - FbxQuaternion& GetFirstQuaternion(); - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - FbxQuaternion& GetSecondQuaternion(); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - const FbxQuaternion& GetFirstQuaternion() const; - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - const FbxQuaternion& GetSecondQuaternion() const; - - /** Get the rotation part from the dual quaternion. - * \return FbxQuaternion object to represent rotation. - */ - FbxQuaternion GetRotation() const; - - /** Get the translation part from the dual quaternion. - * \return FbxVector4 object to represent translation. - * \remarks A dual quaternion can represent rotation followed by translation, or translation followed by rotation. - * This method assumes that the rotation is expressed first, followed by translation, as is done by most DCC tools. - */ - FbxVector4 GetTranslation() const; - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A dual quaternion where each component is multiplied by -1. - */ - FbxDualQuaternion operator-() const; - - /** Add two vectors together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator+(const FbxDualQuaternion& pDualQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator-(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise multiplication of two vectors. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise division of a dual quaternion with another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator/(const FbxDualQuaternion& pDualQuaternion) const; - - /** Add two quaternions together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator+=(const FbxDualQuaternion& pDualQuaternion); - - /** Subtract a dual quaternion from another vector. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator-=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise multiplication of two quaternions. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator*=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise division of a dual quaternion by another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator/=(const FbxDualQuaternion& pDualQuaternion); - - /** Multiplication of a dual quaternion by a FbxVector4. - * \param pVector The FbxVector4 to multiply with. - * \return The dual quaternion v' = FbxDualQuaternion(mQ1, (mQ1 * pVector) + mQ2). - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxVector4 pVector) const; - - /** Return dual quaternion product. - * \param pDualQuaternion Product dual quaternion. - * \return The dual quaternion that is the product of this and pDualQuaternion. - */ - FbxDualQuaternion Product(const FbxDualQuaternion& pDualQuaternion) const; - - /** Normalize the dual quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the dual quaternion's inverse. - * \return The inverse of this dual quaternion. - */ - void Inverse(); - - /** Deform a point by this dual quaternion. - * \return The inverse of this quaternion. - */ - FbxVector4 Deform(FbxVector4& pPoint); - //@} - - /** - * \name Conjugate Operations - * \brief Dual quaternion has three types of conjugate. - */ - //@{ - /** Conjugate both quaternions of this dual quaternion. - */ - void Conjugate(); - - /** Conjugate in dual space. - */ - void Dual(); - - /** Conjugate both quaternions of this dual quaternion in dual space. - */ - void DualConjugate(); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxDualQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxDualQuaternion & pV) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxQuaternion mQ1; - FbxQuaternion mQ2; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmath.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmath.h deleted file mode 100644 index d55e741..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmath.h +++ /dev/null @@ -1,512 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmath.h -#ifndef _FBXSDK_CORE_MATH_H_ -#define _FBXSDK_CORE_MATH_H_ - -#include - -#include -#include -#include -#include - -//On Mac OS, cmath will include math.h and undef "isnan" -#if defined(FBXSDK_ENV_MAC) - #include - extern "C" int isnan (double); -#endif - -#include - -#if defined(FBXSDK_ENV_WIN) - #ifndef isnan - #define isnan _isnan - #endif - #ifndef finite - #define finite _finite - #endif -#endif - -//--------------------------------------------------------------------------------------- -//Common Constants -#define FBXSDK_PI 3.1415926535897932384626433832795028841971693993751 //!< PI mathematic constant -#define FBXSDK_PI_DIV_2 1.5707963267948966192313216916397514420985846996875 //!< PI divided by 2 -#define FBXSDK_PI_DIV_180 0.017453292519943295769236907684886127134428718885417 //!< PI divived by 180 -#define FBXSDK_180_DIV_PI 57.295779513082320876798154814105170332405472466565 //!< 180 divided by PI -#define FBXSDK_1_DIV_LN2 1.4426950408889634073599246810018921374266459541530 //!< 1 divided by LogN2 - -//--------------------------------------------------------------------------------------- -//Unit Convertion Ratio -#define FBXSDK_DEG_TO_RAD FBXSDK_PI_DIV_180 //!< Degree to Radian -#define FBXSDK_RAD_TO_DEG FBXSDK_180_DIV_PI //!< Radian to Degree -#define FBXSDK_IN_TO_CM 2.54 //!< Inch to Centimeter -#define FBXSDK_MM_TO_CM 0.1 //!< Millimeter to Centimeter -#define FBXSDK_CM_TO_IN 0.393700787 //!< Centimeter to Inch -#define FBXSDK_IN_TO_MM 25.4 //!< Inch to Millimeter -#define FBXSDK_MM_TO_IN 0.0393700787 //!< Millimeter to Inch -#define FBXSDK_FT_TO_M 0.3048 //!< Feet to Meter -#define FBXSDK_M_TO_FT 3.2808399 //!< Meter to Feet -#define FBXSDK_YD_TO_FT 3 //!< Yard to Feet -#define FBXSDK_FT_TO_YD 0.333333333 //!< Feet to Yard -#define FBXSDK_KM_TO_MILE 0.621371192 //!< Kilometer to Mile -#define FBXSDK_MILE_TO_KM 1.609344 //!< Mile to Kilometer -#define FBXSDK_YD_TO_M 0.9144 //!< Yard to Meter -#define FBXSDK_M_TO_YD 1.0936133 //!< Meter to Yard - -//--------------------------------------------------------------------------------------- -//Euler Definition -#define FBXSDK_EULER_DEGENERATE FbxEuler::DegenerateThreshold() //!< Euler degenerate threshold can be changed with a call to FbxEuler::SetDegenerateThreshold. - -class FBXSDK_DLL FbxEuler -{ -public: - enum EAxis {eAxisX=0, eAxisY=1, eAxisZ=2}; - - enum EOrder - { - eOrderXYZ, - eOrderXZY, - eOrderYZX, - eOrderYXZ, - eOrderZXY, - eOrderZYX, - eOrderSphericXYZ - }; - - static bool IsParityOdd(EOrder pOrder); - static bool IsRepeat(EOrder pOrder); - - static const int AxisTableSize; - static const int AxisTable[][3]; - - // Used to detect Euler gimbal locks when extracting the rotation vector from - // the FbxAMatrix. This value should only be changed when the user system stores - // single floating point values into the FbxAMatrix with a very low precision. - // In this case, the default threshold value would be too small for a proper detection - // and the extracted values can quickly become off target by a huge amount. - static void SetDegenerateThreshold(double pThreshold=16.0*FBXSDK_FLOAT_EPSILON); - static inline double DegenerateThreshold() { return FbxEuler::mDegenerateThreshold; } - -private: - static double mDegenerateThreshold; -}; - -/** Rotation order flags. - * Each rotate order produces a different end orientation. For example, if the rotation order for an object is set to XYZ, - * the object first rotates about its X-axis, then its Y-axis, and finally its Z-axis. - */ - -#define EFbxRotationOrder FbxEuler::EOrder -#define eEulerXYZ FbxEuler::eOrderXYZ -#define eEulerXZY FbxEuler::eOrderXZY -#define eEulerYZX FbxEuler::eOrderYZX -#define eEulerYXZ FbxEuler::eOrderYXZ -#define eEulerZXY FbxEuler::eOrderZXY -#define eEulerZYX FbxEuler::eOrderZYX -#define eSphericXYZ FbxEuler::eOrderSphericXYZ - - - -/** Quaternion interpolation modes. */ -enum EFbxQuatInterpMode -{ - eQuatInterpOff, //!< Do not evaluate using quaternion interpolation. - eQuatInterpClassic, //!< Legacy quaternion interpolation mode. - eQuatInterpSlerp, //!< Spherical linear interpolation. - eQuatInterpCubic, //!< Cubic interpolation. - eQuatInterpTangentDependent, //!< Mix between Slerp and cubic interpolation, depending on the specified tangents for each key. - eQuatInterpCount //!< Number of quaternion interpolation modes. Mark the end of this enum. -}; - -extern FBXSDK_DLL const FbxDouble FbxIdentityMatrix[4][4]; -extern FBXSDK_DLL const FbxVector4 FbxZeroVector4; - -inline float FbxFloor(const float x) -{ - return float(floor(x)); -} - -inline double FbxFloor(const double x) -{ - return floor(x); -} - -inline float FbxCeil(const float x) -{ - return float(ceil(x)); -} - -inline double FbxCeil(const double x) -{ - return ceil(x); -} - -template inline T FbxSign(const T x) -{ - return (x < 0) ? T(-1) : T(1); -} - -template inline T FbxRound(const T x) -{ - T y = FbxFloor(x); - return (x - y < T(0.5)) ? y : y + T(1); -} - -inline FbxUChar FbxAbs(const FbxUChar x) -{ - return x; -} - -inline FbxUShort FbxAbs(const FbxUShort x) -{ - return x; -} - -inline FbxUInt FbxAbs(const FbxUInt x) -{ - return x; -} - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxULong FbxAbs(const FbxULong x) - { - return x; - } -#endif - -inline FbxULongLong FbxAbs(const FbxULongLong x) -{ - return x; -} - -inline FbxFloat FbxAbs(const FbxFloat x) -{ - return (FbxFloat)fabs(x); -} - -inline FbxDouble FbxAbs(const FbxDouble x) -{ - return fabs(x); -} - -template inline T FbxAbs(const T x) -{ - return (x >= 0) ? x : ((x > FbxMin(x)) ? -x : FbxMax(x)); -} - -template inline T FbxClamp(const T value, const T min, const T max) -{ - return (value < min) ? min : ((value > max) ? max : value); -} - -template inline bool FbxEqual(const T x, const T y, const T e=(T)FBXSDK_TOLERANCE) -{ - return FbxAbs(x - y) <= e; -} - -inline bool FbxEqual(const FbxDouble2& x, const FbxDouble2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxDouble3& x, const FbxDouble3& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) ); -} - -inline bool FbxEqual(const FbxDouble4& x, const FbxDouble4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxDouble4x4& x, const FbxDouble4x4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxVector2& x, const FbxVector2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxVector4& x, const FbxVector4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxMatrix& x, const FbxMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxAMatrix& x, const FbxAMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline FbxDouble FbxMod(const FbxFloat x, FbxFloat& i) -{ - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x, FbxDouble& i) -{ - return modf(x, &i); -} - -inline FbxDouble FbxMod(const FbxFloat x) -{ - FbxFloat i; - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x) -{ - FbxDouble i; - return modf(x, &i); -} - -template inline T FbxReciprocal(const T x) -{ - return T(1) / x; -} - -inline double FbxSqrt(const double x) -{ - return sqrt(x); -} - -inline float FbxSqrt(const float x) -{ - return sqrtf(x); -} - -template inline T FbxSqrt(const T x) -{ - if( x > 1 ) - { - T z, y = x >> 1; - do - { - z = y; - y = (y + (x / y)) >> 1; - } - while(y < z); - - return z; - } - else - { - return x; - } -} - -inline float FbxExp(const float x) -{ - return expf(x); -} - -inline double FbxExp(const double x) -{ - return exp(x); -} - -inline float FbxLog(const float x) -{ - return float(log(x)); -} - -inline double FbxLog(const double x) -{ - return log(x); -} - -template inline T FbxPow(const T x, const T y) -{ - return (T)FbxExp(y * FbxLog((double)x)); -} - -template inline T FbxLog2(const T x) -{ - return (T)(FbxLog(x) * FBXSDK_1_DIV_LN2); -} - -inline float FbxSin(const float x) -{ - return sinf(x); -} - -inline double FbxSin(const double x) -{ - return sin(x); -} - -inline float FbxCos(const float x) -{ - return cosf(x); -} - -inline double FbxCos(const double x) -{ - return cos(x); -} - -inline float FbxTan(const float x) -{ - return tanf(x); -} - -inline double FbxTan(const double x) -{ - return tan(x); -} - -// *y = cos(x), sin(x) -template inline T FbxSinCos(const T x, T* y) -{ - return *y = FbxCos(x), FbxSin(x); -} - -// *y = cos(x * pi/180), sin(x * pi/180) -template inline T FbxSinCosd(const T x, T* y) -{ - return FbxSinCos(T(x * FBXSDK_PI_DIV_180), y); -} - -inline float FbxASin(const float x) -{ - return asinf(x); -} - -inline double FbxASin(const double x) -{ - return asin(x); -} - -template inline T FbxASind(const T x) -{ - return (T)(FbxASin((double)x) * FBXSDK_180_DIV_PI); -} - -inline float FbxACos(const float x) -{ - return acosf(x); -} - -inline double FbxACos(const double x) -{ - return acos(x); -} - -template inline T FbxACosd(const T x) -{ - return (T)(FbxACos(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float x) -{ - return atanf(x); -} - -inline double FbxATan(const double x) -{ - return atan(x); -} - -template inline T FbxATand(const T x) -{ - return (T)(FbxATan(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float y, const float x) -{ - return atan2f(y, x); -} - -inline double FbxATan(const double y, const double x) -{ - return atan2(y, x); -} - -template inline T FbxATand(const T y, const T x) -{ - return (T)(FbxATan(y, x) * FBXSDK_180_DIV_PI); -} - -template inline T FbxNorm(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxNorm(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxNorm(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -template inline T FbxHypot(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxHypot(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxHypot(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -inline FbxVector4 FbxRejection(const FbxVector4& a, const FbxVector4& b) -{ - return a - b * (a.DotProduct(b) / b.DotProduct(b)); -} - -template inline int FbxBitCount(const T x) -{ - int n = 0; - T c = x; - while( c ) - { - n += int(c & 1); - c = (c >> 1); - } - return n; -} - -template inline void FbxFixInfinite(T& x) -{ - if( x != x || x > FbxMax(x) || x < -FbxMax(x) ) - { - x = T(0); - } -} - -template inline T FbxExp(const T x); -template inline T FbxLog(const T x); -template inline T FbxSin(const T x); -template inline T FbxCos(const T x); -template inline T FbxASin(const T x); -template inline T FbxACos(const T x); -template inline T FbxATan(const T x); -template inline T FbxATan(const T y, const T x); - -#include - -#endif /* _FBXSDK_CORE_MATH_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmatrix.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmatrix.h deleted file mode 100644 index 8ecf815..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxmatrix.h +++ /dev/null @@ -1,281 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmatrix.h -#ifndef _FBXSDK_CORE_MATH_MATRIX_H_ -#define _FBXSDK_CORE_MATH_MATRIX_H_ - -#include - -#include - -#include - -class FbxAMatrix; - -/** FBX SDK basic 4x4 double matrix class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMatrix : public FbxDouble4x4 -{ -public: - //! \name Constructors and Destructor - //@{ - //! Constructor (initialize to an identity matrix) - FbxMatrix(); - - /** Copy constructor. - * \param pM Another FbxMatrix object copied to this one. */ - FbxMatrix(const FbxMatrix& pM); - - /** Copy constructor for affine matrix. - * \param pM Affine matrix */ - FbxMatrix(const FbxAMatrix& pM); - - /** TRS Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** TQS Constructor. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** 16 double constructor. - * \param p00 Value at column 0 row 0. - * \param p10 Value at column 1 row 0. - * \param p20 Value at column 2 row 0. - * \param p30 Value at column 3 row 0. - * \param p01 Value at column 0 row 1. - * \param p11 Value at column 1 row 1. - * \param p21 Value at column 2 row 1. - * \param p31 Value at column 3 row 1. - * \param p02 Value at column 0 row 2. - * \param p12 Value at column 1 row 2. - * \param p22 Value at column 2 row 2. - * \param p32 Value at column 3 row 2. - * \param p03 Value at column 0 row 3. - * \param p13 Value at column 1 row 3. - * \param p23 Value at column 2 row 3. - * \param p33 Value at column 3 row 3. */ - FbxMatrix( const double p00, const double p10, const double p20, const double p30, - const double p01, const double p11, const double p21, const double p31, - const double p02, const double p12, const double p22, const double p32, - const double p03, const double p13, const double p23, const double p33); - - //! Destructor. - ~FbxMatrix(); - //@} - - //! \name Access - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Value at element [ pX, pY ] of the matrix. */ - double Get(int pY, int pX) const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. */ - FbxVector4 GetColumn(int pX) const; - - /** Set matrix element. - * \param pY Row index. - * \param pX Column index. - * \param pValue New component value. */ - void Set(int pY, int pX, double pValue); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Set a matrix row. - * \param pY Row index. - * \param pRow Row vector. */ - void SetRow(int pY, const FbxVector4& pRow); - - /** Set a matrix column. - * \param pX Column index. - * \param pColumn Column vector. */ - void SetColumn(int pX, const FbxVector4& pColumn); - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxQuaternion& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxVector4& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - //@} - - //! \name Operators - //@{ - /** Assignment operator. - * \param pMatrix Source matrix. */ - FbxMatrix& operator=(const FbxMatrix& pMatrix); - - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. */ - FbxMatrix operator-() const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix. */ - FbxMatrix operator+(const FbxMatrix& pMatrix) const; - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix. */ - FbxMatrix operator-(const FbxMatrix& pMatrix) const; - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix. */ - FbxMatrix operator*(const FbxMatrix& pMatrix) const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix, replacing this matrix. */ - FbxMatrix& operator+=(const FbxMatrix& pMatrix); - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix, replacing this matrix. */ - FbxMatrix& operator-=(const FbxMatrix& pMatrix); - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix, replacing this matrix. */ - FbxMatrix& operator*=(const FbxMatrix& pMatrix); - - /** Equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxMatrix& pM) const; - - /** Equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxAMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxAMatrix& pM) const; - //@} - - //! \name Casting - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - - //! Define 4*4 array as a new type. - typedef const double(kDouble44)[4][4] ; - - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - //! \name Math Operations - //@{ - /** Calculate the matrix inverse. - * \return The inverse matrix. */ - FbxMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return This matrix transposed. */ - FbxMatrix Transpose() const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set the matrix to a "Look To" left handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToLH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look To" right handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToRH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look At" left handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtLH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Set the matrix values as a "Look At" right handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtRH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Multiply this matrix by pVector, the w component is normalized to 1. - * \param pVector A vector. - * \return The result of this matrix * pVector. */ - FbxVector4 MultNormalize(const FbxVector4& pVector) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - int Compare(const FbxAMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - - FbxMatrix operator*(double pValue) const; - FbxMatrix& operator*=(double pValue); - - double LUDecomposition(FbxVector4& pVector); - FbxMatrix LUMult(FbxMatrix pM, const FbxVector4& pVector) const; - double Determinant() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_MATRIX_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxquaternion.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxquaternion.h deleted file mode 100644 index 9f02f4d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxquaternion.h +++ /dev/null @@ -1,333 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquaternion.h -#ifndef _FBXSDK_CORE_MATH_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK quaternion class. - * \nosubgrouping - * Quaternions form a four-dimensional normed division algebra over the real numbers. - * It is for calculations involving three-dimensional rotations. - */ -class FBXSDK_DLL FbxQuaternion : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - /** Constructor. - * Initialize to the multiplicative identity. - */ - FbxQuaternion(); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxQuaternion(const FbxQuaternion& pV); - - /** Constructor. - * \param pX The X component. - * \param pY The Y component. - * \param pZ The Z component. - * \param pW The W component. - */ - FbxQuaternion(double pX, double pY, double pZ, double pW = 1.0); - - /** From axis degree constructor - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - FbxQuaternion(const FbxVector4& pAxis, double pDegree); - - //! Destructor. - ~FbxQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pQuaternion FbxQuaternion object assigned to this one. - */ - FbxQuaternion& operator=(const FbxQuaternion& pQuaternion); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double& operator[](int pIndex); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The const reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - const double& operator[](int pIndex) const; - - /** Get a vector element. - * \param pIndex The index of the component to access. - * \return The value of the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double GetAt(int pIndex) const; - - /** Set a vector element. - * \param pIndex The index of the component to set. - * \param pValue The new value to set the component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - void SetAt(int pIndex, double pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW = 1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** The addition operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar value to be added. - * \return The sum of addition. - */ - FbxQuaternion operator+(double pValue) const; - - /** The subtraction operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator/(double pValue) const; - - /** The in place addition operator between the real part of this quaternion and a scalar value. - * \param pValue The value to be added. - * \return The sum of addition. - */ - FbxQuaternion& operator+=(double pValue); - - /** The subtraction operator between the real part of this quaternion and a scalar value. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A quaternion where each component is multiplied by -1. - */ - FbxQuaternion operator-() const; - - /** Add two vectors together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator+(const FbxQuaternion& pQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator-(const FbxQuaternion& pQuaternion) const; - - /** The quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion operator*(const FbxQuaternion& pOther) const; - - /** The quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion operator/(const FbxQuaternion& pOther) const; - - /** Add two quaternions together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator+=(const FbxQuaternion& pQuaternion); - - /** Subtract a quaternion from another vector. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator-=(const FbxQuaternion& pQuaternion); - - /** The in place quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion& operator*=(const FbxQuaternion& pOther); - - /** The in place quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion& operator/=(const FbxQuaternion& pOther); - - /** Return quaternion product. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - */ - FbxQuaternion Product(const FbxQuaternion& pOther) const; - - /** Return quaternion dot product. - * \param pQuaternion Dot product quaternion. - * \return The dot product of this quaternion and pQuaternion. - */ - double DotProduct(const FbxQuaternion& pQuaternion) const; - - /** Normalize the quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the quaternion conjugate. - * \return The conjugate of this quaternion. - */ - void Conjugate(); - - /** Calculate the length (norm) of the quaternion. - * \return The length of the quaternion. - */ - double Length(); - - /** Calculate the inverse of the quaternion. - * \return The inverse of this quaternion. - * \remarks If this quaternion has a zero length, retain the original value. - * \remarks If the quaternion is normalized, then its inverse is equal to its conjugate. - */ - void Inverse(); - - /** Set the quaternion rotation from an axis degree angle. - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - void SetAxisAngle(const FbxVector4& pAxis, double pDegree); - - /** Calculate a spherical linear interpolation quaternion. - * \param pOther The other quaternion to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. */ - FbxQuaternion Slerp(const FbxQuaternion& pOther, double pWeight) const; - - /** Create a Quaternion equivalent to the supplied Euler XYZ in spherical coordinate. - * \param pEuler The Euler XYZ angle (in degrees). - */ - void ComposeSphericalXYZ(const FbxVector4 pEuler); - - /** Create an Euler XYZ equivalent to the current quaternion. - * \return The Euler XYZ angle (in degrees) equivalent to the current quaternion in spherical coordinate. - */ - FbxVector4 DecomposeSphericalXYZ() const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxQuaternion & pV) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** - * \name Comparison methods - */ - //@{ - /** Comparison method. - * \param pQ2 Quaternion to compare with this - * \param pThreshold Epsilon for small number comparison - * \return 0 if quaternions are equal, non-zero value otherwise. - */ - int Compare(const FbxQuaternion &pQ2, const double pThreshold = FBXSDK_TOLERANCE) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void GetQuaternionFromPositionToPosition(const FbxVector4 &pP0, const FbxVector4 &pP1); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_QUATERNION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxtransforms.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxtransforms.h deleted file mode 100644 index d73ce5c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxtransforms.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtransforms.h -#ifndef _FBXSDK_CORE_MATH_TRANSFORMS_H_ -#define _FBXSDK_CORE_MATH_TRANSFORMS_H_ - -#include - -#include -#include - -#include - -/** FbxLimits defines a limit range for one transform component, either translation, rotation or scaling. - * One transform component limit contains two part: a min value and a max value limit, which means - * that each value of the corresponding transform component cannot go beyond the range set by the - * min and max values. Although the members are identified as X, Y and Z (the W component is ignored) - * at this level, they are unitless values and will only have meaning within the context they are queried. - * - * For each limit, there is one flag to indicate if the limit is active or not. Before accessing the - * limit info, the caller need to query the flag first to make sure that the retrieved values will be - * meaningful. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLimits -{ -public: - //! Constructor - FbxLimits(); - - //! Assignment Operator - FbxLimits& operator=(const FbxLimits& pLimits); - - /** Retrieve the active state of this limit. - * \return True if the limit is active. - */ - bool GetActive() const; - - /** Set the active state of this limit. - * \param pActive If true, this limit will become globally active. - */ - void SetActive(const bool pActive); - - /** Get the active state of the minimum X component. - * \return True if the X component minimum limit is active. - */ - bool GetMinXActive() const; - - /** Get the active state of the minimum Y component. - * \return True if the Y component minimum limit is active. - */ - bool GetMinYActive() const; - - /** Get the active state of the minimum Z component. - * \return True if the Z component minimum limit is active. - */ - bool GetMinZActive() const; - - /** Get the active states of the three components of the minimum limit. - * \param pXActive \c True if the X component minimum limit is active. - * \param pYActive \c True if the Y component minimum limit is active. - * \param pZActive \c True if the Z component minimum limit is active. - */ - void GetMinActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the minimum limits. - * \return The current X, Y and Z values for the minimum limits. - */ - FbxDouble3 GetMin() const; - - /** Set the active state of the minimum X component. - * \param pActive If true, the X component minimum limit will be active. - */ - void SetMinXActive(bool pActive); - - /** Set the active state of the minimum Y component. - * \param pActive If true, the Y component minimum limit will be active. - */ - void SetMinYActive(bool pActive); - - /** Set the active state of the minimum Z component. - * \param pActive If true, the Z component minimum limit will be active. - */ - void SetMinZActive(bool pActive); - - /** Set the active states of the three components of the minimum limits. - * \param pXActive If true, the X component minimum limit will be active. - * \param pYActive If true, the Y component minimum limit will be active. - * \param pZActive If true, the Z component minimum limit will be active. - */ - void SetMinActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the minimum limits. - * \param pMin The X, Y and Z values for the minimum limits. - */ - void SetMin(const FbxDouble3& pMin); - - /** Get the active state of the maximum X component. - * \return True if the X component maximum limit is active. - */ - bool GetMaxXActive() const; - - /** Get the active state of the maximum Y component. - * \return True if the Y component maximum limit is active. - */ - bool GetMaxYActive() const; - - /** Get the active state of the maximum Z component. - * \return True if the Z component maximum limit is active. - */ - bool GetMaxZActive() const; - - /** Get the active states of the three components of the maximum limit. - * \param pXActive \c True if the X component maximum limit is active. - * \param pYActive \c True if the Y component maximum limit is active. - * \param pZActive \c True if the Z component maximum limit is active. - */ - void GetMaxActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the maximum limits. - * \return The current X, Y and Z values for the maximum limits. - */ - FbxDouble3 GetMax() const; - - /** Set the active state of the maximum X component. - * \param pActive If true, the X component maximum limit will be active. - */ - void SetMaxXActive(bool pActive); - - /** Set the active state of the maximum Y component. - * \param pActive If true, the Y component maximum limit will be active. - */ - void SetMaxYActive(bool pActive); - - /** Set the active state of the maximum Z component. - * \param pActive If true, the Z component maximum limit will be active. - */ - void SetMaxZActive(bool pActive); - - /** Set the active states of the three components of the maximum limits. - * \param pXActive If true, the X component maximum limit will be active. - * \param pYActive If true, the Y component maximum limit will be active. - * \param pZActive If true, the Z component maximum limit will be active. - */ - void SetMaxActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the maximum limits. - * \param pMax The X, Y and Z values for the maximum limits. - */ - void SetMax(const FbxDouble3& pMax); - - /** Find if any of the minimum or maximum active state are set. - * \return If any component of the minimum or maximum active state are set, true is returned. - * \remarks The global active state will not count when resolving this. - */ - bool GetAnyMinMaxActive() const; - - /** Apply the active limits to the components of the vector provided. - * \return The new vector clamped by active limits. - */ - FbxDouble3 Apply(const FbxDouble3& pVector); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - enum EMask {eActive=1<<0, eMinX=1<<1, eMinY=1<<2, eMinZ=1<<3, eMaxX=1<<4, eMaxY=1<<5, eMaxZ=1<<6, eAll=eMinX|eMinY|eMinZ|eMaxX|eMaxY|eMaxZ}; - - FbxUInt8 mMask; - FbxDouble3 mMin; - FbxDouble3 mMax; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxRotationOrder -{ -public: - FbxRotationOrder(FbxEuler::EOrder pOrder=FbxEuler::eOrderXYZ); - - FbxEuler::EOrder GetOrder() const; - void SetOrder(FbxEuler::EOrder pOrder); - void V2M(FbxAMatrix& pRM, const FbxVector4& pV); - void M2V(FbxVector4& pV, const FbxAMatrix& pRM); - bool V2VRef(FbxVector4& pVOut, const FbxVector4& pVIn, const FbxVector4& pVRef); - -private: - FbxEuler::EOrder mOrder; -}; - -/** Handle transform behaviors such as pivots, limits and offets, etc. - */ -class FBXSDK_DLL FbxTransform -{ -public: - enum EInheritType {eInheritRrSs, eInheritRSrs, eInheritRrs}; - - FbxTransform(); - - EInheritType GetInheritType() const; - void SetInheritType(EInheritType pType); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - FbxRotationOrder& GetRotationOrder(); - bool HasROffset() const; - bool HasRPivot() const; - bool HasSOffset() const; - bool HasSPivot() const; - bool HasPreRM() const; - bool HasPostRM() const; - void SetROffset(const FbxVector4& pROffset); - void SetRPivot(const FbxVector4& pRPivot); - void SetSOffset(const FbxVector4& pSOffset); - void SetSPivot(const FbxVector4& pSPivot); - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - bool GetRotationSpaceForLimitOnly() const; - void SetRotationSpaceForLimitOnly(bool pRotationSpaceForLimitOnly); - - void DoF2LT(FbxVector4& pLT, const FbxVector4& pDoF, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void LT2DoF(FbxVector4& pDoF, const FbxVector4& pLT, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF, bool pForLimit=false); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM, bool pForLimit=false); - void LSM2GSM(FbxAMatrix& pGSM, const FbxAMatrix& pPGSM, const FbxAMatrix& pLSM, const FbxAMatrix& pLRM, const FbxVector4& pPLS); - void GTRSM2GX(FbxAMatrix& pGX, const FbxVector4& pGT, const FbxAMatrix& pGRM, const FbxAMatrix& pGSM); - -private: - void SumPivots(FbxVector4& pSum, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - - class RotationSpace - { - public: - enum EMask {eHasNothing=0, eHasPreRotM=1<<0, eHasPostRotM=1<<1}; - - RotationSpace(); - - bool HasPreRM() const; - bool HasPostRM() const; - void GetPreRM(FbxAMatrix& pPreRM) const; - void GetPostRM(FbxAMatrix& pPostRM) const; - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM); - - FbxUInt8 mMask; - FbxAMatrix mPreRM; - FbxAMatrix mPostRM; - FbxRotationOrder mRotationOrder; - }; - - enum EMask {eHasNothing=0, eHasRotOffset=1<<0, eHasRotPivot=1<<1, eHasScaleOffset=1<<2, eHasScalePivot=1<<3}; - - FbxUInt8 mMask; - EInheritType mInheritType; - FbxVector4 mROffset; - FbxVector4 mRPivot; - FbxVector4 mSOffset; - FbxVector4 mSPivot; - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - bool mRotationSpaceForLimitOnly; - RotationSpace mRotationSpace; -}; - -FBXSDK_DLL bool FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef, const int* pOrder); -FBXSDK_DLL void FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef); - -#include - -#endif /* _FBXSDK_CORE_MATH_TRANSFORMS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector2.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector2.h deleted file mode 100644 index acd71c3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector2.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector2.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_2_H_ -#define _FBXSDK_CORE_MATH_VECTOR_2_H_ - -#include - -#include - -/** A two double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector2 : public FbxDouble2 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector2(); - - /** Copy constructor. - * \param pVector2 The vector copied to this one. - */ - FbxVector2(const FbxVector2& pVector2); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - */ - FbxVector2(double pX, double pY); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector2 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector2& operator=(const FbxVector2& pVector2); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - */ - void Set(double pX, double pY); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return A new vector with the result of adding pValue to each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return A new vector with the result of subtracting pValue from each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return A new vector with the result of multiplying each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return A new vector with the result of dividing each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector2 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator+(const FbxVector2& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator-(const FbxVector2& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator*(const FbxVector2& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The result of this vector / pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator/(const FbxVector2& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator+=(const FbxVector2& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator-=(const FbxVector2& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator*=(const FbxVector2& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \remarks The values in pVector are not checked. - * \return The result of this vector / pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator/=(const FbxVector2& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - */ - double DotProduct(const FbxVector2& pVector) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxVector2 & pVector) const; - - /** Non-equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxVector2 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - */ - double Distance(const FbxVector2& pVector) const; - - //! Normalize the vector, length set to 1. - void Normalize(); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 2]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=2) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_2_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector4.h b/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector4.h deleted file mode 100644 index 83e4761..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/math/fbxvector4.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector4.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_4_H_ -#define _FBXSDK_CORE_MATH_VECTOR_4_H_ - -#include - -#include - -class FbxQuaternion; - -/** A four double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector4 : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector4(); - - /** Copy constructor. - * \param pVector4 The vector copied to this one. - */ - FbxVector4(const FbxVector4& pVector4); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - * \param pZ Z component. - * \param pW W component. - */ - FbxVector4(double pX, double pY, double pZ, double pW=1.0); - - /** Constructor. - * \param pValue X,Y,Z,W components. - */ - FbxVector4(const double pValue[4]); - - /** Constructor. - * \param pValue X,Y,Z components. - * \remarks The fourth component of this object is assigned 1. - */ - FbxVector4(const FbxDouble3& pValue); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector4 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector4& operator=(const FbxVector4& pVector4); - - /** Assignment operation. - * \param pValue The pointer to an array whose elements are assigned to this vector. - * \return This vector after assignment. - */ - FbxVector4& operator=(const double* pValue); - - /** Assignment operation. - * \param pValue The vector with 3 elements assigned to this vector. - * \return This vector after assignment. - * \remarks The first three elements are assigned with pValue. The fourth element is set as 1.0 - */ - FbxVector4& operator=(const FbxDouble3& pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW=1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector4 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The vector v' = this + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator+(const FbxVector4& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The vector v' = this - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator-(const FbxVector4& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The vector v' = this * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator*(const FbxVector4& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The vector v[i]' = this[i] / pVector[i]. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator/(const FbxVector4& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator+=(const FbxVector4& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator-=(const FbxVector4& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator*=(const FbxVector4& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator/=(const FbxVector4& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double DotProduct(const FbxVector4& pVector) const; - - /** Calculate the cross product of two vectors. - * \param pVector The second vector. - * \return The cross product vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - FbxVector4 CrossProduct(const FbxVector4& pVector) const; - - /** Calculate the Euler rotation required to align axis pAB-pA on pAB-pB. - * \param pAB The intersection of the 2 axis. - * \param pA A point on axis to be aligned. - * \param pB A point on reference axis. - * \param pAngles Resulting euler angles. - * \return \c true on success. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - static bool AxisAlignmentInEulerAngle(const FbxVector4& pAB, const FbxVector4& pA, const FbxVector4& pB, FbxVector4& pAngles); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxVector4 & pVector) const; - - /** Non equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxVector4 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double Distance(const FbxVector4& pVector) const; - - /** Normalize the vector, length set to 1. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - void Normalize(); - - - /** Set the Euler XYZ from a Quaternion. - *\param pQuat Quaternion from which Euler XYZ information is got. - */ - void SetXYZ(const FbxQuaternion pQuat); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 4]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=4) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxVector4& pV, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_4_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxatomic.h b/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxatomic.h deleted file mode 100644 index 6e666f3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxatomic.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxatomic.h -#ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_ -#define _FBXSDK_CORE_SYNC_ATOMIC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FBXSDK_DLL FbxAtomOp -{ -public: - static void Inc(volatile FbxAtomic* pPtr); - static void Dec(volatile FbxAtomic* pPtr); - static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap); - static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap); - static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxclock.h b/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxclock.h deleted file mode 100644 index e419646..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxclock.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclock.h -#ifndef _FBXSDK_CORE_SYNC_CLOCK_H_ -#define _FBXSDK_CORE_SYNC_CLOCK_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -/** Put the current thread to sleep. - * \param pMilliseconds The duration of the sleep in milli-seconds. - */ -FBXSDK_DLL void FbxSleep(int pMilliseconds); - -/** Retrieves the current value of the high-resolution performance counter. - * \return The current value of the high-resolution performance counter, in "counts". - * \remarks To convert "counts" into time, divide it by the frequency available from FbxGetHighResFrequency(). - */ -FBXSDK_DLL FbxLongLong FbxGetHighResCounter(); - -/** Retrieves the frequency of the high-resolution performance counter. - * \return The frequency of the high-resolution performance counter value, in "counts" per second. - * \remarks The first time this function is called, the frequency is queried from the system and then cached - * so that further requests are fast. This means it is guaranteed to not change during run-time. - */ -FBXSDK_DLL FbxLongLong FbxGetHighResFrequency(); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SYNC_CLOCK_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxsync.h b/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxsync.h deleted file mode 100644 index 39b6a52..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxsync.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsync.h -#ifndef _FBXSDK_CORE_SYNC_H_ -#define _FBXSDK_CORE_SYNC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include -#include - -#include - -class FbxMutexImpl; -class FbxSemaphoreImpl; -class FbxGateImpl; - -/** A spinlock is the fastest and most simple thread lock mechanism available. - * It is very efficient since it does not use any operating system calls; it is only a test and set on an atomic variable, - * thus it is the fastest thread lock available. Spinlocks are efficient if threads are only likely to be blocked for a - * short period of time, as they avoid overhead from operating system process re-scheduling or context switching. However, - * spinlocks become wasteful if held for longer durations, both preventing other threads from running and requiring - * re-scheduling. - * \note Spinlocks does not support recursive locking. A thread attempting to lock the same spinlock twice will wait - * indefinitely. - */ -class FBXSDK_DLL FbxSpinLock -{ -public: - FbxSpinLock(); - - /** Acquire the lock; thread will wait indefinitely until it is available. */ - void Acquire(); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. */ - void Release(); - -private: - FbxAtomic mSpinLock; -}; - -/** Mutually excluding thread lock mechanism. - * While the mutex is a much heavier implementation than a spinlock, it supports recursive locking; the same thread - * can safely lock the same mutex more than once without blocking. But it will have to be released as many times as - * it as been acquired before other threads can acquire the context. It is sometimes referred as a critical section. - * This is the heaviest thread lock implementation, but also the most secure. - */ -class FBXSDK_DLL FbxMutex -{ -public: - /** Constructor - * \param pInitialOwnership If pInitialOwnership is true, the lock will be initialized as being locked by the - * current thread. - */ - FbxMutex(bool pInitialOwnership=false); - virtual ~FbxMutex(); //!< Destructor - - /** Acquire the lock; thread will wait indefinitely until it is available. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - void Acquire(); - - /** Try acquiring the lock; thread will not wait if it is not available. - * \param pRetryCount The number of retries in case the lock is not available. - * \return True if the lock is acquired, false otherwise. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - bool TryAcquire(unsigned int pRetryCount); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. - * \remarks Only the owner thread should call Release(), and it needs to be released as many times as it was - * acquired. - */ - void Release(); - -private: - FbxMutexImpl* mImpl; -}; - -/** Mutually excluding thread waiting mechanism with a counter. - * Semaphore are generally used in situations when the current thread needs to wait for other threads before - * proceeding to the next step. In other words, that thread waits a number of signals from other threads. This - * is the best mechanism to use to synchronize threads since it doesn't require an heavy critical section. - */ -class FBXSDK_DLL FbxSemaphore -{ -public: - FbxSemaphore(); //!< Constructor - virtual ~FbxSemaphore(); //!< Destructor - - /** Wait indefinitely until the semaphore as been signaled as many times as specified. - * \param pCount Number of signal to wait before this function returns. - * \return True if the wait exit without errors. - * \remarks If pCount is set to zero, this function returns immediately without waiting. - */ - bool Wait(unsigned int pCount=1); - - /** Signal the semaphore as many times as specified. - * \param pCount The number of signal to send to the semaphore. - * \return True if the semaphore was signaled without errors. - */ - bool Signal(unsigned int pCount=1); - -private: - FbxSemaphoreImpl* mImpl; -}; - -/** A gate thread locking mechanism is very similar to a semaphore, except that when it is opened, any - * further call to wait will not wait until it is closed. It is generally used to block multiple threads - * until one of them open the gate to release them all. - */ -class FBXSDK_DLL FbxGate -{ -public: - FbxGate(); //!< Constructor - virtual ~FbxGate(); //!< Destructor - - /** Open the gate to release all threads waiting. - * \remarks All waiting threads will unblock until the gate is closed. - */ - void Open(); - - /** Close the gate so that the next time a thread call Wait() it will be blocked. */ - void Close(); - - /** Check if the gate is open. - * \return True if the gate is open, otherwise false. - */ - bool IsOpen(); - - /** Wait indefinitely until the gate open. - * \return True if the wait completed without errors. - * \remarks If the gate is already open, this function returns immediately. - */ - bool Wait(); - -private: - FbxGateImpl* mImpl; -}; - -/** A simple stack of linked items that is multi-thread safe, protected by a spinlock. - */ -class FBXSDK_DLL FbxSyncStack -{ -public: - //! A single link item to be used to construct the stack - struct Item - { - Item* mNext; - inline Item(){ mNext = NULL; } - inline Item* Set(Item* pNext){ return mNext = pNext; } - inline Item* Next(){ return mNext; } - }; - - //! Constructor - FbxSyncStack(); - - /** Add an item on the top of the stack. - * \param pItem The item to add on top of the stack. - */ - void Push(Item* pItem); - - /** Remove the item on the top of the stack. - * \return Returns the item on top of the stack, otherwise NULL if stack empty. - */ - Item* Pop(); - -private: - FbxSpinLock mLock; - Item* mTop; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxthread.h b/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxthread.h deleted file mode 100644 index fcbde87..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/core/sync/fbxthread.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthread.h -#ifndef _FBXSDK_CORE_SYNC_THREAD_H_ -#define _FBXSDK_CORE_SYNC_THREAD_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FbxThreadImpl; - -//! Definition of a thread procedure function signature. -typedef void (*FbxThreadProc)(void*); - -/** This class implement a standard way to use threads across platforms. - */ -class FBXSDK_DLL FbxThread -{ -public: - enum EState {eUnknown, eRunning, eDead}; - enum EPriority {eNone, eIdle, eLowest, eLow, eNormal, eHigh, eHighest, eRealTime}; - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, bool pSuspend=false); - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pPriority The thread priority to set upon creation. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, EPriority pPriority, bool pSuspend=false); - - //! Destructor - virtual ~FbxThread(); - - /** Suspend the execution of the thread. - * \return Return true if the thread was successfully suspended, otherwise false. - * \remarks It should be used only if you can control where the thread will be suspended in its procedure, - * otherwise the state of the thread and its memory is unknown, since the code will stop anywhere. - */ - bool Suspend(); - - /** Resume the execution of the thread. - * \return Return true if the thread was successfully resumed, otherwise false. - */ - bool Resume(); - - /** Wait for the thread completion. - * \return True if the thread successfully returned from its procedure. - */ - bool Join(); - - /** Do not wait for the thread completion and terminate it. - * \return True if the thread successfully died. - */ - bool Kill(); - - /** Retrieve the priority of the thread. - * \return The thread's priority. - */ - EPriority GetPriority(); - - /** Set the thread priority. - * \param pPriority The priority to set to this thread. - * \return True if the thread priority was successfully changed. - */ - bool SetPriority(EPriority pPriority); - - /** Retrieve the thread current state. - * \return The state of the thread. - */ - EState GetState(); - -private: - FbxThreadImpl* mImpl; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_THREAD_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_def.h b/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_def.h deleted file mode 100644 index d84469d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_def.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_def.h - * FBX SDK environment definition. - * - * This file is the principal FBX SDK environment definition. It is used at the top of - * every header and source file so that every unit is using the same definitions. - */ -#ifndef _FBXSDK_DEFINITION_H_ -#define _FBXSDK_DEFINITION_H_ - -//--------------------------------------------------------------------------------------- -//System Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Define Version and Namespace -#include - -//--------------------------------------------------------------------------------------- -//Define Architecture -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Useful Macros -#define FBX_SAFE_DELETE(p) {FbxDelete(p);(p)=NULL;} -#define FBX_SAFE_DELETE_ARRAY(a) {FbxDeleteArray(a);(a)=NULL;} -#define FBX_SAFE_DESTROY(p) if(p){(p)->Destroy();(p)=NULL;} -#define FBX_SAFE_FREE(p) if(p){FbxFree(p);(p)=NULL;} - -#endif /* _FBXSDK_DEFINITION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsbegin.h b/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsbegin.h deleted file mode 100644 index 1b89186..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsbegin.h +++ /dev/null @@ -1,17 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsbegin.h -#include - -#if FBXSDK_DEFINE_NAMESPACE == 1 - namespace FBXSDK_NAMESPACE { -#endif diff --git a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsend.h b/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsend.h deleted file mode 100644 index 1aab836..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_nsend.h +++ /dev/null @@ -1,16 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsend.h - -#if FBXSDK_DEFINE_NAMESPACE == 1 - } -#endif diff --git a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_version.h b/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_version.h deleted file mode 100644 index ebb085a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fbxsdk_version.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2018 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_version.h - * FBX SDK version definition. - * - * This file defines the version string and numbers for this release of the FBX SDK. - * \note This file should never be included directly, please include fbxsdk_def.h - * instead. - */ -#ifndef _FBXSDK_VERSION_H_ -#define _FBXSDK_VERSION_H_ - -//FBX SDK version defines -#define FBXSDK_VERSION_MAJOR 2019 // - -#include - -#include - -#include - -/** Representing a COLLADA animation element. - */ -class AnimationElement : public ElementBase -{ -public: - typedef ElementBase base_type; - - AnimationElement(); - virtual ~AnimationElement(); - - /** Get the count of animation channels in the element. - * \return Return the channel count. - */ - int GetChannelCount() const; - - /** Initialize with the content of a COLLADA element. - * This method should be called before ToFBX. - */ - bool FromCOLLADA(xmlNode * pElement, const SourceElementMapType & pSourceElements); - - /** Initialize with an animation curve. - * This method should be called before ToCOLLADA. - * \param pCurve The specific animation curve. - * \param pUnitConversion The unit conversion for key value. - */ - bool FromFBX(const FbxAnimCurve * pCurve, double pUnitConversion = 1.0); - - /** Copy the channel with specific index to the FBX animation curve. - * \param pFBXCurve The destination FBX animation curve. - * \param pChannelIndex The index of the source channel. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxAnimCurve * pFBXCurve, int pChannelIndex, - double pUnitConversion = 1.0) const; - - /** Copy the matrix animation to the FBX node TRS properties. - * \param pFBXNode The destination FBX node. - * \param pAnimLayer The animation layer whose X, Y and Z curves will be set up. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxNode * pFBXNode, FbxAnimLayer * pAnimLayer, - double pUnitConversion = 1.0) const; - - /** Add the content to COLLADA animation library. - * \param pAnimationLibrary The COLLADA animation library element. - * \param pNodeID The ID of the element to who this curve is belong. - * \param pAttributeSID The ID the attribute to who this curve is belong. - */ - bool ToCOLLADA(xmlNode * pAnimationLibrary, const char * pNodeID, - const char * pAttributeSID); - -private: - int mKeyCount; - double * mInputArray; - double * mOutputArray; - int mOutputStride; - FbxString * mInterpolationArray; - int mInterpolationStride; - double * mInTangentArray; - int mInTangentStride; - double * mOutTangentArray; - int mOutTangentStride; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ANIMATION_ELEMENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h deleted file mode 100644 index 7018ea7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h +++ /dev/null @@ -1,275 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaelement.h -#ifndef _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ -#define _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ - -#include - -#include - -// Utility functions to convert type to array tag used in COLLADA source element -template -inline const FbxString TypeToArrayTag() -{ - return COLLADA_FLOAT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_BOOL_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_INT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_NAME_ARRAY_STRUCTURE; -} - -// Utility functions to convert type to parameter tag used in COLLADA source element -template -inline const FbxString TypeToParameterTag() -{ - return COLLADA_FLOAT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_BOOL_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_INT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_NAME_TYPE; -} - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of common COLLADA element. - */ -struct ElementContentAccessor -{ - ElementContentAccessor(); - ElementContentAccessor(xmlNode * pElement); - virtual ~ElementContentAccessor(); - - template - bool GetNext(TYPE * pData) - { - return FromString(pData, mPointer, &mPointer); - } - - template - int GetArray(TYPE * pArray, int pArraySize, - int pSourceUnitOffset = 0, int pSourceUnitValidCount = 1, int pSourceUnitSize = 1, - int pDestUnitOffset = 0, int pDestUnitValidCount = 1, int pDestUnitSize = 1, - TYPE pDefaultValue = TYPE()) - { - if (pArray) - { - return FromStringToArray(mPointer, pArray, pArraySize, - pSourceUnitOffset, pSourceUnitValidCount, pSourceUnitSize, - pDestUnitOffset, pDestUnitValidCount, pDestUnitSize, pDefaultValue); - } - return 0; - } - - xmlChar * mContent; - const char * mPointer; -}; - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of COLLADA source element. - */ -template -struct SourceElementContentAccessor : public ElementContentAccessor -{ - SourceElementContentAccessor(xmlNode * pSourceElement) - : mCount(0), mStride(1), mOffset(0) - { - bool lReadCount = true; - xmlNode* lTechniqueElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_TECHNIQUE_COMMON_ELEMENT); - if (lTechniqueElement) - { - xmlNode* lAccessorElement = DAE_FindChildElementByTag(lTechniqueElement, COLLADA_ACCESSOR_STRUCTURE); - if (lAccessorElement) - { - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_COUNT_PROPERTY, mCount); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_STRIDE_PROPERTY, mStride); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_OFFSET_PROPERTY, mOffset); - } - lReadCount = false; - } - - xmlNode * lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, TypeToArrayTag()); - // Some COLLADA exporters use IDREF_array instead of Name_array - if (!lDataArrayElement && TypeToArrayTag() == COLLADA_NAME_ARRAY_STRUCTURE) - lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_IDREF_ARRAY_STRUCTURE); - FBX_ASSERT(lDataArrayElement); - - if (lDataArrayElement && lReadCount) - DAE_GetElementAttributeValue(lDataArrayElement, COLLADA_COUNT_PROPERTY, mCount); - - mContent = xmlNodeGetContent(lDataArrayElement); - mPointer = (const char *)mContent; - } - - int mCount; - int mStride; - int mOffset; -}; - -//----------------------------------------------------------------------------// - -/** Representing a common COLLADA element. - */ -class ElementBase -{ -public: - enum - { - MATRIX_STRIDE = 16, - }; - - // The name of user property in FBX which is used to preserve the ID of COLLADA element - static const char* smID_PROPERTY_NAME; - - /** Constructor & Destructor. - */ - ElementBase(); - virtual ~ElementBase(); - - /** Access for XML element. - */ - void SetXMLElement(xmlNode * pElement) { mXMLElement = pElement; } - xmlNode * GetXMLElement() const { return mXMLElement; } - - /** Get the ID of the element. - * \return Return the ID string. - */ - const FbxString & GetID() const; - - /** Get the unit of the element, - * which takes effect in this element and its children elements. - * \return Return the unit. - */ - const FbxSystemUnit * GetUnit() const; - -private: - xmlNode * mXMLElement; - mutable FbxString * mID; - mutable FbxSystemUnit * mUnit; -}; - -/** Convert from ID to URL, just add a prefix "#". - * \param pID The ID string. - * \return Return the URL string. - */ -inline const FbxString URL(const FbxString & pID) -{ - return FbxString("#") + pID; -} - -/** Convert the array data to a source element under specific parent element. - * \param pParentElement The parent element. - * \param pID The ID of the new source element. - * \param pData The array data. - * \param pCount The length of the array. - * \param pStride The stride of each unit in the array. For example, when you - * export an array of FbxDouble3 of size 10, you convert it to a double array - * of size 30 with a stride 3 and call this method. - * \return The new source element. - */ -template -xmlNode * AddSourceElement(xmlNode * pParentElement, const char * pID, - const T * pData, int pCount, int pStride = 1) -{ - FBX_ASSERT(pParentElement && pData); - if (!pParentElement || !pData) - return NULL; - - xmlNode * lSourceElement = DAE_AddChildElement(pParentElement, COLLADA_SOURCE_STRUCTURE); - DAE_AddAttribute(lSourceElement, COLLADA_ID_PROPERTY, pID); - - FbxString lContent; - const int lDataCount = pCount * pStride; - for (int lIndex = 0; lIndex < lDataCount; ++lIndex) - { - lContent += ToString(pData[lIndex]); - if (lIndex != lDataCount - 1) - lContent += " "; - } - const FbxString lArrayID = FbxString(pID) + "-array"; - xmlNode * lArrayElement = DAE_AddChildElement(lSourceElement, TypeToArrayTag(), lContent); - DAE_AddAttribute(lArrayElement, COLLADA_ID_PROPERTY, lArrayID); - DAE_AddAttribute(lArrayElement, COLLADA_COUNT_PROPERTY, lDataCount); - - xmlNode * lTechniqueCommonElement = DAE_AddChildElement(lSourceElement, - COLLADA_TECHNIQUE_COMMON_ELEMENT); - xmlNode * lAccessElement = DAE_AddChildElement(lTechniqueCommonElement, - COLLADA_ACCESSOR_STRUCTURE); - DAE_AddAttribute(lAccessElement, COLLADA_SOURCE_PROPERTY, URL(lArrayID)); - DAE_AddAttribute(lAccessElement, COLLADA_COUNT_PROPERTY, pCount); - DAE_AddAttribute(lAccessElement, COLLADA_STRIDE_PROPERTY, pStride); - - for (int lStrideIndex = 0; lStrideIndex < pStride; ++lStrideIndex) - { - xmlNode * lParamElement = DAE_AddChildElement(lAccessElement, COLLADA_PARAMETER_STRUCTURE); - DAE_AddAttribute(lParamElement, COLLADA_TYPE_PROPERTY, TypeToParameterTag()); - } - - return lSourceElement; -} - -/** Populate the layer element with direct array and return index array for later use. - * \param pLayerElement The layer element to be populated. - * \param pSourceElement The source element containing the direct array data. - * \param pSize The count of double data of direct array element. - * \return Return the index array of the layer element. - */ -template FbxLayerElementArray * PopulateLayerElementDirectArray(FbxLayerElement * pLayerElement, xmlNode * pSourceElement, int pSize) -{ - SourceElementContentAccessor lSourceElementAccessor(pSourceElement); - - FbxLayerElementTemplate * lLayerElement = (FbxLayerElementTemplate *)pLayerElement; - lLayerElement->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lLayerElement->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayerElement->GetDirectArray().SetCount(lSourceElementAccessor.mCount); - - TYPE * lArray = NULL; - lArray = lLayerElement->GetDirectArray().GetLocked(lArray); - lSourceElementAccessor.GetArray((double *)lArray, lSourceElementAccessor.mCount*pSize, 0, pSize, - lSourceElementAccessor.mStride, 0, pSize, sizeof(TYPE)/sizeof(double), 1.0); - lLayerElement->GetDirectArray().Release(&lArray, lArray); - - return &(lLayerElement->GetIndexArray()); -} - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h deleted file mode 100644 index b0f79f5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaiostream.h -#ifndef _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ -#define _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ - -#include - -#include - -//----------------------------------------------------------------------------// - -/** Convert part of the source string into destination type. - * \param pDest The destination with a specific type. - * \param pSourceBegin The begin of the source string. - * \param pSourceEnd Return the end of the part of the source string. - * \return Return \c true on success and \c false if else. - */ -template bool FromString(T * pDest, const char * pSourceBegin, const char ** pSourceEnd = NULL); -template <> bool FromString(int * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(double * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxString * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble2 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble3 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxVector4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); - - - -/** Parse the string into an array. - * The source string is made up with many groups and each group contains pSourceGroupSize units separated by spaces; - * The destination array is also made up with many groups and each unit contains pDestGroupSize units. - * The valid unit range in each source group is [pSourceUnitOffset, pSourceUnitOffset + pSourceValidUnitCount). - * The valid unit range in each destination unit is [pDestUnitOffset, pDestUnitOffset + pDestValidUnitCount). - * The units in invalid range of destination is set to a default value. - */ -template int FromStringToArray(const char * pString, TYPE * pArray, int pArraySize, int pSourceUnitOffset, int pSourceValidUnitCount, int pSourceGroupSize, int pDestUnitOffset, int pDestValidUnitCount, int pDestGroupSize, TYPE pDefaultValue = TYPE()) -{ - if (pString == 0 || pArray == 0) - return 0; - - FBX_ASSERT(pSourceUnitOffset >= 0 && pSourceUnitOffset < pSourceGroupSize); - FBX_ASSERT(pSourceValidUnitCount >= 0 && pSourceUnitOffset + pSourceValidUnitCount <= pSourceGroupSize); - FBX_ASSERT(pDestUnitOffset >= 0 && pDestUnitOffset < pDestGroupSize); - FBX_ASSERT(pDestValidUnitCount >= 0 && pDestUnitOffset + pDestValidUnitCount <= pDestGroupSize); - const char * lSource = pString; - TYPE * lDest = pArray; - - int lReadCount = 0; - int lSourceCounter = 0; - int lDestCounter = 0; - const int lSourceUnitValidEnd = pSourceUnitOffset + pSourceValidUnitCount; - const int lDestUnitGap = pDestGroupSize - pDestValidUnitCount - pDestUnitOffset; - while (lSource && *lSource) - { - TYPE lData; - const char * lSourceStart = lSource; - if (FromString(&lData, lSource, &lSource) && lSourceCounter >= pSourceUnitOffset && lSourceCounter < lSourceUnitValidEnd) - { - if (lReadCount >= pArraySize) - { - // we are trying to write past the allocated buffer - return 0; - } - - if (lDestCounter == 0) - { - for (int lIndex = 0; lIndex < pDestUnitOffset; ++lIndex) - *(lDest++) = pDefaultValue; - } - - *lDest++ = lData; - ++lReadCount; - ++lDestCounter; - if (lDestCounter == pDestValidUnitCount) - { - lDestCounter = 0; - for (int lIndex = 0; lIndex < lDestUnitGap; ++lIndex) - *lDest++ = pDefaultValue; - } - } - else - { - // we met a stop condition of FromString. In the normal case, lSource should now be "" or ' '. If not, - // the converted string is corrupted and we have to break the loop. We can detect this by checking - // if lSource pointer has moved. - if (lSource == lSourceStart) - { - break; - } - } - ++lSourceCounter; - if (lSourceCounter == pSourceGroupSize) - lSourceCounter = 0; - } - return lReadCount; -} - -//----------------------------------------------------------------------------// - -template -const FbxString ToString(const T & pValue) -{ - return FbxString(pValue); -} -template <> -const FbxString ToString(const FbxVector4 & pValue); -template <> -const FbxString ToString(const FbxAMatrix & pValue); - -//----------------------------------------------------------------------------// - -/** Decode percent encoded characters, returns an empty string if there's an error. - * For example, a string like "abc%20abc" is converted into "abc abc". - * \param pEncodedString The percent encoded string. - * \return The decoded string. - */ -const FbxString DecodePercentEncoding(const FbxString & pEncodedString); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h deleted file mode 100644 index d9083e7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladanamespace.h -#ifndef _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ -#define _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ - -#include - -#include - -#include - -/** Containing the valid parameter definition and modification in local scope. - */ -struct FbxColladaNamespace -{ -public: - /** Push the newparam and setparam elements found in this element. - * Call this method at the beginning of importing an element. - * \param pElement The specific element. - */ - void Push(xmlNode * pElement); - - /** Pop the newparam and setparam elements found in this element. - * Call this method at the end of importing an element. - */ - void Pop(); - - /** Find the specific newparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamDefinition(const char * pSID) const; - - /** Find the specific setparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamModification(const char * pSID) const; - - /** Get the count of all the setparam elements in local scope. - * \return The count. - */ - int GetParamModificationCount() const; - - /** Get the setparam element with given index. - * \param pIndex The given index. - * \return The element. - */ - xmlNode * GetParamModification(int pIndex) const; - -private: - FbxArray mParamDefinition; - FbxArray mParamDefinitionCount; - - FbxArray mParamModification; - FbxArray mParamModificationCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h deleted file mode 100644 index bffd356..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h +++ /dev/null @@ -1,472 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladatokens.h -#ifndef _FBXSDK_FILEIO_COLLADA_TOKENS_H_ -#define _FBXSDK_FILEIO_COLLADA_TOKENS_H_ - -#define XML_STR (const xmlChar*) - -// In COLLADA, 1 means total control, while 100 means total control in FBX. -const int COLLADA_MORPH_WEIGHT_TO_FBX_RATIO = 100; - -#define COLLADA_VERSION_PROPERTY "version" -#define COLLADA_VERSION "1.4.1" -#define COLLADA_SCHEMA "http://www.collada.org/2005/11/COLLADASchema" - -// COLLADA 1.4 elements -#define COLLADA_LIBRARY_ANIMATION_ELEMENT "library_animations" -#define COLLADA_LIBRARY_ANIMATION_CLIP_ELEMENT "library_animation_clips" -#define COLLADA_LIBRARY_CAMERA_ELEMENT "library_cameras" -#define COLLADA_LIBRARY_CONTROLLER_ELEMENT "library_controllers" -#define COLLADA_LIBRARY_EFFECT_ELEMENT "library_effects" -#define COLLADA_LIBRARY_FFIELDS_ELEMENT "library_force_fields" -#define COLLADA_LIBRARY_GEOMETRY_ELEMENT "library_geometries" -#define COLLADA_LIBRARY_IMAGE_ELEMENT "library_images" -#define COLLADA_LIBRARY_LIGHT_ELEMENT "library_lights" -#define COLLADA_LIBRARY_MATERIAL_ELEMENT "library_materials" -#define COLLADA_LIBRARY_NODE_ELEMENT "library_nodes" -#define COLLADA_LIBRARY_PMATERIAL_ELEMENT "library_physics_materials" -#define COLLADA_LIBRARY_PMODEL_ELEMENT "library_physics_models" -#define COLLADA_LIBRARY_PSCENE_ELEMENT "library_physics_scenes" -#define COLLADA_LIBRARY_VSCENE_ELEMENT "library_visual_scenes" - -#define COLLADA_INSTANCE_ANIMATION_ELEMENT "instance_animation" -#define COLLADA_INSTANCE_CAMERA_ELEMENT "instance_camera" -#define COLLADA_INSTANCE_CONTROLLER_ELEMENT "instance_controller" -#define COLLADA_INSTANCE_EFFECT_ELEMENT "instance_effect" -#define COLLADA_INSTANCE_GEOMETRY_ELEMENT "instance_geometry" -#define COLLADA_INSTANCE_LIGHT_ELEMENT "instance_light" -#define COLLADA_INSTANCE_NODE_ELEMENT "instance_node" -#define COLLADA_INSTANCE_VSCENE_ELEMENT "instance_visual_scene" -#define COLLADA_INSTANCE_PSCENE_ELEMENT "instance_physics_scene" -#define COLLADA_INSTANCE_MATERIAL_ELEMENT "instance_material" - -#define COLLADA_ANIMCLIP_ELEMENT "animation_clip" -#define COLLADA_BINDMATERIAL_ELEMENT "bind_material" -#define COLLADA_EFFECT_ELEMENT "effect" -#define COLLADA_INITFROM_ELEMENT "init_from" -#define COLLADA_SAMPLER_ELEMENT "sampler" -#define COLLADA_SKELETON_ELEMENT "skeleton" -#define COLLADA_TARGETS_ELEMENT "targets" -#define COLLADA_TECHNIQUE_COMMON_ELEMENT "technique_common" -#define COLLADA_VSCENE_ELEMENT "visual_scene" -#define COLLADA_WEIGHTS_ELEMENT "vertex_weights" -#define COLLADA_VERTEXCOUNT_ELEMENT "vcount" - -#define COLLADA_FX_PROFILE_COMMON_ELEMENT "profile_COMMON" -#define COLLADA_FX_PROFILE_CG_ELEMENT "profile_CG" -#define COLLADA_FX_PROFILE_HLSL_ELEMENT "profile_HLSL" -#define COLLADA_FX_PROFILE_GLSL_ELEMENT "profile_GLSL" -#define COLLADA_FX_PROFILE_GLES_ELEMENT "profile_GLES" - -#define COLLADA_FXCMN_FLOAT_ELEMENT "float" -#define COLLADA_FXCMN_FLOAT4_ELEMENT "float4" -#define COLLADA_FXCMN_FLOAT4X4_ELEMENT "float4x4" -#define COLLADA_FXCMN_INCLUDE_ELEMENT "include" -#define COLLADA_FXCMN_SURFACE_ELEMENT "surface" -#define COLLADA_FXCMN_SAMPLER1D_ELEMENT "sampler1D" -#define COLLADA_FXCMN_SAMPLER2D_ELEMENT "sampler2D" -#define COLLADA_FXCMN_SAMPLER3D_ELEMENT "sampler3D" -#define COLLADA_FXCMN_SAMPLERCUBE_ELEMENT "samplerCUBE" -#define COLLADA_FXCMN_NEWPARAM_ELEMENT "newparam" -#define COLLADA_FXCMN_SETPARAM_ELEMENT "setparam" -#define COLLADA_FXCMN_STRING_ELEMENT "string" - -#define COLLADA_TECHNIQUE_STANDARD_PARAMETER "standard" - -#define COLLADA_FXSTD_CONSTANT_ELEMENT "constant" -#define COLLADA_FXSTD_LAMBERT_ELEMENT "lambert" -#define COLLADA_FXSTD_PHONG_ELEMENT "phong" -#define COLLADA_FXSTD_BLINN_ELEMENT "blinn" -#define COLLADA_FXSTD_COLOR_ELEMENT "color" -#define COLLADA_FXSTD_FLOAT_ELEMENT "float" -#define COLLADA_FXSTD_SAMPLER_ELEMENT "texture" -#define COLLADA_FXSTD_TEXTURE_ATTRIBUTE "texture" -#define COLLADA_FXSTD_TEXTURESET_ATTRIBUTE "texcoord" - -#define COLLADA_CONTROLLER_SKIN_ELEMENT "skin" -#define COLLADA_CONTROLLER_MORPH_ELEMENT "morph" - -#define COLLADA_CAMERA_PERSP_ELEMENT "perspective" -#define COLLADA_CAMERA_ORTHO_ELEMENT "orthographic" - -#define COLLADA_ASPECT_CAMERA_PARAMETER "aspect_ratio" -#define COLLADA_XFOV_CAMERA_PARAMETER "xfov" -#define COLLADA_YFOV_CAMERA_PARAMETER "yfov" -#define COLLADA_ZNEAR_CAMERA_PARAMETER "znear" -#define COLLADA_ZFAR_CAMERA_PARAMETER "zfar" -#define COLLADA_XMAG_CAMERA_PARAMETER "xmag" -#define COLLADA_YMAG_CAMERA_PARAMETER "ymag" -#define COLLADA_CAMERA_VERTICAL_APERTURE_PARAMETER "vertical_aperture" -#define COLLADA_CAMERA_HORIZONTAL_APERTURE_PARAMETER "horizontal_aperture" -#define COLLADA_CAMERA_LENS_SQUEEZE_PARAMETER "lens_squeeze" - -#define COLLADA_AMBIENT_MATERIAL_PARAMETER "ambient" -#define COLLADA_BUMP_MATERIAL_PARAMETER "bump" -#define COLLADA_DIFFUSE_MATERIAL_PARAMETER "diffuse" -#define COLLADA_EMISSION_MATERIAL_PARAMETER "emission" -#define COLLADA_TRANSPARENCY_MATERIAL_PARAMETER "transparency" -#define COLLADA_TRANSPARENT_MATERIAL_PARAMETER "transparent" -#define COLLADA_REFLECTIVE_MATERIAL_PARAMETER "reflective" -#define COLLADA_REFLECTIVITY_MATERIAL_PARAMETER "reflectivity" -#define COLLADA_SHININESS_MATERIAL_PARAMETER "shininess" -#define COLLADA_SPECULAR_MATERIAL_PARAMETER "specular" -#define COLLADA_INDEXOFREFRACTION_MATERIAL_PARAMETER "index_of_refraction" -#define COLLADA_OPAQUE_MODE_ATTRIBUTE "opaque" -#define COLLADA_OPAQUE_MODE_A_ONE "A_ONE" -#define COLLADA_OPAQUE_MODE_RGB_ONE "RGB_ONE" -#define COLLADA_OPAQUE_MODE_A_ZERO "A_ZERO" -#define COLLADA_OPAQUE_MODE_RGB_ZERO "RGB_ZERO" - -#define COLLADA_LIGHT_AMBIENT_ELEMENT "ambient" -#define COLLADA_LIGHT_POINT_ELEMENT "point" -#define COLLADA_LIGHT_DIRECTIONAL_ELEMENT "directional" -#define COLLADA_LIGHT_SPOT_ELEMENT "spot" - -#define COLLADA_COLOR_LIGHT_PARAMETER "color" -#define COLLADA_CONST_ATTENUATION_LIGHT_PARAMETER "constant_attenuation" -#define COLLADA_LIN_ATTENUATION_LIGHT_PARAMETER "linear_attenuation" -#define COLLADA_QUAD_ATTENUATION_LIGHT_PARAMETER "quadratic_attenuation" -#define COLLADA_FALLOFFEXPONENT_LIGHT_PARAMETER "falloff_exponent" -#define COLLADA_FALLOFFANGLE_LIGHT_PARAMETER "falloff_angle" - -#define COLLADA_BINDSHAPEMX_SKIN_PARAMETER "bind_shape_matrix" - -#define COLLADA_CONTRIBUTOR_ASSET_ELEMENT "contributor" -#define COLLADA_AUTHOR_ASSET_PARAMETER "author" -#define COLLADA_AUTHORINGTOOL_ASSET_PARAMETER "authoring_tool" -#define COLLADA_CREATED_ASSET_PARAMETER "created" -#define COLLADA_MODIFIED_ASSET_PARAMETER "modified" -#define COLLADA_REVISION_ASSET_PARAMETER "revision" -#define COLLADA_SOURCEDATA_ASSET_PARAMETER "source_data" -#define COLLADA_UNITS_ASSET_PARAMETER "unit" -#define COLLADA_UPAXIS_ASSET_PARAMETER "up_axis" - -#define COLLADA_SYMBOL_PROPERTY "symbol" - -// From Collada 1.3 -#define COLLADA_DOCUMENT_STRUCTURE "COLLADA" -#define COLLADA_ASSET_STRUCTURE "asset" -#define COLLADA_REVISION_STRUCTURE "revision" -#define COLLADA_AUTHORING_TOOL_STRUCTURE "authoring_tool" -#define COLLADA_CREATED_STRUCTURE "created" -#define COLLADA_MODIFIED_STRUCTURE "modified" -#define COLLADA_AUTHOR_STRUCTURE "author" -#define COLLADA_TITLE_STRUCTURE "title" -#define COLLADA_SUBJECT_STRUCTURE "subject" -#define COLLADA_KEYWORDS_STRUCTURE "keywords" -#define COLLADA_COMMENTS_STRUCTURE "comments" -#define COLLADA_UNIT_STRUCTURE "unit" -#define COLLADA_SOURCE_DATA_STRUCTURE "source_data" -#define COLLADA_UP_AXIS_STRUCTURE "up_axis" -#define COLLADA_LIBRARY_STRUCTURE "library" // Deprecated 1.4 -#define COLLADA_SCENE_STRUCTURE "scene" -#define COLLADA_NODE_STRUCTURE "node" -#define COLLADA_MATRIX_STRUCTURE "matrix" -#define COLLADA_TRANSFORM_STRUCTURE "transform" -#define COLLADA_TRANSLATE_STRUCTURE "translate" -#define COLLADA_TRANSLATION_STRUCTURE "translation" // For ColladaMax -#define COLLADA_TRANSLATE_ORIGIN "origin" //A fix for Poser(Bug 309548). Handle translate origin info exported from Poser. -#define COLLADA_TRANSLATE_LOCATION "location" //A fix for ? (Bug BARB-154). "location" is synonyn of "translate" ? -#define COLLADA_ROTATE_STRUCTURE "rotate" -#define COLLADA_SCALE_STRUCTURE "scale" -#define COLLADA_SKEW_STRUCTURE "skew" -#define COLLADA_ROTATE_X "rotateX" -#define COLLADA_ROTATE_Y "rotateY" -#define COLLADA_ROTATE_Z "rotateZ" -#define COLLADA_ROT_X "RotX" // For ColladaMax -#define COLLADA_ROT_Y "RotY" -#define COLLADA_ROT_Z "RotZ" -#define COLLADA_ROTATION_X "rotation_x" // For XSI -#define COLLADA_ROTATION_Y "rotation_y" -#define COLLADA_ROTATION_Z "rotation_z" -#define COLLADA_ROTATIONX "rotationX" // BARB-154 -#define COLLADA_ROTATIONY "rotationY" -#define COLLADA_ROTATIONZ "rotationZ" - -#define COLLADA_ROTATE_PIVOT "rotatePivot" // the next 6 subids are recognized by ColladaMaya -#define COLLADA_SCALE_PIVOT "scalePivot" -#define COLLADA_ROTATE_PIVOT_INVERSE "rotatePivotInverse" -#define COLLADA_SCALE_PIVOT_INVERSE "scalePivotInverse" -#define COLLADA_ROTATE_PIVOT_OFFSET "rotatePivotTranslation" -#define COLLADA_SCALE_PIVOT_OFFSET "scalePivotTranslation" -#define COLLADA_PRE_ROTATION_X "jointOrientX" // these 3 subids recognized by ColladaMaya -#define COLLADA_PRE_ROTATION_Y "jointOrientY" -#define COLLADA_PRE_ROTATION_Z "jointOrientZ" -#define COLLADA_POST_ROTATION_X "post-rotationX" // these 3 subids NOT recognized by ColladaMaya -#define COLLADA_POST_ROTATION_Y "post-rotationY" -#define COLLADA_POST_ROTATION_Z "post-rotationZ" -#define COLLADA_ROTATE_AXIS_X "rotateAxisX" // these 3 subids recognized by ColladaMaya -#define COLLADA_ROTATE_AXIS_Y "rotateAxisY" -#define COLLADA_ROTATE_AXIS_Z "rotateAxisZ" -#define COLLADA_LOOKAT_STRUCTURE "lookat" -#define COLLADA_PERSPECTIVE_STRUCTURE "perspective" -#define COLLADA_GEOMETRY_STRUCTURE "geometry" -#define COLLADA_MESH_STRUCTURE "mesh" -#define COLLADA_VERTICES_STRUCTURE "vertices" -#define COLLADA_POLYGONS_STRUCTURE "polygons" -#define COLLADA_POLYLIST_STRUCTURE "polylist" -#define COLLADA_TRIANGLES_STRUCTURE "triangles" -#define COLLADA_P_STRUCTURE "p" -#define COLLADA_ANIMATION_STRUCTURE "animation" -#define COLLADA_CONTROLLER_STRUCTURE "controller" -#define COLLADA_SKIN_STRUCTURE "skin" -#define COLLADA_COMBINER_STRUCTURE "combiner" -#define COLLADA_JOINTS_STRUCTURE "joints" -#define COLLADA_VALUE_STRUCTURE "v" -#define COLLADA_MATERIAL_STRUCTURE "material" -#define COLLADA_SHADER_STRUCTURE "shader" -#define COLLADA_PASS_STRUCTURE "pass" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_TEXTURE_STRUCTURE "texture" -#define COLLADA_IMAGE_STRUCTURE "image" -#define COLLADA_INPUT_STRUCTURE "input" -#define COLLADA_TECHNIQUE_STRUCTURE "technique" -#define COLLADA_SOURCE_STRUCTURE "source" -#define COLLADA_ACCESSOR_STRUCTURE "accessor" -#define COLLADA_EXTRA_STRUCTURE "extra" -#define COLLADA_BOUNDINGBOX_STRUCTURE "boundingbox" -#define COLLADA_MIN_STRUCTURE "min" -#define COLLADA_MAX_STRUCTURE "max" - -#define COLLADA_ARRAY_STRUCTURE "array" -#define COLLADA_FLOAT_ARRAY_STRUCTURE "float_array" -#define COLLADA_INT_ARRAY_STRUCTURE "int_array" -#define COLLADA_NAME_ARRAY_STRUCTURE "Name_array" -#define COLLADA_IDREF_ARRAY_STRUCTURE "IDREF_array" -#define COLLADA_BOOL_ARRAY_STRUCTURE "bool_array" - -#define COLLADA_SAMPLER_STRUCTURE "sampler" -#define COLLADA_CHANNEL_STRUCTURE "channel" -#define COLLADA_CAMERA_STRUCTURE "camera" -#define COLLADA_LIGHT_STRUCTURE "light" -#define COLLADA_OPTICS_STRUCTURE "optics" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_PARAMETER_STRUCTURE "param" - -#define COLLADA_TYPE_PROPERTY "type" -#define COLLADA_ID_PROPERTY "id" -#define COLLADA_SUBID_PROPERTY "sid" -#define COLLADA_NAME_PROPERTY "name" -#define COLLADA_LAYER_PROPERTY "layer" -#define COLLADA_COUNT_PROPERTY "count" -#define COLLADA_STRIDE_PROPERTY "stride" -#define COLLADA_URL_PROPERTY "url" -#define COLLADA_SEMANTIC_PROPERTY "semantic" -#define COLLADA_SOURCE_PROPERTY "source" -#define COLLADA_TARGET_PROPERTY "target" -#define COLLADA_PROFILE_PROPERTY "profile" -#define COLLADA_MATERIAL_PROPERTY "material" -#define COLLADA_METER_PROPERTY "meter" -#define COLLADA_IDX_PROPERTY "idx" -#define COLLADA_SET_PROPERTY "set" -#define COLLADA_OFFSET_PROPERTY "offset" -#define COLLADA_FLOW_PROPERTY "flow" -#define COLLADA_FORMAT_PROPERTY "format" -#define COLLADA_HEIGHT_PROPERTY "height" -#define COLLADA_WIDTH_PROPERTY "width" -#define COLLADA_DEPTH_PROPERTY "depth" -#define COLLADA_REF_PROPERTY "ref" - -#define COLLADA_GEOMETRY_LIBRARY_TYPE "GEOMETRY" -#define COLLADA_CONTROLLER_LIBRARY_TYPE "CONTROLLER" -#define COLLADA_ANIMATION_LIBRARY_TYPE "ANIMATION" -#define COLLADA_MATERIAL_LIBRARY_TYPE "MATERIAL" -#define COLLADA_TEXTURE_LIBRARY_TYPE "TEXTURE" -#define COLLADA_IMAGE_LIBRARY_TYPE "IMAGE" -#define COLLADA_LIGHT_LIBRARY_TYPE "LIGHT" -#define COLLADA_CAMERA_LIBRARY_TYPE "CAMERA" - -#define COLLADA_LAMBERT_SHADER_TYPE "LAMBERT" -#define COLLADA_PHONG_SHADER_TYPE "PHONG" -#define COLLADA_CONSTANT_SHADER_TYPE "CONSTANT" - -#define COLLADA_NAME_TYPE "name" -#define COLLADA_IDREF_TYPE "IDREF" -#define COLLADA_FLOAT_TYPE "float" -#define COLLADA_BOOL_TYPE "bool" -#define COLLADA_INT_TYPE "int" -#define COLLADA_FLOAT3_TYPE "float3" -#define COLLADA_FLOAT4_TYPE "float4" -#define COLLADA_FUNCTION_TYPE "function" -#define COLLADA_MATRIX_TYPE "float4x4" -#define COLLADA_STRING_TYPE "string" - -#define COLLADA_JOINT_NODE_TYPE "JOINT" -#define COLLADA_NODE_NODE_TYPE "NODE" - -#define COLLADA_TEXTURE_SEMANTIC "TEXTURE" -#define COLLADA_IMAGE_SEMANTIC "IMAGE" -#define COLLADA_INPUT_SEMANTIC "INPUT" -#define COLLADA_OUTPUT_SEMANTIC "OUTPUT" -#define COLLADA_IN_TANGENT_SEMANTIC "IN_TANGENT" -#define COLLADA_OUT_TANGENT_SEMANTIC "OUT_TANGENT" -#define COLLADA_INTERPOLATION_SEMANTIC "INTERPOLATION" -#define COLLADA_JOINT_SEMANTIC "JOINT" -#define COLLADA_BIND_POSITION_SEMANTIC "BIND_SHAPE_POSITION" -#define COLLADA_BIND_NORMAL_SEMANTIC "BIND_SHAPE_NORMAL" -#define COLLADA_JOINT_AND_WEIGHT_SEMANTIC "JOINTS_AND_WEIGHTS" -#define COLLADA_BIND_MATRIX_SEMANTIC "INV_BIND_MATRIX" -#define COLLADA_JOINT_PARAMETER "JOINT" -#define COLLADA_WEIGHT_PARAMETER "WEIGHT" -#define COLLADA_MORPH_TARGET_SEMANTIC "MORPH_TARGET" -#define COLLADA_MORPH_WEIGHT_SEMANTIC "MORPH_WEIGHT" - -#define COLLADA_GENERIC_TECHNIQUE "COMMON" - -#define COLLADA_TIME_TARGET "TIME" - -#define COLLADA_VERTEX_INPUT "VERTEX" -#define COLLADA_POSITION_INPUT "POSITION" -#define COLLADA_NORMAL_INPUT "NORMAL" -#define COLLADA_COLOR_INPUT "COLOR" -#define COLLADA_MAPPING_INPUT "UV" -#define COLLADA_TEXCOORD_INPUT "TEXCOORD" -#define COLLADA_TEXTANGENT_INPUT "TEXTANGENT" -#define COLLADA_TEXBINORMAL_INPUT "TEXBINORMAL" - -#define COLLADA_LIGHT_INTENSITY_PARAMETER_14 "intensity" -#define COLLADA_LIGHT_PENUMBRA_ANGLE_PARAMETER_14 "penumbra_angle" -#define COLLADA_LIGHT_DROPOFF_PARAMETER "dropoff" - -#define COLLADA_CAMERA_YFOV_PARAMETER "YFOV" -#define COLLADA_CAMERA_ZNEAR_PARAMETER "ZNEAR" -#define COLLADA_CAMERA_ZFAR_PARAMETER "ZFAR" -#define COLLADA_CAMERA_ORTHO_BOTTOM_PARAMETER "BOTTOM" -#define COLLADA_CAMERA_ORTHO_TOP_PARAMETER "TOP" -#define COLLADA_CAMERA_ORTHO_LEFT_PARAMETER "LEFT" -#define COLLADA_CAMERA_ORTHO_RIGHT_PARAMETER "RIGHT" - -#define COLLADA_TEXTURE_WRAPU_PARAMETER "wrapU" -#define COLLADA_TEXTURE_WRAPV_PARAMETER "wrapV" -#define COLLADA_TEXTURE_MIRRORU_PARAMETER "mirrorU" -#define COLLADA_TEXTURE_MIRRORV_PARAMETER "mirrorV" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER "BLEND_MODE" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER_14 "blend_mode" -#define COLLADA_TEXTURE_REPEATU_PARAMETER "repeatU" -#define COLLADA_TEXTURE_REPEATV_PARAMETER "repeatV" - -#define COLLADA_CONSTANT_FUNCTION "CONSTANT" -#define COLLADA_LINEAR_FUNCTION "LINEAR" -#define COLLADA_QUADRATIC_FUNCTION "QUADRATIC" - -#define COLLADA_INTERPOLATION_TYPE_LINEAR "LINEAR" -#define COLLADA_INTERPOLATION_TYPE_BEZIER "BEZIER" -#define COLLADA_INTERPOLATION_TYPE_CARDINAL "CARDINAL" -#define COLLADA_INTERPOLATION_TYPE_HERMITE "HERMITE" -#define COLLADA_INTERPOLATION_TYPE_BSPLINE "BSPLINE" -#define COLLADA_INTERPOLATION_TYPE_STEP "STEP" - -#define COLLADA_X_UP "X_UP" -#define COLLADA_Y_UP "Y_UP" -#define COLLADA_Z_UP "Z_UP" - -#define COLLADA_IN_FLOW "IN" -#define COLLADA_OUT_FLOW "OUT" -#define COLLADA_INOUT_FLOW "INOUT" - -// Obsolete, but kept here for backward compatibility. -#define COLLADA_RGB_TYPE "ColorRGB" // use float3 instead -#define COLLADA_RGBA_TYPE "ColorRGBA" // use float4 instead -#define COLLADA_RGB_INPUT "COLORRGB" // beta MAX exporter has been known to generate them -#define COLLADA_RGBA_INPUT "COLORRGBA" // beta MAX exporter has been known to generate them - -// Physics extension. Currently in prototype phase. -#define COLLADA_PHYSICS_LIBRARY_TYPE "PHYSICS" -#define COLLADA_SHAPE_STRUCTURE "shape" -#define COLLADA_RIGID_BODY_STRUCTURE "rigidbody" -#define COLLADA_DYNAMIC_STRUCTURE "dynamic" -#define COLLADA_MASS_STRUCTURE "mass" -#define COLLADA_PHYSICS_MATERIAL_STRUCTURE "physics_material" -#define COLLADA_STATIC_FRICTION_ATTRIBUTE "STATIC_FRICTION" -#define COLLADA_DYNAMIC_FRICTION_ATTRIBUTE "DYNAMIC_FRICTION" -#define COLLADA_ELASTICITY_ATTRIBUTE "ELASTICITY" -#define COLLADA_BOX_STRUCTURE "box" -#define COLLADA_SPHERE_STRUCTURE "sphere" -#define COLLADA_CAPSULE_STRUCTURE "capsule" -#define COLLADA_CYLINDER_STRUCTURE "cylinder" -#define COLLADA_ELLIPSOID_STRUCTURE "ellipsoid" -#define COLLADA_SIZE_STRUCTURE "size" -#define COLLADA_RADIUS_STRUCTURE "radius" -#define COLLADA_PHYSICS_ENVIRONMENT_STRUCTURE "physics_environment" -#define COLLADA_ENVIRONMENT_ID "Environment" -#define COLLADA_TIMESTEP_ATTRIBUTE "TIMESTEP" -#define COLLADA_GRAVITY_ATTRIBUTE "gravity" -#define COLLADA_INITIAL_VELOCITY_STRUCTURE "initial_velocity" -#define COLLADA_INITIAL_ANGULAR_VELOCITY_STRUCTURE "initial_angular_velocity" -#define COLLADA_CONVEX_MESH_STRUCTURE "convex_mesh" -#define COLLADA_INERTIA_STRUCTURE "inertia" -#define COLLADA_DENSITY_STRUCTURE "density" -#define COLLADA_CENTER_OF_MASS_STRUCTURE "center_of_mass" -#define COLLADA_DYNAMICS_STRUCTURE "dynamics" -#define COLLADA_RIGID_CONSTRAINT_STRUCTURE "rigid_constraint" -#define COLLADA_BODY_PROPERTY "body" -#define COLLADA_ATTACHMENT_STRUCTURE "attachment" -#define COLLADA_ROT_LIMIT_MIN_STRUCTURE "rot_limit_min" -#define COLLADA_ROT_LIMIT_MAX_STRUCTURE "rot_limit_max" -#define COLLADA_TRANS_LIMIT_MIN_STRUCTURE "trans_limit_min" -#define COLLADA_TRANS_LIMIT_MAX_STRUCTURE "trans_limit_max" -#define COLLADA_ENABLED_STRUCTURE "enabled" -#define COLLADA_INTERPENETRATE_STRUCTURE "interpenetrate" -#define COLLADA_SPRING_STRUCTURE "spring" -#define COLLADA_STIFFNESS_STRUCTURE "stiffness" -#define COLLADA_DAMPING_STRUCTURE "damping" -#define COLLADA_REST_LENGTH_STRUCTURE "rest_length" -#define COLLADA_P0_STRUCTURE "p0" -#define COLLADA_P1_STRUCTURE "p1" -#define COLLADA_TRUE_KEYWORD "TRUE" -#define COLLADA_FALSE_KEYWORD "FALSE" - -#define COLLADA_LINES_STRUCTURE "lines" -#define COLLADA_LINESTRIP_STRUCTURE "linestrips" -#define COLLADA_TRIFANS_STRUCTURE "trifans" -#define COLLADA_TRISTRIPS_STRUCTURE "tristrips" - -// Extensions - -// Feeling Software ColladaMaya extensions -#define COLLADA_MAYA_PROFILE "MAYA" - -#define COLLADA_MAYA_LAYER_ELEMENT "layer" - -// Feeling Software ColladaMax extensions -#define COLLADA_MAX3D_PROFILE "MAX3D" - -#define COLLADA_MAX3D_FRAMERATE_ELEMENT "frame_rate" - -// Feeling Software FCollada extensions -#define COLLADA_FCOLLADA_PROFILE "FCOLLADA" - -#define COLLADA_FCOLLADA_STARTTIME_ELEMENT "start_time" -#define COLLADA_FCOLLADA_ENDTIME_ELEMENT "end_time" -#define COLLADA_FCOLLADA_VISIBILITY_ELEMENT "visibility" - -// XSI COLLADA extensions -#define COLLADA_XSI_PROFILE "XSI" - -#define COLLADA_XSI_VISIBILITY_ELEMENT "SI_Visibility" - -// FBX COLLADA extensions -#define COLLADA_FBX_PROFILE "FBX" - -#define COLLADA_FBX_TARGET_ELEMENT "target" - -// NVidia FXComposer extension -----------------------------------------------// - -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE "NVIDIA_FXCOMPOSER" - -#define COLLADA_NVIDIA_FXCOMPOSER_IMPORT_ELEMENT "import" -#define COLLADA_NVIDIA_FXCOMPOSER_URL_ATTRIBUTE "url" -#define COLLADA_NVIDIA_FXCOMPOSER_COMPILER_OPTIONS_ATTRIBUTE "compiler_options" -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE_ATTRIBUTE "profile" - -#endif /* _FBXSDK_FILEIO_COLLADA_TOKENS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h deleted file mode 100644 index 29b62d8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h +++ /dev/null @@ -1,394 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladautils.h -#ifndef _FBXSDK_FILEIO_COLLADA_UTILS_H_ -#define _FBXSDK_FILEIO_COLLADA_UTILS_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyCollada : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyCollada(); - virtual ~FbxRenamingStrategyCollada(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName = false); -}; - - -#ifndef INT_MAX - #define INT_MAX 0x7FFFFFFF -#endif - -#ifndef CENTIMETERS_TO_INCHES - #define CENTIMETERS_TO_INCHES 2.54f -#endif - -#ifndef RADIANS_TO_DEGREES - #define RADIANS_TO_DEGREES 57.295799f -#endif - -enum DAE_Flow { kCOLLADAFlowIn, kCOLLADAFlowOut, kCOLLADAFlowInOut }; - -const int MATRIX_STRIDE = 16; -const int VECTOR_STRIDE = 3; - -#define COLLADA_ID_PROPERTY_NAME "COLLADA_ID" - -class XmlNodeDeletionPolicy -{ -public: - static inline void DeleteIt(xmlNode ** ptr) - { - if (*ptr != NULL) - { - xmlFreeNode(*ptr); - *ptr = NULL; - } - } -}; - -typedef FbxAutoPtr XmlNodePtr; -typedef FbxMap< FbxString, xmlNode* > SourceElementMapType; -typedef FbxMap< FbxString, xmlNode* > SkinMapType; - -// Some information connecting COLLADA layer string, such as "NORMAL" or "UV", to FBX layer element type. -struct ColladaLayerTraits -{ - ColladaLayerTraits() - : mLayerType(FbxLayerElement::eUnknown), mLayerElementLength(0) {} - - ColladaLayerTraits(FbxLayerElement::EType pType, int pLength) - : mLayerType(pType), mLayerElementLength(pLength) {} - - // Type of FBX element layer - FbxLayerElement::EType mLayerType; - // Count of double of each element in FBX element layer - int mLayerElementLength; - - /** Construct traits according to COLLADA layer string. - * \param pLabel COLLADA layer string. - * \return Return created traits. - */ - static const ColladaLayerTraits GetLayerTraits(const FbxString & pLabel); -}; - -/** Emit error message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pErrorMessage The message to be presented. - */ -void DAE_AddNotificationError(const FbxManager * pSdkManger, const FbxString & pErrorMessage); - -/** Emit warning message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pWarningMessage The message to be presented. - */ -void DAE_AddNotificationWarning(const FbxManager * pSdkManger, const FbxString & pWarningMessage); - -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxStringList& arr); - -// Syntax modification - for COLLADA 1.4 -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& accessorParams, FbxArray& arr, bool isCommonProfile=true); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& arr, const char* type, bool isCommonProfile=true); - - -void DAE_ExportSourceArray(xmlNode* sourceNode, const char* id, FbxArray& arr); -void DAE_ExportSourceArray14(xmlNode* sourceNode, const char* id, FbxArray& arr); - -xmlNode* DAE_ExportAccessor(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); -xmlNode* DAE_ExportAccessor14(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); - -void DAE_AddXYZAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddFlow(xmlNode* node, DAE_Flow flow); -void DAE_AddXYZAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); - -// AddParameter functions for COLLADA 1.3. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value, DAE_Flow flow); - -// Overload functions without DAE_Flow, for COLLADA 1.4. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxDouble3& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value); -xmlNode* DAE_AddTechnique(xmlNode* parentXmlNode, const char* technique); -void DAE_AddInput(xmlNode* parentXmlNode, const char* semantic, const char* source, int idx = -1); -void DAE_AddInput14(xmlNode* parentXmlNode, const char* semantic, const char* source, int offset = -1, int set=-1); - -FbxString matrixToString(const FbxAMatrix& mx); - -typedef FbxArray CNodeList; - -/** Find children elements whose type is included in a list of type. - * \param pParentElement The parent element. - * \param pTypes The list of types. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const FbxSet& pTypes, CNodeList& pChildrenElements); - -/** Find children elements of a specific type. - * \param pParentElement The parent element. - * \param pType The type. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const char * pType, CNodeList& pChildrenElements); - -xmlNode* getSourceAccessor(xmlNode* sourceNode); -xmlNode* getTechniqueNode(xmlNode* parent, const char * profile); - -// Conversions -inline double inchesToCentimeters(double val) { return FbxFloor(val / CENTIMETERS_TO_INCHES * 100000) / 100000; } -inline double centimetersToInches(double val) { return FbxFloor(val * CENTIMETERS_TO_INCHES * 100000) / 100000; } - -inline double degreesToRadians(double val) { return FbxFloor(val / RADIANS_TO_DEGREES * 100000) / 100000; } -inline double radiansToDegrees(double val) { return FbxFloor(val * RADIANS_TO_DEGREES * 100000) / 100000; } - -/** Find a child element with a given attribute value. - * \param pParentElement The parent element. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \param pDefaultAttributeValue The default value of the attribute used when the attribute is not found explicitly. - * \return Return NULL if no child element has the given attribute value. - */ -xmlNode* DAE_FindChildElementByAttribute(xmlNode* pParentElement, const char * pAttributeName, - const char * pAttributeValue, const char * pDefaultAttributeValue = ""); - -/** Find a child element with a given tag. - * \param pParentElement The parent element. - * \param pTag The value of the tag. - * \param pFindFrom Find from the next child after pFindFrom if pFindFrom is not NULL. - * \return Return NULL if no child element has the given tag. - */ -xmlNode* DAE_FindChildElementByTag(xmlNode* pParentElement, const char * pTag, xmlNode* pFindFrom = NULL); - -/** Get the content of a XML element. - * \param pElement The element whose content is returned. - * \param pData The returned data. - */ -template -void DAE_GetElementContent(xmlNode * pElement, TYPE & pData) -{ - if (pElement != NULL) - { - xmlChar* lContent = xmlNodeGetContent(pElement); - if (lContent) - { - FromString(&pData, (const char *)lContent); - xmlFree(lContent); - } - } -} - -/** Check whether this node is compatible to FBX transform structure. - * \param pNodeElement The specific node element. - * \return Return true if it is compatible. - */ -bool DAE_CheckCompatibility(xmlNode * pNodeElement); - -/** Get the tag of the specific element. - * \param pElement The specific element. - * \param pTag Return the tag of the element. - */ -void DAE_GetElementTag(xmlNode * pElement, FbxString & pTag); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \return The value of the attribute in the form of a string. If the attribute is not available, an empty string is returned. - */ -const FbxString DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \param pData The returned data. - * \return Return \c true on success and \c false if no attribute has the given name. - */ -template -bool DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName, TYPE & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue = xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - FromString(&pData, (const char *)lPropertyValue); - xmlFree(lPropertyValue); - return true; - } - return false; -} - -// Special instantiation for string; -// Omit the whitespaces, just return the whole string -template <> -inline bool DAE_GetElementAttributeValue(xmlNode * pElement, - const char * pAttributeName, - FbxString & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue =xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - pData = (const char *)lPropertyValue; - xmlFree(lPropertyValue); - return true; - } - return false; -} - -/** Compare the value of specific attribute of specific element with given value. - * \param pElement The specific element. - * \param pAttributeName The name of the specific attribute. - * \param pValue The value to compare with. - * \return Return true if values equal. - */ -bool DAE_CompareAttributeValue(xmlNode * pElement, - const char * pAttributeName, - const char * pValue); - -/** Get the ID of another element from the url attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \param pExternalRef The external reference part of the url (before the #) - * \return The ID of another element if success, or an empty string if no url attributes are found. - */ -const FbxString DAE_GetIDFromUrlAttribute(xmlNode * pElement, FbxString& pExternalRef); - -/** Get the ID of another element from the source attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no source attributes are found. - */ -const FbxString DAE_GetIDFromSourceAttribute(xmlNode * pElement); - -/** Get the ID of another element from the target attribute of the given element. - * Note that in target attribute, the URI identifier may or may not preceded with the pound sign. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no target attributes are found. - */ -const FbxString DAE_GetIDFromTargetAttribute(xmlNode * pElement); - -/** Set the name of the object with a given name. If the name is empty, use the ID. - * \param pObject The object whose name is to be set. - * \param pName The name string. - * \param pID The ID string. - */ -void DAE_SetName(FbxObject * pObject, const FbxString & pName, const FbxString & pID); - -/** Get the COLLADA source element with a semantic meaning and a consumer element; - * The COLLADA input element declares the input connections to a data source that a consumer requires. - * A data source is a container of raw data that lacks semantic meaning so that the data can be reused within the - * document. To use the data, a consumer declares a connection to it with the desired semantic information. - * \param pConsumerElement A consumer element, like sampler element in animation system or joints element in controller system. - * \param pSemantic A semantic meaning, like "INPUT", "OUTPUT" or "INTERPOLATION" in animation system. - * \param pSourceElements The container of raw data. - * \return Return \c NULL is failed. - */ -xmlNode * DAE_GetSourceWithSemantic(xmlNode * pConsumerElement, const char * pSemantic, - const SourceElementMapType & pSourceElements); - -/** Add a child element with specific content. - * \param pParentElement The parent element. - * \param pTag The tag string of the new child element. - * \param pContent The content of the child element. - * \return The created child element. - */ -template -xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag, - const T & pContent) -{ - const FbxString lRepr = ToString(pContent); - return xmlNewChild(pParentElement, NULL, (xmlChar *)pTag, - (xmlChar *)lRepr.Buffer()); -} - -// Create a child element with empty content. -inline xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag) -{ - return DAE_AddChildElement(pParentElement, pTag, FbxString()); -} - -// Create a new element with empty content. -inline xmlNode * DAE_NewElement(const char * pTag) -{ - return xmlNewNode(NULL, reinterpret_cast(const_cast(pTag))); -} - -/** Add an attribute for a element. - * \param pElement The element where the attribute is added. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \return The created attribute. - */ -template -xmlAttr * DAE_AddAttribute(xmlNode * pElement, const FbxString & pAttributeName, - const T & pAttributeValue) -{ - const FbxString lRepr = ToString(pAttributeValue); - return xmlNewProp(pElement, (xmlChar *)pAttributeName.Buffer(), - (xmlChar *)lRepr.Buffer()); -} - -/** Import a COLLADA unit element into a FBX system unit. - * \param pUnitElement The COLLADA unit element. - * \return The created FBX system unit. - */ -const FbxSystemUnit DAE_ImportUnit(xmlNode * pUnitElement); - -/** If the specific node has animation on its local translation, increase every key by the offset. - * \param pNode The specific node. - * \param pOffset The specific offset value. - */ -void IncreaseLclTranslationAnimation(FbxNode * pNode, FbxDouble3 & pOffset); - -/** Search the elements with given tag, push the found results to the end of the given array. - * \param pBaseElement Search from this element. - * \param pTag The given tag. - * \param pResult The array to return the found results. - */ -void RecursiveSearchElement(xmlNode * pBaseElement, const char * pTag, FbxArray & pResult); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_UTILS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h deleted file mode 100644 index d0a43b2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h +++ /dev/null @@ -1,557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreadercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_READER_H_ -#define _FBXSDK_FILEIO_COLLADA_READER_H_ - -#include - -#include -#include - -#include - - -/** Class to read a Collada file and import it to a FBX scene. - * - * Some terms about COLLADA (from the spec of the COLLADA). - * - * Element: An XML document consists primarily of elements. An element is a block of information that is - * bounded by tags at the beginning and end of the block. Elements can be nested, producing a hierarchical - * data set. - * - * Tag: Each XML element begins with a start tag and ends with an end tag. - * - * Attribute: An XML element can have zero or more attributes. Attributes are given within the start tag and - * follow the tag name. Each attribute is a name-value pair. The value portion of an attribute is always - * surrounded by quotation marks (" "). Attributes provide semantic information about the element on which - * they are bound. - * For example: - * \code - * - * \endcode - * - * URI Addressing: Refers to the id attribute of an element. Used in url, source or target attributes. - * In a url, source or target attribute, the URI fragment identifier is preceded with the pound sign ("#"). - * - * Markup and Content: The characters which make up an XML document are divided into markup and content. - * Markup and content may be distinguished by the application of simple syntactic rules. - * All strings which constitute markup either begin with the character "<" and end with a ">", - * or begin with the character "&" and end with a ";". - * Strings of characters which are not markup are content. - * \nosubgrouping - */ -class FbxReaderCollada : public FbxReader -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReaderCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxReaderCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is opened. - */ - virtual bool FileOpen(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Read Functions - */ - //@{ - - /** Get Collada import options settings. - * \param pParseFileAsNeeded whether parse file as needed, the default value is true. - * \return true - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true){ return true; } - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Read from Collada file and import it to the FBX document, according to the given options settings. - * \param pDocument FBX Document to import. - * \return true on success, false otherwise. - */ - virtual bool Read(FbxDocument* pDocument); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Import Functions - */ - //@{ - - /** Import Collada XML nodes tree to FBX scene. - * \param pScene The FBX scene object. - * \param pXmlNode The XML Node to import, it should be the root of Collada nodes tree. - * \return true on success, false otherwise. - */ - bool ReadCollada(FbxScene &pScene, xmlNode* pXmlNode); - - /** Import a Collada visual_scene element to the given FBX scene. - * \param pXmlNode The COLLADA visual_scene element. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualScene(xmlNode* pXmlNode, FbxScene * pScene); - - /** Import a Collada visual_scene MAX3D extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAX3D. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMax3DExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene FCOLLADA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneFCOLLADAExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene MAYA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAYA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMayaExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import Collada asset element. - * \param pXmlNode The XML Node, asset is read from pXmlNode and its children. - * \param pGlobalSettings The FBX global settings. - * \param pSceneInfo The FBX scene information object. - * \return Return true if asset is imported successfully. - * \remarks Imported asset has following contents: - * Axis System, system Unit, author, comments, title, subject, keywords, revision, etc. - */ - bool ImportAsset(xmlNode* pXmlNode, FbxGlobalSettings & pGlobalSettings, FbxDocumentInfo &pSceneInfo); - - /** Import a COLLADA node element. - * If the COLLADA node element contains only one node attribute (node attribute means instance_geometry, - * instance_camera, instance_light and instance_controller), node attribute will be attached directly under the node; - * If not, one child node will be created for each node attribute except the first one. - * \param pXmlNode The COLLADA node element. - * \return The created node and return \c NULL if failed. - */ - FbxNode * ImportNode(xmlNode* pXmlNode); - - /** Import a COLLADA node FCOLLADA extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFCOLLADAExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node XSI extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile XSI. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeXSIExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node FBX extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FBX. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFBXExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA geometry element. - * \param pGeometryID The COLLADA geometry ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \return The created geometry object and return \c NULL if failed. - * \remarks Except mesh, other types of geometry are not supported now. - */ - FbxGeometry * ImportGeometry(const FbxString & pGeometryID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA skin element. - * \param pSkinElement The COLLADA skin element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportSkin(xmlNode* pSkinElement); - - /** Import a COLLADA morph element or morphs recursively. - * \param pXmlNode The COLLADA morph element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportMorph(xmlNode * pMorphElement, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA controller element. - * \param pXmlNode The COLLADA controller ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportController(const FbxString & pControllerID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA camera element. - * \param pXmlNode The COLLADA camera element. - * \return The created camera object and return \c NULL if failed. - * \remarks Camera parameters will also be imported, such as FOV, aspect ratio, etc. - */ - FbxCamera * ImportCamera(xmlNode* pXmlNode); - - /** Import a COLLADA light element. - * \param pXmlNode The COLLADA light element. - * \return The created light object and return \c NULL if failed. - * Following types of light are supported now: ambient light, directional light, point light, and spot light. - */ - FbxLight * ImportLight(xmlNode* pXmlNode); - - /** Import a COLLADA material element. - * \param pXmlNode The COLLADA material element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportMaterial(xmlNode* pXmlNode); - - /** Import a COLLADA effect element. - * \param pEffectElement The COLLADA effect element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffect(xmlNode* pEffectElement); - - /** Import a COLLADA effect NVIDIA_FXCOMPOSER extension. - * \param pXmlNode The COLLADA technique element with profile - * NVIDIA_FXCOMPOSER. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffectNVidiaExtension(xmlNode * pEffectElement); - - /** Import a COLLADA texture element. - * \param pXmlNode The COLLADA texture element. - * \return The created texture object and return \c NULL if failed. - * \remarks Following types of texture are supported now: ambient, diffuse, emission, reflective, specular, transparent. - */ - FbxFileTexture * ImportTexture(xmlNode* pXmlNode); - - /** Import a COLLADA image element. - * \param pXmlNode The COLLADA image element. - * \return The created texture object and return \c NULL if failed. - */ - FbxFileTexture * ImportImage(xmlNode* pXmlNode); - - /** Import a COLLADA mesh element. - * If this mesh element contains polygons, polygon list or triangles elements, a FBX mesh will be created. - * If it contains lines or line strips elements, a FBX line will be created. - * \param pXmlNode The COLLADA mesh element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \param pObjects List of all the created objects. If this mesh contains lines or line strips as well as - * the polymesh, the array will be filled with: [mesh, line, line strip] - * \return The created geometry object and return \c NULL if failed. - */ - FbxGeometry * ImportMesh(xmlNode* pXmlNode, const FbxDynamicArray & pMaterialSequence, FbxArray& pObjects); - - /** Import a COLLADA vertices element. - * \param pVerticesElement The COLLADA vertices element. - * \param pGeometry The FBX geometry object to store the vertices. - * \return true on success, false otherwise. - * \remarks Besides vertex, the vertex colors and normals are also imported. - */ - bool ImportVertices(xmlNode* pVerticesElement, FbxGeometry * pGeometry); - - /** Import polygons of Collada mesh node to FBX mesh node. - * \param pXmlNode Pointer to XML mesh Node. - * \param pMesh The FBX mesh object. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the mesh. - * \return true on success, false otherwise. - * \remarks Vertex colors, normals, UVs, textures and materials which related to polygons, are also imported. - */ - bool ImportPolygons(xmlNode* pXmlNode, FbxMesh& pMesh, const FbxDynamicArray & pMaterialSequence); - - /** Import the transformation of Collada node to FBX node. - * \param pXmlNode Pointer to XML Node. - * \param pNode The FBX node. - * \return true on success, false otherwise. - * \remarks Transformation will cover matrix, translation, rotation, scale, skew, perspective, etc. - */ - bool ImportTransforms(xmlNode* pXmlNode, FbxNode* pNode); - - /** Import a COLLADA rotation element. - * \param pXmlNode The COLLADA rotation element. - * \param pRotationVector Vector4 value to return the rotation vector. - * \return Return the rotation axis index. - */ - int ImportRotationElement(xmlNode* pXmlNode, FbxVector4& pRotationVector); - - /** Extrapolate rotation order by the given int list. - * \param pNode The node whose rotation order is updated. - * \param pRotationOrder The int list representing the rotation order. - */ - void SetRotationOrder(FbxNode * pNode, const FbxArray & pRotationOrder); - - /** Import Collada look at node, and computed camera position, interest, up vector, etc. - * \param pXmlNode Pointer to XML look at Node. - * \param lCameraPosition Vector4 value to return camera position. - * \param lInterestPosition Vector4 value to return camera interest position. - * \param lUpVector Vector4 value to return camera up vector. - * \param lCameraTransformMatrix XMatrix value to return camera transform matrix. - * \return true on success, false otherwise. - * \remarks Computed camera parameters are saved in lCameraPosition, lInterestPosition, lUpVector, lCameraTransformMatrix. - */ - bool ImportLookAt(xmlNode* pXmlNode, FbxVector4& lCameraPosition, - FbxVector4& lInterestPosition, FbxVector4& lUpVector, - FbxAMatrix& lCameraTransformMatrix); - - //@} - - - /** - * \name Miscellaneous Functions - */ - //@{ - - /** Return false if we do not want to import a node with the given ID. - * \param lId The node ID. - * \return true for importable, false for in-importable. - * \remarks Do not import camera nodes with IDs (perspective, top, bottom, - * left, right, side, front or back), since they are global cameras already created in FBX. - */ - bool IsNodeExportable(FbxString lId); - - /** Check if the Collada version is 1.4.*. - * \param pVersionString The string representing the COLLADA version, like "1.4.1". - * \return \c true if the Collada version is 1.4.* or \c false otherwise. - */ - bool CheckColladaVersion(const FbxString & pVersionString); - - //@} - - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - //@} - - /** Import the whole scene from the root element of a COLLADA file. - * This is the main entry of COLLADA reader. - * \param pColladaNode The root element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportScene(xmlNode * pColladaNode); - - /** Preprocess the COLLADA scene. - * \param pColladaElement The root element of COLLADA scene. - */ - void Preprocess(xmlNode * pColladaElement); - - /** Build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - */ - void BuildUpLibraryMap(); - - /** Recursively build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - * /param pElement The parent element which may contain target elements. - * /param pElementTag The tag of target elements. - */ - void BuildUpLibraryMap(xmlNode * pElement, const FbxString & pElementTag); - - /** Retrieve the material map from the bind_material element under an instance_geometry or instance_controller. - * And connected the created materials to the node. - * \param pNode The node to which the materials connect. - * \param pElement The COLLADA instance_goemetry or instance_controller element. - * \param pMaterialSequence The ordered material symbols which is used to create geometries. - * \return Return \c true on success and \c false otherwise. - */ - bool ConnectMaterialsToNode(FbxNode * pNode, xmlNode * pElement, FbxDynamicArray & pMaterialSequence); - - /** Import COLLADA transparent and transparency attributes in a COLLADA effect element. - * \param pElement A COLLADA Lambert, Phong, constant or Blinn element. - * \param pSurfaceMaterial A FBX surface material. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportTransparent(xmlNode * pElement, FbxSurfaceLambert * pSurfaceMaterial); - - // Some traits with a typed element. - struct LibraryTypeTraits - { - FbxString library_tag; - FbxString element_tag; - }; - - /** Get a typed element from the library element with a given ID. - * \param pTypeTraits The traits of type. - * \param pID The ID of the element. - * \return The FBX object. - */ - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, const FbxString & pID); - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, xmlNode * pElement); - - /** Import the transform animation of a given node. - * \param pNode The node whose transform to be animated. - * \pAnimationChannelID The ID of animation element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportMatrixAnimation(FbxNode * pNode, const FbxString & pAnimationChannelID); - - /** Import the animation of a given attribute. - * \param pProperty The property to be animated. - * \param pAnimationChannelID The ID of animation element. - * \param pChannelName The channel name if the property has multiple channels. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportPropertyAnimation(FbxProperty & pProperty, const FbxString & pAnimationChannelID, const char * pChannelName = NULL); - - /** Get the animation layer to which the specific animation curve belongs. - * \param pAnimationID The ID of the animation curve. - * \return The animation layer. - */ - FbxAnimLayer * GetAnimLayer(const FbxString & pAnimationID); - - /** Import local unit conversion. - * \param pElement The specific element. - * \return Return the local unit conversion. - */ - double GetLocalUnitConversion(xmlNode * pElement); - - /** Set the value of the property. - * \param pPropertyElement The corresponding element. - * \param pProperty The specific property. - */ - void SetProperty(xmlNode* pPropertyElement, FbxProperty & pProperty); - - /** Create a property with given name and set the value. - * \param pObject The object as the parent of the property. - * \param pPropertyName The name of the property. - * \param pPropertyValueElement The element containing the value. - */ - void ImportPropertyValue(FbxObject * pObject, const char * pPropertyName, - xmlNode * pPropertyValueElement); - - FbxFile* mFileObject; - FbxString mFileName; - - // XML lib stuff - xmlDocPtr mXmlDoc; - - FbxAnimLayer* mAnimLayer; - FbxScene* mScene; - - // Save the global settings and document info in pre-reading - FbxGlobalSettings * mGlobalSettings; - FbxDocumentInfo * mDocumentInfo; - FbxArray mTakeInfo; - - xmlNode * mColladaElement; - - struct ColladaElementData - { - explicit ColladaElementData(xmlNode * pElement = NULL) - : mColladaElement(pElement), mFBXObject(NULL) {} - xmlNode * mColladaElement; - FbxObject * mFBXObject; - FbxArray mFBXObjects; - }; - typedef FbxMap ColladaElementMapType; - ColladaElementMapType mColladaElements; - - LibraryTypeTraits mEffectTypeTraits; - LibraryTypeTraits mMaterialTypeTraits; - LibraryTypeTraits mImageTypeTraits; - LibraryTypeTraits mGeometryTypeTraits; - LibraryTypeTraits mControllerTypeTraits; - LibraryTypeTraits mLightTypeTraits; - LibraryTypeTraits mCameraTypeTraits; - LibraryTypeTraits mNodeTypeTraits; - LibraryTypeTraits mAnimationTypeTraits; - - typedef FbxMap > AnimationMapType; - AnimationMapType mAnimationElements; - - SourceElementMapType mSourceElements; - - struct AnimationClipData - { - AnimationClipData(const FbxString & pID) : mID(pID), mAnimLayer(NULL) {} - AnimationClipData(const AnimationClipData& pOther){ *this = pOther; } - AnimationClipData& operator=(const AnimationClipData& pOther){ mID = pOther.mID; mAnimationElementIDs = pOther.mAnimationElementIDs; mAnimLayer = pOther.mAnimLayer; return *this; } - - FbxString mID; // ID of animation clip - FbxSet mAnimationElementIDs; // IDs of animation belong to this animation clip - FbxAnimLayer * mAnimLayer; // The corresponding animation layer - }; - FbxDynamicArray mAnimationClipData; - - // Map from skin ID to skin element. - SkinMapType mSkinElements; - - // There are two distinct namespaces for node ID & SID mapping. - // One with ID and the other with SID. - typedef FbxMap NodeMapType; - NodeMapType mIDNamespaceNodes; - NodeMapType mSIDNamespaceNodes; - - // Record the nodes which are to connect to its target node. - // Save the ID of the target node if a node has its target - typedef FbxMap TargetIDMapType; - TargetIDMapType mTargetIDs; - - FbxColladaNamespace mNamespace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_READER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h deleted file mode 100644 index 1674bd5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h +++ /dev/null @@ -1,570 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwritercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_WRITER_H_ -#define _FBXSDK_FILEIO_COLLADA_WRITER_H_ - -#include - -#include - -#include - -/** \brief Class to export FBX scene into a Collada file. -* \nosubgrouping -*/ -class FbxWriterCollada : public FbxWriter -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriterCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxWriterCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Create and open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is created and opened. - */ - virtual bool FileCreate(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Write Functions - */ - //@{ - - /** Get Collada export options settings. - */ - virtual void GetWriteOptions(){} - - /** Export the FBX document to Collada file, according to the given options settings. - * \param pDocument FBX Document to export. - * \return true on success, false otherwise. - */ - virtual bool Write(FbxDocument* pDocument); - - /** Process FBX scene before exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - * \remarks This function is processing name clash, special transformation conversion etc. - */ - virtual bool PreprocessScene(FbxScene &pScene); - - /** Process FBX scene after exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - */ - virtual bool PostprocessScene(FbxScene &pScene); - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Export Functions - */ - //@{ - - /** Export FBX scene info to Collada asset. - * \param pXmlNode the XML Node to export asset, asset nodes will be added as children to this XML node. - * \param pSceneInfo Pointer to the FBX scene information object. - * \return Return pointer to XML asset node. - * \remarks Asset here contains user-defined summary data, such as: - * contributor, author, authoring tool, created time, Axis System, etc. - */ - xmlNode* ExportAsset(xmlNode* pXmlNode, FbxDocumentInfo* pSceneInfo); - - /** Export FBX scene. - * \param pScene Pointer to the FBX scene object. - * \return The pointer to XML scene element. - */ - xmlNode * ExportScene(FbxScene* pScene); - - /** Export Libraries to the Collada document. - * \param pXmlNode Pointer to XML Node, it should be the asset node. - * \return Return true if all libraries are exported successfully. - * \remarks After the libraries are created, call this function to add libraries to the Collada document. - * Libraries are added as the siblings just after the given pXmlNode. - */ - bool ExportLibraries(xmlNode* pXmlNode); - - /** Export the given FBX node and its hierarchy to Collada XML nodes. - * \param pXmlNode Pointer to XML Node, created XML nodes hierarchy will be added as children to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode, - * this method is called recursively. - */ - xmlNode* ExportNodeRecursive(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export a Collada visual_scene MAX3D extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneMAX3DExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export a Collada visual_scene FCOLLADA extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneFCOLLADAExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export the given FBX node and its node attributes to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to the created XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNode(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export the given FBX node's default transformation. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if transformation is exported successfully. - * \remarks FBX node transformation info is exported to properties of pXmlNode and its children, - * according to the Collada transformation structures. - */ - bool ExportTransform(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export FBX node attributes, create different libraries according to different node attribute type. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if FBX node attributes is exported successfully, false otherwise. - * \remarks According to different FBX node attribute type, different libraries will be created, such as: - * light, camera, geometry. See more details in CreateMeshLibrary(FbxNode* pNode), CreateCameraLibrary(FbxNode* pNode), CreateLightLibrary(FbxNode* pNode). - */ - bool ExportNodeAttribute(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Create geometry library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh, or FbxNodeAttribute::eNurbs, or FbxNodeAttribute::ePatch. - * \return Return pointer to XML mesh library node. - * \remarks The returned XML node will be added to the geometry library, - * the geometry library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateMeshLibrary(const FbxNode* pNode); - - /** Create camera library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML camera library node. - * \remarks The returned XML node will be added to the camera library, - * the camera library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateCameraLibrary(const FbxNode* pNode); - - /** Create light library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML light library node. - * \remarks The returned XML node will be added to the light library, - * the light library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateLightLibrary(const FbxNode* pNode); - - /** Export the given FBX mesh node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh. - * \return Return pointer to XML mesh node. - * \remarks Vertex, polygons of the mesh will be exported. - * Textures, materials, controllers, and shapes which linked to the mesh will also be exported. - */ - xmlNode* ExportMesh(const FbxNode* pNode); - - /** Export the given shape's geometry to Collada XML node. - * \param pMeshShape, Pointer to FBX mesh, corresponding to shape. - * \param pShapeId, a string to identify shape from internal shape meshes list. - * \return Return pointer to XML shape geometry node. - * \remarks The geometry of shape will be exported, materials of shape will not be exported. - */ - xmlNode* ExportShapeGeometry(FbxMesh* pMeshShape, FbxString pShapeId); - - /** Export the given mesh's vertex position to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, position info of all the vertices of this mesh will be exported. - * \param pMeshName Name of the XML node to export, usually it's the name of FBX mesh node. - * \param pInGeometry True if vertices are inside an ordinary geometry, false if vertices are in a binded geometry. - * \param pExportControlPoints True if pMesh is an ordinary geometry, false if pMesh is a binded geometry. - * \return Return pointer to XML vertex position node, the returned XML node will be added as child to the given pXmlNode. - * \remarks In an ordinary geometry, pExportControlPoints should be true, export the position of the control points; - * in a binded geometry, pExportControlPoints should be false, export the position of the transformed control points. - */ - //Note why internally set pExportControlPoints to true? - xmlNode* ExportVertexPositions(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pMeshName, bool pInGeometry, bool pExportControlPoints); - - /** Export all layer elements of the given mesh to Collada XML node. - * \param pXmlMesh Pointer to XML Node, created XML layer elements nodes will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, all layer elements of this mesh node will be exported. - * \param pName String which used to construct the names of XML layer elements nodes. - * \return Return the modified pXmlMesh. - * \remarks Layer elements including Normals, UVs, Vertex Colors are covered, - * polygon groups and other undefined layer elements are NOT supported. - */ - xmlNode* ExportLayerElements(xmlNode* pXmlMesh, FbxMesh* pMesh, FbxString pName); - - /** Export Normals of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML Normals node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, normals layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML normals nodes. - * \param pExt Extension string which used to construct the names of XML normals nodes. - * \param pLayerIndex Specify an index of layers to export, normals of other layers will NOT be exported. - * \return Return pointer to XML Normals node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNormals(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, FbxString pExt, int pLayerIndex); - - /** Export UVs of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML UVs node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, UVs layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML UVs nodes. - * \param pLayerIndex Specify an index of layers to export, UVs of other layers will NOT be exported. - * \return Return pointer to XML UVs node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportUVs(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export VertexColors of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML VertexColors node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, VertexColors layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML VertexColors nodes. - * \param pLayerIndex Specify an index of layers to export, VertexColors of other layers will NOT be exported. - * \return Return pointer to XML VertexColors node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportVertexColors(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export the given mesh's vertex to Collada XML node. - * \param pXmlNode Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pName Name of the XML node to export, usually it's the name of FBX mesh node. - * \return Return pointer to the created XML vertex node. - */ - xmlNode* ExportVertices(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName); - - /** Export the given mesh's polygons to Collada XML node. - * \param pMeshElement Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pMaterialName Specify the name of materials property. - * \param pMaterialIndexInNode Specify the material index in the FBXNode (will be ignored if there is only 1 material in the node) - * \param pName String which used to construct the names of created XML nodes. - * \param pShape true for shape node, false for general node, the default value is false; - * don't write out the materials if pShape is true. - * \return Return pointer to the created XML Polygons node. - */ - xmlNode* ExportPolygons(xmlNode* pMeshElement, FbxMesh* pMesh, FbxString pMaterialName, int pMaterialIndexInNode, FbxString pName, bool pShape = false); - - /** Export all the materials used by the given mesh. - * \param pMesh FBX mesh to export. - * \param pNbMat materials count of pMesh. - * \return true on success, false otherwise. - */ - bool ExportMeshMaterials(FbxMesh *pMesh, int pNbMat); - - /** Export the given material to the Material library. - * \param pMaterial Specify the surface material to export. - * \return Return pointer to the corresponding XML material node. - * \remarks If the given material is already in the materials library, return the XML node; - * otherwise, create and add XML material node to the Material library. - */ - xmlNode* ExportMaterial(FbxSurfaceMaterial *pMaterial); - - /** Export the given material to the Effect library. - * \param pMaterial Specify the surface material to export. - * \param pEffectId Specify the effect ID to export. - * \return Return pointer to the corresponding XML effect node. - * \remarks Material is an instance of an effect. - * If the given material is already in the Effect library, return the XML node; - * otherwise, create and add XML effect node to the Effect library. - * Collada Effect support: Ambient Color, Diffuse Color, Emissive Color, Specular Color, Shiness, Reflective / Reflectivity, - * Opacity / Transparency. - */ - xmlNode* ExportEffect(FbxSurfaceMaterial *pMaterial, FbxString pEffectId); - - /** Add the given texture as input to the given XML material node. - * \param pXmlMaterial Pointer to XML material node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \param pLayerElementType Specify the layer element type. - * \return true on success, false otherwise. - */ - //Note why return true when failed and popped waring? - bool AddMaterialTextureInput(xmlNode *pXmlMaterial, FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex, int pLayerElementType); - - /** Export the given texture to Collada XML node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \return Return pointer to the created XML texture node. - */ - xmlNode* ExportTexture(FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex); - - /** Export all the textures used by the given mesh. - * \param pMesh FBX mesh to export. - * \return true on success, false otherwise. - * \remarks The materials will also be Exported if needed. - */ - bool ExportMeshTextures(FbxMesh *pMesh); - - /** Export the given FBX camera node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML node. - * \remarks Camera parameters and properties will be exported. - */ - xmlNode* ExportCamera(const FbxNode* pNode); - - /** Export the given FBX light node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML node. - * \remarks Light parameters and properties will be exported. - */ - xmlNode* ExportLight(const FbxNode* pNode); - - /** Export the global ambient to Collada XML light node. - */ - void ExportSceneAmbient(xmlNode * pVisualSceneElement); - - /** Export controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should be a binded skin. - * \return true on success. - * \remarks A morph controller will be exported by ExportControllerShape(). - */ - bool ExportController(FbxMesh *pMesh); - - /** Export morph controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should has more than one shape. - * \return true on success. - * \remarks Morph controller is also called shape deformer. - */ - bool ExportControllerShape(FbxMesh *pMesh); - - /** . - * \param . - * \param . - * \return . - * \remarks . - */ - //Note : empty method now - xmlNode* ExportJointWeights(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pExt); - - /** Update mesh library with the shapes found, and add shapes as nodes in the scene. - * \param pXmlNode Pointer to XML Node, created shape node will be added as child to this XML node. - * \return true on success, false otherwise. - * \remarks This method will create a geometry node in geometry library for every shape as needed, - * XML shape nodes will also be created and added to scene. - */ - bool UpdateMeshLibraryWithShapes(xmlNode* pXmlNode); - - /** Export animations of the given node and its children, if they are animated. - * \param pNode FBX node to export, it should be animated. - * \return true on success, false otherwise. - * \remarks This method is called recursively, the animations of all the children of pXmlNode will also be exported. - */ - bool ExportAnimation(FbxNode* pNode); - - /** Export all the animation curves of the given node to Collada XML node. - * \param pNode FBX node to export, it should be animated. - * \param pAnimationNode Pointer to XML Node, created sub-animation nodes will be added as children to this XML node. - * \return true on success. - */ - bool ExportAnimationCurves(FbxNode* pNode, xmlNode* pAnimationNode); - - /** Export the texture into library_images. - * \param pTexture The texture whose file name to be exported. - * \return Return the ID of the create image element. - */ - const FbxString ExportImage(FbxFileTexture * pTexture); - - /** Export the given animation curve (FCurve) to Collada XML node. - * \param pAnimationNode Pointer to XML Node, created sub-animation node will be added as child to this XML node. - * \param pCurve Animation Curve to export. - * \param pChannelName The name of animation channel. - * \param pSubChannelName The name of animation sub-channel. - * \param pExportShape Shape animation flag, default value is false; When it's true, Id nomenclature is a bit different. - * \param pExportIntensity Intensity flag, default value is false; When it's true, FCurve values are divided by 100. - * \param pExportLib Library flag, default value is false; When it's true, Id nomenclature is a bit different. - * \return true on success. - * \remarks When pExportShape or pExportIntensity is true, FCurve values are divided by 100. - */ - bool ExportCurve(xmlNode* pAnimationNode, FbxAnimCurve* pCurve, - const char* pChannelName, const char* pSubChannelName, - bool pExportShape=false, bool pExportIntensity=false, bool pExportLib=false); - - /** Check whether the first three elements of the given vector are both zero. - * \param pV the FBX vector4 to check. - * \return Return true if one of the first three elements of pV is not zero, return false if all of the three elements are both zero. - * \remarks If the absolute value of element is less than a tolerance, the element will be considered as zero. - */ - bool NotZero(FbxVector4 pV); - - /** Check whether the first three elements of the given vector are both equal to the given value. - * \param pV the FBX vector4 to check. - * \param pValue the value to check. - * \return Return true if one of the first three elements of pV is NOT equal to pValue, return false if all of the three elements are both equal to pValue. - */ - bool NotValue(FbxVector4 pV, double pValue); - - /** Check whether the given value is zero. - * \param pD the value to check. - * \return Return true if pD is NOT zero, return false if pD is zero. - * \remarks If the absolute value of pD is less than a tolerance, pD is considered as zero. - */ - bool NotZero(double pD); - - /** Check whether the given node's translation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Translation X/Y/Z is animated, return false if both of Translation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsTranslationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Rotation X/Y/Z is animated, return false if both of Rotation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation of specified axis is animated. - * \param pNode the FBX node to check. - * \param pAxis Specify index of rotation axis, 0 for Rotation X, 1 for Rotation Y, 2 for Rotation Z. - * \return Return true if the rotation of specified axis is animated, return false if it is not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode, int pAxis); - - /** Check whether the given node's scale is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Scale X/Y/Z is animated, return false if both of Scale X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsScaleAnimated(const FbxNode *pNode); - - /** Copy mesh parameters from pRefMesh to pNewMesh. - * \param lNewMesh New FBX mesh. - * \param lRefMesh Referenced FBX mesh. - * \remarks Vertices, polygons, layers will be copied. - */ - void CopyMesh(FbxMesh *lNewMesh, FbxMesh *lRefMesh); - - /** Convert camera focal length animation curve to camera field of view animation curve. - * \param pFOVCurve A curve that represents camera field of view. - * \param pFLCurve A curve that represents camera focal length animation. - * \param pCamera FBX camera to convert. - */ - void ConvertFocalLengthCurveToFOV(FbxAnimCurve *pFOVCurve, FbxAnimCurve *pFLCurve, FbxCamera *pCamera); - - /** Preprocess the given FBX node and its hierarchy. - * \param pNode Pointer to FBX node. - * \remarks To correctly export FBX scene to Collada, this method process FBX nodes, - * such as set pivot state for every FBX node, do special transformation conversion for FBX lights and cameras. - * This method is called recursively. - */ - void PreprocessNodeRecursive(FbxNode* pNode); - - /** Export the value of the specific property as a child element of an element. - * \param pProperty The property whose value to be exported. - * \param pParentElement The parent element of the created element. - */ - void ExportPropertyValue(const FbxProperty & pProperty, - xmlNode * pParentElement); - - //@} - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - - //@} - - FbxFile* mFileObject; - FbxString mFileName; - bool mStatus; - - // XML lib stuff - // - xmlDocPtr mXmlDoc; - - // Scene information - FbxScene* mScene; - - // AnimStack/Layer holding the animation - FbxAnimStack* mAnimStack; - FbxAnimLayer* mAnimLayer; - - // Libraries - // NB: CODE and PROGRAM libraries are unused, so they are not created. - xmlNode* mLibraryAnimation; - xmlNode* mLibraryCamera; - xmlNode* mLibraryController; - xmlNode* mLibraryGeometry; - xmlNode* mLibraryImage; - xmlNode* mLibraryLight; - xmlNode* mLibraryMaterial; - xmlNode* mLibraryEffect; - xmlNode* mLibraryTexture; - xmlNode* mLibraryVisualScene; - - // Shape information - FbxStringList *mShapeMeshesList; - - // export options - bool mTriangulate; - bool mSingleMatrix; - FbxTime mSamplingPeriod; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_WRITER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxio.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxio.h deleted file mode 100644 index edb8415..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxio.h +++ /dev/null @@ -1,1746 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxio.h -#ifndef _FBXSDK_FILEIO_FBX_IO_H_ -#define _FBXSDK_FILEIO_FBX_IO_H_ - -#include - -#include -#include -#include - -#include - -class FbxIO; -class FbxReader; -class FbxWriter; -class FbxFile; -class FbxStream; -class FbxXRefManager; - -/** - Defines the current FBX file version number in four digits. The first digit is the - major version number a the last three digits are the minor version number (e.g. 7100 = 7.1). - The following is the version history of FBX: - - \li Version 2000 - New KFCurve and embedded FBX, no FCurve/FCurve node storing. - No more .takf file like in earlier version, no history. - - \li Version 2001 - Version incremented to support FbxTime save in native (integer, not double) - format. - - \li Version 3000 - FiLMBOX 3.0 version, nothing changed in current class since version 2001. - FBX SDK 3.0 and 3.6 - - \li Version 3001 - FiLMBOX 3.0 encrypted version, only a trial. Encrypted files could only - be written in debug versions. Cannot switch to a higher version number now because any - file with a version number >= 3001 is read as encrypted. - Hence, this value now only gives file type. (3000 or less -> binary, 3001 or more -> encrypted) - FiLMBOX 3.2, FiLMBOX 3.5 and "Online" 3.51 have been released with version 3000. - - \li Version 4000 - MotionBuilder 4.0, new type in KFCurve tangents, supported in FiLMBOX 3.5 - but not by earlier versions. Version number is now stored in section footer. - Before September 3rd 2002, the version number was always 3000 in main section footer. - Now the main section footer has version number 4000. The minimum version number in footer of - an extension section is 4000. - - \li Version 4001 - ASCII Header is 4.1. MotionBuilder 4.01, to fix FCurveNode problem with - layer types in version 4000 the main section footer has version number 4001. - Now the footer for extension sections has version number 4001. - - \li Version 4050 - ASCII Header is 4.5. MotionBuilder 4.1 or 4.5 before - January 22nd 2003. This is because EvaluationProperties now have color. Now the main section footer - has version number 4050. - Now the footer for extension sections has version number 4050. - - \li Version 5000 - ASCII Header is not compatible anymore with MotionBuilder 4.0, 4.01 and 4.02 and FBX SDK 3.6 and 3.7 - MotionBuilder 4.03 and 4.1 or 4.5 from January 22nd 2003 - FBX SDK 3.6.1. New extended header to improve FBX file version management. Now the extended header and - the main section footer have version number 5000. Now the footer for extension sections has version number 5000. - - \li Version 5800 - This was a temporary version while waiting for version 6000 renders the previous versions - incompatible with MotionBuilder 6.0. For now, however, this format is needed to allow - some tools/plugins (For example Maya) to correctly detect that the file has some features that are not - completely backward compatible (For example: pivots defined with _pre/_post nodes which require a special - processing). By incrementing only the minor version we do not compromise the integrity of the - files. - - \li Version 6000 - Header version is now 6.0. - Extended header now contain a creation time stamp - that can be retrieve without parsing the main section of the file. - A creator tag (string) is now stored in the Extended header. This contain the originator (MB/FBXSDK) - of the file and the build number of the originator. - First release of the file format using the KProperties to store/retrieve information. - - \li Version 6100 - Added support for multiple attributes (mainly multiple geometry) at the node level. - The pointer to the node attribute have been replaced by a connection between the node and its attribute(s). - - \li Version 7000 - - First version of the 7.0 series; most likely very short-lived, developed for Protein, before ADP. - Supports reference cloning, external documents, blobs, unique IDs (per file), property templates. - So many changes that it was decided to break from 6.0 to keep Motion Builder intact. - - \li Version 7099 - Temporary version for FBX 2011 alpha releases. - - \li Version 7100 - Official file version for FBX 2011, add support for animation to FBX 7. - First version of FBX SDK with FBX 7 files as the default file format. - - \li Version 7200 - Added support for multiple blend shape deformers and In-Between blend-shapes on each geometry. - Moved shape(FbxShape) to its own section other than as a part of geometry section. - Add support to store blend shape deformer(FbxBlendShape), blend shape channel(FbxBlendShapeChannel), - Substance(FbxProceduralTexture) and Lines(FbxLine). - Add support to store 3 different smooth binding modes of FbxSkin, including classic linear, dual quaternion - and blended mode of previous two modes. - Added the CLAMP_PROGRESSIVE tangent mode. - The KFCurve::KeyAttrDataFloat data array now stores as integer values (ASCII mode) to to eliminate float to int precision errors. - FbxLayeredTexture now stores alphas for its sub textures. - - \li Version 7300 - Changed the way the CharacterPoses are written. - Changed light property name HotSpot and ConeAngle to InnerAngle and OuterAngle - - \li Version 7400 - Normals, tangents and binormals save the 4th component into a separate array - - \li Version 7500 - Added support for large files (>2GB). NOTE: This breaks forward compatibility (i.e. older products won't be able to open these files!!) - - */ - -//File version numbers -#define FBX_FILE_VERSION_2000 2000 //FBX 2.0 -#define FBX_FILE_VERSION_2001 2001 //FBX 2.01 -#define FBX_FILE_VERSION_3000 3000 //FBX 3.0 -#define FBX_FILE_VERSION_3001 3001 //FBX 3.01 -#define FBX_FILE_VERSION_4000 4000 //FBX 4.0 -#define FBX_FILE_VERSION_4001 4001 //FBX 4.01 -#define FBX_FILE_VERSION_4050 4050 //FBX 4.5 -#define FBX_FILE_VERSION_5000 5000 //FBX 5.0 -#define FBX_FILE_VERSION_5800 5800 //FBX 5.8 -#define FBX_FILE_VERSION_6000 6000 //FBX 6.0 -#define FBX_FILE_VERSION_6100 6100 //FBX 6.1 (guarantee compatibility with Autodesk 2010 products) -#define FBX_FILE_VERSION_7000 7000 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7099 7099 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7100 7100 //FBX 7.1 (guarantee compatibility with Autodesk 2011 products) -#define FBX_FILE_VERSION_7200 7200 //FBX 7.2 (guarantee compatibility with Autodesk 2012 products) -#define FBX_FILE_VERSION_7300 7300 //FBX 7.3 (guarantee compatibility with Autodesk 2013 products) -#define FBX_FILE_VERSION_7400 7400 //FBX 7.4 (guarantee compatibility with Autodesk 2014/2015 products) -#define FBX_FILE_VERSION_7500 7500 //FBX 7.5 (guarantee compatibility with Autodesk 2016 products) - -//File version compatibility strings -#define FBX_53_MB55_COMPATIBLE "FBX53_MB55" -#define FBX_60_COMPATIBLE "FBX60_MB60" -#define FBX_2005_08_COMPATIBLE "FBX200508_MB70" -#define FBX_2006_02_COMPATIBLE "FBX200602_MB75" -#define FBX_2006_08_COMPATIBLE "FBX200608" -#define FBX_2006_11_COMPATIBLE "FBX200611" -#define FBX_2009_00_COMPATIBLE "FBX200900" -#define FBX_2009_00_V7_COMPATIBLE "FBX200900v7" -#define FBX_2010_00_COMPATIBLE "FBX201000" -#define FBX_2011_00_COMPATIBLE "FBX201100" -#define FBX_2012_00_COMPATIBLE "FBX201200" -#define FBX_2013_00_COMPATIBLE "FBX201300" -#define FBX_2014_00_COMPATIBLE "FBX201400" -#define FBX_2016_00_COMPATIBLE "FBX201600" -#define FBX_2018_00_COMPATIBLE "FBX201800" -#define FBX_2019_00_COMPATIBLE "FBX201900" - -//Default file version number used when writing new FBX files -#define FBX_DEFAULT_FILE_VERSION FBX_FILE_VERSION_7500 -#define FBX_DEFAULT_FILE_COMPATIBILITY FBX_2019_00_COMPATIBLE - -/** Convert the FBX file version string to an integral number for <= or >= tests purposes. - * \param pFileVersion File version string. - * Some examples: - * \code - * int version; - * version = FileVersionStrToInt(FBX2012_00_COMPATIBLE); // version = 201200 - * version = FileVersionStrToInt(FBX60_COMPATIBLE); // version = 6000 - * version = FileVersionStrToInt("FBX200900"); // version = 200900 - * version = FileVersionStrToInt("Toto"); // version = 0 - * version = FileVersionStrToInt(""); // version = -1 - * \endcode - * \returns the file version number or 0 if an unsupported string value is passed. - */ -FBXSDK_DLL int FbxFileVersionStrToInt(const char* pFileVersion); - -/** \internal Used internally by readers to evaluate what is the current section */ -enum -{ - FBX_NO_SECTION = -1, //!< indicate not in a valid section - FBX_MAIN_SECTION, //!< indicate currently in the main section - FBX_EXTENSION_SECTION_0 //!< indicate currently in the extention section 0 -}; - -/** Render and resolution information. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxIODefaultRenderResolution -{ -public: - /** If the resolution data is ready. */ - bool mIsOK; - /** camera name. */ - FbxString mCameraName; - /** resolution mode. ex: "Fixed Resolution","Fixed Ratio","Fixed Width","Fixed Height","Window Size"*/ - FbxString mResolutionMode; - /** resolution width. */ - double mResolutionW; - /** resolution height. */ - double mResolutionH; - - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIODefaultRenderResolution(); - //@} - - /** - * \name Member Access - */ - //@{ - //! Reset values to default. - void Reset(); - //@} -}; - -/** FBX header information used at beginning of the FBX file -* to get or set important values like the file format version number (mFileVersion). -* The file version number will be used to select a particular Reader or Writer. -* \nosubgrouping */ -class FBXSDK_DLL FbxIOFileHeaderInfo -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIOFileHeaderInfo(); - - //! Destructor. - virtual ~FbxIOFileHeaderInfo(); - //@} - - /** - * \name Public Member - */ - //@{ - - //! Reset values to default. - virtual void Reset(); - - /** A derived class can override this function to read additional information from the file header. - * \return false in case of failure that should stop loading the file. - */ - virtual bool ReadExtendedHeaderInformation(FbxIO*); - //@} - - //! FbxIODefaultRenderResolution to handle default resolution values - FbxIODefaultRenderResolution mDefaultRenderResolution; - - //!Read only properties (not used for file write) - - //@{ - /** File version ex; 5000, 6000, 6100, 7000, 7099, 7100 - * the major part is the first digit, the minor part, 3 other digits - * ex: 7100 means version 7.1 - */ - int mFileVersion; - - /** Indicates whether a creation time stamp is preset */ - bool mCreationTimeStampPresent; - - /** Indicates whether the mCreationTimeStamp member variable contains the actual creation time of the file. */ - FbxLocalTime mCreationTimeStamp; - - /** Indicates who is the creator of the file - * Ex: "FBX SDK/FBX Plugins version 2011.2" - */ - FbxString mCreator; - - /** Indicates whether the file is created by a genuine Autodesk plug-in or not */ - bool mIOPlugin; - - /** The flag indicates that the header was created by a personal learning edition (PLE) of FBX. */ - bool mPLE; - //@} -}; - -/** FbxIO represents an FBX file. - * It is primarily used by FBX importers (FbxImporter) and exporter (FbxExporter) - * when reading or writing data from or to a disk or memory. - * Most users will not use the FbxIO class directly - * but will use an instance of either FbxImporter or FbxExporter - * to read or write FBX files. - * - * An FBX file may contain binary data or ASCII data. - * A good way to learn the internal structure of a FBX file - * is to open a FBX file saved in ASCII in a text editor. - * - * Ex: to read a FBX file content using FbxIO class directly - * \code - * // Create a FbxIO object with FbxIO::Create() - * // Open the file with ProjectOpen( ... ) a NULL pointer can be passed for (FbxReader)* param - * // ProjectOpen_xxx_Section() to open a particular section - * int nbSec = FieldGetCount(); // to get the number of fields of the current section opened - * for(int i=0; i < nbSec; i++) // read all fields - * { - * // check if the field is a block - * if(FieldReadIsBlock()){ } ... Read sub fields recursively ... may contain other blocks and fields - * else - * { - * FieldReadBegin(); // navigate on the field - * char fieldType = FieldReadGetType(); // get the data type - * - * // According to the Field data type, call the appropriate read functions - * - * if(fieldType == 'S') FieldReadS(...) to read a string - * else if(fieldType == 'B') FieldReadB(...) to read a bool - * else if(fieldType == 'I') FieldReadI(...) to read a int - * ... - * FieldReadEnd(); // navigate to next field - * } - * } - * - * ProjectCloseSection() // close the section opened - * // repeat for another section ... - * // finally close the Project - * ProjectClose(); // or delete the FbxIO object created. - * \endcode - */ -class FBXSDK_DLL FbxIO -{ -public: - - /** \internal Exception-safe way of setting/resetting the xref manager in a FbxIO object. - */ - struct FbxAutoResetXRefManager - { - FbxIO* mFbx; - const FbxXRefManager* mXRefManager; - - /** Default constructor */ - FbxAutoResetXRefManager(FbxIO* pFbx, FbxXRefManager& pXRefManager) - : mFbx(pFbx) - , mXRefManager(NULL) - { - if( mFbx ) - { - mXRefManager = mFbx->ProjectGetXRefManager(); - mFbx->ProjectSetXRefManager(&pXRefManager); - } - } - - /** Destructor */ - ~FbxAutoResetXRefManager() - { - if( mFbx ) - { - mFbx->ProjectSetXRefManager(mXRefManager); - } - } - }; - - enum BinaryType - { - BinaryNormal, //(pBinaryType, pStatus); } - - /** Default constructor */ - FbxIO(BinaryType pBinaryType, FbxStatus& pStatus); - - /** Destructor */ - virtual ~FbxIO(); - - /** - * \name Project Global - * The term "Project" here is an abstract name chosen to represent a group of data - * ex: a file, a stream, a memory buffer, etc. - */ - //@{ - - /** Open a project already in Memory - * \param pAddress - * \param pMaxLength - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(void* pAddress, FbxULong pMaxLength, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pStream - * \param pStreamData - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(FbxStream* pStream, void* pStreamData, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open project file without necessarily an .fbx extension. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenDirect(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project in Memory - * \param pAddress - * \param pSize - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(void* pAddress, FbxUInt pSize, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pStream - * \param pStreamData - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project without necessary an .fbx extension. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateDirect(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project, without writing out the header (yet) - * \param pName - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(const char* pName, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Create a project, without writing out the header (yet) - * \param pStream - * \param pStreamData - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Write FBX signature at the top of the file, prepare file for writing header information - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginFileHeader(); - - /** Open up the 'extended header' - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginExtendedHeader(); - - /** Write the contents of the extended header - * \param pExtendedHeader - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_WriteExtendedHeader(const FbxIOFileHeaderInfo* pExtendedHeader); - - /** Close the extended header - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndExtendedHeader(); - - /** Close up the header, prepare file for payload write. - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndFileHeader(); - - /** Close the project. - * \param pData - * \param pSize - * \return \c true on success, \c false otherwise. - */ - bool ProjectClose(void** pData=0, size_t* pSize=0); - - /** Provide the XRef Manager to use to create the .fbm folder. - * \remarks If NULL is used, the old behavior (using the .fbx's folder) is used instead. - */ - void ProjectSetXRefManager(const FbxXRefManager*); - - /** Get the XRef Manager to use. - * \return NULL if no XRef manager has been set. - */ - const FbxXRefManager* ProjectGetXRefManager() const; - - /** Select (and create) a folder to store embedded files (the .fbm - * file folder). Takes into account the settings from the XRef Manager. - * \param pXRefManager - * \param pCreatedFolder - * \param pUserDefinedFolder User defined "working folder" - * \return \c true on success, \c false otherwise. - * \remarks If this already been called successfully, uses the path - * previously created. - * - * Client application is responsible for cleaning up this folder. - * - * This will be automatically called if ProjectSetXRefManager() - * has been called before the .fbm folder needs to be created. - */ - bool ProjectCreateEmbeddedFolder(const FbxXRefManager& pXRefManager, FbxString& pCreatedFolder, const char* pUserDefinedFolder = NULL); - - /** On store event, use this function to tell if we are embedding. - * \param pValue - */ - void SetEmbedded(bool pValue); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractionFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractionFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Check if file is embedded or not. - * \return \c true if file is embedded, false otherwise. - */ - bool IsEmbedded() const; - - /** Check if file is binary or ASCII - * \return \c true if file is binary, false otherwise. - */ - bool IsBinary() const; - - /** Return if binary file is encrypted - * \return \c true if file is encrypted, false otherwise. - */ - bool IsEncrypted () const; - - /** Check CRC code. File must be open, binary and encrypted. - * \return \c true if CRC code is valid or file is not open, binary and encrypted. - */ - bool CheckCRC(); - - /** Return the file version number - * \return the file version number - */ - FbxUInt32 GetFileVersionNumber() const; - - /** Set the cache size for accelerated IO - * \param pCacheSize cache size to set (Kilo Byte) - */ - void CacheSize(FbxUInt32 pCacheSize); - - /** Return the current cache size - * \return the current cache size - */ - FbxUInt32 CacheSize() const; - - //@} - - /** - * \name FBX 7 Format specific functions. - - The FBX 7 format can compress internal arrays to make the file smaller. - The writer may decide not to compress all arrays, or it may even decide - not to compress anyway. Flags are written in the file to help the FBX7 reader - to know if a decompression is required, on a per-array basis. - The following functions address specific topics of the FBX 7 file format. - */ - //@{ - - //! \return Current state of the flag. - bool Fbx7Support() const; - - /** Set the flag state to tell the parser to handle FBX7 files. - * \param pSupport New flag state. - */ - void Fbx7Support(bool pSupport); - - //! \return Current State of the flag. - bool CompressArrays() const; - - /** Set the flag state. - * \param pCompress New flag state. - */ - void CompressArrays(bool pCompress); - - //! \return Current compression minimum size. - int CompressMinimumSize() const; - - /** Set the compression minimum size. - * \param pSize Threshold at which compression may embark. - */ - void CompressMinimumSize(int pSize); - - //! \return Current compression level. - int CompressLevel() const; - - /** Set the compression level. - * \param pLevel Value of the desired compression. - * \remarks The allowed range for pLevel is [0-9] where 0 equals no compression and - * 9 is as-much-as-we-can. - */ - void CompressLevel(int pLevel); - //@} - - /** - * \name Project related functions used to navigate on particular - * sections. - */ - //@{ - - /** Open the main section of a project. - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenMainSection(); - - /** Get the number of extension sections of a project. - * \return the number of extension sections of a project. - */ - int ProjectGetExtensionSectionCount() const; - - /** Open an extension section of a project. - * \param pExtensionSectionIndex - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenExtensionSection(int pExtensionSectionIndex); - - /** Create an extension section in a project, not allowed in ASCII and encrypted modes. - * \param pOverwriteLastExtensionSection - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateExtensionSection(bool pOverwriteLastExtensionSection = false); - - /** Close current section. - */ - void ProjectCloseSection(); - - /** Get current section. - * \return the current section. - */ - int ProjectGetCurrentSection() const; - - /** Get current section mode. - * \return the current section mode. - */ - int ProjectGetCurrentSectionMode() const; - - /** Get current section version. - * \return the current section version. - */ - int ProjectGetCurrentSectionVersion() const; - - /** Get the version number of a section. - * \param pSection - * \return the version number of a section. - * \remarks For main section it can be either 1000, 2000, 2001, 3000, 3001, 4000, 4001 or 4050. - * For the extension section it can be either 4000, 4001 or 4050. - * Returns 0 if section number does not exist. - */ - int ProjectGetSectionVersion(int pSection) const; - - /** Split a version number into major, minor and revision numbers. - * \param pVersion Version number to split. - * \param pMajor Integer to receive major version number. - * \param pMinor Integer to receive minor version number. - * \param pRevision Integer to receive revision version number. - */ - static void ProjectConvertVersionNumber(int pVersion, int& pMajor, int& pMinor, int& pRevision); - - /** Check the password protection flag. - * \return \c true if the current section has a password, \c false otherwise. - */ - bool IsPasswordProtected() const; - - /** Set password protection flag to \c false if the argument matches the password stored in the section. - * \param pPassword - * \return \c true if the argument matches the password stored in the section, \c false otherwise. - * \remarks This function only works in read mode. - */ - bool CheckPassword(const char* pPassword); - - /** Encrypt and store password in a section. - * \param pPassword - * \return \c true on success, \c false otherwise. - * \remarks This function only works in write mode and out of any enclosing block. - * \remarks This function must not be called more than once per section. - */ - bool WritePassword(const char* pPassword); - - //@} - - /** - * \name Directory related functions used to get or set file path information. - */ - //@{ - - /** Get project file name. - * \return project file name. - */ - const char* GetFilename() const; - - /** Get project data directory name. - * \param pAutoCreate - * \return project data directory name. - */ - FbxString GetDataDirectory(bool pAutoCreate = true); - - /** Get the current embedded folder used by this object. - * \param pCreate Whether create the media or not if no such folder is found - * \param pUserDefinedFolder User define working folder - * \return the current embedded folder used by this object. - * \remarks If ProjectCreateEmbeddedFolder has never been called this will - * return an empty string, unless we're explicitly asked to - * create it. - */ - FbxString GetMediaDirectory(bool pCreate = false, const char* pUserDefinedFolder = NULL); - - /** Get the full path of the directory to extract the template file. - * \param pTemplateName - * \param pCreate - * \return the full path of the directory to extract the template file. - */ - FbxString GetContainerTemplateDirectory(const char* pTemplateName, bool pCreate); - - /** Get the path relative to project directory. - * \param pPath - * \return the path relative to project directory. - */ - char* GetRelativePath(const char* pPath); - - /** Get the file path relative to project directory. - * \param pFilePath - * \return the file path relative to project directory. - */ - char* GetRelativeFilePath(const char* pFilePath); - - /** Get the full path of path relative to project directory. - * \param pRelativePath - * \return the full path of path relative to project directory. - */ - char* GetFullPath(const char* pRelativePath); - - /** Get the full file path of path relative to project directory. - * \param pRelativeFilePath - * \return the full file path of path relative to project directory. - */ - char* GetFullFilePath(const char* pRelativeFilePath); - - /** Get the temporary project name. - * \param pName - * \return the temporary project name. - */ - char* GetTmpProjectName(const char* pName) const; - - /** Swap from temporary project. - * \param pName - * \param pError - * \param pErrorSize - * \return \c true on success, \c false otherwise. - */ - bool SwapFromTmpProject(const char* pName, char* pError=NULL, int pErrorSize=0); - - //@} - - /** - * \name Read related functions used to get information of a field or a group of fields. - * Can be used to get the field content data or to navigate from field to field. - */ - //@{ - - /** Reset the field read position. - */ - void FieldReadResetPosition(); - - /** Get the number of fields. - * \return the number of fields. - */ - int FieldGetCount() const; - - /** Get the name of field indexed pFieldIndex. - * \param pFieldIndex - * \return the name of field indexed pFieldIndex. - */ - const char* FieldGetName(int pFieldIndex) const; - - /** Get number of instance field pFieldName has. - * \param pFieldName - * \return the number of instance field pFieldName has. - */ - int FieldGetInstanceCount(const char* pFieldName) const; - - /** Start to read field instance referred by field indexed pFieldIndex, instance indexed pInstance. - * \param pFieldIndex - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(int pFieldIndex, int pInstance); - - /** Start to read field pFieldName. - * \param pFieldName - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName); - - /** Start to read field instance referred field pFieldName, instance indexed pInstance. - * \param pFieldName - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName, int pInstance); - - //! Stop to read the current field. - void FieldReadEnd(); - - //! Return if current field is a block. - bool FieldReadIsBlock(); - - //! Start to read a field block. - bool FieldReadBlockBegin(); - - //! Stop to read a field block. - void FieldReadBlockEnd(); - - //! Return the number of read field. - int FieldReadGetCount() const; - - //! Return the number of field remaining to be read. - int FieldReadGetRemain() const; - - //! Return current field value type. - char FieldReadGetType() const; - - //! Return current field value as a char. - char FieldReadCH(); - - /** Return field pFieldName's value as a char. - * \param pFieldName - * \param pDefault - */ - char FieldReadCH(const char* pFieldName, char pDefault=0); - - //! Return current field value as a char pointer. - const char* FieldReadC(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadC(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as a string (a char pointer). - const char* FieldReadS(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadS(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as an bool. - bool FieldReadB(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - bool FieldReadB(const char* pFieldName, bool pDefault = false); - - //! Return current field value as an integer. - int FieldReadI(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */int FieldReadI(const char* pFieldName, int pDefault=0); - - //! Return current field value as an integer. - FbxLongLong FieldReadLL(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - FbxLongLong FieldReadLL(const char* pFieldName, FbxLongLong pDefault=0); - - //! Return current field value as a float. - float FieldReadF(); - - /** Return field pFieldName's value as a float. - * \param pFieldName - * \param pDefault - */ - float FieldReadF(const char* pFieldName, float pDefault=0); - - //! Return current field value as a double. - double FieldReadD(); - - /** Return field pFieldName's value as a double. - * \param pFieldName - * \param pDefault - */ - double FieldReadD(const char* pFieldName, double pDefault=0); - - /** Return field pFieldName's value as a time value. - * \param pFieldName - */ - FbxTime FieldReadT(const char* pFieldName); - - //! Return field pFieldName's value as a time value. - FbxTime FieldReadT(); - - /** Return field pFieldName's value as a timespan value. - * \param pFieldName - */ - FbxTimeSpan FieldReadTS(const char* pFieldName); - - //! Return field pFieldName's value as a timespan value. - FbxTimeSpan FieldReadTS(); - - /** Return current field value as a n floats array. - * \param pValue - * \param pn - */ - void FieldReadFn(float* pValue, FbxUInt pn); - - /** Return current field value as a 3 floats array. - * \param pValue - */ - void FieldRead3F(float* pValue); - - /** Return current field value as a 4 floats array. - * \param pValue - */ - void FieldRead4F(float* pValue); - - /** Return field pFieldName's value as n floats array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadFn(const char* pFieldName, float* pValue, const float *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return field pFieldName's value as 3 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return current field value as a n doubles array. - * \param pValue - * \param pn - */ - void FieldReadDn(double* pValue, FbxUInt pn); - - /** Return current field value as a 3 doubles array. - * \param pValue - */ - void FieldRead3D(double* pValue); - - /** Return current field value as a 4 doubles array. - * \param pValue - */ - void FieldRead4D(double* pValue); - - /** Return field pFieldName's value as n doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadDn(const char* pFieldName, double* pValue, const double *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return field pFieldName's value as 3 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return current field value as raw data. - * \param pByteSize - */ - void* FieldReadR(int* pByteSize); - - /** Return field pFieldName's value as raw data. - * \param pFieldName - * \param pByteSize - */ - void* FieldReadR(const char* pFieldName,int* pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - //! Return field pFieldName's value as byte. - FbxChar FieldReadByte(); - - /** Return field pFieldName's value as a byte value. - * \param pFieldName - * \param pDefault - */ - FbxChar FieldReadByte(const char* pFieldName, FbxChar pDefault=0); - - //! Return field pFieldName's value as unsigned byte. - FbxUChar FieldReadUByte(); - - /** Return field pFieldName's value as an unsigned byte value. - * \param pFieldName - * \param pDefault - */ - FbxUChar FieldReadUByte(const char* pFieldName, FbxUChar pDefault=0); - - //! Return field pFieldName's value as short. - FbxShort FieldReadShort(); - - /** Return field pFieldName's value as a short value. - * \param pFieldName - * \param pDefault - */ - FbxShort FieldReadShort(const char* pFieldName, FbxShort pDefault=0); - - //! Return field pFieldName's value as unsigned short. - FbxUShort FieldReadUShort(); - - /** Return field pFieldName's value as an unsigned short value. - * \param pFieldName - * \param pDefault - */ - FbxUShort FieldReadUShort(const char* pFieldName, FbxUShort pDefault=0); - - //! Return field pFieldName's value as unsigned integer. - unsigned int FieldReadUI(); - - /** Return field pFieldName's value as an unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - unsigned int FieldReadUI(const char* pFieldName, unsigned int pDefault=0); - - //! Return field pFieldName's value as 64 bit unsigned integer. - FbxULongLong FieldReadULL(); - - /** Return field pFieldName's value as an 64 bit unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - FbxULongLong FieldReadULL(const char* pFieldName, FbxULongLong pDefault=0); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArraySBytes( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArrayShort ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArrayUShort( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArrayUI ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArrayULL ( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArray(int &pCount, const FbxChar*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArray(int &pCount, const FbxShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArray(int &pCount, const FbxUShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArray(int &pCount, const unsigned int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArray(int &pCount, const FbxULongLong*); - //@} - - /** Read field and copy it into a file. - * \param pFileName Embedded file full path+name. - *\param pRelativeFileName Relative path+name of the embedded file. - * \param pEmbeddedMediaDirectory Directory of the embedded media. - * \param pIsFileCreated Status of the extraction of the embedded data. Set to \c true if the embedded media is correctly extracted in the media directory. - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - virtual bool FieldReadEmbeddedFile (FbxString& pFileName, FbxString& pRelativeFileName, const char* pEmbeddedMediaDirectory = "", bool *pIsFileCreated=NULL); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArrayD( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArrayF( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArrayI( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong*FieldReadArrayLL(int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArrayB( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArrayBytes( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArray(int& pCount, const int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArray(int& pCount, const float*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArray(int& pCount, const double*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong* FieldReadArray(int& pCount, const FbxLongLong*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArray(int& pCount, const bool*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArray(int& pCount, const FbxUChar*); - - //@} - - /** - * \name Write related functions used to write information of a field or a group of fields. - * Can be used to write the field content data or to navigate from field to field. - */ - //@{ - - /** Start to write a field called pFieldName. - * \param pFieldName - */ - void FieldWriteBegin(const char* pFieldName); - - //! Stop to write the current field. - void FieldWriteEnd(); - - //! Start to write a field block. - void FieldWriteBlockBegin(); - - /** Start to write an object reference field. - * \param pObjectType - * \param pName - * \param pSubType - */ - void FieldWriteObjectBegin(const char* pObjectType, const char* pName, const char* pSubType=NULL); - - //! Stop to write an object reference field. - void FieldWriteObjectEnd(); - - /** Start to write a field block in file pFileName. - * \param pFileName - * \remarks This function is disabled but kept accessible for the FBX SDK. - */ - void FieldWriteBlockBegin(const char* pFileName); - - //! Stop to write a block of field. - void FieldWriteBlockEnd (); - - /** Write field value as a char. - * \param pValue - */ - void FieldWriteCH(char pValue); - - /** Write field pFieldName field with a char as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteCH(const char* pFieldName, char pValue); - - /** Write field value as char pointer pValue. - * \param pValue - */ - void FieldWriteC(const char* pValue); - - /** Write field pFieldName with a char pointer as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteC(const char* pFieldName, const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const FbxString& pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const char* pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const FbxString& pValue); - - /** Write field value as bool. - * \param pValue - */ - void FieldWriteB(bool pValue); - - /** Write field pFieldName field with a bool value. - * \param pFieldName - * \param pValue - */ - void FieldWriteB(const char* pFieldName, bool pValue); - - /** Write field value as integer. - * \param pValue - */ - void FieldWriteI(int pValue); - - /** Write field pFieldName field with an int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteI(const char* pFieldName, int pValue); - - /** Write field value as 64 bit integer. - * \param pValue - */ - void FieldWriteLL(FbxLongLong pValue); - - /** Write field pFieldName field with an 64 bit int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteLL(const char* pFieldName, FbxLongLong pValue); - - /** Write field value as float. - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(float pValue); - - /** Write field pFieldName field with a float as a value. - * \param pFieldName - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(const char* pFieldName, float pValue); - - /** Write field value as double. - * \param pValue - */ - void FieldWriteD(double pValue); - - /** Write field pFieldName field with a double as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteD(const char* pFieldName, double pValue); - - /** Write field value as time value. - * \param pTime - */ - void FieldWriteT(FbxTime pTime); - - /** Write field pFieldName field with a time as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteT(const char* pFieldName,FbxTime pValue); - - /** Write field value as timespan value. - * \param pTimeSpan - */ - void FieldWriteTS(FbxTimeSpan pTimeSpan); - - /** Write field pFieldName field with a timespan as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteTS(const char* pFieldName,FbxTimeSpan pValue); - - /** Write field value as an array of n floats (nF vector). - * \param pValue - * \param pn - */ - void FieldWriteFn(const float* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n floats as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteFn(const char* pFieldName, const float* pValue, FbxUInt pn); - - /** Write field value as an array of 3 floats (3F vector). - * \param pValue - */ - void FieldWrite3F(const float* pValue); - - /** Write field pFieldName field with a array of 3 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of 4 floats (4F vector). - * \param pValue - */ - void FieldWrite4F(const float* pValue); - - /** Write field pFieldName field with a array of 4 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of n doubles (nD vector). - * \param pValue - * \param pn - */ - void FieldWriteDn(const double* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n doubles as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteDn(const char* pFieldName, const double* pValue, FbxUInt pn); - - /** Write field value as an array of 3 doubles (3D vector). - * \param pValue - */ - void FieldWrite3D(const double* pValue); - - /** Write field pFieldName field with a array of 3 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3D(const char* pFieldName, const double* pValue); - - /** Write field value as an array of 4 doubles (4D vector). - * \param pValue - */ - void FieldWrite4D(const double* pValue); - - /** Write field pFieldName field with a array of 4 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4D(const char* pFieldName, const double* pValue); - - // The maximum number of value entries is, in theory, 2**32. In practice it should be a lot less than that. - // pSize is the number of values to write from each pointer location, and stride is how much we - // advance to get to the next value; if the stride is zero, values are tighly packed together. - // So in total we'll write n * pSize items. - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayD( int n, const double* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayF( int n, const float* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayI( int n, const int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayLL(int n, const FbxLongLong* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayB( int n, const bool* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayBytes( int n, const FbxUChar* pValue, int pSize = 1, int pStride = 0 ); - - /** Write field value as a raw data. - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const void* pRawData, int pByteSize); - - /** Write field pFieldName field with raw data as a value. - * \param pFieldName - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const char* pFieldName, const void* pRawData, int pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - - /** Write field value as byte. - * \param pValue - */ - void FieldWriteByte(FbxChar pValue); - - /** Write field pFieldName field with a byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteByte(const char* pFieldName, FbxChar pValue); - - /** Write field value as unsigned byte. - * \param pValue - */ - void FieldWriteUByte(FbxUChar pValue); - - /** Write field pFieldName field with an unsigned byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUByte(const char* pFieldName, FbxUChar pValue); - - /** Write field value as short. - * \param pValue - */ - void FieldWriteShort(FbxShort pValue); - - /** Write field pFieldName field with a short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteShort(const char* pFieldName, FbxShort pValue); - - /** Write field value as unsigned short. - * \param pValue - */ - void FieldWriteUShort(FbxUShort pValue); - - /** Write field pFieldName field with an unsigned short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUShort(const char* pFieldName, FbxUShort pValue); - - /** Write field value as an unsigned integer. - * \param pValue - */ - void FieldWriteUI(unsigned int pValue); - - /** Write field pFieldName field with an unsigned int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUI(const char* pFieldName, unsigned int pValue); - - /** Write field value as 64 bit unsigned integer. - * \param pValue - */ - void FieldWriteULL(FbxULongLong pValue); - - /** Write field pFieldName field with an 64 bit unsigned int as a value. - * \param pFieldName - * \param pValue - * \return void - */ - void FieldWriteULL(const char* pFieldName, FbxULongLong pValue); - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArraySBytes( int n, const FbxChar* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayShort( int n, const FbxShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUShort( int n, const FbxUShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUI( int n, const unsigned int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayULL(int n, const FbxULongLong* pValue, int pSize = 1, int pStride = 0 ); - //@} - - /** ASCII files may limit how big you can write your raw data, forcing you to break it down into chunks. - * \return int - */ - int GetFieldRMaxChunkSize() const; - - /** Write object reference pName in the current field. - * \param pName - */ - void FieldWriteObjectReference(const char* pName); - - /** Write object reference pName in field pFieldName. - * \param pFieldName - * \param pName - */ - void FieldWriteObjectReference(const char* pFieldName, const char* pName); - - /** Write field with file content as a value. - * \param pFileName - * \param pRelativeFileName - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - bool FieldWriteEmbeddedFile (FbxString pFileName, FbxString pRelativeFileName); - - /** Write comments, only effective in ASCII mode. - * \param pFieldName - */ - void WriteComments(const char* pFieldName); - - //@} - -#ifdef _DEBUG - // Dump function for debugging purpose only - void StdoutDump(); -#endif - - /** Get if the embedded file is currently loaded - * \return true if loaded, false otherwise - * \remarks An embedded file is a file like a JPEG image used for texture or an AVI file for video. - * When files are embedded, the size of the FBX file can be very large since other files are embedded in it. - * FBX Version 6 and lower cannot embed files when saved in ASCII. - * FBX Version 7 and over can embed files even when saved in ASCII mode. - */ - bool GetHaveLoadedEmbededFile() const; - - /** Get the maximum byte count written - * \param pMemPtr The address of the memory file - * \param[out] pSize Stores the maximum byte count written - */ - void GetMemoryFileInfo(void** pMemPtr, size_t& pSize) const; - - /** Get a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - bool IsBeforeVersion6() const; - - /** Set a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - void SetIsBeforeVersion6(bool pIsBeforeVersion6); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProjectOpen (FbxFile * pFile, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - FbxStatus& GetStatus() { return mStatus; } - -private: - // to resolve warning C4512: 'class' : assignment operator could not be generated - FbxIO& operator=(const FbxIO& pOther); - - FbxStatus& mStatus; - - struct InternalImpl; - struct InternalImpl32; - struct InternalImpl64; - InternalImpl* mImpl; - - //! Project Global - - void ProjectClear(); - void ProjectReset(); - - bool ProjectReadHeader(bool pCheckASCIIHeader, bool pCheckCRC, bool pOpenMainSection, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectReadExtendedHeader(FbxInt64& pExtendedHeaderEnd, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool BinaryReadHeader(); - bool BinaryReadSectionPosition(); - bool ASCIIReadHeader(); - bool ASCIIReadSectionPosition(); - - bool ProjectWriteHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectWriteExtendedHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - void BinaryWriteHeader(); - void ASCIIWriteHeader(); - - void ReadEncryptionKey(char* pEncryptionKey); - void WriteEncryptionKey(char* pEncryptionKey); - - //! Project Section - - bool ProjectClearSection(); - bool ProjectOpenSection(int pSection); - bool BinaryReadSectionHeader(); - FbxInt64 BinaryReadSectionFooter(unsigned char* pSourceCheck); - bool BinaryReadExtensionCode(FbxInt64 pFollowingSectionStart, FbxInt64& pSectionStart, FbxUInt32& pSectionVersion); - void BinaryReadSectionPassword(); - - bool ProjectWriteSectionHeader(); - void BinaryWriteSectionFooter(); - bool BinaryWriteExtensionCode(FbxInt64 pSectionStart, FbxUInt32 pSectionVersion); - - FbxString GetCreationTime() const; - void SetCreationTime(FbxString pCreationTime); - void CreateSourceCheck(unsigned char* lSourceCheck); - bool TestSourceCheck(unsigned char* pSourceCheck, unsigned char* pSourceCompany); - FbxString GetMangledCreationTime(); - void EncryptSourceCheck(unsigned char* pSourceCheck, unsigned char* pEncryptionData); - void DecryptSourceCheck(unsigned char* pSourceCheck, const unsigned char* pEncryptionData); - - void EncryptPasswordV1(FbxString pOriginalPassword, FbxString &pEncryptedPassword); - void DecryptPasswordV1(FbxString pEncryptedPassword, FbxString &pDecryptedPassword); - - //! Read - - void CheckValidityOfFieldName(const char* pFieldName); - void GetUnusedEmbeddedName(const FbxString& pDirectory, const FbxString& pName, FbxString& pResult, bool pCreateSubdirectory); - - //! Get project media directory name - FbxString GetDirectory(bool pAutoCreate, const char* pExtension); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_IO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h deleted file mode 100644 index 2018a22..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h +++ /dev/null @@ -1,256 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX5_H_ - -#include - -#include - -class FbxAnimLayer; -class Fbx5ObjectTypeInfo; - -FbxReader* CreateFBXReader(FbxManager& pManager, - FbxImporter& pImporter, - int pID, - FbxStatus& pStatus); -void GetInfoFBXReader(int* pCount, - const char* * pExtensions, - const char* * pDescriptions); - -class FbxReaderFbx5 : public FbxReader -{ -public: - FbxReaderFbx5(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - virtual ~FbxReaderFbx5(); - - virtual bool FileOpen(char* pFileName, bool pIgnoredArg); - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags){ return FbxReader::FileOpen(pFileName, pFlags); } - virtual bool FileOpen(char* pFileName); - virtual bool FileOpen(FbxFile * pFile); - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EImportMode; - - EImportMode GetImportMode(); - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - virtual bool Read(FbxScene& pScene, FbxIO* pFbx); - - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - virtual bool SupportsStreams() const { return true; } - -private: - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - void ReadOptionsInGenericSection(); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - bool WriteThumbnail(FbxThumbnail*); - FbxDocumentInfo* ReadSceneInfo(); - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - void WriteSceneInfo(FbxDocumentInfo*); - void SetIsBeforeVersion6WithMainSection(bool pOpenMainSection); - - bool ReadDefinitionSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObjectSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObject(FbxScene& pScene, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId); - bool ReadNode(); - //bool ReadGenericNode(FbxScene& pScene); - bool ReadAnimation(FbxScene& pScene); - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - FbxThumbnail* ReadThumbnail(); - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool ReadHierarchy(FbxNode& pRootNode); - bool ResolveHierarchy(FbxNode& pRootNode); - bool ResolveLinks(FbxNode& pRootNode, FbxNode& pCurrentNode); - bool ResolveTargets(FbxNode& pRootNode); - bool ResolveUpNodes(FbxNode& pRootNode); - bool ResolveCameraBackgrounds(FbxScene& pScene); - void RemoveDuplicateTextures(FbxScene& pScene); - void RemoveDuplicateMaterials(FbxScene& pScene); - - void ReadPose(FbxScene& pScene); - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - void ReadCameraSwitcher(FbxScene& pScene); - void ReorderCameraSwitcherIndices(FbxScene& pScene); - - void ReadGobo(FbxScene& pScene); - void ReadGoboSection(FbxScene& pScene); - void ReadGobo(FbxGobo& pGobo); - - void ReadCharacter(FbxScene& pScene); - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - void ReadFilterSet(FbxCharacter& pCharacter); - void ReadControlSet(FbxControlSet& pControlSet); - void ReadControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId); - void ReadControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId); - void ReadEffector(FbxControlSet& pControlSet); - void ReadEffectorAux(FbxControlSet& pControlSet); - - int ReadCharacterPose(FbxScene& pScene); - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); - - void ReadGlobalLightSettings(FbxScene& pScene); - void ReadShadowPlane(FbxScene& pScene); - void ReadAmbientColor(FbxScene& pScene); - void ReadFogOption(FbxScene& pScene); - - void ReadGlobalCameraAndTimeSettings(FbxScene& pScene); // for pre v6 files - void ReadGlobalTimeSettings(FbxScene& pScene); - - void ReadGlobalCameraSettings(FbxScene& pScene); - - bool ReadMedia(FbxScene& pScene, const char* pEmbeddedMediaDirectory = ""); - FbxString ReadMediaClip(const char* pEmbeddedMediaDirectory); - - bool ReadNode ( FbxNode& pNode ); - bool ReadGenericNode ( FbxGenericNode& pNode ); - bool ReadNodeChildrenName ( FbxNode& pNode ); - bool ReadNodeShading ( FbxNode& pNode ); - bool ReadNodeCullingType ( FbxNode& pNode ); - bool ReadNodeLimits ( FbxNode& pNode ); - bool ReadNodeTarget ( FbxNode& pNode ); - bool ReadNodeAttribute ( FbxNode& pNode ); - bool ReadNodePivots ( FbxNode& pNode ); - bool ReadNodeDefaultAttributes ( FbxNode& pNode ); - bool ReadNodeProperties ( FbxNode& pNode ); - bool ReadGeometry ( FbxGeometry& pGeometry ); - bool ReadGeometryMaterial ( FbxGeometry& pGeometry ); - bool ReadGeometryTexture ( FbxGeometry& pGeometry ); - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - bool ReadGeometryLayer ( FbxGeometry& pGeometry ); - bool ReadGeometryTextureLayer ( FbxGeometry& pGeometry, int pLayerIndex ); - - bool ReadNull ( FbxNull& pNull ); - - bool ReadMarker ( FbxMarker& pMarker ); - - bool ReadCamera ( FbxCamera& pCamera ); - bool ReadCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool ReadLight ( FbxLight& pLight ); - - bool ReadMesh ( FbxMesh& pMesh ); - bool ReadMeshVertices ( FbxMesh& pMesh ); - bool ReadMeshNormals ( FbxMesh& pMesh ); - bool ReadMeshAssignation ( FbxMesh& pMesh ); - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - bool ReadMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool ReadMeshMaterialsID ( FbxMesh& pMesh ); - bool ReadMeshTexturesID ( FbxMesh& pMesh ); - bool ReadMeshTextureType ( FbxMesh& pMesh ); - bool ReadMeshTextureUV ( FbxMesh& pMesh ); - bool ReadMeshTextureIndex ( FbxMesh& pMesh ); - bool ReadMeshVertexColors ( FbxMesh& pMesh ); - - - // Layer elements - bool ReadLayerElements (FbxGeometry& pGeometry); - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture); - bool ReadLayerElementsUV (FbxGeometry* pGeometry, FbxArray& pElementsUV); - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - bool ReadNurb ( FbxNurbs& pNurbs ); - - bool ReadPatch ( FbxPatch& pPatch ); - int ReadPatchType ( FbxPatch& pPatch ); - - bool ReadTexture(FbxFileTexture& pTexture); - bool ReadSurfaceMaterial(FbxSurfacePhong& pMaterial); - bool ReadLink(FbxCluster& pLink); - bool ReadSkin(FbxSkin& pSkin); - bool ReadCluster(FbxCluster& pCluster); - bool ReadShape(FbxShape& pShape, FbxGeometry& pGeometry); - bool ReadVideo(FbxVideo& pVideo); - bool ReadConstraint(FbxConstraint& pPosition); - - bool ReadUserProperties (FbxNode& pNode); - bool ReadProperties(FbxObject *pObject); - - // - // 6.0 Format specific - // - bool ReadConnectionSection(); - void ReadPoses(FbxScene& pScene); - - FbxString ConvertCameraName(FbxString pCameraName); - - bool GenerateParametricGeometryLayer(FbxGeometry& pGeometry); - void CorrectTextureLayers(FbxMesh& pMesh); - - void TransferAnimation(void* pRootCurveNode, FbxProperty& pRootProperty, bool pValueOnly = false); - void ReadAnimation(FbxIO& pFileObject, void* pCurveNode); - void ReadAnimation(FbxIO& pFileObject, FbxObject* pObj); - - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet); - void DestroyTimeWarps(FbxMultiMap& pTimeWarpSet); - - FbxNode* FindNode (char* pName); - int FindString(FbxString pString, FbxArray& pStringArray); - FbxString FindFile(FbxString pFullFilePath, FbxString pRelativeFilePath = ""); - - bool ReadPassword(FbxString pPassword); - - void ReadSceneGenericPersistenceSection(FbxScene& pScene); - - - - -private: - FbxReaderFbx5& operator=(FbxReaderFbx5 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - - FbxCharPtrSet mNodeArrayName; - FbxCharPtrSet mTargetArrayName; - FbxCharPtrSet mUpNodeArrayName; - FbxCharPtrSet mCameraBackgroundArrayName; - - FbxObjectStringMap mObjectMap; - FbxArray mTakeInfo; - FbxDocumentInfo * mSceneInfo; - FbxAnimLayer* mAnimLayer; - - // Temporary storage - FbxArray mTemporaryTextures; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX5_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h deleted file mode 100644 index 55af3f4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h +++ /dev/null @@ -1,1102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX6_H_ - -#include - -#include - -class FbxAnimStack; -class FbxAnimLayer; -class Fbx6ObjectTypeInfo; -class Fbx6TypeReadReferences; - - -/** \brief Helper class to merge Class root property templates. - * Add class id and object to the template and search object by - * class id. - */ -class Fbx6ClassTemplateMap -{ -public: - - /** Constructor - * - */ - Fbx6ClassTemplateMap(); - - /** Destructor - * - */ - ~Fbx6ClassTemplateMap(); - - // Fbx6ClassTemplateMap will own this template object. - - /** Add the template object to template map - * \param pId Class Id - * \param pTemplateObject template object - * \return if the object is successfully added return \c true, otherwise return \c false. - */ - bool AddClassId( FbxClassId pId, FbxObject* pTemplateObject ); - - /** Merge the properties of FbxObject with the object with the same class id - * \param pObject The FbxObject to merge - * \return if the object is merged return \c true, otherwise return \c false. - */ - bool MergeWithTemplate( FbxObject* pObject ) const; - - /** Delete all FbxObject in template map - * - */ - void Clear(); - -private: - typedef FbxMap< FbxClassId, FbxObject*, FbxClassIdCompare > MapType; - MapType mClassMap; - - /** Whether the property is modified - * \param lProp The property to check - * \return If the property has been modified return \c true, otherwise return \c false - */ - bool HasModifiedFlags(FbxProperty lProp) const; - inline FbxPropertyFlags::EFlags IndexToFlag( int i ) const { return static_cast(1 << i); } -}; - - - -/** \brief This class is the FBX v6 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx6 : public FbxReader -{ -public: - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx6(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx6(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with FbxFile handle - * \param pFile the FbxFile handle - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(FbxFile * pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Get current Import mode - * \return return the EImportMode value - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - - /** Read all the properties and flags - * \param pParams settings to assign properties and flags - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - - /** Read scene information - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(); - - /** Read scene information by type - * \param pType the type to read - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - - /** Write scene information - * - */ - void WriteSceneInfo(FbxDocumentInfo*); - - /** Write thumbnail - * - */ - bool WriteThumbnail(FbxThumbnail*); - - /** - * \name FBX File sections - */ - //@{ - - /** Create generic object and connect with FbxIO document - * \param pDocument FbxDocument to connect with the generic object - * \param pObjectType type of generic object - * \param pObjectSubType Subtype of generic object - * \param pObjectName Name of generic object - * \param pFlags Object flag - * \return A pointer of the generic object. Return \c NULL if creation fails. - */ - FbxObject* CreateGenericObject(FbxDocument *pDocument, char* pObjectType, char* pObjectSubType, char* pObjectName, FbxObject::EObjectFlag pFlags=FbxObject::eSavable); - - /** Read description section and assign the document name - * \param pDocument Document to read - * \param pDocumentName Document name to assign - * \return if reading description section is successful return \c true, otherwise return \c false. - */ - bool ReadDescriptionSection(FbxDocument *pDocument, FbxString& pDocumentName); - - /** Read reference section and fill the external references - * \param pDocument Document to read - * \param pDocReferences External references to fill - * \return if reading reference section is successful return \c true, otherwise return \c false. - */ - bool ReadReferenceSection(FbxDocument *pDocument, Fbx6TypeReadReferences& pDocReferences); - - /** Read definition section and fill object type info array - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \return if reading definition section is successful return \c true, otherwise return \c false. - */ - bool ReadDefinitionSection(FbxDocument *pDocument, FbxArray& pObjectContent ); - - /** Read object section and fill object type info array and external reference - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \param pDocReferences External references to fill - * \return if reading object section is successful return \c true, otherwise return \c false. - */ - bool ReadObjectSection(FbxDocument *pDocument, FbxArray& pObjectContent, Fbx6TypeReadReferences& pDocReferences ); - - /** Read object information from document - * \param pDocument Document to read - * \param pObjectType Object type to assign - * \param pObjectSubType Object subtype to assign - * \param pObjectName Object Name - * \param pObjectUniqueId Object unique id - * \param pReferencedObject Reference object - * \param pDocReferences External reference - * \return if reading object is successful return \c true, otherwise return \c false. - */ - bool ReadObject(FbxDocument *pDocument, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject, Fbx6TypeReadReferences& pDocReferences); - - /** Read the connection section from document - * \param pDocument Document to read - * \return if reading connection section is successful return \c true, otherwise return \c false. - */ - bool ReadConnectionSection(FbxDocument *pDocument ); - //@} - - /** - * \name Takes and animation - */ - //@{ - - /** Read animation from document - * \param pDocument Document to read - * \return if reading animation is successful return \c true, otherwise return \c false. - */ - bool ReadDocumentAnimation(FbxDocument *pDocument); - - /** Read object animation from file object - * \param pFileObject File object handle - * \param pNode Fill this node with animation - * \param pAnimStack Animation stack to read from - * \param pExceptionFlag Exception flag - */ - void ReadObjectAnimation(FbxIO& pFileObject, FbxObject* pNode, FbxAnimStack& pAnimStack, int pExceptionFlag); - - /** Read property animation from file object - * \param pFileObject File object handle - * \param pProp Fill the property with animation - * \param pAnimStack Animation stack to read from - */ - void ReadPropertyAnimation(FbxIO& pFileObject, FbxProperty* pProp, FbxAnimStack& pAnimStack); - - /** Read take animation from fbx scene - * \param pScene Scene to read animation - * \param pTakeInfo Take info to read from - * \remarks This function will allocate the corresponding FbxAnimStack with the base animation layer. - */ - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - - /** Read node animation from file - * \param pFileObject File object to read - * \param pScene Scene to read animation - * \param pAnimStack The animation stack to read from - * \param pTakeInfo Take info to read from - */ - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxAnimStack& pAnimStack, FbxTakeInfo* pTakeInfo); - - - /** Read layer information from file - * \param pFileObject File object to read - * \param pTakeInfo Take info to read from - */ - void ReadLayers(FbxIO& pFileObject, FbxTakeInfo* pTakeInfo); - - /** Read time warps from file - * \param pFileObject File object to read - * \param pTimeWarpSet Time warp set to fill - * \param pScene Scene holding the time warp curves. - */ - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet, FbxScene& pScene); - - /** Read thumbnail - * \return A pointer of thumbnail. Return \c NULL if any error exist - */ - FbxThumbnail* ReadThumbnail(); - - /** Set time shift for node animation from take information - * \param pScene Scene to read - * \param pAnimStack The animation stack to modify - * \param pTimeOffsetType A value from the FbxTakeInfo::EImportOffsetType enumeration that indicates the time shift offset type - * \param pTimeOffset The time shift offset - * \return if time shifting is successful return \c true, otherwise return \c false. - */ - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxAnimStack& pAnimStack, int pTimeOffsetType, FbxTime pTimeOffset); - //@} - - /** - * \name Camera switcher - */ - //@{ - - /** Read camera switcher from scene - * \param pScene Scene to read from - */ - void ReadCameraSwitcher(FbxScene& pScene); - - /** Fill camera switcher object with data - * \param pCameraSwitcher Camera switcher to fill - */ - bool ReadCameraSwitcher( FbxCameraSwitcher& pCameraSwitcher ); - - /** Reorder camera switcher indices in the scene - * \param pScene Scene to read from - */ - void ReorderCameraSwitcherIndices(FbxScene& pScene); - //@} - - /** - * \name Global parameters - */ - //@{ - - /** Read global light settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalLightSettings(FbxScene& pScene); - - /** Read global time settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalTimeSettings(FbxScene& pScene); - - /** Read global camera settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalCameraSettings(FbxScene& pScene); - - /** Read shadow plane from scene - * \param pScene Scene to read from - */ - void ReadShadowPlane(FbxScene& pScene); - - /** Read ambient color from scene - * \param pScene Scene to read from - */ - void ReadAmbientColor(FbxScene& pScene); - - /** Read fog option from scene - * \param pScene Scene to read from - */ - void ReadFogOption(FbxScene& pScene); - //@} - - /** - * \name Character - */ - //@{ - - /** Read character information from file - * \param pCharacter Character object to fill - * \param pInputType Unused. - * \param pInputIndex Unused. - */ - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - - /** Read character link group information from file by group id - * \param pCharacter Character object to fill - * \param pCharacterGroupId Group id to read character link - */ - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - - /** Read character link information from file by node id - * \param pCharacter Character object to fill - * \param pCharacterNodeId Character node id - */ - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - - /** Read character link formation in rotation space - * \param pCharacterLink Character link object to fill - */ - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - /** Read character pose from file - * \param pCharacterPose Character pose to fill - * \return if reading character pose is successful return \c true, otherwise return \c false. - */ - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); // TBV - //@} - - /** - * \name Misc - */ - //@{ - /** Read pose object from scene - * \param pScene Scene to read from - * \param pPose Pose object - * \param pAsBindPose whether to treat the pose as BindPose - * \return if reading pose is successful return \c true, otherwise return \c false. - */ - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - /** Read media data from document - * \param pDocument Document to read from - * \param pEmbeddedMediaDirectory the directory path storing the embedded media - * \return if reading media is successful return \c true, otherwise return \c false. - */ - bool ReadMedia(FbxDocument *pDocument, const char* pEmbeddedMediaDirectory = ""); - - /** Read global settings from file - * \param pGlobalSettings global settings object to fill - * \return if reading global settings is successful return \c true, otherwise return \c false. - */ - bool ReadGlobalSettings(FbxGlobalSettings& pGlobalSettings); - //@} - - /** - * \name Objects - */ - //@{ - - /** Read node data from file - * \param pNode Node object to fill data - * \param pObjectSubType Subtype of object - * \param pDocReferences External reference - * \return if reading node data is successful return \c true, otherwise return \c false. - */ - bool ReadNode ( FbxNode& pNode, FbxString& pObjectSubType, Fbx6TypeReadReferences& pDocReferences ); - - /** Read properties and flags for fbx container - * \param pContainer container to fill data - * \return if reading data to container is successful return \c true, otherwise return \c false. - */ - bool ReadContainer ( FbxContainer& pContainer ); - - /** Read properties and flags for fbx generic node - * \param pNode generic node to fill data - * \return if reading data to generic node is successful return \c true, otherwise return \c false. - */ - bool ReadGenericNode ( FbxGenericNode& pNode ); - - /** Read shading information of node - * \param pNode fbx node to fill shading information - * \return if reading shading information to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeShading ( FbxNode& pNode ); - - /** Read back-face culling type for node - * \param pNode fbx node - * \return if reading culling type to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeCullingType ( FbxNode& pNode ); // TBV, probablement passe tout en property - - /** Read target transform for node - * \param pNode fbx node - * \return if reading target transform to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeTarget ( FbxNode& pNode ); - - /** Read node attribute according to object subtype - * \param pNode fbx node - * \param pObjectSubType object subtype - * \param pCreatedAttribute set to true if attribute exists - * \param pDocReferences external reference to search - * \return if reading node attribute is successful return \c true, otherwise return \c false. - */ - bool ReadNodeAttribute ( FbxNode& pNode , FbxString& pObjectSubType, bool& pCreatedAttribute, Fbx6TypeReadReferences& pDocReferences); - - /** Read node attribute according to object subtype - * \param pObjectSubType object subtype - * \param pObjectName object name - * \param pObjectUniqueId unique id of object - * \param pReferencedObject pointer of reference object - * \return A pointer of node attribute. Return \c NULL if the attribute does not exist - */ - FbxNodeAttribute* ReadNodeAttribute( FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject); - - /** Read node properties , flags and update the - * node pivot and limits according to properties - * \param pNode FBX node - * \param pReadNodeAttributeProperties whether to - * \return if reading node properties is successful return \c true, otherwise return \c false. - */ - bool ReadNodeProperties ( FbxNode& pNode, bool pReadNodeAttributeProperties ); - - /** Read layered texture from file - * \param pTex Layered texture to fill - * \return if reading layered texture is successful return \c true, otherwise return \c false. - */ - bool ReadLayeredTexture ( FbxLayeredTexture& pTex ); - - /** Read FBX links for geometry - * \param pGeometry FBX geometry - * \return if reading geometry links is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - - /** Read FBX shapes for geometry - * \param pGeometry FBX geometry - * \return if reading geometry shapes is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - - /** Read the null node from file - * \param pNull Null node - * \return if reading null node is successful return \c true, otherwise return \c false. - */ - bool ReadNull ( FbxNull& pNull ); - - /** Read the marker node from file - * \param pMarker Marker node - * \return if reading marker node is successful return \c true, otherwise return \c false. - */ - bool ReadMarker ( FbxMarker& pMarker ); - - /** Read the camera node from file - * \param pCamera Camera node - * \return if reading camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCamera ( FbxCamera& pCamera ); - - /** Read the stereo camera node from file - * \param pCameraStereo Stereo camera node - * \return if reading stereo camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereo ( FbxCameraStereo& pCameraStereo ); - - /** Read the precomp file from binary file - * \param pCameraStereo Stereo camera node - * \return if reading precomp file is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereoPrecomp (FbxCameraStereo& pCameraStereo); - - /** Read the light node from file - * \param pLight light node - * \return if reading light node is successful return \c true, otherwise return \c false. - */ - bool ReadLight ( FbxLight& pLight ); - - /** Read the binding table node from file. - * Create all the binding table entries and fill with embedded data - * \param pTable binding table - * \return if reading binding table is successful return \c true, otherwise return \c false. - */ - bool ReadBindingTable ( FbxBindingTable& pTable ); - - /** Read the binding operator from file - * \param pOperator binding operator - * \return if reading binding operator is successful return \c true, otherwise return \c false. - */ - bool ReadBindingOperator ( FbxBindingOperator& pOperator ); - - /** Read vertices, polygon indices, edges, layer elements, geometry links and shapes to mesh object - * \param pMesh fbx mesh - * \return if reading mesh object is successful return \c true, otherwise return \c false. - */ - bool ReadMesh ( FbxMesh& pMesh ); - - /** Read mesh smoothness factor from mesh - * \param pMesh fbx mesh - * \return if reading mesh smoothness is successful return \c true, otherwise return \c false. - */ - bool ReadMeshSmoothness ( FbxMesh& pMesh ); - - /** Read vertices of mesh object - * \param pMesh fbx mesh - * \return if reading mesh vertices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshVertices ( FbxMesh& pMesh ); - - /** Read polygon indices of mesh object - * \param pMesh fbx mesh - * \return if reading polygon indices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - - /** Read edges of mesh object - * \param pMesh fbx mesh - * \return if reading mesh edges is successful return \c true, otherwise return \c false. - */ - bool ReadMeshEdges ( FbxMesh& pMesh ); - - //** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - //* \param pSubdiv fbx subdiv - //* \param pObjectName Object Name - //* \param pReferencedObject pointer of reference object - //* \return if reading subdiv object is successful return \c true, otherwise return \c false. - //*/ - //bool ReadSubdiv( FbxSubDiv& pSubdiv, FbxString& pObjectName, FbxObject* pReferencedObject); - - /** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - * \param pSubdiv fbx subdiv - * \return if reading subdiv object is successful return \c true, otherwise return \c false. - */ - bool ReadSubdiv( FbxSubDiv& pSubdiv); - - /** Read properties and flags for fbx document - * \param pSubDocument fbx document - * \return if reading document information is successful return \c true, otherwise return \c false. - */ - bool ReadDocument ( FbxDocument& pSubDocument ); - - /** Read properties and flags for fbx collection - * \param pCollection fbx collection - * \return if reading fbx collection is successful return \c true, otherwise return \c false. - */ - bool ReadCollection ( FbxCollection& pCollection ); - - /** Read properties and flags for fbx selection set - * \param pSelectionSet fbx selection set - * \return if reading fbx selection set is successful return \c true, otherwise return \c false. - */ - bool ReadSelectionSet ( FbxSelectionSet& pSelectionSet); - - bool ReadSelectionNode (FbxSelectionNode& pSelectionNode); - - /** Read nurb data including surface types, nurb type, display type, steps, control points and UV. - * \param pNurbs Nurb object - * \return if reading nurb data is successful return \c true, otherwise return \c false. - */ - bool ReadNurb ( FbxNurbs& pNurbs ); - - /** Read nurb surface data including surface types, surface type, display type, steps, control points and UV vectors. - * \param pNurbs Nurb surface object - * \return if reading nurb surface data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsSurface ( FbxNurbsSurface& pNurbs ); - - /** Read patch data including patch type, dimension, display type, steps, UV cap and control points. - * \param pPatch Patch object - * \return if reading patch data is successful return \c true, otherwise return \c false. - */ - bool ReadPatch ( FbxPatch& pPatch ); - - /** Read patch type in string and return type in enum - * \param pPatch Patch object - * \return patch type in enum - */ - int ReadPatchType ( FbxPatch& pPatch ); - - - /** Read nurb curve data including types, dimension, rational-ness, control points and knots. - * \param pNurbsCurve Nurb curve - * \return if reading nurb curve data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsCurve ( FbxNurbsCurve& pNurbsCurve ); - - /** Read trim Nurb surface objects with properties - * \param pNurbs Trim nurb surface * \return if reading trim nurb surface is successful return \c true, otherwise return \c false. - */ - bool ReadTrimNurbsSurface ( FbxTrimNurbsSurface& pNurbs ); - - /** Read properties and flags of fbx boundary - * \param pBoundary Fbx boundary object - * \return if reading fbx boundary is successful return \c true, otherwise return \c false. - */ - bool ReadBoundary ( FbxBoundary& pBoundary ); - - /** Read shape object properties from file - * \param pShape Fbx Shape - * \param pGeometry Geometry contains the shape - * \return if reading shape object properties is successful return \c true, otherwise return \c false. - */ - bool ReadShape ( FbxShape& pShape, FbxGeometry& pGeometry); - - /** Read properties and flags of fbx implementation - * \param pImplementation Fbx implementation - * \return if reading fbx implementation is successful return \c true, otherwise return \c false. - */ - bool ReadImplementation ( FbxImplementation& pImplementation ); - - /** Read texture object data including name, UV transform, alpha and cropping. - * \param pTexture Fbx texture object - * \return if reading texture object is successful return \c true, otherwise return \c false. - */ - bool ReadFileTexture (FbxFileTexture& pTexture); - - /** Read surface material from file - * \param pName Material Name - * \param pMaterialType Material type - * \param pReferencedMaterial Reference material to clone from if it is not \c NULL - * \return A pointer of read surface material - */ - FbxSurfaceMaterial* ReadSurfaceMaterial(const char* pName, const char* pMaterialType, FbxSurfaceMaterial* pReferencedMaterial); - - /** Read video object from file - * \param pVideo Fbx video object - * \return if reading video object is successful return \c true, otherwise return \c false. - */ - bool ReadVideo (FbxVideo& pVideo); - - /** Read thumbnail object from file - * \param pThumbnail Fbx thumbnail - * \return if reading thumbnail is successful return \c true, otherwise return \c false. - */ - bool ReadThumbnail (FbxThumbnail& pThumbnail); - //@} - - - /** - * \name Layer elements - */ - //@{ - - /** Read all layer elements for geometry - * \param pGeometry geometry to fill - * \return if reading all layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElements (FbxGeometry& pGeometry); - - /** Read material layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsMaterial material layer element array - * \return if reading material layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - - /** Read normal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsNormal normal layer element array - * \return if reading normal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - - /** Read Tangent layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTangent Tangent layer element array - * \return if reading Tangent layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTangent (FbxGeometry* pGeometry, FbxArray& pElementsTangent); - - /** Read Binormal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsBinormal Binormal layer element array - * \return if reading Binormal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsBinormal (FbxGeometry* pGeometry, FbxArray& pElementsBinormal); - - /** Read vertex color layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexColor vertex color layer element array - * \return if reading vertex color layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - - /** Read texture layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTexture texture layer element array - * \param pTextureType the type of elements to read - * \return if reading texture layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture, FbxLayerElement::EType pTextureType); - - /** Read UV layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUV UV layer element array - * \param pTextureType the type of elements to read - * \return if reading UV layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsChannelUV (FbxGeometry* pGeometry, FbxArray& pElementsUV, FbxLayerElement::EType pTextureType); - - /** Read polygon group layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsPolygonGroup polygon group layer element array - * \return if reading polygon group layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - /** Read smoothing layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsSmoothing Smoothing group layer element array - * \return if reading smoothing layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsSmoothing (FbxGeometry* pGeometry, FbxArray& pElementsSmoothing); - - /** Read user data layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUserData User data layer element array - * \return if reading user data layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsUserData (FbxGeometry* pGeometry, FbxArray& pElementsUserData); - - /** Read visibility layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVisibility visibility layer element array - * \return if reading visibility layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVisibility (FbxGeometry* pGeometry, FbxArray& pElementsVisibility); - - /** Read edge crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsEdgeCrease edge crease layer element array - * \return if reading edge crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementEdgeCrease (FbxGeometry*pGeometry, FbxArray& pElementsEdgeCrease); - - /** Read vertex crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexCrease vertex crease layer element array - * \return if reading vertex crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementVertexCrease (FbxGeometry*pGeometry, FbxArray& pElementsVertexCrease); - - /** Read hole layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsHole hole layer element array - * \return if reading hole layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementHole (FbxGeometry*pGeometry, FbxArray& pElementsHole); - //@} - - /** - * \name Geometry weighted maps - */ - //@{ - - /** Read geometry weight map from file - * \param pGeometryWeightedMap geometry weighted - * \return if reading geometry weight map is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - //@} - - /** - * \name Deformers / Constraints - */ - //@{ - - /** Read link object from file - * \param pLink fbx link object - * \return if reading link object is successful return \c true, otherwise return \c false. - */ - bool ReadLink(FbxCluster& pLink); - - /** Read SDK skin from file - * \param pSkin SDK skin object - * \return if reading skin object is successful return \c true, otherwise return \c false. - */ - bool ReadSkin(FbxSkin& pSkin); - - /** Read properties and flags for vertex cache deformer from file - * \param pDeformer fbx vertex cache deformer - * \return if reading vertex cache deformer is successful return \c true, otherwise return \c false. - */ - bool ReadVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - - /** Read cluster object data from file - * \param pCluster fbx cluster object - * \return if reading cluster object is successful return \c true, otherwise return \c false. - */ - bool ReadCluster(FbxCluster& pCluster); - - /** Read constraint object from file - * \param pPosition fbx constraint object - * \return if reading constraint object is successful return \c true, otherwise return \c false. - */ - bool ReadConstraint(FbxConstraint& pPosition); - //@} - - // Cache - - /** Read fbx cache file - * \param pCache fbx cache - * \return if reading cache data is successful return \c true, otherwise return \c false. - */ - bool ReadCache(FbxCache& pCache); - - /** - * \name Post-processing / utility functions - */ - //@{ - - /** Make sure the Camera's background textures are properly connected - * \param pScene fbx scene - * \remarks This function only applies when it detects older file versions in - * which the background texture is connected directly to the object instead of - * the corresponding property. - */ - bool ResolveCameraBackgrounds(FbxScene& pScene); - - /** Remove duplicate textures in the same scene - * \param pScene fbx scene - */ - void RemoveDuplicateTextures(FbxScene& pScene); - - /** Replace textures in the geometry - * \param pTextureDuplicate texture array - * \param pTextureReplacement texture array to replace - * \param pGeometry geometry owns these textures - * \param pTextureType layer element type - */ - void ReplaceTextures(FbxArray const& pTextureDuplicate, - FbxArray const& pTextureReplacement, - FbxGeometry* pGeometry, FbxLayerElement::EType pTextureType); - - /** Remove duplicated materials in the same scene - * \param pScene FBX scene - */ - void RemoveDuplicateMaterials(FbxScene& pScene); - - /** convert camera name for naming convention - * \param pCameraName original camera name - * \return new name for the camera - */ - FbxString ConvertCameraName(FbxString pCameraName); - - /** Search string in a string array - * \param pString the string to search - * \param pStringArray string array - * \return return the index of the array if the string is found, otherwise return \c -1 - */ - int FindString(FbxString pString, FbxArray& pStringArray); - - /** Read password from string - * \param pPassword password in string - * \return if the password is valid return \c true, otherwise return \c false - */ - bool ReadPassword(FbxString pPassword); - - /** Publish properties - * \param pObject fbx object - */ - void PublishProperties(FbxObject& pObject); - - /** Read properties for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - */ - bool ReadProperties(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - - /** Read properties and flags for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - * \return if reading properties and flags is successful return \c true, otherwise return \c false. - */ - bool ReadPropertiesAndFlags(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - /** Read flags for fbx object from file object - * \param pFbxObject object to set flags - * \param pFbxFileObject file to read - * \return if reading flags is successful return \c true, otherwise return \c false. - */ - bool ReadFlags(FbxObject *pFbxObject, FbxIO* pFbxFileObject); - - /** Rebuild trim regions indices from the boundary connections - * \param pScene Fbx scene - */ - void RebuildTrimRegions(FbxScene& pScene) const; - - /** Rebuild subdivision object from subdiv-mesh connections - * \param pScene Fbx scene - */ - void SetSubdivision(FbxScene& pScene) const; - - /** Convert shape deform property to DeformPercent property of FbxBlendShapeChannel - * \param pScene Fbx scene - */ - void ConvertShapeDeformProperty(FbxScene& pScene) const; - - /** Rebuild layered texture alphas from sub texture connections. - * \param pScene Fbx scene - */ - void RebuildLayeredTextureAlphas(FbxScene& pScene) const; - - //---------------- in progress ------------------------------- - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - //--------------- end in progress ---------------------------- - - /** Read global settings, axis system, system unit from main section of file - * - */ - void ReadGlobalSettingsInMainSection(); - - /** Read statistic data from definition section - * - */ - void ReadDefinitionSectionForStats(); - //@} - -private: - - FbxReaderFbx6& operator=(FbxReaderFbx6 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - FbxCharPtrSet mNodeArrayName; - FbxObjectStringMap mObjectMap; - - bool mParseGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnit; - FbxTime::EMode mFrameRate; - - bool mRetrieveStats; - FbxStatistics* mDefinitionsStatistics; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxAnimLayer* mAnimLayer; - FbxMultiMap mNickToKFCurveNodeTimeWarpsSet; - FbxMultiMap* mNickToAnimCurveTimeWarpsSet; - - Fbx6ClassTemplateMap mClassTemplateMap; - FbxProgress* mProgress; - bool mProgressPause; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX6_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h deleted file mode 100644 index d8f420b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX7_H_ - -#include - -#include - -struct FbxReaderFbx7_Impl; - -/** \brief This class is the FBX v7 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx7 : public FbxReader -{ -public: - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx7(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx7(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with default flag - */ - virtual bool FileOpen(FbxFile* pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** Get current Import mode - * - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo(); - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxReaderFbx7(const FbxReaderFbx7&); - FbxReaderFbx7& operator=(FbxReaderFbx7 const&); - -private: - FbxReaderFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX7_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h deleted file mode 100644 index d1d2849..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ - -#include - -#include - -//Writable versions for this file type. -//Sync the functions PreProcessScene and PostProcessScene with these elements of this list. - -class FbxWriterFbx5 : public FbxWriter -{ -public: - FbxWriterFbx5(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx5(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - - virtual bool SupportsStreams() const { return true; } - -private: - bool WriteAnimation(FbxScene& pScene); - bool WriteAnimation(FbxNode& pRootNode, FbxAnimLayer* pAnimLayer); - void WriteTakeNode(KFCurveNode* pCurveNode, bool pRescaleShininess); - bool WriteTakeNode(FbxObject& pObj, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pRescaleShininess = false); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - void WriteSceneInfo(FbxDocumentInfo*); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - bool WriteNode(FbxNode* pNode); - - bool WriteCameraSwitcher(FbxScene& pScene); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - void WriteCharacter(FbxScene& pScene); - void WriteCharacter(FbxScene& pScene, int pCharacterIndex); - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene, bool pBackwardCompatible); - void WriteFilterSet(FbxCharacter& pCharacter); - void WriteControlSet(FbxControlSet& pControlSet, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId, FbxScene& pScene); - void WriteEffector(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - void WriteEffectorAux(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WritePose(FbxScene& pScene); - void WritePose(FbxPose& pPose); - - void WriteConstraint(FbxScene& pScene); - - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraAndTimeSettings(FbxScene& pScene); - - bool WriteMedia(FbxScene& pScene, bool pMediaEmbedded, int& pMediaCount); - bool WriteMediaClip(FbxString& pFileName, bool pEmbeddedMedia); - void WriteDefaultMedia(); - - bool WriteNode (FbxNode& pNode); - bool WriteNodeBegin (FbxNode& pNode); - bool WriteNodeParameters (FbxNode& pNode); - bool WriteNodeVersion (FbxNode& pNode); - bool WriteNodeShading (FbxNode& pNode); - bool WriteNodeAnimationSettings (FbxNode& pNode); - bool WriteNodeCullingType (FbxNode& pNode); - bool WriteNodeLimits (FbxNode& pNode); - bool WriteNodeProperties (FbxNode& pNode); - bool WriteNodeTarget (FbxNode& pNode); - bool WriteNodeAnimatedProperties(FbxNode& pNode); - bool WriteNodeAttribute (FbxNode& pNode); - bool WriteNodeDefaultAttributes (FbxNode& pNode); - bool WriteNodeChildrenList (FbxNode& pNode); - bool WriteNodeEnd (FbxNode& pNode); - - bool WriteNull ( FbxNull* pNull ); - - bool WriteMarker ( FbxNode& pNode ); - - bool WriteCamera ( FbxCamera& pCamera, bool pIsProducerCamera = false ); - - bool WriteCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool WriteLight ( FbxLight& pLight ); - - bool WriteGeometry ( FbxGeometry& pGeometry ); - bool WriteGeometryLayer ( FbxGeometry& pGeometry ); - bool WriteGeometryTextureLayer ( FbxGeometry& pGeometry, int pIndex ); - - bool WriteMesh ( FbxMesh& pMesh ); - bool WriteMeshVertices ( FbxMesh& pMesh ); - bool WriteMeshNormals ( FbxMesh& pMesh ); - bool WriteMeshMaterial ( FbxMesh& pMesh ); - bool WriteMeshTexture ( FbxMesh& pMesh ); - bool WriteMeshGeometryUVInfo ( FbxMesh& pMesh ); - bool WriteMeshPolyVertexIndex ( FbxMesh& pMesh ); - bool WriteMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool WriteMeshVertexColors ( FbxMesh& pMesh ); - - bool WriteNurb ( FbxNurbs& pNurbs ); - - bool WritePatch ( FbxPatch& pPatch ); - bool WritePatchType ( FbxPatch& pPatch, int pType ); - - bool WriteSkeleton ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonRoot ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimb ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimbNode ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonEffector ( FbxSkeleton& pSkeleton ); - - bool WriteOpticalReference ( FbxOpticalReference& pOpticalReference ); - - bool WriteTexture(FbxFileTexture& pTexture); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - bool WriteLink(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - - bool WriteProperties(FbxObject* pObject); - - int FindString(FbxString pString, FbxArray& pStringArray); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - void ConvertShapeNamesToV5Format(FbxNode& pNode); - void RevertShapeNamesToV6Format (FbxNode& pNode); - - void WritePassword(); - - void FindAnimatedChannels(FbxScene& pScene); - void ClearAnimatedChannels(); - - void WriteSceneGenericPersistenceSection(FbxScene& pScene); - - void ForceKFCurveNodesOnTRS(FbxNode* pNode); - void SetPivotStateRecursive(FbxNode* pNode); - -private: - FbxWriterFbx5& operator=(const FbxWriterFbx5&) { return *this; } - - FbxIO* mFileObject; - FbxExporter& mExporter; - - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h deleted file mode 100644 index de3ccf6..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ - -#include - -#include - -class Fbx6TypeDefinition; -class Fbx6TypeWriteReferences; -class Fbx6TypeObjectHierarchy; - -typedef FbxArray TakeInfoArray; - -class FbxWriterFbx6 : public FbxWriter -{ -public: - FbxWriterFbx6(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx6(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum {eASCII, eBINARY, eENCRYPTED} EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual bool SupportsStreams() const { return true; } - -private: - /*************************** new writer ***************************/ - void ConvertShapePropertyToOldStyle(FbxScene& pScene); - void ConvertShapePropertyToNewStyle(FbxScene& pScene); - void BuildObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void SetObjectWriteSupport(const Fbx6TypeDefinition& pDefinitions); - bool WriteDescriptionSection(FbxDocument* pDocument); - bool WriteReferenceSection(FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences); - void WriteObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void WriteObjectProperties(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - - void FlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy, bool pFirstCall=true); - void UnFlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy); - bool WriteObjectHeaderAndReferenceIfAny(FbxObject& pObj, const char* pObjectType) const; - - FbxObject* GetObjectIndirection(FbxObject* pObject); - void WriteObjectConnections(FbxDocument* pDocument); - void WriteTakesAndAnimation(FbxDocument* pDocument); - - void WriteConstraints(FbxScene& pScene); - void WriteConstraint(FbxConstraint& pConstraint, FbxScene& pScene); - - void WriteGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - void WriteNodeAttributes(const FbxDocument& pDocument); - void WriteAllGeometries(FbxScene& pScene); - - void WriteAllGeometryWeightedMaps(FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene); - void WriteCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - void WriteControlSetPlug(FbxScene& pScene); - - /*************************** new writer ***************************/ - bool WriteNodes(FbxScene& pScene, bool pIncludeRoot); - bool WriteNodes(const FbxDocument& pDocument); - - /*************************** kept functions ***************************/ - bool WriteObjectProperties(FbxObject* pObject); - bool WriteObjectPropertiesAndFlags(FbxObject* pObject); - - bool WriteContainers(FbxScene& pScene); - - bool WriteNode(FbxNode& pNode); - bool WriteNodeBegin(FbxNode& pNode); - bool WriteNodeEnd(FbxNode& pNode); - bool WriteNodeParameters(FbxNode& pNode); - bool WriteNodeVersion(FbxNode& pNode); - bool WriteNodeAnimationSettings(FbxNode& pNode); - bool WriteNodeShading(FbxNode& pNode); - bool WriteNodeCullingType(FbxNode& pNode); - bool WriteNodeAttribute(FbxNodeAttribute* pNodeAttribute); - bool WriteNodeProperties(FbxNode& pNode); - - bool WriteNodeType(FbxNode& pNode); - bool WriteNull(FbxNull* pNull); - bool WriteMarker(FbxNode& pNode); - bool WriteSkeleton(FbxSkeleton& pSkeleton); - bool WriteSkeletonRoot(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimb(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimbNode(FbxSkeleton& pSkeleton); - bool WriteSkeletonEffector(FbxSkeleton& pSkeleton); - bool WriteGenericNodes(FbxScene& pScene); - - bool WriteGeometry(FbxGeometry& pGeometry); - bool WriteMesh(FbxMesh& pMesh); - bool WriteMeshSmoothness(FbxMesh& pMesh); - bool WriteMeshVertices(FbxMesh& pMesh); - bool WriteMeshPolyVertexIndex(FbxMesh& pMesh); - bool WriteMeshEdges(FbxMesh& pMesh); - bool WriteNurb(FbxNurbs& pNurbs); - bool WriteNurbsSurface(FbxNurbsSurface& pNurbs); - bool WriteNurbsCurve(FbxNurbsCurve& pNurbsCurve); - bool WriteTrimNurbsSurface(FbxTrimNurbsSurface& pNurbs); - bool WriteBoundary(FbxBoundary& pBoundary); - bool WriteSubdiv(FbxSubDiv& pSubdiv); - - bool WritePatch(FbxPatch& pPatch); - bool WritePatchType(FbxPatch& pPatch, int pType); - - bool WriteDeformers(FbxScene& pScene); - bool WriteSkin(FbxSkin& pSkin); - bool WriteVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - bool WriteCluster(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - bool WriteFbxLayerElementNormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementBinormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTangents(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementMaterials(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTextures(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTexturesChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - bool WriteFbxLayerElementUVsChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - - bool WriteFbxLayerElementPolygonGroups(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexColors(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUVs(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementSmoothing(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUserData(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVisibility(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementEdgeCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementHole(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - - bool WriteLayers(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - int MapLayeredTextureIndexToConnectionIndex(FbxNode* pNode, void* pLET, int pIndex); - - bool WriteMaterials(FbxDocument* pDocument); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - - bool WritePose(FbxScene& pScene); - - // Write Connections - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrcObject, FbxDocument* pDstDocument); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxProperty& pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxProperty& pDst); - - void WriteObjectConnections(FbxDocument* pDocument, FbxObject* pObject, bool pRecursive); - - bool WriteCamera(FbxCamera& pCamera); - bool WriteCameraStereo(FbxCameraStereo& pCameraStereo); - bool WriteLight(FbxLight& pLight); - bool WriteCameraSwitcher(FbxScene& pScene); - bool WriteCameraSwitcher(FbxCameraSwitcher& pCameraSwitcher); - - bool WriteTextures(FbxDocument* pDocument); - bool WriteTexture(FbxFileTexture& pTexture); - - bool WriteTimeWarps(FbxDocument* pDocument, FbxAnimStack* pAnimStack); - bool WriteThumbnails(FbxDocument* pDocument); - bool WriteThumbnail(FbxThumbnail& pThumbnail); - - bool WriteCaches(FbxDocument* pDocument); - bool WriteCache(FbxCache& pCache); - - bool WriteBindingTables(FbxDocument* pDocument); - bool WriteBindingTable(FbxBindingTable& pTable); - - bool WriteBindingOperators(FbxDocument* pDocument); - bool WriteBindingOperator(FbxBindingOperator& pOperator); - - bool WriteImplementations(FbxDocument* pDocument); - bool WriteImplementation(FbxImplementation& pImplementation); - - bool WriteCollections(FbxDocument* pDocument); - bool WriteCollection(FbxCollection& pImplementation); - - bool WriteDocuments(FbxDocument* pDocument); - bool WriteDocument(FbxDocument& pSubDocument); - - bool WriteLayeredTextures(FbxDocument* pDocument); - bool WriteLayeredTexture(FbxLayeredTexture& pTexture); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - bool WriteVideos(FbxDocument* pDocument); - bool WriteVideo(FbxVideo& pVideo, FbxString& pFileName, bool pEmbeddedMedia); - - bool WriteAnimation(FbxDocument* pDocument); - bool WriteAnimation(FbxDocument* pDocument, FbxAnimLayer* pAnimLayer); - - bool WriteFCurves(FbxObject& pObject, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pKeepBlockOpen=false, bool pRescaleShininess=false); - - void WritePose(FbxPose& pPose); - - bool WriteSelectionNode(FbxScene& pScene); - void WriteSelectionNode(FbxSelectionNode& pSelectionNode); - - bool WriteSelectionSet(FbxScene& pScene); - void WriteSelectionSet(FbxSelectionSet& pSelectionSet); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - - void WriteSceneInfo(FbxDocumentInfo*); - void WriteGlobalSettings(FbxGlobalSettings& pGlobalSettings); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - int FindString(FbxString pString, FbxArray& pStringArray); - - /****************** Function that write in the v5 section******************/ - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraSettings(FbxScene& pScene); - void WriteGlobalTimeSettings(FbxScene& pScene); - /****************** Function that write in the v5 section******************/ - - void WritePassword(); - - void WriteLayeredAnimation(FbxScene& pScene); - -private: - void WritePropertyTemplate(FbxClassId pClassId, FbxDocument* pDocument, bool& pVisitedNodeClass); - void WriteProperty(FbxProperty& pProperty, bool lSetNodeAttributeFlag); - void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode); - - FbxWriterFbx6& operator=(const FbxWriterFbx6&); - - FbxScene* mScene; - FbxIO* mFileObject; - FbxExporter& mExporter; - Fbx6TypeObjectHierarchy* mDocumentHierarchy; - Fbx6TypeWriteReferences* mDocumentReferences; - - bool mWriteNonDefaultPropertiesOnly; - bool mWriteEnhancedProperties; - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - FbxMultiMap mTimeWarpsCurveNodes; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; - - FbxNode* mCurrentNode; - - struct ModifiedPropertyInfo { FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void ReplaceUnsupportedProperties(FbxScene* pScene, bool pPreprocessPass, int pFormatV); - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - bool IsLeafRoll(const FbxString& pNameWithoutNameSpacePrefix); - - FbxProgress* mProgress; - bool mProgressPause; -}; - -bool IsNameUnique(FbxScene& pScene, FbxObject* pObject); - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h deleted file mode 100644 index b62f34e..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ - -#include - -#include - -struct FbxWriterFbx7_Impl; - -class FbxWriterFbx7 : public FbxWriter -{ -public: - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, EExportMode pMode, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx7(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual void SetProgressHandler(FbxProgress *pProgress); - - void SetExportMode(EExportMode pMode); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxWriterFbx7(const FbxWriterFbx7&); - FbxWriterFbx7& operator=(const FbxWriterFbx7&); - - struct ModifiedPropertyInfo{ FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - - void MakeNonSavableAndRemember(FbxObject* pObj); - FbxArray mSwitchedToNonSavablesObjects; - FbxArray mAnimLayerInternallyAdded; - -private: - FbxWriterFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxbase64coder.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxbase64coder.h deleted file mode 100644 index abbd14c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxbase64coder.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbase64coder.h -#ifndef _FBXSDK_FILEIO_BASE64CODER_H_ -#define _FBXSDK_FILEIO_BASE64CODER_H_ - -#include - -#include - -#include - -/** This class decodes Base64 encoded data. */ -class FBXSDK_DLL FbxBase64Decoder -{ -public: - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data. - * \param pInSize the size of the input data in bytes (must be a multiple of 4) - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer, or -1 if the output buffer is too small, or contains invalid characters */ - int Decode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data; its length is computed using strlen(). - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer. */ - int Decode(const char* pInBuffer, void* pOutBuffer, int pOutSize); -}; - -/** This class encodes data in the Base64 format. */ -class FBXSDK_DLL FbxBase64Encoder -{ -public: - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer, receives data encoded in Base64. - * \param pOutSize the capacity of the output buffer in bytes, which should be at least 33% larger than the input buffer size, or 4 bytes whichever is more. - * \return the number of bytes put in the output buffer, or -1 if we ran out of room. */ - int Encode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer; data is set, not appended. - * \return the number of bytes put in the output buffer. */ - int Encode(const void* pInBuffer, int pInSize, FbxString& pOutBuffer); -}; - -#include - -#endif /* _FBXSDK_FILEIO_BASE64CODER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexporter.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexporter.h deleted file mode 100644 index 66cc21d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexporter.h +++ /dev/null @@ -1,304 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexporter.h -#ifndef _FBXSDK_FILEIO_EXPORTER_H_ -#define _FBXSDK_FILEIO_EXPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxThread; -class FbxWriter; - -struct FbxExportThreadArg; - -/** Class to export SDK objects into an FBX file. - * Normally this class is used as is. But for very special needs - * a user can override Initialize() for special purpose. - * - * An exporter will select the appropriate writer to a particular file. - * Ex: When an exporter must export an FBX 7 file, - * the exporter will ask for all registered writers if an FBX 7 file writer is available, - * then if a writer is found, the exporter will create - * the specialized FBX 7 writer and write the file. - * This way, an exporter can "write" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. - * \see FbxWriter - * - * Typical workflow for using the FbxExporter class: - * -# create a SDKManager - * -# create an IOSettings object - * -# create an empty scene - * -# create an exporter - * -# initialize it with a file name - * -# set numerous options to control how the exporter will behave.\n - * ex: set IOSettings values to export Materials or Textures. - * -# call FbxExporter::Export() with the entity to export. - * - * \code - * // ex: - * // create a SdkManager - * FbxManager* lSdkManager = FbxManager::Create(); - * - * // create an IOSettings object - * FbxIOSettings* ios = FbxIOSettings::Create(lSdkManager, IOSROOT); - * - * // set some IOSettings options - * ios->SetBoolProp(EXP_FBX_MATERIAL, true); - * ios->SetBoolProp(EXP_FBX_TEXTURE, true); - * - * // create an empty scene - * FbxScene* lScene = FbxScene::Create(lSdkManager, ""); - * - * // create an exporter. - * FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - * - * // initialize the exporter by providing a filename and the IOSettings to use - * lExporter->Initialize("C:\\myfile.fbx", -1, ios); - * - * // export the scene. - * lExporter->Export(lScene); - * - * // destroy the exporter - * lExporter->Destroy(); - * \endcode - * - * \remarks According to the file suffix, a specialized writer will be created internally.\n - * Ex: for .fbx files a FBX Writer, for .3ds files, a 3ds writer, etc.\n - * Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS - * \nosubgrouping - */ -class FBXSDK_DLL FbxExporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxExporter, FbxIOBase); - -public: - /** - * \name Export Functions - */ - //@{ - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Initialize(const char* pFileName, int pFileFormat = -1, FbxIOSettings* pIOSettings = NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, int pFileFormat = -1, FbxIOSettings * pIOSettings = NULL); - - /** Setup file export options settings. - * \return \c true on success, \c false otherwise. - */ - bool GetExportOptions(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Pointer on a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - - /** Export the document to the currently created file. - * \param pDocument Document to export. - * \param pNonBlocking If true, the export process will be executed in a new thread, allowing it to be non-blocking. - To determine if the export finished, refer to the function IsExporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Export(FbxDocument* pDocument, bool pNonBlocking=false); - - #if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the exporter is currently exporting. - * \param pExportResult This parameter, after the export finished, will contain the result of the export success or failure. - * \return Return true if the exporter is currently exporting. - * \remarks This function will always return false if Export() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the export finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsExporting(bool& pExportResult); - #endif /* !FBXSDK_ENV_WINSTORE && ! FBXSDK_ENV_EMSCRIPTEN */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload. - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - //@} - - /** - * \name File Format - */ - //@{ - /** Get the format of the exported file. - * \return File format identifier. - */ - int GetFileFormat(); - - /** Return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - - /** Get the list of writable versions for the current file format. - * \return \c NULL or a null terminated array of strings. - * \remarks the strings returned match the writers registered for the current format. - * The array items can be retrieved with the following code: - * \code - * char const* const* lWV = lExporter->GetCurrentWritableVersions(); - * if (lWV) - * { - * int i = 0; - * while (lWV[i] != NULL) - * { - * printf("fmt = %s\n", lWV[i]); - * i++; - * } - * } - * \endcode - * - */ - char const* const* GetCurrentWritableVersions(); - - /** Set file version for a given file format. - * \param pVersion String description of the file format. - * \param pRenamingMode Renaming mode. - * \return \c true if mode is set correctly - */ - bool SetFileExportVersion(FbxString pVersion, FbxSceneRenamer::ERenamingMode pRenamingMode=FbxSceneRenamer::eNone); - - /** Set the resampling rate (only used when exporting to FBX 5.3 and lower) - * \param pResamplingRate resampling rate - */ - inline void SetResamplingRate(double pResamplingRate){ mResamplingRate = pResamplingRate; } - - /** Set the default rendering resolution. - * \param pCamName name of the camera. - * \param pResolutionMode resolution mode. - * \param pW width. - * \param pH height. - * \remark These values are ignored when exporting to FBX 7.x and higher. With FBX version 6.x and lower, - * the HeaderInfo is still accessible for legacy reasons and any other custom writers. For FBX filles, - * these values are used by the FBX QuickTime plug-in (obsolete now) to help it get the window size - * without loading the whole file. The information contained in the FbxIOFileHeaderInfo is a duplicate - * of AspectRatioMode, AspectWidth and AspectHeight properties defined in the FbxCamera class. - * Retrieveing the FileHeaderInfo starting from FBX 7.x will always return the uninitialized structure. - */ - void SetDefaultRenderResolution(FbxString pCamName, FbxString pResolutionMode, double pW, double pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool GetExportOptions(FbxIO* pFbxObject); - bool Export(FbxDocument* pDocument, FbxIO* pFbxObject); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileCreate(); - void FileClose(); - -private: - bool ExportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxWriter* mWriter; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mExportThread; - FbxExportThreadArg* mExportThreadArg; - bool mExportThreadResult; - bool mIsThreadExporting; -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - FbxProgress mProgress; - FbxStream* mStream; - void* mStreamData; - FbxString mStrFileVersion; - double mResamplingRate; - FbxSceneRenamer::ERenamingMode mRenamingMode; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - friend void ExportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPreExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreExport); - -public: - FbxEventPreExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPostExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostExport); - -public: - FbxEventPostExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXPORTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h deleted file mode 100644 index 5075ca5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexternaldocreflistener.h -#ifndef _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ -#define _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ - -#include - -#include - -#include - -/** Contains data about an external document. - * The document is a FbxDocument object. - */ -struct FBXSDK_DLL FbxExternalDocumentInfo -{ - FbxString mDocumentName; //!< Bare name of external document in document hierarchy. - FbxString mClassName; //!< Class name of the document (FbxDocument, FbxLibrary...). - FbxString mParentFullName; //!< Full name of the parent document in document hierarchy. - FbxString mFilePathUrl; //!< File path of the external document. -}; - -/** Event that is emitted on loading document when a referenced document - * is encountered while loading external references. - */ -class FBXSDK_DLL FbxEventReferencedDocument : public FbxEvent, public FbxExternalDocumentInfo -{ - FBXSDK_EVENT_DECLARE(FbxEventReferencedDocument); -public: - FbxEventReferencedDocument() {} -}; - - -class FbxExternalDocRefListenerData; - -/** Typical handler for the referenced document events. -* -* Register it like so: -* FbxExternalDocRefListener lRefDocListener( sdkManager, fileName ); -* FbxEventHandler * lHandler = lRefDocListener.Bind(scene, -* &FbxExternalDocRefListener::HandleEvent); -* -* And later unregister it like so: -* lRefDocListener.Unbind(lHandler); -*/ -class FBXSDK_DLL FbxExternalDocRefListener : public FbxListener -{ -public: - /** Constructor. - * \param pManager - * \param pDocFilePath - * \remarks Keep a reference to the SDK and the path of the document - * to be able to resolve relative paths. - */ - FbxExternalDocRefListener( FbxManager & pManager, const FbxString & pDocFilePath ); - virtual ~FbxExternalDocRefListener(); - - /** Set the document file path used to resolve documents. - * \param pDocFilePath - * \remarks Allows re-using the same instance for multiple document loadings. - */ - virtual void SetDocumentFilePath( const FbxString & pDocFilePath ); - - /** Verify that all documents that were previously loaded in a previous - * load session are still valid. - * \return \c true if all documents are still valid, \c false otherwise. - */ - virtual bool AreAllExternalDocumentsStillValid() const; - - // - /** Verify that all documents that were referred to didn't change. - * \return \c true if all documents didn't change, \c false otherwise. - * \remarks This function should be called if at posteriori check is desired. - */ - virtual bool WereAllExternalDocumentsValid() const; - - /** Unload all documents that were loaded through this event handler. - */ - virtual void UnloadExternalDocuments(); - - // External document reference event handler. - // - // Operation: calls FindDocument() to find the specified external document - // and if not found calls LoadDocument() either directly, - // if it has not parent, or via ConnectToParentLibrary(). - // If its parent cannot be found, it's added to the dangling - // document list (and it is not loaded until it's parent is found). - // After, it tries to resolve dangling documents by calling - // TryConnectingDanglingLibraries(). - /** External document reference event handler. - * \param pEvent - * \remarks Operation: calls FindDocument() to find the specified external document - * and if not found calls LoadDocument() either directly, - * if it has not parent, or via ConnectToParentLibrary(). - * If its parent cannot be found, it's added to the dangling - * document list (and it is not loaded until it's parent is found). - * After, it tries to resolve dangling documents by calling - * TryConnectingDanglingLibraries(). - */ - virtual void HandleEvent(const FbxEventReferencedDocument * pEvent); - -protected: - /** - * Turn a relative path to an absolute path using the file path of the original document being loaded. - * If the path is already is absolute, it is returned as is. - */ - virtual FbxString MakeFilenameAbsolute(const FbxString & pFilename) const; - //! Locate a document by its document path. - virtual FbxDocument * FindDocument( const FbxString & pPathToDoc ); - //! Load a library, potentially under another library. - virtual FbxDocument * LoadDocument(FbxObject * pParent, const FbxString & pClassName, const FbxString & pFilename); - //! Try to connect a library to its parent given its document path. - virtual bool ConnectToParentLibrary(const FbxExternalDocumentInfo &); - //! Try to reconnect dangling libraries that didn't find their parent. - virtual void TryConnectingDanglingLibraries(); - -private: - FbxExternalDocRefListenerData * mData; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxfiletokens.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxfiletokens.h deleted file mode 100644 index 0b2b02c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxfiletokens.h +++ /dev/null @@ -1,1087 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletokens.h -#ifndef _FBXSDK_FILEIO_FILE_TOKENS_H_ -#define _FBXSDK_FILEIO_FILE_TOKENS_H_ - -#include - -#include - -// -// Summary -// -#define FIELD_SUMMARY "Summary" -#define FIELD_SUMMARY_VERSION "Version" -#define FIELD_SUMMARY_TEMPLATE "Template" -#define FIELD_SUMMARY_PASSWORD_PROTECTION "PasswordProtection" -#define FIELD_SUMMARY_CONTENT_COUNT "ContentCount" -#define FIELD_SUMMARY_CONTENT_COUNT_MODEL "Model" -#define FIELD_SUMMARY_CONTENT_COUNT_DEVICE "Device" -#define FIELD_SUMMARY_CONTENT_COUNT_CHARACTER "Character" -#define FIELD_SUMMARY_CONTENT_COUNT_ACTOR "Actor" -#define FIELD_SUMMARY_CONTENT_COUNT_CONSTRAINT "Constraint" -#define FIELD_SUMMARY_CONTENT_COUNT_MEDIA "Media" -#define FIELD_SUMMARY_CONTENT_COUNT_COMPONENT "Component" -#define FIELD_SUMMARY_TAKES "Takes" -#define FIELD_SUMMARY_TAKES_VERSION "Version" -#define FIELD_SUMMARY_TAKES_CURRENT "Current" -#define FIELD_SUMMARY_TAKES_TAKE "Take" -#define FIELD_SUMMARY_TAKES_TAKE_COMMENT "Comments" -#define FIELD_SUMMARY_TAKES_TAKE_LOCAL_TIME "LocalTime" -#define FIELD_SUMMARY_TAKES_TAKE_REFERENCE_TIME "ReferenceTime" - - -// -// FbxObject references, document ownership -// -#define FIELD_KFBXOBJECT_REFERENCE_TO "ReferenceTo" -#define FIELD_KFBXOBJECT_DOCUMENT "Doc" - -// (sic) -#define FIELD_KFBXOBECT_REFERENCE_TO FIELD_KFBXOBJECT_REFERENCE_TO - -// -// FbxContainer -// -#define FIELD_KFBXCONTAINER_VERSION "Version" -#define FIELD_KFBXCONTAINER_CONTAINER "Container" - - -// -// Thumbnail -// -#define FIELD_THUMBNAIL "Thumbnail" -#define FIELD_THUMBNAIL_VERSION "Version" -#define FIELD_THUMBNAIL_SIZE "Size" -#define FIELD_THUMBNAIL_FORMAT "Format" -#define FIELD_THUMBNAIL_ENCODING "ImageEncoding" -#define FIELD_THUMBNAIL_IMAGE "ImageData" - - -// -// FbxGlobalLightSettings -// -#define FIELD_KFBXGLOBALLIGHTSETTINGS_VERSION "Version" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWPLANES "ShadowPlanes" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_COUNT "Count" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_PLANE "Plane" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_USESHADOW "UseShadow" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWINTENSITY "ShadowIntensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTRENDER "AmbientRenderSettings" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTLIGHTCOLOR "AmbientLightColor" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGOPTIONS "FogOptions" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGENABLE "FlogEnable" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGMODE "FogMode" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGDENSITY "FogDensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGSTART "FogStart" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGEND "FogEnd" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGCOLOR "FogColor" - - -// -// FbxGlobalCameraSettings -// -#define FIELD_KFBXGLOBALCAMERASETTINGS_RENDERER_SETTINGS "RendererSetting" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_CAMERA "DefaultCamera" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_VIEWING_MODE "DefaultViewingMode" -#define FIELD_KFBXGLOBALCAMERASETTINGS_SETTINGS "Settings" -#define FIELD_KFBXGLOBALCAMERASETTINGS_CAMERA "Camera" - - -// -// FbxGlobalTimeSettings -// -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_MODE "TimeMode" -#define FIELD_KFBXGLOBALTIMESETTINGS_FRAMERATE "FrameRate" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_PROTOCOL "TimeFormat" -#define FIELD_KFBXGLOBALTIMESETTINGS_SNAP_ON_FRAMES "SnapOnFrames" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_INDEX "ReferenceTimeIndex" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_MARKER "TimeMarker" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME "Time" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_LOOP "Loop" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_START_TIME "TimeLineStartTime" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_STOP_TIME "TimeLineStopTime" - - -// -// Media -// -#define FIELD_MEDIA_MEDIA "Media" -#define FIELD_MEDIA_AUDIO "Audio" -#define FIELD_MEDIA_VIDEO "Video" -#define FIELD_MEDIA_TYPE "Type" -#define TOKEN_MEDIA_CLIP "Clip" -#define FIELD_MEDIA_VERSION "Version" -#define FIELD_MEDIA_ORIGINAL_FORMAT "OriginalFormat" -#define FIELD_MEDIA_ORIGINAL_FILENAME "OriginalFilename" -#define FIELD_MEDIA_FILENAME "Filename" -#define FIELD_MEDIA_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_MEDIA_CONTENT "Content" - - -// -// Properties -// -#define FIELD_PROPERTIES "Properties" -#define FIELD_PROPERTIES_VERSION "Version" -#define FIELD_USERPROPERTIES "UserProperty" -#define FIELD_USERPROPERTIES_NAME "Name" -#define FIELD_USERPROPERTIES_TYPE "Type" -#define FIELD_USERPROPERTIES_LABEL "Label" -#define FIELD_USERPROPERTIES_MIN "Min" -#define FIELD_USERPROPERTIES_MAX "Max" -#define FIELD_USERPROPERTIES_VALUE "Value" - - -// -// FbxNode -// -#define FIELD_KFBXNODE_VERSION "Version" -#define FIELD_KFBXNODE_ANIMATION_MODE "AnimationMode" -#define FIELD_KFBXNODE_TYPE "Type" -#define FIELD_KFBXNODE_TYPE_FLAGS "TypeFlags" -#define FIELD_KFBXNODE_MODEL "Model" -#define FIELD_KFBXNODE_HIDDEN "Hidden" -#define FIELD_KFBXNODE_SHADING "Shading" -#define FIELD_KFBXNODE_TRANSFORM "Transform" -#define FIELD_KFBXNODE_DEFAULT "Default" -#define FIELD_KFBXNODE_TRANSLATION "T" -#define FIELD_KFBXNODE_ROTATION "R" -#define FIELD_KFBXNODE_SCALING "S" -#define FIELD_KFBXNODE_CHILDREN "Children" - -#define FIELD_KFBXNODE_CULLING_TYPE "Culling" -#define TOKEN_KFBXNODE_CULLING_OFF "CullingOff" -#define TOKEN_KFBXNODE_CULLING_ON_CCW "CullingOnCCW" -#define TOKEN_KFBXNODE_CULLING_ON_CW "CullingOnCW" - -#define FIELD_KFBXNODE_LIMITS "Limits" -#define FIELD_KFBXNODE_LIMITS_T_AUTO "TAuto" -#define FIELD_KFBXNODE_LIMITS_R_AUTO "RAuto" -#define FIELD_KFBXNODE_LIMITS_S_AUTO "SAuto" -#define FIELD_KFBXNODE_LIMITS_T_ENABLE "TEnable" -#define FIELD_KFBXNODE_LIMITS_R_ENABLE "REnable" -#define FIELD_KFBXNODE_LIMITS_S_ENABLE "SEnable" -#define FIELD_KFBXNODE_LIMITS_T_X_DEFAULT "TXDefault" -#define FIELD_KFBXNODE_LIMITS_T_Y_DEFAULT "TYDefault" -#define FIELD_KFBXNODE_LIMITS_T_Z_DEFAULT "TZDefault" -#define FIELD_KFBXNODE_LIMITS_R_X_DEFAULT "RXDefault" -#define FIELD_KFBXNODE_LIMITS_R_Y_DEFAULT "RYDefault" -#define FIELD_KFBXNODE_LIMITS_R_Z_DEFAULT "RZDefault" -#define FIELD_KFBXNODE_LIMITS_S_X_DEFAULT "SXDefault" -#define FIELD_KFBXNODE_LIMITS_S_Y_DEFAULT "SYDefault" -#define FIELD_KFBXNODE_LIMITS_S_Z_DEFAULT "SZDefault" -#define FIELD_KFBXNODE_LIMITS_T_X_MIN "TXMin" -#define FIELD_KFBXNODE_LIMITS_T_Y_MIN "TYMin" -#define FIELD_KFBXNODE_LIMITS_T_Z_MIN "TZMin" -#define FIELD_KFBXNODE_LIMITS_R_X_MIN "RXMin" -#define FIELD_KFBXNODE_LIMITS_R_Y_MIN "RYMin" -#define FIELD_KFBXNODE_LIMITS_R_Z_MIN "RZMin" -#define FIELD_KFBXNODE_LIMITS_S_X_MIN "SXMin" -#define FIELD_KFBXNODE_LIMITS_S_Y_MIN "SYMin" -#define FIELD_KFBXNODE_LIMITS_S_Z_MIN "SZMin" -#define FIELD_KFBXNODE_LIMITS_T_X_MAX "TXMax" -#define FIELD_KFBXNODE_LIMITS_T_Y_MAX "TYMax" -#define FIELD_KFBXNODE_LIMITS_T_Z_MAX "TZMax" -#define FIELD_KFBXNODE_LIMITS_R_X_MAX "RXMax" -#define FIELD_KFBXNODE_LIMITS_R_Y_MAX "RYMax" -#define FIELD_KFBXNODE_LIMITS_R_Z_MAX "RZMax" -#define FIELD_KFBXNODE_LIMITS_S_X_MAX "SXMax" -#define FIELD_KFBXNODE_LIMITS_S_Y_MAX "SYMax" -#define FIELD_KFBXNODE_LIMITS_S_Z_MAX "SZMax" -#define FIELD_KFBXNODE_LIMITS_R_TYPE "RType" -#define FIELD_KFBXNODE_LIMITS_R_CLAMP_TYPE "RClampType" -#define FIELD_KFBXNODE_LIMITS_R_X_AXIS "RXAxis" -#define FIELD_KFBXNODE_LIMITS_R_Y_AXIS "RYAxis" -#define FIELD_KFBXNODE_LIMITS_R_Z_AXIS "RZAxis" -#define FIELD_KFBXNODE_LIMITS_AXIS_LENGTH "AxisLen" - -#define FIELD_KFBXNODE_TARGET "LookAtModel" -#define FIELD_KFBXNODE_UP_VECTOR_MODEL "UpVectorModel" -#define FIELD_KFBXNODE_POST_TARGET_ROTATION "PostTargetRotation" -#define FIELD_KFBXNODE_TARGET_UP_VECTOR "UpTargetRotation" - -#define FIELD_KFBXNODE_PIVOTS "Pivots" -#define FIELD_KFBXNODE_PACKAGE "Package" -#define FIELD_KFBXNODE_FILE "File" -#define FIELD_KFBXNODE_TRANSLATION_OFFSET "TranslationOffset" -#define FIELD_KFBXNODE_ROTATION_PIVOT "RotationPivot" -#define FIELD_KFBXNODE_PRE_ROTATION "PreRotation" -#define FIELD_KFBXNODE_POST_ROTATION "PostRotation" -#define FIELD_KFBXNODE_SCALING_PIVOT "ScalingPivot" -#define FIELD_KFBXNODE_PIVOT_ENABLED "PivotEnabled" - -// -// FbxGenericNode -// -#define FIELD_KFBXGENERICNODE_VERSION "Version" -#define FIELD_KFBXGENERICNODE_GENERICNODE "GenericNode" - -// -// FbxGeometry -// -#define FIELD_KFBXGEOMETRY_MATERIAL "Material" -#define FIELD_KFBXGEOMETRY_TEXTURE "Texture" -#define FIELD_KFBXGEOMETRY_LINK "Link" -#define FIELD_KFBXGEOMETRY_SHAPE "Shape" - -// -// FbxMarker -// -#define FIELD_KFBXMARKER_LOOK "Look" -#define FIELD_KFBXMARKER_SIZE "Size" -#define FIELD_KFBXMARKER_COLOR "Color" -#define FIELD_KFBXMARKER_SHOW_LABEL "ShowLabel" -#define FIELD_KFBXMARKER_IK_PIVOT "IKPivot" -#define FIELD_KFBXMARKER_IK_REACH_TRANSLATION "IKReachTranslation" -#define FIELD_KFBXMARKER_IK_REACH_ROTATION "IKReachRotation" -#define FIELD_KFBXMARKER_IK_PULL "IKPull" -#define FIELD_KFBXMARKER_IK_PULL_HIPS "IKPullHips" - -// -// FbxCamera -// -#define FIELD_KFBXGEOMETRYCAMERA_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_NAME "Name" - -// Camera Position and Orientation -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_POSITION "Position" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_UP_VECTOR "Up" -#define FIELD_KFBXGEOMETRYCAMERA_DEFAULT_CAMERA_INTEREST_POSITION "LookAt" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ROLL "Roll" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_TURNTABLE "TurnTable" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PROJECTION_TYPE "Type" - -// Viewing Area Controls -#define FIELD_KFBXGEOMETRYCAMERA_FORMAT_NAME "FormatName" -#define TOKEN_KFBXGEOMETRYCAMERA_NTSC "NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_NTSC "D1 NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_PAL "PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_PAL "D1 PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_HD "HD" -#define TOKEN_KFBXGEOMETRYCAMERA_640x480 "640x480" -#define TOKEN_KFBXGEOMETRYCAMERA_320x200 "320x200" -#define TOKEN_KFBXGEOMETRYCAMERA_320x240 "320x240" -#define TOKEN_KFBXGEOMETRYCAMERA_128x128 "128x128" -#define TOKEN_KFBXGEOMETRYCAMERA_FULL_SCREEN "Full Screen" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_TYPE "AspectType" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_WIDTH "AspectW" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_HEIGHT "AspectH" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PIXEL_RATIO "PixelRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_NEAR_PLANE "NearPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FAR_PLANE "FarPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LOCK "CameraLock" - -// Aperture and Film Controls -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_FORMAT_NAME "ApertureFormat" -#define TOKEN_KFBXGEOMETRYCAMERA_16MM_THEATRICAL "16mm Theatrical" -#define TOKEN_KFBXGEOMETRYCAMERA_SUPER_16MM "Super 16mm" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ACADEMY "35mm Academy" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_TV_PROJECTION "35mm TV Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_FULL_APERTURE "35mm Full Aperture" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_185_PROJECTION "35mm 1.85 Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ANAMORPHIC "35mm Anamorphic" -#define TOKEN_KFBXGEOMETRYCAMERA_70MM_PROJECTION "70mm Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_VISTA_VISION "VistaVision" -#define TOKEN_KFBXGEOMETRYCAMERA_DYNAVISION "Dynavision" -#define TOKEN_KFBXGEOMETRYCAMERA_IMAX "Imax" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_APERTURE_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_MODE "ApertureMode" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_DIMENSION "CameraAperture" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_SQUEEZERATIO "SqueezeRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FOCAL_LENGTH "FocalLength" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE "Aperture" - -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_X "FieldOfViewXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_Y "FieldOfViewYProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_X "OpticalCenterXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_Y "OpticalCenterYProperty" - -// Background Properties -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_MEDIA_NAME "Media" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_TEXTURE "BackgroundTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_VIDEO_CLIP_TEXTURE "VideoClipTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISPLAY_MODE "ViewFrustumPlane" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DRAWING_MODE "BackgroundMode" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_THRESHOLD_ENABLE "ForegroundTransparent" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_TRESHOLD "BackgroundTreshold" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_PLACEMENT_OPTIONS "DisplayMode" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE "ViewFrustumPlaneDistance" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE_MODE "ViewFrustumPlaneDistanceMode" - -// Camera View Options -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_CAMERA_INTEREST "ViewLookAt" -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_NEAR_FAR_PLANES "ViewFrustum" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_GRID "ShowGrid" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AXIS "ShowAzimut" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_NAME "ShowName" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_INFO_ON_MOVING "ShowInfoOnMoving" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_TIME_CODE "ShowTimeCode" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA "DisplaySafeArea" -#define FIELD_KFBXGEOMETRYCAMERA_SAFE_AREA_STYLE "SafeAreaStyle" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA_ON_RENDER "DisplaySafeAreaOnRender" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AUDIO "ShowAudio" - -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_COLOR "BackGroundColor" -#define FIELD_KFBXGEOMETRYCAMERA_AUDIO_COLOR "AudioColor" -#define FIELD_KFBXGEOMETRYCAMERA_USE_FRAME_COLOR "UseFrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_FRAME_COLOR "FrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_ORTHO_ZOOM "CameraOrthoZoom" - -// Rendering Options -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS "CameraAndLens" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_DEPTH_OF_FIELD "DepthOfField" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_ANTIALIASING "Antialiasing" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_OVERSAMPLING "OverSampling" -#define FIELD_KFBXGEOMETRYCAMERA_RENDER_OPTIONS_USAGE_TIME "UseOverSamplingTime" - -// -// FbxCameraStereo -// -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_STEREO "Stereo" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_INTERAXIAL_SEP "InteraxialSeparation" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_ZERO_PARALLAX "ZeroParallax" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_TOE_IN_ADJUST "ToeInAdjust" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_RIGHT_CAM "FilmOffsetRightCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_LEFT_CAM "FilmOffsetLeftCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_NAME "PrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_RELATIVE_PRECOMP_FILE_NAME "RelativePrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_CONTENT "PrecompFileContent" - -// -// FbxCameraSwitcher -// -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_SWITCHER "Switcher" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_ID "CameraId" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_NAME "CameraName" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_INDEX_NAME "CameraIndexName" - - -// -// FbxLight -// -#define FIELD_KFBXGEOMETRYLIGHT_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE "LightType" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE_VERSION "LightTypeVersion" -#define FIELD_KFBXGEOMETRYLIGHT_CAST_LIGHT "CastLight" - - -// -// FbxMesh -// -#define FIELD_KFBXGEOMETRYMESH_UV_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYMESH_VERTICES "Vertices" -#define FIELD_KFBXGEOMETRYMESH_EDGES "Edges" -#define FIELD_KFBXGEOMETRYMESH_INTERNAL_EDGES "InternalEdges" -#define FIELD_KFBXGEOMETRYMESH_NORMALS "Normals" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_WCOMPONENT "NormalsW" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS "Binormals" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_WCOMPONENT "BinormalsW" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS "Tangents" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_WCOMPONENT "TangentsW" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_INDEX "NormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_INDEX "BinormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_INDEX "TangentsIndex" -#define FIELD_KFBXGEOMETRYMESH_MATERIAL_ASSIGNATION "MaterialAssignation" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ASSIGNATION "TextureMode" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_INDEX "PolygonVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_GROUP "PolygonGroup" -#define FIELD_KFBXGEOMETRYMESH_MATERIALS_ID "Materials" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ID "TextureId" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_TYPE "TextureType" -#define FIELD_KFBXGEOMETRYMESH_UV_TYPE "UVType" -#define FIELD_KFBXGEOMETRYMESH_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV "TextureUV" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_POLYGON_UV "TexturePUV" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_UV_INFO "GeometryUVInfo" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_VERTEX_INDEX "TextureVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV_INDEX "TextureUVVerticeIndex" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INFO "VertexColorInfo" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_ASSIGNATION "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VALUES "Colors" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INDEX "ColorIndex" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHING "Smoothing" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_CREASE "VertexCrease" -#define FIELD_KFBXGEOMETRYMESH_EDGE_CREASE "EdgeCrease" -#define FIELD_KFBXGEOMETRYMESH_HOLE "Hole" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA "UserData" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_INDEX "UserDataIndex" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_TYPE "UserDataType" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_INDICES "UserDataDirectIndices"// remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_COUNT "UserDataDirectCount" //remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ID "UserDataId" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ARRAY "UserDataArray" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_NAME "UserDataName" -#define FIELD_KFBXGEOMETRYMESH_VISIBILITY "Visibility" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHNESS "Smoothness" -#define FIELD_KFBXGEOMETRYMESH_PREVIEW_DIVSION_LEVELS "PreviewDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_RENDER_DIVSION_LEVELS "RenderDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_DISPLAY_SUBDIVISIONS "DisplaySubdivisions" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_BORDERS "PreserveBorders" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_HARD_EDGES "PreserveHardEdges" -#define FIELD_KFBXGEOMETRYMESH_PROPAGATE_EDGE_HARDNESS "PropagateEdgeHardness" -#define FIELD_KFBXGEOMETRYMESH_BOUNDARY_RULE "BoundaryRule" - -#define FIELD_KFBXGEOMETRYMESH_U_EXTENDED_COUNT "UExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_U_CLOSED "UClosed" -#define FIELD_KFBXGEOMETRYMESH_U_TOPCAP "UTopCap" -#define FIELD_KFBXGEOMETRYMESH_U_STEP "UStep" -#define FIELD_KFBXGEOMETRYMESH_U_COUNT "UCount" - -#define FIELD_KFBXGEOMETRYMESH_V_EXTENDED_COUNT "VExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_V_CLOSED "VClosed" -#define FIELD_KFBXGEOMETRYMESH_V_TOPCAP "VTopCap" -#define FIELD_KFBXGEOMETRYMESH_V_STEP "VStep" -#define FIELD_KFBXGEOMETRYMESH_V_COUNT "VCount" - -#define TOKEN_KFBXGEOMETRYMESH_NO_MAPPING_INFORMATION "NoMappingInformation" -#define TOKEN_KFBXGEOMETRYMESH_BY_VERTICE "ByVertice" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON "ByPolygon" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON_VERTEX "ByPolygonVertex" -#define TOKEN_KFBXGEOMETRYMESH_BY_FACE "ByFace" -#define TOKEN_KFBXGEOMETRYMESH_BY_EDGE "ByEdge" -#define TOKEN_KFBXGEOMETRYMESH_ALL_SAME "AllSame" -#define TOKEN_KFBXGEOMETRYMESH_BY_MODEL "ByModel" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY "SubdivGeometry" -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYSUBDIV_LEVEL_COUNT "LevelCount" -#define FIELD_KFBXGEOMETRYSUBDIV_CURRENT_LEVEL "CurrentLevel" -#define FIELD_KFBXGEOMETRYSUBDIV_DISPLAY_SMOOTHNESS "Smoothness" - -// -// Reference -// -#define TOKEN_REFERENCE_DIRECT "Direct" -#define TOKEN_REFERENCE_INDEX "Index" -#define TOKEN_REFERENCE_INDEX_TO_DIRECT "IndexToDirect" - -// -// FbxNurbs -// -#define FIELD_KFBXGEOMETRYNURB_NURB_VERSION "NurbVersion" -#define FIELD_KFBXGEOMETRYNURB_NURB_ORDER "NurbOrder" -#define FIELD_KFBXGEOMETRYNURB_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURB_STEP "Step" -#define FIELD_KFBXGEOMETRYNURB_FORM "Form" -#define FIELD_KFBXGEOMETRYNURB_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURB_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURB_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_U "MultiplicityU" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURB_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURB_SURFACE_DISPLAY "SurfaceDisplay" - -// -// FbxNurbsSurface -// -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_VERSION "NurbsSurfaceVersion" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_ORDER "NurbsSurfaceOrder" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_STEP "Step" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_POINTS "Points" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_U "MultiplicityU" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FLIP_NORMALS "FlipNormals" - -// -// FbxTrimNurbsSurface -// -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_VERSION "TrimmedNurbVersion" -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_FLIP_NORMALS "FlipNormals" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_SURFACE "NurbSurface" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_BOUNDARY "TrimBoundary" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_EDGE "BoundaryEdge" - -// -// FbxBoundary -// -#define FIELD_KFBXGEOMETRYBOUNDARY_VERSION "BoundaryVersion" - -// -// FbxLine -// -#define FIELD_KFBXGEOMETRYLINE_VERSION "LineVersion" -#define FIELD_KFBXGEOMETRYLINE_POINTS "Points" -#define FIELD_KFBXGEOMETRYLINE_POINTS_INDEX "PointsIndex" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIVISION_VERSION "SubdivisionVersion" - -// -// FbxNurbsCurve -// -#define FIELD_KFBXGEOMETRYNURBS_CURVE_VERSION "NurbsCurveVersion" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_ORDER "Order" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_DIMENSION "Dimension" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_KNOTVECTOR "KnotVector" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_RATIONAL "Rational" - -// -// FbxPatch -// -#define FIELD_KFBXGEOMETRYPATCH_PATCH_VERSION "PatchVersion" -#define FIELD_KFBXGEOMETRYPATCH_PATCH_TYPE "PatchType" -#define FIELD_KFBXGEOMETRYPATCH_DIMENSIONS "Dimensions" -#define FIELD_KFBXGEOMETRYPATCH_STEP "Step" -#define FIELD_KFBXGEOMETRYPATCH_CLOSED "Closed" -#define FIELD_KFBXGEOMETRYPATCH_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYPATCH_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYPATCH_POINTS "Points" -#define FIELD_KFBXGEOMETRYPATCH_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYPATCH_MATERIALS "Materials" - - -// -// FbxGeometryWeightedMap -// - -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_VERSION "Version" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_SRC_COUNT "SourceCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_DST_COUNT "DestinationCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_INDEX_MAPPING "IndexMapping" - -// -// FbxSkeleton -// -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_LENGTH "LimbLength" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_SIZE "Size" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_COLOR "Color" - -// -// FbxVideo -// -#define FIELD_KFBXVIDEO_USEMIPMAP "UseMipMap" - -// -// FbxTexture -// -#define FIELD_KFBXTEXTURE_TEXTURE "Texture" -#define FIELD_KFBXTEXTURE_TYPE "Type" -#define FIELD_KFBXTEXTURE_VERSION "Version" -#define FIELD_KFBXTEXTURE_TEXTURE_NAME "TextureName" -#define FIELD_KFBXTEXTURE_MEDIA "Media" -#define FIELD_KFBXTEXTURE_FILENAME "FileName" -#define FIELD_KFBXTEXTURE_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_KFBXTEXTURE_TRANSLATION "Translation" -#define FIELD_KFBXTEXTURE_SCALING "Scaling" -#define FIELD_KFBXTEXTURE_UV_TRANSLATION "ModelUVTranslation" -#define FIELD_KFBXTEXTURE_UV_SCALING "ModelUVScaling" -#define FIELD_KFBXTEXTURE_ROTATION "Rotation" -#define FIELD_KFBXTEXTURE_TILING "Tilling" -#define FIELD_KFBXTEXTURE_ALPHA_SRC "Texture_Alpha_Source" -#define FIELD_KFBXTEXTURE_CROPPING "Cropping" -#define FIELD_KFBXTEXTURE_MAPPING_TYPE "Texture_Mapping_Type" -#define FIELD_KFBXTEXTURE_PLANAR_NORMAL "Texture_Planar_Mapping_Normal" -#define FIELD_KFBXTEXTURE_SWAPUV "SwapUV" -#define FIELD_KFBXTEXTURE_MATERIAL_USE "MaterialMode" -#define FIELD_KFBXTEXTURE_TEXTURE_USE "TextureUse" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_STANDARD "Standard" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SHADOW_MAP "ShadowMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_LIGHT_MAP "LightMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERICAL_REFLEXION_MAP "SphericalReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERE_REFLEXION_MAP "SphereReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_BUMP_NORMAL_MAP "BumpNormalMap" -#define TOKEN_KFBXTEXTURE_BLEND_TRANSLUCENT "Translucent" -#define TOKEN_KFBXTEXTURE_BLEND_ADD "Add" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE "Modulate" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE2 "Modulate2" -#define TOKEN_KFBXTEXTURE_BLEND_OVER "Over" -#define TOKEN_KFBXTEXTURE_BLEND_NORMAL "Normal" -#define TOKEN_KFBXTEXTURE_BLEND_DISSOLVE "Dissolve" -#define TOKEN_KFBXTEXTURE_BLEND_DARKEN "Darken" -#define TOKEN_KFBXTEXTURE_BLEND_COLORBURN "Colorburn" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARBURN "Linearburn" -#define TOKEN_KFBXTEXTURE_BLEND_DARKERCOLOR "Darkercolor" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTEN "Lighten" -#define TOKEN_KFBXTEXTURE_BLEND_SCREEN "Screen " -#define TOKEN_KFBXTEXTURE_BLEND_COLORDODGE "Colordodge" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARDODGE "Lineardodge" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTERCOLOR "Lightercolor" -#define TOKEN_KFBXTEXTURE_BLEND_SOFTLIGHT "Softlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDLIGHT "Hardlight " -#define TOKEN_KFBXTEXTURE_BLEND_VIVIDLIGHT "Vividlight" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARLIGHT "Linearlight" -#define TOKEN_KFBXTEXTURE_BLEND_PINLIGHT "Pinlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDMIX "Hardmix" -#define TOKEN_KFBXTEXTURE_BLEND_DIFFERENCE "Difference" -#define TOKEN_KFBXTEXTURE_BLEND_EXCLUSION "Exclusion" -#define TOKEN_KFBXTEXTURE_BLEND_SUBTRACT "Subtract" -#define TOKEN_KFBXTEXTURE_BLEND_DIVIDE "Divide" -#define TOKEN_KFBXTEXTURE_BLEND_HUE "Hue" -#define TOKEN_KFBXTEXTURE_BLEND_SATURATION "Saturation" -#define TOKEN_KFBXTEXTURE_BLEND_COLOR "Color" -#define TOKEN_KFBXTEXTURE_BLEND_LUMINOSITY "Luminosity" -#define TOKEN_KFBXTEXTURE_BLEND_OVERLAY "Overlay" -#define TOKEN_KFBXTEXTURE_BLEND_MAXBLEND "MaxBlend" -#define FIELD_KFBXTEXTURE_WRAP_U "WrapU" -#define FIELD_KFBXTEXTURE_WRAP_V "WrapV" -#define FIELD_KFBXTEXTURE_BLEND_MODE "BlendMode" -#define FIELD_KFBXTEXTURE_ALPHA "TextureAlpha" - -// -// FbxSurfaceMaterial -// -#define FIELD_KFBXMATERIAL_MATERIAL "Material" -#define FIELD_KFBXMATERIAL_VERSION "Version" -#define FIELD_KFBXMATERIAL_SHADING_MODEL "ShadingModel" -#define FIELD_KFBXMATERIAL_AMBIENT "Ambient" -#define FIELD_KFBXMATERIAL_DIFFUSE "Diffuse" -#define FIELD_KFBXMATERIAL_SPECULAR "Specular" -#define FIELD_KFBXMATERIAL_EMISSIVE "Emissive" -#define FIELD_KFBXMATERIAL_SHININESS "Shininess" -#define FIELD_KFBXMATERIAL_REFLECTIVITY "Reflectivity" -#define FIELD_KFBXMATERIAL_ALPHA "Alpha" -#define FIELD_KFBXMATERIAL_MULTI_LAYER "MultiLayer" - -// -// FbxCluster -// -#define FIELD_KFBXLINK_LINK "Link" -#define FIELD_KFBXLINK_MODE "Mode" -#define FIELD_KFBXLINK_USERDATA "UserData" -#define FIELD_KFBXLINK_INDEXES "Indexes" -#define FIELD_KFBXLINK_WEIGHTS "Weights" -#define FIELD_KFBXLINK_TRANSFORM "Transform" -#define FIELD_KFBXLINK_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXLINK_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXLINK_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXLINK_AVERAGE "Average" -#define TOKEN_KFBXLINK_ADDITIVE "Additive" -#define TOKEN_KFBXLINK_TOTAL1 "Total1" - -// -// FbxDeformer -// -#define FIELD_KFBXDEFORMER_DEFORMER "Deformer" -#define FIELD_KFBXDEFORMER_VERSION "Version" -#define FIELD_KFBXDEFORMER_TYPE "Type" -#define FIELD_KFBXDEFORMER_MULTI_LAYER "MultiLayer" -#define FIELD_KFBXDEFORMER_MODE "Mode" -#define FIELD_KFBXDEFORMER_USERDATA "UserData" -#define FIELD_KFBXDEFORMER_INDEXES "Indexes" -#define FIELD_KFBXDEFORMER_WEIGHTS "Weights" -#define FIELD_KFBXDEFORMER_TRANSFORM "Transform" -#define FIELD_KFBXDEFORMER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXDEFORMER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXDEFORMER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXDEFORMER_AVERAGE "Average" -#define TOKEN_KFBXDEFORMER_ADDITIVE "Additive" -#define TOKEN_KFBXDEFORMER_TOTAL1 "Total1" - -// -// FbxSkin -// -#define FIELD_KFBXSKIN_VERSION "Version" -#define FIELD_KFBXSKIN_DEFORM_ACCURACY "Link_DeformAcuracy" -#define FIELD_KFBXSKIN_SKINNINGTYPE "SkinningType" -#define TOKEN_KFBXSKIN_LINEAR "Linear" -#define TOKEN_KFBXSKIN_DUALQUATERNION "DualQuaternion" -#define TOKEN_KFBXSKIN_BLEND "Blend" -#define FIELD_KFBXSKIN_INDEXES "Indexes" -#define FIELD_KFBXSKIN_BLENDWEIGHTS "BlendWeights" - -// -// FbxCluster -// -#define FIELD_KFBXCLUSTER_VERSION "Version" -#define FIELD_KFBXCLUSTER_MODE "Mode" -#define FIELD_KFBXCLUSTER_USERDATA "UserData" -#define FIELD_KFBXCLUSTER_INDEXES "Indexes" -#define FIELD_KFBXCLUSTER_WEIGHTS "Weights" -#define FIELD_KFBXCLUSTER_TRANSFORM "Transform" -#define FIELD_KFBXCLUSTER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXCLUSTER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXCLUSTER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXCLUSTER_AVERAGE "Average" -#define TOKEN_KFBXCLUSTER_ADDITIVE "Additive" -#define TOKEN_KFBXCLUSTER_TOTAL1 "Total1" - -// -// FbxBlendShape -// -#define FIELD_KFBXBLENDSHAPE_VERSION "Version" - -// -// FbxBlendShapeChannel -// -#define FIELD_KFBXBLENDSHAPECHANNEL_VERSION "Version" -#define FIELD_KFBXBLENDSHAPECHANNEL_DEFORMPERCENT "DeformPercent" -#define FIELD_KFBXBLENDSHAPECHANNEL_FULLWEIGHTS "FullWeights" - -// -// FbxShape -// -#define FIELD_KFBXSHAPE_SHAPE "Shape" -#define FIELD_KFBXSHAPE_VERSION "Version" -#define FIELD_KFBXSHAPE_INDEXES "Indexes" -#define FIELD_KFBXSHAPE_VERTICES "Vertices" -#define FIELD_KFBXSHAPE_NORMALS "Normals" - -// -// FbxVertexCacheDeformer -// -#define FILED_KFBXVERTEXCACHEDEFORMER_VERSION "Version" -#define FILED_KFBXVERTEXCACHEDEFORMER_CACHE_CHANNEL "CacheChannel" - -// -// FbxCache -// -#define FIELD_KFBXCACHE_VERTEX_CACHE "Cache" -#define FIELD_KFBXCACHE_VERSION "Version" -#define FIELD_KFBXCACHE_CACHE_PATH "CachePath" - -// -// FbxBindingTable -// -#define FIELD_KFBXBINDINGTABLE_BINDING_TABLE "BindingTable" -#define FIELD_KFBXBINDINGTABLE_VERSION "Version" -#define FIELD_KFBXBINDINGTABLE_TARGET "Target" -#define FIELD_KFBXBINDINGTABLE_ENTRY "Entry" - -// -// FbxImplementation -// -#define FIELD_KFBXIMPLEMENTATION_IMPLEMENTATION "Implementation" -#define FIELD_KFBXIMPLEMENTATION_VERSION "Version" - -// -// FbxBindingOperator -// -#define FIELD_KFBXBINDINGOPERATOR_BINDING_OPERATOR "BindingOperator" -#define FIELD_KFBXBINDINGOPERATOR_VERSION "Version" -#define FIELD_KFBXBINDINGOPERATOR_ENTRY "Entry" - -// -// FbxCollection -// -#define FIELD_KFBXCOLLECTION_COLLECTION "Collection" -#define FIELD_KFBXCOLLECTION_VERSION "Version" - -// -// FbxCollectionExclusive -// -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_COLLECTIONEXCLUSIVE "CollectionExclusive" -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_VERSION "Version" - -// -// FbxSelectionSet -// -#define FIELD_KFBXSELECTIONSET_VERTICE_INDEXARRAY "VertexIndexArray" -#define FIELD_KFBXSELECTIONSET_EDGE_INDEXARRAY "EdgeIndexArray" -#define FIELD_KFBXSELECTIONSET_POLYGONVERTICES_INDEXARRAY "PolygonIndexArray" - -// -// FbxDisplayLayer -// -#define FIELD_KFBXDISPLAYLAYER_DISPLAYLAYER "DisplayLayer" -#define FIELD_KFBXDISPLAYLAYER_VERSION "Version" - -// -// FbxDocument -// -#define FIELD_KFBXDOCUMENT_DOCUMENT "Document" -#define FIELD_KFBXDOCUMENT_VERSION "Version" - -// -// FbxLayeredTexture -// -#define FIELD_KFBXLAYEREDTEXTURE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_KFBXLAYEREDTEXTURE_VERSION "Version" -#define FIELD_KFBXLAYEREDTEXTURE_BLENDMODES "BlendModes" -#define FIELD_KFBXLAYEREDTEXTURE_ALPHAS "Alphas" - -// -// FbxGobo -// -#define FIELD_KFBXGOBO_GOBOMANAGER "GoboManager" -#define FIELD_KFBXGOBO_GOBO "Gobo" -#define FIELD_KFBXGOBO_LIGHTGOBO "LightGobo" -#define FIELD_KFBXGOBO_VERSION "Version" -#define FIELD_KFBXGOBO_GOBONAME "GoboName" -#define FIELD_KFBXGOBO_GOBOPATH "GoboPath" -#define FIELD_KFBXGOBO_DRAWCOMPONENT "DrawComponent" - - -// -// Password -// -#define FIELD_PASSWORD "NodeId" -#define FIELD_OLD_PASSWORD "Param2a" -#define FIELD_XOR_STRING "?|/?*" - - -// Meanfull names for MB 6.0 -#define FIELD_KFBXLAYER_ELEMENT_UV "LayerElementUV" -#define FIELD_KFBXLAYER_ELEMENT_SMOOTHING "LayerElementSmoothing" -#define FIELD_KFBXLAYER_ELEMENT_VERTEX_CREASE "LayerElementVertexCrease" -#define FIELD_KFBXLAYER_ELEMENT_EDGE_CREASE "LayerElementEdgeCrease" -#define FIELD_KFBXLAYER_ELEMENT_HOLE "LayerElementHole" -#define FIELD_KFBXLAYER_ELEMENT_USER_DATA "LayerElementUserData" -#define FIELD_KFBXLAYER_ELEMENT_VISIBILITY "LayerElementVisibility" -#define FIELD_KFBXLAYER_ELEMENT_NORMAL "LayerElementNormal" -#define FIELD_KFBXLAYER_ELEMENT_BINORMAL "LayerElementBinormal" -#define FIELD_KFBXLAYER_ELEMENT_TANGENT "LayerElementTangent" -#define FIELD_KFBXLAYER_ELEMENT_MATERIAL "LayerElementMaterial" -#define FIELD_KFBXLAYER_ELEMENT_TEXTURE "LayerElementTexture" -#define FIELD_KFBXLAYER_ELEMENT_COLOR "LayerElementColor" -#define FIELD_KFBXLAYER_ELEMENT_POLYGON_GROUP "LayerElementPolygonGroup" -#define FIELD_KFBXLAYER_ELEMENT_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT_NAME "Name" -#define FIELD_KFBXLAYER_ELEMENT_TYPED_INDEX "TypedIndex" -#define FIELD_KFBXLAYER_ELEMENT_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXLAYER_ELEMENT_REFERENCE_INFO_TYPE "ReferenceInformationType" -#define FIELD_KFBXLAYER "Layer" -#define FIELD_KFBXLAYER_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT "LayerElement" -#define FIELD_KFBXLAYER_ELEMENT_TYPE "Type" - -// -// FbxLayer -// -#define FIELD_KFBXLAYER_GEOMETRY_LAYER "GeometryLayer" -#define FIELD_KFBXLAYER_LAYER_TEXTURE_INFO "LayerTextureInfo" -#define FIELD_KFBXLAYER_TEXTURE_MODE "TextureMode" -#define FIELD_KFBXLAYER_TEXTURE_BLEND_MODE "TextureBlendMode" -#define FIELD_KFBXLAYER_TEXTURE_ID_COUNT "TextureIdCount" -#define FIELD_KFBXLAYER_TEXTURE_ID "TextureId" -#define FIELD_KFBXLAYER_UV_MODE "UVMode" -#define FIELD_KFBXLAYER_UV_COUNT "UVCount" -#define FIELD_KFBXLAYER_UV "UV" -#define FIELD_KFBXLAYER_UV_INDEX "UVIndex" -#define FIELD_KFBXLAYER_UV_ID_COUNT "UVIdCount" -#define FIELD_KFBXLAYER_UV_ID "UVId" - -// -// FbxPose -// -#define FIELD_KFBXPOSE_VERSION "Version" -#define FIELD_KFBXPOSE_TYPE "Type" -#define FIELD_KFBXPOSE_POSE "Pose" -#define FIELD_KFBXPOSE_BIND_POSE "BindPose" -#define FIELD_KFBXPOSE_REST_POSE "RestPose" - - -// -// KSceneInfo -// -#define FIELD_SCENEINFO "SceneInfo" -#define FIELD_SCENEINFO_TYPE "Type" -#define FIELD_SCENEINFO_VERSION "Version" -#define FIELD_SCENEINFO_METADATA "MetaData" -#define FIELD_SCENEINFO_METADATA_VERSION "Version" -#define FIELD_SCENEINFO_METADATA_TITLE "Title" -#define FIELD_SCENEINFO_METADATA_SUBJECT "Subject" -#define FIELD_SCENEINFO_METADATA_AUTHOR "Author" -#define FIELD_SCENEINFO_METADATA_KEYWORDS "Keywords" -#define FIELD_SCENEINFO_METADATA_REVISION "Revision" -#define FIELD_SCENEINFO_METADATA_COMMENT "Comment" - -// -// Global setting: -// -#define FIELD_GLOBAL_SETTINGS "GlobalSettings" -#define FIELD_GLOBAL_SETTINGS_VERSION "Version" - -// -// FbxSceneReference: -// -#define FIELD_KFBXREFERENCE_REFERENCE "SceneReference" -#define FIELD_KFBXREFERENCE_VERSION "Version" - -// -// Constraints -// -#define FIELD_CONSTRAINT "Constraint" -#define FIELD_CONSTRAINT_VERSION "Version" -#define FIELD_CONSTRAINT_OFFSET "Offset" -#define TOKEN_KFBXCONSTRAINT_CONSTRAINT "Constraint" -#define TOKEN_KFBXCONSTRAINT_POSITION "Position From Positions" -#define TOKEN_KFBXCONSTRAINT_ROTATION "Rotation From Rotations" -#define TOKEN_KFBXCONSTRAINT_SCALE "Scale From Scales" -#define TOKEN_KFBXCONSTRAINT_PARENT "Parent-Child" -#define TOKEN_KFBXCONSTRAINT_SINGLECHAINIK "Single Chain IK" -#define TOKEN_KFBXCONSTRAINT_AIM "Aim" -#define TOKEN_KFBXCONSTRAINT_CHARACTER "Character" -#define TOKEN_KFBXCONSTRAINT_CUSTOM "Custom" - -// -// Controlset plug -// - - -// -// Object definition -// -#define FIELD_OBJECT_DESCRIPTION "Document" -#define FIELD_OBJECT_DESCRIPTION_NAME "Name" -#define FIELD_OBJECT_REFERENCES "References" -#define FIELD_OBJECT_REFERENCES_FILE_PATH_URL "FilePathUrl" -#define FIELD_OBJECT_REFERENCES_REFERENCE "Reference" -#define FIELD_OBJECT_DEFINITION "Definitions" -#define FIELD_OBJECT_PROPERTY_TEMPLATE "PropertyTemplate" -#define FIELD_OBJECT_DEFINITION_VERSION "Version" -#define FIELD_OBJECT_DEFINITION_COUNT "Count" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE "ObjectType" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO_LAYER "AudioLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_REFERENCE "SceneReference" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTAINER "Container" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MODEL "Model" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY "Geometry" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_NODE_ATTRIBUTE "NodeAttribute" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY_WEIGHTED_MAP "GeometryWeightedMap" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MARKETSET "MarkerSet" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION "Collection" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION_EXCLUSIVE "CollectionExclusive" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DISPLAY_LAYER "DisplayLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_THUMBNAIL "Thumbnail" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_VIDEO "Video" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SUBDEFORMER "SubDeformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPE "BlendShape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPECHANNEL "BlendShapeChannel" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTROLSET_PLUG "ControlSetPlug" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_POSE "Pose" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GENERIC_NODE "GenericNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CACHE "Cache" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_IMPLEMENTATION "Implementation" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGTABLE "BindingTable" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGOPERATOR "BindingOperator" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PROCEDURAL_TEXTURE "ProceduralTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENE "Scene" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LIBRARY "Library" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DOCUMENT "Document" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_FOLDER "Folder" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CLIP "Clip" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE "TimelineX" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE_TRACK "TimelineXTrack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_OBJECTMETADATA "ObjectMetaData" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PLUGIN_PARAMS "PluginParameters" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_STACK "AnimationStack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_LAYER "AnimationLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVENODE "AnimationCurveNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVE "AnimationCurve" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_EVALUATOR "AnimationEvaluator" - -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SELECTIONNODE "SelectionNode" - -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_MESH "Mesh" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SUBDIV "Subdiv" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_PATCH "Patch" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURB "Nurb" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_SURFACE "NurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_CURVE "NurbsCurve" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_TRIM_NURB_SURFACE "TrimNurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_LINE "Line" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GLOBAL_SETTINGS FIELD_GLOBAL_SETTINGS - -// -// Object properties -// -#define FIELD_OBJECT_PROPERTIES "Objects" - - -// -// Object relations -// -#define FIELD_OBJECT_RELATIONS "Relations" -#define FIELD_OBJECT_RELATIONS_TYPE_MODEL "Model" -#define FIELD_OBJECT_RELATIONS_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_RELATIONS_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_RELATIONS_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_RELATIONS_TYPE_VIDEO "Video" -#define FIELD_OBJECT_RELATIONS_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_RELATIONS_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_RELATIONS_TYPE_POSE "Pose" -#define FIELD_OBJECT_RELATIONS_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_RELATIONS_TYPE_CACHE "Cache" - -// -// Object connections -// -#define FIELD_OBJECT_CONNECTIONS "Connections" - - -// -// Takes -// -#define FIELD_TAKES "Takes" - -// Embedded files -#define FIELD_EMBEDDED_FILES "Embedding" -#define FIELD_EMBEDDED_FILE "File" -// Original filename, relative to the fbx -// It may point to a file not below the fbx. -#define FIELD_EMBEDDED_ORIGINAL_FILENAME "Original" -// Embedded filename, unique to the fbx, always relative to the fbx file; -// if two original filenames, in separate folders, are embedded in an fbx file, -// one of them will be renamed by using a folder. -#define FIELD_EMBEDDED_FILENAME "Filename" - -// Link back to the objects which use this file. -#define FIELD_EMBEDDED_CONSUMERS "Consumers" -#define FIELD_EMBEDDED_CONSUMER "Consumer" - -// -// Node Attribute -// -#define FIELD_NODE_ATTRIBUTE_NAME "NodeAttributeName" -#define FIELD_NODE_ATTRIBUTE_REFTO "NodeAttributeRefTo" - -// -// Old sections -// -#define FIELD_OLD_SECTION_VERSION5 "Version5" -#define FIELD_OLD_SECTION_HIERARCHYVIEW "HierarchyView" - -#define OBJECT_OLD_SECTION_VERSION5 "OldSection_VersionFive" -#define OBJECT_OLD_SECTION_HIERARCHYVIEW "OldSection_HierarchyView" - -#include - -#endif /* _FBXSDK_FILEIO_FILE_TOKENS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h deleted file mode 100644 index ce0ef8c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalcamerasettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxScene; -class FbxCamera; -class FbxCameraSwitcher; - -#define FBXSDK_CAMERA_PERSPECTIVE "Producer Perspective" -#define FBXSDK_CAMERA_TOP "Producer Top" -#define FBXSDK_CAMERA_FRONT "Producer Front" -#define FBXSDK_CAMERA_BACK "Producer Back" -#define FBXSDK_CAMERA_RIGHT "Producer Right" -#define FBXSDK_CAMERA_LEFT "Producer Left" -#define FBXSDK_CAMERA_BOTTOM "Producer Bottom" -#define FBXSDK_CAMERA_SWITCHER "Camera Switcher" - -/** This class contains the global camera settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format - * that is now the default no longer uses it. The relevant data (a subset of this class) has - * been moved to the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalCameraSettings -{ - FBXSDK_FRIEND_NEW(); - -public: - /** \name Default Camera Settings */ - //@{ - /** \enum EViewingMode Viewing modes. */ - enum EViewingMode - { - eStandard, // - -#endif /* _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h deleted file mode 100644 index d33b14e..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgloballightsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ - -#include - -#include - -#include - -class FbxGlobalLightSettingsProperties; - -/** This class contains functions for accessing global light settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format that is - * now the default no longer uses it. The relevant data (a subset of this class) has been moved to - * the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalLightSettings -{ - -public: - FBXSDK_FRIEND_NEW(); - /** - * \name Ambient Color - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only use RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Fog Option - */ - //@{ - - /** Activates or disables the fog. - * \param pEnable Set to \c true to activate the fog option or set to \c false to disable the fog option. - */ - void SetFogEnable(bool pEnable); - - /** Returns the fog option's current state. - * \return \c True if fog is activated, returns \c false if fog is disabled. - */ - bool GetFogEnable() const; - - /** Sets the fog color. - * \param pColor The fog color to be set. - * \remarks The fog color only uses RGB channels. - */ - void SetFogColor(FbxColor pColor); - - /** Returns the fog color. - * \return The fog color. - * \remarks The fog color only uses RGB channels. - */ - FbxColor GetFogColor() const; - - /** \enum EFogMode Fog types. - */ - enum EFogMode - { - eLinear, //! Linear fog mode. - eExponential, //! Exponential fog mode. - eExponentialSquareRoot //! Exponential square root fog mode. - }; - - /** Sets the fog mode. - * \param pMode The fog type to be set. - */ - void SetFogMode(EFogMode pMode); - - /** Returns the fog mode. - * \return The currently set fog mode. - */ - EFogMode GetFogMode() const; - - /** Sets the fog density. - * \param pDensity The fog density to be set. It can be any double value, however it can - * happen that other sections of FBX SDK may clamp values to reasonable values. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - void SetFogDensity(double pDensity); - - /** Returns the fog density. - * \return The currently set fog density. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - double GetFogDensity() const; - - /** Sets the distance from the view where the fog begins. - * \param pStart Distance where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. The new value is clamped to fit inside the interval [0, FogEnd()]. - */ - void SetFogStart(double pStart); - - /** Returns the distance from the view where the fog begins. - * \return The distance from the view where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogStart() const; - - /** Sets the distance from the view where the fog ends. - * \param pEnd Distance where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. The new value is adjusted to fit within the interval [FogStart(), inf). - */ - void SetFogEnd(double pEnd); - - /** Returns the distance from the view where the fog ends. - * \return The distance from the view where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogEnd() const; - - //@} - - /** - * \name Shadow Planes - * The functions in this section are supported only by FiLMBOX version 2.7 and earlier. - * FiLMBOX 3.0 supports shadow planes within a specific shader, which is not supported by the FBX SDK. - */ - //@{ - - /** Struct used to define the shadow plane. - */ - struct FBXSDK_DLL ShadowPlane - { - //! Default constructor. - ShadowPlane(); - - //! Activate flag. - bool mEnable; - - //! Origin point. - FbxVector4 mOrigin; - - //! Normal vector. - FbxVector4 mNormal; - }; - - /** Activates or disables the display of shadow planes. - * \param pShadowEnable Set to \c true to display shadow planes in the scene. - */ - void SetShadowEnable(bool pShadowEnable); - - /** Returns the current state of the shadow enable flag. - * \return \c True if shadow planes are set to be displayed in the scene. - */ - bool GetShadowEnable() const; - - /** Sets the shadow intensity that is applied to all shadow planes. - * \param pShadowIntensity Intensity applied to all the shadow planes. - * \remarks Ranges from 0 to 300. - */ - void SetShadowIntensity(double pShadowIntensity); - - /** Returns the shadow intensity applied to all shadow planes. - * \return The intensity applied to all shadow planes in the scene. - * \remarks Ranges from 0 to 300. - */ - double GetShadowIntensity() const; - - /** Returns the number of shadow planes. - * \return Number of shadow planes. - */ - int GetShadowPlaneCount() const; - - /** Returns a shadow plane at the specified index. - * \param pIndex Shadow plane index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer the shadow plane, or \c NULL if the index is out of range. - */ - ShadowPlane* GetShadowPlane(int pIndex, FbxStatus* pStatus=NULL); - - /** Adds a shadow plane. - * \param pShadowPlane The shadow plane to be added. - */ - void AddShadowPlane(ShadowPlane pShadowPlane); - - //! Removes all shadow planes. - void RemoveAllShadowPlanes(); - - //@} - - //! Restores default settings. - void RestoreDefaultSettings(); - - /** Assignment operator. - * \param pGlobalLightSettings FbxGlobalLightSettings object assigned to this one. - */ - const FbxGlobalLightSettings& operator=(const FbxGlobalLightSettings& pGlobalLightSettings); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxGlobalLightSettings(); - ~FbxGlobalLightSettings(); - - FbxGlobalLightSettingsProperties* mPH; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h deleted file mode 100644 index ddca0f3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h +++ /dev/null @@ -1,315 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class contains functions for accessing global settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGlobalSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGlobalSettings, FbxObject); - -public: - /** - * \name Axis system - */ - //@{ - - /** Sets the scene's coordinate system. - * \param pAxisSystem The coordinate system to set. - */ - void SetAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Returns the scene's current coordinate system. - * \return The scene's current coordinate system. - */ - FbxAxisSystem GetAxisSystem(); - //@} - - /** Sets the coordinate system's original Up Axis when the scene is created. - * \param pAxisSystem The coordinate system whose Up Axis is copied. - */ - void SetOriginalUpAxis(const FbxAxisSystem& pAxisSystem); - - /** Returns the coordinate system's original Up Axis. - * \return The coordinate system's original Up Axis when the scene is created. 0 is X, 1 is Y, 2 is Z axis. - */ - int GetOriginalUpAxis() const; - //@} - - /** - * \name System Units - */ - //@{ - - /** Sets the unit of measurement used by the system. - * \param pOther The system unit to set. - */ - void SetSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the unit of measurement used by the system. - * \return The unit of measurement used by the system. - */ - FbxSystemUnit GetSystemUnit() const; - - /** Sets the original unit of measurement used by the system. - * \param pOther The original system unit to set. - */ - void SetOriginalSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the original unit of measurement used by the system. - * \return The original unit of measurement used by the system. - */ - FbxSystemUnit GetOriginalSystemUnit() const; - //@} - - - /** - * \name Light Settings - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only uses the RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Camera Settings - */ - //@{ - /** Sets the default camera. - * \param pCameraName Name of the default camera. - * \return \c true if camera name is valid, returns \c false if the camera does not have a valid name. - * \remarks A valid camera name can be either one of the defined tokens (FBXSDK_CAMERA_PERSPECTIVE, - * FBXSDK_CAMERA_TOP, FBXSDK_CAMERA_FRONT, FBXSDK_CAMERA_BACK, FBXSDK_CAMERA_RIGHT, FBXSDK_CAMERA_LEFT and FBXSDK_CAMERA_BOTTOM) or the name - * of a camera inserted in the node tree under the scene's root node. - */ - bool SetDefaultCamera(const char* pCameraName); - - /** Returns the default camera name. - * \return The default camera name, or an empty string if no camera name has been set. - */ - FbxString GetDefaultCamera() const; - //@} - - /** - * \name Time Settings - */ - //@{ - /** Sets the time mode. - * \param pTimeMode One of the defined modes in class FbxTime. - */ - void SetTimeMode(FbxTime::EMode pTimeMode); - - /** Returns the time mode. - * \return The currently set TimeMode. - */ - FbxTime::EMode GetTimeMode() const; - - /** Sets the time protocol. - * \param pTimeProtocol One of the defined protocols in FbxTime class. - */ - void SetTimeProtocol(FbxTime::EProtocol pTimeProtocol); - - /** Returns the time protocol. - * \return The currently set time protocol (default FbxTime::eFrameCount). - */ - FbxTime::EProtocol GetTimeProtocol() const; - - /** \enum ESnapOnFrameMode Snap on frame mode. - */ - enum ESnapOnFrameMode - { - eNoSnap, //! No snap. - eSnapOnFrame, //! Snap on frame. - ePlayOnFrame, //! Play on frame. - eSnapAndPlayOnFrame //! Snap and play on frame. - }; - - /** Sets the snap on frame mode. - * \param pSnapOnFrameMode One of the following values: eNoSnap, eSnapOnFrame, ePlayOnFrame, or eSnapAndPlayOnFrame. - */ - void SetSnapOnFrameMode(ESnapOnFrameMode pSnapOnFrameMode); - - /** Returns the snap on frame mode. - * \return The currently set snap on frame mode (default eNoSnap). - */ - ESnapOnFrameMode GetSnapOnFrameMode() const; - - /** Sets the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void SetTimelineDefaultTimeSpan(const FbxTimeSpan& pTimeSpan); - - /** Returns the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void GetTimelineDefaultTimeSpan(FbxTimeSpan& pTimeSpan) const; - - /** Set custom frame rate. - * This is meaningless if the time mode is not FbxTime::eCustom. - */ - void SetCustomFrameRate(double pCustomFrameRate); - - /** Return frame rate if the time mode is FbxTime::eCustom. - * If the time mode is not FbxTime::eCustom, return -1. - */ - double GetCustomFrameRate() const; - //@} - - /** - * \name Time Markers - */ - //@{ - struct FBXSDK_DLL TimeMarker - { - //! Default constructor. - TimeMarker(); - - /** Copy constructor. - * \param pTimeMarker Another time marker copied to this time marker. - */ - TimeMarker(const TimeMarker& pTimeMarker); - - /** Assignment operator. - * \param pTimeMarker Another time marker assigned to this time marker. - */ - TimeMarker& operator=(const TimeMarker& pTimeMarker); - - //! Marker name. - FbxString mName; - - //! Marker time. - FbxTime mTime; - - //! Loop flag. - bool mLoop; - }; - - /** Returns the number of time markers. - * \return The number of time markers. - */ - int GetTimeMarkerCount() const; - - /** Returns the time marker at the given index. - * \param pIndex The time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return A copy of the time marker at the given index, or an empty one if an error occurred. - */ - TimeMarker GetTimeMarker(int pIndex, FbxStatus* pStatus=NULL) const; - - /** Adds a time marker. - * \param pTimeMarker The new time marker to be added. - * \param pStatus The FbxStatus object to hold error codes. - */ - void AddTimeMarker(const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - /** Replaces the time marker at the specified index with the new one. - * \param pIndex The time marker index. - * \param pTimeMarker The new time marker. - * \param pStatus The FbxStatus object to hold error codes. - */ - void ReplaceTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - //! Removes all time markers and sets the current time marker index to -1. - void RemoveAllTimeMarkers(); - - /** Sets the index of the current time marker. - * \param pIndex The current time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, or returns \c false if the index is not valid. - */ - bool SetCurrentTimeMarker(int pIndex, FbxStatus* pStatus=NULL); - - /** Returns the current time marker index. - * \return The current time marker index, or -1 if no current time marker has been set. - */ - int GetCurrentTimeMarker() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - FbxPropertyT UpAxis; - FbxPropertyT UpAxisSign; - - FbxPropertyT FrontAxis; - FbxPropertyT FrontAxisSign; - - FbxPropertyT CoordAxis; - FbxPropertyT CoordAxisSign; - - FbxPropertyT OriginalUpAxis; - FbxPropertyT OriginalUpAxisSign; - - FbxPropertyT UnitScaleFactor; - FbxPropertyT OriginalUnitScaleFactor; - - FbxPropertyT AmbientColor; - FbxPropertyT DefaultCamera; - FbxPropertyT TimeMode; - FbxPropertyT TimeProtocol; - FbxPropertyT SnapOnFrameMode; - FbxPropertyT TimeSpanStart; - FbxPropertyT TimeSpanStop; - FbxPropertyT CustomFrameRate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - void AxisSystemToProperties(); - void PropertiesToAxisSystem(); - - void Init(); - - FbxAxisSystem mAxisSystem; - int mNbTimeMarkers; - - friend class FbxWriterFbx6; - - FbxProperty mTimeMarkers; - FbxPropertyT mCurrentTimeMarker; - void AddSetTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus, bool pAdd); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTime::EMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgobo.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgobo.h deleted file mode 100644 index 1cad49a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxgobo.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgobo.h -#ifndef _FBXSDK_FILEIO_GOBO_H_ -#define _FBXSDK_FILEIO_GOBO_H_ - -#include - -#include - -#include - -/** - * \brief A gobo is a filter placed over a spot light to project light patterns through fog on a surface. - * You can also use an image file as a gobo, which cause the light to project an image, much like a projector. - */ -class FbxGobo -{ -public: - FbxGobo(char* pName) : - mName(pName) - { - } - - //! Gobo name. - FbxString mName; - //! path and file name of the image file. - FbxString mFileName; - //! Flag that if shows the light projected on the ground. - bool mDrawGroundProjection; - //! Flag that lets you create a volumetric lighting effect by making the light stream visible. - bool mVolumetricLightProjection; - //! Flag that front facing light occurs when the camera view is looking down or up the light stream of a Spot light, which makes the light stream look three-dimensional. - bool mFrontVolumetricLightProjection; -}; - -#include - -#endif /* _FBXSDK_FILEIO_GOBO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbximporter.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbximporter.h deleted file mode 100644 index b12c120..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbximporter.h +++ /dev/null @@ -1,393 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximporter.h -#ifndef _FBXSDK_FILEIO_IMPORTER_H_ -#define _FBXSDK_FILEIO_IMPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxDocumentInfo; -class FbxTakeInfo; -class FbxReader; -class FbxThread; - -struct FbxImportThreadArg; - -/** Class to import an FBX file into SDK objects. -* Normally this class is used as is. But for very special needs -* a user can override Initialize() for special purpose. -* -* An importer will select the appropriate reader to a particular file. -* Ex: When an importer must import an FBX 7 file, -* the importer will ask for all registered readers if an FBX 7 file reader is available, -* then if a reader is found, the importer will create -* the specialized FBX 7 reader and read the file. -* This way, an importer can "read" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. -* \see FbxReader -* -* Typical workflow for using the FbxImporter class: -* -# create a SDKManager -* -# create an IOSettings object -* -# create an empty scene -* -# create an importer -* -# initialize the importer with a file name and IOSettings -* -# set numerous states, take information, defining how the importer will behave -* -# call FbxImporter::Import() with an empty scene -* \code -* ex: -* // create a SdkManager -* FbxManager *lSdkManager = FbxManager::Create(); -* -* // create an IOSettings object -* FbxIOSettings * ios = FbxIOSettings::Create(lSdkManager, IOSROOT ); -* -* // set some IOSettings options -* ios->SetBoolProp(IMP_FBX_MATERIAL, true); -* ios->SetBoolProp(IMP_FBX_TEXTURE, true); -* -* // create an empty scene -* FbxScene* lScene = FbxScene::Create(lSdkManager,""); -* -* // Create an importer. -* FbxImporter* lImporter = FbxImporter::Create(lSdkManager, ""); -* -* // Initialize the importer by providing a filename and the IOSettings to use -* lImporter->Initialize("C:\\myfile.fbx", -1, ios); -* -* // Import the scene. -* lImporter->Import(lScene); -* -* // Destroy the importer. -* lImporter->Destroy(); -* \endcode -* -* \remarks According to the file suffix, a specialized reader will be created internally. -* Ex: for .fbx files a FBX Reader, for .3ds files, a 3ds reader, etc. -* Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS -* \nosubgrouping -*/ -class FBXSDK_DLL FbxImporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxImporter, FbxIOBase); - -public: - /** - * \name Import Functions - */ - //@{ - - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - bool Initialize(const char* pFileName, int pFileFormat=-1, FbxIOSettings * pIOSettings=NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Get the FBX version number of the FBX file. - * FBX version numbers start at 5.0.0. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - void GetFileVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get the default rendering resolution if present in the file header. - * \param pCamName Returned name of the camera. - * \param pResolutionMode Returned resolution mode. - * \param pW Returned width. - * \param pH Returned height. - * \return \c true if the default rendering settings are defined in the file, otherwise - * returns \c false with empty parameters. - */ - bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - - /** \enum EStreamOptionsGeneration Stream options identifiers. - * - \e eParseFile Parse the file - * - \e eDoNotParseFile Do not parse the file. - */ - enum EStreamOptionsGeneration - { - eParseFile, // Parse the file - eDoNotParseFile // Do not parse the file (fast) - }; - - /** Read the currently opened file header to retrieve information related to takes. - * \param pStreamOptionsGeneration Stream options identifier. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(EStreamOptionsGeneration pStreamOptionsGeneration = eParseFile); - - /** Read the currently opened file header to retrieve information related to takes. - * \param pFbxObject Target FBX file. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(FbxIO* pFbxObject); - - /** Import the currently opened file into a scene. - * \param pDocument Document to fill with file content. - * \param pNonBlocking If true, the import process will be executed in a new thread, allowing it to be non-blocking. - To determine if the import finished, refer to the function IsImporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * If the imported file is password protected and the password is not - * set or wrong, the FbxStatus object access with GetStatus() will be set with - * FbxStatus::ePasswordError. - */ - bool Import(FbxDocument* pDocument, bool pNonBlocking=false); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the importer is currently importing. - * \param pImportResult This parameter, after the import finished, will contain the result of the import success or failure. - * \return Return true if the importer is currently importing. - * \remarks This function will always return false if Import() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the import finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsImporting(bool& pImportResult); -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Point to a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - /** Set the password. - * All subsequently imported files are opened with the given password. - * \param pPassword Password string. - */ - void SetPassword(char* pPassword); - - /** - * \name Animation Stack Description Access - * \see FbxAnimStack - */ - //@{ - - /** Get the number of available animation stacks in the file. - * \return Number of animation stacks. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - int GetAnimStackCount(); - - /** Get the take information about an available take. - * Use the returned reference to a FbxTakeInfo object to set whether the indexed take is imported. - * \param pIndex Index of the requested take. - * \return Take information or \c NULL if function failed. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxTakeInfo* GetTakeInfo(int pIndex); - - /** Return the active animation stack name. - * \return Active animation stack name if there is one, otherwise returns an empty string. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxString GetActiveAnimStackName(); - - //@} - - /** - * \name Scene Description Access - */ - //@{ - - /** Get the scene info. - * \return Pointer to the scene info or \c NULL if no scene information - * is available in the file. - */ - FbxDocumentInfo* GetSceneInfo(); - - //@} - /** - * \name File Format - */ - //@{ - - /** Returns the index of the reader (FbxReader) associated with the file format. - This index is considered the identifier of the file format. - The array of registered readers can't be retrieved. - \return Index of the registered FbxReader associated with the file format. - If no reader found return -1. - \remarks According to the number of readers registered this value can change - for the same reader between SDK Manager instantiations. - */ - int GetFileFormat (); - - /** \return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFile* GetFile(); - FbxStream* GetStream(); - void* GetStreamData(); - - void ParseForGlobalSettings(bool pState); - void ParseForStatistics(bool pState); - bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - bool GetStatistics(FbxStatistics* pStatistics); - bool GetFrameRate(FbxTime::EMode &pTimeMode); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileOpen(FbxFile* pFile = NULL); - bool FileOpen(FbxStream* pStream, void* pStreamData); - void FileClose(); - - void GetImportOptionsInfo(); - bool IsNativeExtension (); - - //These two internal functions are only used to read old character pose data -public: - bool Initialize(FbxFile* pFile, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - bool Import(FbxDocument* pDocument, FbxIO* pFbxObject); - -private: - bool ImportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxReader* mReader; - FbxString mExtractFolder; - bool mParseForGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnits; - FbxTime::EMode mFrameRate; - bool mParseForStatistics; - FbxStatistics mStatistics; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mImportThread; - FbxImportThreadArg* mImportThreadArg; - bool mImportThreadResult; - bool mIsThreadImporting; -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - FbxProgress mProgress; - FbxFile* mFile; - FbxStream* mStream; - void* mStreamData; - bool mImportOptionsDone; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxString mActiveAnimStackName; - int mMajorVersion; - int mMinorVersion; - int mRevisionVersion; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - //For Initialize and Import - friend class FbxReaderFbx5; - friend class FbxReaderFbx6; - friend struct FbxReaderFbx7_Impl; - - friend void ImportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a FBX file has been imported. -class FBXSDK_DLL FbxEventPreImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreImport); -public: - inline FbxEventPreImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The document the FBX file is to be imported into. - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a FBX file has been imported. -class FBXSDK_DLL FbxEventPostImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostImport); -public: - inline FbxEventPostImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The imported document - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_IMPORTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiobase.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiobase.h deleted file mode 100644 index c13621b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiobase.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiobase.h -#ifndef _FBXSDK_FILEIO_IO_BASE_H_ -#define _FBXSDK_FILEIO_IO_BASE_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_IO_END_NODE_STR "_End" - -/** \brief Base class for FBX file importer and exporter. - * \nosubgrouping - */ -class FBXSDK_DLL FbxIOBase : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOBase, FbxObject); - -public: - /** Initializes the object. - * \param pFileName The name of the file to access. - * \param pFileFormat Unused in this class implementation. - * \param pIOSettings Unused in this class implementation. - * \return \c True if successful, returns \c False otherwise. - * \remarks To identify the error, inspect \e mStatus. - */ - virtual bool Initialize(const char *pFileName, int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Returns the file name. - * \return The file name or an empty string if no filename has been set. - */ - virtual FbxString GetFileName(); - - //! Get the status object containing the success or failure state. - FbxStatus& GetStatus() { return mStatus; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - - int DetectReaderFileFormat(const char *pFileName); - int DetectWriterFileFormat(const char *pFileName); - - FbxStatus mStatus; - FbxString mFilename; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_BASE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h deleted file mode 100644 index 1c27404..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiopluginregistry.h -#ifndef _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ -#define _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ - -#include - -#include -#include - -#include - -/** \brief This class serves as the registrar for file formats. - * A file format must be registered when it is used by the FBX SDK. - * - * This class also lets you create and read formats other than FBX SDK native formats. - * Users of FBX SDK can write their own plug-ins to read or write arbitrary file formats. - * Once their plug-ins are registered in this class, FBX SDK is able to read or write - * these file formats. - * - * Each FbxManager has a unique FbxIOPluginRegistry. To get an instance of this class: - * \code - * FbxIOPluginRegistry* registry = manager->GetIOPluginRegistry(); - * \endcode - * \see FbxManager::GetIOPluginRegistry() - */ -class FBXSDK_DLL FbxIOPluginRegistry -{ -public: - - /** Constructor. - */ - FbxIOPluginRegistry(); - - /** Destructor. - */ - virtual ~FbxIOPluginRegistry(); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Reader from a plug-in path. - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Reader. - * \param pCreateF The function that creates the Reader to be registered. - * \param pInfoF The function that provides information about the Reader file format, such as the file extension and description. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Reader. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(FbxReader::CreateFuncType pCreateF, - FbxReader::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Writer from a plug-in path - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Writer. - * \param pCreateF The function that creates the Writer to be registered. - * \param pInfoF The function that provides information about the Writer file format, such as the file extension, description and version. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Writer. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(FbxWriter::CreateFuncType pCreateF, - FbxWriter::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - - /** Creates a Reader. - * \param pManager The SDK Manager where the Reader is created. - * \param pImporter The importer that holds the created Reader. - * \param pPluginID The Reader ID. - */ - FbxReader* CreateReader(FbxManager& pManager, - FbxImporter& pImporter, - int pPluginID) const; - - /** Creates a Writer. - * \param pManager The SDK Manager where the Writer is created. - * \param pExporter The exporter that holds the created Writer. - * \param pPluginID The Writer ID. - */ - FbxWriter* CreateWriter(FbxManager& pManager, - FbxExporter& pExporter, - int pPluginID) const; - - /** Searches for the Reader ID by the file extension. - * \param pExt The file extension. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByExtension(const char* pExt) const; - - /** Searches for the Writer ID by the file extension. - * \param pExt The file extension. - * \return The Writer ID if found, if not found, returns -1 - */ - int FindWriterIDByExtension(const char* pExt) const; - - /** Searches for the Reader ID by the file format description. - * \param pDesc The file format description. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByDescription(const char* pDesc) const; - - /** Searches for the Writer ID by the file format description. - * \param pDesc The file format description. - * \return The Writer ID if found, if not found, returns -1. - */ - int FindWriterIDByDescription(const char* pDesc) const; - - /** Verifies if the file format of the Reader is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, return \c false otherwise.. - */ - bool ReaderIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Writer is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, return \c false otherwise. - */ - bool WriterIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Reader is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool ReaderIsGenuine(int pFileFormat) const; - - /** Verifies if the file format of the Writer is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool WriterIsGenuine(int pFileFormat) const; - - /** Returns the number of file formats that can be imported. - * \return The number of importable formats. - */ - int GetReaderFormatCount() const; - - /** Returns the number of file formats that can be exported. - * \return The number of exportable formats. - * \remarks Multiple identifiers for the same format count as - * different file formats. For example, eFBX_BINARY, eFBX_ASCII and eFBX_ENCRYPTED - * are counted as three separate file formats. - */ - int GetWriterFormatCount() const; - - /** Returns the description of an importable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetReaderFormatDescription(int pFileFormat) const; - - /** Returns the description of an exportable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetWriterFormatDescription(int pFileFormat) const; - - /** Returns an importable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetReaderFormatExtension(int pFileFormat) const; - - /** Returns an exportable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetWriterFormatExtension(int pFileFormat) const; - - /** Returns a list of the writable file format versions. - * \param pFileFormat The file format identifier. - * \return A pointer to a list of user-readable strings that represent the versions. - */ - char const* const* GetWritableVersions(int pFileFormat) const; - - /** Detects the import (reader) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectReaderFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Detects the export (writer) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectWriterFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Returns the file format of the native Reader. - * \return The ID of the native Reader's file format. - */ - int GetNativeReaderFormat(); - - /** Returns the file format of the native Writer. - * \return The ID of the native Writer's file format. - */ - int GetNativeWriterFormat(); - - /** Fills the IO Settings for all registered readers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings & pIOS); - - /** Fills the IO Settings for all registered writers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings & pIOS); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void RegisterInternalIOPlugins(); - - struct ReaderPluginEntry - { - ReaderPluginEntry(const char* pExtension, const char* pDescription, FbxReader::CreateFuncType pCreatorFunction, int pBaseID, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - FbxReader::CreateFuncType mCreatorFunction; - FbxReader::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - struct WriterPluginEntry - { - WriterPluginEntry(const char* pExtension, const char* pDescription, char const* const* pVersions, FbxWriter::CreateFuncType pCreatorFunction, int pBaseID, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - char const* const* mVersions; - FbxWriter::CreateFuncType mCreatorFunction; - FbxWriter::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - FbxArray mReaders; - FbxArray mWriters; - int mNativeReaderFormat; - int mNativeWriterFormat; - bool mInternalPluginMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettings.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettings.h deleted file mode 100644 index 22865a3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettings.h +++ /dev/null @@ -1,584 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettings.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_H_ - -#include - -#include -#include - -#include - -//Undefine the macro mkdir, since it conflict with function mkdir in Qt\4.2.3\src\corelib\io\qdir.h -#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir) - #undef mkdir -#endif - -#define IOSVisible true -#define IOSHidden false - -#define IOSSavable true -#define IOSNotSavable false - -#define IOSEnabled true -#define IOSDisabled false - -#define IOSBinary 0 -#define IOSASCII 1 - -class FbxManager; -class FbxIOSettings; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FbxIOPropInfo -{ -public: - FbxIOPropInfo(); - ~FbxIOPropInfo(); - - void* UIWidget; // UI widget for showing the property - void* cbValueChanged; // call back when value changed - void* cbDirty; // call back when value changed - FbxStringList labels; // list of labels in many languages -}; - -class FBXSDK_DLL FbxIOInfo -{ -public: - enum EImpExp {eImport, eExport}; - - FbxIOInfo(); - - void Reset(EImpExp pImpExp); - void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0); - FbxTime::EMode GetTimeMode(){ return mTimeMode; } - FbxTime GetFramePeriod(); - void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false); - FbxObject* GetASFScene(){ return mASFScene; } - void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;} - void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;} - -private: - FbxTime::EMode mTimeMode; - FbxObject* mASFScene; - EImpExp mImpExp; - FbxIOSettings* ios; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -/** FbxIOSettings is a collection of properties, arranged as a tree, that - * can be used by FBX file readers and writers to represent import and export - * options. - * It is primarily used by FBX importers (FbxImporter) and FBX exporter (FbxExporter) - * when reading or writing data from or to a disk. - * The FBX plugins of some Autodesk products expose a UI representing the content of those options - * to let users see and choose options when an import or export operation is about to be done. - * The tree of options is extensible. - * - * Options can be saved or loaded from an XML file using the functions: - * ReadXMLFile(), WriteXMLFile(), WriteXmlPropToFile(). This functionality can be useful - * for plugins that use preset files. - * - * An instance of FbxIOSettings must be created to be used before an import/export operation. - * When a new FbxIOSettings instance is created, all options are created with default values. - * The new instance of FbxIOSettings can be passed to the FbxManager, - * this way that instance will be used by all import/export operations. - * - * Ex: to set an instance of FbxIOSettings to the FbxManager - * - * \code - * // First create a new instance of FbxIOSettings - * FbxIOSettings * ios = FbxIOSettings::Create((FbxManager *) mManager, IOSROOT); - * // then set the FbxManager - * mManager->SetIOSettings(ios); - * \endcode - * - * It's also possible for a developer to create another instance - * of FbxIOSettings, set particular options and use it for import/export operation. - * - * Ex: to set an instance of FbxIOSettings to a FbxImporter/FbxExporter - * \code - * mImporter->SetIOSettings(ios); / mExporter->SetIOSettings(ios); - * \endcode - * - * A schematic view of the FbxIOSettings tree : - * - * \verbatim - - OPTION_GROUP_ROOT (IOSROOT) - | - | - ________________________________________ - | | - -OPTION_GROUP_EXPORT (IOSN_EXPORT) -OPTION_GROUP_IMPORT (IOSN_IMPORT) - | | - -OPTION_GROUP_A -OPTION_GROUP_A - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_B -OPTION_GROUP_B - | | | | - | -OPTION_GROUP_A | -OPTION_GROUP_A - | | | | | | - | | -OPTION_A | | -OPTION_A - | | -OPTION_B | | -OPTION_B - | | | | - | -OPTION_GROUP_B | -OPTION_GROUP_B - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_C -OPTION_GROUP_C - | | - -OPTION_A -OPTION_A - - \endverbatim - * - * Any group of options can contain sub options, or group of sub options. - * To access an option value, we must pass the full path to the Get/Set functions - * Ex: - * \code - * ios->GetBoolProp("Import|IncludeGrp|Animation", true); // the root node name is not required - * \endcode - * - * All options path are defined in the file kfbxiosettingspath.h to ease the access of any options. - * Then "Import|IncludeGrp|Animation" == IMP_ANIMATION since IMP_ANIMATION is defined in kfbxiosettingspath.h - * All options defined path start with "IMP_" for import branch or "EXP_" for export branch. - * - * We strongly encourage to use the defined path in kfbxiosettingspath.h, this way if the parent group of an option is changed - * the change occur only in kfbxiosettingspath.h not in the code elsewhere. - * - * Ex: to get the boolean import "Animation" option - * \code - * bool anim = ios->GetBoolProp(IMP_ANIMATION, true); // will return true if not found, since we pass true as second param - * \endcode - * - * Ex: to set the boolean import "Animation" option to false - * \code - * ios->SetBoolProp(IMP_ANIMATION, false); - * \endcode - * - * Ex: to create a new option group under the "Import" branch - * \code - * // get the parent "Import" property - * FbxProperty import_Group = ios->GetProperty( IOSN_IMPORT ); // IOSN_IMPORT is defined as "Import" in kfbxiosettingspath.h - * if(import_Group.IsValid()) // check if we have found the IOSN_IMPORT parent option - * { - * // add a new group of options "myOptionGroup" - * FbxProperty myOptionGrp = ios->AddPropertyGroup(import_Group, "myOptionGroup", FbxStringDT, "My Option Group UI Label"); - * } - * \endcode - * - * Ex: to create a new boolean option under the "myOptionGroup" - * \code - * FbxProperty myOptionGrp = ios->GetProperty( "Import|myOptionGroup" ); // can also use IOSN_IMPORT|"myOptionGroup" - * if(myOptionGrp.IsValid()) // check if we have found the "myOptionGroup" - * { - * bool defaultValue = true; - * FbxProperty myOption = ios->AddProperty(myOptionGrp, "myOptionName", FbxBoolDT, "My Option UI label" , &defaultValue, eFbxBool); - * } - * \endcode - * - * Ex: to set some flags to myOption - * \code - * FbxProperty myOption = ios->GetProperty( "Import|myOptionGroup|myOptionName" ); - * if(myOption.IsValid()) - * { - * myOPtion.ModifyFlag(FbxPropertyFlags::eUIHidden, true); // to make that option not visible to the UI - * myOPtion.ModifyFlag(FbxPropertyFlags::eNotSavable, true); // to avoid the read/save of that option in XML file - * } - * \endcode - */ -class FBXSDK_DLL FbxIOSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOSettings, FbxObject); - -public: - //! Supported languages enumeration list - enum ELanguage - { - eENU, //!< English - United States - eDEU, //!< German - Germany - eFRA, //!< French - France - eJPN, //!< Japanese - Japan - eKOR, //!< Korean(Extended Wansung) - Korea - eCHS, //!< Chinese - PRC - ePTB, //!< Portuguese - Brasil - eLanguageCount //!< Total language count - }; - - /** Add a property group under the root prop to be a direct child of IOSROOT - * \param pName - * \param pDataType - * \param pLabel - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - - /** Add a property group under another parent property - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, bool pVisible = true, - bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set and a min max values - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pMinValue - * \param pMaxValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - * \remarks Normally used with numeric properties Ex: integer, float, double, etc. - */ - FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL, - bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - - /** Get a property using the full path in the tree ex: "Export|IncludeGrp|Animation" - * \param pName - * \return a FbxProperty found - * \remarks We strongly encourage to use the defined path in kfbxiosettingspath.h - * ex: EXP_ANIMATION == "Export|IncludeGrp|Animation" - */ - FbxProperty GetProperty(const char* pName) const; - - /** Get a property using a short path found under the parent property. - * \param pParentProperty - * \param pName - * \return a FbxProperty found - * \remarks This is a faster way to access a property when the parent is known - */ - FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const; - - /** Get a bool property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return true or false - */ - bool GetBoolProp(const char* pName, bool pDefValue) const; - - /** set a bool property value using the full path - * \param pName - * \param pValue - */ - void SetBoolProp(const char* pName, bool pValue); - - /** Get a double property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a double - */ - double GetDoubleProp(const char* pName, double pDefValue) const; - - /** Set a double property using the full path - * \param pName - * \param pValue - */ - void SetDoubleProp(const char* pName, double pValue); - - /** Get a int property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetIntProp(const char* pName, int pDefValue) const; - - /** Set a int property value using the full path - * \param pName - * \param pValue - */ - void SetIntProp(const char* pName, int pValue); - - /** Get a FbxTime property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - */ - FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const; - - /** Set a FbxTime property value using the full path - * \param pName - * \param pValue - * \return a FbxTime - */ - void SetTimeProp(const char* pName, FbxTime pValue); - - /** \name Enum Properties - * An enum property is a list of FbxString and integer pairs. - * A current index value is available to get the selected pair - * of FbxString+integer - * - * Ex: Content of an enum property - * \code - * 0 -> (14, "Bird") - * 1 -> (17, "Horse") - * 2 -> (93, "Cat") - * 3 -> (45, "Dog") - * \endcode - * - * If current index is 2: the current int value is 93, - * and the current FbxString value is "Cat" - */ - - //@{ - - /** Get the FbxString at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a FbxString - */ - FbxString GetEnumProp(const char* pName, FbxString pDefValue) const; - - /** Get the integer at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetEnumProp(const char* pName, int pDefValue) const; - - /** Get the index of a FbxString from the enum property using the full path. - * \param pName - * \param pValue Return -1 if the FbxString is not found - * \return a int - */ - int GetEnumIndex(const char* pName, FbxString pValue) const; - - /** Set the current index using an existing FbxString of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the FbxString is not found - */ - void SetEnumProp(const char* pName, FbxString pValue); - - /** Set the current index of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the pValue is out of bound - */ - void SetEnumProp(const char* pName, int pValue); - - /** Remove a pair of FbxString+integer from an enum property. - * \param pName - * \param pValue The FbxString to find - * \remarks The first FbxString found from 0 index will be removed only even - * if the same FbxString exist in other index, if the current index was on the FbxString found - * the current index will be set to 0 - */ - void RemoveEnumPropValue(const char* pName, FbxString pValue); - - /** Empty all the FbxString+integer pair of the enum property - * \param pName - */ - void EmptyEnumProp(const char* pName); - - /** Check if a FbxString is present in the enum property. - * \param &pProp a ref to an enum prop - * \param &enumString ref to a FbxString to find - * \return \c true if found, \c false otherwise. - */ - bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const; - - /** Get the enum index of a FbxString - * \param &pProp a ref to an enum prop - * \param &enumString ref to string to find - * \param pNoCase To match case sensitive or not - * \return the index found or -1 if not found - */ - int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const; - //@} - - /** Set a specific flag value on a property using the full path - * \param pName - * \param propFlag - * \param pValue - * \return Always true - */ - bool SetFlag(const char* pName, FbxPropertyFlags::EFlags propFlag, bool pValue); - - /** Get a FbxString property value using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return The FbxString value - */ - FbxString GetStringProp(const char* pName, FbxString pDefValue) const; - - /** Set a FbxString property value using the full path - * \param pName - * \param pValue - */ - void SetStringProp(const char* pName, FbxString pValue); - - /** \name XML Serialization Functions */ - //@{ - - /** Load the settings values from an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - */ - virtual bool ReadXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - * \remarks The flag of the property must be FbxPropertyFlags::eNotSavable == false - */ - virtual bool WriteXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param pFullPath The path of the XML file. - * \param propPath a prop Path - * \return \c True on success, \c false otherwise. - * \remarks To save only a branch of the settings ex: Import branch only - */ - bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIOPropInfo* GetPropInfo(FbxProperty &pProp); - - ELanguage UILanguage; - FbxString GetLanguageLabel(FbxProperty& pProp); - void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel); - - FbxIOInfo impInfo; - FbxIOInfo expInfo; - - static FbxString GetUserMyDocumentDir(); - void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible); - - // Read an XML file from MyDocument dir - bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename); - - // Write property branch to an XML file in MyDocument dir - bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath); - - static const char* GetFileMergeDescription(int pIndex); - - enum ELoadMode - { - eCreate, /*!< Add to scene(duplicate the ones with the same name) */ - eMerge, /*!< Add to scene and update animation */ - eExclusiveMerge /*!< Update animation */ - }; - - - enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample }; - enum EObjectDerivation { eByLayer, eByEntity, eByBlock }; - - enum ESysUnits - { - eUnitsUser, - eUnitsInches, - eUnitsFeet, - eUnitYards, - eUnitsMiles, - eUnitsMillimeters, - eUnitsCentimeters, - eUnitsMeters, - eUnitsKilometers - }; - - enum ESysFrameRate - { - eFrameRateUser, - eFrameRateHours, - eFrameRateMinutes, - eFrameRateSeconds, - eFrameRateMilliseconds, - eFrameRateGames15, - eFrameRateFilm24, - eFrameRatePAL25, - eFrameRateNTSC30, - eFrameRateShowScan48, - eFrameRatePALField50, - eFrameRateNTSCField60 - }; - -// Max - enum EEnveloppeSystem - { - eSkinModifier, - ePhysic, - eBonePro, - eEnveloppeSystemCount - }; - -// Max - enum EGeometryType - { - eTriangle, - eSimplifiedPoly, - ePolygon, - eNurbs, - ePatch, - eGeometryTypeCount - }; - -// Maya IK type - enum EIKType - { - eNone, - eFBIK, - eHumanIK - }; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - void AddNewPropInfo(FbxProperty& pProp); - void DeletePropInfo(FbxProperty& pProp); - void DeleteAllPropInfo(FbxProperty& pProp); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h deleted file mode 100644 index 575f6fd..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h +++ /dev/null @@ -1,940 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettingspath.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ - -#include - -#include - -#define KS_BS FbxString("\\") - -#define KS_IMPORT FbxString("\\import") -#define KS_EXPORT FbxString("\\export") - -#define KS_FBX FbxString("\\FBX") // must be upper case -#define KS_PRESETS FbxString("\\Presets") -#define KS_LOG FbxString("\\Logs") -#define KS_FBXPRESETS KS_FBX + KS_PRESETS -#define KS_FBXLOGS KS_FBX + KS_LOG - -#define KS_MAYA FbxString("\\maya") -#define KS_3DSMAX FbxString("\\3dsmax") -#define KS_3DSMAX_VIZ KS_3DSMAX // use same name in "My Document" directory -#define KS_3DSMAX_DESIGN FbxString("\\3dsMaxDesign") - -#define KS_VERSION FbxString(FBXSDK_VERSION_STRING) - -#define FBXSDK_PLUGINS_REGISTRY_PATH "SOFTWARE\\Autodesk\\FBX_Plugins_" FBXSDK_VERSION_STRING - -#define IMP_FBX_PRESET_EXT "fbximportpreset" -#define EXP_FBX_PRESET_EXT "fbxexportpreset" - -#define M_E_FILENAME "Autodesk Media & Entertainment." -#define ARCH_FILENAME "Autodesk Architectural (Revit)." -#define MOBU_FILENAME "Autodesk MotionBuilder." -#define USERDEFINED_FILENAME "User defined." - -#define IMP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_IMPORT -#define EXP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_EXPORT - -#define LOG_VERSION_DIR KS_FBXLOGS + KS_BS + KS_VERSION - -#define MAX_LOG_VERSION_DIR KS_3DSMAX + LOG_VERSION_DIR -#define MAX_DESIGN_LOG_VERSION_DIR KS_3DSMAX_DESIGN + LOG_VERSION_DIR - -#define PRESET_VERSION_DIR KS_FBXPRESETS + KS_BS + KS_VERSION - -#define FN_LOCALIZATION_PREFIX "localization_" -#define FN_LOCALIZATION_EXT ".xlf" - -#define FN_LANGUAGE "lang.dat" -#define LANGUAGE_PATH KS_FBXPRESETS + KS_BS + KS_VERSION + KS_BS + FN_LANGUAGE - -// these defines are used for hierarchical properties names -#define IOSROOT "IOSRoot" - -#define IOSN_EXPORT "Export" -#define IOSN_IMPORT "Import" - -#define IOSN_PLUGIN_GRP "PlugInGrp" - -#define IOSN_PLUGIN_UI_WIDTH "PlugInUIWidth" -#define IOSN_PLUGIN_UI_HEIGHT "PlugInUIHeight" -#define IOSN_PLUGIN_VERSIONS_URL "PluginVersionsURL" -#define IOSN_PI_VERSION "PIVersion" - - -#define IOSN_PRESET_SELECTED "PresetSelected" - -#define IOSN_PRESETS_GRP "PresetsGrp" -#define IOSN_STATISTICS_GRP "StatisticsGrp" -#define IOSN_UNITS_GRP "UnitsGrp" -#define IOSN_INCLUDE_GRP "IncludeGrp" -#define IOSN_ADV_OPT_GRP "AdvOptGrp" -#define IOSN_AXISCONV_GRP "AxisConvGrp" -#define IOSN_CAMERA_GRP "CameraGrp" -#define IOSN_LIGHT_GRP "LightGrp" -#define IOSN_EXTRA_GRP "ExtraGrp" -#define IOSN_CONSTRAINTS_GRP "ConstraintsGrp" -#define IOSN_INPUTCONNECTIONS_GRP "InputConnectionsGrp" -#define IOSN_INFORMATION_GRP "InformationGrp" - -#define IOSN_UP_AXIS "UpAxis" -#define IOSN_UP_AXIS_MAX "UpAxisMax" -#define IOSN_ZUPROTATION_MAX "ZUProtation_max" -#define IOSN_AXISCONVERSION "AxisConversion" -#define IOSN_AUTO_AXIS "AutoAxis" -#define IOSN_FILE_UP_AXIS "FileUpAxis" - -#define IOSN_PRESETS "Presets" -#define IOSN_STATISTICS "Statistics" -#define IOSN_UNITS_SCALE "UnitsScale" -#define IOSN_TOTAL_UNITS_SCALE_TB "TotalUnitsScale" - -#define IOSN_SCALECONVERSION "ScaleConversion" -#define IOSN_MASTERSCALE "MasterScale" - -#define IOSN_DYN_SCALE_CONVERSION "DynamicScaleConversion" -#define IOSN_UNITSELECTOR "UnitsSelector" - -#define IOSN_AUDIO "Audio" -#define IOSN_ANIMATION "Animation" -#define IOSN_GEOMETRY "Geometry" -#define IOSN_DEFORMATION "Deformation" -#define IOSN_MARKERS "Markers" - -#define IOSN_CHARACTER "Character" -#define IOSN_CHARACTER_AS_MAYA_HIK "CharacterAsMayaHIK" -#define IOSN_CHARACTER_TYPE "CharacterType" -#define IOSN_CHARACTER_TYPE_DESC "CharacterTypeDesc" - -#define IOSN_SETLOCKEDATTRIB "LockedAttribute" -#define IOSN_TRIANGULATE "Triangulate" - -#define IOSN_MRCUSTOMATTRIBUTES "MRCustomAttributes" -#define IOSN_MESHPRIMITIVE "MeshPrimitive" -#define IOSN_MESHTRIANGLE "MeshTriangle" -#define IOSN_MESHPOLY "MeshPoly" -#define IOSN_NURB "Nurb" -#define IOSN_PATCH "Patch" -#define IOSN_BIP2FBX "Bip2Fbx" -#define IOSN_ASCIIFBX "AsciiFbx" - -#define IOSN_TAKE "Take" - -#define IOSN_GEOMETRYMESHPRIMITIVEAS "GeometryMeshPrimitiveAs" -#define IOSN_GEOMETRYMESHTRIANGLEAS "GeometryMeshTriangleAs" -#define IOSN_GEOMETRYMESHPOLYAS "GeometryMeshPolyAs" -#define IOSN_GEOMETRYNURBSAS "GeometryNurbsAs" - -#define IOSN_GEOMETRYNURBSSURFACEAS "GeometryNurbsSurfaceAs" -#define IOSN_GEOMETRYPATCHAS "GeometryPatchAs" - -#define IOSN_TANGENTS_BINORMALS "TangentsandBinormals" -#define IOSN_SMOOTH_MESH "SmoothMesh" -#define IOSN_SELECTION_SET "SelectionSet" -#define IOSN_ANIMATIONONLY "AnimationOnly" -#define IOSN_SELECTIONONLY "SelectionOnly" - -#define IOSN_BONE "Bone" -#define IOSN_BONEWIDTHHEIGHTLOCK "BoneWidthHeightLock" -#define IOSN_BONEASDUMMY "BoneAsDummy" -#define IOSN_BONEMAX4BONEWIDTH "Max4BoneWidth" -#define IOSN_BONEMAX4BONEHEIGHT "Max4BoneHeight" -#define IOSN_BONEMAX4BONETAPER "Max4BoneTaper" - -#define IOSN_REMOVE_SINGLE_KEY "RemoveSingleKey" -#define IOSN_CURVE_FILTER "CurveFilter" -#define IOSN_CONSTRAINT "Constraint" -#define IOSN_UI "UI" -#define IOSN_SHOW_UI_MODE "ShowUIMode" -#define IOSN_SHOW_WARNINGS_MANAGER "ShowWarningsManager" -#define IOSN_GENERATE_LOG_DATA "GenerateLogData" - -#define IOSN_PERF_GRP "Performance" -#define IOSN_REMOVEBADPOLYSFROMMESH "RemoveBadPolysFromMesh" -#define IOSN_META_DATA "MetaData" - -#define IOSN_CACHE_GRP "Cache" -#define IOSN_CACHE_SIZE "CacheSize" - -#define IOSN_MERGE_MODE "MergeMode" -#define IOSN_MERGE_MODE_DESCRIPTION "MergeModeDescription" -#define IOSN_ONE_CLICK_MERGE "OneClickMerge" -#define IOSN_ONE_CLICK_MERGE_TEXTURE "OneClickMergeTexture" - -#define IOSN_SAMPLINGPANEL "SamplingPanel" - -#define IOSN_FILE_FORMAT "FileFormat" -#define IOSN_FBX "Fbx" -#define IOSN_DXF "Dxf" -#define IOSN_OBJ "Obj" -#define IOSN_3DS "Max_3ds" // can't start by a number for xml node name -#define IOSN_COLLADA "Collada" - -#define IOSN_MOTION_BASE "Motion_Base" // for commond Motion Readers/Writers stream options -#define IOSN_BIOVISION_BVH "Biovision_BVH" -#define IOSN_MOTIONANALYSIS_HTR "MotionAnalysis_HTR" -#define IOSN_MOTIONANALYSIS_TRC "MotionAnalysis_TRC" -#define IOSN_ACCLAIM_ASF "Acclaim_ASF" -#define IOSN_ACCLAIM_AMC "Acclaim_AMC" -#define IOSN_VICON_C3D "Vicon_C3D" - -#define IOSN_SKINS "Skins" -#define IOSN_POINTCACHE "PointCache" -#define IOSN_QUATERNION "Quaternion" -#define IOSN_NAMETAKE "UseSceneName" - -#define IOSN_SHAPE "Shape" -#define IOSN_LIGHT "Light" -#define IOSN_LIGHTATTENUATION "LightAttenuation" -#define IOSN_CAMERA "Camera" -#define IOSN_VIEW_CUBE "ViewCube" - -#define IOSN_BINDPOSE "BindPose" - -#define IOSN_EMBEDTEXTURE_GRP "EmbedTextureGrp" -#define IOSN_EMBEDTEXTURE "EmbedTexture" -#define IOSN_EMBEDDED_FOLDER "ExtractFolder" -#define IOSN_CONVERTTOTIFF "Convert_2Tiff" - -#define IOSN_UNLOCK_NORMALS "UnlockNormals" -#define IOSN_CREASE "Crease" -#define IOSN_FINESTSUBDIVLEVEL "FinestSubdivLevel" - -#define IOSN_BAKEANIMATIONLAYERS "BakeAnimationLayers" -#define IOSN_BAKECOMPLEXANIMATION "BakeComplexAnimation" - -#define IOSN_BAKEFRAMESTART "BakeFrameStart" -#define IOSN_BAKEFRAMEEND "BakeFrameEnd" -#define IOSN_BAKEFRAMESTEP "BakeFrameStep" -#define IOSN_BAKEFRAMESTARTNORESET "BakeFrameStartNoReset" -#define IOSN_BAKEFRAMEENDNORESET "BakeFrameEndNoReset" -#define IOSN_BAKEFRAMESTEPNORESET "BakeFrameStepNoReset" - -#define IOSN_USEMATRIXFROMPOSE "UseMatrixFromPose" -#define IOSN_NULLSTOPIVOT "NullsToPivot" -#define IOSN_PIVOTTONULLS "PivotToNulls" - -#define IOSN_GEOMNORMALPERPOLY "GeomNormalPerPoly" -#define IOSN_MAXBONEASBONE "MaxBoneAsBone" -#define IOSN_MAXNURBSSTEP "MaxNurbsStep" -#define IOSN_PROTECTDRIVENKEYS "ProtectDrivenKeys" -#define IOSN_DEFORMNULLSASJOINTS "DeformNullsAsJoints" - -#define IOSN_ENVIRONMENT "Environment" - -// Note this will use IOSN_SAMPLINGRATE -#define IOSN_SAMPLINGRATESELECTOR "SamplingRateSelector" - -#define IOSN_SAMPLINGRATE "CurveFilterSamplingRate" -#define IOSN_APPLYCSTKEYRED "CurveFilterApplyCstKeyRed" -#define IOSN_CSTKEYREDTPREC "CurveFilterCstKeyRedTPrec" -#define IOSN_CSTKEYREDRPREC "CurveFilterCstKeyRedRPrec" -#define IOSN_CSTKEYREDSPREC "CurveFilterCstKeyRedSPrec" -#define IOSN_CSTKEYREDOPREC "CurveFilterCstKeyRedOPrec" -#define IOSN_APPLYKEYREDUCE "CurveFilterApplyKeyReduce" -#define IOSN_KEYREDUCEPREC "CurveFilterKeyReducePrec" -#define IOSN_APPLYKEYSONFRM "CurveFilterApplyKeysOnFrm" -#define IOSN_APPLYKEYSYNC "CurveFilterApplyKeySync" -#define IOSN_APPLYUNROLL "CurveFilterApplyUnroll" -#define IOSN_UNROLLPREC "CurveFilterUnrollPrec" -#define IOSN_UNROLLPATH "CurveFilterUnrollPath" -#define IOSN_UNROLLFORCEAUTO "CurveFilterUnrollForceAuto" - -#define IOSN_AUTOTANGENTSONLY "AutoTangentsOnly" - -#define IOSN_SMOOTHING_GROUPS "SmoothingGroups" -#define IOSN_HARDEDGES "HardEdges" -#define IOSN_EXP_HARDEDGES "expHardEdges" -#define IOSN_BLINDDATA "BlindData" -#define IOSN_INPUTCONNECTIONS "InputConnections" -#define IOSN_INSTANCES "Instances" -#define IOSN_REFERENCES "References" -#define IOSN_CONTAINEROBJECTS "ContainerObjects" -#define IOSN_BYPASSRRSINHERITANCE "BypassRrsInheritance" -#define IOSN_FORCEWEIGHTNORMALIZE "ForceWeightNormalize" -#define IOSN_SHAPEANIMATION "ShapeAnimation" -#define IOSN_SMOOTHKEYASUSER "SmoothKeyAsUser" - -#define IOSN_SCALEFACTOR "ScaleFactor" -#define IOSN_AXISCONVERSIONMETHOD "AxisConversionMethod" -#define IOSN_UPAXIS "UpAxis" -#define IOSN_SELECTIONSETNAMEASPOINTCACHE "SelectionSetNameAsPointCache" - -#define IOSN_KEEPFRAMERATE "KeepFrameRate" -#define IOSN_ATTENUATIONASINTENSITYCURVE "AttenuationAsIntensityCurve" - -#define IOSN_RESAMPLE_ANIMATION_CURVES "ResampleAnimationCurves" - -#define IOSN_TIMELINE "TimeLine" -#define IOSN_TIMELINE_SPAN "TimeLineSpan" - -#define IOSN_BUTTON_WEB_UPDATE "WebUpdateButton" -#define IOSN_BUTTON_EDIT "EditButton" -#define IOSN_BUTTON_OK "OKButton" -#define IOSN_BUTTON_CANCEL "CancelButton" -#define IOSN_MENU_EDIT_PRESET "EditPresetMenu" -#define IOSN_MENU_SAVE_PRESET "SavePresetMenu" - -#define IOSN_UIL "UILIndex" -#define IOSN_PLUGIN_PRODUCT_FAMILY "PluginProductFamily" - -#define IOSN_PLUGIN_UI_XPOS "PlugInUIXpos" -#define IOSN_PLUGIN_UI_YPOS "PlugInUIYpos" - -#define IOSN_FBX_EXTENTIONS_SDK "FBXExtentionsSDK" -#define IOSN_FBX_EXTENTIONS_SDK_WARNING "FBXExtentionsSDKWarning" - -#define IOSN_COLLADA_FRAME_COUNT "FrameCount" -#define IOSN_COLLADA_START "Start" -#define IOSN_COLLADA_TAKE_NAME "TakeName" - -#define IOSN_COLLADA_TRIANGULATE "Triangulate" -#define IOSN_COLLADA_SINGLEMATRIX "SingleMatrix" -#define IOSN_COLLADA_FRAME_RATE "FrameRate" - -#define IOSN_DXF_TRIANGULATE "Triangulate" -#define IOSN_DXF_DEFORMATION "Deformation" - -#define IOSN_DXF_WELD_VERTICES "WeldVertices" -#define IOSN_DXF_OBJECT_DERIVATION "ObjectDerivation" -#define IOSN_DXF_REFERENCE_NODE "ReferenceNode" - -#define IOSN_OBJ_REFERENCE_NODE "ReferenceNode" -#define IOSN_OBJ_TRIANGULATE "Triangulate" -#define IOSN_OBJ_DEFORMATION "Deformation" - -#define IOSN_3DS_REFERENCENODE "ReferenceNode" -#define IOSN_3DS_TEXTURE "Texture" -#define IOSN_3DS_MATERIAL "Material" -#define IOSN_3DS_ANIMATION "Animation" -#define IOSN_3DS_MESH "Mesh" -#define IOSN_3DS_LIGHT "Light" -#define IOSN_3DS_CAMERA "Camera" -#define IOSN_3DS_AMBIENT_LIGHT "AmbientLight" -#define IOSN_3DS_RESCALING "Rescaling" -#define IOSN_3DS_FILTER "Filter" -#define IOSN_3DS_SMOOTHGROUP "Smoothgroup" -#define IOSN_3DS_TAKE_NAME "TakeName" -#define IOSN_3DS_TEXUVBYPOLY "TexuvbyPoly" - -// so far, these three are for 3dsMax plug-in only -#define IOSN_ZOOMEXTENTS "ZoomExtents" -#define IOSN_GLOBAL_AMBIENT_COLOR "GlobalAmbientColor" -#define IOSN_EDGE_ORIENTATION "PreserveEdgeOrientation" - -#define IOSN_VERSIONS_UI_ALIAS "VersionsUIAlias" -#define IOSN_VERSIONS_COMP_DESCRIPTIONS "VersionsCompDescriptions" - -// FBX specific -#define IOSN_MODEL_COUNT "Model_Count" -#define IOSN_DEVICE_COUNT "Device_Count" -#define IOSN_CHARACTER_COUNT "Character_Count" -#define IOSN_ACTOR_COUNT "Actor_Count" -#define IOSN_CONSTRAINT_COUNT "Constraint_Count" -#define IOSN_MEDIA_COUNT "Media_Count" -#define IOSN_TEMPLATE "Template" -#define IOSN_PIVOT "Pivot" -#define IOSN_GLOBAL_SETTINGS "Global_Settings" -#define IOSN_MERGE_LAYER_AND_TIMEWARP "Merge_Layer_and_Timewarp" -#define IOSN_GOBO "Gobo" -#define IOSN_LINK "Link" -#define IOSN_MATERIAL "Material" -#define IOSN_TEXTURE "Texture" -#define IOSN_MODEL "Model" -#define IOSN_EMBEDDED "EMBEDDED" -#define IOSN_PASSWORD "Password" -#define IOSN_PASSWORD_ENABLE "Password_Enable" -#define IOSN_CURRENT_TAKE_NAME "Current_Take_Name" -#define IOSN_COLLAPSE_EXTERNALS "COLLAPSE EXTERNALS" -#define IOSN_COMPRESS_ARRAYS "Compress_Arrays" -#define IOSN_COMPRESS_LEVEL "Compress_Level" -#define IOSN_COMPRESS_MINSIZE "Compress_Minsize" -#define IOSN_EMBEDDED_PROPERTIES_SKIP "Embedded_Skipped_Properties" -#define IOSN_EXPORT_FILE_VERSION "ExportFileVersion" -#define IOSN_SHOW_UI_WARNING "ShowUIWarning" -#define IOSN_ADD_MATERIAL_TO_EDIT "AddMaterialToEdit" -#define IOSN_ENABLE_TEX_DISPLAY "EnableTexDisplay" -#define IOSN_PREFERED_ENVELOPPE_SYSTEM "kImportPreferedEnveloppeSystem" -#define IOSN_FIRST_TIME_RUN_NOTICE "FirstTimeRunNotice" -#define IOSN_EXTRACT_EMBEDDED_DATA "ExtractEmbeddedData" - -// internal usage -#define IOSN_USETMPFILEPERIPHERAL "UseTmpFilePeripheral" -#define IOSN_CONSTRUCTIONHISTORY "ConstructionHistory" -#define IOSN_RELAXED_FBX_CHECK "RelaxedFbxCheck" -#define IOSN_KEEP_PRODUCER_CAM_SRCOBJ "KeepProducerCamSrcObj" - -//--------------------------- -// import defined path - -#define IMP_PRESETS IOSN_IMPORT "|" IOSN_PRESETS_GRP "|" IOSN_PRESETS -#define IMP_STATISTICS IOSN_IMPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS - - -#define IMP_STATISTICS_GRP IOSN_IMPORT "|" IOSN_STATISTICS_GRP -#define IMP_PRESETS_GRP IOSN_IMPORT "|" IOSN_PRESETS_GRP -#define IMP_PLUGIN_GRP IOSN_IMPORT "|" IOSN_PLUGIN_GRP -#define IMP_INCLUDE_GRP IOSN_IMPORT "|" IOSN_INCLUDE_GRP -#define IMP_ADV_OPT_GRP IOSN_IMPORT "|" IOSN_ADV_OPT_GRP -#define IMP_FBX_EXT_SDK_GRP IOSN_IMPORT "|" IOSN_FBX_EXTENTIONS_SDK -#define IMP_FIRST_TIME_RUN_NOTICE_GRP IOSN_IMPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define IMP_INFORMATION_GRP IOSN_IMPORT "|" IOSN_INFORMATION_GRP - -#define IMP_FIRST_TIME_RUN_NOTICE IMP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define IMP_GEOMETRY IMP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define IMP_AUDIO IMP_INCLUDE_GRP "|" IOSN_AUDIO -#define IMP_ANIMATION IMP_INCLUDE_GRP "|" IOSN_ANIMATION -#define IMP_SETLOCKEDATTRIB IMP_INCLUDE_GRP "|" IOSN_SETLOCKEDATTRIB - -#define IMP_MERGE_MODE IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE -#define IMP_MERGE_MODE_DESCRIPTION IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE_DESCRIPTION -#define IMP_ONE_CLICK_MERGE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE -#define IMP_ONE_CLICK_MERGE_TEXTURE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE_TEXTURE - -#define IMP_ADD_MATERIAL_TO_EDIT IMP_INCLUDE_GRP "|" IOSN_ADD_MATERIAL_TO_EDIT -#define IMP_ENABLE_TEX_DISPLAY IMP_INCLUDE_GRP "|" IOSN_ENABLE_TEX_DISPLAY -#define IMP_PREFERED_ENVELOPPE_SYSTEM IMP_INCLUDE_GRP "|" IOSN_PREFERED_ENVELOPPE_SYSTEM - -#define IMP_CAMERA_GRP IMP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define IMP_LIGHT_GRP IMP_INCLUDE_GRP "|" IOSN_LIGHT_GRP -#define IMP_EMBEDDED_GRP IMP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE -#define IMP_EXTRACT_FOLDER IMP_EMBEDDED_GRP "|" IOSN_EMBEDDED_FOLDER - -#define IMP_LIGHT IMP_LIGHT_GRP "|" IOSN_LIGHT -#define IMP_ENVIRONMENT IMP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define IMP_CAMERA IMP_CAMERA_GRP "|" IOSN_CAMERA -#define IMP_VIEW_CUBE IMP_INCLUDE_GRP "|" IOSN_VIEW_CUBE - -// so far, this one is for 3dsMax plug-in only -#define IMP_ZOOMEXTENTS IMP_INCLUDE_GRP "|" IOSN_ZOOMEXTENTS -#define IMP_GLOBAL_AMBIENT_COLOR IMP_LIGHT_GRP "|" IOSN_GLOBAL_AMBIENT_COLOR - -#define IMP_CURVEFILTERS IMP_ANIMATION "|" IOSN_CURVE_FILTER -#define IMP_SAMPLINGPANEL IMP_ANIMATION "|" IOSN_SAMPLINGPANEL - -#define IMP_DEFORMATION IMP_ANIMATION "|" IOSN_DEFORMATION -#define IMP_BONE IMP_ANIMATION "|" IOSN_BONE -#define IMP_ATTENUATIONASINTENSITYCURVE IMP_ANIMATION "|" IOSN_ATTENUATIONASINTENSITYCURVE - -#define IMP_EXTRA_GRP IMP_ANIMATION "|" IOSN_EXTRA_GRP - -#define IMP_TAKE IMP_EXTRA_GRP "|" IOSN_TAKE -#define IMP_KEEPFRAMERATE IMP_EXTRA_GRP "|" IOSN_KEEPFRAMERATE -#define IMP_TIMELINE IMP_EXTRA_GRP "|" IOSN_TIMELINE -#define IMP_TIMELINE_SPAN IMP_EXTRA_GRP "|" IOSN_TIMELINE_SPAN -#define IMP_BAKEANIMATIONLAYERS IMP_EXTRA_GRP "|" IOSN_BAKEANIMATIONLAYERS -#define IMP_MARKERS IMP_EXTRA_GRP "|" IOSN_MARKERS -#define IMP_QUATERNION IMP_EXTRA_GRP "|" IOSN_QUATERNION -#define IMP_PROTECTDRIVENKEYS IMP_EXTRA_GRP "|" IOSN_PROTECTDRIVENKEYS -#define IMP_DEFORMNULLSASJOINTS IMP_EXTRA_GRP "|" IOSN_DEFORMNULLSASJOINTS -#define IMP_NULLSTOPIVOT IMP_EXTRA_GRP "|" IOSN_NULLSTOPIVOT -#define IMP_POINTCACHE IMP_EXTRA_GRP "|" IOSN_POINTCACHE -#define IMP_SHAPEANIMATION IMP_EXTRA_GRP "|" IOSN_SHAPEANIMATION - -#define IMP_CONSTRAINTS_GRP IMP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define IMP_CONSTRAINT IMP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT - -#define IMP_CHARACTER IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER -#define IMP_CHARACTER_AS_MAYA_HIK IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_AS_MAYA_HIK -#define IMP_CHARACTER_TYPE IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_TYPE - - -#define IMP_SAMPLINGRATESELECTOR IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATESELECTOR -#define IMP_SAMPLINGRATE IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATE - -#define IMP_UNITS_GRP IMP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define IMP_AXISCONV_GRP IMP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define IMP_CACHE_GRP IMP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define IMP_UI IMP_ADV_OPT_GRP "|" IOSN_UI -#define IMP_FILEFORMAT IMP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define IMP_PERF_GRP IMP_ADV_OPT_GRP "|" IOSN_PERF_GRP - -#define IMP_REMOVEBADPOLYSFROMMESH IMP_PERF_GRP "|" IOSN_REMOVEBADPOLYSFROMMESH -#define IMP_META_DATA IMP_PERF_GRP "|" IOSN_META_DATA - -#define IMP_FBX_EXTENTIONS_SDK_WARNING IMP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING - -#define IMP_SCALECONVERSION IMP_UNITS_GRP "|" IOSN_SCALECONVERSION -#define IMP_UNITS_TB IMP_UNITS_GRP "|" IOSN_UNITS_TB -#define IMP_MASTERSCALE IMP_UNITS_GRP "|" IOSN_MASTERSCALE -#define IMP_UNITS_SCALE IMP_UNITS_GRP "|" IOSN_UNITS_SCALE - -#define IMP_DYN_SCALE_CONVERSION IMP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define IMP_UNITSELECTOR IMP_UNITS_GRP "|" IOSN_UNITSELECTOR -#define IMP_TOTAL_UNITS_SCALE_TB IMP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define IMP_SHOW_UI_MODE IMP_UI "|" IOSN_SHOW_UI_MODE -#define IMP_SHOW_UI_WARNING IMP_UI "|" IOSN_SHOW_UI_WARNING -#define IMP_SHOW_WARNINGS_MANAGER IMP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define IMP_GENERATE_LOG_DATA IMP_UI "|" IOSN_GENERATE_LOG_DATA -#define IMP_PLUGIN_VERSIONS_URL IMP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define IMP_DXF IMP_ADV_OPT_GRP "|" IOSN_DXF - -// note: IMP_FILEFORMAT group is not visible -#define IMP_FBX IMP_FILEFORMAT "|" IOSN_FBX -#define IMP_OBJ IMP_FILEFORMAT "|" IOSN_OBJ -#define IMP_3DS IMP_FILEFORMAT "|" IOSN_3DS - -#define IMP_MOTION_BASE IMP_FILEFORMAT "|" IOSN_MOTION_BASE -#define IMP_BIOVISION_BVH IMP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define IMP_MOTIONANALYSIS_HTR IMP_FILEFORMAT "|" IOSN_MOTIONANALYSIS_HTR -#define IMP_ACCLAIM_ASF IMP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define IMP_ACCLAIM_AMC IMP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - -#define IMP_UNLOCK_NORMALS IMP_GEOMETRY "|" IOSN_UNLOCK_NORMALS -#define IMP_CREASE IMP_GEOMETRY "|" IOSN_CREASE - -#define IMP_SMOOTHING_GROUPS IMP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define IMP_HARDEDGES IMP_GEOMETRY "|" IOSN_HARDEDGES -#define IMP_BLINDDATA IMP_GEOMETRY "|" IOSN_BLINDDATA - -#define IMP_BONE_WIDTHHEIGHTLOCK IMP_BONE "|" IOSN_BONEWIDTHHEIGHTLOCK -#define IMP_BONEASDUMMY IMP_BONE "|" IOSN_BONEASDUMMY -#define IMP_BONEMAX4BONEWIDTH IMP_BONE "|" IOSN_BONEMAX4BONEWIDTH -#define IMP_BONEMAX4BONEHEIGHT IMP_BONE "|" IOSN_BONEMAX4BONEHEIGHT -#define IMP_BONEMAX4BONETAPER IMP_BONE "|" IOSN_BONEMAX4BONETAPER - -#define IMP_SHAPE IMP_DEFORMATION "|" IOSN_SHAPE -#define IMP_SKINS IMP_DEFORMATION "|" IOSN_SKINS -#define IMP_USEMATRIXFROMPOSE IMP_DEFORMATION "|" IOSN_USEMATRIXFROMPOSE -#define IMP_FORCEWEIGHTNORMALIZE IMP_DEFORMATION "|" IOSN_FORCEWEIGHTNORMALIZE - - - -#define IMP_APPLYCSTKEYRED IMP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define IMP_CSTKEYREDTPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define IMP_CSTKEYREDRPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define IMP_CSTKEYREDSPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define IMP_CSTKEYREDOPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define IMP_AUTOTANGENTSONLY IMP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define IMP_APPLYKEYREDUCE IMP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define IMP_KEYREDUCEPREC IMP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define IMP_APPLYKEYSONFRM IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define IMP_APPLYKEYSYNC IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define IMP_APPLYUNROLL IMP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define IMP_UNROLLPREC IMP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define IMP_UNROLLPATH IMP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define IMP_UNROLLFORCEAUTO IMP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define IMP_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_UP_AXIS -#define IMP_UP_AXIS_MAX IMP_AXISCONV_GRP "|" IOSN_UP_AXIS_MAX -#define IMP_ZUPROTATION_MAX IMP_AXISCONV_GRP "|" IOSN_ZUPROTATION_MAX -#define IMP_AXISCONVERSION IMP_AXISCONV_GRP "|" IOSN_AXISCONVERSION -#define IMP_AUTO_AXIS IMP_AXISCONV_GRP "|" IOSN_AUTO_AXIS -#define IMP_FILE_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_FILE_UP_AXIS - -#define IMP_CACHE_SIZE IMP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define IMP_PLUGIN_UI_WIDTH IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define IMP_PLUGIN_UI_HEIGHT IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define IMP_PRESET_SELECTED IMP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define IMP_UIL IMP_PLUGIN_GRP "|" IOSN_UIL -#define IMP_PLUGIN_PRODUCT_FAMILY IMP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define IMP_PLUGIN_UI_XPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define IMP_PLUGIN_UI_YPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define IMP_DXF_WELD_VERTICES IMP_DXF "|" IOSN_DXF_WELD_VERTICES -#define IMP_DXF_OBJECT_DERIVATION IMP_DXF "|" IOSN_DXF_OBJECT_DERIVATION -#define IMP_DXF_REFERENCE_NODE IMP_DXF "|" IOSN_DXF_REFERENCE_NODE - -#define IMP_OBJ_REFERENCE_NODE IMP_OBJ "|" IOSN_OBJ_REFERENCE_NODE - -#define IMP_3DS_REFERENCENODE IMP_3DS "|" IOSN_3DS_REFERENCENODE -#define IMP_3DS_TEXTURE IMP_3DS "|" IOSN_3DS_TEXTURE -#define IMP_3DS_MATERIAL IMP_3DS "|" IOSN_3DS_MATERIAL -#define IMP_3DS_ANIMATION IMP_3DS "|" IOSN_3DS_ANIMATION -#define IMP_3DS_MESH IMP_3DS "|" IOSN_3DS_MESH -#define IMP_3DS_LIGHT IMP_3DS "|" IOSN_3DS_LIGHT -#define IMP_3DS_CAMERA IMP_3DS "|" IOSN_3DS_CAMERA -#define IMP_3DS_AMBIENT_LIGHT IMP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define IMP_3DS_RESCALING IMP_3DS "|" IOSN_3DS_RESCALING -#define IMP_3DS_FILTER IMP_3DS "|" IOSN_3DS_FILTER -#define IMP_3DS_SMOOTHGROUP IMP_3DS "|" IOSN_3DS_SMOOTHGROUP - -#define IMP_FBX_MODEL_COUNT IMP_FBX "|" IOSN_MODEL_COUNT -#define IMP_FBX_DEVICE_COUNT IMP_FBX "|" IOSN_DEVICE_COUNT -#define IMP_FBX_CHARACTER_COUNT IMP_FBX "|" IOSN_CHARACTER_COUNT -#define IMP_FBX_ACTOR_COUNT IMP_FBX "|" IOSN_ACTOR_COUNT -#define IMP_FBX_CONSTRAINT_COUNT IMP_FBX "|" IOSN_CONSTRAINT_COUNT -#define IMP_FBX_MEDIA_COUNT IMP_FBX "|" IOSN_MEDIA_COUNT - -#define IMP_FBX_TEMPLATE IMP_FBX "|" IOSN_TEMPLATE -#define IMP_FBX_PIVOT IMP_FBX "|" IOSN_PIVOT -#define IMP_FBX_GLOBAL_SETTINGS IMP_FBX "|" IOSN_GLOBAL_SETTINGS -#define IMP_FBX_CHARACTER IMP_FBX "|" IOSN_CHARACTER -#define IMP_FBX_CONSTRAINT IMP_FBX "|" IOSN_CONSTRAINT -#define IMP_FBX_MERGE_LAYER_AND_TIMEWARP IMP_FBX "|" IOSN_MERGE_LAYER_AND_TIMEWARP -#define IMP_FBX_GOBO IMP_FBX "|" IOSN_GOBO -#define IMP_FBX_SHAPE IMP_FBX "|" IOSN_SHAPE -#define IMP_FBX_LINK IMP_FBX "|" IOSN_LINK -#define IMP_FBX_MATERIAL IMP_FBX "|" IOSN_MATERIAL -#define IMP_FBX_TEXTURE IMP_FBX "|" IOSN_TEXTURE -#define IMP_FBX_MODEL IMP_FBX "|" IOSN_MODEL -#define IMP_FBX_AUDIO IMP_FBX "|" IOSN_AUDIO -#define IMP_FBX_ANIMATION IMP_FBX "|" IOSN_ANIMATION -#define IMP_FBX_PASSWORD IMP_FBX "|" IOSN_PASSWORD -#define IMP_FBX_PASSWORD_ENABLE IMP_FBX "|" IOSN_PASSWORD_ENABLE -#define IMP_FBX_CURRENT_TAKE_NAME IMP_FBX "|" IOSN_CURRENT_TAKE_NAME -#define IMP_FBX_EXTRACT_EMBEDDED_DATA IMP_FBX "|" IOSN_EXTRACT_EMBEDDED_DATA -// internal use -#define IMP_RELAXED_FBX_CHECK IMP_FBX "|" IOSN_RELAXED_FBX_CHECK -#define IMP_KEEP_PRODUCER_CAM_SRCOBJ IMP_FBX "|" IOSN_KEEP_PRODUCER_CAM_SRCOBJ - -#define IMP_BUTTON_WEB_UPDATE IMP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define IMP_PI_VERSION IMP_INFORMATION_GRP "|" IOSN_PI_VERSION - - -// end of import defined path -//--------------------------- - -//--------------------------- -// export defined path - -#define EXP_STATISTICS_GRP IOSN_EXPORT "|" IOSN_STATISTICS_GRP -#define EXP_ADV_OPT_GRP IOSN_EXPORT "|" IOSN_ADV_OPT_GRP -#define EXP_PRESETS_GRP IOSN_EXPORT "|" IOSN_PRESETS_GRP -#define EXP_STATISTICS IOSN_EXPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS -#define EXP_FIRST_TIME_RUN_NOTICE_GRP IOSN_EXPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define EXP_INFORMATION_GRP IOSN_EXPORT "|" IOSN_INFORMATION_GRP - -#define EXP_PLUGIN_GRP IOSN_EXPORT "|" IOSN_PLUGIN_GRP -#define EXP_INCLUDE_GRP IOSN_EXPORT "|" IOSN_INCLUDE_GRP -#define EXP_FBX_EXT_SDK_GRP IOSN_EXPORT "|" IOSN_FBX_EXTENTIONS_SDK - -#define EXP_UNITS_GRP EXP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define EXP_FILEFORMAT EXP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define EXP_AXISCONV_GRP EXP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define EXP_CACHE_GRP EXP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define EXP_UI EXP_ADV_OPT_GRP "|" IOSN_UI - -#define EXP_FBX_EXTENTIONS_SDK_WARNING EXP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING -#define EXP_FIRST_TIME_RUN_NOTICE EXP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define EXP_SCALEFACTOR EXP_AXISCONV_GRP "|" IOSN_SCALEFACTOR -#define EXP_AXISCONVERSIONMETHOD EXP_AXISCONV_GRP "|" IOSN_AXISCONVERSIONMETHOD -#define EXP_UPAXIS EXP_AXISCONV_GRP "|" IOSN_UPAXIS - -#define EXP_UNITS_SCALE EXP_UNITS_GRP "|" IOSN_UNITS_SCALE -#define EXP_MASTERSCALE EXP_UNITS_GRP "|" IOSN_MASTERSCALE - -#define EXP_DYN_SCALE_CONVERSION EXP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define EXP_UNITSELECTOR EXP_UNITS_GRP "|" IOSN_UNITSELECTOR - -#define EXP_TOTAL_UNITS_SCALE_TB EXP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define EXP_SHOW_UI_MODE EXP_UI "|" IOSN_SHOW_UI_MODE -#define EXP_SHOW_UI_WARNING EXP_UI "|" IOSN_SHOW_UI_WARNING -#define EXP_SHOW_WARNINGS_MANAGER EXP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define EXP_GENERATE_LOG_DATA EXP_UI "|" IOSN_GENERATE_LOG_DATA -#define EXP_PLUGIN_VERSIONS_URL EXP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define EXP_PRESETS EXP_PRESETS_GRP "|" IOSN_PRESETS - -#define EXP_CAMERA_GRP EXP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define EXP_LIGHT_GRP EXP_INCLUDE_GRP "|" IOSN_LIGHT_GRP - -#define EXP_GEOMETRY EXP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define EXP_AUDIO EXP_INCLUDE_GRP "|" IOSN_AUDIO -#define EXP_ANIMATION EXP_INCLUDE_GRP "|" IOSN_ANIMATION -#define EXP_PIVOTTONULLS EXP_INCLUDE_GRP "|" IOSN_PIVOTTONULLS -#define EXP_LIGHT EXP_LIGHT_GRP "|" IOSN_LIGHT -#define EXP_LIGHTATTENUATION EXP_INCLUDE_GRP "|" IOSN_LIGHTATTENUATION -#define EXP_ENVIRONMENT EXP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define EXP_CAMERA EXP_CAMERA_GRP "|" IOSN_CAMERA -#define EXP_BINDPOSE EXP_INCLUDE_GRP "|" IOSN_BINDPOSE -#define EXP_SELECTIONONLY EXP_INCLUDE_GRP "|" IOSN_SELECTIONONLY - - -#define EXP_INPUTCONNECTIONS_GRP EXP_INCLUDE_GRP "|" IOSN_INPUTCONNECTIONS_GRP -#define EXP_INPUTCONNECTIONS EXP_INPUTCONNECTIONS_GRP "|" IOSN_INPUTCONNECTIONS - -#define EXP_BYPASSRRSINHERITANCE EXP_INCLUDE_GRP "|" IOSN_BYPASSRRSINHERITANCE - -#define EXP_EMBEDTEXTURE_GRP EXP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE_GRP -#define EXP_EMBEDTEXTURE EXP_EMBEDTEXTURE_GRP "|" IOSN_EMBEDTEXTURE -#define EXP_CONVERTTOTIFF EXP_EMBEDTEXTURE "|" IOSN_CONVERTTOTIFF - - -#define EXP_CURVEFILTERS EXP_ANIMATION "|" IOSN_CURVE_FILTER - -#define EXP_DEFORMATION EXP_ANIMATION "|" IOSN_DEFORMATION -#define EXP_BAKECOMPLEXANIMATION EXP_ANIMATION "|" IOSN_BAKECOMPLEXANIMATION -#define EXP_BONE EXP_ANIMATION "|" IOSN_BONE - -#define EXP_SAMPLINGFRAMERATE EXP_ANIMATION "|" IOSN_SAMPLINGFRAMERATE -#define EXP_POINTCACHE EXP_ANIMATION "|" IOSN_POINTCACHE -#define EXP_SMOOTHKEYASUSER EXP_ANIMATION "|" IOSN_SMOOTHKEYASUSER - -#define EXP_EXTRA_GRP EXP_ANIMATION "|" IOSN_EXTRA_GRP - -#define EXP_REMOVE_SINGLE_KEY EXP_EXTRA_GRP "|" IOSN_REMOVE_SINGLE_KEY -#define EXP_NAMETAKE EXP_EXTRA_GRP "|" IOSN_NAMETAKE -#define EXP_QUATERNION EXP_EXTRA_GRP "|" IOSN_QUATERNION - -#define EXP_CONSTRAINTS_GRP EXP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define EXP_CONSTRAINT EXP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT -#define EXP_CHARACTER EXP_CONSTRAINTS_GRP "|" IOSN_CHARACTER - - -#define EXP_MRCUSTOMATTRIBUTES EXP_GEOMETRY "|" IOSN_MRCUSTOMATTRIBUTES -#define EXP_MESHPRIMITIVE EXP_GEOMETRY "|" IOSN_MESHPRIMITIVE -#define EXP_MESHTRIANGLE EXP_GEOMETRY "|" IOSN_MESHTRIANGLE -#define EXP_MESHPOLY EXP_GEOMETRY "|" IOSN_MESHPOLY -#define EXP_NURB EXP_GEOMETRY "|" IOSN_NURB -#define EXP_PATCH EXP_GEOMETRY "|" IOSN_PATCH -#define EXP_BIP2FBX EXP_GEOMETRY "|" IOSN_BIP2FBX -#define EXP_GEOMNORMALPERPOLY EXP_GEOMETRY "|" IOSN_GEOMNORMALPERPOLY -#define EXP_TANGENTSPACE EXP_GEOMETRY "|" IOSN_TANGENTS_BINORMALS -#define EXP_SMOOTHMESH EXP_GEOMETRY "|" IOSN_SMOOTH_MESH -#define EXP_SELECTIONSET EXP_GEOMETRY "|" IOSN_SELECTION_SET - -#define EXP_FINESTSUBDIVLEVEL EXP_GEOMETRY "|" IOSN_FINESTSUBDIVLEVEL -#define EXP_MAXBONEASBONE EXP_GEOMETRY "|" IOSN_MAXBONEASBONE -#define EXP_MAXNURBSSTEP EXP_GEOMETRY "|" IOSN_MAXNURBSSTEP -#define EXP_CREASE EXP_GEOMETRY "|" IOSN_CREASE -#define EXP_BLINDDATA EXP_GEOMETRY "|" IOSN_BLINDDATA -#define EXP_NURBSSURFACEAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSSURFACEAS -#define EXP_SMOOTHING_GROUPS EXP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define EXP_HARDEDGES EXP_GEOMETRY "|" IOSN_EXP_HARDEDGES -#define EXP_ANIMATIONONLY EXP_GEOMETRY "|" IOSN_ANIMATIONONLY -#define EXP_INSTANCES EXP_GEOMETRY "|" IOSN_INSTANCES -#define EXP_CONTAINEROBJECTS EXP_GEOMETRY "|" IOSN_CONTAINEROBJECTS -#define EXP_TRIANGULATE EXP_GEOMETRY "|" IOSN_TRIANGULATE -#define EXP_EDGE_ORIENTATION EXP_GEOMETRY "|" IOSN_EDGE_ORIENTATION - -#define EXP_SELECTIONSETNAMEASPOINTCACHE EXP_POINTCACHE "|" IOSN_SELECTIONSETNAMEASPOINTCACHE - -#define EXP_GEOMETRYMESHPRIMITIVEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPRIMITIVEAS -#define EXP_GEOMETRYMESHTRIANGLEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHTRIANGLEAS -#define EXP_GEOMETRYMESHPOLYAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPOLYAS -#define EXP_GEOMETRYNURBSAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSAS -#define EXP_GEOMETRYPATCHAS EXP_GEOMETRY "|" IOSN_GEOMETRYPATCHAS - -#define EXP_BAKEFRAMESTART EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTART -#define EXP_BAKEFRAMEEND EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEEND -#define EXP_BAKEFRAMESTEP EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEP - -#define EXP_BAKE_RESAMPLE_ANIMATION_CURVES EXP_BAKECOMPLEXANIMATION "|" IOSN_RESAMPLE_ANIMATION_CURVES - -#define EXP_BAKEFRAMESTARTNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTARTNORESET -#define EXP_BAKEFRAMEENDNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEENDNORESET -#define EXP_BAKEFRAMESTEPNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEPNORESET - -#define EXP_FBX EXP_ADV_OPT_GRP "|" IOSN_FBX -#define EXP_DXF EXP_ADV_OPT_GRP "|" IOSN_DXF -#define EXP_COLLADA EXP_ADV_OPT_GRP "|" IOSN_COLLADA - -// note: EXP_FILEFORMAT group is not visible -#define EXP_OBJ EXP_FILEFORMAT "|" IOSN_OBJ -#define EXP_3DS EXP_FILEFORMAT "|" IOSN_3DS -#define EXP_MOTION_BASE EXP_FILEFORMAT "|" IOSN_MOTION_BASE -#define EXP_BIOVISION_BVH EXP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define EXP_ACCLAIM_ASF EXP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define EXP_ACCLAIM_AMC EXP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - - -#define EXP_ASCIIFBX EXP_FBX "|" IOSN_ASCIIFBX - -#define EXP_CACHE_SIZE EXP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define EXP_SHAPE EXP_DEFORMATION "|" IOSN_SHAPE -#define EXP_SKINS EXP_DEFORMATION "|" IOSN_SKINS - -#define EXP_APPLYCSTKEYRED EXP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define EXP_SAMPLINGRATE EXP_APPLYCSTKEYRED "|" IOSN_SAMPLINGRATE -#define EXP_CSTKEYREDTPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define EXP_CSTKEYREDRPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define EXP_CSTKEYREDSPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define EXP_CSTKEYREDOPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define EXP_AUTOTANGENTSONLY EXP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define EXP_APPLYKEYREDUCE EXP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define EXP_KEYREDUCEPREC EXP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define EXP_APPLYKEYSONFRM EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define EXP_APPLYKEYSYNC EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define EXP_APPLYUNROLL EXP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define EXP_UNROLLPREC EXP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define EXP_UNROLLPATH EXP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define EXP_UNROLLFORCEAUTO EXP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define EXP_PLUGIN_UI_WIDTH EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define EXP_PLUGIN_UI_HEIGHT EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define EXP_PRESET_SELECTED EXP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define EXP_UIL EXP_PLUGIN_GRP "|" IOSN_UIL -#define EXP_PLUGIN_PRODUCT_FAMILY EXP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define EXP_PLUGIN_UI_XPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define EXP_PLUGIN_UI_YPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define EXP_BUTTON_WEB_UPDATE EXP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define EXP_PI_VERSION EXP_INFORMATION_GRP "|" IOSN_PI_VERSION - -#define EXP_BUTTON_EDIT EXP_PLUGIN_GRP "|" IOSN_BUTTON_EDIT -#define EXP_BUTTON_OK EXP_PLUGIN_GRP "|" IOSN_BUTTON_OK -#define EXP_BUTTON_CANCEL EXP_PLUGIN_GRP "|" IOSN_BUTTON_CANCEL -#define EXP_MENU_EDIT_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_EDIT_PRESET -#define EXP_MENU_SAVE_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_SAVE_PRESET -// internal use -#define EXP_USETMPFILEPERIPHERAL EXP_PLUGIN_GRP "|" IOSN_USETMPFILEPERIPHERAL -#define EXP_CONSTRUCTIONHISTORY EXP_PLUGIN_GRP "|" IOSN_CONSTRUCTIONHISTORY - -#define EXP_COLLADA_TRIANGULATE EXP_COLLADA "|" IOSN_COLLADA_TRIANGULATE -#define EXP_COLLADA_SINGLEMATRIX EXP_COLLADA "|" IOSN_COLLADA_SINGLEMATRIX -#define EXP_COLLADA_FRAME_RATE EXP_COLLADA "|" IOSN_COLLADA_FRAME_RATE - -#define EXP_DXF_TRIANGULATE EXP_DXF "|" IOSN_DXF_TRIANGULATE -#define EXP_DXF_DEFORMATION EXP_DXF "|" IOSN_DXF_DEFORMATION - -#define EXP_OBJ_TRIANGULATE EXP_OBJ "|" IOSN_OBJ_TRIANGULATE -#define EXP_OBJ_DEFORMATION EXP_OBJ "|" IOSN_OBJ_DEFORMATION - -#define EXP_3DS_REFERENCENODE EXP_3DS "|" IOSN_3DS_REFERENCENODE -#define EXP_3DS_TEXTURE EXP_3DS "|" IOSN_3DS_TEXTURE -#define EXP_3DS_MATERIAL EXP_3DS "|" IOSN_3DS_MATERIAL -#define EXP_3DS_ANIMATION EXP_3DS "|" IOSN_3DS_ANIMATION -#define EXP_3DS_MESH EXP_3DS "|" IOSN_3DS_MESH -#define EXP_3DS_LIGHT EXP_3DS "|" IOSN_3DS_LIGHT -#define EXP_3DS_CAMERA EXP_3DS "|" IOSN_3DS_CAMERA -#define EXP_3DS_AMBIENT_LIGHT EXP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define EXP_3DS_RESCALING EXP_3DS "|" IOSN_3DS_RESCALING -#define EXP_3DS_TEXUVBYPOLY EXP_3DS "|" IOSN_3DS_TEXUVBYPOLY - -#define EXP_FBX_TEMPLATE EXP_FBX "|" IOSN_TEMPLATE -#define EXP_FBX_PIVOT EXP_FBX "|" IOSN_PIVOT -#define EXP_FBX_GLOBAL_SETTINGS EXP_FBX "|" IOSN_GLOBAL_SETTINGS -#define EXP_FBX_CHARACTER EXP_FBX "|" IOSN_CHARACTER -#define EXP_FBX_CONSTRAINT EXP_FBX "|" IOSN_CONSTRAINT -#define EXP_FBX_GOBO EXP_FBX "|" IOSN_GOBO -#define EXP_FBX_SHAPE EXP_FBX "|" IOSN_SHAPE -#define EXP_FBX_MATERIAL EXP_FBX "|" IOSN_MATERIAL -#define EXP_FBX_TEXTURE EXP_FBX "|" IOSN_TEXTURE -#define EXP_FBX_MODEL EXP_FBX "|" IOSN_MODEL -#define EXP_FBX_AUDIO EXP_FBX "|" IOSN_AUDIO -#define EXP_FBX_ANIMATION EXP_FBX "|" IOSN_ANIMATION -#define EXP_FBX_EMBEDDED EXP_FBX "|" IOSN_EMBEDDED -#define EXP_FBX_PASSWORD EXP_FBX "|" IOSN_PASSWORD -#define EXP_FBX_PASSWORD_ENABLE EXP_FBX "|" IOSN_PASSWORD_ENABLE -#define EXP_FBX_COLLAPSE_EXTERNALS EXP_FBX "|" IOSN_COLLAPSE_EXTERNALS -#define EXP_FBX_COMPRESS_ARRAYS EXP_FBX "|" IOSN_COMPRESS_ARRAYS -#define EXP_FBX_COMPRESS_LEVEL EXP_FBX "|" IOSN_COMPRESS_LEVEL -#define EXP_FBX_COMPRESS_MINSIZE EXP_FBX "|" IOSN_COMPRESS_MINSIZE -#define EXP_FBX_EMBEDDED_PROPERTIES_SKIP EXP_FBX "|" IOSN_EMBEDDED_PROPERTIES_SKIP -#define EXP_FBX_EXPORT_FILE_VERSION EXP_FBX "|" IOSN_EXPORT_FILE_VERSION - - -// end of export defined path -//--------------------------- - -//--------------------------- -// Motion files related options -#define IOSN_MOTION_START "MotionStart" -#define IOSN_MOTION_FRAME_COUNT "MotionFrameCount" -#define IOSN_MOTION_FRAME_RATE "MotionFrameRate" -#define IOSN_MOTION_ACTOR_PREFIX "MotionActorPrefix" -#define IOSN_MOTION_RENAME_DUPLICATE_NAMES "MotionRenameDuplicateNames" -#define IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED "MotionExactZeroAsOccluded" -#define IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION "MotionSetOccludedToLastValidPos" -#define IOSN_MOTION_AS_OPTICAL_SEGMENTS "MotionAsOpticalSegments" -#define IOSN_MOTION_ASF_SCENE_OWNED "MotionASFSceneOwned" -#define IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION "MotionFromGlobalPosition" -#define IOSN_MOTION_GAPS_AS_VALID_DATA "MotionGapsAsValidData" -#define IOSN_MOTION_C3D_REAL_FORMAT "MotionC3DRealFormat" -#define IOSN_MOTION_CREATE_REFERENCE_NODE "MotionCreateReferenceNode" -#define IOSN_MOTION_TRANSLATION "MotionTranslation" -#define IOSN_MOTION_BASE_T_IN_OFFSET "MotionBaseTInOffset" -#define IOSN_MOTION_BASE_R_IN_PREROTATION "MotionBaseRInPrerotation" -#define IOSN_MOTION_DUMMY_NODES "MotionDummyNodes" -#define IOSN_MOTION_LIMITS "MotionLimits" -#define IOSN_MOTION_FRAME_RATE_USED "MotionFrameRateUsed" -#define IOSN_MOTION_FRAME_RANGE "MotionFrameRange" -#define IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR "MotionWriteDefaultAsBaseTR" - -// Import - -//Motion Base options -#define IMP_MOB_START IMP_MOTION_BASE "|" IOSN_MOTION_START -#define IMP_MOB_FRAME_COUNT IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define IMP_MOB_FRAME_RATE IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define IMP_MOB_ACTOR_PREFIX IMP_MOTION_BASE "|" IOSN_MOTION_ACTOR_PREFIX -#define IMP_MOB_RENAME_DUPLICATE_NAMES IMP_MOTION_BASE "|" IOSN_MOTION_RENAME_DUPLICATE_NAMES -#define IMP_MOB_EXACT_ZERO_AS_OCCLUDED IMP_MOTION_BASE "|" IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED -#define IMP_MOB_SET_OCCLUDED_TO_LAST_VALID_POSITION IMP_MOTION_BASE "|" IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION -#define IMP_MOB_AS_OPTICAL_SEGMENTS IMP_MOTION_BASE "|" IOSN_MOTION_AS_OPTICAL_SEGMENTS -#define IMP_MOB_ASF_SCENE_OWNED IMP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -// Acclaim AMC options -#define IMP_ACCLAIM_AMC_CREATE_REFERENCE_NODE IMP_ACCLAIM_AMC "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_AMC_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_AMC_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_AMC_DUMMY_NODES IMP_ACCLAIM_AMC "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_AMC_MOTION_LIMITS IMP_ACCLAIM_AMC "|" IOSN_MOTION_LIMITS - -// Acclaim ASF options -#define IMP_ACCLAIM_ASF_CREATE_REFERENCE_NODE IMP_ACCLAIM_ASF "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_ASF_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_ASF_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_ASF_DUMMY_NODES IMP_ACCLAIM_ASF "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_ASF_MOTION_LIMITS IMP_ACCLAIM_ASF "|" IOSN_MOTION_LIMITS - -// Biovision BVH options -#define IMP_BIOVISION_BVH_CREATE_REFERENCE_NODE IMP_BIOVISION_BVH "|" IOSN_MOTION_CREATE_REFERENCE_NODE - -// Motion Analysis HTR options -#define IMP_MOTIONANALYSIS_HTR_CREATE_REFERENCE_NODE IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_T_IN_OFFSET IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_R_IN_PREROTATION IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_R_IN_PREROTATION - -// Export - -//Motion Base options -#define EXP_MOB_START EXP_MOTION_BASE "|" IOSN_MOTION_START -#define EXP_MOB_FRAME_COUNT EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define EXP_MOB_FROM_GLOBAL_POSITION EXP_MOTION_BASE "|" IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION -#define EXP_MOB_FRAME_RATE EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define EXP_MOB_GAPS_AS_VALID_DATA EXP_MOTION_BASE "|" IOSN_MOTION_GAPS_AS_VALID_DATA -#define EXP_MOB_C3D_REAL_FORMAT EXP_MOTION_BASE "|" IOSN_MOTION_C3D_REAL_FORMAT -#define EXP_MOB_ASF_SCENE_OWNED EXP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -//Acclaim AMC options -#define EXP_ACCLAIM_AMC_MOTION_TRANSLATION EXP_ACCLAIM_AMC "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_AMC_FRAME_RATE_USED EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_AMC_FRAME_RANGE EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_AMC_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_AMC "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Acclaim ASF options -#define EXP_ACCLAIM_ASF_MOTION_TRANSLATION EXP_ACCLAIM_ASF "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_ASF_FRAME_RATE_USED EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_ASF_FRAME_RANGE EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_ASF_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_ASF "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Biovision BVH options -#define EXP_BIOVISION_BVH_MOTION_TRANSLATION EXP_BIOVISION_BVH "|" IOSN_MOTION_TRANSLATION - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxprogress.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxprogress.h deleted file mode 100644 index 38d9c67..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxprogress.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprogress.h -#ifndef _FBXSDK_FILEIO_PROGRESS_H_ -#define _FBXSDK_FILEIO_PROGRESS_H_ - -#include - -#include - -#include - -typedef bool (*FbxProgressCallback)(void* pArgs, float pPercentage, const char* pStatus); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - class FbxSpinLock; -#endif - -/** Class for progress reporting -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProgress -{ -public: - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the optional arguments passed to the callback function. */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Set the total amount of workload needed to complete the progress. - * \param pTotal Total amount of workload. - * \remark The default total is 100.0. */ - void SetTotal(float pTotal); - - /** Set the threshold at which the progress callback should be called. - * \param pThreshold The threshold value, between 0.0 and 100.0, that triggers the callback. - * \remark The default threshold is 1.0, meaning that every 1% the callback is triggered. */ - void SetThreshold(float pThreshold); - - /** Update current progress with recent workload. - * \param pDelta Delta amount of workload progressed so far. - * \param pStatus Optional current progress status string. - * \remark If a callback is set, it will be called upon caling this function. */ - void Update(float pDelta, const char* pStatus=NULL); - - //! Reset the progress status percentage and status string. - void Reset(); - - /** Retrieve the progress status. - * \param pStatus Optional current progress status string. - * \return The current progress percentage. */ - float GetProgress(FbxString* pStatus=NULL); - - /** Set the progress status to completed. - * \param pStatus Optional current progress status string. */ - void Complete(const char* pStatus=NULL); - - //! Cancel this progress. - void Cancel(); - - //! Query whether user canceled this progress. - inline bool IsCanceled() const { return mCanceled; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProgress(); - ~FbxProgress(); - -private: - void Acquire(); - void Release(); - float GetPercent() const; - bool ExecuteCallback() const; - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxSpinLock* mLock; -#endif - float mCurrent; - float mPrevious; - float mTotal; - float mThreshold; - FbxString mStatus; - FbxProgressCallback mCallback; - void* mCallbackArgs; - bool mCanceled; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_PROGRESS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxreader.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxreader.h deleted file mode 100644 index 81eec0e..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxreader.h +++ /dev/null @@ -1,270 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreader.h -#ifndef _FBXSDK_FILEIO_READER_H_ -#define _FBXSDK_FILEIO_READER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxDocumentInfo; -class FbxScene; -class FbxImporter; -class FbxIOSettings; -class FbxAxisSystem; -class FbxStatistics; -class FbxSystemUnit; -class FbxNode; -class FbxProgress; -class FbxTakeInfo; - - /** Base class of other readers used internally. - * This class provides the interfaces for reading files. - * - * The role of the reader is to effectively "read" specific file data - * vs the role of the importer is to select a specific reader - * and launch the reading of a file through that reader. - * \see FbxImporter - * - * ex: - * - FbxReaderFbx5 can read FBX 5 format files - * - FbxReaderFbx6 can read FBX 6 format files - * - FbxReaderFbx7 can read FBX 7 format files - * - FbxReaderCollada can read Collada files - * - FbxReaderDxf can read Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom reader must be created for plug-in extension, - * then FbxReader must be the base class for - * the new custom reader in that particular situation. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxReader -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current reader. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReader(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. - */ - virtual ~FbxReader(); - - /** Information type to request. - * \remarks Used internally to get reader file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a reader ex: "FBX". - eInfoDescriptions, //!< To get the file description for a reader ex: "Autodesk FBX (*.fbx)". - eReserved1 = 0xFBFB, - }; - - /** Flags for reading parts of file. - * \remarks Used internally when an importer is initialized to get some information very fast. - */ - enum EFileOpenSpecialFlags - { - eParseForGlobalSettings = 1, //!< Used for reading the Global settings section when an importer is initialized. - eParseForStatistics = 2 //!< Used for reading a group of statistics when an importer is initialized. - }; - - /** \internal Helper typedef for passing FbxReader creator function as argument (used internally) */ - typedef FbxReader* (*CreateFuncType)(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); - - /** \internal Helper typedef for passing FbxIOSettings creator function as argument (used internally) */ - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - /** \internal Helper typedef for passing EInfoRequest function as argument (used internally) */ - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pReaderTypeId); - - /** Returns the file version. - * \param pMajor Major version. - * \param pMinor Minor version. - * \param pRevision Revision version. - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision){ pMajor = pMinor = pRevision = 0; } - - /** Opens the file with default flag - * \param pFileName Name of the File to open - * \return If the file opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(char* pFileName) = 0; - - /** Opens the stream with default flag - * \param pStream stream to open - * \param pStreamData user-defined stream data - * \return If the stream opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(FbxStream* pStream, void* pStreamData); - - /** Closes the file stream - * \return \c false - */ - virtual bool FileClose() = 0; - - /** Checks if the file stream is open. - * \return \c false. - */ - virtual bool IsFileOpen() = 0; - - /** Returns file stream options - * \param pParseFileAsNeeded Sets whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true) = 0; - - /** Reads file with stream options - * \param pDocument FbxDocument to store the file data - * \return \c false. - */ - virtual bool Read(FbxDocument* pDocument) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginReadParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Opens the file with specific EFileOpenSpecialFlags - * \param pFileName Name of the File to open. - * \param pFlags The EFileOpenSpecialFlags to open with - * \return If the file opens successfully return true, otherwise return false. - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags /*pFlags*/){ return FileOpen(pFileName); } - - /** Returns the system axis information and file system units from the file - * \param pAxisSystem Axis system in file - * \param pSystemUnits System unit in file - * \return \c false. - */ - virtual bool GetAxisInfo(FbxAxisSystem* /*pAxisSystem*/, FbxSystemUnit* /*pSystemUnits*/){ return false; } - - /** Returns statistics from the file - * \param pStats Statistics in the file. - * \return \c false. - */ - virtual bool GetStatistics(FbxStatistics* /*pStats*/){ return false; } - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode& pTimeMode) { pTimeMode = FbxTime::eDefaultMode; return false; } - - - /** Returns the scene info from the file. - * \return NULL. - */ - virtual FbxDocumentInfo* GetSceneInfo(){return NULL;} - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(){return NULL;} - - /** If default camera resolution is OK, returns information about the resolution of the render. - * \param pCamName Default camera name. - * \param pResolutionMode Default resolution mode. - * \param pW Default resolution width. - * \param pH Default resolution height. - * \return \c true If default camera resolution is OK, \c false Otherwise. - */ - virtual bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Judges if the format of the file is was created by an Autodesk plug-in. - * An internal (genuine) plug-in is one created by the Autodesk FBX product team. - * \return \c true If the file format is internal plug-in , \c false Otherwise. - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return A pointer to IOSettings used for this reader or NULL if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this reader instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the reader. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - virtual void SetEmbeddingExtractionFolder(const char* /*pExtractFolder*/){} - - /** Returns true if this reader supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual bool FileOpen(FbxFile * pFile); - - FbxStatus& GetStatus() { return mStatus; } - -protected: - void SetDefaultRenderResolution(const char* pCamName, const char* pResolutionMode, double pW, double pH); -#ifndef FBXSDK_ENV_WINSTORE - void PluginsReadBegin(FbxScene& pScene); - void PluginsRead(const char* pName, const char* pVersion); - void PluginsReadEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - FbxReader& operator=(FbxReader const&) { return *this; } - virtual bool CheckDuplicateNodeNames(FbxNode* pRootNode, FbxString& pDuplicateNodeNameList); - - FbxStatus& mStatus; - FbxManager& mManager; - FbxIODefaultRenderResolution* mData; - -private: - int mInternalID; - FbxIOSettings* mIOSettings; - - friend struct FbxReaderFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_READER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatistics.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatistics.h deleted file mode 100644 index b6d4034..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatistics.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatistics.h -#ifndef _FBXSDK_FILEIO_STATISTICS_H_ -#define _FBXSDK_FILEIO_STATISTICS_H_ - -#include - -#include -#include - -#include - -/** This class is a basic class to get the quantity of items. - * User processes the statistics raw data by deriving FbxStatistics class and overrides \c AddItem method. - * When overriding \c AddItem method, User must store item's name and item's count by pair which means - * The index of one item's name in array \c mItemName is the same as the index of this item's count in array \c mItemCount. - * - * \code Here is a code snippet to show how it used. - * //Define my own statistics class. - * class MyStatistics : public FbxStatistics - * { - * public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxSdkNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; - * }; - * - * FbxManager* lSdkManager = FbxManager::Create(); - * FbxScene* lScene = FbxScene::Create( lSdkManager, "Scene"); - * FbxNode* lNode1 = FbxNode::Create(lScene, "Node1"); - * FbxNode* lNode2 = FbxNode::Create(lScene, "Node2"); - * FbxNode* lNode3 = FbxNode::Create(lScene, "Node3"); - * FbxNode* lNode4 = FbxNode::Create(lScene, "Node4"); - * lScene.AddNode(lNode1); - * lScene.AddNode(lNode2); - * lScene.AddNode(lNode3); - * MyStatistics lStatistics; - * lStatistics.AddItem("Node_Count", lScene.GetNodeCount() ); - * FbxString lItemName; - * int lItemCount; - * if( lStatistics.GetItemPair( 0, lItemName, lItemCount)) - * { - * //do something - * } - * \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatistics -{ -public: - /// \name Constructor and Destructor. - //@{ - FbxStatistics(); - virtual ~FbxStatistics(); - //@} - - //! Reset the statistics. - void Reset(); - - //! Get the number of items. - int GetNbItems() const; - - /** Get the statistics information by pair. - * \param pNum The index of statistics data to be got. - * \param pItemName Output the item's name. - * \param pItemCount Output the item's count. - * \return \c True if successful, \c False otherwise. - */ - bool GetItemPair(int pNum, FbxString& pItemName, int& pItemCount) const; - - /** Assignment operator. - * \param pStatistics FbxStatistics assigned to this one. - */ - FbxStatistics& operator=(const FbxStatistics& pStatistics); - -protected: - /** virtual function to define the process of the incoming statistics data. - * \param pItemName The item's name - * \param pItemCount The item's count. - * \return False. - */ - virtual bool AddItem(FbxString& /*pItemName*/, int /*pItemCount*/) { return false; }; - - //! An array to store item's name. - FbxArray mItemName; - - //! An array to store item's count. - FbxArray mItemCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h deleted file mode 100644 index f85950a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatisticsfbx.h -#ifndef _FBXSDK_FILEIO_STATISTICS_FBX_H_ -#define _FBXSDK_FILEIO_STATISTICS_FBX_H_ - -#include - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FbxStatisticsFbx : public FbxStatistics -{ -public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_FBX_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxwriter.h b/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxwriter.h deleted file mode 100644 index 41930ab..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/fileio/fbxwriter.h +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriter.h -#ifndef _FBXSDK_FILEIO_WRITER_H_ -#define _FBXSDK_FILEIO_WRITER_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxScene; -class FbxExporter; -class FbxIO; -class FbxIOSettings; -class FbxProgress; - -#define IOSP GetIOSettings() - - /** Base class of other writers used internally. - * This class provides the interfaces for writing files. - * - * The role of the writer is to effectively "write" specific file data - * vs the role of the exporter is to select a specific writer - * and launch the writing of a file through that writer. - * \see FbxExporter - * - * ex: - * - FbxWriterFbx5 can write FBX 5 format files - * - FbxWriterFbx6 can write FBX 6 format files - * - FbxWriterFbx7 can write FBX 7 format files - * - FbxWriterCollada can write Collada files - * - FbxWriterDxf can write Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom writer must be created for plug-in extension, - * then FbxWriter must be the base class for - * the new custom writer in that particular situation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxWriter -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current writer. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriter(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. */ - virtual ~FbxWriter(); - - /** Information type to request. - * \remarks Used internally to get writer file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a writer ex: "FBX". - eInfoDescriptions, //!< To get the file description for a writer ex:"Autodesk FBX (*.fbx)". - eInfoVersions, //!< To get the file version for a writer ex: 7100. - eInfoCompatibleDesc, //!< To get the file compatible description for a writer. - eInfoUILabel, //!< To get the file UI label to show for a writer ex: file labels shown in "Open file dialog". - eReserved1 = 0xFBFB, - }; - - //! Helper typedef for passing FbxWriter creator function as argument (used internally). - typedef FbxWriter* (*CreateFuncType)(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); - - //! Helper typedef for passing FbxIOSettings creator function as argument (used internally). - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - //! Helper typedef for passing EInfoRequest function as argument (used internally). - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pWriterTypeId); - - /** Creates a new file. - * \param pFileName The name of the newly created file. - */ - virtual bool FileCreate(char* pFileName) = 0; - - /** Creates a new file via a stream. - * \param pStream The stream to write to. - * \param pStreamData the user-defined stream data to be written. - */ - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - - /** Closes the file. - */ - virtual bool FileClose() = 0; - - /** Test if the file is open. - */ - virtual bool IsFileOpen() = 0; - - /** Setup write options. - */ - virtual void GetWriteOptions() = 0; - - /** Writes content to the specified file with given stream options - * \param pDocument FbxDocument to write file data to. - */ - virtual bool Write(FbxDocument* pDocument) = 0; - - /** Pre-processes the scene. - * \param pScene The scene needs to be pre-processed. - */ - virtual bool PreprocessScene(FbxScene &pScene) = 0; - - /** Post-processes the scene. - * \param pScene The scene needs to be post-processed. - */ - virtual bool PostprocessScene(FbxScene &pScene) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Writes extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginWriteParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Finds the selected root node in the specified scene. - * \param pScene The scene in which the selected root node is found. - * \return The located root node.\c NULL if the selected root node cannot be found. - */ - virtual FbxNode* FindRootNode(FbxScene& pScene); - - /** Checks if there are spaces in the names of specified node (and its children nodes), - * and writes the returned node's name in the specified string list. - * \param pNode Specifies the node to check. - * \param pNodeNameList Specifies the string list where the node name that has spaces in it is recorded. - * \return \c true If there are no spaces in the name of specified node (and its children nodes), - * \c false If spaces are found. - */ - virtual bool CheckSpaceInNodeNameRecursive(FbxNode* pNode, FbxString& pNodeNameList); - - /** Sets the file export version as specified. - * \param pVersion The specified file export version. - */ - bool SetFileExportVersion(FbxString pVersion); - - /** Sets the renaming mode as specified. - * \param pRenamingMode The specified renaming mode. - */ - void SetRenamingMode(FbxSceneRenamer::ERenamingMode pRenamingMode){mRenamingMode = pRenamingMode;} - - /** Sets the resampling rate as specified. - * \param pResamplingRate The specified resampling rate. - */ - inline void SetResamplingRate(double pResamplingRate){mResamplingRate = pResamplingRate;} - - /** Test if file format is an internal plug-in . - * A non genuine plug-in is a plug-in made by someone external to Autodesk FBX SDK group. - * \return \c true If the file format is an internal plug-in ,\c false Otherwise . - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this writer instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the writer. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - /** Returns true if this writer supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -protected: -#ifndef FBXSDK_ENV_WINSTORE - //! Function called by FBX before writing out the scene (FbxScene). - void PluginsWriteBegin(FbxScene& pScene); - /** - * Function called by FBX before writing out any FBX object. - * \param pFbx File object. - * \param pWriteObjectId Flag to write out object id. - */ - void PluginsWrite(FbxIO& pFbx, bool pWriteObjectId); - //! Function called by FBX after writing out the scene (FbxScene). - void PluginsWriteEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -public: -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStatus& GetStatus() { return mStatus; } - -protected: - - FbxWriter& operator=(FbxWriter const&) { return *this; } - - FbxStatus& mStatus; - FbxManager& mManager; - FbxString mFileVersion; - //! Resample rate for animation. - double mResamplingRate; - //! The mode describing from which format to which format when write FBX file. - FbxSceneRenamer::ERenamingMode mRenamingMode; - -private: - int mInternalID; - FbxIOSettings * mIOSettings; - - friend struct FbxWriterFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_WRITER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h deleted file mode 100644 index aede687..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h +++ /dev/null @@ -1,1359 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurve.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_H_ - -#include - -#include -#include - -#include - -class KFCurve; - -/** Definitions used for the FBX animation curves and keys. */ -class FBXSDK_DLL FbxAnimCurveDef -{ -public: - static const float sDEFAULT_WEIGHT; - static const float sMIN_WEIGHT; - static const float sMAX_WEIGHT; - static const float sDEFAULT_VELOCITY; - - //! Key tangent mode for cubic interpolation. - enum ETangentMode - { - eTangentAuto = 0x00000100, //!< Auto key (spline cardinal). - eTangentTCB = 0x00000200, //!< Spline TCB (Tension, Continuity, Bias) - eTangentUser = 0x00000400, //!< Next slope at the left equal to slope at the right. - eTangentGenericBreak = 0x00000800, //!< Independent left and right slopes. - eTangentBreak = eTangentGenericBreak|eTangentUser, //!< Independent left and right slopes, with next slope at the left equal to slope at the right. - eTangentAutoBreak = eTangentGenericBreak|eTangentAuto, //!< Independent left and right slopes, with auto key. - eTangentGenericClamp = 0x00001000, //!< Clamp: key should be flat if next or previous key has the same value (overrides tangent mode). - eTangentGenericTimeIndependent = 0x00002000, //!< Time independent tangent (overrides tangent mode). - eTangentGenericClampProgressive = 0x00004000|eTangentGenericTimeIndependent //!< Clamp progressive: key should be flat if tangent control point is outside [next-previous key] range (overrides tangent mode). - }; - - //! Key interpolation type. - enum EInterpolationType - { - eInterpolationConstant = 0x00000002, //!< Constant value until next key. - eInterpolationLinear = 0x00000004, //!< Linear progression to next key. - eInterpolationCubic = 0x00000008 //!< Cubic progression to next key. - }; - - //! Weighted mode. - enum EWeightedMode - { - eWeightedNone = 0x00000000, //!< Tangent has default weights of 0.333; we define this state as not weighted. - eWeightedRight = 0x01000000, //!< Right tangent is weighted. - eWeightedNextLeft = 0x02000000, //!< Left tangent is weighted. - eWeightedAll = eWeightedRight|eWeightedNextLeft //!< Both left and right tangents are weighted. - }; - - //! Key constant mode. - enum EConstantMode - { - eConstantStandard = 0x00000000, //!< Curve value is constant between this key and the next - eConstantNext = 0x00000100 //!< Curve value is constant, with next key's value - }; - - //! Velocity mode. Velocity settings speed up or slow down animation on either side of a key without changing the trajectory of the animation. Unlike Auto and Weight settings, Velocity changes the animation in time, but not in space. - enum EVelocityMode - { - eVelocityNone = 0x00000000, //!< No velocity (default). - eVelocityRight = 0x10000000, //!< Right tangent has velocity. - eVelocityNextLeft = 0x20000000, //!< Left tangent has velocity. - eVelocityAll = eVelocityRight|eVelocityNextLeft //!< Both left and right tangents have velocity. - }; - - //! Tangent visibility. - enum ETangentVisibility - { - eTangentShowNone = 0x00000000, //!< No tangent is visible. - eTangentShowLeft = 0x00100000, //!< Left tangent is visible. - eTangentShowRight = 0x00200000, //!< Right tangent is visible. - eTangentShowBoth = eTangentShowLeft|eTangentShowRight //!< Both left and right tangents are visible. - }; - - //! FbxAnimCurveKey data indices for cubic interpolation tangent information. - enum EDataIndex - { - eRightSlope = 0, //!< Index of the right derivative, User and Break tangent mode (data are float). - eNextLeftSlope = 1, //!< Index of the left derivative for the next key, User and Break tangent mode. - eWeights = 2, //!< Start index of weight values, User and Break tangent break mode (data are FbxInt16 tokens from weight and converted to float). - eRightWeight = 2, //!< Index of weight on right tangent, User and Break tangent break mode. - eNextLeftWeight = 3, //!< Index of weight on next key's left tangent, User and Break tangent break mode. - eVelocity = 4, //!< Start index of velocity values, Velocity mode - eRightVelocity = 4, //!< Index of velocity on right tangent, Velocity mode - eNextLeftVelocity = 5, //!< Index of velocity on next key's left tangent, Velocity mode - eTCBTension = 0, //!< Index of Tension, TCB tangent mode (data are floats). - eTCBContinuity = 1, //!< Index of Continuity, TCB tangent mode. - eTCBBias = 2 //!< Index of Bias, TCB tangent mode. - }; -}; - -struct FBXSDK_DLL FbxAnimCurveTangentInfo -{ - inline FbxAnimCurveTangentInfo() - { - mDerivative = 0; - mWeight = FbxAnimCurveDef::sDEFAULT_WEIGHT; - mWeighted = false; - mVelocity = FbxAnimCurveDef::sDEFAULT_VELOCITY; - mHasVelocity = false; - mAuto = 0; - } - - float mDerivative; - float mWeight; - float mVelocity; - float mAuto; - bool mWeighted; - bool mHasVelocity; -}; - -/** This is the interface for implementation of animation key objects. - * \nosubgrouping - * - * \remarks Users should not use this class directly, but always use FbxAnimCurveKey. - * A FbxAnimCurveKey has a FbxAnimCurveKey_Impl. - * But FbxAnimCurveKey_Impl is just an implementation interface, - */ -class FBXSDK_DLL FbxAnimCurveKey_Impl -{ -public: - /** Destructor. - */ - virtual ~FbxAnimCurveKey_Impl() {}; - - /** Assignment operator. - */ - virtual FbxAnimCurveKey_Impl& operator=(const FbxAnimCurveKey_Impl& pFKey) = 0; - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - virtual void Set(FbxTime pTime, float pValue) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get the key value. - * \return The value of the key. - */ - virtual float GetValue() const = 0; - - /** Set the key value. - * \param pValue The value to set. - */ - virtual void SetValue(float pValue) = 0; - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType GetInterpolation() const = 0; - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - virtual void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - virtual FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) const = 0; - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - virtual void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) = 0; - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const = 0; - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - virtual void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) = 0; - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - virtual void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) = 0; - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const = 0; - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - virtual void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) = 0; - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - virtual FbxAnimCurveDef::EConstantMode GetConstantMode() const = 0; - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - virtual void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - virtual float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const = 0; - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - virtual void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) = 0; - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) = 0; - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const = 0; - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual void SetBreak(bool pVal) = 0; - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual bool GetBreak() const = 0; -}; - -/** This is the interface for the FBX animation curve keys. - * A key is defined by a time and a value. It also has tangents that control how the animation curve enters and exits the key. - * \nosubgrouping - * - *\remarks This class is now the main animation key object of the SDK, - * Users should always use this class to handle animation curve key. - * This class has a FbxAnimCurveKey_Impl as its implementation interface, - * Default constructor does not initialize data members. - * If an instance has to be initialized, use function FbxAnimCurveKey::Set(). - */ -class FBXSDK_DLL FbxAnimCurveKey : public FbxAnimCurveKeyBase -{ -public: - /** Constructor with no argument - */ - FbxAnimCurveKey() : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - } - - /** Constructor with time. - * \param pTime The time of key. - */ - FbxAnimCurveKey(FbxTime pTime) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - SetTime(pTime); - } - - /** Constructor with time and value. - * \param pTime The time of key. - * \param pVal The value of key. - */ - FbxAnimCurveKey(FbxTime pTime, float pVal) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - Set(pTime, pVal); - } - - /** Copy constructor - */ - FbxAnimCurveKey(FbxAnimCurveKey const& pFKey) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mCopyAllocatorFct != NULL); - SetTime(pFKey.GetTime()); - mImpl = mCopyAllocatorFct(pFKey.GetImpl()); - } - - /** Destructor - */ - ~FbxAnimCurveKey() - { - FBX_ASSERT(mDeallocatorFct != NULL); - (*mDeallocatorFct)(mImpl); - } - - /** Assignment operator - */ - FbxAnimCurveKey& operator=(const FbxAnimCurveKey& pFKey) - { - FBX_ASSERT(mImpl); - if (mImpl) - { - *mImpl = *(pFKey.GetImpl()); - } - SetTime(pFKey.GetTime()); - return *this; - } - - /** Get time value. - * \return Time value. - */ - FbxTime GetTime() const - { - return FbxAnimCurveKeyBase::GetTime(); - } - - /** Set time value. - * \param pTime Time value to set. - */ - void SetTime(const FbxTime& pTime) - { - FbxAnimCurveKeyBase::SetTime(pTime); - } - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - void Set(FbxTime pTime, float pValue) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->Set(pTime, pValue); - } - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->SetTCB(pTime, pValue, pData0, pData1, pData2); - } - - /** Get the key value. - * \return The value of the key. - */ - float GetValue() const - { - return mImpl->GetValue(); - } - - /** Set the key value. - * \param pValue The value to set. - */ - void SetValue(float pValue) - { - mImpl->SetValue(pValue); - } - - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - FbxAnimCurveDef::EInterpolationType GetInterpolation() - { - return mImpl->GetInterpolation(); - } - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) - { - mImpl->SetInterpolation(pInterpolation); - } - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) - { - return mImpl->GetTangentMode(pIncludeOverrides); - } - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) - { - mImpl->SetTangentMode(pTangentMode); - } - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const - { - return mImpl->GetTangentWeightMode(); - } - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) - { - mImpl->SetTangentWeightMode(pTangentWeightMode, pMask); - } - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) - { - mImpl->SetTangentWeightAndAdjustTangent(pIndex, pWeight); - } - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const - { - return mImpl->GetTangentVelocityMode(); - } - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) - { - mImpl->SetTangentVelocityMode(pTangentVelocityMode, pMask); - } - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - FbxAnimCurveDef::EConstantMode GetConstantMode() const - { - return mImpl->GetConstantMode(); - } - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) - { - mImpl->SetConstantMode(pMode); - } - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const - { - return mImpl->GetDataFloat(pIndex); - } - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) - { - mImpl->SetDataFloat(pIndex, pValue); - } - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) - { - mImpl->SetTangentVisibility(pVisibility); - } - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const - { - return mImpl->GetTangentVisibility(); - } - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - void SetBreak(bool pVal) - { - mImpl->SetBreak(pVal); - } - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - bool GetBreak() const - { - return mImpl->GetBreak(); - } - - /** Get key implementation. - * \return Pointer to implemented instance. - */ - FbxAnimCurveKey_Impl* GetImpl() const - { - return mImpl; - } - - /** Set allocator function - * \param pAllocatorFct Allocator function - */ - static void SetAllocatorFct(FbxAnimCurveKey_Impl* (*pAllocatorFct)()); - - /** Set copy allocator function - * \param pCopyAllocatorFct Copy allocator function - */ - static void SetCopyAllocatorFct(FbxAnimCurveKey_Impl* (*pCopyAllocatorFct)(FbxAnimCurveKey_Impl*)); - - /** Set deallocator function - * \param pDeallocatorFct Deallocator function - */ - static void SetDeallocatorFct(void (*pDeallocatorFct)(FbxAnimCurveKey_Impl*)); - -private: - static FbxAnimCurveKey_Impl* (*mAllocatorFct)(); - static FbxAnimCurveKey_Impl* (*mCopyAllocatorFct)(FbxAnimCurveKey_Impl*); - static void (*mDeallocatorFct)(FbxAnimCurveKey_Impl*); - FbxAnimCurveKey_Impl* mImpl; -}; - -class FbxScene; - -/** An animation curve, defined by a collection of keys (FbxAnimCurveKey), and indicating how a value changes over time. -* Since an animation curve is a function, on a given animation curve, only one key per time is -* allowed. The keys are sorted -* in time order. They can be accessed by their index on the curve, from 0 to FbxAnimCurve::KeyGetCount-1. -* The time unit in FBX (FbxTime) is 1/46186158000 of one second. -* -* Each key defines tangents and interpolation that modify the animation curve. -* Tangents control the way the animation curve enters and exits the keys. -* Interpolation indicates the animation curve's behavior between keys. -* -* Interpolation modes are -* \li Constant - Curve value stays the same until next key -* \li Linear - Animation curve is a straight line -* \li Cubic - Animation curve is a Bezier spline -* -* Tangent modes are -* \li Auto (Spline cardinal) -* \li Spline TCB (Tension, Continuity, Bias) -* \li User (Next slope at the left equal to slope at the right) -* -* Tangent modes can be overridden by more tangent options: -* \li Break (Independent left and right slopes) -* \li Clamp (Key should be flat if next or previous key has the same value) -* \li Time independent -* -* Tangent can be modified some more by adding weights and velocity. -* By default, the weights are 0.333 on either side of the key, and there is -* no velocity. Velocity settings speed up or slow down animation on either side of -* a key without changing the trajectory of the animation. Unlike Auto and Weight settings, -* Velocity changes the animation in time, but not in space. -* -* \nosubgrouping -* \remarks FbxAnimCurve is now the main animation animation curve object of the SDK. -* Users should always use this class to handle animation curve. -* -* \note When adding keys to an animation curve, use FbxAnimCurve::KeyModifyBegin and FbxAnimCurve::KeyModifyEnd. -* please refer to the following sample code: -* \code -* FbxTime lTime; -* int lKeyIndex = 0; - -* // Create curve -* FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - -* // Add keys to the curve -* lAnimCurve->KeyModifyBegin(); - -* // First key: time 0, value 0 -* lTime.SetSecondDouble(0.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - -* // Second key: time 20s, value -3600 -* // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. -* lTime.SetSecondDouble(20.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - -* // Done adding keys. -* lAnimCurve->KeyModifyEnd(); -* \endcode -* -*/ -class FBXSDK_DLL FbxAnimCurve : public FbxAnimCurveBase -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurve, FbxAnimCurveBase); - -public: - /** - * \name Animation curve creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created animation curve belongs. - * \param pName Name of the animation curve. - * \return Newly created animation curve - */ - static FbxAnimCurve* Create(FbxScene* pContainer, const char* pName); - //@} - - /** - * \name Key management. - * - */ - //@{ - /** Resize animation curve buffer to hold a certain number of keys. - * \param pKeyCount Number of keys the animation curve will eventually hold. - */ - virtual void ResizeKeyBuffer(int pKeyCount) = 0; - - /** Call this function prior to adding, removing or editing keys of an animation curve. - * Call function FbxAnimCurve::KeyModifyEnd() after modification. - */ - virtual void KeyModifyBegin () = 0; - - /** Call this function after adding, removing or editing keys of an animation curve. - * Function FbxAnimCurve::KeyModifyBegin() must have been called prior to modify the keys. - */ - virtual void KeyModifyEnd () = 0; - - //! Remove all the keys of the animation curve and free buffer memory. - void KeyClear () override = 0; - - /** Get the number of keys. - * \return Key count. - */ - int KeyGetCount () const override = 0; - - /** Add a given key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect the interpolation type and tangents of the neighboring keys. - * If there is already a key at the given time, the key is modified and no - * new key is added. - * - * \param pTime Time of the new key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) override = 0; - - /** Add a key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect of the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, no key is added. - * - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - virtual int KeyAdd (FbxTime pTime, int* pLast = NULL) = 0; - - /** Set (or replace) key at given index with given key. - * \param pIndex Index of the key to be set or replaced. - * \param pKey New key at this index. - * \return \c true if key time is superior to previous key time - * and inferior to next key time, \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) override = 0; - - /** Remove key at given index. Other key indices are updated automatically. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - bool KeyRemove(int pIndex) override = 0 ; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return true on success. - */ - bool KeyRemove(int pStartIndex, int pEndIndex) override = 0; - - /** Insert a key at given time. - * This function should be used instead of FbxAnimCurve::KeyAdd() if the key - * is to be added in the curve and not at the end. It inserts the key in - * respect to the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, the key is modified and no - * new key is added. - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was inserted - * or already present. - * \remark Key value must be set explicitly afterwards. The - * interpolation type and tangent mode are copied from the previous key. - */ - virtual int KeyInsert ( FbxTime pTime, int* pLast = NULL ) = 0; - - /** Find key index for a given time. - * \param pTime Time of the key looked for. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Key index. The integer part of the key index gives the - * index of the closest key with a smaller time. The decimals give - * the relative position of given time compared to previous and next - * key times. Returns -1 if animation curve has no key. - * - * For example (using seconds for clarity), if there is a key at time 10s with index 5, and a key at - * time 11s with index 6, KeyFind(10.3s) would return 5.3. - */ - virtual double KeyFind (FbxTime pTime, int* pLast = NULL) = 0; - - /** Scale value of all keys. - * \param pMultValue Scale applied on key values. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValue (float pMultValue) = 0; - - /** Scale value and tangent of all keys. - * \param pMultValue Scale applied on key values and tangents. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValueAndTangent (float pMultValue) = 0; - //@} - - /** - * \name Key Manipulation - */ - - //@{ - /** General function to set key properties. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The key must have been previously created, for example using KeyAdd. - * Use FbxAnimCurve::SetTCB() in the specific case of setting a key with cubic interpolation and TCB tangent mode. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pInterpolation Key interpolation type. - * \param pTangentMode Key tangent mode (meaningful for cubic interpolation only). - * \param pData0 Value of right slope. - * \param pData1 Value of next left slope. - * \param pTangentWeightMode Weight mode, if used. - * \param pWeight0 Weight for right slope, if tangent weight mode is eWeightedRight or eWeightedAll. - * \param pWeight1 Weight for next left slope, if tangent weight mode is eWeightedNextLeft or eWeightedAll. - * \param pVelocity0 Velocity for right slope, if tangent velocity mode is eVelocityRight or eVelocityAll. - * \param pVelocity1 Velocity for next left slope, if tangent velocity mode is eVelocityNextLeft or eVelocityAll. - */ - virtual void KeySet(int pKeyIndex,FbxTime pTime, float pValue, FbxAnimCurveDef::EInterpolationType pInterpolation = FbxAnimCurveDef::eInterpolationCubic, FbxAnimCurveDef::ETangentMode pTangentMode = FbxAnimCurveDef::eTangentAuto, float pData0 = 0.0,float pData1 = 0.0,FbxAnimCurveDef::EWeightedMode pTangentWeightMode = FbxAnimCurveDef::eWeightedNone, float pWeight0 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pWeight1 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pVelocity0 = FbxAnimCurveDef::sDEFAULT_VELOCITY,float pVelocity1 = FbxAnimCurveDef::sDEFAULT_VELOCITY) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void KeySetTCB(int pKeyIndex,FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get key's interpolation type. - * \param pKeyIndex Index of the queried key. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType KeyGetInterpolation(int pKeyIndex) const = 0; - - /** Set key's interpolation type. - * \param pKeyIndex Index of the key. - * \param pInterpolation Key interpolation type. - */ - virtual void KeySetInterpolation(int pKeyIndex, FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's constant mode. - * \note This method is only relevant if the key's interpolation type is constant (eInterpolationConstant). - * Using this method on a key with an other interpolation type will return unpredictable value. - * \param pKeyIndex Index of the queried key. - * \return Key constant mode. - */ - virtual FbxAnimCurveDef::EConstantMode KeyGetConstantMode(int pKeyIndex) const = 0; - - /** Get key's tangent mode. - * \param pKeyIndex Index of the key. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - * \return Key tangent mode. - */ - virtual FbxAnimCurveDef::ETangentMode KeyGetTangentMode(int pKeyIndex, bool pIncludeOverrides = false ) const = 0; - - /** Set key's constant mode. - * This method is meaningful for constant interpolation only. - * \param pKeyIndex Index of the key. - * \param pMode Key constant mode. - */ - virtual void KeySetConstantMode(int pKeyIndex, FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Set key's tangent mode. - * This method is meaningful for cubic interpolation only. - * \param pKeyIndex Index of the key. - * \param pTangent Key tangent mode. - */ - virtual void KeySetTangentMode(int pKeyIndex, FbxAnimCurveDef::ETangentMode pTangent) = 0; - - /** Get key at given index. - * \param pIndex Index of the key on the animation curve. - * \return The key at the given index. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveKey KeyGet(int pIndex) const = 0; - - /** Get key value. - * \param pKeyIndex Index of the queried key. - * \return Key value. - */ - virtual float KeyGetValue(int pKeyIndex) const = 0; - - /** Set key value. - * \param pKeyIndex Index of the key. - * \param pValue The value to set. - */ - virtual void KeySetValue(int pKeyIndex, float pValue) = 0; - - /** Increment key value. - * \param pKeyIndex Index of the key. - * \param pValue Term added to the key value. - */ - virtual void KeyIncValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key value. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key value. - * \see FbxAnimCurve::KeyMultTangent. - */ - virtual void KeyMultValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key tangents. - * \remark When multiplying a key value, tangents must be - * multiplied to conserve the same topology. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key tangents. - */ - virtual void KeyMultTangent(int pKeyIndex, float pValue) = 0; - - /** Get key time - * \param pKeyIndex Index of the queried key. - * \return Key time (time at which this key is occurring). - */ - FbxTime KeyGetTime(int pKeyIndex) const override = 0; - - /** Set key time. - * \param pKeyIndex Index of the key. - * \param pTime Key time (time at which this key is occurring). - * \remark The new key time might modify the key index. - */ - void KeySetTime(int pKeyIndex, FbxTime pTime) override = 0; - - /** Set or unset the tangent break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the key. - * \param pVal Break flag (\c true or \c false). - */ - virtual void KeySetBreak(int pKeyIndex, bool pVal) = 0; - - /** Get if the tangent has a break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the queried key. - * \return Break flag (\c true or \c false). - */ - virtual bool KeyGetBreak(int pKeyIndex) const = 0; - //@} - - /** - * \name Key Tangent Management - */ - //@{ - /** Get the left derivative of a key. - * \param pIndex Index of the queried key. - * \return Left derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftDerivative(int pIndex) = 0; - - /** Set the left derivative of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetLeftDerivative(int pIndex, float pValue) = 0; - - /** Get the left auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Left auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Left derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetLeftDerivativeInfo(int pIndex) = 0; - - /** Set the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetLeftDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the right derivative of a key. - * \param pIndex Index of the key. - * \return Right derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightDerivative(int pIndex) = 0; - - /** Set the right derivative of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetRightDerivative(int pIndex, float pValue) = 0; - - /** Get the right auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Right auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Right derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetRightDerivativeInfo(int pIndex) = 0; - - /** Set the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetRightDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the left tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is left weighted (Weight mode is eWEIGHT_WEIGHTED_RIGHT or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsLeftTangentWeighted(int pIndex) const = 0; - - /** Get the right tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is right weighted (Weight mode is eWeightedRight or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsRightTangentWeighted(int pIndex) const = 0; - - /** Get the weight value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Left tangent weight, or eDEFAULT_WEIGHT (0.333...) if left tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetLeftTangentWeight(int pIndex) const = 0; - - /** Get the weight value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Right tangent weight, or eDEFAULT_WEIGHT (0.333...) if right tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetRightTangentWeight(int pIndex) const = 0; - - /** Set the left tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the left tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetLeftTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Set the right tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the right tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetRightTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Get the velocity value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the left tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetLeftTangentVelocity( int pIndex) const = 0; - - /** Get the velocity value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the right tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetRightTangentVelocity( int pIndex) const = 0; - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate animation curve value at a given time. - * \param pTime Time of evaluation. - * If time falls between two keys, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode if relevant. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Animation curve value on given time, or animation curve's default value if animation curve - * has no key. - * \remarks This function takes extrapolation into account. - */ - float Evaluate (FbxTime pTime, int* pLast = NULL) override = 0; - - /** Evaluate animation curve value at a given key index. - * \param pIndex Any value from 0 to FbxAnimCurve::KeyGetCount() - 1. - * \return Animation curve value, or default value if animation curve - * has no key. - * - * \remarks If key index is not an integer value, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode, if relevant. - * This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - float EvaluateIndex( double pIndex) override = 0; - - /** Evaluate function left derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Left derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateLeftDerivative (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate function right derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Right derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateRightDerivative (FbxTime pTime, int* pLast = NULL) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation animation curve. - * This function retrieves the animation curve's time span. - * \param pTimeInterval Reference to receive start and end time. - * \return \c true on success, \c false otherwise. - */ - bool GetTimeInterval(FbxTimeSpan& pTimeInterval) override = 0; - - /** Copy animation curve content into current animation curve. - * \param pSource Animation curve to be copied (which will not be modified). - * \param pWithKeys If \c true, clear keys in current animation curve and copy - * keys from source animation curve. If \c false, keys in current animation curve - * are left as is. - */ - virtual void CopyFrom(FbxAnimCurve& pSource, bool pWithKeys = true) = 0; - - /** Retrieve the value of the parent curve node channel. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \return The value of the parent curve node channel of this curve. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual float GetValue(int pCurveNodeIndex=0) = 0; - - /** Set the value to the parent curve node channel. - * \param pValue The value to set to the parent curve node channel of this curve. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual void SetValue(float pValue, int pCurveNodeIndex=0) = 0; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual KFCurve* GetKFCurve() = 0; - bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) override = 0; - bool Retrieve(FbxIO* pFileObject) override = 0; - void ExtrapolationSyncCallback() override = 0; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h deleted file mode 100644 index b85b70c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvebase.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ - -#include - -#include - -#include - -class FbxIO; - -/** This is the base class interface for the FBX animation curve keys. - * \nosubgrouping - * - * \remarks For an example of implemented class, please see FbxAnimCurveKey. - */ -class FBXSDK_DLL FbxAnimCurveKeyBase -{ -public: - /** Data member representing time value. - */ - FbxTime mTime; - - /** Constructor. - */ - FbxAnimCurveKeyBase() - { - mTime = FBXSDK_TIME_ZERO; - } - - /** Destructor. - */ - virtual ~FbxAnimCurveKeyBase() {}; - - /** Get time value. - * \return Time value. - */ - virtual FbxTime GetTime() const - { - return mTime; - } - - /** Set time value. - * \param pTime Time value to set. - */ - virtual void SetTime(const FbxTime& pTime) { - mTime = pTime; - } -}; - -/** This is the base class for implementing animation curves. - * \nosubgrouping - * It is a pure virtual class that defines the general interface to animation - * key management and manipulation. - * - * \see FbxAnimCurve for fully implemented class. - */ -class FBXSDK_DLL FbxAnimCurveBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurveBase, FbxObject); - -public: - /** - * \name Key management. - * - */ - //@{ - //! Remove all the keys and free buffer memory. - virtual void KeyClear () = 0; - - //! Get the number of keys. - virtual int KeyGetCount () const = 0; - - /** Add a key at given time. - * \param pTime Time to add the key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - */ - virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0; - - /** Set key at given index. - * \param pIndex Index of where the key should be set. - * \param pKey The key to set. - * \return \c true if key time is superior to previous key and inferior - * to next key, \c false otherwise. - * \remarks Result is undetermined if function curve has no key or index - * is out of bounds. - */ - virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0; - - /** Remove key at given index. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pIndex) = 0; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0; - - //@} - - /** - * \name Key Time Manipulation - */ - //@{ - /** Get key time. - * \param pKeyIndex Key index. - * \return Key time (time at which this key is occurring). - */ - virtual FbxTime KeyGetTime(int /*pKeyIndex*/) const { return FBXSDK_TIME_INFINITE; } - - /** Set key time. - * \param pKeyIndex Key index. - * \param pTime Key time (time at which this key is occurring). - */ - virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0; - - //@} - - /** - * \name Extrapolation - * Extrapolation defines the function curve value before and after the keys. - * Pre-extrapolation defines the function curve value before first key. - * Post-extrapolation defines the function curve value after last key. - *
  • CONSTANT means a constant value matching the first/last key. - *
  • REPETITION means the entire function curve is looped. - *
  • MIRROR_REPETITION means the entire function curve is looped once backward, once forward and so on. - *
  • KEEP_SLOPE means a linear function with a slope matching the first/last key. - *
  • RELATIVE_REPETITION means entire function curve is looped and one loop is relative to the last loop in value.
- */ - //@{ - enum EExtrapolationType - { - eConstant = 1, - eRepetition = 2, - eMirrorRepetition = 3, - eKeepSlope = 4, - eRelativeRepetition = 5 - } ; - - /** Set pre-extrapolation mode. - * \param pExtrapolation The pre-extrapolation mode to set. - */ - void SetPreExtrapolation(EExtrapolationType pExtrapolation); - - /** Get pre-extrapolation mode. - * \return The current pre-extrapolation mode. - */ - EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; } - - /** Set pre-extrapolation count. - * \param pCount Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPreExtrapolationCount(unsigned long pCount); - - /** Get pre-extrapolation count. - * \return Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; } - - /** Set post-extrapolation mode. - * \param pExtrapolation The post-extrapolation mode to set. - */ - void SetPostExtrapolation(EExtrapolationType pExtrapolation); - - /** Get post-extrapolation mode. - * \return The current post-extrapolation mode. - */ - EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; } - - /** Set post-extrapolation count. - * \param pCount Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPostExtrapolationCount(unsigned long pCount); - - /** Get post-extrapolation count. - * \return Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; } - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate curve value at a given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Evaluated curve value. - * \remarks This function take extrapolation into account. - */ - virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate curve value at the given key index. - * \param pIndex Any value from 0 to KeyGetCount() - 1. - * If this index falls between keys, the curve value will - * be interpolated based on the surrounding keys. - * \return Evaluated curve value. - */ - virtual float EvaluateIndex( double pIndex) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation curve. - * This function retrieves the Curve's time span. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - */ - virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0; - virtual bool Retrieve(FbxIO* pFileObject) = 0; - virtual void ExtrapolationSyncCallback() = 0; - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - EExtrapolationType mPreExtrapolation; - unsigned long mPreExtrapolationCount; - EExtrapolationType mPostExtrapolation; - unsigned long mPostExtrapolationCount; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h deleted file mode 100644 index fdb8239..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h +++ /dev/null @@ -1,1547 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvefilters.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ - -#include - -#include -#include -#include -#include -#include // for FbxLimits - -#include - -class FbxObject; -class FbxAnimStack; -class FbxRotationOrder; - -/** Base class for animation curve filters. -* Animation curves can be modified through filters. The filters act on -* the curve keys and values. They can move, add or remove keys, -* modify key values and key tangents, depending on the desired action -* of the filter. -* Some simple examples are: -* \li A scale filter, that would multiply all key -* values of a curve, and the curve default value, by a given scale. -* \li A constant key reducer filter, that would clean a curve by removing -* redundant keys that all have the same value. -* -* Filters can act on a single animation curve (FbxAnimCurve), but some -* filters need to work on many animation curves at the same time. For -* this reason, the input to a filter can be an animation stack (FbxAnimStack), an object (FbxObject) -* with animated properties, an animation curve node (FbxAnimCurveNode), or an array of animation -* curves (FbxAnimCurve). -* For example, an unroll filter acts on 3 Euler rotation curves (X, Y and Z) at the same time. -* -* A filter has a start time (that can be as low as TC_MINFINITY) and a stop time (that can be as high as TC_INFINITY). -* The filter is only applied to the parts of the animation curves that are between the start and stop time. -* -* The following are two code samples about how to use filter. -* Code sample to use sync filter: -* \code -* FbxAnimCurve* lWorkCurves[3]; //Put some keys in the lWorkCurves and they sync them up. -* FbxAnimCurveFilterKeySync lSyncFilter; -* FbxTime pStart, pStop; //Given start and stop time. -* lSyncFilter.SetStartTime( pStart ); -* lSyncFilter.SetStopTime ( pStop ); -* if( lSyncFilter.NeedApply( lWorkCurves, 3 ) ) -* { -* lSyncFilter.Apply( lWorkCurves, 3 ); -* } -* \endcode -* -* Code sample to use unroll filter: -* \code -* FbxAnimCurveNode* pCurveNode; //An Euler rotation animation curve node. -* FbxAnimCurveFilterUnroll lUnrollFilter; -* lUnrollFilter.SetForceAutoTangents(true); -* lUnrollFilter.Apply(*pCurveNode); -* \endcode -* -* \nosubgrouping -*/ -class FBXSDK_DLL FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilter(); - - //! Destructor. - virtual ~FbxAnimCurveFilter() {}; - - /** - * \name Member functions - */ - //@{ - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const {return NULL;} - - /** Get the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStartTime() {return mStart;} - - /** Set the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \param pTime The time to be set. - */ - void SetStartTime(FbxTime& pTime) { mStart = pTime; } - - /** Get the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStopTime() {return mStop;} - - /** Set the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \param pTime The time to be set. - */ - void SetStopTime(FbxTime& pTime) { mStop = pTime; } - - /** Get the index of start key on the given curve. This is the index of the first key - * after (or on) the filter's start time. - * \param pCurve Curve on which we want to retrieve the start key. - * \return Index of the start key. - */ - int GetStartKey(FbxAnimCurve& pCurve) const; - - /** Get the index of stop key on the given curve. This is the index of the last key - * before (or on) the filter's stop time. - * \param pCurve Curve on which we want to retrieve the stop key. - * \return Index of the stop key. - */ - int GetStopKey(FbxAnimCurve& pCurve) const; - - /** Check if any curve on the animation stack needs an application of the filter. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if all the animated properties of the object need an application of the filter. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls NeedApply(FbxAnimCurve**, int) - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Check if an animation curve need an application of the filter. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Apply filter to all the curves stored in the animation stack. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter to all the animated properties of the object. - * \param pObj Object containing the animated properties to which the filter is applied. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on an array of animation curves. - * \param pCurve Array of curves to which the filter is applied. - * \param pCount Number of curves in the array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL) = 0; - - /** Reset the filter to its default parameters. - */ - virtual void Reset() - { - mStart= FBXSDK_TIME_MINUS_INFINITE; - mStop = FBXSDK_TIME_INFINITE; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static bool GetContinuousOffset(FbxRotationOrder& pOrder, FbxVector4& pOffset, FbxVector4& pNew, FbxVector4& pOld); - -protected: - void GetKFCurvesFromAnimCurve(FbxAnimCurve** pSrc, int pSrcCount, KFCurve** pDst, int& pDstCount); - - // Called for progress bar update, indicating what portion of work is done. - virtual void UpdateProgressInformation(FbxTime /*pStart*/, FbxTime /*pStop*/) {}; - - // Time span for applying the filter. - FbxTime mStart, mStop; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Constant key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterConstantKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterConstantKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterConstantKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the current derivative tolerance. - * \return The value of the current derivative tolerance. - */ - double GetDerivativeTolerance() const; - - /** Set the derivative tolerance. - * \param pValue Value derivative tolerance. - */ - void SetDerivativeTolerance(double pValue); - - /** Get the tolerance value. - * \return The tolerance value. - */ - double GetValueTolerance() const; - - /** Set the tolerance value. - * \param pValue Tolerance value. - */ - void SetValueTolerance(double pValue); - - /** Get the state of the KeepFirstAndLastKeys flag. - * \return \c true if the filter keeps the first and last keys. - */ - bool GetKeepFirstAndLastKeys() const; - - /** Set the state of the KeepFirstAndLastKeys flag. - * \param pKeepFirstAndLastKeys Set to \c true if you want the filter to keep the first and last keys. - */ - void SetKeepFirstAndLastKeys( bool pKeepFirstAndLastKeys ); - - /** Get the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \return \c true if the filter keeps the first key when all keys are constant. - */ - bool GetKeepOneKey() const; - - /** Set the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \param pKeepOneKey Set to \c true if you want the filter to keep the first key when all keys are constant. - */ - void SetKeepOneKey( bool pKeepOneKey ); - - /** Tell the filter to keep CUBIC curve keys which are not pure AUTO. - * \param pKeep KeepNotPureAutoKeys flag. - */ - void SetKeepNotPureAutoKeys(bool pKeep); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // - // If ValueTolerance is default, we use the thresholds here, otherwise - // it is the ValueTolerance that is used. (Mainly for backward compatibility) - // - void SetTranslationThreshold ( double pTranslationThreshold ); - void SetRotationThreshold ( double pRotationThreshold ); - void SetScalingThreshold ( double pScalingThreshold ); - void SetDefaultThreshold ( double pDefaultThreshold ); - - void SetModes(bool pExporting, FbxIOSettings& pIOS); - -private: - double mDerTol; - double mValTol; - - double mTranslationThreshold; - double mRotationThreshold; - double mScalingThreshold; - double mDefaultThreshold; - - bool mKeepFirstAndLastKeys; - bool mKeepOneKey; - bool mKeepNotPureAutoKeys; - - bool IsKeyConstant(FbxAnimCurve& pCurve, int pIndex, int pFirstIndex, int pLastIndex, double pMinValue, double pMaxValue, bool pOnlyCheckAutoKeys); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**This filter tries to compensate parent's scale to children's scale. - * This filter is used to convert scale animation curves of nodes whose transform inherit type are eInheritRrs. - * In the eInheritRrs mode, child objects do not inherit scaling from parent objects at all. - * When a parent object is scaled, the child does not scale, but translates in order to keep proportional distance between models. - * If you want to change the inherit type of certain nodes from eInheritRrs to eInheritRrSs, - * you may call this filter to compensate scale. - */ -class FBXSDK_DLL FbxAnimCurveFilterScaleCompensate : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleCompensate(); - //! Return name of the filter. - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /**Compensate parent's scale to children's scale. - * \param pCurve In pCurve, index 0 is the curve to be filtered. index 1 is the parent curve. - * \param pCount Need to be 2. - * \param pIOS IO setting object. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter will re-sample the animation curves. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxIOSettings& pIOS, FbxStatus* pStatus = NULL); - /** Always fail because this filter needs 2 curves. */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL); -}; - -/**GimbleKiller filter. - *\nosubgrouping - * This filter try to minimize gimble locks on rotation curves. - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks This filter has been superseded by the Unroll filter. It is strongly advised to use - * the latter. - */ -class FBXSDK_DLL FbxAnimCurveFilterGimbleKiller : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterGimbleKiller(); - - //! Destructor. - virtual ~FbxAnimCurveFilterGimbleKiller(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense. - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus = NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Return \c true if key sync filter is enabled. - bool GetApplyKeySyncFilter() const; - - /** Set to \c true to enable key sync filter. - * \param pFlag Key sync filter flag. - */ - void SetApplyKeySyncFilter(bool pFlag); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxRotationOrder* mRotationOrder; - bool mApplyKeySyncFilter; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Get precision. - double GetPrecision() const; - - /** Set precision. - * \param pPrecision The precision to set. - */ - void SetPrecision(double pPrecision); - - //! Return \c true key sync is applied at the end. - bool GetKeySync() const; - - /** Set to \c true to apply key sync at the end. - * \param pKeySync Key sync flag. - */ - void SetKeySync(bool pKeySync); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool KeyReducer(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, FbxTime pStart, FbxTime pStop); - bool Subdivise(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight); - double FindMaxError(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight, int& pSplit); - - // User parameters. - double mPrecision; - int mProgressCurrentRecurseLevel; - bool mKeySync; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key sync filter. - * \nosubgrouping - * Filter to synchronize the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterKeySync : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeySync(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeySync() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pAnimStack, pStatus); } - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pObj, pAnimStack, pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** One single curve cannot be sync'ed. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true. - * \remarks Has no effect since there is only one curve. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return true; } -}; - - -/** Re-sampling filter. - * \nosubgrouping - * Filter to re-sample animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterResample : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterResample(); - - //! Destructor. - virtual ~FbxAnimCurveFilterResample() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply the filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Set if the keys are on frame. - * \param pKeysOnFrame value if keys are set on frame multiples. - */ - void SetKeysOnFrame(bool pKeysOnFrame); - - /** Get if the keys are on frame. - * \return Value if keys are on frame multiples. - */ - bool GetKeysOnFrame() const; - - /** Get the re-sampling period - * \return The re-sampling period. - */ - FbxTime GetPeriodTime() const; - - /** Set the re-sampling period - * \param pPeriod The re-sampling period to be set. - */ - void SetPeriodTime(FbxTime &pPeriod); - - - /**Get the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \return \c true if the intelligent mode is on, \c false otherwise. - * \remarks If intelligent mode is on, interpolation type and tangent mode of each created curve key - * are set equal to the interpolation type and tangent mode of the closest curve key encountered. - * If intelligent mode is off, the interpolation type of each created curve key - * will always be set to CUBIC, and tangent mode will always be set to AUTO. - */ - bool GetIntelligentMode() const; - - /** Set the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \param pIntelligent \c true, set interpolation type and tangent mode of each created curve key equal to - * the interpolation type and tangent mode of the closest curve key encountered. - * \c false, always set the interpolation type of each created curve key to CUBIC, - * and always set the tangent mode to AUTO. - */ - void SetIntelligentMode( bool pIntelligent ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool mKeysOnFrame; - FbxTime mPeriod; - bool mIntelligent; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScale : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScale(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScale() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. Instead of scaling by a constant float value, we will scale by using another anim curve - * Use a single channel curve only to scale - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScaleByCurve : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleByCurve(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScaleByCurve() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. (null curve) - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - FbxAnimCurve* GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(FbxAnimCurve* pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAnimCurve* mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**Time shift and scale filter. - *\nosubgrouping - * Filter to shift key times and scale key values on animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterTSS : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterTSS(); - - //! Destructor. - virtual ~FbxAnimCurveFilterTSS() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pAnimStack); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pObj, pAnimStack); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurveNode); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurve, pCount); } - //@} - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the time shift value. - * \return The time value used for the shift. - */ - FbxTime GetShift() const; - - /** Set the time shift value. - * \param pShift The time value used for the shift. - */ - void SetShift(FbxTime& pShift); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mShift; - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Unroll filter. - *\nosubgrouping - * Filter to apply continuous rotation values to animation curves. Due to Euler rotation - * properties, when a rotation angle cross over the 180 degree value, it becomes -179. This - * filter tries to keep a continuous rotation effectively by producing increasing values, to - * actually become 181 degrees, etc... - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks By default, this filter does not affect the tangent values of the modified keys. - * This means that, for CUBIC interpolation curves containing keys with USER or BREAK - * tangents, the unrolled curves will correctly match the original rotation exactly on - * the curve keys but not in-between them. The filter can be configured to automatically - * convert the USER and BREAK tangents to AUTO tangents by setting the ForceAutoTangents flag. - * Using the AUTO tangents mode can result in a more consistent interpolation between - * the curve keys. - */ -class FBXSDK_DLL FbxAnimCurveFilterUnroll : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterUnroll(); - - //! Destructor. - virtual ~FbxAnimCurveFilterUnroll() {}; - - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve needs an application of the filter. - * \param pCurve Array of curves to test if they need an application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter, - * \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter expects a Euler rotation curve node with three curves. - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with 3 interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the unroll quality tolerance. - * \return The current unroll quality tolerance. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - double GetQualityTolerance() const; - - /** Set the unroll quality tolerance. - * \param pQualityTolerance The unroll quality tolerance to set. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - void SetQualityTolerance(double pQualityTolerance); - - /** Get if the test path is enabled. - * \return \c true if test for path is enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - bool GetTestForPath() const; - - /** Set if the test path is enabled. - * \param pTestForPath Value to set if test for path is to be enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - void SetTestForPath(bool pTestForPath); - - /** Get the current state of the ForceAutoTangents flag. - * \return \c true if forcing AUTO tangents is enabled. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - bool GetForceAutoTangents() const; - - /** Set the new state of the ForceAutoTangents flag. - * \param pForceAutoTangents New value of the flag. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - void SetForceAutoTangents(bool pForceAutoTangents); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetRotationOrder(FbxEuler::EOrder pOrder); - -private: - double InterpolationQualityFactor(FbxVector4& lV1, FbxVector4& lV2); - - double mQualityTolerance; - bool mTestForPath; - bool mForceAutoTangents; - FbxEuler::EOrder mRotationOrder; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Matrix conversion filter. - * \nosubgrouping - * \remarks The current implementation of this filter expects to process 9 curves. If the - * ApplyUnroll flag is enabled, set with a call to SetApplyUnroll(), the - * internal unroll filter will automatically be configured to convert USER and - * BREAK tangents to AUTO (refer to the FbxAnimCurveFilterUnroll documentation). - */ -class FBXSDK_DLL FbxAnimCurveFilterMatrixConverter : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterMatrixConverter(); - - //! Destructor. - virtual ~FbxAnimCurveFilterMatrixConverter(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurve, pCount,pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve nodes need an application of the filter. - * \param pCurveNode Curves to test if they need an application of the filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve nodes need an application of the filter and - * \c false if they don't or an incompatible configuration is detected. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool NeedApply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of the animation curve nodes. - * \param pCurveNode Curve nodes to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool Apply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks \e pCount must be equal to 9 - * \remarks Because this method only manipulates FbxAnimCurve objects, it cannot set/get - * the channels value. If the calling application wishes to use this flavor of the - * Apply() method, it is strongly suggested to use the method: - * FbxAnimCurveFilterMatrixConverter::Apply(FbxAnimCurve** pCurve, double& pVals[9]); - * The Apply(FbxAnimCurveNode*) method is not affected by this limitation since - * the channel values can be accessed via the animation curve node. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pVals Array of channel values (same size as \e pCurve). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurve contains exactly 9 curves. - * \remarks \e pVals must be correctly initialized with the channels values and, if the - * method calculates new values, they will be returned in this array. - * \remarks The curves are assumed to represent: Translation X,Y and Z, Rotation X,Y and Z and - * Scaling X,Y and Z in this order. - */ - bool Apply(FbxAnimCurve** pCurve, double* pVals, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** \enum EMatrixIndex Matrix index type - * - \e ePreGlobal - * - \e ePreTranslate - * - \e ePostTranslate - * - \e ePreRotate - * - \e ePreScale - * - \e ePostGlobal - * - \e eScaleOffset - * - \e eInactivePre - * - \e eInactivePost - * - \e eRotationPivot - * - \e eScalingPivot - * - \e eMatrixIndexCount - */ - enum EMatrixIndex - { - ePreGlobal, - ePreTranslate, - ePostTranslate, - ePreRotate, - ePostRotate, - ePreScale, - ePostScale, - ePostGlobal, - eScaleOffset, - eInactivePre, - eInactivePost, - eRotationPivot, - eScalingPivot, - eMatrixIndexCount - }; - - /** Get the Translation Rotation Scaling source matrix - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the source matrix. - */ - void GetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling source matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the source matrix. - */ - void SetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the destination matrix. - */ - void GetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the destination matrix. - */ - void SetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the re-sampling period. - * \return the re-sampling period. - */ - FbxTime GetResamplingPeriod () const; - - /** Set the re-sampling period. - * \param pResamplingPeriod The re-sampling period to be set. - */ - void SetResamplingPeriod (FbxTime& pResamplingPeriod); - - /** Get the current state of the flag which determines if the last key should be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \return \c true if last key is set exactly at end time, \c false otherwise. - */ - bool GetGenerateLastKeyExactlyAtEndTime() const; - - /** Set the flag to determine if the last key will be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \param pFlag Set to \c true to generate the last key exactly at the end time, \c false otherwise. - */ - void SetGenerateLastKeyExactlyAtEndTime(bool pFlag); - - /** Check if re-sampling is on frame rate multiple. - * \return \c true if re-sampling is on a frame rate multiple. - */ - bool GetResamplingOnFrameRateMultiple() const; - - /** Set the re-sample on a frame rate multiple. - * \param pFlag The value to be set. - * \remarks It might be necessary that the starting time of the converted - * animation starts at an multiple of frame period starting from time 0. - * Most softwares play their animation at a definite frame rate, starting - * from time 0. As re-sampling occurs when we can't guarantee interpolation, - * keys must match with the moment when the curve is evaluated. - */ - void SetResamplingOnFrameRateMultiple(bool pFlag); - - /** Get the current state of the ApplyUnroll flag. - * \return \c true if the internal unroll filter is applied, \c false otherwise. - * \remarks Enable the internal unroll filter to get continuous rotation animation curves. - * \see FbxAnimCurveFilterUnroll. - */ - bool GetApplyUnroll() const; - - /** Set the state of the ApplyUnroll flag. - * \param pFlag Set to \c true to apply an unroll filter to the rotation curves internally, - * \ set to \c false otherwise. - */ - void SetApplyUnroll(bool pFlag); - - /** Get the current state of the flag that determines if constant key reducer is used or not. - * \return \c true if constant key reducer is applied, \c false otherwise. - */ - bool GetApplyConstantKeyReducer() const; - - /** Set the state of the flag that determines if constant key reducer is used or not. - * \param pFlag Set to \c true to apply the constant key reducer, - * \ Set to \c false otherwise. - */ - void SetApplyConstantKeyReducer(bool pFlag); - - /** Get the current state of the flag that determines if the translation data should be re-sampled or not. - * \return \c true if translation data is re-sampled upon conversion, \c false otherwise. - * \remarks If this flag is \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - bool GetResampleTranslation() const; - - /** Set the state of the flag that determines if the translation data should be re-sampled or not. - * \param pFlag Set to \c true to re-sample the translation data, set to \c false otherwise. - * \remarks If this flag is set to \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - void SetResampleTranslation(bool pFlag); - - /** Set the rotation order of the source matrix. - * \param pOrder The rotation order to be set. - */ - void SetSrcRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the rotation order of the destination matrix. - * \param pOrder The rotation order to be set. - */ - void SetDestRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \param pVal Set to \c true to force usage of the filter, set to \c false otherwise. - */ - void SetForceApply(bool pVal); - - /** Get the current state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \return \c true to force usage of the filter, \c false otherwise. - */ - bool GetForceApply() const; - - /** Set the Translation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetTranslationLimits(FbxLimits &limit ); - - /** Set the rotation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetRotationLimits(FbxLimits &limit ); - - /** Set the scaling limits to be applied during conversion. Only active limits are applied. - * \param limit The scaling limit to be set. - */ - void SetScalingLimits(FbxLimits &limit ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - // Nicer than referring to 0, 1, 2... - enum EAxisIndex {eX, eY, eZ, eAxisCount}; - - // Convert parameter cell. - class Cell; - - bool MatricesEquivalence(FbxAMatrix pMatArrayA [eMatrixIndexCount], FbxAMatrix pMatArrayB [eMatrixIndexCount]) const; - - bool DoConvert(FbxAnimCurve** pCurve, - double pT[eAxisCount], - double pR[eAxisCount], - double pS[eAxisCount], - FbxStatus* pStatus); - - void FindTimeInterval - ( - FbxTime& pStart, - FbxTime& pEnd, - FbxAnimCurve* pTFCurve [eAxisCount], - FbxAnimCurve* pRFCurve [eAxisCount], - FbxAnimCurve* pSFCurve [eAxisCount] - ); - - void ComputeTotalMatrix - ( - FbxAMatrix& pGlobal, - Cell& pCell, - FbxAMatrix& pTranslate, - FbxAMatrix& pRotate, - FbxAMatrix& pScale - ); - - void ExtractTransforms - ( - FbxVector4& pScaleVector, - FbxVector4& pRotateVector, - FbxVector4& pTranslateVector, - FbxAMatrix& pGlobal, - Cell& pDest - ); - - void SetDestFCurve(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxTime pTime, - FbxVector4 pVector, - FbxAnimCurveDef::EInterpolationType pInterpMode[eAxisCount], - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount]); - - void FillInterpAndTangeant(FbxTime& pTime, - FbxAnimCurve* pSourceCurve[eAxisCount], - FbxAnimCurveDef::EInterpolationType* pInterp, - FbxAnimCurveDef::ETangentMode* pTangeant); - - void SetDestFCurveTangeant(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount], - FbxVector4 pKeyValue, - FbxVector4 pNextKeyValue); - - Cell* mSource; - Cell* mDest; - - FbxTime mResamplingPeriod; - bool mResamplingOnFrameRateMultiple; - - bool mApplyUnroll; - bool mApplyConstantKeyReducer; - - // PP : So that the concatenation of matrices takes into account the rotation order - FbxRotationOrder* mSrcRotationOrder; - FbxRotationOrder* mDestRotationOrder; - - // Set last key exactly at end time or a frame period later. - bool mGenerateLastKeyExactlyAtEndTime; - - // Translation re-sampling flag. - bool mResampleTranslation; - - // Force Apply - bool mForceApply; - - // Limits - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - - // internal usage - FbxAnimCurveNode* mRotationCurveNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h deleted file mode 100644 index 0c1ad2b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvenode.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ - -#include - -#include - -#include - -//Standard curve node names -#define FBXSDK_CURVENODE_TRANSFORM "Transform" -#define FBXSDK_CURVENODE_TRANSLATION "T" -#define FBXSDK_CURVENODE_ROTATION "R" -#define FBXSDK_CURVENODE_SCALING "S" -#define FBXSDK_CURVENODE_COMPONENT_X "X" -#define FBXSDK_CURVENODE_COMPONENT_Y "Y" -#define FBXSDK_CURVENODE_COMPONENT_Z "Z" -#define FBXSDK_CURVENODE_COLOR "Color" -#define FBXSDK_CURVENODE_COLOR_RED FBXSDK_CURVENODE_COMPONENT_X -#define FBXSDK_CURVENODE_COLOR_GREEN FBXSDK_CURVENODE_COMPONENT_Y -#define FBXSDK_CURVENODE_COLOR_BLUE FBXSDK_CURVENODE_COMPONENT_Z - -class FbxAnimStack; -class FbxAnimCurve; -class FbxMultiMap; -class KFCurveNode; - -/** This class is an composite of animation curves and is called as animation curve node. - * \nosubgrouping - * Animation curve node is used as the connection point for animation curves and other animation curve nodes - * associated to a property. FbxAnimCurveNode can be connected to other FbxAnimCurveNode, - * in this case, the destination animation curve node may be considered as "composite", \ref IsComposite(). - * remarks When created, the FbxAnimCurveNode has no valid channels unless it is created using the function CreateTypedCurveNode(). - * This function will add all the required channels to correctly match the number of values of the property. - * For instance, when CreateTypedCurveNode(pNode.LclTranslation, pScene) is called, the resulting - * FbxAnimCurveNode will automatically have 3 channels corresponding to the X,Y and Z components of the LclTranslation property. - * You can add and remove channels dynamically but can never remove the channels that have been added by the call to CreateTypedCurveNode(). - * - * However, the FBX SDK animation system's default implementation is to consider only the first curve connected to - * the channel. Therefore, if the caller connects multiple animation curves to the same channel, then it becomes - * the caller's responsibility to handle and manipulate these extra curves in a meaningful manner. - */ -class FBXSDK_DLL FbxAnimCurveNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxAnimCurveNode, FbxObject); - -public: - /** - * \name Utility functions. - * - */ - //@{ - /** Check if the animation curve node contains any animation key. - * \param pRecurse \c true to descend to the children if the animation curve node is composite. - * \return \c true if at least one animation curve that contains one or more animation keys is found, - * \c false otherwise. - * \remarks This method only considers the first animation curve connected to each channel. - * To check multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool IsAnimated(bool pRecurse=false) const; - - /** Find out start and end time of the animation. - * This function retrieves the including time span for all animation curves of this animation curve node. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - * \remarks \c false is also returned if this animation curve node has no animation. - * \remarks This method only considers the first animation curve connected to each channel. - * To find time interval of multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool GetAnimationInterval(FbxTimeSpan& pTimeInterval) const; - - /** Test this object to see if it is a composite FbxAnimCurveNode or a "leaf". - * A composite FbxAnimCurveNode is a FbxAnimCurveNode whose all source connections are FbxAnimCurveNode - * and its property channels is totally empty. It is just a container to take other FbxAnimCurveNode. - * \return \c true if this object is a composite, \c false otherwise. - */ - bool IsComposite() const; - - /** Recursively look for the FbxAnimCurveNode matching the passed named argument. - * \param pName Name of the FbxAnimCurveNode we are looking for. - * \return The found anim curve node or NULL. - * \remarks If pName is an empty string, this function automatically return NULL. - */ - FbxAnimCurveNode* Find(const char* pName); - - /** Create a FbxAnimCurveNode compatible with the specified property data type. - * \param pProperty The property that needs a FbxAnimCurveNode. - * \param pScene The scene the created FbxAnimCurveNode will belong to. - * \return The pointer to the newly created FbxAnimCurveNode. Returns NULL if an error occurred. - * \remarks This function does not connect the newly created FbxAnimCurveNode to the property. - * \remarks This function detects FbxDouble3, FbxDouble4 and FbxDouble4x4 properties DataTypes and - * automatically adds the required channels properties. Any other DataType is not - * specifically processed and the channels properties are left empty and need to be filled - * using the AddChannel() function. - */ - static FbxAnimCurveNode* CreateTypedCurveNode(FbxProperty& pProperty, FbxScene* pScene); - - /** Get the total number of property channels defined in this animation curve node. - * For composite animation curve nodes, since they do not contain any channels, this function will always return 0. - * \return The number of property channels. - */ - unsigned int GetChannelsCount() const; - - /** Get the index of the named channel. - * \param pChannelName Name of the channel for which we want the index. - * \return the index of the named channel or -1 if no channel with this name is found. - */ - int GetChannelIndex(const char* pChannelName) const; - - /** Get the name of the channel. - * \param pChannelId Index of the channel for which we want the name. - * \return the name of the indexed channel or "" if the index is invalid. - */ - FbxString GetChannelName(int pChannelId) const; - - /** Empties the property channels of this animation curve node. - * \remarks This function will remove all the channels added with the AddChannel() method - * regardless of their use and/or connections. - * But it can not remove the channels that are added by the call to CreateTypedCurveNode(). - */ - void ResetChannels(); - - /** Adds the specified channel property. - * \param pChnlName Channel name. - * \param pValue Default value of the channel. - * \return \c true if successful, \c false otherwise. - * \remarks It is an error to try to add a channel that already exists. - */ - template bool AddChannel(const char* pChnlName, T const &pValue) - { - if (!pChnlName || strlen(pChnlName)==0) return false; - FbxProperty c = GetChannel(pChnlName); - if (c.IsValid()) - { - return false; - } - - mChannels.BeginCreateOrFindProperty(); - FbxDataType dt = FbxGetDataTypeFromEnum(FbxTypeOf(pValue)); - c = FbxProperty::Create(mChannels, dt, pChnlName); - c.Set(pValue); - mChannels.EndCreateOrFindProperty(); - return true; - } - - /** Set the default value of the channel. - * \param pChnlName Channel name. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(const char* pChnlName, T pValue) - { - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) c.Set(pValue); - } - - /** Set the default value of the channel. - * \param pChnlId Channel index. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(unsigned int pChnlId, T pValue) - { - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) c.Set(pValue); - } - - /** Get the default value of the channel. - * \param pChnlName Channel name. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(const char* pChnlName, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) v = c.Get(); - return v; - } - - /** Get the default value of the channel. - * \param pChnlId Channel index. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(unsigned int pChnlId, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) v = c.Get(); - return v; - } - //@} - - /** - * \name FbxAnimCurve management. - * - */ - //@{ - /** Disconnect the animation curve from the channel. - * \param pCurve The curve to disconnect from the channel. - * \param pChnlId The channel index. - * \return \c true if the disconnection was made, \c false if an error occurred. - */ - bool DisconnectFromChannel(FbxAnimCurve* pCurve, unsigned int pChnlId); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnl The name of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one, - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, const char* pChnl, bool pInFront = false); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnlId Index of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one. - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - * \remarks The index is 0 based. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, unsigned int pChnlId, bool pInFront = false); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannel Channel identifier. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * \remarks If the pChannel identifier is left NULL, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, const char* pChannel); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannelId Channel index. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * If the pChannelId is not assigned, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, unsigned int pChannelId = 0); - - /** Get the number of FbxAnimCurve connected to the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \return The number of animation curves on the specified channel or 0 if an error occurred. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return 0. - * If the specified channel cannot be found on the FbxAnimCurveNode with name pCurveNodeName, return 0. - * \remarks If this animation curve node is composite, this function will try to search all - * children animation curve nodes recursively for the one named pCurveNodeName. - * If the pCurveNodeName is left NULL, then only look for the curves on this animation curve node - * even if it is composite. - */ - int GetCurveCount(unsigned int pChannelId, const char* pCurveNodeName = NULL); - - /** Get the FbxAnimCurve of the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pId The index of the desired anim curve (in case there is more than one). - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for (if this object is a composite). - * \return Pointer to the FbxAnimCurve that matches the criteria. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return NULL. - * If the specified channel cannot be found in the FbxAnimCurveNode with name pCurveNodeName, return NULL. - * \remarks If the pCurveNodeName is left NULL, then only search in the curves on this animation curve node - * even if it is composite. - */ - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId = 0, const char* pCurveNodeName = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - static const char* CurveNodeNameFrom(const char* pName); - static bool EvaluateChannels(FbxAnimCurveNode* pCurveNode, double* pData, unsigned int pCount, FbxTime pTime); - - void ReleaseKFCurveNode(); - void SyncChannelsWithKFCurve(); - - inline bool UseQuaternionInterpolation() {return mQuaternionInterpolation != 0;}; - bool SetQuaternionInterpolation(unsigned short pVal); - unsigned short GetQuaternionInterpolation() { return mQuaternionInterpolation; }; - void SetKFCurveNodeLayerType(FbxProperty& pProp); - KFCurveNode* GetKFCurveNode(bool pNoCreate=false); - -private: - friend class FbxAnimCurveFilterMatrixConverter; - friend class FbxAnimEvalClassic; - void Evaluate(double* pData, FbxTime pTime); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - - FbxAnimCurveNode* Find(FbxAnimCurveNode* pRoot, const FbxString& pName); - -private: - FbxProperty GetChannel(const char* pChnl); - FbxProperty GetChannel(unsigned int pChnlId); - - friend void CollectAnimFromCurveNode(void **lSrc, void *fcn, unsigned int nbCrvs, FbxAnimCurveNode *cn, FbxMultiMap* pNickToAnimCurveTimeWarpsSet, FbxMultiMap& pNickToKFCurveNodeWarpSet); - - unsigned char mNonRemovableChannels; - FbxProperty mChannels; - FbxProperty* mCurrentlyProcessed; - KFCurveNode* mFCurveNode; - bool* mOwnedKFCurve; - int mKFCurveNodeLayerType; - unsigned short mQuaternionInterpolation; - int* mDirectIndexes; - int mDirectIndexesSize; - - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId, FbxAnimCurveNode* pCurveNode); - bool ConnectToChannel(FbxProperty& p, FbxAnimCurve* pCurve, bool pInFront); - void ResetKFCurveNode(); - void SyncKFCurveValue(FbxAnimCurve* pCurve, double pVal); - void ReleaseOwnershipOfKFCurve(int pIndex); - - template FbxAnimCurve* CreateCurveGeneral(const char* pCurveNodeName, T pChannel); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -FBXSDK_DLL void GetAllAnimCurves(FbxAnimStack* pAnimStack, FbxArray& pCurves); -FBXSDK_DLL void GetAllAnimCurves(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxArray& pCurves); - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVENODE_H - diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h deleted file mode 100644 index 9e83e33..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalclassic.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ - -#include - -#include -#include -#include - -#include - -/** An evaluator implementation that behaves like the original FBX SDK (2010 and previous) evaluation system. - * - * It works by implementing the abstract class FbxAnimEvaluator, which is used as the main interface for evaluators. - * \note While this class can be instanced at any time, it is preferable to access the evaluator via the function - * FbxScene::GetEvaluator(), which will automatically return the default evaluator used in the current FBX SDK. - * This is very useful because it will allow the user to use the very same evaluator used by the FBX SDK internally. - * \see FbxAnimEvaluator, FbxScene - */ -class FBXSDK_DLL FbxAnimEvalClassic : public FbxAnimEvaluator -{ - FBXSDK_OBJECT_DECLARE(FbxAnimEvalClassic, FbxAnimEvaluator); - - enum EBlendType {eSimple, eRotation, eScaling}; - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time - * and update the mLT, mLR, mLT fields of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \remarks Values of properties LclTranslation, LclRotation, LclScaling will be updated to pResult->mLT, pResult->mLR, pResult->mLS. - * The translation, rotation and scaling limits are taken into consideration. - * Only LclTranslation, LclRotation and LclScaling are taken into accounts, no other transform, such as pivot, offset are calculated here. - */ - void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack); - - /** Calculate global transform of a node at the specified time and update the mGX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated global transform will be updated to pResult->mGX. - * ComputeGlobalTransform must be called after the call to ComputeTRSLocal, there is a dependency. - * All transforms are taken into account, including: - * Transform = Translation * RotationOffset* RotationPivot* PreRotation * LocalRotation* PostRotation * RotationPivotInverse* ScalingOffset* ScalingPivot* LocalScaling* ScalingPivotInverse - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Calculate local transform of a node at the specified time and update the mLX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated local transform will be updated to pResult->mLX. - * ComputeLocalTransform must be called after the call to ComputeGlobalTransform, there is a dependency. - * The local transform matrix is calculated in this way: ParentGlobal.Inverse() * Global, all transforms such as pre/post rotation are taken into consideration. - * To get values of properties LclTranslation, LclRotaion and LclScaling at the specified time, please use ComputeTRSLocal. - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Check if the property has corresponding animation curve node on the specified animation layer. - * \param pProperty The property to check. - * \param pAnimLayer The animation layer to check on. - * \return \c true if pProperty has corresponding animation curve node on pAnimLayer, \c false otherwise. - */ - bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time on certain animation layer. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pLT To take the calculated value of LclTranslation. - * \param pLR To take the calculated value of LclRotation. - * \param pLS To take the calculated value of LclScaling. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pBlend if \c false, only animation on current layer will be taken into account, and pResult->mCurveNode will be updated accordingly. - if \c true, the value on this animation layer will be blended with current value of pLT, pLR and pLS. - * \remarks The usual usage of this function is to call it on the first animation layer with out blending, then call it repeatedly on other - * animation layers with blending to get the blended value of pLT, pLR and pLS of all animation layers. - */ - void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, const FbxTime& pTime, FbxAnimLayer* pLayer, bool pBlend); - - /** Blend value of a property on certain animation layer to pResult. - * \param pResult The blended value of the property. - * \param pResultSize The elements number of the property value. - * \param pProperty The property to be blended. - * \param pEvalState An auxiliary parameter, the NodeEvalState to get rotation order for eRotation type blending. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pType There are three blend types, eSimple, eRotation, eScaling - * \remarks The blended value will be kept in pResult. - */ - void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, const FbxTime& pTime, FbxAnimLayer* pLayer, EBlendType pType); - - /** Blends two arrays of values in a simple weighted linear blending way. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \see BlendMode - * \remarks The blended value will be kept in pResult. - */ - void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode); - - /** Blends two arrays of values representing rotations. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pRotAccuMode The rotation accumulation mode. - * \param pRotationOrder The rotation order to be used for blending. - * \remarks The blended value will be kept in pResult. And this blend should not be used with anything other than rotations. - * \see BlendMode, RotationAccumulationMode - */ - void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder); - - /** Blends two arrays of values representing scaling transforms. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pScaleAccuMode The scaling accumulation mode. - * \remarks The blended value will be kept in pResult.And this blend should not be used with anything other than scaling transform. - * \see BlendMode, ScaleAccumulationMode. - */ - void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) override; - void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) override; - -private: - double* mPropertyValues; - int mPropertySize; - - double* mCurveNodeEvalValues; - int mCurveNodeEvalSize; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h deleted file mode 100644 index 8a048c6..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalstate.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ - -#include - -#include -#include -#include - -#include - -class FbxTransform; -class FbxNodeEvalState; -class FbxPropertyEvalState; - -typedef FbxMap FbxNodeEvalStateMap; -typedef FbxMap FbxPropertyEvalStateMap; -typedef FbxMap FbxAnimLayerCurveNodeMap; -typedef FbxMap FbxPropertyCurveNodeMap; - -/** This class hold results from animation evaluations. To clear an evaluation state for re-use, it is possible to invalidate - * or to reset it. For the same scene with the same objects, invalidating an evaluation state is the quickest way to clear - * an evaluation state object for re-use because it only zeroes all the entries. A reset will delete all the entries. - * Unless the scene changes, for performance purposes it is recommended to invalidate evaluation states instead of resetting them. - * - * \internal - * \see FbxAnimEvaluator - */ -class FBXSDK_DLL FbxAnimEvalState -{ -public: - /** Get the time associated with this evaluation state. - * \return The time associated with this evaluation state. */ - FbxTime GetTime() const; - - /** Reset an evaluation state by deleting the cache it contains. This will remove all entries in the cache. */ - void Reset(); - - /** Start a new evaluation state frame by zeroing the cache it contains, and changing its associated time. All - * node and property entries will remain in the list, but their evaluation state will not be up-to-date. - * \param pTime The time at which the evaluation state should be set after the invalidation. */ - void Begin(const FbxTime& pTime); - - /** Invalidate a node evaluation state to force update on next evaluation. - * \param pNode The node that needs to be updated on next evaluation. */ - void Flush(FbxNode* pNode); - - /** Invalidate a property evaluation state to force update on next evaluation. - * \param pProperty The property that needs to be updated on next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Get node transform evaluation result from the evaluation state. - * \param pNode The node for which the value was stored. - * \return The global or local matrix transform for the specified node. */ - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode); - - /** Get a property evaluation result from the evaluation state. - * \param pProperty The property for which the value was stored. - * \return The result value that was stored. */ - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAnimEvalState(); - virtual ~FbxAnimEvalState(); - -private: - FbxTime mTime; - FbxNodeEvalStateMap mNodeMap; - FbxPropertyEvalStateMap mPropertyMap; - FbxPropertyCurveNodeMap mPropertyCurveNodeMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! This class serves as the base class for an evaluation state element. -class FBXSDK_DLL FbxEvalState -{ -public: - FbxEvalState() : mUpToDate(false){} - bool mUpToDate; //!< If \c true, the evaluation state element is up-to-date for the current evaluation time. -}; - -//! This class hold results for node evaluation. -class FBXSDK_DLL FbxNodeEvalState : public FbxEvalState -{ -public: - FbxNodeEvalState(FbxNode* pNode); - - FbxVector4 mLT; //!< Used to hold result value of LclTranslation property from node evaluation. - FbxVector4 mLR; //!< Used to hold result value of LclRotation property from node evaluation. - FbxVector4 mLS; //!< Used to hold result value of LclScaling property from node evaluation. - FbxAMatrix mLX; //!< Used to hold result local transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - FbxAMatrix mGX; //!< Used to hold result global transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - - /** mTransform is used to hold the corresponding FbxTransform of the node. - * This FbxTransform takes all transform-related info, including pivots, offsets, pre/post rotation, rotation order, limits, etc. - * The evaluation is actually done through the utility functions of FbxTransform. */ - FbxTransform* mTransform; -}; - -//! This class hold results for property evaluation. -class FBXSDK_DLL FbxPropertyEvalState : public FbxEvalState -{ -public: - FbxPropertyEvalState(FbxProperty& pProperty); - virtual ~FbxPropertyEvalState(); - - template inline T Get() const { T lValue; mValue->Get(&lValue, FbxTypeOf(lValue)); return lValue; } - template inline bool Set(const T& pValue){ return mValue->Set(&pValue, FbxTypeOf(pValue)); } - - FbxPropertyValue* mValue; -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h deleted file mode 100644 index de34461..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h +++ /dev/null @@ -1,205 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevaluator.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ - -#include - -#include -#include -#include - -#include - -/** The principal interface for animation evaluators. The animation evaluator is used to compute node transforms -* and property values at specific times during an animation. Evaluators simplify the process of computing transform -* matrices by taking into account all of the parameters, such as pre- and post-rotations. -* This class is abstract so that SDK users can implement their own evaluator if needed. The default evaluator used -* by the FBX SDK is a FbxAnimEvalClassic. The default evaluator can be queried with the function -* FbxScene::GetEvaluator(), and can be changed using FbxScene::SetEvaluator(). -* -* When working with scene nodes, the evaluator will always return an affine transform matrix that contains the -* translation, rotation and scale of that node. -* -* When working with object properties, the evaluator will always return a structure that can contain as many components -* as the property can have. For example, an RGB color property would return a structure containing 3 channels. The -* class FbxAnimCurveNode is used as a data container to store those values, because it can handle as many channels as -* needed, even if the property is not a real curve node . -* -* Below is a typical usage of the evaluator class to retrieve the global transform matrix of each node in a scene: -* \code -* //Here we assume the user already imported a scene... -* for( int i = 0, c = MyScene->GetMemberCount(FbxNode::ClassId); i < c; ++i ) -* { -* FbxNode* CurrentNode = MyScene->GetMember(FbxNode::ClassId, i); -* FbxAMatrix& NodeGlobalTransform = MyScene->GetEvaluator()->GetNodeGlobalTransform(CurrentNode); -* } -* -* //There is an equivalent call to retrieve a node's global transform, which is exactly the same as calling Scene->GetEvaluator() : -* FbxAMatrix& NodeGlobalTransform = CurrentNode->EvaluateGlobalTransform(); -* \endcode -* -* Another typical usage of the evaluator class, but this time to retrieve the value of an animated color property on a material: -* \code -* //Assuming the user imported a scene with objects and materials... -* FbxColor Color = MyMaterial->GetDiffuseColor()->EvaluateValue(); -* \endcode -* -* \note Note that all the methods to retrieve global/local matrices as well as property values returns references. -* This is important for performance purposes, to prevent an extra memory copy. -* \see FbxScene, FbxAnimEvalClassic, FbxAnimCurveNode */ -class FBXSDK_DLL FbxAnimEvaluator : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimEvaluator, FbxObject); - -public: - /** Returns a node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. */ - FbxAMatrix& GetNodeGlobalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns a node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). */ - FbxAMatrix& GetNodeLocalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalTranslation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalRotation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalScaling(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Get a property's value at the specified time using the template type provided. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ -#if defined(__GNUC__) && (__GNUC__ < 4) - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ FbxPropertyEvalState* s = GetPropertyEvalState(pProperty, pTime, pForceEval); return s->Get(); } -#else - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ return GetPropertyEvalState(pProperty, pTime, pForceEval)->Get(); } -#endif - - /** Get a property's value at the specified time. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. Use FbxPropertyValue::Get() to retrieve the value into a pointer location of your choice. */ - FbxPropertyValue& GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Validate if the given time value is within animation stack time span range. - * \param pTime The time value to validate. - * \return The new validated time, clamped by the animation stack time span range. - * \remarks If no animation stack are found, time zero is returned. This function is not used by the evaluator itself. */ - FbxTime ValidateTime(const FbxTime& pTime); - - /** Completely reset the evaluation state cache by deleting all entries. This reset automatically happens when changing the current context. */ - void Reset(); - - /** Clears the specified node evaluation state cache, so the next time the evaluation is called for this node it get refreshed. - * \param pNode The node that needs to be re-evaluated in next evaluation. */ - void Flush(FbxNode* pNode); - - /** Clears the specified property evaluation state cache, so the next time the evaluation is called for this property it get refreshed. - * \param pProperty The property that needs to be re-evaluated in next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Compute node local TRS from global transform. Doesn't change cached state for current time. - * \param[out] pRetLT Computed local translation. - * \param[out] pRetLR Computed local rotation. - * \param[out] pRetLS Computed local scaling. - * \param pNode The transform node to evaluate. - * \param pGX Global transformation state. - * \param pTime The time used for evaluate.If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. */ - void ComputeLocalTRSFromGlobal(FbxVector4& pRetLT, FbxVector4& pRetLR, FbxVector4& pRetLS, FbxNode* pNode, FbxAMatrix& pGX, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) = 0; - virtual void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) = 0; - - FbxAnimEvalState* GetDefaultEvalState(); - FbxAnimEvalState* GetEvalState(const FbxTime& pTime); - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget, bool pForceEval); - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval); - -private: - FbxAnimEvalState* mEvalState; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Evaluate the property at the specified time using the template type provided. -* \param pProperty The property to evaluate. -* \param pTime The time used for evaluate. -* \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. -* \return The property value at the specified time converted to the template type provided, if possible. -* \remark If the property type versus the template cannot be converted, the result is unknown. */ -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval) -{ - return pProperty.GetAnimationEvaluator()-> template GetPropertyValue(pProperty, pTime, pForceEval); -} - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h deleted file mode 100644 index 1f64ad9..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_ANIMATION_LAYER_H_ -#define _FBXSDK_SCENE_ANIMATION_LAYER_H_ - -#include - -#include - -#include - -class FbxAnimCurveNode; - -/** The animation layer is a collection of animation curve nodes. Its purpose is to store - * a variable number of FbxAnimCurveNode. The class provides different states flags (bool properties), - * an animatable weight, and the blending mode flag to indicate how the data on this layer is interacting - * with the data of the other layers during the evaluation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the weight factor. - * The weight factor is the percentage of influence this layer has during - * the evaluation. - * - * Default value is \c 100.0 - */ - FbxPropertyT Weight; - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** This property stores the blend mode. - * The blend mode is used to specify how this layer influences the animation evaluation. See the - * BlendMode enumeration for the description of the modes. - * - * Default value is \c eModeAdditive - */ - FbxPropertyT BlendMode; - - /** This property stores the rotation accumulation mode. - * This option indicates how the rotation curves on this layer combine with any preceding layers - * that share the same attributes. See the RotationAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eRotationByLayer - */ - FbxPropertyT RotationAccumulationMode; - - /** This property stores the scale accumulation mode. - * This option indicates how the scale curves on this layer combine with any preceding layers - * that share the same attributes. See the ScaleAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eScaleMultiply - */ - FbxPropertyT ScaleAccumulationMode; - - //! Reset this object properties to their default value. - void Reset(); - - /** - * \name BlendMode bypass functions - * This section provides methods to bypass the current layer blend mode by data type. - * When the state is \c true, the evaluators that are processing the layer will - * need to consider that, for the given data type, the blend mode is forced to be Overwrite. - * If the state is left to its default \c false value, then the layer blend mode applies. - * \remarks This section only supports the basic types defined in the fbxtypes.h header file. - */ - //@{ - - /** Set the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \param pState The new state of the bypass flag. - * \remarks If pType is eFbxTypeCount, then pState is applied to all the data types. - */ - void SetBlendModeBypass(EFbxType pType, bool pState); - - /** Get the current state of the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \return The current state of the flag for a valid pType value and \c false in any other case. - */ - bool GetBlendModeBypass(EFbxType pType); - - //@} - - - /** Blend mode type between animation layers. - */ - enum EBlendMode - { - eBlendAdditive, //! The layer "adds" its animation to layers that precede it in the stack and affect the same attributes. - eBlendOverride, //! The layer "overrides" the animation of any layer that shares the same attributes and precedes it in the stack. - eBlendOverridePassthrough /*! mBlendModeBypass; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_LAYER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h deleted file mode 100644 index c7d3dc2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimstack.h -#ifndef _FBXSDK_SCENE_ANIMATION_STACK_H_ -#define _FBXSDK_SCENE_ANIMATION_STACK_H_ - -#include - -#include -#include - -#include - -// these symbols are defined for backward compatibility -#define FBXSDK_TAKENODE_DEFAULT_NAME "Default" -#define FBXSDK_ROOTCURVE_DEFAULT_NAME "Defaults" - -class FbxTakeInfo; -class FbxThumbnail; -class FbxAnimEvaluator; - -/** The Animation stack is a collection of animation layers. The Fbx document can have one or - * more animation stacks. Each stack can be viewed as one "take" in the previous versions of the FBX SDK. - * The "stack" terminology comes from the fact that the object contains 1 to n animation layers that - * are evaluated according to their blending modes to produce a resulting animation for a given attribute. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimStack : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimStack, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores a description string of this animation stack. - * This string can be used to display, in a human readable format, information - * relative to this animation stack object. - * Default value is "". - * \remarks The applications using the FBX SDK are not required to manipulate this information. - */ - FbxPropertyT Description; - - /** This property stores the local time span "Start" time. - * This "start" time should be seen as a time marker. Typically it would represent the whole animation - * starting time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0. - */ - FbxPropertyT LocalStart; - - /** This property stores the local time span "Stop" time. - * This "stop" time should be seen as a time marker. Typically it would represent the whole animation - * ending time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT LocalStop; - - /** This property stores the reference time span "Start" time. - * This reference start time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStart; - - /** This property stores the reference time span "Stop" time. - * This reference stop time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStop; - - /** Reset the object time spans either to their default values or from the pTakeInfo structure, if provided. - * \param pTakeInfo The take info to be used during reset. - */ - void Reset(const FbxTakeInfo* pTakeInfo = NULL); - - /** - * \name Utility functions. - * - */ - //@{ - /** Get the LocalStart and LocalStop time properties as a FbxTimeSpan. - * \return The current local time span. - */ - FbxTimeSpan GetLocalTimeSpan() const; - - /** Set the LocalStart and LocalStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new local time span. - */ - void SetLocalTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Get the ReferenceStart and ReferenceStop time properties as a FbxTimeSpan. - * \return The current reference time span. - */ - FbxTimeSpan GetReferenceTimeSpan() const; - - /** Set the ReferenceStart and ReferenceStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new reference time span. - */ - void SetReferenceTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Bake all the animation layers on the base layer. - * This function will process all the properties on every animation layer and generate a re-sampled set of - * animation keys (representing the layers' evaluated result) on the base layer. Once this operation is completed - * successfully, all the layers (except the base one) are destroyed. Properties that are only defined on the base - * layer will remain unaffected by the re-sampling. The stack local timespan is updated with the overall animation range. - * - * \param pEvaluator The layer evaluator. This is the engine that evaluates the overall result of any given - * property according to the layers flags. - * \param pStart The start time of the re-sampling range. - * \param pStop The stop time of the re-sampling range. - * \param pPeriod The time increment for the re-sampling. - * \return \c true if the operation was successful and \c false in case of errors. - * \remarks If this AnimStack contains only one AnimLayer, the function will return false and do nothing. - */ - bool BakeLayers(FbxAnimEvaluator* pEvaluator, FbxTime pStart, FbxTime pStop, FbxTime pPeriod); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_STACK_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h b/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h deleted file mode 100644 index ceb008f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimutilities.h -#ifndef _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ -#define _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxMultiMap; -class FbxObject; -class FbxProperty; -class FbxScene; -class FbxIO; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; - -class FBXSDK_DLL FbxAnimUtilities -{ -public: - /** Inspects all the properties of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \return \c true if at least one property is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsAnimated(FbxObject* pObj); - - /** Inspects the specified property of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \param pPropertyName Name of the inspected property. - * \param pChannelName Name of the specific channel of the inspected property. - * \return \c true if the specified channel is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsChannelAnimated(FbxObject* pObj, const char* pPropertyName, const char* pChannelName = NULL); - - class FBXSDK_DLL FbxAnimSplitDef - { - public: - FbxString mName; - FbxTime mStart; - FbxTime mEnd; - - FbxAnimSplitDef() - { - mName = "unnamed"; - mStart = 0; - mEnd = 0; - } - - FbxAnimSplitDef(const FbxString& pName, FbxTime& pStart, FbxTime& pEnd) - { - mName = pName; - mStart = pStart; - mEnd = pEnd; - } - - FbxAnimSplitDef& operator =(const FbxAnimSplitDef& pRhs) - { - mName = pRhs.mName; - mStart = pRhs.mStart; - mEnd = pRhs.mEnd; - return *this; - } - } ; - - class FBXSDK_DLL CurveNodeIntfce - { - public: - // pData is a pointer to the private KFCurveNode - CurveNodeIntfce(void* pData); - ~CurveNodeIntfce(); - - FbxHandle GetHandle(); - - char* GetTimeWarpName() const; - CurveNodeIntfce GetTimeWarp(); - - CurveNodeIntfce GetLayer(int pId); - - int GetCount(); - void* GetHandle(unsigned int pId); - void* GetCurveHandle(int pId = -1); - void SetCurveHandle(void* pCurveHandle, int pId = -1); - CurveNodeIntfce FindRecursive(const char* pName); - - bool IsValid() { return mImp != NULL; } - CurveNodeIntfce& operator=(CurveNodeIntfce& lRhs) - { - mImp = lRhs.mImp; - return *this; - } - - bool operator==(CurveNodeIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - void* mImp; - }; - - class FBXSDK_DLL CurveIntfce - { - public: - // pData is a pointer to the private KFCurve - CurveIntfce(void* pData); - CurveIntfce(FbxAnimCurve* pAnimCurve); - ~CurveIntfce(); - - float GetValue(); - void SetValue(float pVal); - int KeyGetCount(); - - void* GetCurveHandle(); - void SetCurveHandle(void* pData); - - int GetPreExtrapolation(); - int GetPreExtrapolationCount(); - int GetPostExtrapolation(); - int GetPostExtrapolationCount(); - - - bool IsValid() { return mImp != NULL; } - CurveIntfce& operator=(CurveIntfce& lRhs) - { - mImp = lRhs.mImp; - mIsAnimCurveImp = lRhs.mIsAnimCurveImp; - return *this; - } - - bool operator==(CurveIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - - void* mImp; - bool mIsAnimCurveImp; - }; - - static int SplitAnimationIntoMultipleStacks(FbxScene* pScene, const FbxArray& pAnimSplitDefinitions, const FbxAnimStack* pSrcAnimStack, FbxArray& pDstStacks); - static void ShareAnimCurves(FbxProperty& pDstProperty, FbxProperty& pSrcProperty, FbxScene* pScene); - - // Encapsulate use of private animation data - static void SetTimeWarpSet(FbxMultiMap* pTWset); - - static CurveNodeIntfce CreateCurveNode(const char* pName); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject, CurveNodeIntfce& pParent, bool pOnlyDefaults = false); - static CurveNodeIntfce CreateTimeWarpNode(FbxAnimCurve* pAnimCurve, const char* pFalloffName); - - static CurveNodeIntfce GrabCurveNode(FbxAnimCurveNode* pCN); - static void RestrieveCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void StoreCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void ReleaseCurveNode(FbxAnimCurveNode* pCurveNode); - static void DestroyCurveNode(CurveNodeIntfce& pData); - static void DestroyCurve(CurveIntfce& pData); - - static void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, CurveNodeIntfce& pData, FbxMultiMap& pTimeWarpsKFCurveNodes); - static void MergeLayerAndTimeWarp(FbxObject* pObj, FbxAnimLayer* pAnimLayer); - - static void CopyFrom(FbxAnimCurve* pAC, CurveIntfce& pFC); - static bool CompareCurves(FbxAnimCurve* pAC1, FbxAnimCurve* pAC2); - - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, FbxAnimCurveDef::EInterpolationType pInterpolation, FbxAnimCurveDef::ETangentMode pTangentMode, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pCurve, FbxTime pPeriod, FbxTime pStart = FBXSDK_TIME_MINUS_INFINITE, FbxTime pStop = FBXSDK_TIME_INFINITE, bool pKeysOnFrame = false); -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h deleted file mode 100644 index 9e11021..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h +++ /dev/null @@ -1,971 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ - -#include - -#include -#include - -#include - -class FbxControlSet; - -/** \class FbxCharacterLink - * - * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains - * the transform matrix (offset) for the linked character's node. - */ -class FBXSDK_DLL FbxCharacterLink -{ -public: - /** \enum EType Character link type */ - enum EType - { - eCharacterLink, - eControlSetLink, - eControlSetEffector, - eControlSetEffectorAux - }; - - /** Default Constructor. */ - FbxCharacterLink(); - - /** Copy Constructor. */ - FbxCharacterLink(const FbxCharacterLink& pCharacterLink); - - /** Assignment operation - * \param pCharacterLink Another FbxCharacterLink object assigned to this one. - */ - FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink); - - /** Reset to default values. */ - void Reset(); - - FbxNode* mNode; //! The character's node in hierarchy linked to this character link. - FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention. - FbxVector4 mOffsetT; //! Get offset position of this character link. - FbxVector4 mOffsetR; //! Get offset rotation of this character link. - FbxVector4 mOffsetS; //! Get offset scale of this character link. - FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link - bool mHasRotSpace; //! \c true if this character link has a defined rotation space - FbxLimits mRLimits; //! Get the rotation limits of this character link - FbxVector4 mPreRotation; //! Get the PreRotation of this character link - FbxVector4 mPostRotation; //! Get the PostRotation of this character link - int mRotOrder; //! Get the rotation order of this character link - double mAxisLen; //! Get the axis length of this character link - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProperty mPropertyLink; - FbxProperty mPropertyOffsetT; - FbxProperty mPropertyOffsetR; - FbxProperty mPropertyOffsetS; - FbxProperty mPropertyParentOffsetR; - FbxProperty mPropertyTemplateName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton). - * This class contains all methods to setup an exported character or query information on an imported character. - * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet - * - * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node. - * For more information see FbxCharacterLink class documentation. - * - * \see FbxCharacterLink, FbxControlSet - */ -class FBXSDK_DLL FbxCharacter : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint); - -public: - /** \enum EInputType Character input type. - * - \e eInputActor Not supported. - * - \e eInputCharacter The character's input is another character. - * - \e eInputMarkerSet The character's input is a control rig. - * - \e eOutputMarkerSet Not supported. - * - \e eInputStancePose The character's input is the stance pose. - */ - enum EInputType - { - eInputActor, - eInputCharacter, - eInputMarkerSet, - eOutputMarkerSet, - eInputStancePose - }; - - /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */ - enum EGroupId - { - eGroupBase, - eGroupAuxiliary, - eGroupSpine, - eGroupRoll, - eGroupSpecial, - eGroupLeftHand, - eGroupRightHand, - eGroupProps, - eGroupGameModeParent, - eGroupNeck, - eGroupLeftFoot, - eGroupRightFoot, - eGroupFloorContact, - eGroupIdCount - }; - - /** \enum ENodeId Define ID for each character node. - */ - enum ENodeId - { - eHips, - eLeftHip, - eLeftKnee, - eLeftAnkle, - eLeftFoot, - eRightHip, - eRightKnee, - eRightAnkle, - eRightFoot, - eWaist, - eChest, - eLeftCollar, - eLeftShoulder, - eLeftElbow, - eLeftWrist, - eRightCollar, - eRightShoulder, - eRightElbow, - eRightWrist, - eNeck, - eHead, - eLeftHipRoll, - eLeftKneeRoll, - eRightHipRoll, - eRightKneeRoll, - eLeftShoulderRoll, - eLeftElbowRoll, - eRightShoulderRoll, - eRightElbowRoll, - eSpine2, - eSpine3, - eSpine4, - eSpine5, - eSpine6, - eSpine7, - eSpine8, - eSpine9, - eLeftThumbA, - eLeftThumbB, - eLeftThumbC, - eLeftIndexA, - eLeftIndexB, - eLeftIndexC, - eLeftMiddleA, - eLeftMiddleB, - eLeftMiddleC, - eLeftRingA, - eLeftRingB, - eLeftRingC, - eLeftPinkyA, - eLeftPinkyB, - eLeftPinkyC, - eRightThumbA, - eRightThumbB, - eRightThumbC, - eRightIndexA, - eRightIndexB, - eRightIndexC, - eRightMiddleA, - eRightMiddleB, - eRightMiddleC, - eRightRingA, - eRightRingB, - eRightRingC, - eRightPinkyA, - eRightPinkyB, - eRightPinkyC, - eReference, - eLeftFloor, - eRightFloor, - eHipsTranslation, - eProps0, - eProps1, - eProps2, - eProps3, - eProps4, - eGameModeParentLeftHipRoll, - eGameModeParentLeftKnee, - eGameModeParentLeftKneeRoll, - eGameModeParentRightHipRoll, - eGameModeParentRightKnee, - eGameModeParentRightKneeRoll, - eGameModeParentLeftShoulderRoll, - eGameModeParentLeftElbow, - eGameModeParentLeftElbowRoll, - eGameModeParentRightShoulderRoll, - eGameModeParentRightElbow, - eGameModeParentRightElbowRoll, - eLeftUpLegRoll, - eLeftLegRoll, - eRightUpLegRoll, - eRightLegRoll, - eLeftArmRoll, - eLeftForeArmRoll, - eRightArmRoll, - eRightForeArmRoll, - eLeftHandFloor, - eRightHandFloor, - eLeftHand, - eRightHand, - eNeck1, - eNeck2, - eNeck3, - eNeck4, - eNeck5, - eNeck6, - eNeck7, - eNeck8, - eNeck9, - eLeftInHandThumb, - eLeftThumbD, - eLeftInHandIndex, - eLeftIndexD, - eLeftInHandMiddle, - eLeftMiddleD, - eLeftInHandRing, - eLeftRingD, - eLeftInHandPinky, - eLeftPinkyD, - eLeftInHandExtraFinger, - eLeftExtraFingerA, - eLeftExtraFingerB, - eLeftExtraFingerC, - eLeftExtraFingerD, - eRightInHandThumb, - eRightThumbD, - eRightInHandIndex, - eRightIndexD, - eRightInHandMiddle, - eRightMiddleD, - eRightInHandRing, - eRightRingD, - eRightInHandPinky, - eRightPinkyD, - eRightInHandExtraFinger, - eRightExtraFingerA, - eRightExtraFingerB, - eRightExtraFingerC, - eRightExtraFingerD, - eLeftInFootThumb, - eLeftFootThumbA, - eLeftFootThumbB, - eLeftFootThumbC, - eLeftFootThumbD, - eLeftInFootIndex, - eLeftFootIndexA, - eLeftFootIndexB, - eLeftFootIndexC, - eLeftFootIndexD, - eLeftInFootMiddle, - eLeftFootMiddleA, - eLeftFootMiddleB, - eLeftFootMiddleC, - eLeftFootMiddleD, - eLeftInFootRing, - eLeftFootRingA, - eLeftFootRingB, - eLeftFootRingC, - eLeftFootRingD, - eLeftInFootPinky, - eLeftFootPinkyA, - eLeftFootPinkyB, - eLeftFootPinkyC, - eLeftFootPinkyD, - eLeftInFootExtraFinger, - eLeftFootExtraFingerA, - eLeftFootExtraFingerB, - eLeftFootExtraFingerC, - eLeftFootExtraFingerD, - eRightInFootThumb, - eRightFootThumbA, - eRightFootThumbB, - eRightFootThumbC, - eRightFootThumbD, - eRightInFootIndex, - eRightFootIndexA, - eRightFootIndexB, - eRightFootIndexC, - eRightFootIndexD, - eRightInFootMiddle, - eRightFootMiddleA, - eRightFootMiddleB, - eRightFootMiddleC, - eRightFootMiddleD, - eRightInFootRing, - eRightFootRingA, - eRightFootRingB, - eRightFootRingC, - eRightFootRingD, - eRightInFootPinky, - eRightFootPinkyA, - eRightFootPinkyB, - eRightFootPinkyC, - eRightFootPinkyD, - eRightInFootExtraFinger, - eRightFootExtraFingerA, - eRightFootExtraFingerB, - eRightFootExtraFingerC, - eRightFootExtraFingerD, - eLeftCollarExtra, - eRightCollarExtra, - eLeafLeftHipRoll1, - eLeafLeftKneeRoll1, - eLeafRightHipRoll1, - eLeafRightKneeRoll1, - eLeafLeftShoulderRoll1, - eLeafLeftElbowRoll1, - eLeafRightShoulderRoll1, - eLeafRightElbowRoll1, - eLeafLeftHipRoll2, - eLeafLeftKneeRoll2, - eLeafRightHipRoll2, - eLeafRightKneeRoll2, - eLeafLeftShoulderRoll2, - eLeafLeftElbowRoll2, - eLeafRightShoulderRoll2, - eLeafRightElbowRoll2, - eLeafLeftHipRoll3, - eLeafLeftKneeRoll3, - eLeafRightHipRoll3, - eLeafRightKneeRoll3, - eLeafLeftShoulderRoll3, - eLeafLeftElbowRoll3, - eLeafRightShoulderRoll3, - eLeafRightElbowRoll3, - eLeafLeftHipRoll4, - eLeafLeftKneeRoll4, - eLeafRightHipRoll4, - eLeafRightKneeRoll4, - eLeafLeftShoulderRoll4, - eLeafLeftElbowRoll4, - eLeafRightShoulderRoll4, - eLeafRightElbowRoll4, - eLeafLeftHipRoll5, - eLeafLeftKneeRoll5, - eLeafRightHipRoll5, - eLeafRightKneeRoll5, - eLeafLeftShoulderRoll5, - eLeafLeftElbowRoll5, - eLeafRightShoulderRoll5, - eLeafRightElbowRoll5, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - enum EOffAutoUser - { - eParamModeOff, - eParamModeAuto, - eParamModeUser - }; - - enum EAutoUser - { - eParamModeAuto2, - eParamModeUser2 - }; - - enum EPostureMode - { - ePostureBiped, - ePostureQuadriped, - ePostureCount - }; - - enum EFloorPivot - { - eFloorPivotAuto, - eFloorPivotAnkle, - eFloorPivotToes, - eFloorPivotCount - }; - - enum ERollExtractionMode - { - eRelativeRollExtraction, - eAbsoluteRollExtraction, - eRollExtractionTypeCount - }; - - enum EHipsTranslationMode - { - eHipsTranslationWorldRigid, - eHipsTranslationBodyRigid, - eHipsTranslationTypeCount - }; - - enum EFootContactType - { - eFootTypeNormal, - eFootTypeAnkle, - eFootTypeToeBase, - eFootTypeHoof, - eFootContactModeCount - }; - - enum EHandContactType - { - eHandTypeNormal, - eHandTypeWrist, - eHandTypeFingerBase, - eHandTypeHoof, - eHandContactModeCount - }; - - enum EFingerContactMode - { - eFingerContactModeSticky, - eFingerContactModeSpread, - eFingerContactModeStickySpread, - eFingerContactModeCount - }; - - enum EContactBehaviour - { - eContactNeverSync, - eContactSyncOnKey, - eContactAlwaysSync, - eContactBehaviorCount - }; - - enum EPropertyUnit - { - ePropertyNoUnit, - ePropertyPercent, - ePropertySecond, - ePropertyCentimeter, - ePropertyDegree, - ePropertyEnum, - ePropertyReal - }; - - enum EErrorCode - { - eInternalError, - eErrorCount - }; - - /** Reset to default values. - * - Input type will be set to eInputStancePose. - * - Input object will be set to NULL. - * - Each Character link will be reset. - * - The control set will be reset. - */ - void Reset(); - - /** Set input type and index. - * \param pInputType Input type. - * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL. - */ - void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL); - - //! Get input type. - EInputType GetInputType() const; - - /** Get input actor or character. - * \return Pointer or \c Null, depending on the input type. - * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter. - * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter. - */ - FbxObject* GetInputObject() const; - - /** Associate a character link to a given character node ID. If a character link already exists for this character node ID, - * the character link will be removed. - * \param pCharacterNodeId Character node ID. - * \param pCharacterLink Character link. - * \param pUpdateObjectList Set to \c true to update the object list (default value). - * \return \c true if successful, \c false otherwise. - */ - bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true); - - /** Get a character link associated with a given character node ID. - * \param pCharacterNodeId ID of character node requested. - * \param pCharacterLink Optional pointer to receive the character link if function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const; - - /** Get control set associated with the character. - * \return Return the control set associated with the character. - */ - FbxControlSet& GetControlSet() const; - - /** Get number of elements in a given character group. - * \param pCharacterGroupId Character group ID. - * \return The number of elements in the pCharacterGroupId character group. - */ - static int GetCharacterGroupCount(EGroupId pCharacterGroupId); - - /** Get character node ID of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node ID. - */ - static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex); - - - /** Get character node name of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node name. - */ - static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Get character node version of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node version. - */ - static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Find the character group index associated with a given character node name. - * \param pName Character node name. - * \param pForceGroupId Set to \c true to force the character group ID. - * \param pCharacterGroupId Receives character group ID. - * \param pIndex Receives character index ID. - * \return \c true if successful, otherwise \c false. - */ - static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node group and index of a given character node ID. - * \param pCharacterNodeId Character node ID. - * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter - * \param pIndex if the Character node ID is found, the method returns the index through this parameter - * \remarks Only works for a character node ID that is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node version of a given character node ID. - * \param pCharacterNodeId Character node ID to get version. - * \param pVersion if the node ID is found, the method returns the version through this parameter - * \remarks Only works for a character node ID is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion); - - /** Get character node name associated with a given character node ID. - * \param pCharacterNodeId Character node ID to get name. - * \param pName if the node ID is found, the method returns the node name through this parameter - * Since the Pointer points to internal data, it is not necessary to allocate a string buffer - * before calling this function. - * \return \c true if a name exists for the given node ID. - */ - static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName); - - /** Get the character node ID associated with a given character node name. - * \param pName Character node name to get node ID. - * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter - * \return \c true if a node ID exists for the given node name. - */ - static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId); - - // FbxCharacter Properties - FbxPropertyT PullIterationCount; - FbxPropertyT Posture; - FbxPropertyT ForceActorSpace; - FbxPropertyT ScaleCompensation; - FbxPropertyT ScaleCompensationMode; - FbxPropertyT HipsHeightCompensation; - FbxPropertyT HipsHeightCompensationMode; - FbxPropertyT AnkleHeightCompensation; - FbxPropertyT AnkleHeightCompensationMode; - FbxPropertyT AnkleProximityCompensation; - FbxPropertyT AnkleProximityCompensationMode; - FbxPropertyT MassCenterCompensation; - FbxPropertyT ApplyLimits; - FbxPropertyT ChestReduction; - FbxPropertyT CollarReduction; - FbxPropertyT NeckReduction; - FbxPropertyT HeadReduction; - FbxPropertyT ReachActorLeftAnkle; - FbxPropertyT ReachActorRightAnkle; - FbxPropertyT ReachActorLeftKnee; - FbxPropertyT ReachActorRightKnee; - FbxPropertyT ReachActorChest; - FbxPropertyT ReachActorHead; - FbxPropertyT ReachActorLeftWrist; - FbxPropertyT ReachActorRightWrist; - FbxPropertyT ReachActorLeftElbow; - FbxPropertyT ReachActorRightElbow; - FbxPropertyT ReachActorLeftFingerBase; - FbxPropertyT ReachActorRightFingerBase; - FbxPropertyT ReachActorLeftToesBase; - FbxPropertyT ReachActorRightToesBase; - FbxPropertyT ReachActorLeftFingerBaseRotation; - FbxPropertyT ReachActorRightFingerBaseRotation; - FbxPropertyT ReachActorLeftToesBaseRotation; - FbxPropertyT ReachActorRightToesBaseRotation; - FbxPropertyT ReachActorLeftAnkleRotation; - FbxPropertyT ReachActorRightAnkleRotation; - FbxPropertyT ReachActorHeadRotation; - FbxPropertyT ReachActorLeftWristRotation; - FbxPropertyT ReachActorRightWristRotation; - FbxPropertyT ReachActorChestRotation; - FbxPropertyT ReachActorLowerChestRotation; - FbxPropertyT HipsTOffset; - FbxPropertyT ChestTOffset; - FbxPropertyT RollExtractionMode; - FbxPropertyT LeftUpLegRoll; - FbxPropertyT LeftUpLegRollMode; - FbxPropertyT LeftLegRoll; - FbxPropertyT LeftLegRollMode; - FbxPropertyT RightUpLegRoll; - FbxPropertyT RightUpLegRollMode; - FbxPropertyT RightLegRoll; - FbxPropertyT RightLegRollMode; - FbxPropertyT LeftArmRoll; - FbxPropertyT LeftArmRollMode; - FbxPropertyT LeftForeArmRoll; - FbxPropertyT LeftForeArmRollMode; - FbxPropertyT RightArmRoll; - FbxPropertyT RightArmRollMode; - FbxPropertyT RightForeArmRoll; - FbxPropertyT RightForeArmRollMode; - FbxPropertyT LeftUpLegRollEx; - FbxPropertyT LeftUpLegRollExMode; - FbxPropertyT LeftLegRollEx; - FbxPropertyT LeftLegRollExMode; - FbxPropertyT RightUpLegRollEx; - FbxPropertyT RightUpLegRollExMode; - FbxPropertyT RightLegRollEx; - FbxPropertyT RightLegRollExMode; - FbxPropertyT LeftArmRollEx; - FbxPropertyT LeftArmRollExMode; - FbxPropertyT LeftForeArmRollEx; - FbxPropertyT LeftForeArmRollExMode; - FbxPropertyT RightArmRollEx; - FbxPropertyT RightArmRollExMode; - FbxPropertyT RightForeArmExRoll; - FbxPropertyT RightForeArmRollExMode; - FbxPropertyT ContactBehaviour; - FbxPropertyT FootFloorContact; - FbxPropertyT FootAutomaticToes; - FbxPropertyT FootFloorPivot; - FbxPropertyT FootBottomToAnkle; - FbxPropertyT FootBackToAnkle; - FbxPropertyT FootMiddleToAnkle; - FbxPropertyT FootFrontToMiddle; - FbxPropertyT FootInToAnkle; - FbxPropertyT FootOutToAnkle; - FbxPropertyT FootContactSize; - FbxPropertyT FootFingerContact; - FbxPropertyT FootContactType; - FbxPropertyT FootFingerContactMode; - FbxPropertyT FootContactStiffness; - FbxPropertyT FootFingerContactRollStiffness; - FbxPropertyT HandFloorContact; - FbxPropertyT HandAutomaticFingers; - FbxPropertyT HandFloorPivot; - FbxPropertyT HandBottomToWrist; - FbxPropertyT HandBackToWrist; - FbxPropertyT HandMiddleToWrist; - FbxPropertyT HandFrontToMiddle; - FbxPropertyT HandInToWrist; - FbxPropertyT HandOutToWrist; - FbxPropertyT HandContactSize; - FbxPropertyT HandFingerContact; - FbxPropertyT HandContactType; - FbxPropertyT HandFingerContactMode; - FbxPropertyT HandContactStiffness; - FbxPropertyT HandFingerContactRollStiffness; - FbxPropertyT LeftHandThumbTip; - FbxPropertyT LeftHandIndexTip; - FbxPropertyT LeftHandMiddleTip; - FbxPropertyT LeftHandRingTip; - FbxPropertyT LeftHandPinkyTip; - FbxPropertyT LeftHandExtraFingerTip; - FbxPropertyT RightHandThumbTip; - FbxPropertyT RightHandIndexTip; - FbxPropertyT RightHandMiddleTip; - FbxPropertyT RightHandRingTip; - FbxPropertyT RightHandPinkyTip; - FbxPropertyT RightHandExtraFingerTip; - FbxPropertyT LeftFootThumbTip; - FbxPropertyT LeftFootIndexTip; - FbxPropertyT LeftFootMiddleTip; - FbxPropertyT LeftFootRingTip; - FbxPropertyT LeftFootPinkyTip; - FbxPropertyT LeftFootExtraFingerTip; - FbxPropertyT RightFootThumbTip; - FbxPropertyT RightFootIndexTip; - FbxPropertyT RightFootMiddleTip; - FbxPropertyT RightFootRingTip; - FbxPropertyT RightFootPinkyTip; - FbxPropertyT RightFootExtraFingerTip; - FbxPropertyT FingerSolving; - FbxPropertyT CtrlPullLeftToeBase; - FbxPropertyT CtrlPullLeftFoot; - FbxPropertyT CtrlPullLeftKnee; - FbxPropertyT CtrlPullRightToeBase; - FbxPropertyT CtrlPullRightFoot; - FbxPropertyT CtrlPullRightKnee; - FbxPropertyT CtrlPullLeftFingerBase; - FbxPropertyT CtrlPullLeftHand; - FbxPropertyT CtrlPullLeftElbow; - FbxPropertyT CtrlPullRightFingerBase; - FbxPropertyT CtrlPullRightHand; - FbxPropertyT CtrlPullRightElbow; - FbxPropertyT CtrlChestPullLeftHand; - FbxPropertyT CtrlChestPullRightHand; - FbxPropertyT CtrlPullHead; - FbxPropertyT CtrlResistHipsPosition; - FbxPropertyT CtrlEnforceGravity; - FbxPropertyT CtrlResistHipsOrientation; - FbxPropertyT CtrlResistChestPosition; - FbxPropertyT CtrlResistChestOrientation; - FbxPropertyT CtrlResistLeftCollar; - FbxPropertyT CtrlResistRightCollar; - FbxPropertyT CtrlResistLeftKnee; - FbxPropertyT CtrlResistMaximumExtensionLeftKnee; - FbxPropertyT CtrlResistCompressionFactorLeftKnee; - FbxPropertyT CtrlResistRightKnee; - FbxPropertyT CtrlResistMaximumExtensionRightKnee; - FbxPropertyT CtrlResistCompressionFactorRightKnee; - FbxPropertyT CtrlResistLeftElbow; - FbxPropertyT CtrlResistMaximumExtensionLeftElbow; - FbxPropertyT CtrlResistCompressionFactorLeftElbow; - FbxPropertyT CtrlResistRightElbow; - FbxPropertyT CtrlResistMaximumExtensionRightElbow; - FbxPropertyT CtrlResistCompressionFactorRightElbow; - FbxPropertyT CtrlSpineStiffness; - FbxPropertyT CtrlNeckStiffness; - FbxPropertyT MirrorMode; - FbxPropertyT ShoulderCorrection; - FbxPropertyT LeftKneeKillPitch; - FbxPropertyT RightKneeKillPitch; - FbxPropertyT LeftElbowKillPitch; - FbxPropertyT RightElbowKillPitch; - FbxPropertyT HipsTranslationMode; - FbxPropertyT WriteReference; - FbxPropertyT SyncMode; - FbxPropertyT Damping; - FbxPropertyT OrientationDamping; - FbxPropertyT OrientationDampingMode; - FbxPropertyT DisplacementDamping; - FbxPropertyT DisplacementDampingMode; - FbxPropertyT DisplacementMemory; - FbxPropertyT DisplacementMemoryMode; - FbxPropertyT HipsDisplacementDamping; - FbxPropertyT HipsDisplacementDampingMode; - FbxPropertyT AnkleDisplacementDamping; - FbxPropertyT AnkleDisplacementDampingMode; - FbxPropertyT WristDisplacementDamping; - FbxPropertyT WristDisplacementDampingMode; - FbxPropertyT Stabilization; - FbxPropertyT AnkleStabilizationTime; - FbxPropertyT AnkleStabilizationTimeMode; - FbxPropertyT AnkleStabilizationPerimeter; - FbxPropertyT AnkleStabilizationPerimeterMode; - FbxPropertyT AnkleStabilizationAngularPerimeter; - FbxPropertyT AnkleStabilizationAngularPerimeterMode; - FbxPropertyT AnkleStabilizationFloorProximity; - FbxPropertyT AnkleStabilizationFloorProximityMode; - FbxPropertyT AnkleStabilizationDamping; - FbxPropertyT AnkleStabilizationDampingMode; - FbxPropertyT AnkleStabilizationRecoveryTime; - FbxPropertyT AnkleStabilizationRecoveryTimeMode; - FbxPropertyT SourceObject; - FbxPropertyT DestinationObject; - FbxPropertyT Actor; - FbxPropertyT Character; - FbxPropertyT ControlSet; - FbxPropertyT HikVersion; - FbxPropertyT Characterize; - FbxPropertyT LockXForm; - FbxPropertyT LockPick; - - // HIK 4.6 new properties - FbxPropertyT RealisticShoulder; - FbxPropertyT CollarStiffnessX; - FbxPropertyT CollarStiffnessY; - FbxPropertyT CollarStiffnessZ; - FbxPropertyT ExtraCollarRatio; - - FbxPropertyT LeftLegMaxExtensionAngle; - FbxPropertyT RightLegMaxExtensionAngle; - FbxPropertyT LeftArmMaxExtensionAngle; - FbxPropertyT RightArmMaxExtensionAngle; - - FbxPropertyT StretchStartArmsAndLegs; - FbxPropertyT StretchStopArmsAndLegs; - FbxPropertyT SnSScaleArmsAndLegs; - FbxPropertyT SnSReachLeftWrist; - FbxPropertyT SnSReachRightWrist; - FbxPropertyT SnSReachLeftAnkle; - FbxPropertyT SnSReachRightAnkle; - FbxPropertyT SnSScaleSpine; - FbxPropertyT SnSScaleSpineChildren; - FbxPropertyT SnSSpineFreedom; - FbxPropertyT SnSReachChestEnd; - FbxPropertyT SnSScaleNeck; - FbxPropertyT SnSNeckFreedom; - FbxPropertyT SnSReachHead; - - // HIK 2016.5.0 roll properties - // Leaf roll properties - FbxPropertyT LeafLeftUpLegRoll1; - FbxPropertyT LeafLeftUpLegRoll1Mode; - FbxPropertyT LeafLeftLegRoll1; - FbxPropertyT LeafLeftLegRoll1Mode; - FbxPropertyT LeafRightUpLegRoll1; - FbxPropertyT LeafRightUpLegRoll1Mode; - FbxPropertyT LeafRightLegRoll1; - FbxPropertyT LeafRightLegRoll1Mode; - FbxPropertyT LeafLeftArmRoll1; - FbxPropertyT LeafLeftArmRoll1Mode; - FbxPropertyT LeafLeftForeArmRoll1; - FbxPropertyT LeafLeftForeArmRoll1Mode; - FbxPropertyT LeafRightArmRoll1; - FbxPropertyT LeafRightArmRoll1Mode; - FbxPropertyT LeafRightForeArmRoll1; - FbxPropertyT LeafRightForeArmRoll1Mode; - FbxPropertyT LeafLeftUpLegRoll2; - FbxPropertyT LeafLeftUpLegRoll2Mode; - FbxPropertyT LeafLeftLegRoll2; - FbxPropertyT LeafLeftLegRoll2Mode; - FbxPropertyT LeafRightUpLegRoll2; - FbxPropertyT LeafRightUpLegRoll2Mode; - FbxPropertyT LeafRightLegRoll2; - FbxPropertyT LeafRightLegRoll2Mode; - FbxPropertyT LeafLeftArmRoll2; - FbxPropertyT LeafLeftArmRoll2Mode; - FbxPropertyT LeafLeftForeArmRoll2; - FbxPropertyT LeafLeftForeArmRoll2Mode; - FbxPropertyT LeafRightArmRoll2; - FbxPropertyT LeafRightArmRoll2Mode; - FbxPropertyT LeafRightForeArmRoll2; - FbxPropertyT LeafRightForeArmRoll2Mode; - FbxPropertyT LeafLeftUpLegRoll3; - FbxPropertyT LeafLeftUpLegRoll3Mode; - FbxPropertyT LeafLeftLegRoll3; - FbxPropertyT LeafLeftLegRoll3Mode; - FbxPropertyT LeafRightUpLegRoll3; - FbxPropertyT LeafRightUpLegRoll3Mode; - FbxPropertyT LeafRightLegRoll3; - FbxPropertyT LeafRightLegRoll3Mode; - FbxPropertyT LeafLeftArmRoll3; - FbxPropertyT LeafLeftArmRoll3Mode; - FbxPropertyT LeafLeftForeArmRoll3; - FbxPropertyT LeafLeftForeArmRoll3Mode; - FbxPropertyT LeafRightArmRoll3; - FbxPropertyT LeafRightArmRoll3Mode; - FbxPropertyT LeafRightForeArmRoll3; - FbxPropertyT LeafRightForeArmRoll3Mode; - FbxPropertyT LeafLeftUpLegRoll4; - FbxPropertyT LeafLeftUpLegRoll4Mode; - FbxPropertyT LeafLeftLegRoll4; - FbxPropertyT LeafLeftLegRoll4Mode; - FbxPropertyT LeafRightUpLegRoll4; - FbxPropertyT LeafRightUpLegRoll4Mode; - FbxPropertyT LeafRightLegRoll4; - FbxPropertyT LeafRightLegRoll4Mode; - FbxPropertyT LeafLeftArmRoll4; - FbxPropertyT LeafLeftArmRoll4Mode; - FbxPropertyT LeafLeftForeArmRoll4; - FbxPropertyT LeafLeftForeArmRoll4Mode; - FbxPropertyT LeafRightArmRoll4; - FbxPropertyT LeafRightArmRoll4Mode; - FbxPropertyT LeafRightForeArmRoll4; - FbxPropertyT LeafRightForeArmRoll4Mode; - FbxPropertyT LeafLeftUpLegRoll5; - FbxPropertyT LeafLeftUpLegRoll5Mode; - FbxPropertyT LeafLeftLegRoll5; - FbxPropertyT LeafLeftLegRoll5Mode; - FbxPropertyT LeafRightUpLegRoll5; - FbxPropertyT LeafRightUpLegRoll5Mode; - FbxPropertyT LeafRightLegRoll5; - FbxPropertyT LeafRightLegRoll5Mode; - FbxPropertyT LeafLeftArmRoll5; - FbxPropertyT LeafLeftArmRoll5Mode; - FbxPropertyT LeafLeftForeArmRoll5; - FbxPropertyT LeafLeftForeArmRoll5Mode; - FbxPropertyT LeafRightArmRoll5; - FbxPropertyT LeafRightArmRoll5Mode; - FbxPropertyT LeafRightForeArmRoll5; - FbxPropertyT LeafRightForeArmRoll5Mode; - // Full limb roll extraction - FbxPropertyT LeftLegFullRollExtraction; - FbxPropertyT RightLegFullRollExtraction; - FbxPropertyT LeftArmFullRollExtraction; - FbxPropertyT RightArmFullRollExtraction; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetVersion(int pVersion){ mCharacterVersion = pVersion; } - int Version(){ return mCharacterVersion; } - void SetValuesFromLegacyLoad(); - void SetValuesForLegacySave(int pVersion); - void RestoreValuesFromLegacySave(); - bool IsLegacy(); - - int GetPropertyInfoCount(); - void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const; - void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const; - - FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId); - - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxObject& Copy(const FbxObject& pObject) override; - EType GetConstraintType() const override; - FbxStringList GetTypeFlags() const override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - -private: - bool InverseProperty(FbxProperty& pProp); - - int mCharacterVersion; - FbxCharacterLink mCharacterLink[eNodeIdCount]; - FbxControlSet* mControlSet; - - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h deleted file mode 100644 index d8a5546..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacternodename.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ - -#include - -#include - -#define Character_Hips "Hips" -#define Character_LeftUpLeg "LeftUpLeg" -#define Character_LeftLeg "LeftLeg" -#define Character_LeftFoot "LeftFoot" -#define Character_RightUpLeg "RightUpLeg" -#define Character_RightLeg "RightLeg" -#define Character_RightFoot "RightFoot" -#define Character_Spine "Spine" -#define Character_LeftArm "LeftArm" -#define Character_LeftForeArm "LeftForeArm" -#define Character_LeftHand "LeftHand" -#define Character_RightArm "RightArm" -#define Character_RightForeArm "RightForeArm" -#define Character_RightHand "RightHand" -#define Character_Head "Head" -#define Character_LeftToeBase "LeftToeBase" -#define Character_RightToeBase "RightToeBase" -#define Character_LeftShoulder "LeftShoulder" -#define Character_RightShoulder "RightShoulder" -#define Character_LeftShoulderExtra "LeftShoulderExtra" -#define Character_RightShoulderExtra "RightShoulderExtra" -#define Character_Neck "Neck" -#define Character_LeftFingerBase "LeftFingerBase" -#define Character_RightFingerBase "RightFingerBase" -#define Character_Spine1 "Spine1" -#define Character_Spine2 "Spine2" -#define Character_Spine3 "Spine3" -#define Character_Spine4 "Spine4" -#define Character_Spine5 "Spine5" -#define Character_Spine6 "Spine6" -#define Character_Spine7 "Spine7" -#define Character_Spine8 "Spine8" -#define Character_Spine9 "Spine9" -#define Character_Neck1 "Neck1" -#define Character_Neck2 "Neck2" -#define Character_Neck3 "Neck3" -#define Character_Neck4 "Neck4" -#define Character_Neck5 "Neck5" -#define Character_Neck6 "Neck6" -#define Character_Neck7 "Neck7" -#define Character_Neck8 "Neck8" -#define Character_Neck9 "Neck9" -#define Character_LeftUpLegRoll "LeftUpLegRoll" -#define Character_LeftLegRoll "LeftLegRoll" -#define Character_RightUpLegRoll "RightUpLegRoll" -#define Character_RightLegRoll "RightLegRoll" -#define Character_LeftArmRoll "LeftArmRoll" -#define Character_LeftForeArmRoll "LeftForeArmRoll" -#define Character_RightArmRoll "RightArmRoll" -#define Character_RightForeArmRoll "RightForeArmRoll" -#define Character_LeftUpLegRollEx "LeftUpLegRollEx" -#define Character_LeftLegRollEx "LeftLegRollEx" -#define Character_RightUpLegRollEx "RightUpLegRollEx" -#define Character_RightLegRollEx "RightLegRollEx" -#define Character_LeftArmRollEx "LeftArmRollEx" -#define Character_LeftForearmRollEx "LeftForeArmRollEx" -#define Character_RightArmRollEx "RightArmRollEx" -#define Character_RightForearmRollEx "RightForeArmRollEx" -#define Character_LeafLeftUpLegRoll1 "LeafLeftUpLegRoll1" -#define Character_LeafLeftLegRoll1 "LeafLeftLegRoll1" -#define Character_LeafRightUpLegRoll1 "LeafRightUpLegRoll1" -#define Character_LeafRightLegRoll1 "LeafRightLegRoll1" -#define Character_LeafLeftArmRoll1 "LeafLeftArmRoll1" -#define Character_LeafLeftForeArmRoll1 "LeafLeftForeArmRoll1" -#define Character_LeafRightArmRoll1 "LeafRightArmRoll1" -#define Character_LeafRightForeArmRoll1 "LeafRightForeArmRoll1" -#define Character_LeafLeftUpLegRoll2 "LeafLeftUpLegRoll2" -#define Character_LeafLeftLegRoll2 "LeafLeftLegRoll2" -#define Character_LeafRightUpLegRoll2 "LeafRightUpLegRoll2" -#define Character_LeafRightLegRoll2 "LeafRightLegRoll2" -#define Character_LeafLeftArmRoll2 "LeafLeftArmRoll2" -#define Character_LeafLeftForeArmRoll2 "LeafLeftForeArmRoll2" -#define Character_LeafRightArmRoll2 "LeafRightArmRoll2" -#define Character_LeafRightForeArmRoll2 "LeafRightForeArmRoll2" -#define Character_LeafLeftUpLegRoll3 "LeafLeftUpLegRoll3" -#define Character_LeafLeftLegRoll3 "LeafLeftLegRoll3" -#define Character_LeafRightUpLegRoll3 "LeafRightUpLegRoll3" -#define Character_LeafRightLegRoll3 "LeafRightLegRoll3" -#define Character_LeafLeftArmRoll3 "LeafLeftArmRoll3" -#define Character_LeafLeftForeArmRoll3 "LeafLeftForeArmRoll3" -#define Character_LeafRightArmRoll3 "LeafRightArmRoll3" -#define Character_LeafRightForeArmRoll3 "LeafRightForeArmRoll3" -#define Character_LeafLeftUpLegRoll4 "LeafLeftUpLegRoll4" -#define Character_LeafLeftLegRoll4 "LeafLeftLegRoll4" -#define Character_LeafRightUpLegRoll4 "LeafRightUpLegRoll4" -#define Character_LeafRightLegRoll4 "LeafRightLegRoll4" -#define Character_LeafLeftArmRoll4 "LeafLeftArmRoll4" -#define Character_LeafLeftForeArmRoll4 "LeafLeftForeArmRoll4" -#define Character_LeafRightArmRoll4 "LeafRightArmRoll4" -#define Character_LeafRightForeArmRoll4 "LeafRightForeArmRoll4" -#define Character_LeafLeftUpLegRoll5 "LeafLeftUpLegRoll5" -#define Character_LeafLeftLegRoll5 "LeafLeftLegRoll5" -#define Character_LeafRightUpLegRoll5 "LeafRightUpLegRoll5" -#define Character_LeafRightLegRoll5 "LeafRightLegRoll5" -#define Character_LeafLeftArmRoll5 "LeafLeftArmRoll5" -#define Character_LeafLeftForeArmRoll5 "LeafLeftForeArmRoll5" -#define Character_LeafRightArmRoll5 "LeafRightArmRoll5" -#define Character_LeafRightForeArmRoll5 "LeafRightForeArmRoll5" -#define Character_Props0 "Props0" -#define Character_Props1 "Props1" -#define Character_Props2 "Props2" -#define Character_Props3 "Props3" -#define Character_Props4 "Props4" -#define Character_LeftHandThumb1 "LeftHandThumb1" -#define Character_LeftHandThumb2 "LeftHandThumb2" -#define Character_LeftHandThumb3 "LeftHandThumb3" -#define Character_LeftHandThumb4 "LeftHandThumb4" -#define Character_LeftHandIndex1 "LeftHandIndex1" -#define Character_LeftHandIndex2 "LeftHandIndex2" -#define Character_LeftHandIndex3 "LeftHandIndex3" -#define Character_LeftHandIndex4 "LeftHandIndex4" -#define Character_LeftHandMiddle1 "LeftHandMiddle1" -#define Character_LeftHandMiddle2 "LeftHandMiddle2" -#define Character_LeftHandMiddle3 "LeftHandMiddle3" -#define Character_LeftHandMiddle4 "LeftHandMiddle4" -#define Character_LeftHandRing1 "LeftHandRing1" -#define Character_LeftHandRing2 "LeftHandRing2" -#define Character_LeftHandRing3 "LeftHandRing3" -#define Character_LeftHandRing4 "LeftHandRing4" -#define Character_LeftHandPinky1 "LeftHandPinky1" -#define Character_LeftHandPinky2 "LeftHandPinky2" -#define Character_LeftHandPinky3 "LeftHandPinky3" -#define Character_LeftHandPinky4 "LeftHandPinky4" -#define Character_LeftHandExtraFinger1 "LeftHandExtraFinger1" -#define Character_LeftHandExtraFinger2 "LeftHandExtraFinger2" -#define Character_LeftHandExtraFinger3 "LeftHandExtraFinger3" -#define Character_LeftHandExtraFinger4 "LeftHandExtraFinger4" -#define Character_RightHandThumb1 "RightHandThumb1" -#define Character_RightHandThumb2 "RightHandThumb2" -#define Character_RightHandThumb3 "RightHandThumb3" -#define Character_RightHandThumb4 "RightHandThumb4" -#define Character_RightHandIndex1 "RightHandIndex1" -#define Character_RightHandIndex2 "RightHandIndex2" -#define Character_RightHandIndex3 "RightHandIndex3" -#define Character_RightHandIndex4 "RightHandIndex4" -#define Character_RightHandMiddle1 "RightHandMiddle1" -#define Character_RightHandMiddle2 "RightHandMiddle2" -#define Character_RightHandMiddle3 "RightHandMiddle3" -#define Character_RightHandMiddle4 "RightHandMiddle4" -#define Character_RightHandRing1 "RightHandRing1" -#define Character_RightHandRing2 "RightHandRing2" -#define Character_RightHandRing3 "RightHandRing3" -#define Character_RightHandRing4 "RightHandRing4" -#define Character_RightHandPinky1 "RightHandPinky1" -#define Character_RightHandPinky2 "RightHandPinky2" -#define Character_RightHandPinky3 "RightHandPinky3" -#define Character_RightHandPinky4 "RightHandPinky4" -#define Character_RightHandExtraFinger1 "RightHandExtraFinger1" -#define Character_RightHandExtraFinger2 "RightHandExtraFinger2" -#define Character_RightHandExtraFinger3 "RightHandExtraFinger3" -#define Character_RightHandExtraFinger4 "RightHandExtraFinger4" -#define Character_LeftFootThumb1 "LeftFootThumb1" -#define Character_LeftFootThumb2 "LeftFootThumb2" -#define Character_LeftFootThumb3 "LeftFootThumb3" -#define Character_LeftFootThumb4 "LeftFootThumb4" -#define Character_LeftFootIndex1 "LeftFootIndex1" -#define Character_LeftFootIndex2 "LeftFootIndex2" -#define Character_LeftFootIndex3 "LeftFootIndex3" -#define Character_LeftFootIndex4 "LeftFootIndex4" -#define Character_LeftFootMiddle1 "LeftFootMiddle1" -#define Character_LeftFootMiddle2 "LeftFootMiddle2" -#define Character_LeftFootMiddle3 "LeftFootMiddle3" -#define Character_LeftFootMiddle4 "LeftFootMiddle4" -#define Character_LeftFootRing1 "LeftFootRing1" -#define Character_LeftFootRing2 "LeftFootRing2" -#define Character_LeftFootRing3 "LeftFootRing3" -#define Character_LeftFootRing4 "LeftFootRing4" -#define Character_LeftFootPinky1 "LeftFootPinky1" -#define Character_LeftFootPinky2 "LeftFootPinky2" -#define Character_LeftFootPinky3 "LeftFootPinky3" -#define Character_LeftFootPinky4 "LeftFootPinky4" -#define Character_LeftFootExtraFinger1 "LeftFootExtraFinger1" -#define Character_LeftFootExtraFinger2 "LeftFootExtraFinger2" -#define Character_LeftFootExtraFinger3 "LeftFootExtraFinger3" -#define Character_LeftFootExtraFinger4 "LeftFootExtraFinger4" -#define Character_RightFootThumb1 "RightFootThumb1" -#define Character_RightFootThumb2 "RightFootThumb2" -#define Character_RightFootThumb3 "RightFootThumb3" -#define Character_RightFootThumb4 "RightFootThumb4" -#define Character_RightFootIndex1 "RightFootIndex1" -#define Character_RightFootIndex2 "RightFootIndex2" -#define Character_RightFootIndex3 "RightFootIndex3" -#define Character_RightFootIndex4 "RightFootIndex4" -#define Character_RightFootMiddle1 "RightFootMiddle1" -#define Character_RightFootMiddle2 "RightFootMiddle2" -#define Character_RightFootMiddle3 "RightFootMiddle3" -#define Character_RightFootMiddle4 "RightFootMiddle4" -#define Character_RightFootRing1 "RightFootRing1" -#define Character_RightFootRing2 "RightFootRing2" -#define Character_RightFootRing3 "RightFootRing3" -#define Character_RightFootRing4 "RightFootRing4" -#define Character_RightFootPinky1 "RightFootPinky1" -#define Character_RightFootPinky2 "RightFootPinky2" -#define Character_RightFootPinky3 "RightFootPinky3" -#define Character_RightFootPinky4 "RightFootPinky4" -#define Character_RightFootExtraFinger1 "RightFootExtraFinger1" -#define Character_RightFootExtraFinger2 "RightFootExtraFinger2" -#define Character_RightFootExtraFinger3 "RightFootExtraFinger3" -#define Character_RightFootExtraFinger4 "RightFootExtraFinger4" -#define Character_LeftInHandThumb "LeftInHandThumb" -#define Character_LeftInHandIndex "LeftInHandIndex" -#define Character_LeftInHandMiddle "LeftInHandMiddle" -#define Character_LeftInHandRing "LeftInHandRing" -#define Character_LeftInHandPinky "LeftInHandPinky" -#define Character_LeftInHandExtraFinger "LeftInHandExtraFinger" -#define Character_RightInHandThumb "RightInHandThumb" -#define Character_RightInHandIndex "RightInHandIndex" -#define Character_RightInHandMiddle "RightInHandMiddle" -#define Character_RightInHandRing "RightInHandRing" -#define Character_RightInHandPinky "RightInHandPinky" -#define Character_RightInHandExtraFinger "RightInHandExtraFinger" -#define Character_LeftInFootThumb "LeftInFootThumb" -#define Character_LeftInFootIndex "LeftInFootIndex" -#define Character_LeftInFootMiddle "LeftInFootMiddle" -#define Character_LeftInFootRing "LeftInFootRing" -#define Character_LeftInFootPinky "LeftInFootPinky" -#define Character_LeftInFootExtraFinger "LeftInFootExtraFinger" -#define Character_RightInFootThumb "RightInFootThumb" -#define Character_RightInFootIndex "RightInFootIndex" -#define Character_RightInFootMiddle "RightInFootMiddle" -#define Character_RightInFootRing "RightInFootRing" -#define Character_RightInFootPinky "RightInFootPinky" -#define Character_RightInFootExtraFinger "RightInFootExtraFinger" - -#define Character_GameModeParentLeftHipRoll "GameModeParentLeftHipRoll" -#define Character_GameModeParentLeftKnee "GameModeParentLeftKnee" -#define Character_GameModeParentLeftKneeRoll "GameModeParentLeftKneeRoll" -#define Character_GameModeParentRightHipRoll "GameModeParentRightHipRoll" -#define Character_GameModeParentRightKnee "GameModeParentRightKnee" -#define Character_GameModeParentRightKneeRoll "GameModeParentRightKneeRoll" -#define Character_GameModeParentLeftShoulderRoll "GameModeParentLeftShoulderRoll" -#define Character_GameModeParentLeftElbow "GameModeParentLeftElbow" -#define Character_GameModeParentLeftElbowRoll "GameModeParentLeftElbowRoll" -#define Character_GameModeParentRightShoulderRoll "GameModeParentRightShoulderRoll" -#define Character_GameModeParentRightElbow "GameModeParentRightElbow" -#define Character_GameModeParentRightElbowRoll "GameModeParentRightElbowRoll" - -#define Character_LeftFloorContact "LeftFloorContact" -#define Character_RightFloorContact "RightFloorContact" -#define Character_LeftHandFloorContact "LeftHandFloorContact" -#define Character_RightHandFloorContact "RightHandFloorContact" - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h deleted file mode 100644 index b4bf5cc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacterpose.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ - -#include - -#include -#include -#include - -#include - -/** \class FbxCharacterPose - * \nosubgrouping - * \brief A character pose is a character and an associated hierarchy of nodes. - * - * Only the default position of the nodes is considered, the animation data is ignored. - * - * You can access the content of a character pose, using the functions FbxCharacterPose::GetOffset(), - * FbxCharacterPose::GetLocalPosition(), and FbxCharacterPose::GetGlobalPosition(). - * Their source code is provided inline as examples on how to access the character pose data. - * - * To create a character pose, You must first create a hierarchy of nodes under the root - * node provided by function FbxCharacterPose::GetRootNode(). Then, feed this hierarchy - * of nodes into the character returned by function FbxCharacterPose::GetCharacter(). - * Offsets are set in the character links. Local positions are set using - * FbxNode::SetDefaultT(), FbxNode::SetDefaultR(), and FbxNode::SetDefaultS(). - * - * To set local positions from global positions: - * -# Declare lCharacterPose as a valid pointer to a FbxCharacterPose; - * -# Call lCharacterPose->GetRootNode()->SetLocalStateId(0, true); - * -# Call lCharacterPose->GetRootNode()->SetGlobalStateId(1, true); - * -# Call FbxNode::SetGlobalState() for all nodes found in the hierarchy under lCharacterPose->GetRootNode(); - * -# Call lCharacterPose->GetRootNode()->ComputeLocalState(1, true); - * -# Call lCharacterPose->GetRootNode()->SetCurrentTakeFromLocalState(FBXSDK_TIME_ZERO, true). - */ -class FBXSDK_DLL FbxCharacterPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCharacterPose,FbxObject); - -public: - //! Reset to an empty character pose. - void Reset(); - - /** Get the root node. - * \return Pointer to the root node. - */ - FbxNode* GetRootNode() const; - - /** Get the character. - * \return Pointer to the character. - */ - FbxCharacter* GetCharacter() const; - - /** Get offset matrix for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pOffset Receives offset matrix. - * \return \c true if successful, \c false otherwise. - */ - bool GetOffset(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pOffset) const; - - /** Get local position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pLocalT Receives local translation vector. - * \param pLocalR Receives local rotation vector. - * \param pLocalS Receives local scaling vector. - * \return \c true if successful, \c false otherwise. - */ - bool GetLocalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxVector4& pLocalT, FbxVector4& pLocalR, FbxVector4& pLocalS) const; - - /** Get global position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pGlobalPosition Receives global position. - * \return \c true if successful, \c false otherwise. - */ - bool GetGlobalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pGlobalPosition) const; - - /** Retrieve the pose scene used by this character pose - * \return The pose's scene (this is a different scene than the scene the character pose is in). */ - FbxScene* GetPoseScene() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone( FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - void Clone(FbxScene* pPoseScene, FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - -private: - FbxScene* mPoseScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h deleted file mode 100644 index ea78ea0..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraint.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_H_ - -#include - -#include -#include - -/** Base class for weighted animation constraints. - * Constraints are primarily used to impose limits on properties of objects (e.g. position, orientation, scale) - * and to automate animation processes. - * A constrained object is an object with properties constrained by one or more weighted constraint sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraint : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxConstraint, FbxObject); - -public: - /** - * \name Properties - */ - //@{ - /** This property represents the degree of influence of a constraint from 0.0 (no influence) to 100.0 (full influence). - * - * Default value is 100.0. - */ - FbxPropertyT Weight; - - /** This property controls whether the constraint is applied or not. - * If the value is \c false the constraint will have no effect. The default value is \c true. - * - * Default value is true. - */ - FbxPropertyT Active; - - /** This property handles the lock state of the constraint. - * - * When enabled, the constrained object cannot be moved away from its constrained location when the constraint is active. - * - * Default value is false. - */ - FbxPropertyT Lock; - //@} - - /** \enum EType Constraint attribute types. - */ - enum EType - { - eUnknown, //! Invalid constraint. - ePosition, //! Position constraint (referred to as a point constraint in Maya). - eRotation, //! Rotation constraint (referred to as an orient constraint in Maya). - eScale, //! Scale constraint. - eParent, //! Parent constraint. - eSingleChainIK, //! Single chain IK constraint. - eAim, //! Aim constraint. - eCharacter, //! Character constraint. - eCustom //! User defined constraints. - }; - - /** Access the type of the constraint. - * \return This type of the constraint. - */ - virtual EType GetConstraintType() const { return eUnknown; } - - /** Retrieve the constrained object. - * \return The constrained object. - */ - virtual FbxObject* GetConstrainedObject() const { return NULL; } - - /** Retrieve the count of constraint source. - * \return The count of constraint source. - */ - virtual int GetConstraintSourceCount() const { return 0; } - - /** Retrieve a constraint source with the specified index. - * \param pIndex The specified index. - * \return The constraint source at the specified index. - */ - virtual FbxObject* GetConstraintSource(int /*pIndex*/) const { return NULL; } - - /** Get the weight associated with a constraint source. - * \param pObject The given constraint source. - * \return The weight of the constraint source. - */ - double GetSourceWeight(const FbxObject* pObject) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -const FbxString GetWeightPropertyName(const FbxObject * pObject); -void CreateWeightPropertyForSourceObject(FbxObject * pConstraint, const FbxObject * pSourceObject, double pWeightValue); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h deleted file mode 100644 index 7a9c4d7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintaim.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_AIM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_AIM_H_ - -#include - -#include - -#include - -/** An aim constraint governs an object's orientation so that the object points to other objects. - * For example, you can use the aim constraint to point a light at an object or group of objects. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintAim : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintAim, FbxConstraint); - -public: - /** \enum EWorldUp Constraint world up type, which has the same meaning with Maya. - */ - enum EWorldUp - { - eAimAtSceneUp, //! Constraint scene up type. - eAimAtObjectUp, //! Constraint object up type. - eAimAtObjectRotationUp, //! Constraint object rotation up type. - eAimAtVector, //! Constraint vector type. - eAimAtNone, //! None constraint type. - eAimAtCount //! Constraint world up type count. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles the rotation offset value. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT RotationOffset; - - /** This property provides access to the object or objects which are the targets. - */ - FbxPropertyT AimAtObjects; - - /** This property provides access to the object being aimed. - */ - FbxPropertyT ConstrainedObject; - - /** This property handles world up type. - */ - FbxPropertyT WorldUpType; - - /** This property handles world up object. - */ - FbxPropertyT WorldUpObject; - - /** This property handles world up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT WorldUpVector; - - /** This property handles up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT UpVector; - - /** This property enables you set a specific axis for the constrained object to orient towards. - * - * Default value is (1, 0, 0). - */ - FbxPropertyT AimVector; - - /** This property handles whether to affect the rotation around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect the rotation around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect the rotation around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex The specified index. - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - - /** Set the world up object. - * \param pObject The new world up object. - */ - void SetWorldUpObject(FbxObject* pObject); - - /** Retrieve the world up object. - * \return The current world up object. - */ - FbxObject* GetWorldUpObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintAim::EWorldUp&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_AIM_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h deleted file mode 100644 index f957707..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintcustom.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for custom constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintCustom : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintCustom, FbxConstraint); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h deleted file mode 100644 index fccdb30..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintparent.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ - -#include - -#include - -#include - -/** The parent constraint creates a parent-to-child relationship between any two objects, from any two hierarchies. - * It creates the same relationship as the parent-to-child relationships found in hierarchies. - * You can use this constraint to connect objects without changing hierarchies. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintParent : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintParent, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect the translation of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationX; - - /** This property handles whether to affect the translation of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationY; - - /** This property handles whether to affect the translation of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationZ; - - /** This property handles whether to affect the rotation of the constrained object around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationX; - - /** This property handles whether to affect the rotation of the constrained object around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationY; - - /** This property handles whether to affect the rotation of the constrained object around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationZ; - - /** This property handles whether to affect the scaling of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingX; - - /** This property handles whether to affect the scaling of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingY; - - /** This property handles whether to affect the scaling of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingZ; - - /** This property used to access constraint sources. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstraintSources; - - /** This property used to access constrained object. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Set the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pTranslation The new offset vector. - */ - void SetTranslationOffset(FbxObject* pObject, FbxVector4 pTranslation); - - /** Retrieve the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetTranslationOffset(const FbxObject* pObject) const; - - /** Set the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pRotation The new offset vector. - */ - virtual void SetRotationOffset(const FbxObject* pObject, FbxVector4 pRotation); - - /** Retrieve the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetRotationOffset(const FbxObject* pObject) const; - - /** Add a constraint source to the constraint. - * \param pObject New constraint source. - * \param pWeight Weight of the constraint source. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the constraint source. - * \return The constraint source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h deleted file mode 100644 index 7fcc3e8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintposition.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a position constraint. - * A position constraint lets you constrain the position of an object based on the position of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintPosition : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintPosition,FbxConstraint); - -public: - - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles translation offset. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT Translation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Remove a source from the constraint. - * \param pObject Source object to remove. - */ - bool RemoveConstraintSource(FbxObject* pObject); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h deleted file mode 100644 index 51bea42..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintrotation.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a rotation constraint. - * A rotation constraint lets you constrain the rotation of an object based on the rotation of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintRotation : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintRotation, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles rotation offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Rotation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source object - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h deleted file mode 100644 index cf2f61d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintscale.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ - -#include - -#include - -#include - -/**\brief This constraint class contains methods for accessing the properties of a scale constraint. - * A scale constraint lets you constrain the scale of an object based on the scale of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintScale : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintScale,FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles scaling offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Scaling; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h deleted file mode 100644 index 237861c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintsinglechainik.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a single chain IK constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint); - -public: - /** Solver pole vector mode. - */ - enum ESolverMode - { - eRotatePlane, //! Rotate plane solver. - eSingleChain //! Single chain solver. - }; - - /** Pole vector mode. - */ - enum EPoleVectorMode - { - eVector, //! Pole vector type is vector. - eObject //! Pole vector type is object. - }; - - /** If the constraints read its animation on Translation and Scale for the nodes it constraints. - */ - enum EEvaluationMode - { - eNeverTS, //! The constraints never read its animation on translation and scale for the nodes. - eAutoDetect, //! The constraints read its animation on translation and scale for the nodes according to automatic detection. - eAlwaysTS //! The constraints always read its animation on translation and scale for the nodes. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles pole vector type. - */ - FbxPropertyT PoleVectorType; - - /** This property handles solver type. - */ - FbxPropertyT SolverType; - - /** This property handles evaluate TS animation. - */ - FbxPropertyT EvaluateTSAnim; - - /** This property handles pole vector objects. - */ - FbxPropertyT PoleVectorObjects; - - /** This property handles pole vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT PoleVector; - - /** This property handles twist value. - * - * Default value is 0. - */ - FbxPropertyT Twist; - - /** This property handles first joint object. - */ - FbxPropertyT FirstJointObject; - - /** This property handles end joint object. - */ - FbxPropertyT EndJointObject; - - /** This property handles effector object. - */ - FbxPropertyT EffectorObject; - //@} - - /** Get the weight of a source. - * \param pObject Source object that we want the weight. - */ - double GetPoleVectorObjectWeight(const FbxObject* pObject) const; - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight value of the source object expressed as a percentage. - * \remarks pWeight value is 100 percent by default. - */ - void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintPoleVectorCount() const; - - /** Retrieve a constraint source object. - * \param pIndex Index of constraint source object. - * \return Current source at the specified index. - */ - FbxObject* GetPoleVectorObject(int pIndex) const; - - /** Set the first joint object. - * \param pObject The first joint object. - */ - void SetFirstJointObject(FbxObject* pObject); - - /** Retrieve the first joint object. - * \return Current first joint object. - */ - FbxObject* GetFirstJointObject() const; - - /** Set the end joint object. - * \param pObject The end joint object. - */ - void SetEndJointObject(FbxObject* pObject); - - /** Retrieve the end joint object. - * \return Current end joint object. - */ - FbxObject* GetEndJointObject() const; - - /** Set the effector object. - * \param pObject The effector object. - */ - void SetEffectorObject(FbxObject* pObject); - - /** Retrieve the effector object. - * \return Current effector object. - */ - FbxObject* GetEffectorObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h deleted file mode 100644 index e62baf2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintutils.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ -#define _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ - -#include - -#include - -class FbxNode; - -/** Utility class for constraints - *\nosubgrouping - */ -class FBXSDK_DLL FbxConstraintUtils -{ -public: - /** Test if the given node is Single Chain IK Effector. - * \param pNode The given node - * \return \c true if it is, \c false otherwise. - */ - static bool IsNodeSingleChainIKEffector(FbxNode* pNode); -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h deleted file mode 100644 index dc233fd..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h +++ /dev/null @@ -1,370 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontrolset.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ - -#include - -#include - -#include - -class FbxControlSetPlug; - -/** \class FbxControlSetLink - * - * \brief This class represents a link between a given character's FK node and the associated node in the character hierarchy. - * - */ -class FBXSDK_DLL FbxControlSetLink -{ -public: - //! Default constructor. - FbxControlSetLink(); - - /** Copy constructor. - * \param pControlSetLink Given object. - */ - FbxControlSetLink(const FbxControlSetLink& pControlSetLink); - - /** Assignment operator. - * \param pControlSetLink Another FbxControlSetLink object assigned to this one. - */ - FbxControlSetLink& operator=(const FbxControlSetLink& pControlSetLink); - - /** Reset to default values. - * - * Member mNode is set to \c NULL and member mTemplateName is cleared. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this control set link. - FbxNode* mNode; - - //! A template name is a naming convention that is used to automatically map - //! the nodes of other skeletons that use the same naming convention for automatic characterization. - FbxString mTemplateName; -}; - -/** - * An effector wraps a character node (FbxNode) used to animate its control rig (FbxControlSet) via inverse kinematics. - */ -class FBXSDK_DLL FbxEffector -{ -public: - enum ESetId - { - eDefaultSet, - eAux1Set, - eAux2Set, - eAux3Set, - eAux4Set, - eAux5Set, - eAux6Set, - eAux7Set, - eAux8Set, - eAux9Set, - eAux10Set, - eAux11Set, - eAux12Set, - eAux13Set, - eAux14Set, - eSetIdCount - }; - - enum ENodeId - { - eHips, - eLeftAnkle, - eRightAnkle, - eLeftWrist, - eRightWrist, - eLeftKnee, - eRightKnee, - eLeftElbow, - eRightElbow, - eChestOrigin, - eChestEnd, - eLeftFoot, - eRightFoot, - eLeftShoulder, - eRightShoulder, - eHead, - eLeftHip, - eRightHip, - eLeftHand, - eRightHand, - eLeftHandThumb, - eLeftHandIndex, - eLeftHandMiddle, - eLeftHandRing, - eLeftHandPinky, - eLeftHandExtraFinger, - eRightHandThumb, - eRightHandIndex, - eRightHandMiddle, - eRightHandRing, - eRightHandPinky, - eRightHandExtraFinger, - eLeftFootThumb, - eLeftFootIndex, - eLeftFootMiddle, - eLeftFootRing, - eLeftFootPinky, - eLeftFootExtraFinger, - eRightFootThumb, - eRightFootIndex, - eRightFootMiddle, - eRightFootRing, - eRightFootPinky, - eRightFootExtraFinger, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - //! Default constructor with uninitialized character node. - FbxEffector(); - - /** Assignment operator. - * \param pEffector Another FbxEffector assigned to this one. - */ - FbxEffector& operator=(const FbxEffector& pEffector); - - /** Reset to default values. - * - mNode is set to NULL. - * - mShow is set to true. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this effector. - FbxNode* mNode; - - //! \c true if the effector is visible, \c false if hidden - bool mShow; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - //These members are for backward compatibility and should not be used. - //These properties are now published through class FbxControlSetPlug. - bool mTActive; - bool mRActive; - bool mCandidateTActive; - bool mCandidateRActive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \class FbxControlSet - * - * This class contains all methods to either set-up an exported control rig or query information on an imported control rig. - * A Control rig is a character manipulation tool that lets you change the position and orientation - * of a character to create or alter animation. - * - * This class also contains some methods to manipulate the FbxEffector and FbxControlSetLink. - * - * The FbxControlSet class contains FK rig (Forward Kinematics) and IK rig (Inverse Kinematics) animation. The FK rig is represented - * by a list of nodes while the IK rig is represented by a list of effectors. - * - * You can access the FK rig with the FbxControlSetLink class, using the functions FbxControlSet::SetControlSetLink() and FbxControlSet::GetControlSetLink(). - * - * You can access the IK rig with the FbxEffector class, using the functions FbxControlSet::SetEffector() and FbxControlSet::GetEffector(). - * - * \see FbxEffector, FbxControlSetLink - */ -class FBXSDK_DLL FbxControlSet -{ -public: - /** Reset to default values. - * Reset all effector and control set links. - */ - void Reset(); - - /** \enum EType Control rig type. - * - \e eNone No Control rig. - * - \e eFkIk Both an FK rig and IK rig. - * - \e eIkOnly Only an IK rig. - */ - enum EType - { - eNone, - eFkIk, - eIkOnly - }; - - /** Set type as given. - * \param pType The given type. - */ - void SetType(EType pType); - - /** Get type. - * \return The gotten type. - */ - EType GetType() const; - - /** Set use axis flag as given. - * \param pUseAxis The given use axis flag. - */ - void SetUseAxis(bool pUseAxis); - - /** Get use axis flag. - * \return The gotten use axis flag. - */ - bool GetUseAxis() const; - - /** Set lock transform flag as given. - * \param pLockTransform The given lock transform flag. - */ - void SetLockTransform(bool pLockTransform); - - /** Get lock transform flag. - * \return The gotten lock transform flag. - */ - bool GetLockTransform()const; - - /** Set lock 3D pick flag as given. - * \param pLock3DPick The given lock 3D pick flag. - */ - void SetLock3DPick(bool pLock3DPick); - - /** Get lock 3D pick flag. - * \return The gotten lock 3D pick flag. - */ - bool GetLock3DPick() const; - - /** Set a control set link for a character node ID. - * \param pCharacterNodeId Character node ID. - * \param pControlSetLink Control set link to be associated with the Character node ID. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid setting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool SetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, const FbxControlSetLink& pControlSetLink); - - /** Get the control set link associated with a character node ID. - * \param pCharacterNodeId Requested character node ID. - * \param pControlSetLink Optional pointer that returns the control set link if the function succeeds. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid getting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool GetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, FbxControlSetLink* pControlSetLink = NULL) const; - - /** Set an effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pEffector Effector to be associated with the effector node ID. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector pEffector); - - /** Get the effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested effector node. - * \param pEffector Optional pointer that returns the effector if the function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector* pEffector = NULL); - - /** Set an auxiliary effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pNode Auxiliary effector node to be associated with the effector node ID. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode* pNode, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set); - - /** Get the auxiliary effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested auxiliary effector node. - * \param pNode Optional pointer that returns the auxiliary effector node if the function succeeds. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode** pNode=NULL, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set) const; - - /** Get the name associated with an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \return Name associated with the effector node ID. - */ - static char* GetEffectorNodeName(FbxEffector::ENodeId pEffectorNodeId); - - /** Get ID associated with an effector node name. - * \param pEffectorNodeName Effector node name. - * \return Effector node ID associated with the given effector node name, or FbxEffector::eNodeIdInvalid (-1) if - * no effector node with pEffectorNodeName exists. - */ - static FbxEffector::ENodeId GetEffectorNodeId(const char* pEffectorNodeName); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void FromPlug(FbxControlSetPlug *pPlug); - void ToPlug(FbxControlSetPlug *pPlug); - -private: - FbxControlSet(); - ~FbxControlSet(); - - FbxCharacter* mCharacter; - EType mType; - bool mUseAxis; - bool mLockTransform; - bool mLock3DPick; - FbxControlSetLink mControlSetLink[FbxCharacter::eNodeIdCount]; // Except floor node IDs! - FbxEffector mEffector[FbxEffector::eNodeIdCount]; - FbxNode* mEffectorAux[FbxEffector::eNodeIdCount][FbxEffector::eSetIdCount-1]; - - FBXSDK_FRIEND_NEW(); - friend class FbxCharacter; - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Plug class for control set. - * \nosubgrouping - */ -class FBXSDK_DLL FbxControlSetPlug : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxControlSetPlug, FbxObject); - -public: - //! EType property of control set. - FbxPropertyT ControlSetType; - - //! Use axis flag. - FbxPropertyT UseAxis; - - //! Reference character. - FbxPropertyT Character; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - FbxArray mFKBuf; - FbxArray mIKBuf; - - friend class FbxScene; - friend class FbxControlSet; -}; - -inline EFbxType FbxTypeOf(const FbxControlSet::EType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h b/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h deleted file mode 100644 index af55c2b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhik2fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ - -#include - -#include - -#include - -class FbxCharacterPropertyInfo -{ -public: - const char* mHIKPropertyName; - const char* mFbxCharacterPropertyModeName; - const char* mFbxCharacterPropertyName; - int mIndex; - FbxCharacter::EPropertyUnit mUnit; -}; - -static const FbxCharacterPropertyInfo gHIK2FbxCharacterPropertyBridge[] = -{ - { "PullIterationCount" ,NULL,"PullIterationCount",0,FbxCharacter::ePropertyReal}, - { "Posture" ,NULL,"Posture",0,FbxCharacter::ePropertyEnum}, - { "ForceActorSpace" ,"ForceActorSpace",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ScaleCompensation" ,"ScaleCompensationMode","ScaleCompensation",0,FbxCharacter::ePropertyReal}, - { "HipsHeightCompensation" ,"HipsHeightCompensationMode","HipsHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleHeightCompensation" ,"AnkleHeightCompensationMode","AnkleHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleProximityCompensation" ,"AnkleProximityCompensationMode","AnkleProximityCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "MassCenterCompensation" ,NULL,"MassCenterCompensation",0,FbxCharacter::ePropertyReal}, - { "ApplyLimits" ,"ApplyLimits",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ChestReduction" ,NULL,"ChestReduction",0,FbxCharacter::ePropertyPercent}, - { "CollarReduction" ,NULL,"CollarReduction",0,FbxCharacter::ePropertyPercent}, - { "NeckReduction" ,NULL,"NeckReduction",0,FbxCharacter::ePropertyPercent}, - { "HeadReduction" ,NULL,"HeadReduction",0,FbxCharacter::ePropertyPercent}, - { "ParamFootContactStiffness" ,NULL,"FootContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandContactStiffness" ,NULL,"HandContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamFootFingerContactRollStiffness" ,NULL,"FootFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandFingerContactRollStiffness" ,NULL,"HandFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkle" ,NULL,"ReachActorLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkle" ,NULL,"ReachActorRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftKnee" ,NULL,"ReachActorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightKnee" ,NULL,"ReachActorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChest" ,NULL,"ReachActorChest",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHead" ,NULL,"ReachActorHead",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWrist" ,NULL,"ReachActorLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWrist" ,NULL,"ReachActorRightWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftElbow" ,NULL,"ReachActorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightElbow" ,NULL,"ReachActorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBase" ,NULL,"ReachActorRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBase" ,NULL,"ReachActorLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBase" ,NULL,"ReachActorRightToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBase" ,NULL,"ReachActorLeftToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBaseRotation" ,NULL,"ReachActorRightFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBaseRotation" ,NULL,"ReachActorLeftFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBaseRotation" ,NULL,"ReachActorRightToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBaseRotation" ,NULL,"ReachActorLeftToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkleRotationRotation" ,NULL,"ReachActorLeftAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkleRotation" ,NULL,"ReachActorRightAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHeadRotation" ,NULL,"ReachActorHeadRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWristRotation" ,NULL,"ReachActorLeftWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWristRotation" ,NULL,"ReachActorRightWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChestRotation" ,NULL,"ReachActorChestRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLowerChestRotation" ,NULL,"ReachActorLowerChestRotation",0,FbxCharacter::ePropertyPercent}, - { "HipsTOffsetX" ,NULL,"HipsTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetY" ,NULL,"HipsTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetZ" ,NULL,"HipsTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetX" ,NULL,"ChestTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetY" ,NULL,"ChestTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetZ" ,NULL,"ChestTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "LeftUpLegRollEx" ,"LeftUpLegRollExMode","LeftUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRollEx" ,"LeftLegRollExMode","LeftLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRollEx" ,"RightUpLegRollExMode","RightUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightLegRollEx" ,"RightLegRollExMode","RightLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRollEx" ,"LeftArmRollExMode","LeftArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRollEx" ,"LeftForeArmRollExMode","LeftForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightArmRollEx" ,"RightArmRollExMode","RightArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRollEx" ,"RightForeArmRollExMode","RightForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftUpLegRoll" ,"LeftUpLegRollMode","LeftUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRoll" ,"LeftLegRollMode","LeftLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRoll" ,"RightUpLegRollMode","RightUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightLegRoll" ,"RightLegRollMode","RightLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRoll" ,"LeftArmRollMode","LeftArmRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRoll" ,"LeftForeArmRollMode","LeftForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightArmRoll" ,"RightArmRollMode","RightArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRoll" ,"RightForeArmRollMode","RightForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "FloorContact" ,"FootFloorContact","FootFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticToes" ,"FootAutomaticToes",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RollExtractionMode" ,NULL,"RollExtractionMode",0,FbxCharacter::ePropertyEnum}, - { "FloorPivot" ,NULL,"FootFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "FootBottomToAnkle" ,NULL,"FootBottomToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootBackToAnkle" ,NULL,"FootBackToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootMiddleToAnkle" ,NULL,"FootMiddleToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootFrontToMiddle" ,NULL,"FootFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "FootInToAnkle" ,NULL,"FootInToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootOutToAnkle" ,NULL,"FootOutToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "ContactSize" ,NULL,"FootContactSize",0,FbxCharacter::ePropertyReal}, - { "HandFloorContact" ,"HandFloorContact","HandFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticFingers" ,"HandAutomaticFingers",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HandFloorPivot" ,NULL,"HandFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "HandBottomToWrist" ,NULL,"HandBottomToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandBackToWrist" ,NULL,"HandBackToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandMiddleToWrist" ,NULL,"HandMiddleToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandFrontToMiddle" ,NULL,"HandFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "HandInToWrist" ,NULL,"HandInToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandOutToWrist" ,NULL,"HandOutToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandContactSize" ,NULL,"HandContactSize",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandThumbTip" ,NULL,"LeftHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandIndexTip" ,NULL,"LeftHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandMiddleTip" ,NULL,"LeftHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandRingTip" ,NULL,"LeftHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandPinkyTip" ,NULL,"LeftHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandExtraFingerTip" ,NULL,"LeftHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandThumbTip" ,NULL,"RightHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandIndexTip" ,NULL,"RightHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandMiddleTip" ,NULL,"RightHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandRingTip" ,NULL,"RightHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandPinkyTip" ,NULL,"RightHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandExtraFingerTip" ,NULL,"RightHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootThumbTip" ,NULL,"LeftFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootIndexTip" ,NULL,"LeftFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootMiddleTip" ,NULL,"LeftFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootRingTip" ,NULL,"LeftFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootPinkyTip" ,NULL,"LeftFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootExtraFingerTip" ,NULL,"LeftFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootThumbTip" ,NULL,"RightFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootIndexTip" ,NULL,"RightFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootMiddleTip" ,NULL,"RightFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootRingTip" ,NULL,"RightFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootPinkyTip" ,NULL,"RightFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootExtraFingerTip" ,NULL,"RightFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "FingerSolving" ,"FingerSolving",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "FootFingerContact" ,"FootFingerContact","FootFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "FootContactType" ,NULL,"FootContactType",0,FbxCharacter::ePropertyEnum}, - { "FootFingerContactMode" ,NULL,"FootFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContact" ,"HandFingerContact","HandFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "HandContactType" ,NULL,"HandContactType",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContactMode" ,NULL,"HandFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "CtrlPullLeftToeBase" ,NULL,"CtrlPullLeftToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFoot" ,NULL,"CtrlPullLeftFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftKnee" ,NULL,"CtrlPullLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightToeBase" ,NULL,"CtrlPullRightToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFoot" ,NULL,"CtrlPullRightFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightKnee" ,NULL,"CtrlPullRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFingerBase" ,NULL,"CtrlPullLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftHand" ,NULL,"CtrlPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftElbow" ,NULL,"CtrlPullLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFingerBase" ,NULL,"CtrlPullRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightHand" ,NULL,"CtrlPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightElbow" ,NULL,"CtrlPullRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullLeftHand" ,NULL,"CtrlChestPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullRightHand" ,NULL,"CtrlChestPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullHead" ,NULL,"CtrlPullHead",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsPosition" ,NULL,"CtrlResistHipsPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlEnforceGravity" ,NULL,"CtrlEnforceGravity",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsOrientation" ,NULL,"CtrlResistHipsOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestPosition" ,NULL,"CtrlResistChestPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestOrientation" ,NULL,"CtrlResistChestOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftCollar" ,NULL,"CtrlResistLeftCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightCollar" ,NULL,"CtrlResistRightCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftKnee" ,NULL,"CtrlResistLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftKnee" ,NULL,"CtrlResistMaximumExtensionLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftKnee" ,NULL,"CtrlResistCompressionFactorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightKnee" ,NULL,"CtrlResistRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightKnee" ,NULL,"CtrlResistMaximumExtensionRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightKnee" ,NULL,"CtrlResistCompressionFactorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftElbow" ,NULL,"CtrlResistLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftElbow" ,NULL,"CtrlResistMaximumExtensionLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftElbow" ,NULL,"CtrlResistCompressionFactorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightElbow" ,NULL,"CtrlResistRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightElbow" ,NULL,"CtrlResistMaximumExtensionRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightElbow" ,NULL,"CtrlResistCompressionFactorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlSpineStiffness" ,NULL,"CtrlSpineStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlNeckStiffness" ,NULL,"CtrlNeckStiffness",0,FbxCharacter::ePropertyPercent}, - { "Mirror" ,"MirrorMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection" ,NULL,"ShoulderCorrection",0,FbxCharacter::ePropertyPercent}, - { "LeftKneeKillPitch" ,"LeftKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightKneeKillPitch" ,"RightKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "LeftElbowKillPitch" ,"LeftElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightElbowKillPitch" ,"RightElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HipsTranslationMode" ,NULL,"HipsTranslationMode",0,FbxCharacter::ePropertyEnum}, - { "WriteReference" ,"WriteReference",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "SyncMode" ,"SyncMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "Damping" ,NULL,"Damping",0,FbxCharacter::ePropertyReal}, - { "Orientation" ,"OrientationDampingMode","OrientationDamping",0,FbxCharacter::ePropertySecond}, - { "Displacement" ,"DisplacementDampingMode","DisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "DisplacementMemory" ,"DisplacementMemoryMode","DisplacementMemory",0,FbxCharacter::ePropertySecond}, - { "HipsDisplacementDamping" ,"HipsDisplacementDampingMode","HipsDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "AnkleDisplacementDamping" ,"AnkleDisplacementDampingMode","AnkleDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "WristDisplacementDamping" ,"WristDisplacementDampingMode","WristDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "Stabilization" ,NULL,"Stabilization",0,FbxCharacter::ePropertyReal}, - { "AnkleStabilizationTime" ,"AnkleStabilizationTimeMode","AnkleStabilizationTime",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationPerimeter" ,"AnkleStabilizationPerimeterMode","AnkleStabilizationPerimeter",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationAngularPerimeter" ,"AnkleStabilizationAngularPerimeterMode","AnkleStabilizationAngularPerimeter",0,FbxCharacter::ePropertyDegree}, - { "AnkleStabilizationFloorProximity" ,"AnkleStabilizationFloorProximityMode","AnkleStabilizationFloorProximity",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationDamping" ,"AnkleStabilizationDampingMode","AnkleStabilizationDamping",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationRecoveryTime" ,"AnkleStabilizationRecoveryTimeMode","AnkleStabilizationRecoveryTime",0,FbxCharacter::ePropertySecond}, - { "ContactBehaviour" ,NULL,"ContactBehaviour",0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection", NULL, "RealisticShoulder",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessX", NULL, "CollarStiffnessX",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessY", NULL, "CollarStiffnessY",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessZ", NULL, "CollarStiffnessZ",0,FbxCharacter::ePropertyReal}, - { "ExtraCollarRatio", NULL, "ExtraCollarRatio",0,FbxCharacter::ePropertyPercent}, - { "LeftLegMaxExtensionAngle", NULL, "LeftLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightLegMaxExtensionAngle", NULL, "RightLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "LeftArmMaxExtensionAngle", NULL, "LeftArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightArmMaxExtensionAngle", NULL, "RightArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "StretchStartArmsAndLegs", NULL, "StretchStartArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "StretchStopArmsAndLegs", NULL, "StretchStopArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "SnSScaleArmsAndLegs", NULL, "SnSScaleArmsAndLegs",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftWrist", NULL, "SnSReachLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightWrist", NULL, "SnSReachRightWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftAnkle", NULL, "SnSReachLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightAnkle", NULL, "SnSReachRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpine", NULL, "SnSScaleSpine",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpineChildren", NULL, "SnSScaleSpineChildren",0,FbxCharacter::ePropertyPercent}, - { "SnSSpineFreedom", NULL, "SnSSpineFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachChestEnd", NULL, "SnSReachChestEnd",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleNeck", NULL, "SnSScaleNeck",0,FbxCharacter::ePropertyPercent}, - { "SnSNeckFreedom", NULL, "SnSNeckFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachHead", NULL, "SnSReachHead",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll1" ,"LeafLeftUpLegRoll1Mode","LeafLeftUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll1" ,"LeafLeftLegRoll1Mode","LeafLeftLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll1" ,"LeafRightUpLegRoll1Mode","LeafRightUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll1" ,"LeafRightLegRoll1Mode","LeafRightLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll1" ,"LeafLeftArmRoll1Mode","LeafLeftArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll1" ,"LeafLeftForeArmRoll1Mode","LeafLeftForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll1" ,"LeafRightArmRoll1Mode","LeafRightArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll1" ,"LeafRightForeArmRoll1Mode","LeafRightForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll2" ,"LeafLeftUpLegRoll2Mode","LeafLeftUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll2" ,"LeafLeftLegRoll2Mode","LeafLeftLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll2" ,"LeafRightUpLegRoll2Mode","LeafRightUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll2" ,"LeafRightLegRoll2Mode","LeafRightLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll2" ,"LeafLeftArmRoll2Mode","LeafLeftArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll2" ,"LeafLeftForeArmRoll2Mode","LeafLeftForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll2" ,"LeafRightArmRoll2Mode","LeafRightArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll2" ,"LeafRightForeArmRoll2Mode","LeafRightForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll3" ,"LeafLeftUpLegRoll3Mode","LeafLeftUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll3" ,"LeafLeftLegRoll3Mode","LeafLeftLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll3" ,"LeafRightUpLegRoll3Mode","LeafRightUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll3" ,"LeafRightLegRoll3Mode","LeafRightLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll3" ,"LeafLeftArmRoll3Mode","LeafLeftArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll3" ,"LeafLeftForeArmRoll3Mode","LeafLeftForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll3" ,"LeafRightArmRoll3Mode","LeafRightArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll3" ,"LeafRightForeArmRoll3Mode","LeafRightForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll4" ,"LeafLeftUpLegRoll4Mode","LeafLeftUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll4" ,"LeafLeftLegRoll4Mode","LeafLeftLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll4" ,"LeafRightUpLegRoll4Mode","LeafRightUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll4" ,"LeafRightLegRoll4Mode","LeafRightLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll4" ,"LeafLeftArmRoll4Mode","LeafLeftArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll4" ,"LeafLeftForeArmRoll4Mode","LeafLeftForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll4" ,"LeafRightArmRoll4Mode","LeafRightArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll4" ,"LeafRightForeArmRoll4Mode","LeafRightForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll5" ,"LeafLeftUpLegRoll5Mode","LeafLeftUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll5" ,"LeafLeftLegRoll5Mode","LeafLeftLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll5" ,"LeafRightUpLegRoll5Mode","LeafRightUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll5" ,"LeafRightLegRoll5Mode","LeafRightLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll5" ,"LeafLeftArmRoll5Mode","LeafLeftArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll5" ,"LeafLeftForeArmRoll5Mode","LeafLeftForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll5" ,"LeafRightArmRoll5Mode","LeafRightArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll5" ,"LeafRightForeArmRoll5Mode","LeafRightForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeftLegFullRollExtraction" ,NULL,"LeftLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightLegFullRollExtraction" ,NULL,"RightLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "LeftArmFullRollExtraction" ,NULL,"LeftArmFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightArmFullRollExtraction" ,NULL,"RightArmFullRollExtraction",0,FbxCharacter::ePropertyPercent} -}; - -class HIK2FbxCharacterPropertyBridge -{ -public: - enum - { - mParamCount = sizeof(gHIK2FbxCharacterPropertyBridge) / sizeof(FbxCharacterPropertyInfo) - }; - static inline const FbxCharacterPropertyInfo& GetAt(int i) { return gHIK2FbxCharacterPropertyBridge[i] ;} - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromFbxCharacterProperty(const char* pCharacterPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(GetAt(lCounter).mFbxCharacterPropertyName && !strcmp(GetAt(lCounter).mFbxCharacterPropertyName, pCharacterPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromHIKProperty(const char* pHIKPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(!strcmp(GetAt(lCounter).mHIKPropertyName, pHIKPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudio.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudio.h deleted file mode 100644 index c06061a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudio.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_AUDIO_H_ -#define _FBXSDK_SCENE_AUDIO_H_ - -#include - -#include - -#include - -/** FBX SDK audio class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudio : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxAudio, FbxMediaClip); - -public: - /** - * \name Audio object creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created audio clip belongs. - * \param pName Name of the audio clip. - * \return Newly created audio clip - */ - static FbxAudio* Create(FbxScene* pContainer, const char* pName); - //@} - /** - *\name Reset audio - */ - //@{ - //! Reset the audio to default values. - void Reset() override; - //@} - - /** - * \name Audio attributes Management - */ - //@{ - - //! Audio file bit rate value (bit/s). - FbxPropertyT BitRate; - - //! Audio file sample rate value (Hz). - FbxPropertyT SampleRate; - - //! Audio file number of channels. - FbxPropertyT Channels; - - //! Audio file length. - FbxPropertyT Duration; - - /** Compound property to be used if animation data needs to be connected. - * In this case, specific properties should be added to this one with the Animatable flag set. - * \remarks By default, the Volume property is always created first and, unless explicitily - * removed by a "client", will always exist. - */ - FbxProperty AnimFX; - //@} - - /** - *\name Utility section - */ - //@{ - /** Access the Volume child property of the AnimFX. - * \return The volume property if it exists or an invalid property. - */ - FbxProperty Volume(); - //@} -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void InitializeAnimFX(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudiolayer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudiolayer.h deleted file mode 100644 index 0764ab0..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaudiolayer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_AUDIO_LAYER_H_ -#define _FBXSDK_SCENE_AUDIO_LAYER_H_ - -#include - -#include - -#include - -class FbxAudio; - -/** The audio layer is a collection of audio clips. Its purpose is to store - * a variable number of FbxAudio objects representing audio clips. The class provides - * a Mute, Solo and Lock states flags (bool properties), as well as a Clolor (double3 property). - * There is no evaluation system for audio layers inside the FBX SDK and an audio layer can be - * empty. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudioLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAudioLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the volume increment value. - * This property can be animated. - * Default value is \c 0.0 - */ - FbxPropertyT Volume; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - //! Reset this object properties to their default value. - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_LAYER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaxissystem.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaxissystem.h deleted file mode 100644 index 59a1d10..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxaxissystem.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaxissystem.h -#ifndef _FBXSDK_SCENE_AXIS_SYSTEM_H_ -#define _FBXSDK_SCENE_AXIS_SYSTEM_H_ - -#include - -#include -#include - -#include - -/** This class represents the coordinate system of the scene and can convert scenes - to other coordinate systems. By default the FbxScene uses a Y-Up axis - system. If the calling application wishes to change the default axis it will need to define the new - axis system and call the convert method with the scene as argument. The appropriate transforms will be - applied to the first level objects of the scene only (objects whose parent is the scene itself). Child - objects do not need to be transformed since they inherit from their parents. - The adjustment will affect the translation animation curves and the objects pivots values (the rotation - transformation is applied as a pre-rotation transform therefore the rotation animation curves do not need to - be transformed). Once converted, the scene will have its axis definition changed to the new system. - - For example: - \code - FbxScene* lScene = FbxScene::Create(sdkmanager, "MyScene"); - ... - // the scene is filled with objects - - int dir; - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this returns the equivalent of FbxAxisSystem::eYAxis - - FbxAxisSystem max; // we desire to convert the scene from Y-Up to Z-Up - max.ConvertScene(lScene); - - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this will now return the equivalent of FbxAxisSystem::eZAxis - \endcode - - No conversion will take place if the scene current axis system is equal to the new one. - - The EUpVector specifies which axis has the up and down direction in the system (typically this is the Y or Z axis). - The sign of the EUpVector is applied to represent the direction (1 is up and -1 is down relative to the observer). - - The EFrontVector specifies which axis has the front and back direction in the system. It is not an independent variable, - which means it depends on EUpVector. The enum values ParityEven and ParityOdd denote the first one and - the second one of the remain two axes in addition to the up axis. - - For example if the up axis is X, the remain two axes will be Y And Z, so the ParityEven is Y, and the ParityOdd is Z - ; If the up axis is Y, the remain two axes will X And Z, so the ParityEven is X, and the ParityOdd is Z; - If the up axis is Z, the remain two axes will X And Y, so the ParityEven is X, and the ParityOdd is Y. - - There still needs a parameter to denote the direction of the EFrontVector just as the EUpVector. And the sign of the - EFrontVector represents the direction (1 is front and -1 is back relative to observer). - - If the front axis and the up axis are determined, the third axis will be automatically determined as the left one. - The ECoordSystem enum is a parameter to determine the direction of the third axis just as the EUpVector sign. - It determines if the axis system is right-handed or left-handed just as the enum values. - - Some code for reconstructing a FbxAxisSystem object from reference scene. - \code - //the reference scene - FbxScene* lSceneReference = FbxScene::Create(sdkmanager, "ReferenceScene"); - ... - // the scene is filled with objects - - FbxAxisSystem lAxisSytemReference = lSceneReference->GetGlobalSettings().GetAxisSystem(); - - int lUpVectorSign = 1; - int lFrontVectorSign = 1; - - //get upVector and its sign. - EUpVector lUpVector = lAxisSsytemReference.getUpVector( lUpVectorSign ); - - //get FrontVector and its sign. - EFrontVector lFrontVector = lAxisSsytemReference.getFrontVector( lFrontVectorSign ); - - //get uCoorSystem. - ECoordSystem lCoorSystem = lAxisSsytemReference.GetCoorSystem(); - - //The FbxAxisSystem object to reconstruct back by saved parameter - FbxAxisSystem lAxisSytemReconstruct( lUpVectorSign * lUpVector, - lFrontVectorSign * lFrontVector, - lCoorSystem); - \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxAxisSystem -{ -public: - - /** \enum EUpVector Specifies which canonical axis represents up in the system (typically Y or Z). - */ - enum EUpVector - { - eXAxis = 1, - eYAxis = 2, - eZAxis = 3 - }; - - /** \enum EFrontVector Vector with origin at the screen pointing toward the camera. - * This is a subset of enum EUpVector because axis cannot be repeated. - * We use the system of "parity" to define this vector because its value (X,Y or Z axis) - * really depends on the up-vector. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - * \see Detailed description of FbxAxisSystem. - */ - enum EFrontVector - { - eParityEven = 1, - eParityOdd = 2 - }; - - /** \enum ECoordSystem Specifies the third vector of the system. - * The FbxAxisSystem deduces the correct vector and direction based on this flag - * and the relationship with the up and front vectors. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - */ - enum ECoordSystem - { - eRightHanded, - eLeftHanded - }; - - /** \enum EPreDefinedAxisSystem Enumeration that can be used to initialize a new instance of this class with - * predefined configurations (see the "Predefined axis systems" section). - */ - enum EPreDefinedAxisSystem - { - eMayaZUp, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMayaYUp, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eMax, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMotionBuilder, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eOpenGL, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eDirectX, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - eLightwave /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - }; - - /** - * \name Constructor and Destructor - */ - //@{ - FbxAxisSystem(); - - /** Constructor! - * \param pUpVector Specify the up vector. - * \param pFrontVector Specify the front vector. - * \param pCoorSystem Specify RightHanded coordinate system or LeftHanded coordinate system. - */ - FbxAxisSystem(EUpVector pUpVector, EFrontVector pFrontVector, ECoordSystem pCoorSystem); - - /** Copy constructor! - * \param pAxisSystem Another FbxAxisSystem object copied to this one. - */ - FbxAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Constructor! - * \param pAxisSystem Specify which predefined axis system to copy. - */ - FbxAxisSystem(const EPreDefinedAxisSystem pAxisSystem); - - //! Destructor. - virtual ~FbxAxisSystem(); - //@} - - /** - * \name Boolean operation. - */ - //@{ - - /** Equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are equal, \c false otherwise. - */ - bool operator==(const FbxAxisSystem& pAxisSystem)const; - - /** Non-equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are unequal, \c false otherwise. - */ - bool operator!=(const FbxAxisSystem& pAxisSystem)const; - //@} - - /** Assignment operation. - * \param pAxisSystem Axis system assigned to this one. - */ - FbxAxisSystem& operator=(const FbxAxisSystem& pAxisSystem); - - /** - * \name Predefined axis systems. - * These static members define the axis system of the most popular applications. - */ - //@{ - - //! Predefined axis system: MayaZUp (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaZUp; - - //! Predefined axis system: MayaYUp (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaYUp; - - //! Predefined axis system: Max (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Max; - - //! Predefined axis system: Motionbuilder (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Motionbuilder; - - //! Predefined axis system: OpenGL (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem OpenGL; - - //! Predefined axis system: DirectX (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem DirectX; - - //! Predefined axis system: Lightwave (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem Lightwave; - //@} - - /** Convert a scene to this axis system. Sets the axis system of the scene to this system unit. - * \param pScene The scene to convert - */ - void ConvertScene(FbxScene* pScene) const; - - /** Convert a scene to this axis system by using the specified - * node as an Fbx_Root. This is provided for backwards compatibility - * only and ConvertScene(FbxScene* pScene) should be used instead when possible. - * \param pScene The scene to convert - * \param pFbxRoot The Fbx_Root node that will be transformed. - */ - void ConvertScene(FbxScene* pScene, FbxNode* pFbxRoot) const; - - /** Get the EFrontVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for front, -1 for back (relative to observer). - * \return The EFrontVector of this axis system. - */ - EFrontVector GetFrontVector( int & pSign ) const; - - /** Get the EUpVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for up, -1 for down (relative to observer). - * \return The EUpVector of this axis system. - */ - EUpVector GetUpVector( int & pSign ) const; - - /** Accessor to the ECoordSystem of this object. - * \return The current coordinate axis system of this object. - */ - ECoordSystem GetCoorSystem() const; - - /** Represents the axis system as a 4x4 matrix - * \return The equivalent matrix of this axis system - */ - void GetMatrix(FbxAMatrix& pMatrix); - - /** Converts the children of the given node to this axis system. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene that the pRoot node belongs, nor does it adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The node whose children are converted. - * \param pSrcSystem The source axis system. - */ - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class AxisDef - { - public: - enum EAxis {eXAxis, eYAxis, eZAxis}; - bool operator==(const AxisDef& pAxis) const { return (mAxis == pAxis.mAxis) && (mSign == pAxis.mSign); } - EAxis mAxis; - int mSign; - }; - - AxisDef mUpVector; - AxisDef mFrontVector; - AxisDef mCoorSystem; - - void ConvertTProperty(FbxArray& pNodes, const FbxAxisSystem& pFrom) const; - void ConvertCurveNodes(FbxArray& pCurveNodes, const FbxAxisSystem& pFrom) const; - void AdjustPreRotation(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPivots(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void GetConversionMatrix(const FbxAxisSystem& pFrom, FbxMatrix& pConversionRM) const; - void AdjustLimits(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPoses(FbxScene* pScene, const FbxMatrix& pConversionRM) const; - void AdjustCamera(FbxNode* pNode, const FbxMatrix& pConversionRM ) const; - void AdjustCluster(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem, bool pSubChildrenOnly) const; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AXIS_SYSTEM_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollection.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollection.h deleted file mode 100644 index 9bdce27..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollection.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollection.h -#ifndef _FBXSDK_SCENE_COLLECTION_H_ -#define _FBXSDK_SCENE_COLLECTION_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** A FbxObject derived container for FbxObject. - * \nosubgrouping - * - */ -class FBXSDK_DLL FbxCollection : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCollection, FbxObject); - -public: - /** - * \name Collection member management - */ - //@{ - //! Deletes all objects in the container. - virtual void Clear(); - - /** Adds a member. - * \param pMember Object to be added. - */ - virtual bool AddMember(FbxObject* pMember) { return ConnectSrcObject(pMember); } - - /** Removes a member. - * \param pMember Object to be removed. - */ - virtual bool RemoveMember(FbxObject* pMember) { return DisconnectSrcObject(pMember); } - - /** Returns the number of objects contained within the collection. - * \return The number of objects the collection contains. - */ - inline int GetMemberCount () const { return GetSrcObjectCount(); } - - /** Returns the member of the collection at the given index. - * \param pIndex The given index. - * \return The member of the collection at the given index. - */ - inline FbxObject* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Judges whether an object is a part of the collection. - * \param pMember The member to be judged. - * \return \c True if it is a member of the collection, returns \c false if it is not a member. - */ - virtual bool IsMember(const FbxObject* pMember) const; - //@} - - /** - * \name Templated member management - */ - //@{ - /** Returns the number of class T objects contained within the collection. - * \return The number of objects of class T the collection contains. */ - template inline int GetMemberCount() const { return GetSrcObjectCount(); } - - /** Returns the member of class T at the given index in the collection. - * \param pIndex The given index. - * \return The member of class T at the given index. */ - template inline T* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Searches for a member of class T. - * \param pName Member name. */ - template inline T* FindMember(const char* pName) const { return FindSrcObject(pName); } - //@} - - /** - * \name Criteria based member management - */ - //@{ - /** Returns the number of objects contained within the collection that meet the specified criteria. - * \param pCriteria Defines a set of criteria that each object must meet in order to be included in the results. - * \return The number of objects the collection contains that meet the specified criteria. - */ - inline int GetMemberCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(pCriteria); } - - /** Returns the member at the given index in the collection if it meets the specified criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pIndex The given index. - * \return The member at the given index if it meets the criteria; NULL otherwise. - */ - inline FbxObject* GetMember(const FbxCriteria& pCriteria, int pIndex=0) const { return GetSrcObject(pCriteria, pIndex); } - - /** Searches for a member with the given name that also meets the given criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pName Member name. - * \return The member with the given name if it meets the criteria; NULL if no match could be found. - */ - inline FbxObject* FindMember(const FbxCriteria& pCriteria, const char* pName) const { return FindSrcObject(pCriteria, pName); } - //@} - - /** - * \name Selection management - */ - //@{ - /** Selects/Deselects all the contained objects. - * \param pSelection If \c true, all objects are selected, if \c false, all objects are deselected. - */ - virtual void SetSelectedAll(bool pSelection); - //@} -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h deleted file mode 100644 index c98c03e..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollectionexclusive.h -#ifndef _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ -#define _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ - -#include - -#include - -#include - -/** Class for exclusive collections. An object (FbxObject) should belong to only one exclusive collection at most. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCollectionExclusive : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxCollectionExclusive, FbxCollection); - -public: - /** Add a member if it's not a member of any other FbxCollectionExclusive objects. - * \param pMember Object to be added - */ - bool AddMember(FbxObject* pMember) override; -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainer.h deleted file mode 100644 index c9775ab..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainer.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainer.h -#ifndef _FBXSDK_SCENE_CONTAINER_H_ -#define _FBXSDK_SCENE_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** Generic container for object grouping and encapsulation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxContainer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainer, FbxObject); - -public: - /** - * \name Container dynamic attributes - */ - //@{ - /** Create a new property. - * \param pName Name of the property - * \param pType Type of the property - * \param pLabel Label of the property - * \return the newly created property - */ - FbxProperty CreateProperty(FbxString pName, FbxDataType & pType, FbxString pLabel); - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the template name information of the container - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateName; - - /** This property contains the template path information of the container - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplatePath; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateVersion; - - /** This property contains the view name information of the container - * - * To access this property do: ViewName.Get(). - * To set this property do: ViewName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ViewName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxContainerTemplate* mContainerTemplate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h deleted file mode 100644 index ed50e8a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainertemplate.h -#ifndef _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ -#define _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ - -#include - -#include - -#include - -//Container Template tokens -#define FBXSDK_CONTAINER_TEMPLATE_STR "templates" -#define FBXSDK_TEMPLATE_STR "template" -#define FBXSDK_EXTENDS_TEMPLATE_STR "extends" - -struct FbxContainerTemplate_internal; - -/** Class for Container Template files. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxContainerTemplate : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainerTemplate, FbxObject); - -public: - /** Parse template file to get extend templates. - * \param pTemplateFilePath The template file to be parsed. - * \param pExtendTemplateNames Fill extend templates' names to this array. - * \remark Call this function to get extend templates' names. - */ - void ParseTemplateFile(const char* pTemplateFilePath, FbxArray& pExtendTemplateNames); - - /** Add extend template path. - * \param pExtendTemplatePath The template file path to be added. - */ - void AddExtendTemplatePath(const char* pExtendTemplatePath); - - /** Get the (pIndex)th extend template path. - * \param pIndex Index of the queried item. - * \return The (pIndex)th extend template path. - */ - char* GetExtendTemplatePathAt(FbxUInt pIndex) const; - - /** Get the count of extend template path. - * \return The count of extend template path. - */ - FbxUInt GetExtendTemplateCount() const; - - /** Clear the extend template path. - */ - void ClearExtendTemplatePath(); - - /** This property contains the template name. - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateName; - - /** This property contains the template path. - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePath; - - /** This property contains the template package name. - * - * To access this property do: TemplatePackageName.Get(). - * To set this property do: TemplatePackageName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePackageName; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxContainerTemplate_internal* mData; - FbxArray mExtendTemplatePaths; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h deleted file mode 100644 index f96d754..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdisplaylayer.h -#ifndef _FBXSDK_SCENE_DISPLAY_LAYER_H_ -#define _FBXSDK_SCENE_DISPLAY_LAYER_H_ - -#include - -#include - -#include - -/** Class for display layers. -* \nosubgrouping -* Display layers are overlapping views of your scene that contain a list of members. -* The members are exclusive. Members cannot be part of multiple display layers. -* Display layers enables user to organize elements of scene and affect visibility and manipulation attributes of multiple objects at once. -*/ -class FBXSDK_DLL FbxDisplayLayer : public FbxCollectionExclusive -{ - FBXSDK_OBJECT_DECLARE(FbxDisplayLayer, FbxCollectionExclusive); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores the color of this display layer. - * - * Default value is FbxDouble3(0.8,0.8,0.8). - */ - FbxPropertyT Color; - /** This property stores the visibility of this display layer. - * - * Default value is true. - */ - FbxPropertyT Show; - /** This property stores the manipulation state of this display layer. - * - * Default value is false. - */ - FbxPropertyT Freeze; - /** This property stores the level of detail mode of this display layer. - * - * Default value is false. - */ - FbxPropertyT LODBox; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - // Default property values - static const FbxDouble3 sColorDefault; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DISPLAY_LAYER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocument.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocument.h deleted file mode 100644 index 6db8523..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocument.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocument.h -#ifndef _FBXSDK_SCENE_DOCUMENT_H_ -#define _FBXSDK_SCENE_DOCUMENT_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxTakeInfo; -class FbxPeripheral; -class FbxDocumentInfo; - -/** FbxDocument is a base class for FbxScene and FbxLibrary classes. - * A document is a collection (FbxCollection) of objects (FbxObject), called the root member objects. - * This is because these objects each form the root of an object graph. The manager (FbxManager) has access to all - * documents, scenes and libraries. - * - * A document can be contained in another document, thus, a hierarchy of documents - * can be built. The root of all documents is simply called the root document. - * - * A document manages animation stacks (FbxAnimStack). It also provides access to animation stack information (FbxTakeInfo). - * - * A document carries information in its FbxDocumentInfo. - * - * Documents manage peripherals to load and unload objects (see class FbxPeripheral), - * as well as references to other objects or documents. - * - * Error management is also available. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxDocument : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxDocument, FbxCollection); - -public: - /** - * \name Properties - */ - //@{ - FbxPropertyT Roots; - //@} - - /** - * \name Document Member Manager - */ - //@{ - //! Remove document members and restore default settings. - void Clear() override; - - /** Add a member object and connect it to Roots. - * \param pMember Object to add to the document. - */ - inline void AddRootMember(FbxObject* pMember){ AddMember(pMember); Roots.ConnectSrcObject(pMember); } - - /** Remove a member object from the document. - * \param pMember Object to remove from the document. - */ - inline void RootRootRemoveMember(FbxObject* pMember){ RemoveMember(pMember); Roots.DisconnectSrcObject(pMember); } - - /** Find a member object in the document, that has the given type and name. - * \param pName Member name. */ - template inline T* FindRootMember(const char* pName){ return Roots.FindSrcObject(pName); } - - //! Return the number of objects in the document. - inline int GetRootMemberCount () const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of class T in the document. - * \return The number of objects of class T in the document. */ - template inline int GetRootMemberCount() const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of the document that satisfy the given criteria. - * \param pCriteria Criteria for selecting objects. - * \return The number of objects satisfying the given criteria. - */ - int GetRootMemberCount(FbxCriteria pCriteria) const; - - /** Return the member of the document at given index. - * \param pIndex Selection index. - */ - inline FbxObject* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the member of class T of the document at given index. - * \param pIndex Selection index. */ - template inline T* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the document member which satisfies given criteria, for given index. - * \param pCriteria Criteria for selecting objects. - * \param pIndex Selection index. - */ - FbxObject* GetRootMember(FbxCriteria pCriteria, int pIndex=0) const; - - /** Is an object part of the document. - * \param pMember Queried object. - * \return \c true if pMember is an object part of the document, \c false otherwise. - */ - virtual bool IsRootMember(FbxObject* pMember) const; - //@} - - - /** - * \name Document information - */ - //@{ - /** Get the document information. - * \return Pointer to the document information object. - */ - FbxDocumentInfo* GetDocumentInfo() const; - - /** Set the document information. - * \param pSceneInfo Pointer to the document information object. - */ - void SetDocumentInfo(FbxDocumentInfo* pSceneInfo); - //@} - - /** - * \name Offloading management - * - * Documents manage peripherals to load and unload objects (see - * class FbxPeripheral). A peripheral manipulates the content - * of an object. For instance, a peripheral can load the connections - * of an object on demand. - * - * The document does not own the peripheral therefore - * it will not attempt to delete it at destruction time. Cloning - * the document will share the pointer to the peripheral across - * the cloned objects. The assignment operator has a similar behavior. - */ - //@{ - /** Set the current peripheral to be used to load or unload objects from this document. - * \param pPeripheral The peripheral to be set. - */ - void SetPeripheral(FbxPeripheral* pPeripheral); - - /** Retrieve the current peripheral of the document. - * \return Current peripheral. - */ - FbxPeripheral* GetPeripheral() override; - - /** Unload all the unloadable objects contained in the document using the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of objects that the document has been able to unload. - */ - int UnloadContent(FbxStatus* pStatus = NULL); - - /** Load all the objects contained in the document with the data from the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of loaded objects. - */ - int LoadContent(FbxStatus* pStatus = NULL); - - //@} - - /** - * \name Referencing management - */ - //@{ - - /** - * Fills an array of pointers to documents that reference objects in this document. - * - * \param pReferencingDocuments Array of pointers to documents. - * \returns Number of documents that reference objects in this document. - */ - int GetReferencingDocuments(FbxArray& pReferencingDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pFromDoc) - * that reference objects in this document. - * - * \param pFromDoc Pointer to the document containing referencing objects. - * \param pReferencingObjects Array of pointers to referencing objects. - * \returns Number of objects that reference objects in this document. - */ - int GetReferencingObjects(const FbxDocument* pFromDoc, FbxArray& pReferencingObjects) const; - - /** - * Fills an array of pointers to documents that are referenced by objects in this document. - * - * \param pReferencedDocuments Array of pointers to documents. - * \returns Number of documents that are referenced by objects in this document. - */ - int GetReferencedDocuments(FbxArray& pReferencedDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pToDoc) - * that are referenced by objects in this document. - * - * \param pToDoc Pointer to the document containing referenced objects. - * \param pReferencedObjects Array of pointers to referenced objects. - * \returns Number of objects that are referenced by objects in this document. - */ - int GetReferencedObjects(const FbxDocument* pToDoc, FbxArray& pReferencedObjects) const; - - /** - * Gets the path string to the root document, if the current document is contained in another document. - \returns Path to the root document. - */ - FbxString GetPathToRootDocument(void) const; - /** - * Gets the document path to the root document as an array of documents, if the current document is contained in another document. - * \param pDocumentPath Array of FbxDocument to store the document path. - * \param pFirstCall Recursive flag: always use pFirstCall = \c true. - */ - void GetDocumentPathToRootDocument(FbxArray& pDocumentPath, bool pFirstCall = true) const; - - /** - * Tells if this document is a root document. - \return \c false if the current document is contained in another document, \c true otherwise. - */ - bool IsARootDocument(void) { return (NULL == GetDocument()); } - //@} - - /** - * \name Animation Stack Management - * \remarks Animation stacks replaces the deprecated takes. - */ - //@{ - /** Holds the name of the FbxAnimStack that the application uses for animation in this document. - */ - FbxPropertyT ActiveAnimStackName; - - /** Adds a new animation stack object to this document. - * In case of error, FbxDocument::GetLastErrorID() will return - * \c eTakeError. - * \param pName Animation stack name. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if a new FbxAnimStack has been successfully created, - * \c false if an error occurred or if the specified name defines - * a FbxAnimStack that already exists in the document. - */ - bool CreateAnimStack(const char* pName, FbxStatus* pStatus = NULL); - - /** Destroy the animation stack object identified by pName from this document. - * \param pName Name of the animation stack to be deleted. - * \return \c true if the FbxAnimStack has been destroyed and \c false otherwise. - */ - bool RemoveAnimStack(const char* pName); - - /** Fill a string array with all existing animation stack names. - * The array of string is cleared before it is used - * \param pNameArray An array of string objects. - */ - void FillAnimStackNameArray(FbxArray& pNameArray); - - //@} - - /** - * \name Animation Stack Information Management - * \remark Although takes are deprecated, class FbxTakeInfo is not deprecated and - * now contains animation stack information. - */ - //@{ - /** Set information about an animation stack. - * \param pTakeInfo Animation stack information. Field FbxTakeInfo::mName specifies - * the targeted animation stack. - * \return \c true if animation stack is found with this name, and if information is set. - */ - bool SetTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Get information about an animation stack. - * \param pTakeName Name of the targeted animation stack. - * \return Animation stack information, or \c NULL if animation stack isn't found or - * has no information set for this document. - */ - FbxTakeInfo* GetTakeInfo(const FbxString& pTakeName) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - void ConnectVideos(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - void SetDocument(FbxDocument* pDocument) override; - - bool FindTakeName(const FbxString& pTakeName); - - FbxArray mTakeInfoArray; - -private: - FbxPeripheral* mPeripheral; - FbxDocumentInfo* mDocumentInfo; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h deleted file mode 100644 index a108851..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocumentinfo.h -#ifndef _FBXSDK_SCENE_DOCUMENT_INFO_H_ -#define _FBXSDK_SCENE_DOCUMENT_INFO_H_ - -#include - -#include - -#include - -class FbxThumbnail; - -/** This class contains scene thumbnails and user-defined summary data. - */ -class FBXSDK_DLL FbxDocumentInfo : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDocumentInfo, FbxObject); - -public: - /** - * \name Public properties - */ - //@{ - /** This property contains the last saved URL. - * - * To retrieve the value of this property, use LastSavedUrl.Get(). - * To set the value of this property, use LastSavedUrl.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSavedUrl; - - /** This property contains the URL. - * - * To retrieve the value of this property, use Url.Get(). - * To set the value of this property, use Url.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Url; - - /** Parent property for all properties related to creation. These properties - * should be set once when the file is created, and you should not change them - * during subsequent save or reload operations. - * The default properties are listed below, but application vendors can add new - * properties under this parent property. - */ - FbxProperty Original; - - /** This property contains the name of the original application vendor. - * - * To retrieve the value of this property, use Original_ApplicationVendor.Get(). - * To set the value of this property, use Original_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVendor; - - /** This property contains the original application name. - * - * To retrieve the value of this property, use Original_ApplicationName.Get(). - * To set the value of this property, use Original_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationName; - - /** This property contains the version of the original application. - * - * To retrieve the value of this property, use Original_ApplicationVersion.Get(). - * To set the value of this property, use Original_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVersion; - - /** This property contains the original file name. - * - * To retrieve the value of this property, use Original_FileName.Get(). - * To set the value of this property, use Original_FileName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_FileName; - - /** This property contains the original date and time. - * - * To retrieve the value of this property, use Original_DateTime_GMT.Get(). - * To set the value of this property, use Original_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT Original_DateTime_GMT; - - /** The parent property for all last saved-related properties. - * These properties update every time a file is saved. - * The default properties are below, but application vendors can add new - * properties under this parent property. - * The file creator must set both the original and last saved properties. - */ - FbxProperty LastSaved; - - /** This property contains the last saved application vendor. - * - * To retrieve the value of this property, use LastSaved_ApplicationVendor.Get(). - * To set the value of this property, use LastSaved_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVendor; - - /** This property contains the last saved application name. - * - * To retrieve the value of this property, use LastSaved_ApplicationName.Get(). - * To set the value of this property, use LastSaved_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationName; - - /** This property contains the last saved application version. - * - * To retrieve the value of this property, use LastSaved_ApplicationVersion.Get(). - * To set the value of this property, use LastSaved_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVersion; - - /** This property contains the last saved date and time. - * - * To retrieve the value of this property, use LastSaved_DateTime_GMT.Get(). - * To set the value of this property, use LastSaved_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT LastSaved_DateTime_GMT; - - /** This property points at the ".fbm" folder that is created when - * reading a FBX file that has embedded data. The embedded data - * is not saved in the FBX file. - * - * The default value is empty. - */ - FbxPropertyT EmbeddedUrl; - //@} - - /** \name User-defined summary data. - * These are user-completed fields that identify or classify the files. - */ - //@{ - FbxString mTitle; //! Title. - FbxString mSubject; //! Subject. - FbxString mAuthor; //! Author - FbxString mKeywords; //! Keywords. - FbxString mRevision; //! Revision. - FbxString mComment; //! Comment. - //@} - - /** - * \name Scene Thumbnail. - */ - //@{ - /** Returns the thumbnail for the scene. - * \return Pointer to the thumbnail. - */ - FbxThumbnail* GetSceneThumbnail(); - - /** Sets the thumbnail for the scene. - * \param pSceneThumbnail Pointer to the thumbnail. - */ - void SetSceneThumbnail(FbxThumbnail* pSceneThumbnail); - //@} - - /** Clears the content. - * Resets all the strings to an empty string and clears - * the pointer to the thumbnail. - */ - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxPropertyT SceneThumbnail; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_INFO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxenvironment.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxenvironment.h deleted file mode 100644 index 08a3ac5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxenvironment.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxenvironment.h -#ifndef _FBXSDK_SCENE_ENVIRONMENT_H_ -#define _FBXSDK_SCENE_ENVIRONMENT_H_ - -#include - -#include - -#include - -/** This class contains the description of a scene environment. It contains the properties of sun parameters, - * sky parameters, daylight controller parameters ,environment map parameters - * and cloud map parameters. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEnvironment : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxEnvironment, FbxObject); - -public: -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProvidesLighting() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ENVIRONMENT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxgroupname.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxgroupname.h deleted file mode 100644 index 27d16ee..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxgroupname.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgroupname.h -#ifndef _FBXSDK_SCENE_GROUP_NAME_H_ -#define _FBXSDK_SCENE_GROUP_NAME_H_ - -#include - -#include - -#define MODEL_PREFIX "Model::" -#define MATERIAL_PREFIX "Material::" -#define POSE_PREFIX "Pose::" -#define DEFORMER_PREFIX "Deformer::" -#define CONTAINER_PREFIX "Container::" -#define SUBDEFORMER_PREFIX "SubDeformer::" -#define CONSTRAINT_PREFIX "Constraint::" -#define CONTROLSET_PLUG_PREFIX "ControlSetPlug::" -#define AUDIO_PREFIX "Audio::" -#define AUDIO_LAYER_PREFIX "AudioLayer::" -#define VIDEO_PREFIX "Video::" -#define TEXTURE_PREFIX "Texture::" -#define THUMBNAIL_PREFIX "Thumbnail::" -#define MARKER_SET_PREFIX "MarkerSet::" -#define CONSTRAINT_PREFIX "Constraint::" -#define GEOMETRY_PREFIX "Geometry::" -#define GEOMETRY_WEIGHTED_MAP_PREFIX "GeometryWeightedMap::" -#define SCENE_PREFIX "Scene::" -#define CACHE_PREFIX "Cache::" -#define IMPLEMENTATION_PREFIX "Implementation::" -#define BINDINGTABLE_PREFIX "BindingTable::" -#define BINDINGOPERATOR_PREFIX "BindingOperator::" -#define LAYERED_TEXTURE_PREFIX "LayeredTexture::" -#define PROCEDURAL_TEXTURE_PREFIX "ProceduralTexture::" -#define DOCUMENT_PREFIX "Document::" -#define COLLECTION_PREFIX "Collection::" -#define COLLECTION_EXCLUSIVE_PREFIX "CollectionExclusive::" -#define NODE_ATTRIBUTE_PREFIX "NodeAttribute::" -#define ENVIRONMENT_PREFIX "KFbxEnvironment::" -#define OBJECTMETADATA_PREFIX "ObjectMetaData::" -#define EXPOSURECONTROL_PREFIX "ExposureControl::" - -#define ANIM_STACK_PREFIX "AnimStack::" -#define ANIM_LAYER_PREFIX "AnimLayer::" -#define ANIM_CURVENODE_PREFIX "AnimCurveNode::" -#define ANIM_CURVE_PREFIX "AnimCurve::" -#define ANIM_EVAL_PREFIX "AnimEvaluator::" - -#define SELECTION_SET_PREFIX "SelectionSet::" -#define SELECTION_SET_NODE_PREFIX "SelectionNode::" -#define DISPLAY_LAYER_PREFIX "DisplayLayer::" - -#define SCENEREFERENCE_PREFIX "SceneReference::" - -// Protein 2.0 -#define ADSK_ENVIRONMENT_PREFIX "ADSKEnvironmentDefinition::" -#define ADSK_LIGHT_PREFIX "ADSKLightDefinition::" -#define ADSK_PROCEDURALGEOMETRY_PREFIX "ADSKProceduralGeometryDefinition::" -#define ADSK_SURFACEMATERIAL_PREFIX "ADSKSurfaceMaterialDefinition::" -#define ADSK_TEXTURE_PREFIX "ADSKTextureDefinition::" -#define ADSK_SWATCHSCENE_PREFIX "ADSKSwatchSceneDefinition::" - -#include - -#endif /* _FBXSDK_SCENE_GROUP_NAME_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxlibrary.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxlibrary.h deleted file mode 100644 index c2d5860..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxlibrary.h +++ /dev/null @@ -1,330 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlibrary.h -#ifndef _FBXSDK_SCENE_LIBRARY_H_ -#define _FBXSDK_SCENE_LIBRARY_H_ - -#include - -#include -#include - -#include - -class FbxLocalizationManager; -class FbxCriteria; - -/** This library class represents libraries that store sub-libraries and shading objects. - * Shading objects are objects of class FbxTexture, FbxSurfaceMaterial, and FbxLight. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLibrary : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxLibrary, FbxDocument); - -public: - //! Returns a pointer to the parent library if one exists. - FbxLibrary* GetParentLibrary(void) const; - - /** Sets whether not this library is a system library. - * \param pSystemLibrary A flag which indicates whether or not this library is a system library. - */ - void SystemLibrary(bool pSystemLibrary); - - //! Returns whether or not this library is a system library. - bool IsSystemLibrary() const; - - /** The prefix must not include the dash and language code, nor - * can it contain the extension. But if you want, it can contain - * a folder or sub-folder, such as: locales/mydocloc. - * This is resolved using the XRef Manager, with priority - * given to the library's ".fbm" folder, if one exists. - * \param pPrefix New prefix to be set. - */ - void LocalizationBaseNamePrefix(const char* pPrefix); - - //! Retrieves the localization prefix. - FbxString LocalizationBaseNamePrefix() const; - - // ======================================================================= - // - // sub-library - // - // ======================================================================= - - /** Adds a sub-library - * \param pSubLibrary The sub-library to be added. - * \return \c True if adding the sub-library is successful, returns \c false if not. - */ - bool AddSubLibrary(FbxLibrary* pSubLibrary); - - /** Removes a sub-library - * \param pSubLibrary The sub-library to be removed. - * \return \c True if the sub-library is removed, \c false if not. - */ - bool RemoveSubLibrary(FbxLibrary* pSubLibrary); - - //! Returns the total number of sub-libraries - int GetSubLibraryCount(void) const; - - /** Returns the sub-library at the specified index. - * \param pIndex The sub-library index. - */ - FbxLibrary* GetSubLibrary(int pIndex) const; - - /** Clones the specified asset. - * \param pToClone The asset to be cloned. - * \param pOptionalDestinationContainer The container for the asset copy. - * \remarks The asset and all its dependents are cloned. - */ - FbxObject* CloneAsset( FbxObject* pToClone, FbxObject* pOptionalDestinationContainer = NULL) const; - - - /** Returns a criteria filter which you can use to filter objects - * when iterating items in the library. Only real 'assets' are returned, - * rather than FBX support objects. This currently includes - * lights, environments, materials and textures (maps). - * This is typically used to IMPORT from a library. - */ - static FbxCriteria GetAssetCriteriaFilter(); - - /** Returns a filter which you should use when you clone / export objects. - * This filters out objects that should remain in the asset library. - * - * Use this to EXPORT from a library (or CLONE from a library). - */ - static FbxCriteria GetAssetDependentsFilter(); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \param pAssetFilter The asset filter. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary, const FbxCriteria& pAssetFilter); - - - /** Returns a new instance of a library member. - * This instantiates the first object found that matches the filter. - * \param pFBX_TYPE The type of member - * \param pFilter A user specified filter - * \param pRecurse A flag that indicates whether to check sub-libraries - * \param pOptContainer Optional container for the cloned asset - * \return A new instance of the member. Note that the new member is not included with this library. - */ - template < class T > T* InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse = true, FbxObject* pOptContainer = NULL); - - - // ======================================================================= - // - // Localization - // - // ======================================================================= - /** Returns the localization manager for the library. - */ - - FbxLocalizationManager& GetLocalizationManager() const; - - /** Localization helper function. Calls the FBX SDK manager implementation. - * Sub-classes that manage their own localization can over-ride this function. - * \param pID The identifier for the text to localize. - * \param pDefault The default text. Uses pID if NULL. - * \return The potentially localized text. May return the parameter passed in. - */ - const char* Localize( const char* pID, const char* pDefault = NULL ) const override; - - // ======================================================================= - // - // Shading Object - // - // ======================================================================= - - /** Adds a shading object. - * \param pShadingObject The shading object to be added. - */ - bool AddShadingObject(FbxObject* pShadingObject); - - /** Removes a shading object. - * \param pShadingObject The shading object to be removed. - */ - bool RemoveShadingObject(FbxObject* pShadingObject); - - //! Returns the total number of shading objects - int GetShadingObjectCount(void) const; - - /** Returns the shading object at the specified index. - * \param pIndex Shading object index. - * \return The shading object located at the specified index. - */ - FbxObject* GetShadingObject(int pIndex) const; - - /** Returns the number of shading objects according to their implementations. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns The number of shading objects corresponding to the filtering parameters - */ - int GetShadingObjectCount(const FbxImplementationFilter& pCriteria) const; - - /** Returns a handle on the shading object at the specified index that corresponds to the given filtering parameters. - * \param pIndex Shading object index. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns A handle on the shading object at the specified index that corresponds to the given filtering parameters. - */ - FbxObject* GetShadingObject(int pIndex, const FbxImplementationFilter& pCriteria) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - mutable FbxLocalizationManager* mLocalizationManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template T* FbxLibrary::InstantiateMember(const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer) -{ - //First check all materials in the library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - T* lObject = GetMember(i); - if( pFilter.Match(lObject) ) - return FbxCast(CloneAsset(lObject,pOptContainer)); - } - - if( pRecurse ) - { - // then check all materials in each sub-library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - FbxLibrary* lLibrary = GetMember(i); - T* lClonedObject = lLibrary->InstantiateMember(pFBX_TYPE, pFilter, pRecurse, pOptContainer); - if( lClonedObject ) - return lClonedObject; - } - } - - return NULL; -} - -class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary) - -public: - FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary) - -public: - FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization) - -public: - FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; } - inline FbxLibrary* GetLibrary() const { return mAssetLibrary; } - -private: - FbxLibrary* mAssetLibrary; -}; - -class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject) - -public: - FbxEventMapAssetFileToAssetObject(const char* pFile) : - mAsset(NULL), - mFilePath( pFile ) - { - } - - inline const char* GetFilePath() const { return mFilePath; } - mutable FbxObject* mAsset; - -private: - FbxString mFilePath; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_LIBRARY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxmediaclip.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxmediaclip.h deleted file mode 100644 index a10e57b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxmediaclip.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmediaclip.h -#ifndef _FBXSDK_SCENE_MEDIACLIP_H_ -#define _FBXSDK_SCENE_MEDIACLIP_H_ - -#include - -#include - -#include - -/** FBX SDK media clip class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMediaClip : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxMediaClip, FbxObject); - -public: - /** - *\name Media clip class Reset - */ - //@{ - //! Reset the clip to default values. - virtual void Reset(); - //@} - - /** - * \name Media clip attributes Management - */ - //@{ - /** Specify the media full filename. - * \param pName media full filename. - * \return \c True,if update successfully, \c false otherwise. - */ - virtual bool SetFileName(const char* pName); - - /** Retrieve the media full filename. - * \return Media full filename. - */ - FbxString GetFileName () const; - - /** Specify the media relative filename. - * \param pName Media relative filename. - * \return \c True, if update successfully, \c false otherwise. - */ - virtual bool SetRelativeFileName(const char* pName); - - /** Retrieve the media relative filename. - * \return Media relative filename. - */ - FbxString GetRelativeFileName() const; - - /** Set the clip color. - * The color property can be used to display media clips on the user interface. It has no - * impact on the data itself and only uses the RGB components. - * \param pColor New color of the clip. - */ - void SetColor(FbxColor pColor); - - /** Retrieve the clip color. - * return Clip color. - */ - FbxColor GetColor() const; - - /** Set the play speed of the media clip. - * \param pPlaySpeed Playback speed of the clip. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad playback speed values. - */ - void SetPlaySpeed(double pPlaySpeed); - - /** Retrieve the play speed of the media clip. - * \return Playback speed. - */ - double GetPlaySpeed() const; - - /** Set the clip start time. - * \param pTime Start time of the media file. - */ - void SetClipIn(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipIn() const; - - /** Set the clip end time. - * \param pTime End time of the media file. - */ - void SetClipOut(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipOut() const; - - /** Set the time offset. - * The offset can be used to shift the playback start time of the clip. - * \param pTime Time offset of the clip. - */ - void SetOffset(FbxTime pTime); - - /* Retrieve the time offset. - * \return The current time shift. - */ - FbxTime GetOffset() const; - - /** Set the Free Running state of the media clip. - * The Free Running flag can be used by a client application to implement a - * playback scheme that is independent of the main timeline. - * \param pState State of the Free running flag. - */ - void SetFreeRunning(bool pState); - - /** Retrieve the Free Running state. - * \return Current free running flag. - */ - bool GetFreeRunning() const; - - - /** Set the Loop state of the media clip. - * The Loop flag can be used by a client application to implement the loop - * playback of the media clip. - * \param pLoop State of the loop flag. - */ - void SetLoop(bool pLoop); - - /** Retrieve the Loop state. - * \return Current loop flag. - */ - bool GetLoop() const; - - /** Set the Mute state of the media clip. - * The Mute flag can be used by a client application to implement the muting - * of the media clip. - * \param pMute State of the mute flag. - */ - void SetMute(bool pMute); - - /** Retrieve the Mute state. - * \return Current mute flag. - */ - bool GetMute() const; - - /** Media clip access mode. - */ - enum EAccessMode - { - eDisk, - eMemory, - eDiskAsync - }; - - /** Set the clip Access Mode. - * \param pAccessMode Clip access mode identifier. - */ - void SetAccessMode(EAccessMode pAccessMode); - - /** Retrieve the clip Access Mode. - * \return Clip access mode identifier. - */ - EAccessMode GetAccessMode() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxStringList GetTypeFlags() const override; - - void SetOriginalFormat(bool pState); - bool GetOriginalFormat() const; - void SetOriginalFilename(const char* pOriginalFilename); - const char* GetOriginalFilename() const; - - FbxPropertyT Color; - FbxPropertyT ClipIn; - FbxPropertyT ClipOut; - FbxPropertyT Offset; - FbxPropertyT PlaySpeed; - FbxPropertyT FreeRunning; - FbxPropertyT Loop; - FbxPropertyT Mute; - FbxPropertyT AccessMode; - -protected: - void Init(); - FbxPropertyT Path; - FbxPropertyT RelPath; - - bool mOriginalFormat; - FbxString mOriginalFilename; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMediaClip::EAccessMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_MEDIACLIP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectfilter.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectfilter.h deleted file mode 100644 index dae9265..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectfilter.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectfilter.h -#ifndef _FBXSDK_SCENE_OBJECT_FILTER_H_ -#define _FBXSDK_SCENE_OBJECT_FILTER_H_ - -#include - -#include - -#include - -/** \brief This object represents a filter criteria on an object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxObjectFilter -{ -public: - //! Destructor. - virtual ~FbxObjectFilter() {} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const = 0; - - /** Tells if this filter does NOT match the given object - * \param pObjectPtr The given object. - */ - virtual bool NotMatch(const FbxObject * pObjectPtr) const { return !Match(pObjectPtr); }; -}; - -/**\brief This class represents a name filter on an object. - *\nosubgrouping - */ -class FBXSDK_DLL FbxNameFilter : public FbxObjectFilter -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - /** Constructor - * \param pTargetName The target name. - */ - inline FbxNameFilter( const char* pTargetName ) : mTargetName( pTargetName ) {}; - - //! Destructor. - virtual ~FbxNameFilter() {} - //@} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const { return pObjectPtr ? mTargetName == pObjectPtr->GetName() : false; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mTargetName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_FILTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h deleted file mode 100644 index 3ff1955..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectmetadata.h -#ifndef _FBXSDK_SCENE_OBJECT_META_DATA_H_ -#define _FBXSDK_SCENE_OBJECT_META_DATA_H_ - -#include - -#include - -#include - -/** This class is used to hold meta-data information on nodes. - * \nosubgrouping - * - * This class does not offer any new functionality over a regular FbxObject; - * all meta-data information should be stored in properties. - * - */ -class FBXSDK_DLL FbxObjectMetaData : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxObjectMetaData, FbxObject); -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_META_DATA_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h deleted file mode 100644 index cb8f895..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectscontainer.h -#ifndef _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ -#define _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ - -#include - -#include -#include - -#include - -typedef FbxArray FbxAttributeFilters; - -/* Internal helper class used to traverse scene in the FbxAxisSystem and FbxSystemUnit - */ -class FbxObjectsContainer -{ -public: - enum EDepth - { - eChildOnly, - eChildAndSubChild, - eSubChildWithNoScaleInherit - }; - - FbxObjectsContainer() : mStartNode(NULL) {} - virtual ~FbxObjectsContainer(){ Clear(); } - - // Store all anim curve nodes pointers that need to be converted - FbxArray mFCurvesT; - FbxArray mFCurvesR; - FbxArray mFCurvesS; - - // Store all node that need to be converted - FbxArray mNodes; - -public: - void ExtractSceneObjects(FbxScene* pScene, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void ExtractSceneObjects(FbxNode* pRootNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void Clear() { mFCurvesT.Clear(); mFCurvesR.Clear(); mFCurvesS.Clear(); mNodes.Clear(); mStartNode = NULL; } - -protected: - // Extract all node and fcurve from all take for this node. - void ExtractNodesAnimCurveNodes(FbxNode* pNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - void ExtractAnimCurveNodes(FbxNode* pNode); - bool InheritsScale( FbxNode* pNode ) const; - - FbxNode* mStartNode; -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxpose.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxpose.h deleted file mode 100644 index 344aeb2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxpose.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpose.h -#ifndef _FBXSDK_SCENE_POSE_H_ -#define _FBXSDK_SCENE_POSE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; -class FbxPose; -class FbxNode; -class FbxUserNotification; - -/** This structure contains the description of a named pose. - * FbxPose contains one FbxPoseInfo array to store all of FBX nodes and their transform matrix info. - */ -struct FbxPoseInfo -{ - FbxMatrix mMatrix; //!< Transform matrix of the node. - bool mMatrixIsLocal; //!< If true, the transform matrix above is defined in local coordinates. - FbxNode* mNode; //!< FBX node, which may be skeleton or geometry (skinned) node. -}; - -typedef FbxArray NodeList; -typedef FbxArray PoseList; -typedef FbxArray PoseInfoList; - -/** This class contains the description of a Pose and provide some methods to access Pose info in one FBX scene. - * \nosubgrouping - * The FbxPose object can be setup to hold "Bind Pose" data or "Rest Pose" data. - * - * The Bind Pose holds the transformation (translation, rotation and scaling) - * matrix of all the nodes implied in a link deformation. This includes the geometry - * being deformed, the links deforming the geometry, and recursively all the - * ancestors nodes of the link. The Bind Pose gives you the transformation of the nodes - * at the moment of the binding operation when no deformation occurs. - * - * The Rest Pose is a snapshot of a node transformation. A Rest Pose can be used - * to store the position of every node of a character at a certain point in - * time. This pose can then be used as a reference position for animation tasks, - * like editing walk cycles. - * - * One difference between the two modes is in the validation performed before - * adding an item and the kind of matrix stored. - * - * In "Bind Pose" mode, the matrix is assumed to be defined in the global space, - * while in "Rest Pose" the type of the matrix may be specified by the caller. So - * local system matrices can be used. Actually, because there is one such flag for - * each entry (FbxPoseInfo), it is possible to have mixed types in a FbxPose elements. - * It is therefore the responsibility of the caller to check for the type of the retrieved - * matrix and to do the appropriate conversions if required. - * - * The validation of the data to be added consists of the following steps: - * - * \li If this FbxPose object stores "Bind Poses", then - * add a FbxPoseInfo only if the node is not already - * associated to another "Bind Pose". This check is done - * by visiting ALL the FbxPose objects in the system. - * - * The above test is only performed for the "Bind Pose" type. While - * the next one is always performed, no matter what kind of poses this - * FbxPose object is setup to hold. - * - * \li If a node is already inserted in the FbxPose internal list, - * then the passed matrix MUST be equal to the one already stored. - * If this is not the case, the Add method will return -1, indicating - * that no new FbxPoseInfo has been created. - * - * If the Add method succeeds, it will return the index of the FbxPoseInfo - * structure that as been created and held by the FbxPose object. - * - * To ensure data integrity, the stored information can only be - * accessed using the provided methods (read-only). If an entry needs to be - * modified, the caller has to remove the FbxPoseInfo item by calling Remove(i) - * and then Add a new one. - * - * The internal list is not ordered and the search inside this list is linear - * (from the first element to ... the first match or the end of the list). - * - */ -class FBXSDK_DLL FbxPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxPose,FbxObject); - -public: - /** Set the type of pose. - * \param pIsBindPose If true, type will be bind pose, else rest pose. - */ - void SetIsBindPose(bool pIsBindPose); - - /** Pose identifier flag. - * \return \c true if this object holds BindPose data. - */ - bool IsBindPose() const { return mType == 'b'; } - - /** Pose identifier flag. - * \return \c true if this object holds RestPose data. - */ - bool IsRestPose() const { return mType == 'r'; } - - /** Get number of stored items. - * \return The number of items stored. - */ - int GetCount() const { return mPoseInfo.GetCount(); } - - /** Stores the pose transformation for the given node. - * \param pNode pointer to the node for which the pose is stored. - * \param pMatrix Pose transform of the node. - * \param pLocalMatrix Flag to indicate if pMatrix is defined in Local or Global space. - * \param pMultipleBindPose Flag to indicate if multiple bind pose exist. If this is false, all matrix for one node should be same in different bind pose. - * \return -1 if the function failed or the index of the stored item. - */ - int Add(FbxNode* pNode, const FbxMatrix& pMatrix, bool pLocalMatrix = false, bool pMultipleBindPose = true); - - /** Remove the pIndexth item from the Pose object. - * \param pIndex Index of the item to be removed. - */ - void Remove(int pIndex); - - /** Get the node name. - * \param pIndex Index of the queried item. - * \return The node initial and current names. - * \remarks If the index is invalid an empty FbxNameHandler is returned. - */ - FbxNameHandler GetNodeName(int pIndex) const; - - /** Get the node. - * \param pIndex Index of the queried item. - * \return A pointer to the node referenced. - * \remarks If the index is invalid or no pointer to a node is set, returns NULL. - * The returned pointer will become undefined if the FbxPose object is destroyed. - */ - FbxNode* GetNode(int pIndex) const; - - /** Get the transform matrix. - * \param pIndex Index of the queried item. - * \return A reference to the pose matrix. - * \remarks If the index is invalid a reference to an identity matrix is returned. - * The reference will become undefined if the FbxPose object is destroyed. - */ - const FbxMatrix& GetMatrix(int pIndex) const; - - /** Get the type of the matrix. - * \param pIndex Index of the queried item. - * \return \c true if the matrix is defined in the Local coordinate space and false otherwise. - * \remarks If the FbxPose object is configured to hold BindPose data, this method will always return \c false. - */ - bool IsLocalMatrix(int pIndex) const; - - /** - * \name Search Section - */ - //@{ - /** This structure defines the strategy of comparing FBX node name. - * FBX node has an initial name and a current name (refer to FbxNameHandler). The structure defines which name to use when compare two nodes. - */ - enum ENameComponent - { - eInitialNameComponent = 1, //! use initial name when compare two nodes - eCurrentNameComponent = 2, //! use current name when compare two nodes - eAllNameComponents = 3 //! use both initial and current name when compare two nodes, it's true if one or both matched - }; - - /** Look in the FbxPose object for the given node name. - * \param pNodeName Name of the node we are looking for. - * \param pCompareWhat Bitwise or of the following flags: INTIALNAME_COMPONENT, eCurrentNameComponent - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNameHandler& pNodeName, char pCompareWhat = eAllNameComponents) const; - - /** Look in the FbxPose object for the given node. - * \param pNode the node we are looking for. - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNode* pNode) const; - //@} - - /** - * \name Utility Section - */ - //@{ - /** Get the list of Poses objects that contain the node with name pNodeName. - * This method will look in all the poses of all the scenes. - * \param pManager The manager owning the poses and scenes. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of Poses objects that contain the node with name pNodeName. - * \param pScene Scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Check this BindPose and report an error if all the conditions to a valid bind pose are not - * met. The conditions are: - * - * \li a) We are a BindPose. - * \li b) For every node in the bind pose, all their parent node are part of the bind pose. - * \li c) All the deforming nodes are part of the bind pose. - * \li d) All the parents of the deforming nodes are part of the bind pose. - * \li e) Each deformer relative matrix correspond to the deformer Inv(bindMatrix) * deformed Geometry bindMatrix. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \return true if all the above conditions are met and false otherwise. - * \remarks - * a) If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - * \remarks - * b) If the returned value is false, querying for the error will return the reason of the failure. - * As soon as one of the above conditions is not met, this method return ignoring any subsequent errors. - * Run the IsBindPoseVerbose if more details are needed. - */ - bool IsValidBindPose(FbxNode* pRoot, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes (stored in the appropriate array). It is then up to the - * caller to fill the UserNotification if desired. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMissingAncestors Each ancestor missing from the BindPose is added to this list. - * \param pMissingDeformers Each deformer missing from the BindPose is added to this list. - * \param pMissingDeformersAncestors Each deformer ancestors missing from the BindPose is added to this list. - * \param pWrongMatrices Nodes that yield to a wrong matrix comparisons are added to this list. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, NodeList& pMissingAncestors, NodeList& pMissingDeformers, NodeList& pMissingDeformersAncestors, NodeList& pWrongMatrices, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes and send them directly to the UserNotification. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pUserNotification Pointer to the user notification where the messages will be accumulated. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If the pUserNotification parameter is NULL, this method will call IsValidBindPose(). - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, FbxUserNotification* pUserNotification, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - - //Returns false if pNode is already inserted in the list and the current matrix is different from the stored one. Also, if this pose is a rest pose, check if - //pNode belongs to other BindPoses (accessed through the scene pointer). pPos will contains the index of the FbxPoseInfo if the parameters are already stored in this object. - bool ValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - - bool LocalValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - static bool GetSpecificPoseContaining(int poseType, FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - -private: - FbxPoseInfo* GetItem(int pIndex) const; - void UpdatePosInfoList(); - bool IsValidBindPoseCommon(FbxNode* pRoot, NodeList* pMissingAncestors, NodeList* pMissingDeformers, NodeList* pMissingDeformersAncestors, NodeList* pWrongMatrices, FbxStatus* pStatus, double pMatrixCmpTolerance=0.0001); - - char mType; - PoseInfoList mPoseInfo; - bool mPoseInfoIsDirty; - FbxPropertyT Nodes; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_POSE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxreference.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxreference.h deleted file mode 100644 index 0e0f2c4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxreference.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreference.h -#ifndef _FBXSDK_SCENE_REFERENCE_H_ -#define _FBXSDK_SCENE_REFERENCE_H_ - -#include - -#include - -#include - -/** Contains information about a referenced file. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxSceneReference : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSceneReference, FbxObject); - -public: - /// \name Basic properties - //@{ - //! Path to the referenced file. - FbxPropertyT< FbxString > ReferenceFilePath; - //! Referenced file's namespace. - FbxPropertyT< FbxString > ReferenceNameSpace; - //! Referenced file's node name. - FbxPropertyT< FbxString > ReferenceNodeName; - //! Referenced file's node depth. - FbxPropertyT< FbxInt> ReferenceDepth; - //! \c True if referenced file is loaded. - FbxPropertyT< FbxBool > IsLoaded; - //! \c True if referenced file is locked. - FbxPropertyT< FbxBool > IsLocked; - //@} - - /// \name Proxy related properties. - //@{ - //! \c True if referenced file is the original proxy. - FbxPropertyT< FbxBool > IsOriginalProxy; - - //! \c True if referenced file is active. - FbxPropertyT< FbxBool > IsActiveProxy; - - //! The name of proxy manager where the referenced file's proxy can be found. - FbxPropertyT< FbxString > ProxyManagerName; - /** Referenced file's proxy tag. - * \remarks Proxy tags are unique names assigned to proxy references to more easily manage those references in Maya. - */ - FbxPropertyT< FbxString > ProxyTag; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_REFERENCE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxscene.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxscene.h deleted file mode 100644 index bededb5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxscene.h +++ /dev/null @@ -1,491 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscene.h -#ifndef _FBXSDK_SCENE_H_ -#define _FBXSDK_SCENE_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxGeometry; -class FbxTexture; -class FbxSurfaceMaterial; -class FbxCharacter; -class FbxControlSetPlug; -class FbxGenericNode; -class FbxPose; -class FbxCharacterPose; -class FbxVideo; -class FbxGlobalLightSettings; -class FbxGlobalCameraSettings; - -/** This class contains the description of a 3D scene. It contains the nodes (including the root node) (FbxNode), - * materials, textures, videos, gobos, - * poses, characters, character poses, control set plugs, - * generic nodes, - * scene information, global settings, - * and a global evaluator. - * The nodes are structured in a tree under the scene's root node. - * - * When an object is created using the FBX SDK, a scene is usually passed as argument to the - * object creation function to specify that the object belongs to this scene. - * At this point, a connection is made with the object as source and the scene as destination. - * - * All objects in the scene can be queried by connection index. In addition, - * generic nodes, materials, and textures can also be queried by name. In this latter case, the - * first object with the queried name will be returned. - * - * The global evaluator (FbxAnimEvaluator) is used to compute animation values - * for animated scenes. - * \nosubgrouping - */ -class FBXSDK_DLL FbxScene : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxScene, FbxDocument); - -public: - //! \name Scene Management - //@{ - //! Clear the scene content by deleting the node tree below the root node and restoring default settings. - void Clear() override; - - /** Get the root node of the scene. - * \return Pointer to the root node. - * \remarks This node is not saved. Do not use it to apply a global transformation to the node hierarchy. If a global transformation must be applied, insert a new node below this one. */ - FbxNode* GetRootNode() const; - //@} - - //! \name Texture Material and Video Access - //@{ - /** Clear, then fill, a texture array with all existing textures included in the scene. - * \param pTextureArray An array of texture pointers. */ - void FillTextureArray(FbxArray& pTextureArray); - - /** Clear, then fill, a material array with all existing materials included in the scene. - * \param pMaterialArray An array of material pointers. */ - void FillMaterialArray(FbxArray& pMaterialArray); - //@} - - //! \name Generic Node Access - //@{ - /** Get number of generic nodes in the scene. - * \return Number of Generic Nodes in this scene. */ - int GetGenericNodeCount() const; - - /** Get generic node at given index. - * \param pIndex Position in the list of the generic nodes. - * \return Pointer to the generic node or \c NULL if the index is out of bounds. - */ - FbxGenericNode* GetGenericNode(int pIndex); - - /** Access a generic node from its name. - * \param pName Name of the generic node. - * \return found generic node - */ - FbxGenericNode* GetGenericNode(const char* pName); - - /** Add a generic node to this scene. - * \param pGenericNode Pointer to the generic node to be added. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. */ - bool AddGenericNode(FbxGenericNode* pGenericNode); - - /** Remove the generic node from this scene. - * \param pGenericNode Pointer to the generic node to be removed. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. - * \remarks The pointed object is not referenced by the scene anymore but is not deleted. */ - bool RemoveGenericNode(FbxGenericNode* pGenericNode); - //@} - - - //! \name Character Management - //@{ - /** Get number of characters. - * \return Number of characters in this scene. */ - int GetCharacterCount() const; - - /** Get character at given index. - * \param pIndex Position in the list of the characters. - * \return Pointer to the character or \c NULL if index is out of bounds. */ - FbxCharacter* GetCharacter(int pIndex); - - /** Create a new character. - * \param pName Name given to character. - * \return Index of the created character. */ - int CreateCharacter(const char* pName); - - /** Destroy character. - * \param pIndex Specify which character to destroy. */ - void DestroyCharacter(int pIndex); - //@} - - //! \name ControlSetPlug Management - //@{ - /** Get number of ControlSetPlugs. - * \return Number of ControlSet plugs in this scene. */ - int GetControlSetPlugCount() const; - - /** Get ControlSetPlug at given index. - * \param pIndex Position in the list of the ControlSetPlug - * \return Pointer to ControlSetPlug or \c NULL if index is out of bounds. */ - FbxControlSetPlug* GetControlSetPlug(int pIndex); - - /** Create a new ControlSetPlug. - * \param pName Name given to ControlSetPlug. - * \return Index of created ControlSetPlug. */ - int CreateControlSetPlug(const char* pName); - - /** Destroy ControlSetPlug. - * \param pIndex Specify which ControlSetPlug to destroy. */ - void DestroyControlSetPlug(int pIndex); - //@} - - //! \name Character Pose Management - //@{ - /** Get number of character poses. - * \return Number of character poses in this scene. - * \remarks Character Poses and Poses are two distinct entities having their own lists. */ - int GetCharacterPoseCount() const; - - /** Get character pose at given index. - * \param pIndex Position in the list of character poses. - * \return Pointer to the character pose or \c NULL if index is out of bounds. */ - FbxCharacterPose* GetCharacterPose(int pIndex); - - /** Create a new character pose. - * \param pName Name given to character pose. - * \return Index of created character pose. */ - int CreateCharacterPose(const char* pName); - - /** Destroy character pose. - * \param pIndex Specify which character pose to destroy. */ - void DestroyCharacterPose(int pIndex); - //@} - - //! \name Pose Management - //@{ - /** Get number of poses. - * \return Number of poses in the scene. - * \remarks Poses and Character Poses are two distinct entities having their own lists. */ - int GetPoseCount() const; - - /** Get pose at given index. - * \param pIndex Position in the list of poses. - * \return Pointer to the pose or \c NULL if index is out of bounds. */ - FbxPose* GetPose(int pIndex); - - /** Add a pose to this scene. - * \param pPose The pose (for example: bind pose, rest pose) to be added to the scene. - * \return If the pose is correctly added to the scene, return \c true. Otherwise, if the pose is already in the scene, return \c false. */ - bool AddPose(FbxPose* pPose); - - /** Remove the specified pose from the scene. - * \param pPose The pose (for example: bind pose, rest pose) to be removed from the scene. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(FbxPose* pPose); - - /** Remove the pose at the given index from the scene. - * \param pIndex Index of the pose to be removed. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(int pIndex); - //@} - - //! \name Scene information - //@{ - /** Get the scene information. - * \return Pointer to the scene information object. */ - FbxDocumentInfo* GetSceneInfo() { return GetDocumentInfo(); } - - /** Set the scene information. - * \param pSceneInfo Pointer to the scene information object. */ - void SetSceneInfo(FbxDocumentInfo* pSceneInfo) { SetDocumentInfo(pSceneInfo); } - //@} - - //! \name Global Settings - //@{ - /** Access global settings. - * \return Reference to the Global Settings. */ - FbxGlobalSettings& GetGlobalSettings(); - - /** Const access to global settings. - * \return Const reference to the Global Settings. */ - const FbxGlobalSettings& GetGlobalSettings() const; - //@} - - /** \name Scene Animation Evaluation - * The scene's animation evaluator is used to compute animation values for animated scenes. A typical - * usage would be to compute the global transform matrix of a node \c lNode at a given time \c lTime. - * \code - FbxAMatrix& lGlobalMatrix = lNode->GetScene()->GetAnimationEvaluator()->GetNodeGlobalTransform(lNode, lTime); - - or the exact equivalent: - - FbxAMatrix& lGlobalMatrix = lNode->EvaluateGlobalTransform(lTime); - * \endcode - * - * The user can create one or more evaluators in the scene. The default evaluator is set using SetEvaluator. When - * GetEvaluator is called, if the scene has no evaluator, an evaluator is created with default values. */ - //@{ - /** Set the current animation stack context used by the animation evaluator. - * \param pAnimStack The animation stack to set as current. - * \remark Changing the current animation stack will also cause the animation evaluator to reset its state. */ - void SetCurrentAnimationStack(FbxAnimStack* pAnimStack); - - /** Retrieve the current animation stack. - * \return the current animation stack. If none were set previously, the default one will be returned if it exists. */ - FbxAnimStack* GetCurrentAnimationStack(); - - /** Set the global evaluator used by this scene evaluation engine. - * \param pEvaluator The evaluator to be used for evaluation processing of this scene. */ - void SetAnimationEvaluator(FbxAnimEvaluator* pEvaluator); - - /** Get the global evaluator used by this scene evaluation engine. - * If no evaluator were previously set, this function will return either the first evaluator found attached to this scene, or a new default evaluator. - * \return The evaluator to be used for evaluation processing of this scene. */ - FbxAnimEvaluator* GetAnimationEvaluator(); - //@} - - /** Clear then fill a pose array with all existing pose included in the scene. - * \param pPoseArray An array of pose pointers. */ - void FillPoseArray(FbxArray& pPoseArray); - - //! \name Material Access - //@{ - /** Get number of materials. - * \return Number of materials in this scene. */ - int GetMaterialCount() const; - - /** Get the material at the given index. - * \param pIndex Position in the list of materials. - * \return Pointer to the material or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetMaterialCount(). */ - FbxSurfaceMaterial* GetMaterial(int pIndex); - - /** Get the material by its name. - * \param pName Name of the material. - * \return Pointer to the material or \c NULL if not found. */ - FbxSurfaceMaterial* GetMaterial(const char* pName); - - /** Add the material to this scene. - * \param pMaterial Pointer to the material to be added. - * \return true on successful addition. */ - bool AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove the material from this scene. - * \param pMaterial Pointer to the material to be removed. - * \return true on successful removal. */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - //@} - - //! \name Texture Access - //@{ - /** Get number of textures (type FbxTexture). - * \return Number of textures in this scene. Includes types FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * \remarks To get the number of textures of a specific type, use GetSrcCount(). For example: - * \code - * int lNbFileTextures = lScene->GetSrcObjectCount(); - * int lNbLayeredTextures = lScene->GetSrcObjectCount(); - * int lNbProceduralTextures = lScene->GetSrcObjectCount(); - * \endcode */ - int GetTextureCount() const; - - /** Get the texture at the given index. pIndex must be between 0 and GetTextureCount(). - * \param pIndex Position in the list of textures. - * \return Pointer to the texture or \c NULL if the index is out of bounds. - * \remarks To get the texture of a specific texture type, use GetSrcObject(). For example: - * \code - * FbxFileTexture* lFileTexture = lScene->GetSrcObject(i); - * FbxLayeredTexture* lLayeredTexture = lScene->GetSrcObject(i); - * FbxProceduralTexture* lProceduralTexture = lScene->GetSrcObject(i); - * \endcode */ - FbxTexture* GetTexture(int pIndex); - - /** Get the texture by its name. - * \param pName Name of the texture. - * \return Pointer to the texture or \c NULL if not found. */ - FbxTexture* GetTexture(const char* pName); - - /** Add the texture to this scene. - * \param pTexture Pointer to the texture to be added. - * \return \c true on successful addition. */ - bool AddTexture(FbxTexture* pTexture); - - /** Remove the texture from this scene. - * \param pTexture Pointer to the texture to be removed. - * \return \c true on successful removal. */ - bool RemoveTexture(FbxTexture* pTexture); - //@} - - //! \name Node Access - //@{ - /** Get number of nodes. - * \return Number of nodes in this scene. */ - int GetNodeCount() const; - - /** Get the node at the given index. - * \param pIndex Position in the list of nodes. - * \return Pointer to the node or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetNodeCount(). */ - FbxNode* GetNode(int pIndex); - - /** Add the node to this scene. - * \param pNode Pointer to the node to be added. - * \return true on successful addition. */ - bool AddNode(FbxNode* pNode); - - /** Remove the node from this scene. - * \param pNode Pointer to the node to be removed. - * \return true on successful removal. */ - bool RemoveNode(FbxNode* pNode); - - /** Helper method for determining the number of nodes that have curves on surface attributes in the scene. Since the curve-on-surface - * nodes are connected to nurbs geometry and not any FbxNode in the scene, they won't normally be picked up in a graph traversal. - * \return The number of curve-on-surface nodes in the scene */ - int GetCurveOnSurfaceCount(); - - /** Get the first node with this name. - * \param pName Name of the node. - * \return Pointer to the node, or \c NULL if node is not found. */ - FbxNode* FindNodeByName(const FbxString& pName); - //@} - - //! \name Geometry Access - //@{ - /** Get number of geometries. - * \return Number of geometries in this scene. */ - int GetGeometryCount() const; - - /** Get the geometry at the given index. - * \param pIndex Position in the list of geometries. - * \return Pointer to the geometry or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetGeometryCount(). */ - FbxGeometry* GetGeometry(int pIndex); - - /** Add the geometry to this scene. - * \param pGeometry Pointer to the geometry to be added. - * \return true on successful addition. */ - bool AddGeometry(FbxGeometry* pGeometry); - - /** Remove the geometry from this scene. - * \param pGeometry Pointer to the geometry to be removed. - * \return true on successful removal. */ - bool RemoveGeometry(FbxGeometry* pGeometry); - //@} - - //! \name Video Access - //@{ - /** Get number of videos. - * \return Number of videos in this scene. */ - int GetVideoCount() const; - - /** Get the video at the given index. - * \param pIndex Position in the list of videos. - * \return Pointer to the video or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetVideoCount(). */ - FbxVideo* GetVideo(int pIndex); - - /** Add the video to this scene. - * \param pVideo Pointer to the video to be added. - * \return true on successful addition. */ - bool AddVideo(FbxVideo* pVideo); - - /** Remove the video from this scene. - * \param pVideo Pointer to the video to be removed. - * \return true on successful removal. */ - bool RemoveVideo(FbxVideo* pVideo); - //@} - - /** \name Utilities */ - //@{ - /** Synchronize all the Show properties of node instances. - * Walks all the node attributes defined in the scene and synchronize the Show property of all the nodes that reference the node attribute so that they all contain the same value. - * This method should be called after the FBX scene is completely created, typically right after the calls to the FbxImporter::Import() or just before the calls to the FbxExporter::Export(). - * \remarks Applications only need to call this method if their interpretation of the Show property implies that setting the Show state on one instance affect all of them. - * \see FbxNode::Visibility property, FbxNode::Show property */ - void SyncShowPropertyForInstance(); - - /** Compute the bounding box and its center for all (or selected) nodes. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pSelected If \c true, only take into account selected geometry, otherwise take all geometry into account. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool ComputeBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, bool pSelected=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void ConvertNurbsSurfaceToNurbs(); - void ConvertMeshNormals(); - void ConvertNurbsCurvesToNulls(); - void ConnectTextures(); - void BuildTextureLayersDirectArray(); - void FixInheritType(FbxNode *pNode); - - void UpdateScaleCompensate(FbxNode *pNode, FbxIOSettings& pIOS); - - FbxClassId ConvertAttributeTypeToClassID(FbxNodeAttribute::EType pAttributeType); - - // These data structures are only used for legacy FBX files (version 6.x and earlier). The - // validity of their content is not guaranteed with the most recent versions. - FbxGlobalLightSettings& GlobalLightSettings() { return *mGlobalLightSettings; } - FbxGlobalCameraSettings& GlobalCameraSettings() { return *mGlobalCameraSettings; } - - // Clone this scene object (and everything else it contains if clone type is eDeepClone) - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - FbxObject& Copy(const FbxObject& pObject) override; - - void ConnectMaterials(); - - void BuildMaterialLayersDirectArray(); - void ReindexMaterialConnections(); // called to make sure that eIndex is remapped to eIndexToDirect - - FbxMultiMap* AddTakeTimeWarpSet(const char *pTakeName); - FbxMultiMap* GetTakeTimeWarpSet(const char *pTakeName); - - // This function will destroy the scene (and all the objects directly connected to it) without sending - // the Connect notifications nor trying to disconnect the objects first. This is a bypass of the intended - // workflow and should be used with care. - void ForceKill(); - -private: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void ConnectTextureLayerElement(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType, FbxNode* pParentNode); - void BuildTextureLayersDirectArrayForLayerType(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType); - - FbxNode* mRootNode; - FbxGlobalLightSettings* mGlobalLightSettings; - FbxGlobalCameraSettings* mGlobalCameraSettings; - FbxAnimEvaluator* mAnimationEvaluator; - FbxAnimStack* mCurrentAnimationStack; - FbxCharPtrSet mTakeTimeWarpSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionnode.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionnode.h deleted file mode 100644 index 4c7adf8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionnode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionnode.h -#ifndef _FBXSDK_SCENE_SELECTION_NODE_H_ -#define _FBXSDK_SCENE_SELECTION_NODE_H_ - -#include - -#include - -#include - -/** FbxSelectionNode is an auxiliary class for Selection Set. -* \nosubgrouping -* Used to group objects with their components (e.g. vertex, edge, and face), when adding it to a selection set (FbxSelectionSet). -* \see FbxSelectionSet -*/ -class FBXSDK_DLL FbxSelectionNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionNode, FbxObject); - -public: - /** \enum ESelectType SelectionNode type identifier. - * - \e eVertexLevel Vertex level selection. - * - \e eEdgeLevel Edge level selection. - * - \e eFaceLevel Face level selection. - * - \e eObjectLevel Object level selection. - * - \e eSelectTypeCount Number of Select Types. - */ - enum ESelectType - { - eVertexLevel, - eEdgeLevel, - eFaceLevel, - eObjectLevel, - eSelectTypeCount - }; - - /** Set an object whose components or itself is contained in the SelectionNode. - * \param pObject The object whose components or itself is contained in the SelectionNode. - * \return \c true if the object is set successfully. \c false otherwise. - * \remarks It is possible a SDK user will try to set multiple objects to one SelectionNode, but only the last one will be kept. - */ - bool SetSelectionObject(FbxObject* pObject); - - /** Get the object whose components or itself or both are contained in the SelectionNode. - * \return The object whose components or itself or both are contained in the SelectionNode. - */ - FbxObject* GetSelectionObject() const; - - /** To detect if the SelectionNode is valid. - * \return \c true if this is a valid SelectionNode. \c false otherwise. - * \remarks SelectionNode is valid if selection object is set. - * SelectionNode is not valid if no selection object is set. - */ - bool IsValid() const; - - /** \c true means the object itself is also in the selection set; - * \c false means only the object's components are in the selection set, the object is not. - */ - bool mIsTheNodeInSet; - - /** Index array for selected vertices. - */ - FbxArray mVertexIndexArray; - - /** Index array for selected edges. - */ - FbxArray mEdgeIndexArray; - - /** Index array for selected faces. - */ - FbxArray mPolygonIndexArray; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxArray*> mSubTypeSelectArray; - static const char* SELECT_TYPE_NAMES[(int)eSelectTypeCount]; - -protected: - void Construct(const FbxObject* pFrom) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_NODE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionset.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionset.h deleted file mode 100644 index de29194..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxselectionset.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionset.h -#ifndef _FBXSDK_SCENE_SELECTION_SET_H_ -#define _FBXSDK_SCENE_SELECTION_SET_H_ - -#include - -#include -#include - -#include - -/** FBX SDK selection set class. -* \nosubgrouping -* Represents a set of selected objects (FbxObject) and components. This is a non-exclusive (multiple membership) collection. -* Objects (FbxObject) can be added to a FbxSelectionSet directly, but to add components (vertexes, edges, or faces) -* you create a selection node (FbxSelectionNode) to group the object and its components together as a single item to be added. -* \see FbxSelectionNode -*/ -class FBXSDK_DLL FbxSelectionSet : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionSet, FbxCollection); - -public: - /** This property stores annotation of the selection set. - * Default value is "". - */ - FbxPropertyT SelectionSetAnnotation; - - /** - * \name Utility functions - */ - //@{ - - /** Get the selected faces of a specified object. - * \param pObj The specified object. - * \param pPolygonIndexArray The array to take the indices of the selected faces. - * \remarks The indices of selected faces will be put in pPolygonIndexArray. - */ - void GetFaceSelection( FbxObject* pObj,FbxArray& pPolygonIndexArray ) const; - - /** Get the selected edges of a specified object. - * \param pObj The specified object. - * \param pEdgeIndexArray The array to take the indices of the selected edges. - * \remarks The indices of selected face will be put in pEdgeIndexArray. - */ - void GetEdgeSelection( FbxObject* pObj,FbxArray& pEdgeIndexArray ) const; - - /** Get the selected vertices of a specified object. - * \param pObj The specified object. - * \param pVertexIndexArray The array to take the indices of the selected vertices. - * \remarks The indices of selected face will be put in pVertexIndexArray. - */ - void GetVertexSelection( FbxObject* pObj,FbxArray& pVertexIndexArray ) const; - - /** Get list of two types of member in the selection set: SelectionNodes and Directly contained objects. - * \param pSelectionNodeList The array to take selection nodes of the selection set. - * \param pDirectObjectList The array to take directly contained objects of the selection set. - * \remarks There might be two types members for a selection set: selection node and directly contained object. - * They will be listed in pSelectionNodeList and pDirectObjectList separately. - */ - void GetSelectionNodesAndDirectObjects(FbxArray &pSelectionNodeList, FbxArray &pDirectObjectList) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_SET_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxtakeinfo.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxtakeinfo.h deleted file mode 100644 index b1faad3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxtakeinfo.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtakeinfo.h -#ifndef _FBXSDK_SCENE_TAKEINFO_H_ -#define _FBXSDK_SCENE_TAKEINFO_H_ - -#include - -#include -#include -#include - -#include - -class FbxThumbnail; - -/** This FbxTakeLayerInfo structure is used to identify a layer by name and id number. - */ -struct FbxTakeLayerInfo -{ - FbxString mName; - int mId; -}; - -/** This class contains take information from an imported file - * or exported to an output file. - * - * A "take" is in fact a group of animation data grouped by name, so - * the FBX file format can support many "animation takes" in an FBX file to mimic - * how a movie is produced by making many takes of the same scene. - * - * The most used data is the "take name", other data are rarely used. - * Example of use: to get the list of all - * animation take names of FBX file without loading all the scene content. - * When a FbxImporter is initialized, the take information can be read and can be available - * before the long Import() step, this way, we can get the take info data very fast - * since we don't need to load all the animation scene data. - * \code - * // Ex: to get all take names in a FBX file - * for(int lAnimStackCount=0; lAnimStackCount < lImporter->GetAnimStackCount(); lAnimStackCount++) - * { - * FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(lAnimStackCount); - * FbxString lTakeName = lTakeInfo->mName; - * } - * \endcode - */ -class FBXSDK_DLL FbxTakeInfo -{ -public: - - /** Default constructor. - */ - FbxTakeInfo(); - - /** Destructor. - */ - virtual ~FbxTakeInfo(); - - /** Copy Constructor. - * \param pTakeInfo The take information to be copied. - */ - FbxTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Assignment operator. - * \param pTakeInfo The take information to be assigned. . - */ - FbxTakeInfo& operator=(const FbxTakeInfo& pTakeInfo); - - //! Take name. - FbxString mName; - - /** The take name once it is imported in a scene. - * You can modify it if it must be different from the take name in the imported file. - * \remarks This field is only used when importing a scene. - */ - FbxString mImportName; - - //! Take description. - FbxString mDescription; - - /** Import/export flag. - * Set to \c true by default, set to \c false if the take must not be imported or exported. - */ - bool mSelect; - - //! Local time span, set to animation interval if it is left at the default value. - FbxTimeSpan mLocalTimeSpan; - - //! Reference time span, set to animation interval if it is left at the default value. - FbxTimeSpan mReferenceTimeSpan; - - /** Time value for offsetting the animation keys once they are imported in a scene. - * You can modify it if you need the animation of a take to be offset. - * The effect depends on the state of \c mImportOffsetType. - * \remarks This field is only used when importing a scene. - */ - FbxTime mImportOffset; - - /** \enum EImportOffsetType Import offset types. - * - \e eAbsolute - * - \e eRelative - */ - enum EImportOffsetType - { - eAbsolute, - eRelative - }; - - /** Import offset type. - * If set to \c eAbsolute, \c mImportOffset gives the absolute time of - * the first animation key and the appropriate time shift is applied - * to all of the other animation keys. - * If set to \c eRelative, \c mImportOffset gives the relative time - * shift applied to all animation keys. - */ - EImportOffsetType mImportOffsetType; - - /** Copies the layer information from the take information. - * \param pTakeInfo The take information to be copied. - */ - void CopyLayers(const FbxTakeInfo& pTakeInfo); - - //! List of each layer's information. - FbxArray mLayerInfoList; - - //! Current Layer. - int mCurrentLayer; -}; - -#include - -#endif /* _FBXSDK_SCENE_TAKEINFO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxthumbnail.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxthumbnail.h deleted file mode 100644 index a79df4d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxthumbnail.h +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthumbnail.h -#ifndef _FBXSDK_SCENE_THUMBNAIL_H_ -#define _FBXSDK_SCENE_THUMBNAIL_H_ - -#include - -#include - -#include - -class FbxThumbnailMembers; - -/** Simple class to hold RGBA values of a thumbnail image. - * \nosubgrouping - */ -class FBXSDK_DLL FbxThumbnail : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxThumbnail, FbxObject); - -public: - /** - * \name Thumbnail properties - */ - //@{ - - //! Pixel height of the thumbnail image - FbxPropertyT CustomHeight; - - //! Pixel width of the thumbnail image - FbxPropertyT CustomWidth; - - /** \enum EDataFormat Data format. - * - \e eRGB_24 - * - \e eRGBA_32 - */ - enum EDataFormat - { - eRGB_24, // 3 components - eRGBA_32 // 4 components - }; - - /** Set the data format. - * \param pDataFormat Data format identifier. - */ - void SetDataFormat(EDataFormat pDataFormat); - - /** Get the data format. - * \return Data format identifier for the thumbnail. - */ - EDataFormat GetDataFormat() const; - - - /** \enum EImageSize Image size. - * - \e eNotSet - * - \e e64x64 - * - \e e128x128 - * - \e eCustomSize - */ - enum EImageSize - { - eNotSet = 0, - e64x64 = 64, - e128x128 = 128, - eCustomSize = -1 - }; - - /** Set the thumbnail dimensions. - * \param pImageSize Image size identifier. - */ - void SetSize(EImageSize pImageSize); - - /** Get the thumbnail dimensions. - * \return Image size identifier. - */ - EImageSize GetSize() const; - - /** Get the thumbnail dimensions in bytes. - * \return Thumbnail size in bytes. - */ - unsigned long GetSizeInBytes() const; - - - //@} - - /** - * \name Thumbnail data access - */ - //@{ - - /** Fill the thumbnail image. - * \param pImage Pointer to the image data. A copy - * of the image data will be made. - * \remarks This pointer must point to a buffer region - * that is at least Width * Height * Component count - * bytes long. This pointer points to the upper left - * corner of the image. - * \remarks You must set the data format and the dimensions - * before calling this function. If the image size is set to eCustomSize - * the CustomHeight and CustomWidth properties must be set before calling - * this function. - * \return \c true if the thumbnail properties were set - * before calling this function. \c false otherwise. - */ - bool SetThumbnailImage(const FbxUChar* pImage); - - /** Get the thumbnail image. - * \return Pointer to the image data, or \c NULL if the - * thumbnail is empty. - */ - FbxUChar* GetThumbnailImage() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxThumbnailMembers* mMembers; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_THUMBNAIL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxvideo.h b/sdk/Linux/2019.2/include/fbxsdk/scene/fbxvideo.h deleted file mode 100644 index 011d48d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/fbxvideo.h +++ /dev/null @@ -1,202 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_VIDEO_H_ -#define _FBXSDK_SCENE_VIDEO_H_ - -#include - -#include - -#include - -/** FBX SDK video class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVideo : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxVideo, FbxMediaClip); - -public: - /** - *\name Reset video - */ - //@{ - //! Reset the video to default values. - void Reset() override; - //@} - - /** - * \name Video attributes Management - */ - //@{ - /** Set the use of MipMap on the video. - * \param pUseMipMap If \c true, use MipMap on the video. - */ - void ImageTextureSetMipMap(bool pUseMipMap); - - /** Retrieve use MipMap state. - * \return MipMap flag state. - */ - bool ImageTextureGetMipMap() const; - - /** Specify the Video full filename. - * \param pName Video full filename. - * \return \c True,if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetFileName(const char* pName) override; - - /** Specify the Video relative filename. - * \param pName Video relative filename. - * \return \c True, if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetRelativeFileName(const char* pName) override; - - /** - * \name Image sequence attributes Management - * Besides storing video clips, the FbxVideo object can also store image sequences. This section contains - * the manipulation methods used in this specialized mode. Note that, except for the GetFileName(), - * SetFileName(), GetRelativeFileName(), SetRelativeFileName() and the methods in this section, all the - * other ones are not mandatory therefore could contain uninitialized or default data values. - * - */ - //@{ - /** Specify if this video object is holding the starting point of an image sequence. - * \param pImageSequence If \c true, this object is holding an image sequence. - * \remarks When this object is used as image sequence, the FBX SDK - * will automatically exclude it from the embedding mechanism. - */ - void SetImageSequence(bool pImageSequence); - - /** Get the current state of the ImageSequence property. - * \return ImageSequence property value. - */ - bool GetImageSequence() const; - - /** Specify the frame offset to be applied to the image sequence. - * \param pOffset The frame offset value. - */ - void SetImageSequenceOffset(int pOffset); - - /** Get the current value of the ImageSequenceOffset property. - * \return ImageSequenceOffset property value. - */ - int GetImageSequenceOffset() const; - //@} - - /** Retrieve the Frame rate of the video clip. - * \return Frame rate. - */ - double GetFrameRate() const; - - /** Retrieve the last frame of the video clip. - * \return Last frame number. - */ - int GetLastFrame() const; - - /** Retrieve the clip width. - * \return Video image width. - */ - int GetWidth() const; - - /** Retrieve the clip height. - * \return Video image height. - */ - int GetHeight() const; - - /** Set the start frame of the video clip. - * \param pStartFrame Start frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStartFrame(int pStartFrame); - - /** Retrieve the start frame of the video clip. - * \return Start frame number. - */ - int GetStartFrame() const; - - /** Set the stop frame of the video clip. - * \param pStopFrame Stop frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStopFrame(int pStopFrame); - - /** Retrieve the stop frame of the video clip. - * \return Stop frame number. - */ - int GetStopFrame() const; - - /** Video interlace modes. - */ - enum EInterlaceMode - { - eNone, //!< Progressive frame (full frame). - eFields, //!< Alternate even/odd fields. - eHalfEven, //!< Half of a frame, even fields only. - eHalfOdd, //!< Half of a frame, odd fields only. - eFullEven, //!< Extract and use the even field of a full frame. - eFullOdd, //!< Extract and use the odd field of a full frame. - eFullEvenOdd, //!< Extract eFields and make full frame with each one beginning with Odd (60fps). - eFullOddEven //!< Extract eFields and make full frame with each one beginning with Even (60fps). - }; - - /** Set the Interlace mode. - * \param pInterlaceMode Interlace mode identifier. - */ - void SetInterlaceMode(EInterlaceMode pInterlaceMode); - - /** Retrieve the Interlace mode. - * \return Interlace mode identifier. - */ - EInterlaceMode GetInterlaceMode() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(FbxConnectEvent const &pEvent) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxPropertyT ImageSequence; - FbxPropertyT ImageSequenceOffset; - FbxPropertyT FrameRate; - FbxPropertyT LastFrame; - FbxPropertyT Width; - FbxPropertyT Height; - FbxPropertyT StartFrame; - FbxPropertyT StopFrame; - FbxPropertyT InterlaceMode; - -protected: - void Init(); - - bool mUseMipMap; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVideo::EInterlaceMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_VIDEO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h deleted file mode 100644 index d8b24aa..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ - -#include - -#include - -#include - -class FbxGeometry; -class FbxBlendShapeChannel; - -/** Class for blend shape deformer. - * A blend shape deformer takes a base shape (polygonal surface, curve, or surface) - * and blends it with other target shapes based on weight values. - * Blend shape deformer organize all target shapes via blend shape channel. - * One blend shape deformer can contains multiple blend shape channels, then each - * channel can organize multiple target shapes, \see FbxBlendShapeChannel, FbxShape. - * \remarks The blend effect of each blend shape channel is additive, so the final blend - * effect of a blend shape deformer is the sum of blend effect of all blend shape - * channels it contains, the blend effect of each blend shape channel is controlled - * by the property DeformPercent of blend shape channel. - * \see FbxGeometry, FbxGeometryBase. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxBlendShape : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShape, FbxDeformer); - -public: - /** Set the geometry affected by this blend shape deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - * \remarks One blend shape deformer can only be used on one base geometry. - * So when SetGeometry is called, the pGeometry will replace the - * current base geometry connected to this blend shape deformer. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this blend shape deformer. - * \return A pointer to the geometry if it is set or \c NULL if not set yet. - */ - FbxGeometry* GetGeometry(); - - /** Add a blend shape channel. - * \param pBlendShapeChannel Pointer to the blend shape channel object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Remove the given blend shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to remove from this blend shape deformer. - * \return Pointer to the blend shape channel or \c NULL if pBlendShapeChannel is not owned by this blend shape deformer. - */ - FbxBlendShapeChannel* RemoveBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the number of blend shape channels. - * \return Number of blend shape channels that have been added to this object. - */ - int GetBlendShapeChannelCount() const; - - /** Get blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex); - - /** Get the blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - const FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex) const; - - /** Get the type of the deformer. - * \return The deformer type identifier of blend shape deformer. - */ - EDeformerType GetDeformerType() const override {return eBlendShape; }; - - /** Restore the blend shape deformer to the initial state. - * Calling this function will do the following: - * \li Clear the pointer to base geometry. - * \li Remove all the blend shape channels. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h deleted file mode 100644 index ca3946f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshapechannel.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ - -#include - -#include - -#include - -class FbxShape; -class FbxBlendShape; - -/** Class for blend shape channels. - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * each target shape could have its own full deformation percentage. For example, given a channel that - * has 3 target shapes, whose full deform percentage are 30, to 80 to 100 separately, then when the percent - * changes from 0 to 100, the base geometry will deform from the first target shape to the last one. - * This is called in-between blend shapes or progressive morph. - * The property DeformPercent of blend shape channel will control the deform level of each target shape or - * in-between blend shape on it. - *\nosubgrouping - */ -class FBXSDK_DLL FbxBlendShapeChannel : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShapeChannel, FbxSubDeformer); - -public: - /** This property stores deform percent of this channel. - * The default value of this property is 0.0. - * - * \remark Although not enforced, it is strongly suggested to limit the value of this property - * in the range from 0.0 to 100.0 because graphic applications may handle values outside of this - * interval differently, therefore producing unexpected results. - */ - FbxPropertyT DeformPercent; - - /** Set the blend shape deformer that contains this blend shape channel. - * \param pBlendShape Pointer to the blend shape deformer to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeDeformer(FbxBlendShape* pBlendShape); - - /** Get the blend shape deformer that contains this blend shape channel. - * \return A pointer to the blend shape deformer if set or NULL. - */ - FbxBlendShape* GetBlendShapeDeformer(); - - /** Add a target shape. - * \param pShape Pointer to the target shape to add. - * \param pFullDeformPercent The full deform percentage for the target shape. - * \return \c true on success, \c false otherwise. - */ - bool AddTargetShape(FbxShape* pShape, double pFullDeformPercent = 100); - - /** Remove the given target shape. - * \param pShape Pointer to the target shape to remove from this blend shape channel. - * \return Pointer to the target shape or \c NULL if pShape is not owned by this blend shape channel. - */ - FbxShape* RemoveTargetShape(FbxShape* pShape); - - /** Get the number of target shapes. - * \return Number of target shapes that have been added to this blend shape channel. - */ - int GetTargetShapeCount() const; - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - FbxShape* GetTargetShape(int pIndex); - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - const FbxShape* GetTargetShape(int pIndex) const; - - /** Get the index of the given target shape. - * \param pShape The given target shape to find index. - * \return The index of the target shape. - */ - int GetTargetShapeIndex( FbxShape* pShape); - - /** Get the full weight values of target shape. - * To access each value iterate in the array up to GetTargetShapeCount(). - * \return The array of full weight values of target shape. - */ - double* GetTargetShapeFullWeights(); - - /** Set the array size for the fully deform weights. - * This functions pre-allocate the array to pCount size. - * \param pCount The new array size to set. - */ - void SetFullWeightsCount(int pCount); - - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return The sub deformer type identifier of blend shape channel. - */ - EType GetSubDeformerType() const override {return eBlendShapeChannel; }; - - /** Restore the blend shape channel to the initial state. - * Calling this function will do the following: - * \li Set the DeformPercent to 0. - * \li Remove all target shapes. - * \li Clear the array for fully deform weights of in-between target shapes. - */ - void Reset(); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - //The full weights array of each shapes on this blend shape channel - FbxArray mShapeFullWeightArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcache.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcache.h deleted file mode 100644 index 3b4dabc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcache.h +++ /dev/null @@ -1,461 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcache.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHE_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHE_H_ - -#include - -#include -#include - -#include - -class FbxCache_internal; - -/** This object contains methods for accessing point animation in a cache file. -* The FBX SDK supports three point cache file formats : -* - \e eMaxPointCacheV2: the 3ds Max Point Cache 2 file format. -* - \e eMayaCache: the Maya Cache file format. -* - \e eAlembic: Alembic Cache file format. -* -* Accessing cache data using these formats differs significantly. To address this difference, several sets of methods have been created. -* Use the GetCacheFileFormat() function to determine which set of methods to use. */ -class FBXSDK_DLL FbxCache : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCache, FbxObject); - -public: - //! \name Format Independent Functions. - //@{ - /** Supported cache file formats. */ - enum EFileFormat - { - eUnknownFileFormat, //!< Unknown cache file format. - eMaxPointCacheV2, //!< 3ds Max Point Cache 2 file format. - eMayaCache, //!< Maya Cache file format. - eAlembic //!< Alembic Cache file format. - }; - - /** Set the cache file format. - * \param pFileFormat Valid values are \e eMaxPointCacheV2 or \e eMayaCache. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileFormat(EFileFormat pFileFormat, FbxStatus* pStatus=NULL); - - /** Get the cache file format. - * \return The current cache file format, or \e eUnknown if it is not set. */ - EFileFormat GetCacheFileFormat() const; - - /** Set the cache file name. - * \param pRelativeFileName_UTF8 The point cache file, relative to the FBX file name. - * \param pAbsoluteFileName_UTF8 The point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileName(const char* pRelativeFileName_UTF8, const char* pAbsoluteFileName_UTF8, FbxStatus* pStatus=NULL); - - /** Get the cache file name. - * \param pRelativeFileName_UTF8 Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName_UTF8 Return the point cache file absolute path. */ - void GetCacheFileName(FbxString& pRelativeFileName_UTF8, FbxString& pAbsoluteFileName_UTF8) const; - - /** Open the cache file for reading. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the file is successfully opened, \c false otherwise. */ - bool OpenFileForRead(FbxStatus* pStatus=NULL); - - /** Get the open state of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is currently open, \c false otherwise. */ - bool IsOpen(FbxStatus* pStatus=NULL) const; - - /** Read data from the cache file. - * \param pBuffer The buffer containing the data from the cache file. This parameter can be NULL if interested to get buffer length only. - * \param pBufferLength The length of the buffer (NOT in bytes). - * \param pTime The time at which the data should be read. - * \param pChannel The cache file channel to read, when multiple channels are available. - * \return \c True if the cache data was successfully read, \c false otherwise. - * \remark The buffer will be allocated by FbxCache and will be returned if read successful. The buffer will be freed by FbxCache upon its destruction. */ - bool Read(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel=0); - - /** Close the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is closed successfully, \c false otherwise. */ - bool CloseFile(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file, in frames per second. */ - double GetSamplingFrameRate(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file, as a FbxTime object. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file. */ - FbxTime GetCacheTimePerFrame(FbxStatus* pStatus=NULL); - - /** Get the number of channels in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of animation channels in the cache file. */ - int GetChannelCount(FbxStatus* pStatus=NULL); - - /** Get the channel name for a specific channel index. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pChannelName Returns the name of the requested channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelName(int pChannelIndex, FbxString& pChannelName, FbxStatus* pStatus=NULL); - //@} - - //! \name eMayaCache Format Specific Functions. - //@{ - //! Number of files used to store the animation. - enum EMCFileCount - { - eMCOneFile, //!< One file is used for all the frames of animation. - eMCOneFilePerFrame //!< For every frame of animation, a cache file is used. The number of the frames is the number of the cache files. - }; - - //! Data types in the MC cache file. - enum EMCDataType - { - eUnknownData, //!< Unknown data. - eDouble, //!< No use but has to be defined for consistency reasons. - eDoubleArray, //!< double* - eDoubleVectorArray, //!< double* [3] - eInt32Array, //!< int* - eFloatArray, //!< float* - eFloatVectorArray //!< float* [3] - }; - - //! Binary cache format. - enum EMCBinaryFormat - { - eMCC, //!< MCC cache file format, 32bit (older format) - eMCX //!< MCX cache file format, 64bit (newer format) - }; - - //! Cache channel sampling types. - enum EMCSamplingType - { - eSamplingRegular, //!< Regular sampling. - eSamplingIrregular //!< Irregular sampling. - }; - - /** Open a cache file for writing. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pChannelName The name of the channel of animation to create. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pMCDataType The data type of the MC cache file. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pStatus The FbxStatus object to hold error codes. */ - bool OpenFileForWrite(EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, EMCBinaryFormat pBinaryFormat, EMCDataType pMCDataType=eDoubleVectorArray, const char* pInterpretation="Points", FbxStatus* pStatus=NULL); - - /** Creates a new channel in the cache. - * \param pChannelName The name of the channel of animation to create. - * \param pMCDataType The MC DataType of the cache. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pChannelIndex The index of the new animation channel. - * \param pStatus The FbxStatus object to hold error codes. - * \remark \b pChannelName must be unique within the cache. - * \remark \b pChannelName and \b pInterpretation cannot be NULL pointers. - * \remark This method must be called before adding any data to the cache but after the OpenFileForWrite. */ - bool AddChannel(const char* pChannelName, EMCDataType pMCDataType, const char* pInterpretation, unsigned int& pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the data type of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pChannelType The channel's data type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelDataType(int pChannelIndex, EMCDataType& pChannelType, FbxStatus* pStatus=NULL); - - /** Get the index of the specified channel. - * \param pChannelName The name of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return The index of the channel in the cache file, or -1 if an error occurred. */ - int GetChannelIndex(const char* pChannelName, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that data is about to be written to it. This call must appear before any calls to the Write() methods on any channel and terminated by a call to EndWriteAt(). - * \param pTime Time at which the point animation must be inserted. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool BeginWriteAt( FbxTime& pTime, FbxStatus* pStatus=NULL ); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cachedsystem has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that all the data on all the channels has been written to it for the given time (specified - * by the BeginWriteAt() call). The call to this method must be made after all the Write() for every channel defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EndWriteAt(FbxStatus* pStatus=NULL); - - /** Get the Animation Range of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pTimeStart The start time of the channel's animation. - * \param pTimeEnd The end time of the channel's animation. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetAnimationRange(int pChannelIndex, FbxTime &pTimeStart, FbxTime &pTimeEnd, FbxStatus* pStatus=NULL); - - /** Get the cache type. - * \param pFileCount The cache type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetCacheType(EMCFileCount& pFileCount, FbxStatus* pStatus=NULL); - - /** Get the cache channel interpretation. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pInterpretation The channel interpretation, user-defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelInterpretation(int pChannelIndex, FbxString& pInterpretation, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling type. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingType The sampling type of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingType(int pChannelIndex, EMCSamplingType& pSamplingType, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling rate, in frames per second. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingRate The sampling rate of the channel. The channel must have a regular sampling type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingRate(int pChannelIndex, FbxTime& pSamplingRate, FbxStatus* pStatus=NULL); - - /** Get the number of data points for a channel. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSampleCount Number of available samples. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSampleCount(int pChannelIndex, unsigned int& pSampleCount, FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file, for a channel, for a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Reference time; must be within the boundaries of the animation. - * \param pPointCount Number of available points. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelPointCount(int pChannelIndex, FbxTime pTime, unsigned int& pPointCount, FbxStatus* pStatus=NULL); - - /** Returns the number of cache data files. - * \param pStatus The FbxStatus object to hold error codes. - * \return The count returned does not include the main cache file, and depends on the cache type. Will return -1 if point cache support is not enabled. */ - int GetCacheDataFileCount(FbxStatus* pStatus=NULL) const; - - /** Get the nth cache file name. - * \param pIndex Index of the cache file to return; index is zero-based, and must be less than GetCacheDataFileCount(). - * \param pRelativeFileName Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName Return the point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool GetCacheDataFileName(int pIndex, FbxString& pRelativeFileName, FbxString& pAbsoluteFileName, FbxStatus* pStatus=NULL); - - /** Enable multi-channel fetching. - * \param pMultiChannelFetching Enable/disable multi-channel fetching. When multi-channel is enabled, any load of data on a channel at a specific - * time will pre-fetch data from all channels, for that specific time. This can reduce disk access, and increase performance (but requires more memory). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EnableMultiChannelFetching(bool pMultiChannelFetching, FbxStatus* pStatus=NULL); - - /** Get the next time where data is stored. - * \param pCurTime Current time; must be within the boundaries of the animation time. - * \param pNextTime Next time (filled if the function is successful). - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). If pChannel is left at -1, get the next time for any channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetNextTimeWithData(FbxTime pCurTime, FbxTime& pNextTime, int pChannelIndex = -1, FbxStatus* pStatus=NULL); - - /** Get the number of data points the channel contains. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of the channel's data points. */ - int GetDataCount(int pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the time of the specified data point. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pDataIndex Index of the data point. - * \param pTime Time of the data point (filled if the function is successful). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetDataTime(int pChannelIndex, unsigned int pDataIndex, FbxTime& pTime, FbxStatus* pStatus=NULL); - //@} - - //! \name eMaxPointCacheV2 Format Specific Functions. - //@{ - /** Open a cache file for writing. - * \param pFrameStartOffset Start time of the animation, in frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pSampleCount The number of samples to write to the file. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool OpenFileForWrite(double pFrameStartOffset, double pSamplingFrameRate, unsigned int pSampleCount, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Get the number of frames of animation found in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of frames of animation. - */ - unsigned int GetSampleCount(FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of points. - */ - unsigned int GetPointCount(FbxStatus* pStatus=NULL); - - /** Get the start time of the animation - * \param pStatus The FbxStatus object to hold error codes. - * \return The start time of the animation, in frames. */ - double GetFrameStartOffset(FbxStatus* pStatus=NULL); - - /** Read a sample at a given frame index. - * \param pFrameIndex The index of the animation frame, between 0 and GetSampleCount(). - * \param pBuffer The place where the point value will be copied. This buffer must be of size 3 * pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(unsigned int pFrameIndex, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given frame index. - * \param pFrameIndex The index of the animation frame. - * \param pBuffer Point to the values to be copied. This buffer must be of size 3 * pPointCount, as passed to the function OpenFileForWrite(). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark Successive calls to Write() must use successive index. */ - bool Write(unsigned int pFrameIndex, double* pBuffer, FbxStatus* pStatus=NULL); - //@} - - //! \name File conversion Functions. - //@{ - /** Create an MC cache file from an PC2 cache file. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second used to re-sample the point animation. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromPC2ToMC(EMCFileCount pFileCount, double pSamplingFrameRate, EMCBinaryFormat pBinaryFormat, FbxStatus* pStatus=NULL); - - /** Create a PC2 cache file from an MC cache file. - * \param pSamplingFrameRate Number of frames per second to re-sample the point animation. - * \param pChannelIndex Index of the channel of animation to read from. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromMCToPC2(double pSamplingFrameRate, unsigned int pChannelIndex, FbxStatus* pStatus=NULL); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - enum EOpenFlag - { - eReadOnly, - eWriteOnly - }; - -protected: - bool OpenFile(EOpenFlag pFlag, EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, const char* pInterpretation, unsigned int pSampleCount, unsigned int pPointCount, double pFrameStartOffset, FbxStatus* pStatus, EMCDataType pMCDataType = eDoubleVectorArray, EMCBinaryFormat pBinaryFormat = eMCX); - - void Construct( const FbxObject* pFrom ) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxCache_internal* mData; - -private: - bool AllocateReadBuffer(unsigned int pTypeSize, unsigned int pTypeLength, unsigned int pLength, bool pAllocateConvertBuffer); - bool ReadMayaCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - bool ReadMaxCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime); - bool ReadAlembicCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - - FbxPropertyT CacheFile; - FbxPropertyT CacheFileAbsolutePath; - FbxPropertyT CacheFileType; - - void* mReadBuffer; - unsigned int mReadBufferLength; - unsigned int mReadBufferSize; - unsigned int mReadTypeSize; - unsigned int mReadTypeLength; - unsigned int mReadLength; - void* mConvertBuffer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCache::EFileFormat&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h deleted file mode 100644 index 02eceae..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcachedeffect.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ - -#include - -#include -#include - -#include - -/** A cached effect is a type of node attribute to represent certain type of effect - * by an cache object. Categories are particle cache, fluid cache, hair cache and general cache. - * \see ECategory for the effect types that are supported. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCachedEffect : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCachedEffect, FbxNodeAttribute); - -public: - //! Returns the FbxNodeAttribute::EType::eCachedEffect attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Effect attribute category. This is for identification purpose and has - * no influence inside the FBX SDK. However, applications may use this to filter FbxCachedEffect - * objects. - * \remarks Vertex caches for deforming geometries are not handled by the FbxCachedEffect object. These - * caches are connected with the FbxVertexCacheDeformer object. - * \remarks If an object of this class is used as the default NodeAttribute for a FbxNode and the scene is - * saved to an FBX v6 and earlier versions, the CachedEffect attribute is not saved and the FbxNode will - * be processed as a FbxNull node with default values for the attribute. - */ - enum ECategory - { - eParticles, //!< This effect handles a particle cache. - eFluids, //!< This effect handles a fluid cache. - eHair, //!< This effect handles an hair cache. - eGeneric //!< This effect handles a cache other than particles, fluids or hair. - }; - - //! Return the specialization category of this effect attribute. - ECategory GetCategory() const; - - /** Assign a cache object to be used by this attribute. - * \param pCache The cache object. - * \param pCategory The type of this cached effect. - * \remarks The cache referenced by the \b pCache pointer can be freely shared among - * multiple FbxCachedEffect (and even the FbxVertexCacheDeformer) therefore - * \b pCategory identifier should really only used as a hint of what this FbxCachedEffect - * represents but it should not be taken for granted that the content of the cache really - * matches the category. Applications should always check the cache files to ensure that - * they are manipulating the desired information. - * - */ - void SetCache( FbxCache* pCache, ECategory pCategory = eGeneric); - - /** Get the cache object used by this node attribute. - * \return A pointer to the cache object used by this node attribute, or \c NULL if no cache object is assigned. - */ - FbxCache* GetCache() const; - -protected: - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - -public: - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - -private: - void ClearCacheConnections(); - FbxPropertyT Category; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCachedEffect::ECategory&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h deleted file mode 100644 index 42d0db1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h +++ /dev/null @@ -1,1898 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamera.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ - -#include - -#include -#include -#include - -#include - -class FbxTexture; - -/** This node attribute contains methods for accessing the properties of a camera. - * \nosubgrouping - * A camera can be set to automatically point at and follow - * another node in the hierarchy. To do this, the focus source - * must be set to EFocusDistanceSource::eFocusSrcCameraInterest and the - * followed node associated with function FbxNode::SetTarget(). - * \see FbxCameraStereo and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCamera : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCamera,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eCamera. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the camera to default values. - void Reset(); - - /** Camera projection types. - * \remarks By default, the camera projection type is set to ePerspective. - * If the camera projection type is set to eOrthogonal, the following options - * are not relevant: - * - aperture format - * - aperture mode - * - aperture width and height - * - angle of view/focal length - * - squeeze ratio - */ - enum EProjectionType - { - ePerspective, //!< Perspective projection. - eOrthogonal //!< Orthogonal projection. - }; - - /** - * \name Functions to handle the viewing area. - */ - //@{ - /** Camera formats identifiers. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetFormat, GetFormat and CameraFormat. - */ - enum EFormat - { - eCustomFormat, //!< The format's width, height, or pixel ratio has been user-specified, and matches none of the other picture formats. - eD1NTSC, //!< Standard format for D1 NTSC (720 by 486). - eNTSC, //!< NTSC standard for North American television broadcast (640 by 480). - ePAL, //!< PAL standard for European television broadcast (570 by 486). - eD1PAL, //!< Standard format for D1 PAL (720 by 576). - eHD, //!< HD format(1920 by 1080). - e640x480, //!< Recommended computer screen format (640 by 480). - e320x200, //!< Recommended format for World Wide Web production(320 by 200). - e320x240, //!< Alternate World Wide Web format(320 by 240). - e128x128, //!< Format(128 by 128) - eFullscreen //!< Full computer screen format (1280 by 1024 pixels). - }; - - /** Set the camera format. - * \param pFormat The camera format identifier. - * \remarks Changing the camera format sets the camera aspect - * ratio mode to eFixedResolution and modifies the aspect width - * size, height size, and pixel ratio accordingly. - */ - void SetFormat(EFormat pFormat); - - /** Get the camera format. - * \return The current camera format identifier. - */ - EFormat GetFormat() const; - - /** Camera's aspect ratio modes. - * \see SetAspect, GetAspectRatioMode, AspectWidth, AspectHeight and AspectRatioMode. - */ - enum EAspectRatioMode - { - eWindowSize, //!< Both width and height values aren't relevant. - eFixedRatio, //!< The height value is set to 1.0 and the width value is relative to the height value. - eFixedResolution, //!< Both width and height values are in pixels. - eFixedWidth, //!< The width value is in pixels and the height value is relative to the width value. - eFixedHeight //!< The height value is in pixels and the width value is relative to the height value. - }; - - /** Set the camera's aspect ratio mode. - * \param pRatioMode Camera's aspect ratio mode. - * \param pWidth Camera's aspect width, must be a positive value. - * \param pHeight Camera's aspect height, must be a positive value. - * \remarks Changing the camera aspect sets the camera format to eCustomFormat. - * \see EAspectRatioMode. - */ - void SetAspect(EAspectRatioMode pRatioMode, double pWidth, double pHeight); - - /** Get the camera aspect ratio mode. - * \return The current aspect ratio mode. - */ - EAspectRatioMode GetAspectRatioMode() const; - - /** Set the pixel ratio. - * \param pRatio The pixel ratio value. - * \remarks The value must be a positive number. Comprised between 0.05 and 20.0. Values - * outside these limits will be clamped. Changing the pixel ratio sets the camera format to eCustomFormat. - */ - void SetPixelRatio(double pRatio); - - /** Get the pixel ratio. - * \return The current camera's pixel ratio value. - */ - double GetPixelRatio() const; - - /** Set the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \param pDistance The near plane distance value. - * \remarks The near plane value is limited to the range [0.001, 600000.0] and - * must be inferior to the far plane value. - */ - void SetNearPlane(double pDistance); - - /** Get the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \return The near plane value. - */ - double GetNearPlane() const; - - /** Set the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \param pDistance The far plane distance value. - * \remarks The far plane value is limited to the range [0.001, 600000.0] and - * must be superior to the near plane value. - */ - void SetFarPlane(double pDistance); - - /** Get the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \return The far plane value. - */ - double GetFarPlane() const; - - //@} - - /** - * \name Aperture and Film Functions. - * In photography, the aperture is the size of hole allowing light from the lens to get through to the film. - * The aperture mode determines which values drive the camera aperture. When the aperture mode is \e eHorizAndVert, - * \e eHorizontal or \e eVertical, the field of view is used. When the aperture mode is \e eFocalLength, the focal length is used. - * - * It is possible to convert the aperture mode into field of view or vice versa using functions ComputeFieldOfView and - * ComputeFocalLength. These functions use the camera aperture width and height for their computation. - */ - //@{ - - /** Camera's aperture formats. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetApertureFormat, GetApertureFormat, FilmFormat, FilmWidth, FilmHeight, FilmSqueezeRatio and FilmAspectRatio. - */ - enum EApertureFormat - { - eCustomAperture, //!< The film size, squeeze ratio and aspect ratio has been user-specified, and matches none of the other aperture formats. - e16mmTheatrical, //!< Film Size: 0.404, 0.295 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.369. - eSuper16mm, //!< Film Size: 0.493, 0.292 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.688. - e35mmAcademy, //!< Film Size: 0.864, 0.630 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.371. - e35mmTVProjection, //!< Film Size: 0.816, 0.612 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mmFullAperture, //!< Film Size: 0.980, 0.735 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mm185Projection, //!< Film Size: 0.825, 0.446 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.850. - e35mmAnamorphic, //!< Film Size: 0.864, 0.732 inches. Film Squeeze Ratio: 2.0. Film Aspect Ratio:1.180. - e70mmProjection, //!< Film Size: 2.066, 0.906 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 2.280. - eVistaVision, //!< Film Size: 1.485, 0.991 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.498. - eDynaVision, //!< Film Size: 2.080, 1.480 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.405. - eIMAX //!< Film Size: 2.772, 2.072 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.338. - }; - - /** Set the camera aperture format. - * \param pFormat The camera aperture format identifier. - * \remarks Changing the aperture format modifies the aperture width, height, and squeeze ratio accordingly. - */ - void SetApertureFormat(EApertureFormat pFormat); - - /** Get the camera aperture format. - * \return The camera's current aperture format identifier. - */ - EApertureFormat GetApertureFormat() const; - - /** Camera aperture modes. - * The aperture mode determines which values drive the camera aperture. - * If the aperture mode is \e eHorizAndVert, \e eHorizontal, or \e eVertical, then the field of view is used. - * If the aperture mode is \e eFocalLength, then the focal length is used. - */ - enum EApertureMode - { - eHorizAndVert, //!< Set the angle values for both the horizontal and vertical settings. - eHorizontal, //!< Set only the horizontal angle. - eVertical, //!< Set only the vertical angle. - eFocalLength //!< Use focal length directly. - }; - - /** Set the camera aperture mode. - * \param pMode The camera aperture mode identifier. - */ - void SetApertureMode(EApertureMode pMode); - - /** Get the camera aperture mode. - * \return The camera's current aperture mode identifier. - */ - EApertureMode GetApertureMode() const; - - /** Set the camera aperture width in inches. - * \param pWidth The aperture width value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture width sets the camera aperture format to eCustomFormat. - */ - void SetApertureWidth(double pWidth); - - /** Get the camera aperture width in inches. - * \return The camera's current aperture width value in inches. - */ - double GetApertureWidth() const; - - /** Set the camera aperture height in inches. - * \param pHeight The aperture height value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture height sets the camera aperture format to eCustomFormat. - */ - void SetApertureHeight(double pHeight); - - /** Get the camera aperture height in inches. - * \return The camera's current aperture height value in inches. - */ - double GetApertureHeight() const; - - /** Set the squeeze ratio. - * \param pRatio The squeeze ratio value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the squeeze ratio sets the camera aperture format to eCustomFormat. - */ - void SetSqueezeRatio(double pRatio); - - /** Get the camera squeeze ratio. - * \return The camera's current squeeze ratio value. - */ - double GetSqueezeRatio() const; - - /** Camera's gate fit modes. - * There are two gates for a camera, film gate and resolution gate. - * Film gate is a border indicating the area of the camera's view as a real-world camera records on film. - * The dimensions of the film gate represent the dimensions of the camera aperture. - * But the film gate does not represent the render region. - * It is the resolution gate that represents the rendering resolution. - * The gate fit mode controls the size of the resolution gate relative to the film gate. - */ - enum EGateFit - { - eFitNone, //!< No resolution gate fit. - eFitVertical, //!< Fit the resolution gate vertically within the film gate. - eFitHorizontal, //!< Fit the resolution gate horizontally within the film gate. - eFitFill, //!< Fit the resolution gate within the film gate. - eFitOverscan, //!< Fit the film gate within the resolution gate. - eFitStretch //!< Fit the resolution gate to the film gate. - }; - - /** Compute the angle of view based on the given focal length, the aperture width, and aperture height. - * \param pFocalLength The focal length in millimeters. - * \return The computed angle of view in degrees. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFieldOfView(double pFocalLength) const; - - /** Compute the focal length based on the given angle of view, the aperture width, and aperture height. - * \param pAngleOfView The angle of view in degrees. - * \return The computed focal length in millimeters. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFocalLength(double pAngleOfView) const; - - /** Specifies how the roll is applied with respect to the pivot value. - */ - enum EFilmRollOrder - { - eRotateFirst, //!< The film back is first rotated then translated by the pivot point value. - eTranslateFirst //!< The film back is first translated then rotated by the film roll value. - }; - - //@} - - /** - * \name Functions to handle BackPlane/FrontPlane and Plate. - * - * In the FbxSdk terminology, the Back/Front plane is the support of the plate. And the plate is - * the support of the texture used for backgrounds/foregrounds. Functions and properties - * identified by the "Plate" name are affecting the display of the texture on the plate. - * The functions and properties identified with the "Back/FrontPlane" are affecting the plate. - * - * Typically a client application would place the BackPlate a small distance in front of the - * FarPlane and the FrontPlate just behind the NearPlane to avoid them to be hidden by the clipping. - * Unless otherwise noted, there are no restrictions on the values stored by the camera object - * therefore it is the responsibility of the client application to process the information in a - * meaningful way and to maintain consistency between the different properties relationships. - */ - //@{ - - /** Set the associated background image file. - * \param pFileName The path of the background image file. - * \remarks The background image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundFileName(const char* pFileName); - - /** Get the background image file name. - * \return Pointer to the background filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundFileName() const; - - /** Set the media name associated to the background image file. - * \param pFileName The media name of the background image file. - * \remarks The media name is a unique name used to identify the background image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundMediaName(const char* pFileName); - - /** Get the media name associated to the background image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundMediaName() const; - - /** Set the associated foreground image file. - * \param pFileName The path of the foreground image file. - * \remarks The foreground image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundFileName(const char* pFileName); - - /** Get the foreground image file name. - * \return Pointer to the foreground filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundFileName() const; - - /** Set the media name associated to the foreground image file. - * \param pFileName The media name of the foreground image file. - * \remarks The media name is a unique name used to identify the foreground image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundMediaName(const char* pFileName); - - /** Get the media name associated to the foreground image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundMediaName() const; - - - /** Image plate drawing modes. - */ - enum EPlateDrawingMode - { - ePlateBackground, //!< Image is drawn behind models. - ePlateForeground, //!< Image is drawn in front of models based on alpha channel. - ePlateBackAndFront //!< Image is drawn behind and in front of models depending on alpha channel. - }; - - /** Set front plate matte threshold. - * \param pThreshold Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - void SetBackgroundAlphaTreshold(double pThreshold); - - /** Get front plate matte threshold. - * \return Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - double GetBackgroundAlphaTreshold() const; - - /** Change the back plate fit image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \param pFitImage New value for the BackPlateFitImage property. - */ - void SetBackPlateFitImage(bool pFitImage); - - /** Get the current back plate image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetBackPlateFitImage() const; - - /** Change the back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pCrop New value for the BackPlateCrop property. - */ - void SetBackPlateCrop(bool pCrop); - - /** Get the current back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the BackPlateCrop property. - */ - bool GetBackPlateCrop() const; - - /** Change the back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \param pCenter New value for the BackPlateCenter property. - */ - void SetBackPlateCenter(bool pCenter); - - /** Get the current back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \return The value of the BackPlateCenter property. - */ - bool GetBackPlateCenter() const; - - /** Change the back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \param pKeepRatio New value for the BackPlateKeepRatio property. - */ - void SetBackPlateKeepRatio(bool pKeepRatio); - - /** Get the current back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \return The value of the BackPlateKeepRatio property. - */ - bool GetBackPlateKeepRatio() const; - - /** Enable or disable the display of the texture without the need to disconnect it from its plate. - * \param pEnable If \c true the texture is displayed, \c false otherwise. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - void SetShowFrontPlate(bool pEnable); - - /** Get the current state of the flag to display the front plate or not. - * \return \c true if show front plate is enabled, otherwise \c false. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - bool GetShowFrontPlate() const; - - /** Change the front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \param pFrontPlateFitImage New value for the FrontPlateFitImage property. - */ - void SetFrontPlateFitImage(bool pFrontPlateFitImage); - - /** Get the current front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetFrontPlateFitImage() const; - - /** Change the front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pFrontPlateCrop New value for the FrontPlateCrop property. - */ - void SetFrontPlateCrop(bool pFrontPlateCrop); - - /** Get the current front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the FrontPlateCrop property. - */ - bool GetFrontPlateCrop() const; - - /** Change the front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \param pFrontPlateCenter New value for the FrontPlateCenter property. - */ - void SetFrontPlateCenter(bool pFrontPlateCenter); - - /** Get the current front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \return The value of the FrontPlateCenter property. - */ - bool GetFrontPlateCenter() const; - - /** Change the front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \param pFrontPlateKeepRatio New value for the FrontPlateKeepRatio property. - */ - void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio); - - /** Get the current front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \return The value of the FrontPlateKeepRatio property. - */ - bool GetFrontPlateKeepRatio() const; - - /** Set the front plate opacity value. - * \param pOpacity New value for the ForegroundOpacity property. - */ - void SetForegroundOpacity(double pOpacity); - - /** Get the front plate opacity value. - * \return The value of the ForegroundOpacity property. - */ - double GetForegroundOpacity() const; - - /** Attach the texture to the front plate. - * \param pTexture The pointer to the texture to attach. - */ - void SetForegroundTexture(FbxTexture* pTexture); - - /** Get the texture connected to the front plate. - * \return A pointer to the texture attached to front plate. - */ - FbxTexture* GetForegroundTexture() const; - - /** Front and BackPlane distance modes. - * \see SetBackPlaneDistanceMode and GetBackPlaneDistanceMode. - */ - enum EFrontBackPlaneDistanceMode - { - eRelativeToInterest, //!< The back plane distance is measured in relation to the camera interest. - eRelativeToCamera //!< The back plane distance is measured in relation to the camera. - }; - - /** Set the back plane distance mode. - * \param pMode The back plane distance mode to set. - */ - void SetBackPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the back plane distance mode. - * \return Return the back plane distance mode. - */ - EFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const; - - /** Set the front plane distance from the camera. The the absolute position of the plane must be calculated - * by taking into consideration of the FrontPlaneDistanceMode. - * \param pDistance The front plane distance value. - * \remarks It is the responsibility of the client application to ensure that this plane position is - * within the frustum boundaries. - */ - void SetFrontPlaneDistance(double pDistance); - - /** Get the front plane distance value. - * \return double The front plane distance value. - */ - double GetFrontPlaneDistance() const; - - /** Set the front plane distance mode. - * \param pMode The front plane distance mode to set. - */ - void SetFrontPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the front plane distance mode flag. - * \return The front plane distance mode. - */ - EFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const; - - /** Front/back plane display modes. - */ - enum EFrontBackPlaneDisplayMode - { - ePlanesDisabled, //!< Disables the front/back plane whether a texture is being projected or not. - ePlanesAlways, //!< Always shows the front/back plane, even if no texture has been added. - ePlanesWhenMedia //!< Shows the front/back plane only if a texture has been added. - }; - - /** Set the front plane display mode. This mode can be used by the client application to - * decide under which circumstance the front plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumFrontPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the front plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const; - - /** Set the back plane display mode. This mode can be used by the client application to - * decide under which circumstance the back plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumBackPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the back plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const; - - //@} - - /** - * \name Camera View Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Change the camera interest visibility flag. - * \param pEnable Set to \c true if the camera interest is shown, \c false otherwise. - */ - void SetViewCameraInterest(bool pEnable); - - /** Get current visibility state of the camera interest. - * \return \c true if the camera interest is shown, or \c false if hidden. - */ - bool GetViewCameraInterest() const; - - /** Change the camera near and far planes visibility flag. - * \param pEnable Set to \c true if the near and far planes are shown, \c false otherwise. - */ - void SetViewNearFarPlanes(bool pEnable); - - /** Get current visibility state of the camera near and far planes. - * \return \c true if the near and far planes are shown, \c false otherwise. - */ - bool GetViewNearFarPlanes() const; - - /** Camera safe area display styles. - */ - enum ESafeAreaStyle - { - eSafeAreaRound, //!< Rounded safe area. - eSafeAreaSquare //!< Square safe area. - }; - - //@} - - /** - * \name Render Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Render options usage time. - */ - enum ERenderOptionsUsageTime - { - eInteractive, //!< To render in real time. - eOnDemand //!< Only render when it is asked. - }; - - /** Anti-aliasing methods. - */ - enum EAntialiasingMethod - { - eAAOversampling, //!< To do anti-aliasing by oversampling. - eAAHardware //!< To do anti-aliasing by hardware. - }; - - /** Oversampling types for anti-aliasing. - */ - enum ESamplingType - { - eSamplingUniform, /*!< The Uniform method samples each pixel at the same location. - The pixel is divided into equal parts, and each part is sampled. - The number of samples determines the number of times the pixel is divided. */ - eSamplingStochastic /*!< The Stochastic method randomly samples each pixel. - This produces an accurate color using a small number of samples. */ - }; - - /** Camera focus sources, that is the focal point for the depth of field. - * \see FocusDistance. - */ - enum EFocusDistanceSource - { - eFocusSrcCameraInterest, /*!< Base the depth of field on the camera interest. Models at the camera interest are in focus. - As you move toward or away from the camera interest, models become increasingly blurred. */ - eFocusSpecificDistance //!< Base the depth of field on a point defined by a specific distance from the camera interest. - }; - - //@} - - //! \name Utility Functions. - //@{ - /** Evaluate the camera position (eye). - * \param pTime The time at which the camera should be evaluated. - * \return The camera position evaluated from property value and animation. */ - FbxVector4 EvaluatePosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera target position (look at). - * \param pTime The time at which the camera should be evaluated. - * \return The camera target position evaluated from property value and animation. */ - FbxVector4 EvaluateLookAtPosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera up direction, taking target up objects into consideration. - * \param pCameraPosition The camera current position. You can retrieve this with FbxCamera::EvaluatePosition(). - * \param pLookAtPosition The camera target position. you can retrieve this with FbxCamera::EvaluateLookAtPosition(). - * \param pTime The time at which the camera should be evaluated. - * \return The camera up direction vector based on provided information. */ - FbxVector4 EvaluateUpDirection(const FbxVector4& pCameraPosition, const FbxVector4& pLookAtPosition, const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Compute the camera projection matrix. - * \param pWidth The width of the output frame. - * \param pHeight The height of the output frame. - * \param pVerticalFOV Calculate FOV vertically (based on height) if true or horizontally (based on width) if false (Note: Only applicable in perspective proj). - * \return The camera projection matrix, or the default identity matrix in case of wrong camera parameters. */ - FbxMatrix ComputeProjectionMatrix(const int pWidth, const int pHeight, const bool pVerticalFOV = true) const; - - /** Determine if the given bounding box is in the camera's view. The input points do not need to be ordered in any particular way. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoints 8 corners of the bounding box. - * \return \c true if any of the given points are in the camera's view, \c false otherwise. */ - bool IsBoundingBoxInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4 pPoints[8]) const; - - /** Determine if the given 3d point is in the camera's view. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoint World-space point to test. - * \return \c true if the given point is in the camera's view, \c false otherwise. */ - bool IsPointInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4& pPoint) const; - - /** Compute world space to screen space transformation matrix. - * \param pPixelHeight The pixel height of the output image. - * \param pPixelWidth The pixel height of the output image. - * \param pWorldToCamera The world to camera affine transformation matrix. - * \return The world to screen space matrix, or the identity matrix on error. */ - FbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const FbxAMatrix& pWorldToCamera) const; - - /** Compute screen space to world space ray direction. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pWidth The width of the viewport in pixels. - * \param pHeight The height of the viewport in pixels. - * \param pTime The time to use to evaluate the camera's view matrix. - * \return a normalized vector corresponding to the ray direction. */ - FbxVector4 ComputeScreenToWorld(float pX, float pY, float pWidth, float pHeight, const FbxTime& pTime=FBXSDK_TIME_INFINITE) const; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Geometrical - // ----------------------------------------------------------------------- - - /** This property handles the camera's position (XYZ coordinates). - * - * To access this property do: Position.Get(). - * To set this property do: Position.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT Position; - - /** This property handles the camera's Up Vector (XYZ coordinates). - * - * To access this property do: UpVector.Get(). - * To set this property do: UpVector.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 1.0, 0.0). - */ - FbxPropertyT UpVector; - - /** This property handles the default point (XYZ coordinates) the camera is looking at. - * - * To access this property do: InterestPosition.Get(). - * To set this property do: InterestPosition.Set(FbxDouble3). - * - * \remarks During the computations of the camera position - * and orientation, this property is overridden by the - * position of a valid target in the parent node. - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT InterestPosition; - - /** This property handles the camera roll angle in degrees. - * - * To access this property do: Roll.Get(). - * To set this property do: Roll.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT Roll; - - /** This property handles the camera optical center X, in pixels. - * It sets horizontal offset of the optical center. - * When the camera's aperture mode is set to \e eVertical, this property has no effect. - * - * To access this property do: OpticalCenterX.Get(). - * To set this property do: OpticalCenterX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterX; - - /** This property handles the camera optical center Y, in pixels. - * It sets the vertical offset of the optical center. - * When the camera's aperture mode is set to \e eHorizontal, this property has no effect. - * - * To access this property do: OpticalCenterY.Get(). - * To set this property do: OpticalCenterY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterY; - - /** This property handles the RGB values of the camera's background color. - * - * To access this property do: BackgroundColor.Get(). - * To set this property do: BackgroundColor.Set(FbxDouble3). - * - * Default value is black (0, 0, 0) - */ - FbxPropertyT BackgroundColor; - - /** When modeling 3D objects, you often need to review or evaluate your models during the creation process. - * You may create a camera with turn table animation to view your models in 360 or certain degrees. - * This property handles the camera's turn table angle in degrees. - * - * To access this property do: TurnTable.Get(). - * To set this property do: TurnTable.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT TurnTable; - - /** This property handles a flag that indicates if the camera displays the - * Turn Table icon or not. - * - * To access this property do: DisplayTurnTableIcon.Get(). - * To set this property do: DisplayTurnTableIcon.Set(FbxBool). - * - * Default value is false (no display). - */ - FbxPropertyT DisplayTurnTableIcon; - - // ----------------------------------------------------------------------- - // Motion Blur - // ----------------------------------------------------------------------- - - /** This property handles a flag that indicates if the camera uses - * motion blur or not. - * - * To access this property do: UseMotionBlur.Get(). - * To set this property do: UseMotionBlur.Set(FbxBool). - * - * Default value is false (do not use motion blur). - */ - FbxPropertyT UseMotionBlur; - - /** This property handles a flag that indicates if the camera uses - * real time motion blur or not. - * - * To access this property do: UseRealTimeMotionBlur.Get(). - * To set this property do: UseRealTimeMotionBlur.Set(FbxBool). - * - * Default value is false (use real time motion blur). - */ - FbxPropertyT UseRealTimeMotionBlur; - - /** This property handles the camera's motion blur intensity (in pixels). - * - * To access this property do: MotionBlurIntensity.Get(). - * To set this property do: MotionBlurIntensity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT MotionBlurIntensity; - - // ----------------------------------------------------------------------- - // Optical - // ----------------------------------------------------------------------- - - /** This property handles the camera's aspect ratio mode. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is eWindowSize. - * - */ - FbxPropertyT AspectRatioMode; - - /** This property handles the camera's aspect width. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 320. - */ - FbxPropertyT AspectWidth; - - /** This property handles the camera's aspect height. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 200. - */ - FbxPropertyT AspectHeight; - - /** This property handles the pixel aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetPixelRatio() if you want to change its value. - * - * Default value is 1. - * \remarks Value range is [0.050, 20.0]. - */ - FbxPropertyT PixelAspectRatio; - - /** This property handles the aperture mode. - * - * To access this property do: ApertureMode.Get(). - * To set this property do: ApertureMode.Set(EApertureMode). - * - * Default value is eVertical. - */ - FbxPropertyT ApertureMode; - - /** This property handles the gate fit mode. - * To control the size of the resolution gate relative to the film gate. - * If the resolution gate and the film gate have the same aspect ratio, then the property has no effect. - * - * To access this property do: GateFit.Get(). - * To set this property do: GateFit.Set(EGateFit). - * - * Default value is eFitNone. - */ - FbxPropertyT GateFit; - - /** This property handles the field of view in degrees. - * - * To access this property do: FieldOfView.Get(). - * To set this property do: FieldOfView.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizontal or eVertical. - * - * \remarks Default value is 40. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfView; - - /** This property handles the X (horizontal) field of view in degrees. - * - * To access this property do: FieldOfViewX.Get(). - * To set this property do: FieldOfViewX.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewX; - - /** This property handles the Y (vertical) field of view in degrees. - * - * To access this property do: FieldOfViewY.Get(). - * To set this property do: FieldOfViewY.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * \remarks Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewY; - - /** This property handles the focal length (in millimeters). - * - * To access this property do: FocalLength.Get(). - * To set this property do: FocalLength.Set(FbxDouble). - * - * Default value is the result of ComputeFocalLength(40.0). - */ - FbxPropertyT FocalLength; - - /** This property handles the camera's format. - * - * To access this property do: CameraFormat.Get(). - * To set this property do: CameraFormat.Set(EFormat). - * - * \remarks This property is read-only. - * \remarks Please use function SetFormat() if you want to change its value. - * - * Default value is eCustomFormat. - */ - FbxPropertyT CameraFormat; - - // ----------------------------------------------------------------------- - // Frame - // ----------------------------------------------------------------------- - - /** This property stores a flag that indicates to draw a border with color around the camera's viewable area or not. - * To access this property do: UseFrameColor.Get(). - * To set this property do: UseFrameColor.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseFrameColor; - - /** This property is used to define the color of the border around the camera view. - * - * To access this property do: FrameColor.Get(). - * To set this property do: FrameColor.Set(FbxDouble3). - * - * Default value is (0.3, 0.3, 0.3). - */ - FbxPropertyT FrameColor; - - // ----------------------------------------------------------------------- - // On Screen Display - // ----------------------------------------------------------------------- - - /** This property handles the flag to show the camera's name or not. - * - * To access this property do: ShowName.Get(). - * To set this property do: ShowName.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowName; - - /** This property handles the flag to show info on moving or not. - * - * To access this property do: ShowInfoOnMoving.Get(). - * To set this property do: ShowInfoOnMoving.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowInfoOnMoving; - - /** This property handles the flag to draw floor grid or not. - * - * To access this property do: ShowGrid.Get(). - * To set this property do: ShowGrid.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowGrid; - - /** This property handles the flag to show optical center or not. - * - * To access this property do: ShowOpticalCenter.Get(). - * To set this property do: ShowOpticalCenter.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowOpticalCenter; - - /** This property handles the flag to show the camera's sight line or not. - * When the camera is revolved about the center of interest in the perspective view, - * the angle of a camera's sight line relative to a plane perpendicular to the ground plane is referred to as its azimuth; - * and the angle of a camera's sight line relative to the ground plane is referred to as its elevation; - * - * To access this property do: ShowAzimut.Get(). - * To set this property do: ShowAzimut.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowAzimut; - - /** This property handles the flag to show time code or not. - * - * To access this property do: ShowTimeCode.Get(). - * To set this property do: ShowTimeCode.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowTimeCode; - - /** This property handles the flag to show audio or not. - * - * To access this property do: ShowAudio.Get(). - * To set this property do: ShowAudio.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowAudio; - - /** This property handles audio color. - * - * To access this property do: AudioColor.Get(). - * To set this property do: AudioColor.Set(FbxDouble3). - * - * Default value is (0.0, 1.0, 0.0). - */ - FbxPropertyT AudioColor; - - // ----------------------------------------------------------------------- - // Clipping Planes - // ----------------------------------------------------------------------- - - /** This property handles the near plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetNearPlane() if you want to change its value. - * - * Default value is 10. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT NearPlane; - - /** This property handles the far plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetFarPlane() if you want to change its value. - * - * Default value is 4000. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT FarPlane; - - /** This property indicates that the clip planes should be automatically computed or not. - * - * To access this property do: AutoComputeClipPlanes.Get(). - * To set this property do: AutoComputeClipPlanes.Set(FbxBool). - * - * When this property is set to true, the NearPlane and FarPlane values are - * ignored. Note that not all applications support this flag. - */ - FbxPropertyT AutoComputeClipPlanes; - - - // ----------------------------------------------------------------------- - // Camera Film Setting - // ----------------------------------------------------------------------- - - /** This property handles the film aperture width (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureWidth() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.8160. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmWidth; - - /** This property handles the film aperture height (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureHeight() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.6120. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmHeight; - - /** This property handles the film aperture aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() if you want to change its value. - * - * Default value is (FilmWidth / FilmHeight). - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmAspectRatio; - - /** This property handles the film aperture squeeze ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetSqueezeRatio() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 1.0. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmSqueezeRatio; - - /** This property handles the film aperture format. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() - * if you want to change its value. - * - * Default value is eCustomAperture. - */ - FbxPropertyT FilmFormat; - - /** This property handles the horizontal offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured in inches. - * - * To access this property do: FilmOffsetX.Get(). - * To set this property do: FilmOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetX; - - /** This property handles the vertical offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured - * in inches. - * - * To access this property do: FilmOffsetY.Get(). - * To set this property do: FilmOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetY; - - /** This property handles the pre-scale value. - * The value is multiplied against the computed projection matrix. - * It is applied before the film roll. - * - * To access this property do: PreScale.Get(). - * To set this property do: PreScale.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT PreScale; - - /** This property handles the horizontal film horizontal translation. - * To access this property do: FilmTranslateX.Get(). - * To set this property do: FilmTranslateX.Set(FbxDouble). - * Default value is 0.0 - */ - FbxPropertyT FilmTranslateX; - - /** This property handles the vertical film translation. - * - * To access this property do: FilmTranslateY.Get(). - * To set this property do: FilmTranslateY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmTranslateY; - - /** This property handles the horizontal pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotX.Get(). - * To set this property do: FilmRollPivotX.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotX; - - /** This property handles the vertical pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotY.Get(). - * To set this property do: FilmRollPivotY.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotY; - - /** This property handles the amount of rotation around the film back. - * The roll value is specified in degrees. - * - * To access this property do: FilmRollValue.Get(). - * To set this property do: FilmRollValue.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks The rotation occurs around the specified pivot point, - * this value is used to compute a film roll matrix, which is a component of the post-projection matrix. - */ - FbxPropertyT FilmRollValue; - - /** This property handles how the roll is applied with respect to the pivot value. - * eRotateFirst The film back is first rotated then translated by the pivot point value. - * eTranslateFirst The film back is first translated then rotated by the film roll value. - * - * To access this property do: FilmRollOrder.Get(). - * To set this property do: FilmRollOrder.Set(EFilmRollOrder). - * - * Default value is eRotateFirst. - */ - FbxPropertyT FilmRollOrder ; - - // ----------------------------------------------------------------------- - // Camera View Widget Option - // ----------------------------------------------------------------------- - - /** This property handles the camera's look-at flag. - * If this flag is on, the camera will look at the camera interest. - * - * To access this property do: ViewCameraToLookAt.Get(). - * To set this property do: ViewCameraToLookAt.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ViewCameraToLookAt; - - /** This property handles to display the near and far plane or not. - * - * To access this property do: ViewFrustumNearFarPlane.Get(). - * To set this property do: ViewFrustumNearFarPlane.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ViewFrustumNearFarPlane; - - /** This property handles the back plane display mode. - * - * To access this property do: ViewFrustumBackPlaneMode.Get(). - * To set this property do: ViewFrustumBackPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumBackPlaneMode; - - /** This property handles the back plane distance. - * - * To access this property do: BackPlaneDistance.Get(). - * To set this property do: BackPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT BackPlaneDistance; - - /** This property handles the back plane distance mode. - * - * To access this property do: BackPlaneDistanceMode.Get(). - * To set this property do: BackPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT BackPlaneDistanceMode; - - /** This property handles the front plane mode. - * - * To access this property do: ViewFrustumFrontPlaneMode.Get(). - * To set this property do: ViewFrustumFrontPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumFrontPlaneMode; - - /** This property handles the front plane distance. - * - * To access this property do: FrontPlaneDistance.Get(). - * To set this property do: FrontPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT FrontPlaneDistance; - - /** This property handles the front plane distance mode. - * - * To access this property do: FrontPlaneDistanceMode.Get(). - * To set this property do: FrontPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT FrontPlaneDistanceMode; - - // ----------------------------------------------------------------------- - // Camera Lock Mode - // ----------------------------------------------------------------------- - - /** This property handles the flag to lock the camera's navigation. - * When this flag is on, the camera's view can not be changed anymore. - * To access this property do: LockMode.Get(). - * To set this property do: LockMode.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockMode; - - /** This property handles the flag to lock the camera interest's navigation. - * When this flag is one, the position of the camera interest is locked. - * To access this property do: LockInterestNavigation.Get(). - * To set this property do: LockInterestNavigation.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockInterestNavigation; - - // ----------------------------------------------------------------------- - // Background Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of back plane. - * - * To access this property do: BackPlateFitImage.Get(). - * To set this property do: BackPlateFitImage.Set(FbxBool). - * - * Default value is false. - * \see SetFitImage and GetFitImage. - */ - FbxPropertyT BackPlateFitImage; - - /** This property handles the crop flag of back plane. - * - * To access this property do: BackPlateCrop.Get(). - * To set this property do: BackPlateCrop.Set(FbxBool). - * - * Default value is false. - * \see SetCrop and GetCrop. - */ - FbxPropertyT BackPlateCrop; - - /** This property handles the center flag of back plane. - * - * To access this property do: BackPlateCenter.Get(). - * To set this property do: BackPlateCenter.Set(FbxBool). - * - * Default value is true. - * see SetCenter and GetCenter. - */ - FbxPropertyT BackPlateCenter; - - /** This property handles the keep ratio flag of back plane. - * - * To access this property do: BackPlateKeepRatio.Get(). - * To set this property do: BackPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - * \see SetKeepRatio and GetKeepRatio. - */ - FbxPropertyT BackPlateKeepRatio; - - /** This property handles the background alpha threshold value. - * - * To access this property do: BackgroundAlphaTreshold.Get(). - * To set this property do: BackgroundAlphaTreshold.Set(FbxDouble). - * - * Default value is 0.5. - */ - FbxPropertyT BackgroundAlphaTreshold; - - /** This property handles the back plane offset X. - * - * To access this property do: BackPlaneOffsetX.Get(). - * To set this property do: BackPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetX; - - /** This property handles the back plane offset Y. - * - * To access this property do: BackPlaneOffsetY.Get(). - * To set this property do: BackPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetY; - - /** This property handles the back plane rotation. - * - * To access this property do: BackPlaneRotation.Get(). - * To set this property do: BackPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneRotation; - - /** This property handles the back plane scaling X. - * - * To access this property do: BackPlaneScaleX.Get(). - * To set this property do: BackPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleX; - - /** This property handles the back plane scaling Y. - * - * To access this property do: BackPlaneScaleY.Get(). - * To set this property do: BackPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleY; - - /** This property handles the flag to show back plane or not. - * - * To access this property do: ShowBackPlate.Get(). - * To set this property do: ShowBackPlate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowBackplate; - - /** This property has the background texture connected to it. - * - * To access this property do: BackgroundTexture.Get(). - * To set this property do: BackgroundTexture.Set(). - * - * \remarks The background texture is connected as source object. - */ - FbxPropertyT BackgroundTexture; - - - // ----------------------------------------------------------------------- - // Foreground Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of front plate. - * - * To access this property do: FrontPlateFitImage.Get(). - * To set this property do: FrontPlateFitImage.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateFitImage; - - /** This property handles the crop flag of front plane. - * - * To access this property do: FrontPlateCrop.Get(). - * To set this property do: FrontPlateCrop.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateCrop; - - /** This property handles the center flag of front plane. - * - * To access this property do: FrontPlateCenter.Get(). - * To set this property do: FrontPlateCenter.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateCenter; - - /** This property handles the keep ratio flag of front plane. - * - * To access this property do: FrontPlateKeepRatio.Get(). - * To set this property do: FrontPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateKeepRatio; - - - /** This property handles the flag to show front plane or not. - * - * To access this property do: ShowFrontplate.Get(). - * To set this property do: ShowFrontplate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowFrontplate; - - /** This property handles the front plane offset X. - * - * To access this property do: FrontPlaneOffsetX.Get(). - * To set this property do: FrontPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetX; - - /** This property handles the front plane offset Y. - * - * To access this property do: FrontPlaneOffsetY.Get(). - * To set this property do: FrontPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetY; - - /** This property handles the front plane rotation. - * - * To access this property do: FrontPlaneRotation.Get(). - * To set this property do: FrontPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneRotation; - - /** This property handles the front plane scaling X. - * - * To access this property do: FrontPlaneScaleX.Get(). - * To set this property do: FrontPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleX; - - /** This property handles the front plane scaling Y. - * - * To access this property do: FrontPlaneScaleY.Get(). - * To set this property do: FrontPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleY; - - /** This property has the foreground texture connected to it. - * - * To access this property do: ForegroundTexture.Get(). - * To set this property do: ForegroundTexture.Set(). - * - * \remarks The foreground texture is connected as source object. - */ - FbxPropertyT ForegroundTexture; - - /** This property handles the foreground image opacity value. - * - * To access this property do: ForegroundOpacity.Get(). - * To set this property do: ForegroundOpacity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT ForegroundOpacity; - - // ----------------------------------------------------------------------- - // Safe Area - // ----------------------------------------------------------------------- - - /** This property handles the flag to display safe area or not. - * - * To access this property do: DisplaySafeArea.Get(). - * To set this property do: DisplaySafeArea.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeArea; - - /** This property handles the flag display safe area on render or not. - * - * To access this property do: DisplaySafeAreaOnRender.Get(). - * To set this property do: DisplaySafeAreaOnRender.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeAreaOnRender; - - /** This property handles the style to display safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaDisplayStyle.Set(ESafeAreaStyle). - * - * Default value is eSafeAreaSquare. - */ - FbxPropertyT SafeAreaDisplayStyle; - - /** This property handles the display aspect ratio of safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaAspectRatio.Set(FbxDouble). - * - * Default value is 1.33333333333333. - */ - FbxPropertyT SafeAreaAspectRatio; - - // ----------------------------------------------------------------------- - // 2D Magnifier - // ----------------------------------------------------------------------- - - /** This property handles the flag to use 2d magnifier zoom or not. - * The 2D Magnifier lets you perform a 2D enlargement of the scene using the - * current camera without changing any camera settings. - * - * To access this property do: Use2DMagnifierZoom.Get(). - * To set this property do: Use2DMagnifierZoom.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Use2DMagnifierZoom; - - /** This property handles the 2d magnifier zoom value. - * - * To access this property do: _2DMagnifierZoom.Get(). - * To set this property do: _2DMagnifierZoom.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT _2DMagnifierZoom; - - /** This property handles the 2d magnifier X value. - * - * To access this property do: _2DMagnifierX.Get(). - * To set this property do: _2DMagnifierX.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierX; - - /** This property handles the 2d magnifier Y value. - * - * To access this property do: _2DMagnifierY.Get(). - * To set this property do: _2DMagnifierY.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierY; - - // ----------------------------------------------------------------------- - // Projection Type: Ortho, Perspective - // ----------------------------------------------------------------------- - - /** This property handles the projection type. - * - * To access this property do: ProjectionType.Get(). - * To set this property do: ProjectionType.Set(EProjectionType). - * - * Default value is ePerspective. - */ - FbxPropertyT ProjectionType; - - /** This property handles the orthographic zoom value. - * - * To access this property do: OrthoZoom.Get(). - * To set this property do: OrthoZoom.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT OrthoZoom; - - // ----------------------------------------------------------------------- - // Depth Of Field & Anti Aliasing - // ----------------------------------------------------------------------- - - /** This property handles the flag to use real time Depth of Field and Anti-Aliasing or not. - * - * To access this property do: UseRealTimeDOFAndAA.Get(). - * To set this property do: UseRealTimeDOFAndAA.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseRealTimeDOFAndAA; - - /** This property handles the flag to use depth of field or not. - * - * To access this property do: UseDepthOfField.Get(). - * To set this property do: UseDepthOfField.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseDepthOfField; - - /** This property handles the focus source. - * - * To access this property do: FocusSource.Get(). - * To set this property do: FocusSource.Set(EFocusDistanceSource). - * - * Default value is eFocusSrcCameraInterest. - * \see FocusDistance. - */ - FbxPropertyT FocusSource; - - /** This property handles the focus angle (in degrees). - * - * To access this property do: FocusAngle.Get(). - * To set this property do: FocusAngle.Set(FbxDouble). - * - * Default value is 3.5. - */ - FbxPropertyT FocusAngle; - - /** This property handles the focus distance. - * Focus distance is the distance between the camera and the object on which the camera is focused. - * There are two possible sources for this distance. - * \see EFocusDistanceSource - * - * To access this property do: FocusDistance.Get(). - * To set this property do: FocusDistance.Set(FbxDouble). - * - * Default value is 200.0. - */ - FbxPropertyT FocusDistance; - - /** This property handles the flag to use anti aliasing or not. - * - * To access this property do: UseAntialiasing.Get(). - * To set this property do: UseAntialiasing.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAntialiasing; - - /** This property handles the anti aliasing intensity. - * - * To access this property do: AntialiasingIntensity.Get(). - * To set this property do: AntialiasingIntensity.Set(FbxDouble). - * - * Default value is 0.77777. - */ - FbxPropertyT AntialiasingIntensity; - - /** This property handles the anti aliasing method. - * - * To access this property do: AntialiasingMethod.Get(). - * To set this property do: AntialiasingMethod.Set(EAntialiasingMethod). - * - * Default value is eAAOversampling. - */ - FbxPropertyT AntialiasingMethod; - - // ----------------------------------------------------------------------- - // Accumulation Buffer - // ----------------------------------------------------------------------- - - /** This property handles the flag to use accumulation buffer or not. - * - * To access this property do: UseAccumulationBuffer.Get(). - * To set this property do: UseAccumulationBuffer.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAccumulationBuffer; - - /** This property handles the frame sampling count. - * - * To access this property do: FrameSamplingCount.Get(). - * To set this property do: FrameSamplingCount.Set(FbxInt). - * - * Default value is 7. - */ - FbxPropertyT FrameSamplingCount; - - /** This property handles the frame sampling type. - * - * To access this property do: FrameSamplingType.Get(). - * To set this property do: FrameSamplingType.Set(ESamplingType). - * - * Default value is eSamplingStochastic. - */ - FbxPropertyT FrameSamplingType; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - double ComputePixelRatio(FbxUInt pWidth, FbxUInt pHeight, double pScreenRatio = 1.3333333333); - - // Background Properties - FbxString mBackgroundMediaName; - FbxString mBackgroundFileName; - - // Foreground Properties - FbxString mForegroundMediaName; - FbxString mForegroundFileName; - - FbxVector4 mLastUp; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCamera::EAntialiasingMethod&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EAspectRatioMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDisplayMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDistanceMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EPlateDrawingMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFocusDistanceSource&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EGateFit&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EProjectionType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ERenderOptionsUsageTime&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESafeAreaStyle&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESamplingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFilmRollOrder&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h deleted file mode 100644 index 3e7ce63..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamerastereo.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ - -#include - -#include - -#include - -/** This node attribute contains methods for accessing the properties of a stereo camera. - * \nosubgrouping - * Generally, a set of stereoRig contains the center camera, the left camera and the right camera. - * FbxCameraStereo is used to represent the center camera. The left and right camera could be FbxCamera. - * FbxCameraStereo contains stereo properties. - * The left and right camera can also be get and set via related methods in FbxCameraStereo class. - * \see FbxCamera and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCameraStereo : public FbxCamera -{ - FBXSDK_OBJECT_DECLARE(FbxCameraStereo, FbxCamera); - -public: - //! Return the type of node attribute which is EType::eCameraStereo. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the stereo camera to default values. - void Reset(); - - /** Types of Stereo camera. - */ - enum EStereoType - { - eNone, //!< Disable the stereo effect.(Default value) - eConverged, //!< Computes the zero parallax plane by toeing in the cameras. - eOffAxis, //!< Computes the convergence plane by shifting the frustum using camera film back. - eParallel //!< A parallel camera setup where there is effectively no convergence plane. - }; - - /** Get the left camera which connect to property LeftCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the left camera. - */ - FbxCamera* GetLeftCamera() const; - - /** Get the right camera which connect to property RightCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the right camera. - */ - FbxCamera* GetRightCamera() const; - - /** Set the left camera, connect property LeftCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the left camera. - */ - bool SetLeftCamera(FbxCamera* pCamera); - - /** Set the right camera, connect property RightCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the right camera. - */ - bool SetRightCamera(FbxCamera* pCamera); - - /** Get the local transformation matrix of left camera. - * \return The local transformation matrix of left camera. - * \remarks Use this method to reevaluate the local transformation of left camera. - */ - FbxAMatrix GetLeftCameraLocalMatrix() const; - - /** Get the global matrix of left camera. - * \return The global transformation matrix of left camera. - * \remarks Use this method to reevaluate the global transformation of left camera. - */ - FbxAMatrix GetLeftCameraGlobalMatrix() const; - - /** Get the local transformation matrix of right camera. - * \return The local transformation matrix of right camera.. - * \remarks Use this method to reevaluate the local transformation of right camera. - */ - FbxAMatrix GetRightCameraLocalMatrix() const; - - /** Get the global transformation matrix of right camera. - * \return The global transformation matrix of right camera. - * \remarks Use this method to reevaluate the global transformation of right camera. - */ - FbxAMatrix GetRightCameraGlobalMatrix() const; - - /** Reevaluate the FilmOffsetX of left camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks This method does not set the FilmOffsetX of left camera. - */ - double ReevaluateLeftCameraFilmOffsetX() const; - - /** Reevaluate the FilmOffsetX of right camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks this method does not set the FilmOffsetX of right camera - */ - double ReevaluateRightCameraFilmOffsetX() const; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Stereo and Stereo Adjustments - // ----------------------------------------------------------------------- - - /** This property handles the types of Stereo camera. - * - * To access this property do: Stereo.Get(). - * To set this property do: Stereo.Set(EStereoType). - * - * \remarks Default Value is eNone. - */ - FbxPropertyT Stereo; - - /** This property handles the distance between left and right cameras. - * - * To access this property do: InteraxialSeparation.Get(). - * To set this property do: InteraxialSeparation.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT InteraxialSeparation; - - /** This property handles the distance on the camera view axis where the zero parallax plane occurs. - * - * To access this property do: ZeroParallax.Get(). - * To set this property do: ZeroParallax.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT ZeroParallax; - - /** This property is to offset the computed toe-in effect when it's in Converged mode. - * - * To access this property do: ToeInAdjust.Get(). - * To set this property do: ToeInAdjust.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - * This value is specified in degrees and acts as an offset to the computed toe-in. - * \see EStereoType. - */ - FbxPropertyT ToeInAdjust; - - /** This property handles the film offset for the right camera. - * - * To access this property do: FilmOffsetRightCam.Get(). - * To set this property do: FilmOffsetRightCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetRightCam; - - /** This property handles the film offset for the left camera. - * - * To access this property do: FilmOffsetLeftCam.Get(). - * To set this property do: FilmOffsetLeftCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetLeftCam; - - /** This property has the right camera connected to it. - * - * To access this property do: GetRightCamera(). - * To set this property do: SetRightCamera(FbxCamera* pCamera). - * - * \remarks The right camera is connected as source object. - */ - FbxPropertyT RightCamera; - - /** This property has the left camera connected to it. - * - * To access this property do: GetLeftCamera(). - * To set this property do: SetLeftCamera(FbxCamera* pCamera). - * - * \remarks The left camera is connected as source object. - */ - FbxPropertyT LeftCamera; - - /** This property handles the precomp file name - * - * To access this property do: PrecompFileName.Get(). - * To set this property do: PrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT PrecompFileName; - - /** This property handles the relative precomp file name - * - * To access this property do: RelativePrecompFileName.Get(). - * To set this property do: RelativePrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT RelativePrecompFileName; - - /** connect left and right camera property to stereo camera. - * \return true if it's successful, otherwise return false. - * \remarks It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - * FilmHeight, FilmSqueezeRatio] to stereo camera. - * During FBX SDK reevaluating, if ConnectProperties is called, - * to get the newest FocalLength property of left camera, please use lLeft_Camera->FocalLength.GetSrcProperty(); - */ - bool ConnectProperties(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCameraStereo::EStereoType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h deleted file mode 100644 index e498a9c..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcameraswitcher.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ - -#include - -#include -#include - -#include - -/** This node attribute contains methods for accessing the properties of a camera switcher. - * The camera switcher is a concept of Motion Builder. - * The camera switcher lets you switch between the custom cameras placed in your scene so you can create an animation using multiple camera angles. - * Custom cameras are cameras which created by users, while the default cameras are top, bottom, left, right, front, back and perspective camera. - * The Camera switcher contains the custom cameras you have created. If you have no custom cameras created in your scene, the Camera switcher is empty. - * Please read Motion Builder documentation for more details. - * \nosubgrouping - * \see FbxCamera and FbxCameraStereo. - */ -class FBXSDK_DLL FbxCameraSwitcher : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCameraSwitcher,FbxNodeAttribute); - - public: - /** - * \name Properties - */ - //@{ - /** This property handles the index of camera. - * - * Default value is 1. - */ - FbxPropertyT CameraIndex; - //@} - - //! Return the type of node attribute which is EType::eCameraSwitcher. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Default Animation Values. - * These functions provides direct access to default animation values specific to a camera switcher. The default animation - * values are found in the default take node of the associated node. These functions only work if the camera switcher has been - * associated with a node. - * - * Camera indices start at 1. Out of range indices are clamped between 1 and the number of cameras in the scene. The index of a - * camera refers to its order of appearance when searching the node tree depth first. - */ - //@{ - - /** Get default camera index. - * \return Camera index. The return value is an integer between 1 and the number - * of cameras in the scene, or 0 if there are no default camera set in the camera switcher. - */ - int GetDefaultCameraIndex() const; - - /** Set default camera index. - * \param pIndex The index of the camera to set as default. This parameter has an integer - * scale from 1 to the number of cameras in the scene. Its default value is 1 if - * there is at least one camera in the camera switcher, 0 if there are none. - * No validation checks are made. - */ - void SetDefaultCameraIndex(int pIndex); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - -public: - void AddCameraName(const char* pCameraName); - char* GetCameraName(FbxUInt pIndex) const; - FbxUInt GetCameraNameCount() const; - void ClearCameraNames(); - -protected: - FbxArray mCameraNameList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h deleted file mode 100644 index 1d78994..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h +++ /dev/null @@ -1,295 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcluster.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ - -#include - -#include - -#include - -/** Class for clusters (links). - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * - * A cluster is usually part of a skin (\see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxCluster : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxCluster,FbxSubDeformer); - -public: - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return SubDeformer type identifier: eCluster. - */ - EType GetSubDeformerType() const override {return eCluster; }; - - /** Restore the cluster to its initial state. - * Calling this function will clear the following: - * \li Pointer to linked node. - * \li Pointer to associate model. - * \li Control point indices and weights. - * \li Transformation matrices. - */ - void Reset(); - //@} - /** - * \name Link Mode, Link Node, Associate Model - */ - //@{ - /** Link modes. - * The link mode sets how the link influences the position of a control - * point and the relationship between the weights assigned to a control - * point. The weights assigned to a control point are distributed among - * the set of links associated with an instance of class FbxGeometry. - */ - enum ELinkMode - { - eNormalize, /*!< In mode eNormalize, the sum of the weights assigned to a control point - is normalized to 1.0. Setting the associate model in this mode is not - relevant. The influence of the link is a function of the displacement of the - link node relative to the node containing the control points.*/ - eAdditive, - /*!< In mode eAdditive, the sum of the weights assigned to a control point - is kept as is. It is the only mode where setting the associate model is - relevant. The influence of the link is a function of the displacement of - the link node relative to the node containing the control points or, - if set, the associate model. The weight gives the proportional displacement - of a control point. For example, if the weight of a link over a control - point is set to 2.0, a displacement of the link node of 1 unit in the X - direction relative to the node containing the control points or, if set, - the associate model, triggers a displacement of the control point of 2 - units in the same direction.*/ - eTotalOne - /*!< Mode eTotalOne is identical to mode eNormalize except that the sum of the - weights assigned to a control point is not normalized and must equal 1.0.*/ - }; - - /** Set the link mode. - * \param pMode The link mode. - * \remarks All the links associated to an instance of class FbxGeometry must have the same link mode. - */ - void SetLinkMode(ELinkMode pMode); - - /** Get the link mode. - * \return The link mode. - */ - ELinkMode GetLinkMode() const; - - /** Set the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \param pNode The link node. - */ - void SetLink(const FbxNode* pNode); - - /** Get the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - FbxNode* GetLink(); - - /** Get the link node (as const). The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - const FbxNode* GetLink() const; - - /** Set the associate model. - * The associate model is optional. It is only relevant if the link mode - * is of type eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative to the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \param pNode The associate model node. - */ - void SetAssociateModel(FbxNode* pNode); - - /** Get the associate model. - * The associate model is optional. It is only relevant if the link mode is of type - * eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative the the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \return The associate model node or \c NULL if FbxCluster::SetAssociateModel() has not been called before. - */ - FbxNode* GetAssociateModel() const; - //@} - /** - * \name Control Points - * A link has an array of indices to control points and associated weights. - * The indices refer to the control points in the instance of class FbxGeometry - * owning the link. The weights are the influence of the link node over the - * displacement of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and weights. - * \param pIndex The index of the control point. - * \param pWeight The link weight for this control point. - */ - void AddControlPointIndex(int pIndex, double pWeight); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point weights. - * \return Pointer to the array of control point weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointWeights() const; - - //@} - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - /** - * \name Transformation matrices - * A link has three transformation matrices: - * \li Transform refers to the global initial transform of the geometry node that contains the link node. - * \li TransformLink refers to global initial transform of the link node. - * \li TransformAssociateModel refers to the global initial transform of the associate model. - * - * For example, given a mesh binding with several bones(links), Transform is the global transform - * of the mesh at the binding moment, TransformLink is the global transform of the bone(link) - * at the binding moment, TransformAssociateModel is the global transform of the associate model - * at the binding moment. - */ - //@{ - - /** Set matrix associated with the node containing the link. - * \param pMatrix Transformation matrix. - */ - void SetTransformMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the node containing the link. - * \param pMatrix Transformation matrix to be filled with appropriate data. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the link node. - * \param pMatrix Transformation matrix. - */ - void SetTransformLinkMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the link node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformLinkMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the associate model. - * \param pMatrix Transformation matrix. - */ - void SetTransformAssociateModelMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the associate model. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformAssociateModelMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the parent node. - * \param pMatrix Transformation matrix. - */ - void SetTransformParentMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the parent node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformParentMatrix(FbxAMatrix& pMatrix) const; - - /** Get the Transform Parent set flag value. - * \return \c true if transform matrix associated with parent node is set. - */ - bool IsTransformParentSet() const { return mIsTransformParentSet; } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void SetUserData(const char* pUserDataID, const char* pUserData); - const char* GetUserDataID () const; - const char* GetUserData () const; - const char* GetUserData (const char* pUserDataID) const; - - // For pre version 6 support - FbxString mBeforeVersion6LinkName; - FbxString mBeforeVersion6AssociateModelName; - - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - ELinkMode mLinkMode; - FbxString mUserDataID; - FbxString mUserData; - FbxArray mControlPointIndices; - FbxArray mControlPointWeights; - FbxMatrix mTransform; - FbxMatrix mTransformLink; - FbxMatrix mTransformAssociate; - FbxMatrix mTransformParent; - bool mIsTransformParentSet; - - FbxPropertyT SrcModelReference; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h deleted file mode 100644 index 24b61f5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ - -#include - -#include -#include - -/** Base class for skin deformer (FbxSkin) and vertex cache deformer (FbxVertexCacheDeformer). - * The corresponding deformer types are FbxDeformer::eSkin and FbxDeformer::eVertexCache. - * A deformer can be binded to a geometry (FbxGeometry) to act on its shape. Typically, - * some objects under the deformer are animated, and via the deformer, the geometry - * is animated too. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * A vertex cache deformer contains a cache (FbxCache). The cache contains animation - * information for every control point of the geometry. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDeformer, FbxObject); - -public: - /** - * \name Multi-Layer Flag - * This flag is available for backward compatibility with older - * version of FBX files and should not be used anymore. All the animation layering - * system has been moved to the FbxAnimLayer and FbxAnimStack classes. - */ - //@{ - /** Set multi-layer state flag. - * \param pMultiLayer Set to \c true to enable multi-layering. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multi-layer state. - * \return The current state of the multi-layer flag. - */ - bool GetMultiLayer() const; - //@} - - /** - * \name Deformer types - */ - //@{ - /** \enum EDeformerType Deformer types. - */ - enum EDeformerType - { - eUnknown, //!< Unknown deformer type - eSkin, //!< Type FbxSkin - eBlendShape, //!< Type FbxBlendShape - eVertexCache //!< Type FbxVertexCacheDeformer - }; - - /** Get the deformer type. - * \return Deformer type identifier. Default value is eUnknown. - */ - virtual EDeformerType GetDeformerType() const { return eUnknown; } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h deleted file mode 100644 index 1f0f7e0..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgenericnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ - -#include -#include - -#include - -/** Empty node containing properties. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGenericNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGenericNode, FbxObject); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h deleted file mode 100644 index 0182164..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h +++ /dev/null @@ -1,318 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_H_ -#define _FBXSDK_SCENE_GEOMETRY_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -class FbxStatus; -class FbxGeometryWeightedMap; - -/** The base class of geometric objects that support control point deformations (e.g. FbxMesh, FbxNurbs, -* and FbxPatch). The FbxGeometry provides support for the following kinds of deformations. -* -* \li Skin deformation deformers -* \li Vertex cache deformers -* \li Geometry weighted maps -* \li Shapes -* -* Most of the methods of FbxGeometry are wrappers to simplify the access/manipulation of the connections -* to the deformers. For example, calling the GetDeformerCount() method is the same -* thing as calling: -* -* \code -* geometry.GetSrcObjectCount(FbxDeformer::ClassId) -* \endcode -*/ -class FBXSDK_DLL FbxGeometry : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxGeometry,FbxGeometryBase); - -public: - /** Returns the node attribute type. - * This method is derived in the more high level classes (FbxMesh, FbxNurbs, etc...) and returns the - * actual type of the geometry object. - * - * \return \e eUnknown - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Deformer Management - */ - //@{ - - /** Adds a deformer to this geometry (as mentioned in the description of this class, adding a deformer is a synonym - * for "connect a deformer"). - * \param pDeformer Pointer to the deformer to be added. - * \return Index of the added deformer. - */ - int AddDeformer(FbxDeformer* pDeformer); - - /** Remove a deformer. - * \param pIndex Index of deformer to remove. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the removed deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* RemoveDeformer(int pIndex, FbxStatus* pStatus = NULL); - - /** Returns the number of deformers. - * \return The number of deformers that are connected to this geometry. - */ - int GetDeformerCount() const; - - /** Returns the deformer at the specified index. - * \param pIndex The specified deformer index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the number of deformers of a specified type. - * \param pType The specified deformer type. - * \return The number of deformers of the specified type. - */ - int GetDeformerCount(FbxDeformer::EDeformerType pType) const; - - /** Returns the deformer of a specified type at the specified index. - * \param pIndex The specified deformer index. - * \param pType The specified deformer type. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxDeformer::EDeformerType pType, FbxStatus* pStatus = NULL) const; - - //@} - - /** - * \name Geometry Weighted Maps Management - */ - //@{ - - /** Returns the source geometry weighted map that is connected to this geometry. - * \return Pointer to the source geometry weighted map that is connected to this geometry if any. - */ - FbxGeometryWeightedMap* GetSourceGeometryWeightedMap(); - - /** Returns the number of destination geometry weighted map(s) that are connected to this geometry. - * \return The number of destination geometry weighted map(s) that are connected to this geometry. - */ - int GetDestinationGeometryWeightedMapCount() const; - - /** Returns the destination geometry weighted map at a specified index. - * \param pIndex The specified index. - * \return Pointer to the destination geometry weighted map at the specified index (if any). - */ - FbxGeometryWeightedMap* GetDestinationGeometryWeightedMap(int pIndex); - - //@} - - /** - * \name Shape Management - */ - //@{ - - /** Add a shape to the specified blend shape deformer and blend shape channel of this geometry. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShape Pointer to the shape object to be added. - * \param pPercent The full deform percentage of this shape. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if success, \c false otherwise. - */ - bool AddShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxShape* pShape, double pPercent = 100, FbxStatus* pStatus = NULL); - - /** Removes all the shapes without destroying them. - * If shapes aren't explicitly destroyed before calling this function, they will be - * destroyed along with the SDK manager that created them. - */ - void ClearShape(); - - /** Returns the number of shapes. - * \return The number of shapes that have been added to this geometry. - */ - int GetShapeCount() const; - - /** Returns the number of shapes. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of shapes that have been added to this blend shape channel of this blend shape deformer. - */ - int GetShapeCount(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL); - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - const FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL) const; - - /** Get the shape animation curve. - * The shape channel is an animatable property with a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pLayer The animation layer from which we want to get the requested animation curve. - * \param pCreateAsNeeded If \c true, creates the animation curve if it is not already present. - * \param pStatus The FbxStatus object to hold error codes. - * \return Animation curve (or NULL if an error occurred). - * \remarks If pLayer is left at NULL, the method will use the first layer of the Animation stack. - */ - FbxAnimCurve* GetShapeChannel(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxAnimLayer* pLayer, bool pCreateAsNeeded = false, FbxStatus* pStatus = NULL); - //@} - - /** NURBS and Patches surface modes. - * This information is never directly used inside the FBX SDK. Applications can use these values if they wish to - * carry the "rendering" details of the NURBS and Patches. The FBX SDK guarantee that the value (member of the FbxNurbs, - * FbxNurbsSurface and FbxPatch classes) is stored to FBX files and retrieved from them. - * \remarks The enum has been defined in this class to avoid symbols duplication. - */ - enum ESurfaceMode - { - eRaw, //! Raw. - eLowNoNormals, //! Low and no normals. - eLow, //! Low. - eHighNoNormals, //! High and no normals. - eHigh //! High. - }; - - /** - * \name Pivot Management - * The geometry pivot is used to specify additional translation, rotation, - * and scaling information applied to all control points when the model is - * exported. - */ - //@{ - - /** Returns the pivot matrix. - * \param pXMatrix Placeholder for the returned matrix. - * \return Reference to the passed argument. - */ - FbxAMatrix& GetPivot(FbxAMatrix& pXMatrix) const; - - /** Sets the pivot matrix. - * \param pXMatrix The transformation matrix that is assigned to the pivot matrix. - */ - void SetPivot(FbxAMatrix& pXMatrix); - - /** Applies the pivot matrix to all vertices/normals of the geometry. - */ - void ApplyPivot(); - - //@} - - /** - * \name Default Animation Values - * These functions provides direct access to default animation values that are specific to a geometry. - * These functions only work if the geometry has been associated with a node. - */ - //@{ - - /** Sets the default deformation for a specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pIndex is out of range. - */ - void SetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, double pPercent); - - /** Sets the default deformation for a specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pShapeName is invalid. - */ - void SetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel, double pPercent); - - /** Returns the default deformation value for the specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \return The deformation value for the specified shape, or 0 if pIndex is out of range. - */ - double GetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex) const; - - /** Returns the default deformation value for the specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \return The deformation value for the specified shape, or 0 if pShapeName is invalid. - */ - double GetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - - void CleanShapeChannels(FbxAnimLayer* pAnimLayer); - void CleanShapeChannel(FbxAnimLayer* pAnimLayer, int pShapeIndex); - void CreateShapeChannelProperties(FbxString& pShapeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName, int pShapeIndex); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName, int pShapeIndex); - void ClearTemporaryShapeNames(); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void SetDocument(FbxDocument* pDocument) override; - - FbxString CreateShapeChannelName(int pShapeIndex); - FbxString CreateShapeChannelName(FbxString pShapeName); - - void CopyDeformers(const FbxGeometry* pGeometry); - void CopyPivot(const FbxGeometry* pSource); - - // Used during FBX v5 file store - FbxArray mShapeNameArrayV6; - FbxArray mShapeNameArrayV5; - FbxArray mShapeChannelNameArrayV5; - - FbxAMatrix* mPivot; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h deleted file mode 100644 index 47abdce..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h +++ /dev/null @@ -1,669 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometrybase.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BASE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BASE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; - -/** This class is the base class for geometric object such as meshes, NURBS and patches. - * Use the FbxGeometryBase class to manage the control points, normals, binormals and tangents of the - * geometries. - * The meaning of "control point" is dependent of the geometry object type. For meshes, the "control point" - * is the physical 3D coordinate of polygon vertices while, for NURBS, it is the the actual control point on the curves - * defining the surface. This class also allow you to define normals, binormals and tangents regardless of the type of - * geometric object. However, in reality, applying such definitions to NURBS and patches does not make much sense - * since these definitions would only exist at the control points and inbetween them, the interpolation would certainly not - * follow the curve. - * - * Geometric objects are using a system of layered data to extend their construction definition. For example, a typical - * layer for a Mesh contains Normals, UVs and Materials but client applications can decide to define another set of - * Normals and UVs and swap them during the rendering phase to produce some different results. The combinations are limitless - * and it would be impossible to discuss them all. This example has been presented to show one possible context where - * layers can be used. More information can be found in the FbxLayerContainer and FbxLayer classes description. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGeometryBase : public FbxLayerContainer -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryBase, FbxLayerContainer); - -public: - /** - * \name Control Points, Normals, Binormals and Tangent Management. - */ - //@{ - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will be cleared. - */ - virtual void InitControlPoints(int pCount); - - /** Allocates memory space for the array of normals. - * \param pCount The desired size for the normal array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * \remarks The normals initialized with this function will have the ReferenceMode set to eDirect. Also, - * the array will always be defined on layer 0. - */ - void InitNormals(int pCount = 0 ); - - /** Allocates memory space for the array of normals cloned from the pSrc. - * \param pSrc The source geometry from which the normals information is cloned. - * \remarks This function must be called with the argument, otherwise it does not do anything. Also, - * it will only process the normals array defined on layer 0 of the pSrc. - */ - void InitNormals(FbxGeometryBase* pSrc); - - /** Allocates memory space for the array of tangents on specified layer. - * \param pCount The desired size of the tangent array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of tangents. - * \param pName The specified name for the allocated tangents array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The tangents initialized with this function will have the reference mode set to eDirect. - */ - void InitTangents(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of tangents cloned from the pSrc on the specified layer. - * \param pSrc The source geometry from which the tangents information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of tangents from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitTangents(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Allocates memory space for the array of binormals. - * \param pCount The desired size of the binormal array. If pCount is specified, the array will have the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of binormals. - * \param pName The specified name for the allocated binormals array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The binormals initialized with this function will have the reference mode set to eDirect. - */ - void InitBinormals(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of binormals cloned from the pSrc. - * \param pSrc The source geometry from which the binormals information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of binormals from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitBinormals(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Sets the control point and the normal values at the specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the control point/normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting if it already exist. NOTE: This feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the arrays (control points and normals) are not big enough to store the values at the - * specified index, they will be automatically resized to accommodate the new entries. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false); - - - /** Sets the control point at a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index of the control point. - * - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex); - - /** Gets the control point at the specified index. - * \param pIndex The specified index of the control point. - * \return The value of the specific control point. - * - * \remarks If index is out of range, FbxVector4(0, 0, 0) is returned. - */ - virtual FbxVector4 GetControlPointAt(int pIndex) const; - - /** Sets the control point normal value at the specified index. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting it if it already exist. NOTE: this feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointNormalAt(const FbxVector4 &pNormal, int pIndex, bool pI2DSearch=false); - - /** Returns the number of control points. - * \return The number of control points allocated in the geometry. - */ - virtual int GetControlPointsCount() const; - - - /** Returns a pointer to the array of control points. - * \param pStatus Not used in the implementation of this class. - * \return Pointer to the array of control points, or \c NULL if the array has not been allocated. - * \remarks Use the function FbxGeometryBase::InitControlPoints() to allocate the array. - */ - virtual FbxVector4* GetControlPoints(FbxStatus* pStatus=NULL) const; - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will NOT be cleared. - */ - virtual void SetControlPointCount(int pCount); - - //@} - - - /** - * \name Public and fast access Properties - */ - //@{ - //! Control the geometry render state. Geometry can still cast shadows even if this is turned off. - FbxPropertyT PrimaryVisibility; - - //! If true, the geometry will produce shadows. - FbxPropertyT CastShadow; - - //! If true, the geometry will receive shadows. - FbxPropertyT ReceiveShadow; - - //! The minimum value of the control points bounding box. - FbxPropertyT BBoxMin; - - //! The maximum value of the control points bounding box. - FbxPropertyT BBoxMax; - - /** Computes the control points Bounding box. - */ - void ComputeBBox(); - //@} - - - /** - * \name Geometry Element Management. - * A FbxGeometryElement describes how the geometry element (normals, UVs and etc.) is mapped to a geometry - * surface and how the mapping information is arranged in memory. - * FbxGeometryElement is exactly the same as FbxLayerElement but does not expose the geometry's layer information. - * Use the geometry element classes to decompose the geometry without dealing with layers. - */ - //@{ - - /** Creates a normal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementNormal* CreateElementNormal(); - - /** Remove the normal geometry element from this geometry. - * \param pElementNormal A pointer to the normal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementNormal(FbxGeometryElementNormal* pElementNormal); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementNormal* GetElementNormal(int pIndex = 0); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementNormal* GetElementNormal(int pIndex = 0) const; - - /** Get the number of this geometry's normal geometry element. - * \return Total number of normal geometry elements for this geometry. - */ - int GetElementNormalCount() const; - - /** Creates a binormal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementBinormal* CreateElementBinormal(); - - /** Remove the binormal geometry element from this geometry. - * \param pElementBinormal A pointer to the binormal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementBinormal(FbxGeometryElementBinormal* pElementBinormal); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0) const; - - /** Get the number of this geometry's binormal geometry element. - * \return Total number of binormal geometry elements for this geometry. - */ - int GetElementBinormalCount() const; - - /** Creates a tangent geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementTangent* CreateElementTangent(); - - /** Remove the tangent geometry element from this geometry. - * \param pElementTangent A pointer to the tangent element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementTangent(FbxGeometryElementTangent* pElementTangent); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementTangent* GetElementTangent(int pIndex = 0); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementTangent* GetElementTangent(int pIndex = 0) const; - - /** Get the number of this geometry's tangent geometry element. - * \return Total number of tangent geometry elements for this geometry. - */ - int GetElementTangentCount() const; - - /** Creates a material geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementMaterial* CreateElementMaterial(); - - /** Remove the material geometry element from this geometry. - * \param pElementMaterial A pointer to the material element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementMaterial(FbxGeometryElementMaterial* pElementMaterial); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0) const; - - /** Get the number of this geometry's material geometry element. - * \return Total number of material geometry elements for this geometry. - */ - int GetElementMaterialCount() const; - - /** Creates a polygon group geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementPolygonGroup* CreateElementPolygonGroup(); - - /** Remove the polygon group geometry element from this geometry. - * \param pElementPolygonGroup A pointer to the polygon group element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementPolygonGroup(FbxGeometryElementPolygonGroup* pElementPolygonGroup); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0) const; - - /** Get the number of this geometry's polygon group geometry element. - * \return Total number of polygon group geometry elements for this geometry. - */ - int GetElementPolygonGroupCount() const; - - /** Creates a vertex color geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVertexColor* CreateElementVertexColor(); - - /** Remove the vertex color geometry element from this geometry. - * \param pElementVertexColor A pointer to the vertex color element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexColor(FbxGeometryElementVertexColor* pElementVertexColor); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0) const; - - /** Get the number of this geometry's vertex color geometry element. - * \return Total number of vertex color geometry elements for this geometry. - */ - int GetElementVertexColorCount() const; - - /** Creates a smoothing geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementSmoothing* CreateElementSmoothing(); - - /** Remove the smoothing geometry element from this geometry. - * \param pElementSmoothing A pointer to the smoothing element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementSmoothing(FbxGeometryElementSmoothing* pElementSmoothing); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0) const; - - /** Get the number of this geometry's smoothing geometry element. - * \return Total number of smoothing geometry elements for this geometry. - */ - int GetElementSmoothingCount() const; - - /** Creates a vertex crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementVertexCrease(); - - /** Remove the vertex crease geometry element from this geometry. - * \param pElementCrease A pointer to the vertex crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0) const; - - /** Get the number of this geometry's vertex crease geometry element. - * \return Total number of vertex crease geometry elements for this geometry. - */ - int GetElementVertexCreaseCount() const; - - /** Creates an edge crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementEdgeCrease(); - - /** Remove the edge crease geometry element from this geometry. - * \param pElementCrease A pointer to the edge crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementEdgeCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0) const; - - /** Get the number of this geometry's edge crease geometry element. - * \return Total number of edge crease geometry elements for this geometry. - */ - int GetElementEdgeCreaseCount() const; - - /** Creates a hole geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementHole* CreateElementHole(); - - /** Remove the hole geometry element from this geometry. - * \param pElementHole A pointer to the hole element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementHole(FbxGeometryElementHole* pElementHole); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementHole* GetElementHole(int pIndex = 0); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementHole* GetElementHole(int pIndex = 0) const; - - /** Get the number of this geometry's hole geometry element. - * \return Total number of hole geometry elements for this geometry. - */ - int GetElementHoleCount() const; - - /** Creates a user data geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUserData* CreateElementUserData(); - - /** Remove the user data geometry element from this geometry. - * \param pElementUserData A pointer to the user data element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUserData(FbxGeometryElementUserData* pElementUserData); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementUserData* GetElementUserData(int pIndex = 0); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementUserData* GetElementUserData(int pIndex = 0) const; - - /** Get the number of this geometry's user data geometry element. - * \return Total number of user data geometry elements for this geometry. - */ - int GetElementUserDataCount() const; - - /** Creates a visibility geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVisibility* CreateElementVisibility(); - - /** Remove the visibility geometry element from this geometry. - * \param pElementVisibility A pointer to the visibility element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVisibility(FbxGeometryElementVisibility* pElementVisibility); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0) const; - - /** Get the number of this geometry's visibility geometry element. - * \return Total number of visibility geometry elements for this geometry. - */ - int GetElementVisibilityCount() const; - - /** Creates a UV geometry element for this geometry. - * \param pUVSetName The UV geometry element name. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUV* CreateElementUV(const char* pUVSetName, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Remove the UV geometry element from this geometry. - * \param pElementUV A pointer to the UV element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUV(FbxGeometryElementUV* pElementUV); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - const FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Get the number of this geometry's UV geometry element. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Total number of UV geometry elements for this geometry. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - int GetElementUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - FbxGeometryElementUV* GetElementUV(const char* pUVSetName); - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A const pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - const FbxGeometryElementUV* GetElementUV(const char* pUVSetName) const; - - /** Returns this geometry's all UV set names. - * \param pUVSetNameList A reference to \c FbxStringList that will be filled with this geometry's all UV set names. - */ - void GetUVSetNames(FbxStringList& pUVSetNameList) const; - - //@} - - - /** - * \name Off-loading Serialization section - * The methods in this section are typically called by a peripheral (FbxPeripheral). There should be no - * real interest in calling them directly. The functions will write/read the memory dump of the data contained - * in this class. Each data block written/read will start with an (int) value representing the number of items - * in the array. If this value (v) is not zero, it will be followed by the array content. A block of data that is - * (v * sizeof(array item size)) bytes big. The methods will also call the parent class ones to dump the Layers content. - */ - //@{ - /** Writes the content of the geometry object to the specified stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the geometry object from the specified stream. - * \param pStream The source stream. - * \return \c True if the geometry object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - - /** Calculate the actual amount of memory used by this geometry object. - * \return The memory size in bytes (includes the amount use by the data defined in the layers). - */ - virtual int MemoryUsage() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - FbxArray mControlPoints; - - bool GetNormals(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetNormalsIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTangents(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetTangentsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormals(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormalsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - -protected: - void ConstructProperties(bool pForceSet) override; - void ContentClear() override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BASE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h deleted file mode 100644 index 5d201a5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryweightedmap.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ - -#include - -#include -#include - -#include - -class FbxGeometry; - -/** \brief This class provides the structure to build a correspondence between 2 geometries. - * - * This correspondence is done at the vertex level. Which means that for each vertex in the - * source geometry, you can have from 0 to N corresponding vertices in the destination - * geometry. Each corresponding vertex is weighted. - * - * For example, if the source geometry is a NURB and the destination geometry is a mesh, - * the correspondence object will express the correspondence between the NURB's control vertices - * and the mesh's vertices. - * - * If the mesh corresponds to a tesselation of the NURB, the correspondence object can be used - * to transfer any deformation that affect the NURB's control vertices to the mesh's vertices. - * - * See FbxWeightedMapping for more details. - */ -class FBXSDK_DLL FbxGeometryWeightedMap : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryWeightedMap, FbxObject); - -public: - - /** Set correspondence values. - * \param pWeightedMappingTable Pointer to the table containing values - * \remark \e pWeightedMappingTable becomes owned by this object and will be destroyed by it - * when the object goes out of scope or on the next call to SetValues(). The deletion - * uses FbxDelete() so the content of the pointer must have been allocated with FbxNew<>() - */ - void SetValues(const FbxWeightedMapping* pWeightedMappingTable); - - /** Return correspondence values. - * \return Pointer to the correspondence values table. - */ - FbxWeightedMapping* GetValues() const; - - /** Return source geometry. - * \return Pointer to the source geometry, or \c NULL if there is no connected source geometry - */ - FbxGeometry* GetSourceGeometry(); - - /** Return destination geometry. - * \return Pointer to the destination geometry, or \c NULL if there is no connected destination geometry - */ - FbxGeometry* GetDestinationGeometry(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - // Real weigths table - FbxWeightedMapping* mWeightedMapping; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h deleted file mode 100644 index 4880ca1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h +++ /dev/null @@ -1,2808 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxLayerElementArray; -class FbxLayerContainer; - -/** Base class for elements of layers (FbxLayer). - * A layer element type is identified by EType. - * A FbxLayerElement describes how the layer element is mapped to a geometry surface - * and how the mapping information is arranged in memory. - * A FbxLayerElement contains Normals, UVs or other kind of information. - * - * \see FbxLayer - * \see FbxLayerElement::EMappingMode - * \see FbxLayerElement::EReferenceMode - */ -class FBXSDK_DLL FbxLayerElement -{ -public: - /** \enum EType Layer Element type identifier. - * - \e eUnknown Undefined Layer Element class. - * - \e eNormal Layer Element of type FbxLayerElementNormal. - * - \e eBiNormal Layer Element of type FbxLayerElementBinormal. - * - \e eTangent Layer Element of type FbxLayerElementTangent. - * - \e eMaterial Layer Element of type FbxLayerElementMaterial. - * - \e eTextureDiffuse Layer Element of type FbxLayerElementTexture. - * - \e ePolygonGroup Layer Element of type FbxLayerElementPolygonGroup. - * - \e eUV Layer Element of type FbxLayerElementUV. - * - \e eVertexColor Layer Element of type FbxLayerElementVertexColor. - * - \e eSmoothing Layer Element of type FbxLayerElementSmoothing. - * - \e eVertexCrease Layer Element of type FbxLayerElementCrease. - * - \e eEdgeCrease Layer Element of type FbxLayerElementCrease. - * - \e eHole Layer Element of type FbxLayerElementHole. - * - \e eUserData Layer Element of type FbxLayerElementUserData. - * - \e eVisibility Layer Element of type FbxLayerElementVisibility. - * - \e eTextureEmissive Layer Element of type FbxLayerElementTexture. - * - \e eTextureEmissiveFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbient Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbientFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDiffuseFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecular Layer Element of type FbxLayerElementTexture. - * - \e eTextureNormalMap Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecularFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureShininess Layer Element of type FbxLayerElementTexture. - * - \e eTextureBump Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparency Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparencyFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflection Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflectionFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacement Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacementVector Layer Element of type FbxLayerElementTexture. - * - \e eTypeCount - */ - enum EType - { - eUnknown, - - //Non-Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eNormal, - eBiNormal, - eTangent, - eMaterial, - ePolygonGroup, - eUV, - eVertexColor, - eSmoothing, - eVertexCrease, - eEdgeCrease, - eHole, - eUserData, - eVisibility, - - //Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eTextureDiffuse, - eTextureDiffuseFactor, - eTextureEmissive, - eTextureEmissiveFactor, - eTextureAmbient, - eTextureAmbientFactor, - eTextureSpecular, - eTextureSpecularFactor, - eTextureShininess, - eTextureNormalMap, - eTextureBump, - eTextureTransparency, - eTextureTransparencyFactor, - eTextureReflection, - eTextureReflectionFactor, - eTextureDisplacement, - eTextureDisplacementVector, - - eTypeCount - }; - - const static int sTypeTextureStartIndex = int(eTextureDiffuse); //!< The start index of texture type layer elements. - const static int sTypeTextureEndIndex = int(eTypeCount) - 1; //!< The end index of texture type layer elements. - const static int sTypeTextureCount = sTypeTextureEndIndex - sTypeTextureStartIndex + 1; //!< The count of texture type layer elements. - const static int sTypeNonTextureStartIndex = int(eNormal); //!< The start index of non-texture type layer elements. - const static int sTypeNonTextureEndIndex = int(eVisibility); //!< The end index of non-texture type layer elements. - const static int sTypeNonTextureCount = sTypeNonTextureEndIndex - sTypeNonTextureStartIndex + 1; //!< The count of non-texture type layer elements. - static const char* const sTextureNames[]; //!< Array of names of texture type layer elements. - static const char* const sTextureUVNames[]; //!< Array of names of UV layer elements. - static const char* const sNonTextureNames[]; //!< Array of names of non-texture type layer elements. - static const FbxDataType sTextureDataTypes[]; //!< Array of texture types. - static const char* const sTextureChannelNames[]; //!< Array of texture channels. - - /** \enum EMappingMode Determines how the element is mapped to a surface. - * - \e eNone The mapping is undetermined. - * - \e eByControlPoint There will be one mapping coordinate for each surface control point/vertex. - * - \e eByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. - This means that a vertex will have as many mapping coordinates as polygons of which it is a part. - * - \e eByPolygon There can be only one mapping coordinate for the whole polygon. - * - \e eByEdge There will be one mapping coordinate for each unique edge in the mesh. - This is meant to be used with smoothing layer elements. - * - \e eAllSame There can be only one mapping coordinate for the whole surface. - */ - enum EMappingMode - { - eNone, - eByControlPoint, - eByPolygonVertex, - eByPolygon, - eByEdge, - eAllSame - }; - - /** \enum EReferenceMode Determines how the mapping information is stored in the array of coordinates. - * - \e eDirect This indicates that the mapping information for the n'th element is found in the n'th place of - FbxLayerElementTemplate::mDirectArray. - * - \e eIndex, This symbol is kept for backward compatibility with FBX v5.0 files. In FBX v6.0 and higher, - this symbol is replaced with eIndexToDirect. - * - \e eIndexToDirect This indicates that the FbxLayerElementTemplate::mIndexArray - contains, for the n'th element, an index in the FbxLayerElementTemplate::mDirectArray - array of mapping elements. eIndexToDirect is usually useful for storing eByPolygonVertex mapping - mode elements coordinates. Since the same coordinates are usually - repeated many times, this saves spaces by storing the coordinate only one time - and then referring to them with an index. Materials and Textures are also referenced with this - mode and the actual Material/Texture can be accessed via the FbxLayerElementTemplate::mDirectArray - */ - enum EReferenceMode - { - eDirect, - eIndex, - eIndexToDirect - }; - - - /** Sets the Mapping Mode. - * \param pMappingMode Specifies the way that layer element is mapped to a surface. - */ - void SetMappingMode(EMappingMode pMappingMode) { mMappingMode = pMappingMode; } - - /** Sets the Reference Mode. - * \param pReferenceMode Specifies the reference mode. - */ - void SetReferenceMode(EReferenceMode pReferenceMode) { mReferenceMode = pReferenceMode; } - - /** Returns the Mapping Mode. - * \return The current Mapping Mode. - */ - EMappingMode GetMappingMode() const { return mMappingMode; } - - /** Returns the Reference Mode. - * \return The current Reference Mode. - */ - EReferenceMode GetReferenceMode() const { return mReferenceMode; } - - /** Sets the name of this object. - * \param pName Specifies the name of this LayerElement object. - */ - void SetName(const char* pName) { mName = FbxString(pName); } - - /** Returns the name of this object. - * \return The current name of this LayerElement object. - */ - const char* GetName() const { return ((FbxLayerElement*)this)->mName.Buffer(); } - - /** Equivalence operator - * \param pOther Layer element to be compared. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxLayerElement& pOther) const - { - return (mName == pOther.mName) && - (mMappingMode == pOther.mMappingMode) && - (mReferenceMode == pOther.mReferenceMode); - } - - /** Assignment operator - * \param pOther Layer element assigned to this one. - * \return This layer element after assignment. - */ - FbxLayerElement& operator=( FbxLayerElement const& pOther ) - { - mMappingMode = pOther.mMappingMode; - mReferenceMode = pOther.mReferenceMode; - // name, type and owner should not be copied because they are - // initialized when this object is created - return *this; - } - - //! Removes this layer element from its owner and delete it. - void Destroy(); - - //! Clears all the data from this layer element. - virtual bool Clear() - { - return true; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetType(const FbxDataType* pType) { mType = pType; } - const FbxLayerContainer* GetOwner() const { return mOwner; } - - // Reference count added in case of shared objects or corrupted files that uses the same object. - // This will prevent the deletion of an object that is stil used. - void IncRefCount() { mRefCount++; } - int DecRefCount() { mRefCount--; if (mRefCount < 0) { mRefCount = 0; } return mRefCount; } - -protected: - FbxLayerElement() - : mMappingMode(eNone) - , mReferenceMode(eDirect) - , mName("") - , mOwner(NULL) - , mRefCount(0) - { - } - - virtual ~FbxLayerElement() - { - } - - EMappingMode mMappingMode; - EReferenceMode mReferenceMode; - - FbxString mName; - const FbxDataType* mType; - FbxLayerContainer* mOwner; - int mRefCount; - - void Destruct() { if (DecRefCount() == 0) { FbxDelete(this); } } - virtual void SetOwner(FbxLayerContainer* pOwner, int pInstance = 0); - - FBXSDK_FRIEND_NEW(); - -public: - virtual int MemorySize() const { return 0; } - virtual bool ContentWriteTo(FbxStream& pStream) const; - virtual bool ContentReadFrom(const FbxStream& pStream); - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \internal - * Identifies what error occurs when the data arrays are manipulated. - * \nosubgrouping - */ - -class FBXSDK_DLL LockAccessStatus -{ -public: - /** \internal - * \enum ELockAccessStatus Identifies what error occurs when the data arrays are manipulated. - * - \e eSuccess Operation Successful. - * - \e eUnsupportedDTConversion Attempts to convert to an unsupported DataType. - * - \e eCorruptedCopyback The Release of a converted buffer fails and corrupts the main data. - * - \e eBadValue Invalid value. - * - \e eLockMismatch Attempts to change to an incompatible lock. - * - \e eNoWriteLock A write operation is attempted but no WriteLock is available. - * - \e eNoReadLock A read operation is attempted but the WriteLock is active. - * - \e eNotOwner Attempts to release a lock on an invalid data buffer pointer. - * - \e eDirectLockExist A direct access lock is still active. - */ - enum ELockAccessStatus - { - eSuccess, - eUnsupportedDTConversion, - eCorruptedCopyback, - eBadValue, - eLockMismatch, - eNoWriteLock, - eNoReadLock, - eNotOwner, - eDirectLockExist - }; -}; - -//Special conversion types, we do not want them to resolve to undefined. -typedef FbxHandle* FbxRefPtr; -typedef FbxLayerElementArray* FbxLayerElementArrayPtr; -typedef FbxSurfaceMaterial* FbxSurfaceMaterialPtr; -typedef FbxTexture* FbxTexturePtr; - -inline EFbxType FbxTypeOf(const FbxRefPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxLayerElementArrayPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxSurfaceMaterialPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxTexturePtr&){ return eFbxReference; } - -/** FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, - * it provides lock handling and data array manipulation of the data buffer for FbxLayerElement. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxLayerElementArray -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * \param pDataType The data type of the items in the data array. - */ - FbxLayerElementArray(EFbxType pDataType); - - //!Destructor. - virtual ~FbxLayerElementArray(); - - //@} - - /** - * \name Status handling - */ - //@{ - - //!Clears the access state and sets it to eSuccess. - inline void ClearStatus() { mStatus = LockAccessStatus::eSuccess; } - - //!Retrieves the access state. - inline LockAccessStatus::ELockAccessStatus GetStatus() const { return mStatus; } - //@} - - /** - * \name Locks handling - */ - //@{ - - /** Returns whether write is locked. - * \return \c True if write is locked, \c false otherwise. - */ - inline bool IsWriteLocked() const { return mWriteLock; }; - - /** Retrieves the read lock count. - * \return The read lock count. - */ - inline int GetReadLockCount() const { return mReadLockCount; } - //@} - - /** Returns whether this Array is accessed in any way. - * \return \c True if it is in use, \c false otherwise. - */ - bool IsInUse() const; - - /** Increments the number of read locks on this array. - * \return The current number of read locks (including the one just grabbed) or 0 if a write lock is active. - */ - int ReadLock() const; - - /** Releases a read lock on this array. - * \return The remaining read locks or -1 if a write lock is active. - */ - int ReadUnlock() const; - - /** Locks this array for writing. The data in the array is wiped out. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool WriteLock() const; - - /** Releases the write lock on this array. - */ - void WriteUnlock() const; - - /** Locks this array for writing. The data that already exists in the array is kept and is valid. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool ReadWriteLock() const; - - /** Releases the write lock on this array. - */ - void ReadWriteUnlock() const; - - - /** \enum ELockMode Identifies the access mode to the data buffer. - * - \e eReadLock Read mode. - * - \e eWriteLock Write mode. - * - \e eReadWriteLock Read-write mode. - */ - enum ELockMode - { - eReadLock = 1, - eWriteLock = 2, - eReadWriteLock = 3 - }; - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \param pDataType If defined, tries to return the data as this type. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - virtual void* GetLocked(ELockMode pLockMode, EFbxType pDataType); - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - void* GetLocked(ELockMode pLockMode=eReadWriteLock) { return GetLocked(pLockMode, mDataType); } - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - template inline T* GetLocked(T*, ELockMode pLockMode=eReadWriteLock) {T v; return (T*)GetLocked(pLockMode, FbxTypeOf(v)); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param pDataType The data type of the data buffer. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - virtual void Release(void** pDataPtr, EFbxType pDataType); - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - void Release(void** pDataPtr) { Release(pDataPtr, mDataType); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param dummy The data type of dummy is used to specialize this function. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - template inline void Release(T** pDataPtr, T* dummy) - { - T*** voidPtr = &pDataPtr; - Release((void**)*voidPtr, FbxTypeOf(*dummy)); - } - - /** Returns the Stride size which equals the size of the data type of the data buffer. - */ - virtual size_t GetStride() const; - - /** - * \name Data array manipulation - */ - //@{ - - //! Returns the count of items in the data buffer. - int GetCount() const; - - /** Sets the count of items in the data buffer. - * \param pCount The count of items to be set. - */ - void SetCount(int pCount); - - //! Clears the data buffer. - void Clear(); - - /** Resizes the data buffer. - * \param pItemCount The new size of the data buffer. - */ - void Resize(int pItemCount); - - /** Appends space to the data buffer. - * \param pItemCount The appended space size - */ - void AddMultiple(int pItemCount); - - /** Appends a new item to the end of the data buffer. - * \param pItem Pointer of the new item to be added - * \param pValueType Data type of the new item - * \return The index of the new item - */ - int Add(const void* pItem, EFbxType pValueType); - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem Pointer of the new item to be inserted - * \param pValueType Data type of the new item - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - int InsertAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value for the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem Pointer of the item whose value is copied to pIndex'th item - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void SetAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value of the last item. - * \param pItem Pointer of the item whose value is copied to the last item - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void SetLast(const void* pItem, EFbxType pValueType); - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void RemoveAt(int pIndex, void** pItem, EFbxType pValueType); - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void RemoveLast(void** pItem, EFbxType pValueType); - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \param pValueType Data type of the item - * \return \c True if the item is removed successfully, \c false otherwise - */ - bool RemoveIt(void** pItem, EFbxType pValueType); - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - bool GetAt(int pIndex, void** pItem, EFbxType pValueType) const; - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetFirst(void** pItem, EFbxType pValueType) const; - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetLast(void** pItem, EFbxType pValueType) const; - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int Find(const void* pItem, EFbxType pValueType) const; - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindAfter(int pAfterIndex, const void* pItem, EFbxType pValueType) const; - - /** Searches for an item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \param pValueType The item's data type. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindBefore(int pBeforeIndex, const void* pItem, EFbxType pValueType) const; - - /** Equivalence operator - * \param pArray Array compared to this one - * \return \c True if equal. \c false otherwise. - */ - bool IsEqual(const FbxLayerElementArray& pArray) const; - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - template inline int Add(T const& pItem) { return Add((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline int InsertAt(int pIndex, T const& pItem) { return InsertAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void SetAt(int pIndex, T const& pItem) { SetAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void SetLast(T const& pItem) { SetLast((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void RemoveAt(int pIndex, T* pItem) - { - T** voidPtr = &pItem; - RemoveAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void RemoveLast(T* pItem) - { - T** voidPtr = &pItem; - RemoveLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - template inline bool RemoveIt(T* pItem) - { - T** voidPtr = &pItem; - return RemoveIt((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - template inline bool GetAt(int pIndex, T* pItem) const - { - T** voidPtr = &pItem; - return GetAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetFirst(T* pItem) const - { - T** voidPtr = &pItem; - return GetFirst((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetLast(T* pItem) const - { - T** voidPtr = &pItem; - return GetLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int Find(T const& pItem) const { return Find((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindAfter(int pAfterIndex, T const& pItem) const { return FindAfter(pAfterIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindBefore(int pBeforeIndex, T const& pItem) const { return FindBefore(pBeforeIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - - /** Copies the items in the data buffer to an array. - * \param pDst The destination array where the items are to be copied. - */ - template inline void CopyTo(FbxArray& pDst) - { - T src; - T* srcPtr = &src; - - pDst.Clear(); - if (mDataType != FbxTypeOf(src)) - { - SetStatus(LockAccessStatus::eUnsupportedDTConversion); - return; - } - - pDst.Resize(GetCount()); - for (int i = 0; i < GetCount(); i++) - { - if (GetAt(i, (void**)&srcPtr, mDataType)) - { - pDst.SetAt(i, src); - } - } - SetStatus(LockAccessStatus::eSuccess); - } - //@} - -protected: - void* GetDataPtr(); - void* GetReference(int pIndex, EFbxType pValueType); - void GetReferenceTo(int pIndex, void** pRef, EFbxType pValueType); - - inline void SetStatus(LockAccessStatus::ELockAccessStatus pVal) const - { - const_cast(this)->mStatus = pVal; - } - - void SetImplementation(void* pImplementation); - inline void* GetImplementation() { return mImplementation; } - virtual void ConvertDataType(EFbxType pDataType, void** pDataPtr, size_t* pStride); - - EFbxType mDataType; - -private: - LockAccessStatus::ELockAccessStatus mStatus; - - int mReadLockCount; - bool mWriteLock; - void* mImplementation; - size_t mStride; - int mDirectLockOn; - bool mDirectAccessOn; - - FbxArray mConvertedData; - -}; - -/** \internal - * This class provides simple RAII-style read locking of a FbxLayerElementArray object. - */ -template -struct FbxLayerElementArrayReadLock -{ - /** \internal - * On construction, this class requires the read lock. - */ - FbxLayerElementArrayReadLock(FbxLayerElementArray& pArray) : mArray(pArray) - { - mLockedData = mArray.GetLocked((T*)NULL, FbxLayerElementArray::eReadLock); - } - - /** \internal - * On destruction, this class releases the read lock. - */ - ~FbxLayerElementArrayReadLock() - { - if( mLockedData ) - { - mArray.Release((void **) &mLockedData); - } - } - - /** \internal - * Retrieve the locked array data. - */ - const T* GetData() const - { - return mLockedData; - } - -private: - FbxLayerElementArray& mArray; - T* mLockedData; -}; - -class FbxLayerElementUserData; - -/** FbxLayerElementArrayTemplate provides data array manipulation of the data buffer for FbxLayerElement. - * It is the subclass of FbxLayerElementArray. - * \nosubgrouping - */ -template class FbxLayerElementArrayTemplate : public FbxLayerElementArray -{ -public: - - /** Constructor - * \param pDataType The data type of the array items. - */ - FbxLayerElementArrayTemplate(EFbxType pDataType) : - FbxLayerElementArray(pDataType) - { - } - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - inline int Add( T const &pItem ) { return FbxLayerElementArray::Add(pItem); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - */ - inline int InsertAt(int pIndex, T const &pItem) { return FbxLayerElementArray::InsertAt(pIndex, pItem); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - */ - inline void SetAt(int pIndex, T const &pItem) { FbxLayerElementArray::SetAt(pIndex, pItem); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - */ - inline void SetLast( T const &pItem) { FbxLayerElementArray::SetLast(pItem); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \return The value of the item removed - */ - inline T RemoveAt(int pIndex) { T lValue; FbxLayerElementArray::RemoveAt(pIndex, &lValue); return lValue; } - - /** Removes the last item from the data buffer. - * \return The value of the last item removed - */ - inline T RemoveLast() { T lValue; FbxLayerElementArray::RemoveLast(&lValue); return lValue; } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - inline bool RemoveIt(T const &pItem) { return FbxLayerElementArray::RemoveIt(&pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the specified item - * \remarks If the index is invalid, pItem is set to zero. - */ - inline T GetAt(int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Returns the first item's value. - * \return The first item's value. - */ - inline T GetFirst() const { T lValue; FbxLayerElementArray::GetFirst(&lValue); return lValue; } - - /** Returns the last item's value. - * \return The last item's value. - */ - inline T GetLast() const { T lValue; FbxLayerElementArray::GetLast(&lValue); return lValue; } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int Find(T const &pItem) { return FbxLayerElementArray::Find(pItem); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindAfter(int pAfterIndex, T const &pItem) { return FbxLayerElementArray::FindAfter(pAfterIndex, pItem); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindBefore(int pBeforeIndex, T const &pItem) { return FbxLayerElementArray::FindBefore(pBeforeIndex, pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the item - * \remarks If the index is invalid, pItem is set to zero. - */ - T operator[](int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArray& operator=(const FbxArray& pArrayTemplate) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - return *this; - } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArrayTemplate& operator=(const FbxLayerElementArrayTemplate& pArrayTemplate) - { - if ( this != &pArrayTemplate ) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - } - return *this; - } - -private: - // This one is not the best thing to do, but at least I don't get deprecated calls inside this file. - // Note that FbxLayerElementUserData is kind of a weird class in the first place anyway. So either - // we clean it up, or we live with this piece of code ;-) - friend class FbxLayerElementUserData; - T& AsReference(int pIndex) { T* v = (T*)FbxLayerElementArray::GetReference(pIndex, mDataType); return (v)?*v:dummy;} - - T dummy; -}; - - -/** Remap the index array to a new EMappingMode - * \param pLayerEl The layer element to remap - * \param pNewMapping The new mapping mode - * \param pIndexArray The index array to modify - * \return return -1 if the layer element is FbxLayerElement::eDirect - * 0 if layer element or index array is \c NULL and 1 if the remap is successful - */ -extern FBXSDK_DLL int RemapIndexArrayTo(FbxLayerElement* pLayerEl, - FbxLayerElement::EMappingMode pNewMapping, - FbxLayerElementArrayTemplate* pIndexArray); - - -/** This class complements the FbxLayerElement class. - * It provides interfaces to access the direct array and index array of different layer elements. - * \nosubgrouping - */ -template class FbxLayerElementTemplate : public FbxLayerElement -{ -public: - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Removes all elements from the direct and the index arrays. - * \remarks This function fails if there is a lock on the arrays. - * \return \c True if successful, \c false if a lock is present. - */ - bool Clear() - { - bool ret = true; - mDirectArray->Clear(); - ret = (mDirectArray->GetStatus() == LockAccessStatus::eSuccess); - - mIndexArray->Clear(); - ret |= (mIndexArray->GetStatus() == LockAccessStatus::eSuccess); - - return ret; - } - -public: - - /** Equivalence operator. - * \param pOther Another element compared to this object - * \return \c True if equal, \c false if unequal. - */ - bool operator==(const FbxLayerElementTemplate& pOther) const - { - bool ret = true; - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - if( directArray.GetCount() != mDirectArray->GetCount() || - !directArray.ReadLock() || !mDirectArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mDirectArray->IsEqual(directArray) ) - ret = false; - - directArray.ReadUnlock(); - mDirectArray->ReadUnlock(); - } - - if (ret) - { - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - if( indexArray.GetCount() != mIndexArray->GetCount() || - !indexArray.ReadLock() || !mIndexArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mIndexArray->IsEqual(indexArray) ) - ret = false; - - indexArray.ReadUnlock(); - mIndexArray->ReadUnlock(); - } - } - - if (ret == false) - return false; - - return FbxLayerElement::operator==(pOther); - } - - /** Assignment operator. - * \param pOther Another element assigned to this one - */ - FbxLayerElementTemplate& operator=( FbxLayerElementTemplate const& pOther ) - { - FBX_ASSERT(mDirectArray != NULL); - FBX_ASSERT(mIndexArray != NULL); - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - *mDirectArray = directArray; - } - - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - *mIndexArray = indexArray; - } - - FbxLayerElement* myself = (FbxLayerElement*)this; - FbxLayerElement* myOther = (FbxLayerElement*)&pOther; - *myself = *myOther; - return *this; - } - - /** Changes the Mapping mode to the new one and re-computes the index array. - * \param pNewMapping New mapping mode. - * \return If the remapping is successful, returns 1. - * If an error occurs, returns 0. In case the function cannot - * remap to the desired mode because of incompatible modes or - * unsupported modes, returns -1. - */ - int RemapIndexTo(FbxLayerElement::EMappingMode pNewMapping) - { - return RemapIndexArrayTo(this, pNewMapping, mIndexArray); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementTemplate() - { - mDirectArray = NULL; - mIndexArray = NULL; - } - - ~FbxLayerElementTemplate() - { - FbxDelete(mDirectArray); - FbxDelete(mIndexArray); - } - - virtual void AllocateArrays() - { - mDirectArray = FbxNew< FbxLayerElementArrayTemplate >(mType->GetType()); - mIndexArray = FbxNew< FbxLayerElementArrayTemplate >(FbxIntDT.GetType()); - } - -public: - virtual int MemorySize() const - { - int size = FbxLayerElement::MemorySize(); - size += (mDirectArray->GetCount()*sizeof(Type)); - size += (mIndexArray->GetCount()*sizeof(int)); - return size; - } - - /** - * \name Serialization section - */ - //@{ - virtual bool ContentWriteTo(FbxStream& pStream) const - { - void* a; - int s,v; - int count = 0; - - // direct array - count = mDirectArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Write(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - count = mIndexArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Write(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - - return FbxLayerElement::ContentWriteTo(pStream); - } - - virtual bool ContentReadFrom(const FbxStream& pStream) - { - void* a; - int s,v; - int count = 0; - - // direct array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mDirectArray->Resize(count); - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Read(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mIndexArray->Resize(count); - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Read(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - return FbxLayerElement::ContentReadFrom(pStream); - } - //@} - - typedef Type ArrayElementType; - typedef FbxLayerElementArrayTemplate DirectArrayType; - typedef FbxLayerElementArrayTemplate IndexArrayType; - - FbxLayerElementArrayTemplate* mDirectArray; - FbxLayerElementArrayTemplate* mIndexArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#define FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(classDesc) \ - FBXSDK_FRIEND_NEW(); \ - static Fbx##classDesc* Create(FbxLayerContainer* pOwner, const char* pName); - -/** \brief Layer element for mapping Normals to a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementNormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementNormal); - -protected: - FbxLayerElementNormal(); - ~FbxLayerElementNormal(); -}; - -/** \brief Layer element for mapping Binormals to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementBinormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementBinormal); - -protected: - FbxLayerElementBinormal(); - ~FbxLayerElementBinormal(); -}; - -/** \brief Layer element for mapping Tangents to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTangent : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTangent); - -protected: - FbxLayerElementTangent(); - ~FbxLayerElementTangent(); -}; - -/** Layer element for mapping materials (FbxSurfaceMaterial) to a geometry. - * - * FBX SDK 2011 and later connects materials (FbxSurfaceMaterial) to nodes (FbxNode). - * The direct array of this class is no longer used. - * The integer "n" in the index array of this class represents the n-th material (zero-based) connected to the node. - * - * For example: - * - * Mapping mode eAllSame and index array {0} means the whole geometry is assigned with the 0-th material - * connected to the node. - * - * Mapping mode eByPolygon and index array {0, 1} means the first polygon is assigned with the 0-th material and - * the second polygon is assigned with the 1-th material. - * - * - * You can access the materials from a node by using FbxNode::GetMaterialCount() and FbxNode::GetMaterial(int pIndex) - * or the more generic calls to GetSrcObjectCount() and - * GetSrcObject(index) - * - * For example: - * - * \code - * FbxNode* node; - * int nbMat = node->GetMaterialCount(); - * int nbMat1= node->GetSrcObjectCount(); - * - * FbxSurfaceMaterial* material; - * FbxLayerElementMaterial* layerElement; - * if (layerElement->GetMappingMode() == FbxLayerElement::eAllSame) - * { - * int index = layerElement->GetIndexArray()[0]; - * material = node->GetMaterial(index); - * } - * \endcode - * - * \remarks - * The DirectArray() methods still exist for legacy reasons but has been made private and should not be used. - * Therefore, to be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * - * \see FbxSurfaceMaterial - * \see FbxNode - */ -class FBXSDK_DLL FbxLayerElementMaterial : public FbxLayerElementTemplate -{ -public: - typedef FbxLayerElementTemplate ParentClass; - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementMaterial); - - /** \internal - * Internal class to maintain backward compatibility with old FBX code (prior to FBX SDK 2011). - * This class synchronizes the direct array with FbxNode connections. - * Thus, changes on the direct array will reflect on FbxNode. - */ - class LayerElementArrayProxy : public FbxLayerElementArrayTemplate - { - public: - typedef FbxLayerElementArrayTemplate ParentClass; - - LayerElementArrayProxy(EFbxType pType); - void SetContainer( FbxLayerContainer* pContainer, int pInstance = 0); - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual void AllocateArrays(); - virtual void SetOwner( FbxLayerContainer* pOwner, int pInstance = 0); - virtual void SetInstance( int pInstance ) { SetOwner( mOwner, pInstance ); } - -protected: - FbxLayerElementMaterial(); - ~FbxLayerElementMaterial(); - -private: - FbxLayerElementArrayTemplate& GetDirectArray() const - { - return ParentClass::GetDirectArray(); - } - - FbxLayerElementArrayTemplate& GetDirectArray() - { - return ParentClass::GetDirectArray(); - } - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for grouping related polygons together. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementPolygonGroup : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementPolygonGroup); - -protected: - FbxLayerElementPolygonGroup(); - ~FbxLayerElementPolygonGroup(); -}; - -/** \brief Layer element for mapping UVs to a geometry. - * - * This class represents a UV set belongs to a geometry. Each UV set in a geometry - * has a name to identify itself. The string property FbxTexture.UVSet indicates - * the UV set to use. - * - * \remarks if the Mapping mode of this LayerElement is \e eNone, the stored data - * should be treated as irrelevant. In some circumstances, you can still send this data - * to systems that cannot function without UV coordinates, but ensure - * that you have enough coordinates to do so. - * - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUV : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementUV); - -protected: - FbxLayerElementUV(); - ~FbxLayerElementUV(); -}; - -/** \brief Layer element for mapping Vertex Colors to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementVertexColor : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVertexColor); - -protected: - FbxLayerElementVertexColor(); - ~FbxLayerElementVertexColor(); -}; - -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, const char* pName, bool* pStatus = NULL ); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus = NULL ); - -/** \brief Layer element for mapping custom user data to a geometry. - * This layer element is different from the other types of layer elements in that it has multiple direct arrays. There is one array for each user data attribute. - * Each array is indexed by the index array. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUserData : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The layer element name. - * \param pId The layer element ID. - * \param pDataTypes Attribute data types of this layer element, one direct array is allocated for each Attribute data type. - * \param pDataNames Attribute names of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - * \remarks Only "bool", "int", "float" and "double" are supported. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, const char* pName, int pId, FbxArray& pDataTypes, FbxArray& pDataNames); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pOther Other layer element from which to copy. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, FbxLayerElementUserData const& pOther ); - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (FbxLayerElementArrayTemplate*)NULL; - } - } - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) const - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (const FbxLayerElementArrayTemplate*)NULL; - } - } - - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) const - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (const FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the data type for the specified index - * \param pIndex The index of the attribute being queried - * \return The data type, or FbxUndefinedDT if pIndex is out of range - */ - FbxDataType GetDataType( int pIndex ) const - { - if( pIndex < 0 || pIndex >= mDataTypes.GetCount() ) - return FbxUndefinedDT; - - return mDataTypes[pIndex]; - } - - /** Returns the specified attribute data type. - * \param pName The name of the attribute being queried - * \return The data type, or FbxUndefinedDT if no attribute has the given name - */ - FbxDataType GetDataType( const char* pName ) const - { - FbxString lName( pName ); - - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return mDataTypes[i]; - } - - return FbxUndefinedDT; - } - - /** Returns the attribute name at the specified index - * \param pIndex Attribute index - * \return The name, or \c NULL if pIndex is out of range. - */ - const char* GetDataName( int pIndex ) const - { - if( pIndex >= 0 && pIndex < mDataNames.GetCount() ) - return mDataNames[pIndex]->Buffer(); - - return NULL; - } - - /** Resizes all direct arrays to the specified size. - * \param pSize The new size of the direct arrays. - */ - void ResizeAllDirectArrays( int pSize ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).Resize( pSize ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).Resize( pSize ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).Resize( pSize ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).Resize( pSize ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Removes a single element at pIndex from every direct array. - * \param pIndex The index of the element to be removed. - */ - void RemoveFromAllDirectArrays( int pIndex ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).RemoveAt( pIndex ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).RemoveAt( pIndex ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Returns the direct array count for the attribute at pIndex - * \param pIndex The attribute index - * \return The specified attribute's direct array count. - */ - int GetArrayCount( int pIndex ) const - { - if( pIndex >= 0 && pIndex < GetDirectArray().GetCount() ) - { - switch( mDataTypes[pIndex].GetType() ) - { - case eFbxBool: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxInt: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxFloat: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxDouble: return FbxGetDirectArray(this,pIndex).GetCount(); - //case eFbxDouble3: return GetDirectArray< FbxDouble3 >(pIndex).GetCount(); - //case eFbxDouble4: return GetDirectArray< FbxDouble4 >(pIndex).GetCount(); - //case eFbxDouble4x4: return GetDirectArray< FbxDouble4x4>(pIndex).GetCount(); - default: - FBX_ASSERT_NOW("Unknown type" ); break; - } - } - - return -1; - } - - /** Queries the this layer element's ID. - * \return The ID expressed as an int - */ - int GetId() const { return mId; } - - /** Returns this layer element's direct array count. - * \return The direct array count expressed as an int. - * \remarks This count should be equal to the count of user data attributes. - */ - int GetDirectArrayCount() const { return GetDirectArray().GetCount(); } - - /** Assignment operator which performs a deep copy. - * \param pOther Other FbxLayerElementUserData from which to perform a deep copy. - * \return This FbxLayerElementUserData. - */ - FbxLayerElementUserData& operator=( FbxLayerElementUserData const& pOther ) - { - if (this == &pOther) - return *this; - - Clear(); - - mId = pOther.mId; - mDataTypes = pOther.mDataTypes; - mDataNames.Resize(pOther.mDataNames.GetCount()); - for(int i = 0; i < pOther.mDataNames.GetCount(); ++i) - mDataNames.SetAt(i, FbxNew< FbxString >( *pOther.mDataNames[i] ) ); - - Init(); - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - - return *this; - } - - /** Removes all data from this layer element. - * \return \c True always - */ - bool Clear() - { - int i; - const int lCount = GetDirectArray().GetCount(); - FbxLayerElementArray** directArray = NULL; - directArray = GetDirectArray().GetLocked(directArray); - for( i = 0; directArray != NULL && i < lCount; ++i ) - { - if( directArray[i] ) - FbxDelete(directArray[i]); - } - FbxLayerElementArray*** ptr = &directArray; - GetDirectArray().Release((void**)ptr); - for( i = 0; i < mDataNames.GetCount(); ++i ) - { - FBX_SAFE_DELETE(mDataNames[i]); - } - mDataNames.Clear(); - mDataTypes.Clear(); - - FbxLayerElementTemplate::Clear(); - - return true; - } - - /** Queries the amount of memory used by this - * object as well as its content. It does not consider the content pointed. - * \return The amount of memory used. - */ - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mId); - - for(int i = 0; i < mDataTypes.GetCount(); i++) - { - size += sizeof(mDataTypes[i]); - } - size += (mDataNames.GetCount() * sizeof(FbxString*)); - - return size; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructs a user data layer element. - * \param pId An identifier for this UserData layer element - * \param pDataTypes Attribute data types for this layer element - * \param pDataNames Attribute names for this layer element - */ - FbxLayerElementUserData( int pId, FbxArray& pDataTypes, FbxArray& pDataNames ) - : - mId( pId ), - mDataTypes( pDataTypes ) - { - FBX_ASSERT( pDataTypes.GetCount() == pDataNames.GetCount() ); - for( int i = 0; i < pDataNames.GetCount(); ++i ) - { - mDataNames.Add( FbxNew< FbxString >( pDataNames[i] ) ); - } - } - - /** Copy constructor. A deep copy is made. - * \param pOther Another FbxLayerElementUserData object to be copied. - */ - FbxLayerElementUserData( FbxLayerElementUserData const& pOther ) : mId(pOther.mId), mDataTypes(pOther.mDataTypes) - { - for (int lIndex = 0; lIndex < pOther.mDataNames.GetCount(); ++lIndex) - { - mDataNames.Add(FbxNew(*(pOther.mDataNames[lIndex]))); - } - - SetType(&FbxLayerElementUserDataDT); - AllocateArrays(); - - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - } - - //!Destructor. - ~FbxLayerElementUserData() - { - Clear(); - } - - //@} - virtual void AllocateArrays() - { - FbxLayerElementTemplate::AllocateArrays(); - Init(); - } - - -private: - - void Init() - { - int i; - GetDirectArray().Resize( mDataTypes.GetCount() ); - - // initialize arrays - for( i = 0; i < mDataTypes.GetCount(); ++i ) - { - FbxHandle** dst = NULL; - dst = GetDirectArray().GetLocked(dst); - if (dst) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxInt: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxFloat: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxDouble: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); break; - } - FbxHandle*** ptr = &dst; - GetDirectArray().Release((void**)ptr); - } - } - } - - int mId; - FbxArray mDataTypes; - FbxArray mDataNames; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,int pIndex, bool* pStatus) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,const char* pName, bool* pStatus ) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus ) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - - -/** Layer element for indicating smoothness of components of a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eDirect. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementSmoothing : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementSmoothing* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Smoothing layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementSmoothing() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating crease of components of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementCrease : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementCrease* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Crease layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementCrease() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating hole of polygon of a geometry. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLayerElementHole : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementHole* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "hole layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementHole() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating if specified components are shown/hidden - */ -class FBXSDK_DLL FbxLayerElementVisibility : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVisibility); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementVisibility(); - ~FbxLayerElementVisibility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for mapping Textures to a geometry. This class is deprecated. - * - * Deprecated since FBX SDK 2011. Textures (FbxTexture derived classes) should be connected - * to material properties. - * - * For example: - * - * \code - * FbxFileTexture* file; - * FbxSurfacePhong* phong; - * phong->Diffuse.ConnectSrcObject(file); - * \endcode - * \see FbxSurfaceMaterial - * - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTexture : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTexture); - - /** \enum EBlendMode Lets you control how textures are combined when you apply multiple layers of texture to a surface. - * - \e eTranslucent The new texture layer is transparent (depending on the Alpha value). - * - \e eAdd Add the color of the new texture to the previous texture. - * - \e eModulate Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2 Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdd, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Sets the way Textures blend between layers. - * \param pBlendMode A valid blend mode. - */ - void SetBlendMode(EBlendMode pBlendMode) { mBlendMode = pBlendMode; } - - /** Sets the transparency level between multiple texture levels. - * \param pAlpha Set to a value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - * \remarks Values smaller than 0.0 are clipped to 0.0, while values greater than 1.0 are clipped to 1.0. - */ - void SetAlpha(double pAlpha) - { - if (pAlpha > 1.0) - mAlpha = 1.0; - else if (pAlpha < 0.0) - mAlpha = 0.0; - else - mAlpha = pAlpha; - } - - /** Returns the way Textures blend between layers. - * \return The current Blend Mode. - */ - EBlendMode GetBlendMode() const { return mBlendMode; } - - /** Returns the transparency level between multiple levels of textures. - * \return An alpha value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - */ - double GetAlpha() const { return mAlpha; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mBlendMode); - size += sizeof(mAlpha); - return size; - } - -protected: - /** Constructor - * By default, textures have a Blend Mode of eTranslucent, - * a Reference Mode of eIndexToDirect, and an Alpha value of 1.0. - */ - FbxLayerElementTexture() : mBlendMode(eTranslucent) - { - mReferenceMode = eIndexToDirect; - mAlpha = 1.0; - } - -private: - EBlendMode mBlendMode; - double mAlpha; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxLayer class provides a base for the layering mechanism. - * - * A layer can contain one or more of the following layer elements: - * \li Normals - * \li Binormals - * \li Tangents - * \li Materials - * \li Polygon Groups - * \li UVs - * \li Vertex Colors - * \li Smoothing informations - * \li Vertex Creases - * \li Edge Creases - * \li Custom User Data - * \li Visibilities - * \li Textures (diffuse, ambient, specular, etc.) (deprecated) - * - * A typical layer for a Mesh contains Normals, UVs and Materials. A typical layer for NURBS contains only Materials. - * In the case of the NURBS, the NURBS' parameterization is used for the UVs; no UVs should be specified. - * - * In most cases, you only need a single layer to describe a geometry. Many applications only support what is defined on the first layer. - * Take this into account when you fill the layer. For example, it is legal to define the Layer 0 with the UVs and then - * define the model's Normals on layer 1. However if you construct a file this way, it may not be imported correctly in other applications. - * Store the Normals in Layer 0 to avoid problems. - * - * Since FBX SDK 2011, Textures are connected to the properties of FbxSurfaceMaterial derived classes. - * FbxLayerElementTexture is no longer used. See the code example in FbxLayerElementTexture for how to connect a texture. - * - * Since FBX SDK 2011, texture layering is achieved by FbxLayeredTexture. See the code example in FbxLayeredTexture for how to blend textures. - * - * Normally, you can access layer from FbxLayerContainer like FbxGeometry. - * For example, - * \code - * FbxMesh* mesh; - * FbxLayer* layer0 = mesh->GetLayer(0); - * FbxLayerElementNormal* normals = layer0->GetNormals(); - * \endcode - * - * \nosubgrouping - * \see FbxLayerElement - * \see FbxLayerElementNormal - * \see FbxLayerElementBinormal - * \see FbxLayerElementTangent - * \see FbxLayerElementMaterial - * \see FbxLayerElementPolygonGroup - * \see FbxLayerElementUV - * \see FbxLayerElementVertexColor - * \see FbxLayerElementSmoothing - * \see FbxLayerElementCrease - * \see FbxLayerElementUserData - * \see FbxLayerElementHole - * \see FbxLayerElementVisibility - */ -class FBXSDK_DLL FbxLayer -{ - -public: - FBXSDK_FRIEND_NEW(); - - /** - * \name Layer Element Management - */ - //@{ - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - FbxLayerElementNormal* GetNormals(); - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - const FbxLayerElementNormal* GetNormals() const; - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - FbxLayerElementTangent* GetTangents(); - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - const FbxLayerElementTangent* GetTangents() const; - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - FbxLayerElementBinormal* GetBinormals(); - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - const FbxLayerElementBinormal* GetBinormals() const; - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - FbxLayerElementMaterial* GetMaterials(); - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - const FbxLayerElementMaterial* GetMaterials() const; - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - FbxLayerElementPolygonGroup* GetPolygonGroups(); - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - const FbxLayerElementPolygonGroup* GetPolygonGroups() const; - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - const FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - - - /** Returns the number of different UV sets in this layer. - */ - int GetUVSetCount() const; - - /** Returns an array that describes which UV sets are in this layer. - */ - FbxArray GetUVSetChannels() const; - - /** Returns an array of UV sets in this layer. - */ - FbxArray GetUVSets() const; - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - FbxLayerElementVertexColor* GetVertexColors(); - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - const FbxLayerElementVertexColor* GetVertexColors() const; - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - FbxLayerElementSmoothing* GetSmoothing(); - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - const FbxLayerElementSmoothing* GetSmoothing() const; - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetVertexCrease(); - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetVertexCrease() const; - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetEdgeCrease(); - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetEdgeCrease() const; - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - FbxLayerElementHole* GetHole(); - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - const FbxLayerElementHole* GetHole() const; - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - FbxLayerElementUserData* GetUserData(); - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - const FbxLayerElementUserData* GetUserData() const; - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - FbxLayerElementVisibility* GetVisibility(); - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - const FbxLayerElementVisibility* GetVisibility() const; - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType); - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - const FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType) const; - - /** Sets this layer's Textures description. - * \param pType Texture type identifier. - * \param pTextures A pointer to the Textures layer element, or \c NULL to remove the Textures definition. - */ - void SetTextures(FbxLayerElement::EType pType, FbxLayerElementTexture* pTextures); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - const FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Sets this layer's Normals description. - * \param pNormals A pointer to the Normals layer element, or \c NULL to remove the Normals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - void SetNormals(FbxLayerElementNormal* pNormals); - - /** Sets this layer's Binormals description. - * \param pBinormals A pointer to the Binormals layer element, or \c NULL to remove the Binormals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - void SetBinormals(FbxLayerElementBinormal* pBinormals); - - /** Sets this layer's Tangents description. - * \param pTangents A pointer to the Tangents layer element, or \c NULL to remove the Tangents definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - void SetTangents(FbxLayerElementTangent* pTangents); - - /** Sets this layer's Materials description. - * \param pMaterials A pointer to the Materials layer element, or \c NULL to remove the Material definition. - */ - void SetMaterials(FbxLayerElementMaterial* pMaterials); - - /** Sets this layer's Polygon Groups description. - * \param pPolygonGroups A pointer to the Polygon Groups layer element, or \c NULL to remove the Polygon Group definition. - */ - void SetPolygonGroups(FbxLayerElementPolygonGroup* pPolygonGroups); - - /** Sets this layer's UVs description. - * \param pUVs A pointer to the UVs layer element, or \c NULL to remove the UV definition. - * \param pTypeIdentifier Layer element type, should be texture type. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - void SetUVs(FbxLayerElementUV* pUVs, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Sets this layer's Vertex Colors description. - * \param pVertexColors A pointer to the Vertex Colors layer element, or \c NULL to remove the Vertex Color definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - void SetVertexColors (FbxLayerElementVertexColor* pVertexColors); - - /** Sets this layer's Smoothing description. - * \param pSmoothing A pointer to the Smoothing layer element, or \c NULL to remove the Smoothing definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - void SetSmoothing (FbxLayerElementSmoothing* pSmoothing); - - /** Sets this layer's Vertex Crease description. - * \param pCrease A pointer to the Vertex Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetVertexCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Edge Crease description. - * \param pCrease A pointer to the Edge Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetEdgeCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Hole description. - * \param pHole A pointer to the Hole layer element, or \c NULL to remove the Hole definition. - * \remarks Hole should only be defined when the geometry is FbxMesh. - */ - void SetHole (FbxLayerElementHole* pHole); - - /** Sets this layer's User Data. - * \param pUserData A pointer to the User Data layer element, or \c NULL to remove the User Data. - */ - void SetUserData (FbxLayerElementUserData* pUserData); - - /** Sets this layer's the visibility. - * \param pVisibility A pointer to the visibility layer element, or \c NULL to remove the visibility. - */ - void SetVisibility( FbxLayerElementVisibility* pVisibility ); - - /** Sets the specified type of layer element description for this layer. - * \param pLayerElement A pointer to the layer element, or \c NULL to remove the layer element. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - */ - void SetLayerElementOfType(FbxLayerElement* pLayerElement, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Creates the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * \param pIsUV When \c true, requests the UV LayerElement that corresponds with the specified Layer Element type (only applies to - * TEXTURE type layer elements). - * \return A pointer to the newly created layer element, or \e NULL if the layer element has not been created for this layer. - */ - FbxLayerElement* CreateLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Clone function. - * \param pSrcLayer The source layer to be cloned. - */ - void Clone(FbxLayer const& pSrcLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - //! Assignment operator. - FbxLayer& operator=(FbxLayer const& pSrcLayer); - //@} -private: - - FbxLayer(FbxLayerContainer& pOwner); - virtual ~FbxLayer(); - - void Clear(); - - FbxLayerContainer& mOwner; - - FbxLayerElement* mNonTexturesArray[FbxLayerElement::sTypeNonTextureCount]; - FbxLayerElementUV* mUVsArray[FbxLayerElement::sTypeTextureCount]; - FbxLayerElementTexture* mTexturesArray[FbxLayerElement::sTypeTextureCount]; - - - friend class FbxLayerContainer; - -public: - /** - * \name Serialization section - */ - //@{ - bool ContentWriteTo(FbxStream& pStream) const; - bool ContentReadFrom(const FbxStream& pStream); - //@} - virtual int MemoryUsage() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** - * Utility macro for iterating over texture layer elements - */ -#define FBXSDK_FOR_EACH_TEXTURE(lLayerIndex) for((lLayerIndex)=0;(lLayerIndex)GetElementUV("map1"); - * FbxGeometryElementUV::DirectArrayType lDirectArray = lUVs->GetDirectArray(); - * int lDirectUVCount = lDirectArray.GetCount(); - * FbxVector2 lFirstUV = lDirectArray[0]; - * \endcode - * \see FbxGeometryBase - */ -typedef FbxLayerElement FbxGeometryElement; -typedef FbxLayerElementNormal FbxGeometryElementNormal; -typedef FbxLayerElementBinormal FbxGeometryElementBinormal; -typedef FbxLayerElementTangent FbxGeometryElementTangent; -typedef FbxLayerElementMaterial FbxGeometryElementMaterial; -typedef FbxLayerElementPolygonGroup FbxGeometryElementPolygonGroup; -typedef FbxLayerElementUV FbxGeometryElementUV; -typedef FbxLayerElementVertexColor FbxGeometryElementVertexColor; -typedef FbxLayerElementUserData FbxGeometryElementUserData; -typedef FbxLayerElementSmoothing FbxGeometryElementSmoothing; -typedef FbxLayerElementCrease FbxGeometryElementCrease; -typedef FbxLayerElementHole FbxGeometryElementHole; -typedef FbxLayerElementVisibility FbxGeometryElementVisibility; - -#undef FBXSDK_LAYER_ELEMENT_CREATE_DECLARE - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h deleted file mode 100644 index 473ccfc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayercontainer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** \brief Contains a collection of FbxLayer objects. - * This class is used for managing layers construction, destruction and access. - * See FbxLayerElement for more details. - * \nosubgrouping - * \see FbxLayer - */ -class FBXSDK_DLL FbxLayerContainer : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLayerContainer,FbxNodeAttribute); -public: - - /** Returns the type of node attribute. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Layer Management - */ - //@{ - - /** Creates a new layer on top of existing layers. - * \return Index of created layer or -1 if an error occurs. - */ - int CreateLayer(); - - //! Deletes all layers. - void ClearLayers(); - - /** Returns the number of layers. - * \return The number of layers. - */ - int GetLayerCount() const; - - /** Returns the number of layers that contain the specified layer element type. - * \param pType The specified Layer Element type. - * \param pUVCount When \c true, requests the UV layer element corresponding to the specified texture type. - * \return The number of layers containing the specified layer element type. - */ - int GetLayerCount(FbxLayerElement::EType pType, bool pUVCount=false) const; - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex); - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex) const; - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Returns the global index of the n'th layer as specified by pIndex that contains the specified layer element type. - * \param pIndex Layer index of the specified type. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Global index of the n'th layer as specified by pIndex that contains the specified layer element type, or -1 if the layer is not found. - * \remarks The returned index is the position of the layer in the global array of layers. - * You can use the returned index to call GetLayer(int pIndex). - */ - int GetLayerIndex(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Converts the layer's global index to a type-specific index. - * \param pGlobalIndex The index of the layer in the global array of layers. - * \param pType The type upon which the type-specific index will be returned. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Layer index of the specified layer element type, or -1 if the layer element type is not found on the layer. - */ - int GetLayerTypedIndex(int pGlobalIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - //@} - - /** Converts the reference mode from eDirect to eIndexToDirect. - * \param pLayer The Layer to convert. - * \return \c True if conversion is successful, or \c false otherwise. - * \remarks For the time being, this method only applies to the LayerLementType eMaterial - */ - bool ConvertDirectToIndexToDirect(int pLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - int GTC(FbxUInt i, int j); - void* GT (int i, FbxUInt l, int j); - int AT (void* t, FbxUInt l, int j); - int GTI(const char* n, FbxUInt l, int j); - int GMC(FbxUInt i, void* n = NULL); - void* GM (int i, FbxUInt l, void* n = NULL); - int AM (void* m, FbxUInt l, void* n = NULL, bool b = false); - int GMI(const char* n, FbxUInt l, void* d = NULL); - - int AddToLayerElementsList(FbxLayerElement* pLEl); - void RemoveFromLayerElementsList(FbxLayerElement* pLEl); - -protected: - void Destruct(bool pRecursive) override; - - void CopyLayers(const FbxLayerContainer* pLayerContainer); - - void SetDocument(FbxDocument* pDocument) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - FbxArray mLayerArray; - FbxArray mLayerElementsList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlight.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlight.h deleted file mode 100644 index 7956276..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlight.h +++ /dev/null @@ -1,273 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlight.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ - -#include - -#include - -#include - -class FbxTexture; - -/** \brief This node attribute contains methods for accessing the properties of a light. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLight : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute); - -public: - /** - * \name Light Properties - */ - //@{ - /** \enum EType Light types. - * - \e ePoint - * - \e eDirectional - * - \e eSpot - * - \e eArea - * - \e eVolume - */ - enum EType - { - ePoint, - eDirectional, - eSpot, - eArea, - eVolume - }; - - /** \enum EDecayType Decay types. Used for setting the attenuation of the light. - * - \e eNone No decay. The light's intensity will not diminish with distance. - * - \e eLinear Linear decay. The light's intensity will diminish linearly with the distance from the light. - * - \e eQuadratic Quadratic decay. The light's intensity will diminish with the squared distance from the light. - * This is the most physically accurate decay rate. - * - \e eCubic Cubic decay. The light's intensity will diminish with the cubed distance from the light. - */ - enum EDecayType - { - eNone, - eLinear, - eQuadratic, - eCubic - }; - - /** \enum EAreaLightShape Supported area light types. - * - \e eRectangle Rectangle (or often called a plane) area light type. - * - \e eSphere Area light that illuminate all directions. - */ - enum EAreaLightShape - { - eRectangle, - eSphere - }; - - /** Set the shadow texture for the light. - * \param pTexture The texture cast by the light shadow. - */ - void SetShadowTexture(FbxTexture* pTexture); - - /** Get the light state. - * \return Pointer to the texture cast by the light shadow, or \c NULL if the shadow texture has not been set. - */ - FbxTexture* GetShadowTexture() const; - //@} - - /** - * \name Properties - */ - //@{ - /** This property handles the light type. - * - * Default value is ePoint - */ - FbxPropertyT LightType; - - /** This property handles the cast light on object flag. - * - * Default value is true - */ - FbxPropertyT CastLight; - - /** This property handles the draw volumetric light flag. - * - * Default value is true - */ - FbxPropertyT DrawVolumetricLight; - - /** This property handles the draw ground projection flag. - * - * Default value is true - */ - FbxPropertyT DrawGroundProjection; - - /** This property handles the draw facing volumetric projection flag. - * - * Default value is false - */ - FbxPropertyT DrawFrontFacingVolumetricLight; - - /** This property handles the light color. - * - * Default value is (1.0, 1.0, 1.0) - */ - FbxPropertyT Color; - - /** This property handles the light intensity. - * - * Default value is 100.0 - */ - FbxPropertyT Intensity; - - /** This property handles the light inner cone angle (in degrees). Also know as the HotSpot - * - * Default value is 45.0 - */ - FbxPropertyT InnerAngle; - - /** This property handles the light outer cone angle (in degrees). Also known as the Falloff - * - * Default value is 45.0 - */ - FbxPropertyT OuterAngle; - - /** This property handles the light fog intensity - * - * Default value is 50.0 - */ - FbxPropertyT Fog; - - /** This property handles the decay type - * - * Default value is eNone - */ - FbxPropertyT DecayType; - - /** This property handles the decay start distance - * - * Default value is 0.0 - */ - FbxPropertyT DecayStart; - - /** This property handles the gobo file name - * - * Default value is "" - */ - FbxPropertyT FileName; - - /** This property handles the enable near attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableNearAttenuation; - - /** This property handles the near attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationStart; - - /** This property handles the near end attenuation - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationEnd; - - /** This property handles the enable far attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableFarAttenuation; - - /** This property handles the far attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationStart; - - /** This property handles the attenuation end distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationEnd; - - /** This property handles the cast shadow flag - * - * Default value is false - */ - FbxPropertyT CastShadows; - - /** This property handles the shadow color - * - * Default value is (0.0, 0.0, 0.0) - */ - FbxPropertyT ShadowColor; - - /** This property handles type when LightType is eArea - * - * Default value is eRectangle - */ - FbxPropertyT AreaLightShape; - - /** This property handles the left barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT LeftBarnDoor; - - /** This property handles the right barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT RightBarnDoor; - - /** This property handles the top barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT TopBarnDoor; - - /** This property handles the bottom barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT BottomBarnDoor; - - /** This property handles active status of barn doors - * - * Default value is false - */ - FbxPropertyT EnableBarnDoor; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeAttribute::EType GetAttributeType() const override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h deleted file mode 100644 index c0bb207..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlimitsutilities.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class represent a utility of limits for transforms. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLimitsUtilities -{ -public: - /** \enum EType Limit Type. - * - \e eTranslation Translation type - * - \e eRotation Rotation type - * - \e eScaling Scale type - */ - enum EType - { - eTranslation, - eRotation, - eScaling - }; - - /** \enum ERotationType Rotation type. - * - \e eQuaternion Quaternion rotation type - * - \e eEuler Euler rotation type - */ - enum ERotationType - { - eQuaternion, - eEuler - }; - - /** \enum ERotationClampType Rotation clamp type. - * - \e eRectangular Rectangular clamp type - * - \e eEllipsoid Ellipsoid clamp type - */ - enum ERotationClampType - { - eRectangular, - eEllipsoid - }; - - - FbxLimitsUtilities(FbxNode* pNode); - - /** - * \name Getter/Setter functions - */ - //@{ - void SetAuto(EType pType, bool pAuto); - bool GetAuto(EType pType) const; - - void SetEnable(EType pType, bool pEnable); - bool GetEnable(EType pType) const; - - void SetDefault(EType pType, FbxVector4 pDefault); - FbxVector4 GetDefault(EType pType) const; - - void SetMin(EType pType, FbxVector4 pMin); - FbxVector4 GetMin(EType pType) const; - - void SetMax(EType pType, FbxVector4 pMax); - FbxVector4 GetMax(EType pType) const; - - void SetRotationType(ERotationType pType); - ERotationType GetRotationType() const; - - ERotationClampType GetRotationClampType() const; - - void SetRotationAxis(FbxVector4 pRotationAxis); - FbxVector4 GetRotationAxis() const; - - void SetAxisLength(double pLength); - double GetAxisLength() const; - - void UpdateAutomatic(FbxNode* pNode); - FbxVector4 GetEndPointTranslation(FbxNode* pNode) const; - FbxVector4 GetEndSite(FbxNode* pNode) const; - //@} - - FbxNode* mNode; - double mAxisLength; -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxline.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxline.h deleted file mode 100644 index 56c18b1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxline.h +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxline.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LINE_H_ -#define _FBXSDK_SCENE_GEOMETRY_LINE_H_ - -#include - -#include -#include - -#include - -/** A line is a geometry made of points. To be different from curves(nurbs, etc), line is linear. -* The class can define a line with as many points as needed. The line can also represent line segments, which means there will be gaps among points. -* To denote line segments and these gaps, certain points could be marked as end points. That's why we supply an index array(mPointArray) and an end point array(mEndPointArray). -* To mark a point as end point, we add its index(of mPointArray) to mEndPointArray. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. -* To initialize control point count, please use FbxLine::InitControlPoints(int pCount). -* To set a control point, please use FbxLine::SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex). -* To get control point count, please use FbxLine::GetControlPointsCount(). -* To get a control point, please use FbxLine::GetControlPointAt(int pIndex). The pIndex could be returned by GetPointIndexAt(i). -*/ -class FBXSDK_DLL FbxLine : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxLine, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eLine. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Reset the line to default values. - * Frees and set to \c NULL all layers and clear the control point array, the index array and end points array. - */ - void Reset(); - - /** Sets the size of index array(mPointArray). - * \param pCount Specify the size of mPointArray. - */ - void SetIndexArraySize(int pCount); - - /** Return the size of index array(mPointArray). - * \return The number of points defined for this line. - */ - int GetIndexArraySize() const; - - /** Get the pointer to the index array. - * \return the pointer to the index array(mPointArray). - */ - inline FbxArray* GetIndexArray() { return &mPointArray;} - - /** Sets index array(mPointArray) at a specified index. - * \param pValue An index to a control point. Its range is from 0 to count of control point. - * \param pIndex The specified index to mPointArray. Its range is from 0 to size of mPointArray. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, pIndex will be automatically added to mEndPointArray. - * \return True on success, false on failure if pIndex is out of range. - */ - bool SetPointIndexAt(int pValue, int pIndex, bool pAsEndPoint = false); - - /** Gets the point index(i.e: an index to a control point) at the specified index. - * \param pIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return Return the index to the table of the control points. If pIndex is out of range, it will return -1. - */ - int GetPointIndexAt(int pIndex) const; - - /** Adds a point to the index array (mPointArray). - * \param pValue The index to a control point. Its range is from 0 to count of control point. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, current point index will be automatically added to mEndPointArray. - * \return True on success, false on failure if pValue is out of range. - */ - bool AddPointIndex(int pValue, bool pAsEndPoint = false); - - /** Get the pointer to the end point array. - * \return the pointer to the end points array(mEndPointArray). - */ - inline FbxArray* GetEndPointArray() { return &mEndPointArray;} - - /** Adds a point index to the end point array (mEndPointArray). - * To mark it as end point, its index to mPointArray will be added to mEndPointArray. - * \param pPointIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return True on success, false on failure if pPointIndex is out of range. - * \remarks The point index in mEndPointArray should be incremental, otherwise, it will return false. - * To add pPointIndex, mEndPointArray will be automatically appended and resized. You never have to set count or resize for mEndPointArray. - * Below is the code sample: - * \code - * int lIndexCount = lLine->GetIndexArraySize(); - * for(int i = 0; i < lIndexCount; i++) - * { - * if(i%2 == 1) - * { - * lLine->AddEndPoint(i); - * } - * } - * \endcode - */ - bool AddEndPoint(int pPointIndex); - - /** Gets the point index(an index to the point index array) at the specified index. - * \param pEndPointIndex The specified index to the end points array(mEndPointArray). Its range is from 0 to size of mEndPointArray. - * \return Return the index to the point index array(mPointArray). If pEndPointIndex is out of range, it will return -1. - * \remarks Below is the code sample: - * \code - * int lEndPointsCount = lLine->GetEndPointCount(); - * for (int j = 0; j < lEndPointsCount; j++) - * { - * //Get the index to the index array. - * int lEndIndex = lLine->GetEndPointAt(j); - * // to get the control point index of the end point - * int lControlPointIndex = lLine->GetPointIndexAt(lEndIndex); - * } - * \endcode - */ - int GetEndPointAt(int pEndPointIndex) const; - - /** Query the number of end points. - * \return Return the size of end point array(mEndPointArray). - */ - int GetEndPointCount() const; - - /** This property decide whether this line is renderable in 3DSMax. - * Lines from Maya are not renderable by default. - */ - FbxPropertyT Renderable; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxArray mPointArray; - FbxArray mEndPointArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LINE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h deleted file mode 100644 index 29cd9b6..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h +++ /dev/null @@ -1,322 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlodgroup.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ -#define _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ - -#include - -#include - -#include - -/** Defines a LOD (Level of Detail) group. - * This LodGroup node is a group node that can be used to detect how - * close a group of objects is to a camera. Typically this node is - * used for controlling "Level of Detail" visibility. - * - * Properties in the class are designed according to Maya implementation. - * So these properties may be incompatible with other software, like 3ds Max. - * - * In Maya, with "Level of Detail",the visibility of the children of this - * transform are controlled by the distance of a group to the camera and the - * threshold values. - * - * For example, under a LOD group node, there are three children: - * ship_detailed, ship_medium, and ship_rough. There are 2 threshold - * values: 5, 10. When the camera is less than 5 units away of the group - * bounding box, only ship_detailed is visible. When the view is zoomed out and - * the camera is between 5 and 10 units away from the group, only ship_medium is - * visible. Finally, when the view is zoomed out more and the camera is 10 or - * more units away from the group, only ship_rough is visible. - * - * This node attribute contains the properties of a null node. - * - * Example code to create LODGroup: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * // Array lChildNodes contains geometries of all LOD levels - * for (int j = 0; j < lChildNodes.GetCount(); j++) - * { - * lLodGroup->AddChild(lChildNodes.GetAt(j)); - * } - * \endcode - * - * This object can also be configured to define thresholds as percentage values. - * Typically, these percentage values represent the ratio between the group bounding - * box height (in screen space) and the viewing screen height. - * - * To switch to this mode, the client application must set the value of the - * ThresholdsUsedAsPercentage property to "true" before the calls to the AddThreshold/ - * SetThreshold methods. Client applications should always check the return value of - * these methods to validate that the action was successful. - * - * Note that, for backward compatibility, the data is always stored as FbxDistance type. - * The client application should always check the return value of this method to validate - * that the argument contains a meaningful value (see GetThreshold for more details). - * - * Example code to create LODGroup that store percentage values: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * lLodGroupAttr->ThresholdsUsedAsPercentage.Set(true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(33.3)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(66.6)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(FbxDistance(0.6f, "cm")) == false); - * - * FbxDistance dval; - * FbxDouble val = 0.0; - * bool res; - * res = lLodGroupAttr->GetThreshold(0, val); // res = true, val = 33.3 - * res = lLodGroupAttr->GetThreshold(0, dval); // res = false, dval.value()=33.3 - * res = lLodGroupAttr->GetThreshold(2, val); // res = false, val = 1.0 - * \nosubgrouping - */ -class FBXSDK_DLL FbxLODGroup : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLODGroup, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eLODGroup. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDisplayLevel types to determine how to display nodes in LODGroup. - * - \e eUseLOD Display the node according LOD threshold - * - \e eShow Always show this node - * - \e eHide Always hide this node - */ - enum EDisplayLevel - { - eUseLOD, - eShow, - eHide - }; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** Specifies if the threshold values stored by this LOD object are defining - * a distance to the camera (by default) or a percentage value. - * - * \remarks This property needs to be set before any call to the Add\SetThreshold - * methods since its value is used to validate that the correct method is - * called. - * - * To access this property do: ThresholdsUsedAsPercentage.Get(). - * To set this property do: ThresholdsUsedAsPercentage.Set(bool). - * - * Default value is false - */ - FbxPropertyT ThresholdsUsedAsPercentage; - - /** - * \name Distance Mode - * The properties in this block are meaningful only if ThresholdsUsedAsPercentage - * is set to false and should be ignored otherwise. - */ - //@{ - /** This property handles the use of the Min/Max distances. - * Enables the minimum and maximum distance to take effect. - * For example, if the distance between the group and the camera is smaller - * than the minimum distance, then the whole group disappears. - * - * To access this property do: MinMaxDistance.Get(). - * To set this property do: MinMaxDistance.Set(bool). - * - * Default value is false. - */ - FbxPropertyT MinMaxDistance; - - /** The minimum distance at which the group is displayed. - * - * To access this property do: MinDistance.Get(). - * To set this property do: MinDistance.Set(double). - * - * Default value is -100 - */ - FbxPropertyT MinDistance; - - /** The maximum distance at which the group is displayed. - * - * To access this property do: MaxDistance.Get(). - * To set this property do: MaxDistance.Set(double). - * - * Default value is 100 - */ - FbxPropertyT MaxDistance; - - /** Work in world space of transform or local space If true, - * the camera distance to the LOD group will be computed in world space. - * This means it is possible to parent the LOD transform below other transforms - * and still have it work as expected. If this attribute is set to false, - * the distance computation ignores any parent transforms of the LOD transform. - * - * To access this property do: WorldSpace.Get(). - * To set this property do: WorldSpace.Set(bool). - * - * Default value is false - */ - FbxPropertyT WorldSpace; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Methods - // - ////////////////////////////////////////////////////////////////////////// - - /** Get the number of elements in the threshold list. - * In correct situations, the size of this list is one less than the LOD node - * children objects count. - * \return The current size of the threshold list. - */ - int GetNumThresholds() const; - - /** Add a new threshold. - * \param pThreshValue Threshold value (distance). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool AddThreshold(const FbxDistance& pThreshValue); - - /** Add a new threshold. - * \param pThreshValue Threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool AddThreshold(FbxDouble pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (distance). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool SetThreshold(int pEl, const FbxDistance& pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool SetThreshold(int pEl, FbxDouble pThreshValue); - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=true. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDistance& pThreshValue) const; - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=false. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDouble& pThreshValue) const; - - /** Get the number of elements in the displayLevel list. - * In correct situations, the size of this list equals the LOD node - * children objects count. - * \return The current size of the displayLevel list. - */ - int GetNumDisplayLevels() const; - - /** Add a new displayLevel value to the current list. - * - * The value overrides the display of any level and can force it to hide - * or show the object at that level. For example, if the distance between - * the group and the camera is smaller than the first threshold, then the - * object at level 0 is visible. If the display level for the object at - * level 2 is changed to eShow, ie. if the attribute displayLevel[2] is - * set to eShow, then the object at level 2 will show regardless of - * the current active level. - * - * \param pValue Display level value - * \return true if successful and false if any error occurred. - * \remarks Removing items is not possible unless a new FbxLODGroup is - * created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - */ - bool AddDisplayLevel(FbxLODGroup::EDisplayLevel pValue); - - /** Set the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue New display level value. - * \return true if successful and false otherwise. - */ - bool SetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - - /** Get the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue the current display level value. - * \return true if successful and false otherwise. - * \remarks In case of failure, the pValue is left unchanged. - */ - bool GetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel& pValue) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - int mNbThresholds; - FbxProperty mThresholds; - - bool RetrieveThreshold(int pEl, FbxDistance& pThreshValue) const; - bool StoreThreshold(int pEl, const FbxDistance& pThreshValue); - - int mNbDisplayLevels; - FbxProperty mDisplayLevels; - - bool DisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLODGroup::EDisplayLevel&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h deleted file mode 100644 index 8376b22..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h +++ /dev/null @@ -1,283 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmarker.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MARKER_H_ -#define _FBXSDK_SCENE_GEOMETRY_MARKER_H_ - -#include - -#include - -#include - -/** This node attribute contains the properties of a marker. - * A FbxMarker can represent a motion capture marker or a HIK IK/FK effector. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMarker : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxMarker, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eMarker. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the marker to default values. - void Reset(); - - /** \enum EType Marker types. - * - \e eStandard - * - \e eOptical - * - \e eEffectorFK - * - \e eEffectorIK - */ - enum EType - { - eStandard, - eOptical, - eEffectorFK, - eEffectorIK - }; - - /** Set marker type. - * \param pType The type of marker. - */ - void SetType(EType pType); - - /** Get marker type. - * \return The type of the marker. - */ - EType GetType() const; - - /** \enum ELook Marker look. - * - \e eCube - * - \e eHardCross - * - \e eLightCross - * - \e eSphere - * - \e eCapsule - * - \e eBox - * - \e eBone - * - \e eCircle - * - \e eSquare - * - \e eStick - * - \e eNone - */ - enum ELook - { - eCube, - eHardCross, - eLightCross, - eSphere, - eCapsule, - eBox, - eBone, - eCircle, - eSquare, - eStick, - eNone - }; - - /** - * \name Default Animation Values - * This set of functions provides direct access to default - * animation values specific to a marker. The default animation - * values are found in the default take node of the associated node. - * Hence, these functions only work if the marker has been associated - * with a node. - */ - //@{ - - /** Get default occlusion. - * \return 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - double GetDefaultOcclusion() const; - - /** Set default occlusion. - * \param pOcclusion 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - void SetDefaultOcclusion(double pOcclusion); - - /** Get default IK reach translation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachTranslation() const; - - /** Set default IK reach translation. - * \param pIKReachTranslation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachTranslation(double pIKReachTranslation); - - /** Get default IK reach rotation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachRotation() const; - - /** Set default IK reach rotation. - * \param pIKReachRotation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachRotation(double pIKReachRotation); - - /** Get default IK pull. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPull() const; - - /** Set default IK pull. - * \param pIKPull A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPull(double pIKPull); - - /** Get default IK pull hips. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPullHips() const; - - /** Set default IK pull hips. - * \param pIKPullHips A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPullHips(double pIKPullHips); - - //@} - - /** - * \name Obsolete functions - */ - //@{ - - /** Get default color. - * \param pColor Filled with appropriate data - * \return Input parameter filled with appropriate data. - * \remarks Marker color can not be animated anymore. - */ - FbxColor& GetDefaultColor(FbxColor& pColor) const; - - /** Set default color. - * \param pColor The marker color to be set. - * \remarks Marker color can not be animated anymore. - */ - void SetDefaultColor(FbxColor& pColor); - - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the marker's look. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * Default value is eCube - */ - FbxPropertyT Look; - - /** This property handles the marker's link visibility. - * - * To access this property do: DrawLink.Get(). - * To set this property do: DrawLink.Set(FbxBool). - * - * Default value is true - */ - FbxPropertyT DrawLink; - - /** This property handles the marker's size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100 - */ - FbxPropertyT Size; - - /** This property handles the marker's label visibility. - * - * To access this property do: ShowLabel.Get(). - * To set this property do: ShowLabel.Set(FbxBool). - * - * Default value is false - */ - FbxPropertyT ShowLabel; - - /** This property handles the marker's pivot position. - * - * To access this property do: IKPivot.Get(). - * To set this property do: IKPivot.Set(FbxDouble3). - * - * Default value is (0., 0., 0.) - */ - FbxPropertyT IKPivot; - - // Dynamic properties - - /** This method grants access to the occlusion property. - * \remarks If the marker is not of type Optical or the property - * is invalid, return NULL - */ - FbxProperty GetOcclusion() const; - - /** This method grants access to the IKReachTranslation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachTranslation() const; - - /** This method grants access to the IKReachRotation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachRotation() const; - - /** This method grants access to the IKPull property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPull() const; - - /** This method grants access to the IKPullHips property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPullHips() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMarker::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MARKER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h deleted file mode 100644 index dac0c7a..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h +++ /dev/null @@ -1,833 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmesh.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MESH_H_ -#define _FBXSDK_SCENE_GEOMETRY_MESH_H_ - -#include - -#include -#include - -#include - -/** A mesh is a geometry made of polygons. -* The class can define a geometry with as many n-sided polygons as needed. Users can freely -* mix triangles, quadrilaterals, and other polygons. Since the mesh-related terminology of the FBX SDK -* differs a little from the known standards, here are our definitions: -* \li A control point is an XYZ coordinate, it is synonym of vertex. -* \li A polygon vertex is an index to a control point (the same control point can be referenced by multiple polygon vertices). -* \li A polygon is a group of polygon vertices. The minimum valid number of polygon vertices to define a polygon is 3. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. */ -class FBXSDK_DLL FbxMesh : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxMesh, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eMesh. */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \name Polygon Management */ - //@{ - /** Begins the process of adding a polygon to the mesh. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTexture Index of texture to assign to this polygon if texture mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pGroup Group index assigned to polygon. - * \param pLegacy When set to \c true, automatically create a LayerElement of type Texture; This was the default behavior of earlier - * versions of the FBX SDK. Since version 2010, the textures are connected to the material object. - * \remark This function must be called before AddPolygon(). - * \remark If used, the pTexture index will reference textures assigned to the DIFFUSE channel (FbxLayerElement::eTextureDiffuse). */ - void BeginPolygon(int pMaterial=-1, int pTexture=-1, int pGroup=-1, bool pLegacy=true); - - /** Begin writing a polygon. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTextures Array of index of texture (by texture type) to assign to this polygon if texture mapping type is \e eByPolygon. - * Otherwise it must be an array of \c -1. This array is expected to be of size: FbxLayerElement::sTypeTextureCount. If one texture - * type is not used, the corresponding entry must be left at \c -1. */ - void BeginPolygonExt(int pMaterial, int* pTextures); - - /** Add a polygon vertex to the current polygon. - * \param pIndex Index in the table of the control points. - * \param pTextureUVIndex Index of texture UV coordinates to assign to this polygon if texture UV mapping type is \e eByPolygonVertex. Otherwise it must be \c -1. - * \remark After adding all the polygons of the mesh, call function "BuildMeshEdgeArray" to generate edge data for the mesh. */ - void AddPolygon(int pIndex, int pTextureUVIndex = -1); - - //! End writing a polygon, it should be called after adding one polygon. - void EndPolygon(); - - /** Get the polygon count of this mesh. - * \return Return the number of polygons in the mesh. */ - inline int GetPolygonCount() const { return mPolygons.GetCount(); } - - /** Get the number of polygon vertices in a polygon. - * \param pPolygonIndex Index of the polygon. - * \return The number of polygon vertices in the indexed polygon. If the polygon index is out of bounds, return -1. */ - inline int GetPolygonSize(int pPolygonIndex) const - { - return ( pPolygonIndex >= 0 && pPolygonIndex < mPolygons.GetCount() ) ? mPolygons[pPolygonIndex].mSize : -1; - } - - /** Get the current group ID of the specified polygon. - * A polygon group can be useful to identify a number of polygons that share the same properties. The FBX SDK does not use this information internally - * but guarantee its persistence in the FBX files and in memory. - * \param pPolygonIndex Index of the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, return -1. */ - int GetPolygonGroup(int pPolygonIndex) const; - - /** Assign the specified polygon a group ID. - * A polygon can only be assigned to one group at the time. - * \param pPolygonIndex Index of the polygon. - * \param pGroup Group index assigned to the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, do nothing. */ - inline void SetPolygonGroup(int pPolygonIndex, int pGroup) const - { - if( pPolygonIndex >= 0 && pPolygonIndex= 0 && pPolygonIndex < mPolygons.GetCount() && pPositionInPolygon >= 0 && pPositionInPolygon < mPolygons[pPolygonIndex].mSize ) ? - mPolygonVertices[mPolygons[pPolygonIndex].mIndex + pPositionInPolygon] : -1; - } - - /** Get the normal associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pNormal The returned normal. - * \return \c True on success, \c false on failure. - * \remark \c pNormal remain unchanged if the requested vertex does not exists. */ - bool GetPolygonVertexNormal(int pPolyIndex, int pVertexIndex, FbxVector4& pNormal) const; - - /** Get the normals associated with the mesh for every polygon vertex. - * \param pNormals The returned normals. - * \return \c True on success, \c false on failure. */ - bool GetPolygonVertexNormals(FbxArray& pNormals) const; - - /** Get the UV associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pUVSetName The name of the UV set that contains the UV. - * \param pUV The returned UV. - * \param pUnmapped State flag that indicates if the polygon vertex does not have an associated UV. - * \return \c True on success, \c false on failure. - * \remark \c pUV remain unchanged if the requested vertex does not exists. - * \remark This function return \c true if the specified polygon vertex does not have an associated UV. In this case, - * pUnampped is set to \c true and the content of \c pUV is undefined. - */ - bool GetPolygonVertexUV(int pPolyIndex, int pVertexIndex, const char* pUVSetName, FbxVector2& pUV, bool& pUnmapped) const; - - /** Get the UVs associated with the mesh for every polygon vertex. - * \param pUVSetName The name of the UV set that contains the UVs. - * \param pUVs The returned UVs. - * \param pUnmappedUVId If specified, this array will be filled with the indices of the UVs that are not associated to a polygon vertex and thus, - * have an undefined value. If the array as a size of 0, then all the polygon vertices have an associated UV coordinate and the \c pUVs - * array can be used as is. Otherwise, the calling application may be required to process the invalid UV coordinates to avoid inconsistent - * results. It is strongly suggested to use the FbxLayerElementUV's Direct and Indexed arrays directly (specially if the calling application - * supports indirection of the UVs). - * \remark unmapped UV coordinates are set to (0,0) - * \return \c True on success, \c false on failure. - */ - bool GetPolygonVertexUVs(const char* pUVSetName, FbxArray& pUVs, FbxArray* pUnmappedUVId = NULL) const; - - /** Get the array of polygon vertices (i.e: indices to the control points). - * This array is a concatenation of the list of polygon vertices of all the polygons. Example: a mesh made of 2 triangles with vertices [1,2,3] - * and vertices [2,3,4] results in [1,2,3,2,3,4]. The first polygon starts at position 0 and the second at position 3. - * \return The array of polygon vertices. */ - int* GetPolygonVertices() const; - - /** Gets the number of polygon vertices in the mesh. - * \return The overall size of the array of polygon vertices in the mesh. - * \remark This value can be smaller than the value returned by GetControlPointsCount() (meaning that not all of the control points stored in the object are used to define the mesh). - * However, typically it will be much bigger since any given control point can be used to define a vertex on multiple polygons. */ - inline int GetPolygonVertexCount() const { return mPolygonVertices.Size(); } - - /** Gets the start index into the array returned by GetPolygonVertices() for the given polygon. - * This method can be used for a faster access to the polygon vertices indices. If, for example, we want to - * access the indices for polygon 3, the following code would do the trick - * \code - * int lStartIndex = mesh.GetPolygonVertexIndex(3); - * if( lStartIndex == -1 ) return; - * int* lVertices = mesh.GetPolygonVertices()[lStartIndex]; - * int lCount = mesh.GetPolygonSize(3); - * for( int i = 0; i < lCount; ++i ) - * { - * int vertexID = lVertices[i]; - * ... - * } - * \endcode - * \param pPolygonIndex The polygon of interest. - * \return The index into the GetPolygonVertices() array. - * \remark If the polygon index is out of bounds, return -1. */ - int GetPolygonVertexIndex(int pPolygonIndex) const; - - /** Remove the specified polygon from the mesh. - * This method will automatically update the layers accordingly. - * \param pPolygonIndex Index of the polygon. - * \return Polygon index. - * \remark If the polygon index is out of bounds, return -1. */ - int RemovePolygon(int pPolygonIndex); - - /** Remove the duplicated edges from the mesh. - * This method will remove duplicated edges. It will not change any vertex and not change the mesh topology. - * \param pEdgeIndexList Index list of edges. - * \return the count of removed edges. - * \remark the edge index list must be ordered. The last one is the max. If the edge index is out of bounds, return -1. */ - int RemoveDuplicatedEdges(FbxArray& pEdgeIndexList); - //@} - - /** \name Texture UV Utility Functions. - * - * The methods found in this section are utility functions used to handle UV coordinates quickly. Internally, they - * refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. Except for the GetAllChannelUV(int pLayer), - * all the methods are implicitly working on Layer 0. Use the \c FbxLayer methods to have access to the other layers. */ - //@{ - /** Init texture UV coordinates. - * \param pCount Number of texture UV elements. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark \c pCount must equal the number of control points of the Mesh if - * the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void InitTextureUV(int pCount, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Add texture UV coordinates. - * Appends a new element at the end of the array of texture UV coordinates. - * \param pUV Texture UV coordinates, ranging between \c 0 and \c 1. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark The final number of texture UV elements must equal the number of control - * points if the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void AddTextureUV(FbxVector2 pUV, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of texture UV coordinates. - * \param pTypeIdentifier The texture channel the UV refers to. */ - int GetTextureUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of layer containing at least one channel UVMap. - * return \e 0 if no UV maps have been defined. */ - int GetUVLayerCount() const; - - /** Fills an array describing, for the given layer, which texture channel have UVs associated to it. - * \param pLayer Index of the layer. - * \return Array with the channel descriptor. - * \remark Only the channels that have UVs associated are reported in the array. For example, let's assume that we have defined UVs for the Diffuse, - * Ambient and Bump channels on layer 0. The resulting array will have the following three entries: - * \li FbxLayerElement::eDIFFUSE_TEXTURE - * \li FbxLayerElement::eAMBIENT_TEXTURE - * \li FbxLayerElement::eBUMP_TEXTURE */ - FbxArray GetAllChannelUV(int pLayer); - //@} - - /** \name Material, Texture and UV Indices Utility Functions. - * The methods found in this section are utility functions used to handle Material, Texture and UV indices quickly. - * Internally, they refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. These functions are only - * working on Layer 0. Use the \c FbxLayer methods directly to access other layers. */ - //@{ - /** Initialize material indices. - * \param pMappingMode The mapping mode. - * This method must be called after FbxGeometryBase::InitControlPoints(). - * The material indices refer to the position of a material in the FbxLayerElementMaterial's direct array. - * See FbxLayerElementMaterial for more details. Supported mapping types are \e eByControlPoint, - * \e eByPolygon and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the material index array - * as there are control points. - * - If mapping mode is \e eByPolygon, there will be as many indices in the material index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the material index array. - * \remark This function will set the Reference mode of the FbxLayerElementMaterial on layer 0 to \e eIndexToDirect. */ - void InitMaterialIndices(FbxLayerElement::EMappingMode pMappingMode); - - /** Initialize texture indices. - * \param pMappingMode The mapping mode. - * The texture indices refer to the texture connection to the material. In older versions of the FBX SDK, the - * indices were referring to the entries in the direct array of the FbxLayerElementTexture. - * See FbxLayerElementTexture for more details. Supported mapping modes are \e eByPolygon - * and \e eALL_SAME. - * - If mapping mode is \e eByPolygon, there will be as many indices in the texture index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the texture index array. - * \param pTextureType The texture channel identifier. - * \remark This function will set the Reference mode of the FbxLayerElementTexture on layer 0 to \e eIndexToDirect. */ - void InitTextureIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTextureType); - - /** Initialize texture UV indices. - * \param pMappingMode The mapping mode. - * The texture UV indices refer to the index of an element in the FbxLayerElementUV's direct array. - * See FbxLayerElementUV for more details. Supported mapping types are \e eByControlPoint , \e eByPolygonVertex - * and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the UV index array - * as there are control points. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eDirect. - * - If mapping mode is \e eByPolygonVertex, there will be an index in the UV index array - * for each vertex, for each polygon it is part of. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eIndexToDirect. - * - If mapping mode is \e eALL_SAME, there will be no index in the UV index array. This will also set the Reference - * mode of the FbxLayerElementUV on layer 0 to \e eDirect. - * \param pTypeIdentifier The texture channel the UVIndices refers to. */ - void InitTextureUVIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Return a texture UV index. - * \remark This function only works if the texture UV mapping mode is set to \e eByPolygonVertex, - * otherwise it returns -1. */ - int GetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Set a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pIndex The index of the texture UV we want to assign to the polygon vertex. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \remark This function only works if the texture UV mapping type is set to \e eByPolygonVertex. */ - void SetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, int pIndex, FbxLayerElement::EType pTypeIdentifier); - //@} - - /** \name Utility functions */ - //@{ - /** Reset the mesh to default values. - * Frees and set to \c NULL all layers and clear the polygon and the control point array. */ - void Reset(); - - /** Generate vertex normals on the mesh. - * The normal computation takes into consideration, as much as possible, the smoothing groups. - * \param pOverwrite If true, re-generate normals data regardless of availability, otherwise left untouched if exist. - * \param pByCtrlPoint If true, the recomputed normals will be defined by control points instead of by polygon vertex. - * \param pCW True if the normals are calculated clockwise, false otherwise (counter-clockwise). - * \return \c true if successfully generated normals data, or if already available and pOverwrite is false. */ - bool GenerateNormals(bool pOverwrite=false, bool pByCtrlPoint = false, bool pCW=false); - - /** Compares the normals calculated by doing cross-products between the polygon vertex and by the ones - * stored in the normal array. - * \returns \c false if ALL of them are Clockwise. Returns \c true otherwise. */ - bool CheckIfVertexNormalsCCW(); - - //! Internal structure used to keep the duplicate vertex information. - class DuplicateVertex - { - public: - DuplicateVertex() : - lVertexPolyIndex(0), - lNewVertexIndex(0), - lNormal(0, 0, 0), - lUV(0, 0), - lEdgeIndex(0) - { - } - - int lVertexPolyIndex; //!< Index in mPolygonsVertex where the vertex is found. - int lNewVertexIndex; //!< The new index of the vertex. - FbxVector4 lNormal; //!< The normal associated with this duplicate control point. - FbxVector2 lUV; //!< The UV associated with this duplicate control point. - int lEdgeIndex; //!< The edge index. - }; - - //! Internal structure used to compute the normals on a mesh - class VertexNormalInfo - { - public: - VertexNormalInfo() : - mTotalNormal(0, 0, 0), - mNumNormal(0) - { - } - - FbxVector4 mTotalNormal; //!< Sum of all the normals found. - int mNumNormal; //!< Number of normals added. - }; - - /** Verify if the mesh has polygons that are defined on the same point more than once. - * \return true if the mesh has that kind of polygon, false otherwise. */ - bool CheckSamePointTwice() const; - - /** Remove bad polygons from a mesh. - * Degenerate polygons use a vertex more than once. Remove them from the mesh and - * from the layer element indices as needed. - * \return Number of polygons removed from the mesh, -1 if an error occurred. */ - int RemoveBadPolygons(); - //@} - - /** \name Point Splitting/Merging utility functions */ - //@{ - /** Split points. - * \param pTypeIdentifier Specify which UVs are processed. - * \return \c true if a split occurred, false otherwise. - * \remark This method replaces the BuildSplitList and SplitPointsForHardEdge. */ - bool SplitPoints(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Insert the new indexes of the object that have to be merged. - * \param pMergeList The list that will contain the indexes of the objects to merge. - * \param pExport If set to \c true, include the duplicate indexes in the merge list. */ - bool BuildMergeList(FbxArray& pMergeList, bool pExport=false); - - /** Merge the points specified in the list. - * \param pMergeList List containing the information on the points that will be merged. */ - void MergePointsForPolygonVerteNormals(FbxArray &pMergeList); - //@} - - /** \name Edge management functions */ - //@{ - /** Automatically generate edge data for the mesh. Clears all previously stored edge information */ - void BuildMeshEdgeArray(); - - /** Query the number of edges defined on this mesh - * \return The number of edges defined for this mesh */ - int GetMeshEdgeCount() const; - - /** Get the index for the edge between the given vertices. - * Note that the result of this method is the same if pStartVertexIndex and pEndVertexIndex are swapped. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pReversed flag will be set to true if the reverse edge is found, false otherwise. - * \param pExistedEdgeCount legal edge count in mEdgeArray - * \return -1 if no edge exists for the given pair of vertices. */ - int GetMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool& pReversed, int pExistedEdgeCount=-1); - - /** Use this method before calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * Once done calling GetMeshEdgeIndexForPolygon, call EndGetMeshEdgeIndex. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void BeginGetMeshEdgeIndexForPolygon(); - - /** Use this method after calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void EndGetMeshEdgeIndexForPolygon(); - - /** Get the index for the specific edge of pPolygon. - * \param pPolygon The polygon of interest. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return -1 if the specific edge does not exist. - * \remark To optimize access time when making several calls to this method, enclose these calls - * between the BeginGetMeshEdgeIndexForPolygon() and EndGetMeshEdgeIndexForPolygon() calls. */ - int GetMeshEdgeIndexForPolygon(int pPolygon, int pPositionInPolygon); - - /** Get the vertices for the given edge. Note that the values returned are indices into the control point array. - * \param pEdgeIndex The edge to query. - * \param pStartVertexIndex The edge's starting point will be stored here. - * \param pEndVertexIndex The edge's starting point will be stored here. */ - void GetMeshEdgeVertices(int pEdgeIndex, int& pStartVertexIndex, int& pEndVertexIndex) const; - - /** Use this method before calling GetMeshEdgeVertices if making several calls to that method. - * Once done calling GetMeshEdgeVertices, call EndGetMeshEdgeVertices. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void BeginGetMeshEdgeVertices(); - - /** Use this method after calling GetMeshEdgeVertices if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void EndGetMeshEdgeVertices(); - - /** Presets the number edge data elements. - * \param pEdgeCount The number of edges to allocate. */ - void SetMeshEdgeCount(int pEdgeCount); - - /** Sets element in edge array to specific value. - * \param pEdgeIndex The edge index - * \param pValue The edge data */ - inline void SetMeshEdge(int pEdgeIndex, int pValue){ if( pEdgeIndex >= 0 && pEdgeIndex < mEdgeArray.GetCount() ) mEdgeArray[pEdgeIndex] = pValue; } - - /** Add an edge with the given start/end points. Note that the inserted edge - * may start at the given end point, and end at the given start point. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \return Edge index of the new edge, or -1 on failure (edge/reverse edge already exists, no face using these 2 points consecutively ) */ - int AddMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates); - - /** Set the index for the edge with the given start/end points. Note that the edge - * may start at the given end point, and end at the given start point. - * \param pEdgeIndex The edge index of the edge. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \param pExistedEdgeCount the valid edge count that we have created in edge array. This parameter only works when pCheckForDuplicates is true. - * The default value is -1 which meaning current edge array has been fully filled with valid edges, i.e., - * we will search the full edge array for the duplicated edge. - * \return Edge index of the edge, or -1 on failure (no face using these 2 points consecutively ), or -2 if edge/reverse edge already exists */ - int SetMeshEdgeIndex(int pEdgeIndex, int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates, int pExistedEdgeCount=-1); - - /** Call this before calling AddMeshEdgeIndex or SetMeshEdgeIndex to increase performance. - * Once finished adding/setting edges EndAddMeshEdgeIndex should be called. */ - void BeginAddMeshEdgeIndex(); - - /** After calling AddMeshEdgeIndex or SetMeshEdgeIndex, EndAddMeshEdgeIndex should be called. */ - void EndAddMeshEdgeIndex(); - - /** Adds an edge for the specified polygon, and edge number within the polygon. See SetMeshEdgeIndex for notes the the parameters. - * \param pPolygonIndex The polygon of interest. - * \param pPositionInPolygon The edge within the polygon - * \return edge index or -1 if failed. */ - int AddMeshEdgeIndexForPolygon(int pPolygonIndex, int pPositionInPolygon); - - /** Sets the specified edge to the specified polygon's edge. - * Note that the position in the polygon ranges from 0 to GetPolygonSize(pPolygonindex) - 1 - * and represents the edge from GetPolygonVertex(pPolygonIndex, pPositionInPolygon) to - * GetPolygonVertex( pPolygonIndex, pPositionInPolygon + 1 ) or from pPositionInPolygon to - * 0 if pPositionInPolygon == GetPolygonSize(pPolygonindex) - 1 - * \param pEdgeIndex The edge. - * \param pPolygonIndex The polygon. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return true on success, false on failure. ( edge for the poly and position already exists ) */ - bool SetMeshEdgeIndex(int pEdgeIndex, int pPolygonIndex, int pPositionInPolygon); - - /** Determines if the mesh is composed entirely of triangles. - * \return true if all polygons are triangles, false otherwise */ - bool IsTriangleMesh() const; - //@} - - /** Reserve memory in the polygon array to hold the specified number of polygons - * \param pCount The number of polygons this mesh will hold */ - inline void ReservePolygonCount(int pCount) { mPolygons.Reserve(pCount); } - - /** Reserve memory in the polygon vertex array to hold the specified number of polygon vertices. - * \param pCount The number of polygon vertices */ - inline void ReservePolygonVertexCount(int pCount) { mPolygonVertices.Reserve(pCount); } - - bool GetTextureUV(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - bool GetMaterialIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTextureIndices(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTextureType) const; - - /** \name Crease utility functions */ - //@{ - /** Get crease weight by edge index. - * \param pEdgeIndex Edge index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetEdgeCreaseInfo(int pEdgeIndex); - - /** Get crease edge array. - * \param pCreaseArray Edge crease data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetEdgeCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Get crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetVertexCreaseInfo(int pVertexIndex); - - /** Get vertex crease array. - * \param pCreaseArray Edge vertex data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetVertexCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Set crease weight by edge index. - * \param pEdgeIndex Edge index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfo(int pEdgeIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Edge crease data. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfoArray(FbxArray* pWeightArray); - - /** Set crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfo(int pVertexIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Vertex crease data. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfoArray(FbxArray* pWeightArray); - //@} - - /** \name Smooth mesh preview utility functions */ - //@{ - /** \enum ESmoothness Display Smoothness. - * It represents smooth mesh preview mode. This concept is not used in the FBX SDK but simply - * carried over so applications can access it and perform the appropriate tasks. */ - enum ESmoothness - { - eHull, //!< Default value, not active "smooth mesh preview". - eRough, //!< Not active "smooth mesh preview". - eMedium, //!< Both display cage and smooth mesh. - eFine //!< Display smooth mesh. - }; - - /** \enum EBoundaryRule the boundary rule. */ - enum EBoundaryRule - { - eLegacy, //!< Default value. - eCreaseAll, //!< Used for hard corner. - eCreaseEdge //!< Used for round corner. - }; - - /** Get display smoothness from mesh. - * \return Mesh smoothness. - * \remark It represents smooth mesh preview mode. */ - FbxMesh::ESmoothness GetMeshSmoothness() const; - - /** Set the mesh display smoothness mode. - * \param pSmoothness New smoothness factor. - * \remark It represents smooth mesh preview mode. */ - void SetMeshSmoothness(FbxMesh::ESmoothness pSmoothness); - - /** Get preview subdivision levels from mesh. - * \return Mesh preview subdivision levels. */ - int GetMeshPreviewDivisionLevels() const; - - /** Set mesh preview subdivision levels. - * \param pPreviewDivisionLevels Number of subdivisions levels. */ - void SetMeshPreviewDivisionLevels(int pPreviewDivisionLevels); - - /** Get render subdivision levels from mesh. - * \return Mesh render subdivision levels - * \remark Sometimes, render division level can be the same as preview level. */ - int GetMeshRenderDivisionLevels() const; - - /** Set mesh render subdivision levels. - * \param pRenderDivisionLevels Number of subdivision levels. */ - void SetMeshRenderDivisionLevels(int pRenderDivisionLevels); - - /** Query whether to display subdivisions isolines on mesh. - * \return The current state of the internal flag. */ - bool GetDisplaySubdivisions() const; - - /** Set the DisplySubdivisions state. - * \param pDisplySubdivisions New value for this flag. */ - void SetDisplaySubdivisions(bool pDisplySubdivisions); - - /** Get BoundaryRule from mesh. - * \return Current value of the internal state. */ - EBoundaryRule GetBoundaryRule() const; - - /** Set BoundaryRule for this mesh. - * \param pBoundaryRule New value for the internal state of this mesh. - * \remark BoundaryRule will affect the corners of smooth mesh. */ - void SetBoundaryRule(EBoundaryRule pBoundaryRule); - - /** Query whether to preserve borders when preview smooth mesh is enabled. - * \return The current state of the flag. */ - bool GetPreserveBorders() const; - - /** Set the state of the PreserveBorders flag. - * \param pPreserveBorders New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveBorders(bool pPreserveBorders); - - /** Query whether to preserve hard edges when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPreserveHardEdges() const; - - /** Set the state of the PreserveHardEdges flag. - * \param pPreserveHardEdges New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveHardEdges(bool pPreserveHardEdges); - - /** Query whether to PropagateEdgeHardness when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPropagateEdgeHardness() const; - - /** Set state of the PropagateEdgeHardness flag. - * \param pPropagateEdgeHardness New value for this flag. - * \remark This flag will affect smooth mesh preview results. */ - void SetPropagateEdgeHardness(bool pPropagateEdgeHardness); - //@} - - /** \name Geometry hole management utility functions */ - //@{ - /** Get hole flag by face index (an index to a polygon). - * \param pFaceIndex Index of the queried polygon. - * \return The hole flag for the given face. */ - bool GetPolyHoleInfo(int pFaceIndex); - - /** Get hole flags Array. - * \param pHoleArray Hole flags array. - * \return \c true if the pHoleArray is filled successfully. */ - bool GetPolyHoleInfoArray(FbxLayerElementArrayTemplate** pHoleArray); - - /** Sets the flag indicating whether the face represents a hole or not. - * \param pFaceIndex Index of the processed polygon. - * \param pIsHole If \c true, this face represent a hole. - * \return \c true if successfully set the hole info. */ - bool SetPolyHoleInfo(int pFaceIndex, bool pIsHole); - - /** Set hole flags array. - * \param pHoleArray Hole flag array. - * \return \c true if successfully set the hole flags. */ - bool SetPolyHoleInfoArray(FbxArray* pHoleArray); - //@} - - /** \name Tangents data management utility functions */ - //@{ - /** Generate tangents data for UVSet with specific name. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetName The UVSet name to generate tangents data with. The UVSet on the first layer is the the default UVSet to generate. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(const char* pUVSetName=NULL, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - /** Generate tangents data for UVSet in specific layer. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetLayerIndex The layer to generate tangents data with. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(int pUVSetLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - - /** Generate tangents data for all UVSets in all layers. - * Note that the UV winding order is stored in the W component of the tangent: - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsDataForAllUVSets(bool pOverwrite=false, bool pIgnoreTangentFlip=false); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - //Please use GetPolygonVertexIndex and GetPolygonVertices to access these arrays. - //DO NOT MODIFY them directly, otherwise unexpected behavior will occur. - //These members are public only for application data copy performance reasons. - struct PolygonDef{ int mIndex; int mSize; int mGroup; }; - - FbxArray mPolygons; - FbxArray mPolygonVertices; - FbxArray mEdgeArray; - - //These are only used in context of triangulation to backup original polygon layout necessary for handling mesh cache after triangulation - FbxArray* mOriginalPolygons; - FbxArray* mOriginalPolygonVertices; - int mOriginalControlPointsCount; - - //Internal structure used to keep the mapping information between edges and polygons. - struct ComponentMap - { - FbxArray mData; // The array to store data. - FbxArray mOffsets; // The array to store the offsets of the data in mData. - - int GetDataCount(int pIndex) { return mOffsets[pIndex + 1] - mOffsets[pIndex]; } - int GetData(int pIndex, int pSubIndex) { return mData[ mOffsets[pIndex] + pSubIndex ]; } - int GetComponentCount() { return mOffsets.GetCount() - 1; } - }; - void ComputeComponentMaps(ComponentMap& pEdgeToPolyMap, ComponentMap& pPolyToEdgeMap); - - // Internal structure used to keep the mapping information between the control points and the - // vertices referencing them - class FBXSDK_DLL ControlPointToVerticesMap - { - public: - ControlPointToVerticesMap(); - ~ControlPointToVerticesMap(); - bool Valid(); - - void Fill(FbxMesh* pMesh); - - int GetCount(); - bool Init(int pNbEntries); - void Clear(); - - FbxArray* GetVerticesArray(int pControlPoint); - FbxArray* operator[](int pControlPoint); - - private: - FbxArray< FbxArray* > mMap; - }; - void ComputeControlPointToVerticesMap(ControlPointToVerticesMap& pMap); - - // this function will compare the vertex normals with the corresponding ones in pMesh and - // make them similar (i.e: if pMesh(NVi) == pMesh(NVj) then make this(NVi) == this(NVj)) - bool ConformNormalsTo(const FbxMesh* pMesh); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ContentClear() override; - - void InitTextureIndices(FbxLayerElementTexture* pLayerElementTexture, FbxLayerElement::EMappingMode pMappingMode); - void RemoveTextureIndex(FbxLayerElementTexture* pLayerElementTextures, int pPolygonIndex, int pOffset); - void RemoveUVIndex(FbxLayerElementUV* pLayerElementUV, int pPolygonIndex, int pOffset); - - bool GetBadPolyIndices(FbxArray& pArrayBadPolyIndices, bool pCheckOne) const; - - struct SplitEdgeData { int mOriginalEdge; bool mIsNew; }; - - ESmoothness mSmoothness; - int mPreviewDivisionLevels; - int mRenderDivisionLevels; - - bool mDisplaySubdivisions; - EBoundaryRule mBoundaryRule; - bool mPreserveBorders; - bool mPreserveHardEdges; - bool mPropagateEdgeHardness; - - struct PolygonIndexDef { int mPolygonIndex; int mSubPolygonIndex; }; - - struct V2PVMap - { - PolygonIndexDef* mV2PV; - int* mV2PVOffset; - int* mV2PVCount; - FbxArray* > mPVEdge; - bool mValid; - - //Used for fast search in GetMeshEdgeIndexForPolygon this array does not follow the same allocation as the above ones because - //it is not used in the normal BeginAddMeshEdgeIndex(). It is filled only by the call to BeginGetMeshEdgeIndexForPolygon(). - FbxArray mV2Edge; - } mV2PVMap; - - struct EdgeLookupDef { FbxArray mPVFlags; bool mValid; } mPVEndFlags; - - //Finds the polygon index for the given edge - int FindPolygonIndex(int pEdgeIndex); - static int PolygonIndexCompare(const void* p1, const void* p2); - void PolySetTexture(FbxLayer* pLayer, int pTextureIndex, FbxLayerElement::EType pTextureType); - template bool GetPolygonVertexLayerElementIndex(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, int& pIndex) const; - template bool GetPolygonVertexLayerElementValue(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, T& pValue, bool pAllowUnmapped) const; - - friend class FbxGeometryConverter; - -private: - bool GenerateTangentsData(FbxLayerElementUV* pUVSet, int pLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - void FillMeshEdgeTable(FbxArray& pTable, int* pValue, void (*FillFct)(FbxArray& pTable, int pIndex, int* pValue)); - void ComputeNormalsPerCtrlPoint(FbxArray& lNormalInfo, bool pCW=false); - void ComputeNormalsPerPolygonVertex(FbxArray& lNormalInfo, bool pCW=false); - void GenerateNormalsByCtrlPoint(bool pCW); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MESH_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnode.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnode.h deleted file mode 100644 index 8d82109..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnode.h +++ /dev/null @@ -1,2391 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_H_ - -#include - -#include -#include - -#include - -class FbxStatus; -class FbxNodeAttribute; -class FbxCachedEffect; -class FbxLODGroup; -class FbxNull; -class FbxMarker; -class FbxSkeleton; -class FbxGeometry; -class FbxMesh; -class FbxNurbs; -class FbxNurbsCurve; -class FbxLine; -class FbxNurbsSurface; -class FbxTrimNurbsSurface; -class FbxPatch; -class FbxCamera; -class FbxCameraStereo; -class FbxCameraSwitcher; -class FbxLight; -class FbxOpticalReference; -class FbxSubDiv; -class FbxCharacter; -class FbxSurfaceMaterial; -class FbxAnimStack; -class FbxAnimCurveFilterMatrixConverter; - -/** Represents an element in the scene graph. A scene graph is a tree of FbxNode - * objects. The tree management services are self contained in this class. - * - * \note The FBX SDK does not test the validity of the constructed scene graph. It - * is the responsibility of the caller to make sure that it does not generate cyclic - * graphs in a node hierarchy. - * - * Besides the tree management, this class defines all the properties required to describe - * the position of the object in the scene. This information include the basic Translation, - * Rotation and Scaling properties and the more advanced options for pivots, limits, and IK joints - * attributes such the stiffness and dampening. - * - * When it is first created, the FbxNode object is "empty" (i.e: it is an object without any - * graphical representation that only contains the position information). In this state, it can - * be used to represent parents in the node tree structure but not much more. The normal use of - * this type of objects is to add them an attribute that will specialize the node (see the - * "Node Attribute Management" section). - * - * The node attribute is an object in itself and is connected to the the FbxNode. This also - * means that the same node attribute can be shared among multiple nodes. FbxCamera, FbxLight, - * FbxMesh, etc... are all node attributes and they all derive from the base class FbxNodeAttribute. - * - */ -class FBXSDK_DLL FbxNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNode, FbxObject); - -public: - /** - * \name Node Tree Management - */ - //@{ - /** Get the parent node. - * \return Pointer to parent node or \c NULL if the current node has no parent. - */ - FbxNode* GetParent(); - const FbxNode* GetParent() const; - - /** Add a child node and its underlying node tree. - * \param pNode Node we want to make child of \c this. - * \return \c true on success, \c false if \e pNode is \c NULL or the system is - * unable to make the connection. - * \remarks If \e pNode already has a parent, first it is removed from current parent and then - * added to this one. - */ - bool AddChild(FbxNode* pNode); - - /** Remove the child node. - * \param pNode The child node to be removed. - * \return The removed child node. - */ - FbxNode* RemoveChild(FbxNode* pNode); - - /** Get the number of children nodes. - * \param pRecursive If \c true the method will also count all the descendant children. - * \return Total number of children for this node. - */ - int GetChildCount(bool pRecursive = false) const; - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - FbxNode* GetChild(int pIndex); - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - const FbxNode* GetChild(int pIndex) const; - - /** Finds a child node by name. - * \param pName Name of the searched child node. - * \param pRecursive Flag to request recursive calls. - * \param pInitial If set to \c true, the search compares the initial name of - * the node (see the FbxObject class) - * \return Found child node or \c NULL if no child node with this name exists. - */ - FbxNode* FindChild(const char* pName, bool pRecursive=true, bool pInitial=false); - //@} - - /** - * \name Node Target Management - * The FbxNode class allows the client to set a "follow" target node. This target - * forces the node to re-align itself so it points to the target. By default, the node - * uses its X axis as the aiming constraint. A rotation offset can be added to change - * this behavior. While the default relative orientation to the target (the X axis) is - * sufficient for the FBX cameras (with a (0,0,0) rotation vector, they are aiming - * along the X axis), this rotation offset becomes particularly useful with the lights - * objects because their default orientation (when they have a 0,0,0 rotation vector) is to - * point along the -Y axis and they need to be adjusted with a 90-degree offset on the Z axis. - * - * The FbxNode class also permits the use of node to define an Up-vector. By default, - * the node's up vector points towards the Up node. If the Up node is not specified, - * then the node's Up vector points towards the Y axis. Here too, a rotation offset can be - * added to change the default behavior. - * - * Of course, these offsets can be applied to anything, not only the cameras and lights. - * - * \note Objects in the FBX SDK are always created in the right handed, Y-Up system and need - * to be adjusted for any other axis system by explicitly convert them (the class - * FbxAxisSystem can help in that process). - * - */ - //@{ - /** The target must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTarget(FbxNode* pNode); - - /** Get the target for this node. - * \returns \c NULL if target isn't set. - */ - FbxNode* GetTarget() const; - - /** Set rotation offset from default relative orientation to target. - * \param pVector The rotation offset. - */ - void SetPostTargetRotation(FbxVector4 pVector); - - /** Get rotation offset from default relative orientation to target. - * \return The rotation offset. - */ - FbxVector4 GetPostTargetRotation() const; - - /** The target up node must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTargetUp(FbxNode* pNode); - - /** Get the target up node. - * \return \c NULL if the target up model isn't set. - */ - FbxNode* GetTargetUp() const; - - /** Set up vector offset from default relative target up vector. - * \param pVector The rotation offset. - */ - void SetTargetUpVector(FbxVector4 pVector); - - /** Get up vector offset from default relative target up vector. - * \return The up vector offset. - */ - FbxVector4 GetTargetUpVector() const; - //@} - - /** - * \name Node Display Parameters - */ - //@{ - /** Set the node Visibility value from the boolean parameter. - * \param pIsVisible Node is visible in the scene if set to \c true. - * \remarks This method checks for the validity of the property before attempting to - * set its value. In fact, the exact same result can be achieved by the following code: - * \code - * if( Visibility.IsValid() ) - * { - * Visibility.Set(FbxDouble(pIsVisible)); - * } - * \endcode - * - * \see Visibility property. - */ - void SetVisibility(bool pIsVisible); - - /** Get the current value of the Visibility property. - * \return \c false if the Visibility property value is 0.0 and \c true for any other value. - * \remarks This method expects the Visibility property to exist and to be valid. If this - * condition is not met, the returned value will be \c false. - */ - bool GetVisibility() const; - - /** \enum EShadingMode Shading modes. - * These shading modes are not directly used by the FBX SDK but it is guaranteed that the information is - * carried to and from the FBX files. The typical context of using these modes is to affect the rendering of - * geometric objects (this is, of course, performed at the application level) and the possible definition - * for each mode is: - */ - enum EShadingMode - { - eHardShading, //!< Solid geometries rendered with smooth surfaces - using the system light. - eWireFrame, //!< Geometries displayed in wire frame. - eFlatShading, //!< Solid geometries rendered faceted - using the system light. - eLightShading, //!< Solid geometries rendered with the scene lights. - eTextureShading, //!< Solid geometries rendered with smooth textured surfaces - using system light. - eFullShading //!< Solid geometries rendered with smooth textured surfaces and scene lights. - }; - - /** Set the shading mode. - * \param pShadingMode The shading mode. - */ - void SetShadingMode(EShadingMode pShadingMode); - - /** Get the shading mode. - * \return The currently set shading mode. - */ - EShadingMode GetShadingMode() const; - //@} - - /** - * \name Node Attribute Management - */ - //@{ - /** Set the node attribute. - * \param pNodeAttribute Node attribute object - * \return Pointer to previous node attribute object. - * \c NULL if the node didn't have a node attribute or if - * the new node attribute is equal to the one currently set. - * \remarks A node attribute can be shared between nodes. - * \remarks If this node has more than one attribute (added via the AddAttribute() method), this call - * will destroy all, but the default node attribute. - */ - FbxNodeAttribute* SetNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - FbxNodeAttribute* GetNodeAttribute(); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(...). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - const FbxNodeAttribute* GetNodeAttribute() const; - - //! Get the number of node attribute(s) connected to this node. - int GetNodeAttributeCount() const; - - /** Get the index, in the list of connected node attributes, of the node attribute that is set - * to be the default one. - * \return Index of the default node attribute or \c -1 if there is no default node attribute set. - */ - int GetDefaultNodeAttributeIndex() const; - - /** Set index of the default node attribute. - * \param pIndex Identifies which of the connected node attributes is becoming the default one. - * This value represent the connection number of the node. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeds or \c false if the passed index is invalid. - */ - bool SetDefaultNodeAttributeIndex(int pIndex, FbxStatus* pStatus = NULL); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - const FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex) const; - - /** Get the connection index of the specified node attribute. - * This method will do a linear search of all the connected node attributes (from the last to - * the first connection) until it finds \e pNodeAttribue. - * \param pNodeAttribute The pointer to the node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return The connection number of the node attribute or \c -1 if pNodeAttribute is \c NULL - * or not connected to this node. - */ - int GetNodeAttributeIndex(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL) const; - - /** Add the new node attribute to this node. - * If no other node attribute is already set as the default one, this new node attribute is - * automatically set as the default one. - * \param pNodeAttribute The pointer to a node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeded or \c false if the operation failed. - * \remarks The failing conditions for this methods are: - * - The received object pointer is \c NULL. - * - The received object is already connected to this node. - * - An internal error prevented the connection to successfully complete. - */ - bool AddNodeAttribute(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL); - - /** Remove the node attribute from the connection list of this node. - * \param pNodeAttribute The pointer to a node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - */ - FbxNodeAttribute* RemoveNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Remove the node attribute, specified by the connection index, from the connection - * list of this node. - * \param pIndex Index of the node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - * \remarks If the specified node attribute is also the default one, its predecessor in - * the connection list will become the new default node attribute. And if there - * are no more predecessors, the node DefaultNodeAttributeIndex is reset to -1. - */ - FbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex); - - /** Get the default node attribute casted to a FbxCachedEffect pointer. - * \return Pointer to the cached effect object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCachedEffect* GetCachedEffect(); - - /** Get the default node attribute casted to a FbxLODGroup pointer. - * \return Pointer to the lod group object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLODGroup* GetLodGroup(); - - /** Get the default node attribute casted to a FbxNull pointer. - * \return Pointer to the null object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNull* GetNull(); - - /** Get the node attribute casted to a FbxMarker pointer. - * \return Pointer to the marker object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMarker* GetMarker(); - - /** Get the node attribute casted to a FbxSkeleton pointer. - * \return Pointer to the skeleton object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSkeleton* GetSkeleton(); - - /** Get the node attribute casted to a FbxGeometry pointer. - * \return Pointer to the geometry object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - * \remarks For this method to succeed, the node attribute's GetAttributeType() must returns one of the - * following: - * - FbxNodeAttribute::eMesh - * - FbxNodeAttribute::eNurbs - * - FbxNodeAttribute::eNurbsSurface - * - FbxNodeAttribute::ePatch - * - FbxNodeAttribute::eNurbsCurve - * - FbxNodeAttribute::eBoundary - * - FbxNodeAttribute::eTrimNurbsSurface - * - FbxNodeAttribute::eSubDiv - * - FbxNodeAttribute::eLine - */ - FbxGeometry* GetGeometry(); - - /** Get the node attribute casted to a FbxMesh pointer. - * \return Pointer to the mesh object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eMesh. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMesh* GetMesh(); - - /** Get the node attribute casted to a FbxNurbs pointer. - * \return Pointer to the nurb object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbs. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbs* GetNurbs(); - - /** Get the node attribute casted to a FbxNurbsSurface pointer. - * \return Pointer to the nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Get the node attribute casted to a FbxNurbsCurve pointer. - * \return Pointer to the nurbs curve object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsCurve. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsCurve* GetNurbsCurve(); - - /** Get the node attribute casted to a FbxLine pointer. - * \return Pointer to the line object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eLine. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLine* GetLine(); - - /** Get the node attribute casted to a FbxTrimNurbsSurface pointer. - * \return Pointer to the trim nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eTrimNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxTrimNurbsSurface* GetTrimNurbsSurface(); - - /** Get the node attribute casted to a FbxSubDiv pointer. - * \return Pointer to the subdivision surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eSubDiv. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSubDiv* GetSubdiv(); - - /** Get the node attribute casted to a FbxPatch pointer. - * \return Pointer to the patch object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::ePatch. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxPatch* GetPatch(); - - /** Get the node attribute casted to a FbxCamera pointer. - * \return Pointer to the camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCamera* GetCamera(); - const FbxCamera* GetCamera() const; - - /** Get the node attribute casted to a FbxCameraStereo pointer. - * \return Pointer to the stereo camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraStereo* GetCameraStereo(); - - /** Get the node attribute casted to a FbxCameraSwitcher pointer. - * \return Pointer to the camera switcher object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraSwitcher* GetCameraSwitcher(); - - /** Get the node attribute casted to a FbxLight pointer. - * \return Pointer to the light object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLight* GetLight(); - const FbxLight* GetLight() const; - - /** Get the node attribute casted to a FbxOpticalReference pointer. - * \return Pointer to the optical reference object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxOpticalReference* GetOpticalReference(); - //@} - - /** - * \name Transformation propagation - * This set of functions provides direct access to the transformation propagations settings - * of the FbxNode. These settings determine how transformations must be applied when - * evaluating a node's transformation matrix. The possible values are: - * - eInheritRrSs : Scaling of parent is applied in the child world after the local child rotation. - * - eInheritRSrs : Scaling of parent is applied in the parent world. - * - eInheritRrs : Scaling of parent does not affect the scaling of children. - */ - //@{ - /** Sets how child transforms are inherited from parent transforms. - * \param pInheritType One of the following values eInheritRrSs, eInheritRSrs or eInheritRrs - */ - void SetTransformationInheritType(FbxTransform::EInheritType pInheritType); - - //! Get transformation inherit type. - void GetTransformationInheritType(FbxTransform::EInheritType& pInheritType) const; - //@} - - /** - * \name Pivot Management - * Pivots are used to specify translation, rotation and scaling centers in coordinates - * relative to a node's origin. - * A node has two pivot contexts defined by the EPivotSet enumeration. The node's animation - * data can be converted from one pivot context to the other. Each context can be set to be - * either active or passive (reference). By default the two pivot contexts are passive. They - * need to be active to be processed during the evaluation of the node final transformation - * matrix. In its passive state, a pivot context can still be accessed to retrieve its content - * for any other required purpose. Each pivot context stores values (as FbxVector4) for: - * \code - * - Rotation offset (Roff) - * - Rotation pivot (Rp) - * - Pre-rotation (Rpre) - * - Post-rotation (Rpost) - * - Scaling offset (Soff) - * - Scaling pivot (Sp) - * - Geometric translation (Gt) - * - Geometric rotation (Gr) - * - Geometric scaling (Gs) - * - * These values combine in the matrix form to compute the World transform of the node - * using the formula: - * - * World = ParentWorld * T * Roff * Rp * Rpre * R * Rpost * Rp-1 * Soff * Sp * S * Sp-1 - * \endcode - * - * The geometric transformation (Gt * Gr * Gs) is applied only to the node attribute and after - * the node transformations. This transformation is not inherited across the node hierarchy. - * - * \note Please refer to the FBX SDK programmers guide for more details. - * - * The application of the pivots is performed by calling the method ConvertPivotAnimationRecursive(). Typically, - * you set-up the eDestinationPivot context to match what your system can directly support and leave at (0,0,0) the - * attributes that are not supported by your system. When the values of a specific attribute in the - * two contexts (source and destination) are identical, the system considers that no adjustment is - * required because the attribute is directly supported in the destination world. - * - * Below is an example of code that shows how the pivot information could be setup before calling ConvertPivotAnimationRecursive(). - * \code - * FbxVector4 lZero(0,0,0); - * FbxVector4 lOne(1,1,1); - * pNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - * pNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - * - * EFbxRotationOrder lRotationOrder; - * pNode->GetRotationOrder(FbxNode::eSourcePivot , lRotationOrder); - * pNode->SetRotationOrder(FbxNode::eDestinationPivot , lRotationOrder); - * - * //For cameras and lights (without targets) let's compensate the postrotation. - * if( pNode->GetCamera() || pNode->GetLight() ) - * { - * if( !pNode->GetTarget() ) - * { - * FbxVector4 lRV(90, 0, 0); - * if( pNode->GetCamera() ) - * lRV.Set(0, 90, 0); - * - * FbxVector4 prV = pNode->GetPostRotation(FbxNode::eSourcePivot); - * FbxAMatrix lSourceR; - * FbxAMatrix lR(lZero, lRV, lOne); - * FbxVector4 res = prV; - * - * // Rotation order don't affect post rotation, so just use the default XYZ order - * FbxRotationOrder rOrder; - * rOrder.V2M(lSourceR, res); - * - * lR = lSourceR * lR; - * rOrder.M2V(res, lR); - * prV = res; - * pNode->SetPostRotation(FbxNode::eSourcePivot, prV); - * pNode->SetRotationActive(true); - * } - * - * // Point light do not need to be adjusted (since they radiate in all the directions). - * if( pNode->GetLight() && pNode->GetLight()->LightType.Get() == FbxLight::ePoint ) - * { - * pNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0,0,0,0)); - * } - * } - * // apply Pre rotations only on bones / end of chains - * if( pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorFK) - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorIK) ) - * { - * if( pNode->GetRotationActive() ) - * { - * pNode->SetPreRotation(FbxNode::eDestinationPivot, pNode->GetPreRotation(FbxNode::eSourcePivot)); - * } - * - * // No pivots on bones - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetRotationOffset(FbxNode::eDestinationPivot,lZero); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, lZero); - * } - * else - * { - * // any other type: no pre-rotation support but... - * pNode->SetPreRotation(FbxNode::eDestinationPivot, lZero); - * - * // support for rotation and scaling pivots. - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, pNode->GetRotationPivot(FbxNode::eSourcePivot)); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, pNode->GetScalingPivot(FbxNode::eSourcePivot)); - * // Rotation and scaling offset are supported - * pNode->SetRotationOffset(FbxNode::eDestinationPivot, pNode->GetRotationOffset(FbxNode::eSourcePivot)); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, pNode->GetScalingOffset(FbxNode::eSourcePivot)); - * // - * // If we don't "support" scaling pivots, we can simply do: - * // pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * // pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * } - * \endcode - * - */ - //@{ - /** \enum EPivotSet Pivot context identifier. - */ - enum EPivotSet - { - eSourcePivot, //!< The source pivot context. - eDestinationPivot //!< The destination pivot context. - }; - - /** \enum EPivotState Pivot context state. - */ - enum EPivotState - { - ePivotActive, //!< The pivot context with this state is affecting the node's transform computation. - ePivotReference //!< The pivot context with this state is not used during the node transform computation but can be accessed for reference purposes. - }; - - /** Change the state of the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pPivotState The new state of the pivot context. - */ - void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState); - - /** Get the pivot context state. - * The returned value tells if this pivot context is used in the - * evaluation of the node transform or not. - * \param pPivotSet Specify which pivot context is queried. - * \param pPivotState The current state of the pivot set. - */ - void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const; - - /** Set rotation space - * Determine the rotation space (Euler or Spheric) and the rotation order. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pRotationOrder The new value for the pivot rotation order. - */ - void SetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder pRotationOrder); - - /** Get rotation order - * \param pPivotSet Specify which pivot context is queried. - * \param pRotationOrder The current value of the pivot rotation order. - */ - void GetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder& pRotationOrder) const; - - /** Set rotation space for limit only. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pUseForLimitOnly When set to \c true, the current rotation space - * (set with SetRotationOrder) define the rotation space for - * the limit only; leaving the rotation animation in - * Euler XYZ space. When set to \c false, the current rotation - * space defines the rotation space for both the limits and the - * rotation animation data. - */ - void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly); - - /** Get rotation space for limit only. - * \param pPivotSet Specify which pivot context is queried. - * \return The current rotation space limit flag value. - */ - bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const; - - /** Set the RotationActive state. - * \param pVal The new state of the property. - * \remarks When this flag is set to false, the RotationOrder, the Pre/Post rotation values - * and the rotation limits should be ignored. - */ - void SetRotationActive(bool pVal); - - /** Get the RotationActive state. - * \return The value of the RotationActive flag. - */ - bool GetRotationActive() const; - - /** Specify which Quaternion interpolation mode is used on the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pQuatIterp The new value. - * \remarks When the \e pPivotSet is eSourcePivot, this method also updates the value of the - * QuaternionInterpolate property. - */ - void SetQuaternionInterpolation(EPivotSet pPivotSet, EFbxQuatInterpMode pQuatIterp); - - /** Get the Quaternion interpolation mode of the pivot context. - * \param pPivotSet Specify which pivot context is queried. - * \return The current mode set on the pivot context. - */ - EFbxQuatInterpMode GetQuaternionInterpolation(EPivotSet pPivotSet) const; - - /** Set the rotation stiffness. - * The stiffness attribute is used by IK solvers to generate a resistance - * to a joint motion. The higher the stiffness the less it will rotate. - * Stiffness works in a relative sense: it determines the willingness of - * this joint to rotate with respect to the other joint in the IK chain. - * \param pRotationStiffness The rotation stiffness values are limited to - * the range [0, 100]. - */ - void SetRotationStiffness(FbxVector4 pRotationStiffness); - - /** Get the rotation stiffness - * \return The currently set rotation stiffness values. - */ - FbxVector4 GetRotationStiffness() const; - - /** Set the minimum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampRange specifies when the - * deceleration should start. - * \param pMinDampRange Angle, in degrees, where deceleration should start - */ - void SetMinDampRange(FbxVector4 pMinDampRange); - - /** Get the minimum damp range angles - * \return The currently set minimum damp range angles. - */ - FbxVector4 GetMinDampRange() const; - - /** Set the maximum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampRange specifies when the - * deceleration should start. - * \param pMaxDampRange Angle, in degrees, where deceleration should start - */ - void SetMaxDampRange(FbxVector4 pMaxDampRange); - - /** Get the maximum damp range angles - * \return The currently set maximum damp range angles. - */ - FbxVector4 GetMaxDampRange() const; - - /** Set the minimum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampStrength defines the - * rate of deceleration. - * \param pMinDampStrength Values are limited to the range [0, 100]. - */ - void SetMinDampStrength(FbxVector4 pMinDampStrength); - - /** Get the minimum damp strength - * \return The currently set minimum damp strength values. - */ - FbxVector4 GetMinDampStrength() const; - - /** Set the maximum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampStrength defines the - * rate of deceleration. - * \param pMaxDampStrength Values are limited to the range [0, 100]. - */ - void SetMaxDampStrength(FbxVector4 pMaxDampStrength); - - /** Get the maximum damp strength - * \return The currently set maximum damp strength values. - */ - FbxVector4 GetMaxDampStrength() const; - - /** Set the preferred angle. - * The preferredAngle attribute defines the initial joint configuration used - * by a single chain IK solver to calculate the inverse kinematic solution. - * \param pPreferedAngle Angle in degrees - */ - void SetPreferedAngle(FbxVector4 pPreferedAngle); - - /** Get the preferred angle - * \return The currently set preferred angle. - */ - FbxVector4 GetPreferedAngle() const; - - /** Set a translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationOffset(EPivotSet pPivotSet) const; - - /** Set rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the rotation pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationPivot(EPivotSet pPivotSet) const; - - /** Set pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPreRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPreRotation(EPivotSet pPivotSet) const; - - /** Set post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPostRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPostRotation(EPivotSet pPivotSet) const; - - /** Set a translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingOffset(EPivotSet pPivotSet) const; - - /** Set scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the scaling pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingPivot(EPivotSet pPivotSet) const; - - /** Set geometric translation - * The geometric translation is a local translation that is applied - * to a node attribute only. This translation is applied to the node attribute - * after the node transformations. This translation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X, Y, and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricTranslation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric translation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric translation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const; - - /** Set geometric rotation - * The geometric rotation is a local rotation that is applied - * to a node attribute only. This rotation is applied to the node attribute - * after the node transformations. This rotation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z rotation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric rotation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric rotation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const; - - /** Set geometric scaling - * The geometric scaling is a local scaling that is applied - * to a node attribute only. This scaling is applied to the node attribute - * after the node transformations. This scaling is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z scale values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricScaling(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric scaling - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric scaling (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const; - - /** Reset a pivot set to the default pivot context. - * If the node has a geometry, reset the geometry's pivot to the identity matrix. - * \param pPivotSet Pivot set to reset. - * \remarks The default pivot context is a context with all the vector attributes - * set to (0,0,0) except the GeometricScaling attribute that is reset to (1,1,1). - */ - void ResetPivotSet( FbxNode::EPivotSet pPivotSet ); - - /** Fully supports all the attributes defined in the pivot sets and can process animation data defined on different animation - * stacks. - * \param pAnimStack The animation stack on which the conversion will take place. If equals \c NULL, convert the animation on all the animation stacks. - * \param pConversionTarget If set to EPivotSet::eDestinationPivot, - * convert animation data from the EPivotSet::eSourcePivot pivot context - * to the EPivotSet::eDestinationPivot pivot context. Otherwise, the - * conversion is computed the other way around. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \remarks Due to the intrinsic properties of the mathematical operations performed, - * sometimes, it is necessary to resample animation curves to maintain the accurate - * conversion. When this resampling is required, the method will use the \e pFrameRate - * value to specify the number of samples. To avoid a huge number of keys in the animation - * curves, a constant key reducer filter (FbxKFCurveFilterConstantKeyReducer) is - * automatically applied to all the affected curves to remove as much consecutive keys - * that have the same value. This filter is private and its settings cannot be changed. - * It is possible that, after the filtering pass, the animations curves do not contain keys - * anymore. This is a normal result and does not affect the overall results. - * \note Although it is possible to call this method several times with a different - * AnimStack name, users must be aware that some pivot computation can irreversibly - * modify the geometric nodes with a cumulative effect of the \e GeometricTranslation, - * \e GeometricRotation and \e GeometricScaling which will produce undesirable results. It is recommended - * to call ConvertPivotAnimationRecursive with \p pAnimStackName = NULL and let the method convert - * the animation on all the Anim stacks at once. - * In the case when there are no geometric nodes in the scene tree, specifying the animation stack - * is safe and somewhat faster. - * If any transform limits are active, they are applied during the conversion and disabled. - */ - void ConvertPivotAnimationRecursive(FbxAnimStack* pAnimStack, EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true); - - /** Reset all the pivot sets to the default pivot context and convert the animation. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \param pToNodeCenter: Reset pivots to node center if \c true, or retain pivot places if \c false. - * \param pForceResetLimits If \c true, this flag will reset all the Translation, Rotation and Scaling - * limits and clears the enabled flags. - * \remarks The resulting animation will be visually equivalent and all the pivots will be cleared. - * The conversion is performed on all animation stacks. - * \remarks Will recursively convert the animation of all the children nodes. - * \remarks The \e pForceResetLimits flag has a destructive behavior and should be used only in very - * limited cases where the values of the limits are not required after the call to this method. - * \remarks Currently, this function just works under RSrs inherit type if pToNodeCenter is set to \c false. - */ - void ResetPivotSetAndConvertAnimation(double pFrameRate=30.0, bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits=false); - - /** Set rotation pivot as node center recursively - * \param pParentGeometricOffset Offset vector to be applied. - */ - void SetRotationPivotAsCenterRecursive(FbxVector4 pParentGeometricOffset=FbxVector4()); - //@} - - /** - * \name Node Evaluation Functions - */ - //@{ - /** Retrieve the proper animation evaluator to use for this node. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Returns this node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeGlobalTransform(). - */ - FbxAMatrix& EvaluateGlobalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). - * This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTransform(). - */ - FbxAMatrix& EvaluateLocalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTranslation(). - */ - FbxVector4& EvaluateLocalTranslation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalRotation(). - */ - FbxVector4& EvaluateLocalRotation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalScaling(). - */ - FbxVector4& EvaluateLocalScaling(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Compute the node's bounding box and its center in global coordinates. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool EvaluateGlobalBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Compute closest ray intersection point with mesh attributes of this node (triangle meshes only!). - * \param pOut The closest intersection point from pRayOrigin location in pRayDir direction. Variable is unchanged if return value is \c false. - * \param pRayOrigin The origin location to cast the ray from. - * \param pRayDir The direction the cast ray to test mesh triangles from. - * \param pCulling If \c true, only test triangles that are front facing, otherwise test both sides. - * \param pTime The time to use to evaluate mesh deformations. - * \return \c true if a triangle intersect with the ray, otherwise \c false. - * \remark This function will automatically fail if the node's meshes are not triangulated. */ - bool EvaluateRayIntersectionPoint(FbxVector4& pOut, const FbxVector4& pRayOrigin, const FbxVector4& pRayDir, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - - /** - * \name Character Link - */ - //@{ - /** Get number of character links. - * \return The number of character links. - */ - int GetCharacterLinkCount() const; - - /** Get character link at given index. - * \param pIndex Index of character link. - * \param pCharacter Pointer to receive linked character if function succeeds. - * \param pCharacterLinkType Pointer to receive character link type if function succeeds, - * cast to \c FbxCharacterLink::Type. - * \param pNodeId Pointer to receive the node ID if function succeeds. This ID should be casted - * to \c FbxCharacter::ENodeId type when the character link type is \c eCharacterLink or - * \c eControlSetLink else to the \c FbxEffector::ENodeId type if the character link type is - * \c eControlSetEffector or \c eControlSetEffectorAux. - * \param pNodeSubId For internal use. - * \return \c false if the index is out of range or any of the pointer arguments is NULL. - */ - bool GetCharacterLink(int pIndex, FbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int* pNodeSubId); - - /** Looks if the given character link exists on this node. - * \param pCharacter Character searched. - * \param pCharacterLinkType Character link type searched. Its value must be one of - * the \c FbxCharacterLink::Type symbols.. - * \param pNodeId Node ID searched. If \e pCharacterLinkType is \c eCharacterLink or \c eControlSetLink - * the \e pNodeId value is casted to the \c FbxCharacter::ENodeId type. If the \e pCharacterLinkType - * is \c eControlSetEffector or \c eControlSetEffectorAux then the \e pNodeId is casted to the - * \c FbxEffector::ENodeId type. - * \param pNodeSubId For internal use. - * \return Index of found character link if it exists, -1 otherwise. - */ - int FindCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const; - //@} - - /** Find out start and end time of the animation curves for this node (and its children). - * \param pInterval This node's animation interval. - * \param pAnimStack Animation stack where to retrieve animation curves. - * \param pAnimLayerId Specific animation layer on the animStack to use. - * \return \c true if the node (or its children) is animated, \c false otherwise. - * \remarks If pAnimStack is left NULL, the function will try to get the first AnimStack that is connected - * to the scene. \e pAnimLayerId represent the index of the connection. For example, the call: - * \code - * lNode->GetAnimationInterval(span, myStack, 3); - * \endcode - * will scan all the animation curves of this node, and it's children, that are defined on the third - * animation layer of \c myStack. - */ - bool GetAnimationInterval(FbxTimeSpan& pInterval, FbxAnimStack* pAnimStack=NULL, int pAnimLayerId=0); - - /** - * \name Material Management - */ - //@{ - /** Add a material to this node. - * \param pMaterial The material to add. - * \return non-negative index of added material, or -1 on error. - */ - int AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove a material from this node. - * \param pMaterial The material to remove. - * \return true on success, false otherwise - */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - - /** - * \return The number of materials applied to this node. - * \remarks If this node has an instanced node attribute, it is possible - * to have a material applied to this node more than once. The material - * count may not reflect the distinct material count. - */ - int GetMaterialCount() const; - - /** Access a material on this node. - * \param pIndex Valid range is [0, GetMaterialCount() - 1] - * \return The pIndex-th material, or NULL if pIndex is invalid. - */ - FbxSurfaceMaterial* GetMaterial(int pIndex) const; - - /** Remove all materials applied to this node. - */ - void RemoveAllMaterials(); - - /** Find an applied material with the given name. - * \param pName The requested name - * \return an index to a material, or -1 if no applied material - * has the requested name. - */ - int GetMaterialIndex(const char* pName) const; - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the translation information of the node - * - * To access this property do: LclTranslation.Get(). - * To set this property do: LclTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclTranslation; - - /** This property contains the rotation information of the node - * - * To access this property do: LclRotation.Get(). - * To set this property do: LclRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclRotation; - - /** This property contains the scaling information of the node - * - * To access this property do: LclScaling.Get(). - * To set this property do: LclScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT LclScaling; - - /** This property contains the visibility information of the node. - * The assumed behavior of this property is to affect the visibility of the node, all the - * nodes attributes connected to it as well as all its descendants. This property can be - * animated. - * - * To access this property do: Visibility.Get(). - * To set this property do: Visibility.Set(FbxDouble). - * - * Default value is 1. - * \remarks \li This property holds values ranging from 0.0 to 1.0 where the value 0.0 means - * a totally invisible object, the value 1.0, a full visible object and anything inbetween, a - * percentage degree of visibility.\n - * - * \li Since not all the applications may support a degree of visibility, it is agreed that - * a value of 0.0 means invisible and anything else means visible. - * - * \see Show property. - */ - FbxPropertyT Visibility; - - /** This property contains the visibility inheritance flag that allow applications to modify - * the Visibility property interpretation. By default, this value is set to \c true because it is - * assumed (as explained in the Visibility property description) that the node visibility is inherited - * from its parent. In other words, applications should always process the Visibility property of the - * node and, depending on its value, decide whether or not the node has to be displayed. After - * this first assessment, check the node VisibilityInheritance flag. If its value is set to \c false then - * move to the next object, else use the parent's Visibility value and modify this node display state - * by performing the logical AND operation between this node Visibility property and its parent's. - * - * To access this property do: VisibilityInheritance.Get(). - * To set this property do: VisibilityInheritance.Set(FbxBool). - * - * Default value is \c true. - * \remarks This property is non-animatable and is not used inside the FBX SDK but it is guaranteed - * to exist in FBX files with version 7.2 and above. - * \see Visibility property. - */ - FbxPropertyT VisibilityInheritance; - - - /** This property contains the quaternion interpolate flag of the node - * - * To access this property do: QuaternionInterpolate.Get(). - * To set this property do: QuaternionInterpolate.Set(EFbxQuatInterpMode). - * - * Default value is eQuatInterpOff. - */ - FbxPropertyT QuaternionInterpolate; - - /** This property contains the rotation offset information of the node - * - * To access this property do: RotationOffset.Get(). - * To set this property do: RotationOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationOffset; - - /** This property contains the rotation pivot information of the node - * - * To access this property do: RotationPivot.Get(). - * To set this property do: RotationPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationPivot; - - /** This property contains the scaling offset information of the node - * - * To access this property do: ScalingOffset.Get(). - * To set this property do: ScalingOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingOffset; - - /** This property contains the scaling pivot information of the node - * - * To access this property do: ScalingPivot.Get(). - * To set this property do: ScalingPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingPivot; - - /** This property enables or disables the limit on translation. - * When set to \c false the object can translate in any direction without limitations. - * Else the - * \ref TranslationMinX, \ref TranslationMinY, \ref TranslationMinZ, - * \ref TranslationMaxX, \ref TranslationMaxY and \ref TranslationMaxZ flags are used to - * limit the translation on each individual axis. - * - * To access this property do: TranslationActive.Get(). - * To set this property do: TranslationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationActive; - - /** This property sets the minimum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMin.Get(). - * To set this property do: TranslationMin.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMin; - - /** This property sets the maximum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMax.Get(). - * To set this property do: TranslationMax.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMax; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinX.Get(). - * To set this property do: TranslationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinY.Get(). - * To set this property do: TranslationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinY; - - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinZ.Get(). - * To set this property do: TranslationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinZ; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxX.Get(). - * To set this property do: TranslationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxY.Get(). - * To set this property do: TranslationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxY; - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxZ.Get(). - * To set this property do: TranslationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxZ; - - /** This property contains the rotation order information of the node - * - * To access this property do: RotationOrder.Get(). - * To set this property do: RotationOrder.Set(EFbxRotationOrder). - * Default value is eEulerXYZ. - * - */ - FbxPropertyT RotationOrder; - - /** This property contains the rotation space for limit only flag of the node. - * When set to \c true, the Rotation space is applied only on the limit data (provided the \ref RotationActive is - * also \c true). - * - * To access this property do: RotationSpaceForLimitOnly.Get(). - * To set this property do: RotationSpaceForLimitOnly.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationSpaceForLimitOnly; - - /** This property contains the x value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessX.Get(). - * To set this property do: RotationStiffnessX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessX; - - /** This property contains the y value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessY.Get(). - * To set this property do: RotationStiffnessY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessY; - - /** This property contains the z value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessZ.Get(). - * To set this property do: RotationStiffnessZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessZ; - - /** This property contains axis length information of the node - * - * To access this property do: AxisLen.Get(). - * To set this property do: AxisLen.Set(FbxDouble). - * - * Default value is 10. - */ - FbxPropertyT AxisLen; - - /** This property contains pre-rotation information of the node - * - * To access this property do: PreRotation.Get(). - * To set this property do: PreRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PreRotation; - - /** This property contains post-rotation information of the node - * - * To access this property do: PostRotation.Get(). - * To set this property do: PostRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PostRotation; - - /** This property enables or disables the limit on rotation. - * When set to \c false the object can rotate in any direction without limitations. - * Else the - * \ref RotationMinX, \ref RotationMinY, \ref RotationMinZ, - * \ref RotationMaxX, \ref RotationMaxY and \ref RotationMaxZ flags are used to - * limit the rotation on each individual axis. - * \remarks The PreRotation value is applied before the limit, while the PostRotation is applied - * after the limit. - * - * To access this property do: RotationActive.Get(). - * To set this property do: RotationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationActive; - - /** This property sets the minimum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMin.Get(). - * To set this property do: RotationMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMin; - - /** This property sets the maximum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMax.Get(). - * To set this property do: RotationMax.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMax; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinX.Get(). - * To set this property do: RotationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinY.Get(). - * To set this property do: RotationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinZ.Get(). - * To set this property do: RotationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinZ; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxX.Get(). - * To set this property do: RotationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxY.Get(). - * To set this property do: RotationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxZ.Get(). - * To set this property do: RotationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxZ; - - /** This property contains inherit type information of the node - * - * To access this property do: InheritType.Get(). - * To set this property do: InheritType.Set(FbxTransform::EInheritType). - * - * Default value is eInheritRrSs. - */ - FbxPropertyT InheritType; - - /** This property enables or disables the limit on scaling. - * When set to \c false the object can scale in any direction without limitations. - * Else the - * \ref ScalingMinX, \ref ScalingMinY, \ref ScalingMinZ, - * \ref ScalingMaxX, \ref ScalingMaxY and \ref ScalingMaxZ flags are used to - * limit the scaling on each individual axis. - * - * To access this property do: ScalingActive.Get(). - * To set this property do: ScalingActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingActive; - - /** This property sets the minimum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMin.Get(). - * To set this property do: ScalingMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingMin; - - /** This property sets the maximum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMax.Get(). - * To set this property do: ScalingMax.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT ScalingMax; - - /** This property activates or disables the limit on scaling X. When active, the object scaling - * is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinX.Get(). - * To set this property do: ScalingMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinY.Get(). - * To set this property do: ScalingMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinZ.Get(). - * To set this property do: ScalingMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinZ; - - /** This property enables or disables the limit on scaling X. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxX.Get(). - * To set this property do: ScalingMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxY.Get(). - * To set this property do: ScalingMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxZ.Get(). - * To set this property do: ScalingMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxZ; - - /** This property contains geometric translation information of the node - * - * To access this property do: GeometricTranslation.Get(). - * To set this property do: GeometricTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricTranslation; - - /** This property contains geometric rotation information of the node - * - * To access this property do: GeometricRotation.Get(). - * To set this property do: GeometricRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricRotation; - - /** This property contains geometric scaling information of the node - * - * To access this property do: GeometricScaling.Get(). - * To set this property do: GeometricScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT GeometricScaling; - - // IK Settings - ////////////////////////////////////////////////////////// - - /** This property contains the x component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeX.Get(). - * To set this property do: MinDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeX; - - /** This property contains the y component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeY.Get(). - * To set this property do: MinDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeY; - - /** This property contains the z component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeZ.Get(). - * To set this property do: MinDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeZ; - - /** This property contains the x component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeX.Get(). - * To set this property do: MaxDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeX; - - /** This property contains the y component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeY.Get(). - * To set this property do: MaxDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeY; - - /** This property contains the z component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeZ.Get(). - * To set this property do: MaxDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeZ; - - /** This property contains the x component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthX.Get(). - * To set this property do: MinDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthX; - - /** This property contains the y component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthY.Get(). - * To set this property do: MinDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthY; - - /** This property contains the z component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthZ.Get(). - * To set this property do: MinDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthZ; - - /** This property contains the x component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthX.Get(). - * To set this property do: MaxDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthX; - - /** This property contains the y component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthY.Get(). - * To set this property do: MaxDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthY; - - /** This property contains the z component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthZ.Get(). - * To set this property do: MaxDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthZ; - - /** This property contains the x component of the preferred angle of the node - * - * To access this property do: PreferedAngleX.Get(). - * To set this property do: PreferedAngleX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleX; - - /** This property contains the y component of the preferred angle of the node - * - * To access this property do: PreferedAngleY.Get(). - * To set this property do: PreferedAngleY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleY; - - /** This property contains the z component of the preferred angle of the node - * - * To access this property do: PreferedAngleZ.Get(). - * To set this property do: PreferedAngleZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleZ; - - /////////////////////////////////////////////////////// - - /** This property contains lookat property of the node - * - * To access this property do: LookAtProperty.Get(). - * To set this property do: LookAtProperty.Set(FbxReference). - * - */ - FbxPropertyT LookAtProperty; - - /** This property contains the up vector property of the node - * - * To access this property do: UpVectorProperty.Get(). - * To set this property do: UpVectorProperty.Set(FbxReference). - * - */ - FbxPropertyT UpVectorProperty; - - /** This property contains the show information of the node. - * As opposed to the Visibility property, this one cannot be animated. The assumed behavior of - * this property is to represent the show/hide state of all the nodes attributes connected to this - * node only. - * - * To access this property do: Show.Get(). - * To set this property do: Show.Set(FbxBool). - * - * Default value is true. - * - * \remarks \li Because node attributes can be shared by multiple nodes (instances), the FBX SDK provides an utility - * function FbxScene::SyncShowPropertyForInstance() to propagates the same Show value across all the nodes - * referencing the node attribute. The applied logic is that as soon as one of these nodes has the Show - * property set to \c false, all will be set to \c false (basically it is an AND operation on all the - * Show flags). - * - * \li Depending on the support of the Show and Visibility properties that applications will implement, there - * may be conflicts with these two states. In this case, it is suggested that the Visibility property - * always overrides the Show. - * - * \see Visibility property. - */ - FbxPropertyT Show; - - /** This property contains negative percent shape support information of the node - * - * To access this property do: NegativePercentShapeSupport.Get(). - * To set this property do: NegativePercentShapeSupport.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT NegativePercentShapeSupport; - - /** This property contains default attribute index information of the node - * - * To access this property do: DefaultAttributeIndex.Get(). - * To set this property do: DefaultAttributeIndex.Set(FbxInt). - * - * Default value is -1. - */ - FbxPropertyT DefaultAttributeIndex; - - /** This property contains manipulation state information of the node - * - * To access this property do: Freeze.Get(). - * To set this property do: Freeze.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Freeze; - - /** This property contains level of detail mode information of the node - * - * To access this property do: LODBox.Get(). - * To set this property do: LODBox.Set(FbxBool). - * - * True: Bounding box - * False: Geometry object is displayed. - * Default value is false. - */ - FbxPropertyT LODBox; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - class FBXSDK_DLL Pivot - { - public: - static const FbxVector4 sZeroVector; - static const FbxVector4 sOneVector; - - Pivot() - { - mRotationOffset = NULL; - mRotationPivot = NULL; - mPreRotation = NULL; - mPostRotation = NULL; - mScalingOffset = NULL; - mScalingPivot = NULL; - mGeometricTranslation = NULL; - mGeometricRotation = NULL; - mGeometricScaling = NULL; - Reset(); - } - ~Pivot() { Reset(); } - - void Reset() - { - FBX_SAFE_DELETE(mRotationOffset); - FBX_SAFE_DELETE(mRotationPivot); - FBX_SAFE_DELETE(mPreRotation); - FBX_SAFE_DELETE(mPostRotation); - FBX_SAFE_DELETE(mScalingOffset); - FBX_SAFE_DELETE(mScalingPivot); - FBX_SAFE_DELETE(mGeometricTranslation); - FBX_SAFE_DELETE(mGeometricRotation); - FBX_SAFE_DELETE(mGeometricScaling); - mRotationOrder = eEulerXYZ; - mRotationSpaceForLimitOnly = false; - mPivotState = FbxNode::ePivotReference; - mQuaternionInterpolate = eQuatInterpOff; - } - - inline const FbxVector4& GetRotationOffset() const { return (mRotationOffset) ? *mRotationOffset : sZeroVector; } - inline void SetRotationOffset(const FbxVector4& pV) - { - if( !mRotationOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationOffset = pV; - } - } - - inline const FbxVector4& GetRotationPivot() const { return (mRotationPivot) ? *mRotationPivot : sZeroVector; } - inline void SetRotationPivot(const FbxVector4& pV) - { - if( !mRotationPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationPivot = pV; - } - } - - inline const FbxVector4& GetPreRotation() const { return (mPreRotation) ? *mPreRotation : sZeroVector; } - inline void SetPreRotation(const FbxVector4& pV) - { - if( !mPreRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPreRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPreRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPreRotation = pV; - } - } - - inline const FbxVector4& GetPostRotation() const { return (mPostRotation) ? *mPostRotation : sZeroVector; } - inline void SetPostRotation(const FbxVector4& pV) - { - if( !mPostRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPostRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPostRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPostRotation = pV; - } - } - - inline const FbxVector4& GetScalingOffset() const { return (mScalingOffset) ? *mScalingOffset : sZeroVector; } - inline void SetScalingOffset(const FbxVector4& pV) - { - if( !mScalingOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingOffset = pV; - } - } - - inline const FbxVector4& GetScalingPivot() const { return (mScalingPivot) ? *mScalingPivot : sZeroVector; } - inline void SetScalingPivot(const FbxVector4& pV) - { - if( !mScalingPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingPivot = pV; - } - } - - inline const FbxVector4& GetGeometricTranslation() const { return (mGeometricTranslation) ? *mGeometricTranslation : sZeroVector; } - inline void SetGeometricTranslation(const FbxVector4& pV) - { - if( !mGeometricTranslation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricTranslation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricTranslation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricTranslation = pV; - } - } - - inline const FbxVector4& GetGeometricRotation() const { return (mGeometricRotation) ? *mGeometricRotation : sZeroVector; } - inline void SetGeometricRotation(const FbxVector4& pV) - { - if( !mGeometricRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricRotation = pV; - } - } - - inline const FbxVector4& GetGeometricScaling() const { return (mGeometricScaling) ? *mGeometricScaling : sOneVector; } - inline void SetGeometricScaling(const FbxVector4& pV) - { - if( !mGeometricScaling ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricScaling = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricScaling = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricScaling = pV; - } - } - - inline EFbxRotationOrder GetRotationOrder() const { return mRotationOrder; } - inline void SetRotationOrder(EFbxRotationOrder pROrder) { mRotationOrder = pROrder; } - inline bool GetRotationSpaceForLimitOnly() const { return mRotationSpaceForLimitOnly; } - inline void SetRotationSpaceForLimitOnly(bool pVal) { mRotationSpaceForLimitOnly = pVal; } - inline EFbxQuatInterpMode GetQuaternionInterpolate() const { return mQuaternionInterpolate; } - inline void SetQuaternionInterpolate(EFbxQuatInterpMode pVal) { mQuaternionInterpolate = pVal; } - inline FbxNode::EPivotState GetPivotState() const { return mPivotState; } - inline void SetPivotState(FbxNode::EPivotState pVal) { mPivotState = pVal; } - - private: - FbxVector4* mRotationOffset; - FbxVector4* mRotationPivot; - FbxVector4* mPreRotation; - FbxVector4* mPostRotation; - FbxVector4* mScalingOffset; - FbxVector4* mScalingPivot; - FbxVector4* mGeometricTranslation; - FbxVector4* mGeometricRotation; - FbxVector4* mGeometricScaling; - EFbxRotationOrder mRotationOrder; - bool mRotationSpaceForLimitOnly; - EFbxQuatInterpMode mQuaternionInterpolate; - FbxNode::EPivotState mPivotState; - }; - - class FBXSDK_DLL Pivots - { - public: - Pivots() - { - for( int i = 0; i < 2; i++ ) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - mPivot[i] = NULL; - } - } - - ~Pivots() - { - FbxDelete(mPivot[0]); - FbxDelete(mPivot[1]); - } - - Pivot& Get(int id) - { - FBX_ASSERT(id == 0 || id == 1); - if (mPivot[id] == NULL && mIsDefault[id]) - { - smDefaultPivot.SetPivotState(mPivotState[id]); - return smDefaultPivot; - } - - if (!mPivot[id]) - mPivot[id] = FbxNew< Pivot >(); - - FBX_ASSERT(mPivot[id] != NULL); - if (mPivot[id]) - mPivot[id]->SetPivotState(mPivotState[id]); - - return *mPivot[id]; - } - - #define MACRO_PIVOT_VECTOR_FCTS(name, defVect) \ - inline const FbxVector4& Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, const FbxVector4& pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - if (mIsDefault[id] && pV[0] == defVect[0] && pV[1] == defVect[1] && pV[2] == defVect[2]) return; \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_VECTOR_FCTS(RotationOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(RotationPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PreRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PostRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricTranslation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricScaling, Pivot::sOneVector); - - #define MACRO_PIVOT_BOOL_FCTS(name) \ - inline bool Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, bool pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_BOOL_FCTS(RotationSpaceForLimitOnly); - - inline EFbxQuatInterpMode GetQuaternionInterpolate(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetQuaternionInterpolate(); - } - - inline void SetQuaternionInterpolate(int id, EFbxQuatInterpMode pV) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default eQuatInterpOff, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pV == eQuatInterpOff) return; - mIsDefault[id] = false; - Get(id).SetQuaternionInterpolate(pV); - } - - inline EFbxRotationOrder GetRotationOrder(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetRotationOrder(); - } - - inline void SetRotationOrder(int id, EFbxRotationOrder pROrder) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default rotation order eEulerXYZ, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pROrder == eEulerXYZ) return; - mIsDefault[id] = false; - Get(id).SetRotationOrder(pROrder); - } - - inline FbxNode::EPivotState GetPivotState(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - return mPivotState[id]; - } - - inline void SetPivotState(int id, FbxNode::EPivotState pVal) - { - FBX_ASSERT(id == 0 || id == 1); - if (pVal == FbxNode::ePivotReference) return; - mPivotState[id] = pVal; - if (mPivot[id]) - mPivot[id]->SetPivotState(pVal); - } - - #undef MACRO_PIVOT_VECTOR_FCTS - #undef MACRO_PIVOT_BOOL_FCTS - - void Reset() - { - smDefaultPivot.Reset(); - for (int i = 0; i < 2; i++) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - if (mPivot[i]) mPivot[i]->Reset(); - } - } - - private: - Pivot* mPivot[2]; - FbxNode::EPivotState mPivotState[2]; - bool mIsDefault[2]; - static Pivot smDefaultPivot; - }; - - class FBXSDK_DLL LinkToCharacter - { - public: - bool operator==(LinkToCharacter& pLinkToCharacter) - { - if (mCharacter == pLinkToCharacter.mCharacter && - mType == pLinkToCharacter.mType && - mIndex == pLinkToCharacter.mIndex && - mSubIndex == pLinkToCharacter.mSubIndex) - { - return true; - } - else return false; - } - - FbxCharacter* mCharacter; - int mType; - int mIndex; - int mSubIndex; - }; - - void AddChildName(const char* pChildName); - char* GetChildName(FbxUInt pIndex) const; - FbxUInt GetChildNameCount() const; - - FbxTransform& GetTransform(); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - Pivots& GetPivots(); - - void UpdatePivotsAndLimitsFromProperties(); - void UpdatePropertiesFromPivotsAndLimits(); - - void SetRotationActiveProperty(bool pVal); - void PivotSetToMBTransform(EPivotSet pPivotSet); - - int AddCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - int RemoveCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - - // Duplicate this node as well as all its node attributes and the Target and UpTarget objects. - FbxNode* DeepCloneWithNodeAttributes(); - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - enum ECullingType - { - eCullingOff, - eCullingOnCCW, - eCullingOnCW - }; - - ECullingType mCullingType; - bool mCorrectInheritType; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - void Reset(); - bool GetAnimationIntervalRecursive(FbxTimeSpan& pTimeInterval, FbxAnimLayer* pAnimLayer); - -private: - typedef FbxSet GeomInstSet; - - void ResetLimitsRecursive(FbxNode* pNode); - - void ConvertPivotAnimationRecurseLoop(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - bool ConvertPivotAnimation_SetupMatrixConverter(FbxAnimCurveFilterMatrixConverter& pConverter, const EPivotSet& pSrcSet, const EPivotSet& pDstSet, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation_ApplyGeometryPivot(const EPivotSet& pSrcSet, const EPivotSet& pDstSet, GeomInstSet& pGeomInstSet); - - FbxTransform mTransform; - Pivots mPivots; - FbxObject* mAnimCurveNodeContainer; - FbxArray mChildrenNameList; - FbxVector4 mPostTargetRotation; - FbxVector4 mTargetUpVector; - FbxNode::EShadingMode mShadingMode; - FbxArray mLinkToCharacter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const EFbxRotationOrder&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTransform::EInheritType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const EFbxQuatInterpMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h deleted file mode 100644 index 5566769..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnodeattribute.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** \brief This class is the base class to all types of node attributes. - * \nosubgrouping - * A node attribute is the content of a node. A \c NULL node attribute is set - * by calling function FbxNode::SetNodeAttribute() with a \c NULL pointer. - */ -class FBXSDK_DLL FbxNodeAttribute : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNodeAttribute, FbxObject); - -public: - //! Property Names - static const char* sColor; - - //! Property Default Values - static const FbxDouble3 sDefaultColor; - - /** This property handles the color. - * - * Default value is (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** \enum EType Node attribute types. - * - \e eUnknown - * - \e eNull - * - \e eMarker - * - \e eSkeleton - * - \e eMesh - * - \e eNurbs - * - \e ePatch - * - \e eCamera - * - \e eCameraStereo, - * - \e eCameraSwitcher - * - \e eLight - * - \e eOpticalReference - * - \e eOpticalMarker - * - \e eNurbsCurve - * - \e eTrimNurbsSurface - * - \e eBoundary - * - \e eNurbsSurface - * - \e eShape - * - \e eLODGroup - * - \e eSubDiv - * - \e eCachedEffect - * - \e eLine - */ - enum EType - { - eUnknown, - eNull, - eMarker, - eSkeleton, - eMesh, - eNurbs, - ePatch, - eCamera, - eCameraStereo, - eCameraSwitcher, - eLight, - eOpticalReference, - eOpticalMarker, - eNurbsCurve, - eTrimNurbsSurface, - eBoundary, - eNurbsSurface, - eShape, - eLODGroup, - eSubDiv, - eCachedEffect, - eLine - }; - - /** Return the type of node attribute. - * This class is pure virtual. - */ - virtual FbxNodeAttribute::EType GetAttributeType() const; - - /** Return the node count using this attribute. - * \return The count of nodes with this attribute set. - */ - int GetNodeCount() const; - - /** Return the node this attribute is set to. - * \param pIndex The index of the node to retrieve - * \return Pointer to the node, or \c NULL if the current attribute is not set to a node. - */ - FbxNode* GetNode(int pIndex=0) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnull.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnull.h deleted file mode 100644 index b1328b2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnull.h +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnull.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NULL_H_ -#define _FBXSDK_SCENE_GEOMETRY_NULL_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of a null node. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNull : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxNull, FbxNodeAttribute); - -public: - //! Returns the EType::eNull node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the default values. - void Reset(); - - /** - * \name Null Node Properties - */ - //@{ - - /** \enum ELook Null node look types. - * - \e eNone - * - \e eCross - */ - enum ELook - { - eNone, - eCross, - }; - - /** Returns the default size value. - * \return The default size of this object (100). - */ - double GetSizeDefaultValue() const; - - //@} - - /** - * \name Property Names - */ - //@{ - static const char* sSize; - static const char* sLook; - //@} - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const ELook sDefaultLook; - //@} - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the null node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * The default value is 100. - */ - FbxPropertyT Size; - - /** This property handles the look of the null node. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * The default value is true - */ - FbxPropertyT Look; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxNull::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NULL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h deleted file mode 100644 index 8a8204b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbs.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_H_ - -#include - -#include - -#include - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V coordinates. - - For more information on the meaning of form, knot vectors and control points, - see the FbxNurbsCurve documentation. The same rules apply for the NURBS curves - and NURBS surfaces, but NURBS surfaces have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbs : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbs node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry) - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** NURBS types. - */ - enum EType - { - ePeriodic, //!< Periodic. - eClosed, //!< Closed. - eOpen //!< Open. - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbs::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Returns multiplicity of U-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the U count. - * Its elements are set to 1 by default. - */ - int* GetUMultiplicityVector() const; - - /** Returns multiplicity of V-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the V count. - * Its elements are set to 1 by default. - */ - int* GetVMultiplicityVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS export flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUMultiplicityVectorError, - eVMultiplicityVectorError, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - int* mUMultiplicityVector; - int* mVMultiplicityVector; - - ESurfaceMode mSurfaceMode; - - // Export flags. - bool mApplyFlipUV; - bool mApplyFlipLinks; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h deleted file mode 100644 index 6e502af..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h +++ /dev/null @@ -1,233 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbscurve.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ - -#include - -#include -#include - -#include - -/** - A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry. A NURBS - curve is defined by the order, form, knot vector and control points. - - Let M be the order of the curve. - Let N be the number of control points of the curve. - - The form of the curve can be open, closed or periodic. A curve with end points - that do not meet is defined as an open curve. The number of knots in an open curve - is defined as N+(M+1). - - A closed curve simply has its last control point equal to its first control point. - Note that this does not imply tangent continuity at the end point. The curve may - have a kink at this point. In FBX the last control point is not specified by the user - in the InitControlPoints() method. For example, if there are to be 10 control points in - total, and the curve is to be closed, than only 9 control points need to be passed - into the InitControlPoints() method. The last control point is implied to be equal - to the first control point. Thus N represents the number of unique CVs. - - A periodic curve has its last M control points equal to its first M control points. - A periodic curve is tangent continuous at the ends. Similar to a closed curve, - when creating a periodic curve, only the unique control points need to be set. For - example a periodic curve of order 3 with 10 control points requires only 7 CVs to - be specified in the InitControlPoints() method. The last 3 CVs, which are the same as - the first 3, are not included. - - The calculation of the number of knots in closed and periodic curves is more complex. - Since we have excluded one CV in N in a closed curve, the number of knots is N+(M+1)+1. - Similarly, we excluded M CVs in periodic curves so the number of knots is N+(M+1)+M. - - Note that FBX stores one extra knot at the beginning and and end of the knot vector, - compared to some other graphics applications such as Maya. The two knots are not - used in calculation, but they are included so that no data is lost when converting - from file formats that do store the extra knots. - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsCurve : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsCurve,FbxGeometry); - -public: - //! Returns the EType::eNurbsCurve node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDimension The dimension of the CVs. - * - \e e2D The CVs are two dimensional points. - * - \e e3D The CVs are three dimensional points. - */ - enum EDimension - { - e2D = 2, - e3D - }; - - /** \enum EType The curve's form. - * - \e eOpen - * - \e eClosed - * - \e ePeriodic - */ - enum EType - { - eOpen, - eClosed, - ePeriodic - }; - - /** Allocates memory space for the control points array as well as for the knot - * vector. - * \param pCount Number of control points. - * \param pVType NURBS type. - * \remarks This function should always be called after FbxNurbsCurve::SetOrder(). - */ - void InitControlPoints( int pCount, EType pVType ); - - /** Returns the knot vector. - * \return Pointer to the knots array. - */ - inline double* GetKnotVector() const { return mKnotVector; } - - /** Returns the number of elements in the knot vector. - * \return The number of knots. - */ - int GetKnotCount() const; - - /** Sets the order of the curve. - * \param pOrder The curve order. - * \remarks The curve order must be set before InitControlPoints() is called. - */ - inline void SetOrder( int pOrder ) { mOrder = pOrder; } - - /** Returns the NURBS curve order. - * \return The NURBS curve order. - */ - inline int GetOrder() const { return mOrder; } - - /** Sets the step of the curve. - * \param pStep The curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline void SetStep( int pStep ) { mStep = pStep; } - - /** Returns the NURBS curve step. - * \return The NURBS curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline int GetStep() const { return mStep; } - - /** Sets the dimension of the CVs. - * For 3D curves: control point = ( x, y, z, w ), where w is the weight. - * For 2D curves: control point = ( x, y, 0, w ), where the z component is unused, and w is the weight. - * \param pDimension The control points dimension(3D or 2D). - */ - inline void SetDimension( EDimension pDimension ) { mDimension = pDimension; } - - /** Returns the control points dimension. - * \return The curve dimension. - */ - inline EDimension GetDimension() const { return mDimension; } - - /** Determines if the curve is rational or not. - * \return \c True if the curve is rational, return \c false if not. - */ - bool IsRational(); - - /** Calculates the number of curve spans with the following: - * Where - * S = Number of spans - * N = Number of CVs - * M = Order of the curve - * - * S = N - M + 1; - * - * In this calculation N includes the duplicate CVs for closed and periodic curves. - * - * \return The number of curve spans if the curve has been initialized, returns -1 if the curve has not been initialized. - */ - int GetSpanCount() const; - - /** Returns NURBS type. - * \return NURBS type identifier. - */ - inline EType GetType() const { return mNurbsType; } - - /** Checks if the curve is a poly line. (A poly line is a - * linear NURBS curve ) - * - * \return \c True if curve is a poly line, return \c false if it is not a poly line. - */ - inline bool IsPolyline() const { return ( GetOrder() == 2 ); } - - /** This function determines if this NURBS curve is a Bezier curve. - * Bezier curves are a special case of NURBS curve. - * \return \c True if curve is a Bezier curve. If it is not a Bezier curve return \c false. - */ - bool IsBezier() const; - - /** Evaluate the point on the curve. Save the result as a point array. Meanwhile, return the length of the point array. - * \param pPointArray Save the evaluate result as a point array. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return The length of the point array. - */ - int TessellateCurve(FbxArray& pPointArray, int pStep = 16); - - /** Evaluate the point on the curve. Per the evaluation result, create a FbxLine and return the pointer to the line. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return A line to hold the tessellate points. - */ - FbxLine* TessellateCurve(int pStep = 16); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool FullMultiplicity() const; - - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsCurveTypeUnknown, - eWeightTooSmall, - eKnotVectorError, - eWrongNumberOfControlPoint, - eErrorCount - }; - - bool mIsRational; - - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void Reset(); - -private: - double* mKnotVector; - EType mNurbsType; - int mOrder; - EDimension mDimension; - int mStep; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h deleted file mode 100644 index c10a9eb..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V directions. - - For more information on the meaning of the form, knot vector and control points, - see the documentation for the FbxNurbsCurve. The same concepts for NURBS curves - apply to NURBS surfaces. NURBS surfaces simply have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsSurface, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbsSurface node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType NURBS types. - * - \e ePeriodic - * - \e eClosed - * - \e eOpen - */ - enum EType - { - ePeriodic, - eClosed, - eOpen - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbsSurface::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS surface Export Flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - /** Adds a curve to the NURBS surface. - * Adds a 2D, parametric space curve to this surface - * \param pCurve The curve to be added to the surface. - */ - void AddCurveOnSurface( FbxNode* pCurve ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - FbxNode* GetCurveOnSurface( int pIndex ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - const FbxNode* GetCurveOnSurface( int pIndex ) const; - - /** Returns the number of curves on this surface. - * \return The number of curves on this surface. - */ - int GetCurveOnSurfaceCount() const; - - /** Removes a curve from this surface. - * \param pCurve The curve to be removed. - * \return \c True if the curve is removed successfully, if unsuccessful, returns \c false. - */ - bool RemoveCurveOnSurface( FbxNode* pCurve ); - - //@} - - /** Checks if the surface has all rational control points. - * \return \c True if rational, \c false otherwise - */ - bool IsRational() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - - void SetFlipNormals(bool pFlipNormals); - bool GetFlipNormals() const; - bool IsValidKnots() const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - ESurfaceMode mSurfaceMode; - - bool mApplyFlipUV; - bool mApplyFlipLinks; - bool mFlipNormals; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h deleted file mode 100644 index 1a3edca..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxopticalreference.h -#ifndef _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ -#define _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of an optical reference. - * \nosubgrouping - * Mainly used for optical motion capture systems. - */ -class FBXSDK_DLL FbxOpticalReference : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxOpticalReference,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is FbxNodeAttribute::EType::eOpticalReference. - FbxNodeAttribute::EType GetAttributeType() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h deleted file mode 100644 index 90b796d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpatch.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PATCH_H_ -#define _FBXSDK_SCENE_GEOMETRY_PATCH_H_ - -#include - -#include - -#include - -/** A patch is a type of node attribute with parametric surface. - * A patch object is useful for creating gently curved surfaces, and provides very detailed control for manipulating complex geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxPatch : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxPatch,FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::ePatch node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the patch to its default values. - void Reset(); - - /** - * \name Patch Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see Class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The current surface mode identifier. - */ - inline FbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType Patch types. - * - \e eBezier - * - \e eBezierQuadric - * - \e eCardinal - * - \e eBSpline - * - \e eLinear - */ - enum EType - { - eBezier, - eBezierQuadric, - eCardinal, - eBSpline, - eLinear - }; - - /** Allocates memory space for the control points array. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension patch type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension patch type. - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of control points in the U-dimension. - * \return The number of control points in the U-dimension. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of control points in the V-dimension. - * \return The number of control points in the V-dimension. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension patch type. - * \return Patch type identifier in the U-dimension. - */ - inline EType GetPatchUType() const {return mUType;} - - /** Returns the V-dimension patch type. - * \return Patch type identifier in the V-dimension. - */ - inline EType GetPatchVType () const {return mVType;} - - /** Sets the patch step. - * The step is the number of divisions between adjacent control points. - * \param pUStep Steps in U-dimension. - * \param pVStep Steps in V-dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in the U-dimension. - * \return Step value in the U-dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in the V-dimension. - * \return Step value in the V-dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Sets closed flags. - * \param pU Set to \c true if the patch is closed in U dimension. - * \param pV Set to \c true if the patch is closed in V dimension. - */ - void SetClosed(bool pU, bool pV); - - /** Returns state of the U closed flag. - * \return \c True if the patch is closed in U dimension. - */ - inline bool GetUClosed() const {return mUClosed;} - - /** Returns state of the V closed flag. - * \return \c True if the patch is closed in V dimension. - */ - inline bool GetVClosed() const {return mVClosed;} - - /** Sets U-capped flags. - * \param pUBottom Set to \c true if the patch is capped at the bottom in the U-dimension. - * \param pUTop \c Set to \c true if the patch is capped on the top in the U-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetUCapped(bool pUBottom, bool pUTop); - - /** Returns state of the bottom U-capped flag. - * \return \c True if the patch is capped at the bottom in the U-dimension. - */ - inline bool GetUCappedBottom() const {return mUCappedBottom;} - - /** Returns state of the top U-capped flag. - * \return \c True if the patch is capped on the top in the U-dimension. - */ - inline bool GetUCappedTop() const {return mUCappedTop;} - - /** Sets V-capped flags. - * \param pVBottom Sets to \c true if the patch is capped at the bottom in the V-dimension. - * \param pVTop Sets to \c true if the patch is capped on the top in the V-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetVCapped(bool pVBottom, bool pVTop); - - /** Returns state of the bottom V-capped flag. - * \return \c True if the patch is capped at the bottom. - */ - inline bool GetVCappedBottom() const {return mVCappedBottom;} - - /** Returns state of the top V-capped flag. - * \return \c True if the patch is capped on the top. - */ - inline bool GetVCappedTop() const {return mVCappedTop;} - - //@} - - /** - * \name Off-loading Serialization section - */ - //@{ - /** Writes the content of the patch to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed by the receiving stream. - * If it is not successful, returns \c false. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the patch from the given stream. - * \param pStream The source stream. - * \return \c True if the patch completes with the data received from the stream successfully. - * If it is not successful, returns \c false. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - void SetControlPointAt(const FbxVector4 &pCtrlPoint ,int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - EType mUType, mVType; - int mUCount, mVCount; - int mUStep, mVStep; - bool mUClosed, mVClosed; - bool mUCappedBottom, mUCappedTop; - bool mVCappedBottom, mVCappedTop; - - FbxGeometry::ESurfaceMode mSurfaceMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PATCH_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h deleted file mode 100644 index dc41bbc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduralgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ -#define _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Base class for procedural geometry. In a standard geometry (FbxGeometry, FbxGeometryBase), control points, - * normals, possibly polygons (FbxMesh) and other specifications are described. A procedural geometry contains minimal information - * to be created on-the-fly. - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralGeometry : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralGeometry, FbxGeometry); -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxshape.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxshape.h deleted file mode 100644 index b0ca7a5..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxshape.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ - -#include - -#include - -#include - -class FbxBlendShapeChannel; -class FbxGeometry; - -/** A shape describes the deformation on a set of control points, which is similar to the cluster deformer in Maya. - * For example, we can add a shape to a created geometry. And the shape and the geometry have the same - * topological information but different position of the control points. - * With varying amounts of influence, the geometry performs a deformation effect. - * \nosubgrouping - * \see FbxGeometry - */ -class FBXSDK_DLL FbxShape : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxShape, FbxGeometryBase); - -public: - /** Set the blend shape channel that contains this target shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the blend shape channel that contains this target shape. - * \return a pointer to the blend shape channel if set or NULL. - */ - FbxBlendShapeChannel* GetBlendShapeChannel() const; - - /** Get the base geometry of this target shape. - * \return a pointer to the base geometry if set or NULL. - * \remarks Since target shape can only connected to its base geometry through - * blend shape channel and blend shape deformer. - * So only when this target shape is connected to a blend shape channel, - * and the blend shape channel is connected to a blend shape deformer, - * and the blend shape deformer is used on a base geometry, then to get - * base geometry will success. - */ - FbxGeometry* GetBaseGeometry(); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - - /** Set the array size for the control point indices - * \param pCount The new count. - */ - void SetControlPointIndicesCount(int pCount); - - /** Add a control point index to the control point indices array - * \param pIndex The control point index to add. - */ - void AddControlPointIndex(int pIndex); - - /** Restore the shape to its initial state. - * Calling this function will clear the following: - * \li Pointer to blend shape channel. - * \li Control point indices. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxNodeAttribute::EType GetAttributeType() const override; - FbxStringList GetTypeFlags() const override; - - FbxArray mControlPointIndices; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h deleted file mode 100644 index 3c4f120..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskeleton.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ - -#include - -#include - -#include - -/** This class specializes a node attribute to represent the elements forming "bone" - * chains. The FbxSkeleton name of the class comes from the analogy with the human body - * skeletal structure. In fact, an object of this type is nothing more than a transform - * node with special properties that are useful for its graphical representation and during - * IK/FK and skin deformation computations. Typically, a scene will contain chains of FbxSkeleton - * node attributes that, together, form a skeleton segment. For instance, the representation of the - * leg of a character can be achieved using one parent node with the attribute eRoot, followed by - * one child (femur) of type eLimb, this child having a child also (tibia) of the same type. Finally, - * terminated with a last node attribute of type eEffector (ankle). - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxSkeleton : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxSkeleton,FbxNodeAttribute); - -public: - //! Return the type of node attribute (i.e: FbxNodeAttribute::EType::eSkeleton). - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the skeleton to default values and type to \c eRoot. - void Reset(); - - /** - * \name Skeleton Properties - */ - //@{ - - /** \enum EType Skeleton types. - * \remarks \e eEffector is synonymous to \e eRoot. - * \remarks The \e eLimbNode type is a bone defined uniquely by a transform and a size value while - * \remarks the \e eLimb type is a bone defined by a transform and a length. - */ - enum EType - { - eRoot, /*!< First element of a chain. */ - eLimb, /*!< Chain element. */ - eLimbNode, /*!< Chain element. */ - eEffector /*!< Last element of a chain. */ - }; - - /** Set the skeleton type. - * \param pSkeletonType Skeleton type identifier. - */ - void SetSkeletonType(EType pSkeletonType); - - /** Get the skeleton type. - * \return Skeleton type identifier. - */ - EType GetSkeletonType() const; - - /** Get a flag to know if the skeleton type was set. - * \return \c true if a call to SetSkeletonType() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetSkeletonTypeIsSet() const; - - /** Get the default value for the skeleton type. - * \return \c eRoot - */ - EType GetSkeletonTypeDefaultValue() const; - - /** Get the default value for the limb length. - * \return 1.0 - */ - double GetLimbLengthDefaultValue() const; - - /** Get the default value for the limb node size. - * \return 100.0 - */ - double GetLimbNodeSizeDefaultValue() const; - - /** Set limb or limb node color. - * \param pColor RGB values for the limb color. - * \return \c true if skeleton type is \c eLimb or \c eLimbNode, \c false otherwise. - * \remarks Limb or limb node color is only set if skeleton type is \c eLimb or \c eLimbNode. - */ - bool SetLimbNodeColor(const FbxColor& pColor); - - /** Get limb or limb node color. - * \return Currently set limb color. - * \remarks Limb or limb node color is only valid if skeleton type is \c eLimb or \c eLimbNode. - */ - FbxColor GetLimbNodeColor() const; - - /** Get a flag to know if the limb node color was set. - * \return \c true if a call to SetLimbNodeColor() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetLimbNodeColorIsSet() const; - - /** Get the default value for the limb node color. - * \return R=0.8, G=0.8, B=0.8 - */ - FbxColor GetLimbNodeColorDefaultValue() const; - - /** To see if this skeleton is Root. - * \return \c true if this is root of the skeleton, \c false otherwise. - * \remarks if a skeleton node do not have a parent or its parent is not a skeleton node itself, then this - * skeleton is root in the hierarchy. - */ - bool IsSkeletonRoot() const; - - //@} - - - /** - * \name Property Names - */ - static const char* sSize; - static const char* sLimbLength; - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const FbxDouble sDefaultLimbLength; - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the limb node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100.0 - */ - FbxPropertyT Size; - - /** This property handles the skeleton limb length. - * - * To access this property do: LimbLength.Get(). - * To set this property do: LimbLength.Set(FbxDouble). - * - * FbxSkeleton is a node attribute and it will be attached to a FbxNode which represents the transform. - * Given a chain of skeleton nodes the parent and child skeletons will be attached to a parent node and a child node. - * The orientation of the limb is computed from the vector between the parent and child position (from parent to child). - * The LimbLength represents the proportion - * of the parent node's position to the child node's position which is used to compute the actual limb length. - * The default value of 1.0 means the LimbLength is equal to the length between the parent and child node's position. - * So if the value is 0.5, it means the LimbLength will be half of the length between the parent and child node's position. - */ - FbxPropertyT LimbLength; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Reset( bool pResetProperties ); - - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mSkeletonType; - - bool mLimbLengthIsSet; - bool mLimbNodeSizeIsSet; - bool mLimbNodeColorIsSet; - bool mSkeletonTypeIsSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskin.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskin.h deleted file mode 100644 index bd61e74..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxskin.h +++ /dev/null @@ -1,192 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskin.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKIN_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKIN_H_ - -#include - -#include - -#include - -class FbxCluster; -class FbxGeometry; - -/** Skin deformer class. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * The corresponding deformer types are FbxDeformer::eSkin. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxSkin : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxSkin, FbxDeformer); - -public: - /** Set deformation accuracy. - * \remarks Use the Accuracy option to set the accuracy of skin deformations. - * 100% is full accuracy and 1% is a rough estimation of the envelope deformation. - * \param pDeformAccuracy value for deformation accuracy. - */ - void SetDeformAccuracy(double pDeformAccuracy); - - /** Get deformation accuracy. - * \return deformation accuracy value. - */ - double GetDeformAccuracy() const; - - /** Set the geometry affected by this skin deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this skin deformer. - * \return a pointer to the geometry if set or NULL. - */ - FbxGeometry* GetGeometry(); - - /** Add a cluster. - * \param pCluster Pointer to the cluster object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddCluster(FbxCluster* pCluster); - - /** Remove cluster at given index. - * \param pCluster Pointer to the cluster to remove from this skin deformer. - * \return Pointer to cluster or \c NULL if pCluster is not owned by this skin deformer. - */ - FbxCluster* RemoveCluster(FbxCluster* pCluster); - - /** Get the number of clusters. - * \return Number of clusters that have been added to this object. - */ - int GetClusterCount() const; - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - FbxCluster* GetCluster(int pIndex); - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - const FbxCluster* GetCluster(int pIndex) const; - - /** Get the type of the deformer. - * \return Deformer type identifier. - */ - EDeformerType GetDeformerType() const override {return eSkin; }; - - /** \enum EType Skinning type. - * The skinning type decides which method will be used to do the skinning. - * - \e eRigid Type eRigid means rigid skinning, which means only one joint can influence each control point. - * - \e eLinear Type eLinear means the classic linear smooth skinning. - * - \e eDualQuaternion Type eDualQuaternion means the dual quaternion smooth skinning. - * - \e eBlend Type eBlend means to blend classic linear and dual quaternion smooth skinning according to blend weights. - */ - enum EType - { - eRigid, - eLinear, - eDualQuaternion, - eBlend - }; - - /** Set the skinning type. - * \param pType The skinning type. - */ - void SetSkinningType(EType pType); - - /** Get the skinning type. - * \return The skinning type. - */ - EType GetSkinningType() const; - - /** - * \name Control Points - * A skin has an array of indices to control points and associated blend weights. - * The indices refer to the control points in the instance of class FbxGeometry. - * The blend weights are the influence of the different skinning type over the - * deformation effect of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and blendWeights. - * \param pIndex The index of the control point. - * \param pBlendWeight The blend weight for this control point. The value should between 0 and 1. - * Any value that is less than 0 will be set to 0, any value that is greater than 1 will be set to 1. - * 0 means completely linear skinning, 1 means completely dual quaternion skinning, - * a value between 0 and 1 means the weighted blending of the above two skinning methods. - */ - void AddControlPointIndex(int pIndex, double pBlendWeight = 0); - - /** Get the length of the arrays of control point indices and blend weights. - * \return Length of the arrays of control point indices and blend weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point blend weights. - * \return Pointer to the array of control point blend weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointBlendWeights() const; - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - - // Skin deformer - double mDeformAccuracy; - EType mSkinningType; - - //Control points - FbxArray mControlPointIndices; - FbxArray mControlPointBlendWeights; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKIN_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h deleted file mode 100644 index e646d67..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ - -#include - -#include - -#include - -/** Base class for cluster sub-deformer( FbxCluster) and blend shape channel sub-deformer( FbxBlendShapeChannel) - * - * The corresponding sub-deformer types are FbxSubDeformer::eCluster and FbxSubDeformer::eBlendShapeChannel. - * - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * A cluster is usually part of a skin (see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * and each target shape could have its own full deformation percentage, for example, one channel could have 3 target shapes, - * whose full deform percentage are 30, to 80 to 100, then when the percent change from 0 to 100, the base geometry will - * deform from the first target shape to the last one, this is called In-Between blend-shapes. - * The blend shape channel also control the deform percent of each target shape or In-Between blend shape on it. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSubDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSubDeformer, FbxObject); - public: - - /** Set multi layer state flag. - * \param pMultiLayer If \c true, multi-layering is enabled. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multilayer state. - * \return The state of the multi-layer flag. - */ - bool GetMultiLayer() const; - - - /** \enum EType Sub-deformer type - */ - enum EType - { - eUnknown, //!< Untyped sub-deformer - eCluster, //!< Type FbxCluster - eBlendShapeChannel //!< Type FbxBlendShapeChannel - }; - - /** Get the type of the sub-deformer. - * \return SubDeformer type identifier. - */ - virtual EType GetSubDeformerType() const { return eUnknown; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - // Local - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h deleted file mode 100644 index 51c2512..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdiv.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ - -#include - -#include -#include - -#include - -class FbxMesh; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FBXSDK_DLL FbxSubDiv : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxSubDiv, FbxGeometry); - -public: - enum EScheme - { - eCatmullClark, //Catmull CClark subdivision surface - eDooCSabin, //Doo CSabin subdivision surface - eLoop, //Loop subdivision surface - eLinear, //Linear subdivision surface - }; - - enum ETesselationPattern - { - eOddFractional, - eEvenFractional, - eInteger, - ePower2, //Max, Maya use this one - }; - - enum EDisplaySmoothness - { - eHull, - eRough, - eMedium, - eFine, - }; - - /** InitSubdivLevel Initialize the subdiv - * \param pLevelCount number of levels - * \param pScheme subdivision scheme - * \param pPattern Tessellation pattern - */ - void InitSubdivLevel(int pLevelCount, - EScheme pScheme = eCatmullClark, - ETesselationPattern pPattern = ePower2); - - FbxNodeAttribute::EType GetAttributeType() const override; - - - //max subdivision level number - static const int MAX_SUBDIV_LEVEL = 16; - - //subdiv levels in subdivision, including the base mesh and each subdiv levels - FbxArray mSubDivLevel; - - //Get the base mesh - FbxMesh* GetBaseMesh() const; - - //Get the mesh from finest level - FbxMesh* GetFinestMesh() const; - - //Set the finest mesh - bool SetFinestMesh(FbxMesh* pMesh); - - //Set the finest mesh - bool SetBaseMesh(FbxMesh* pMesh); - - //Get the mesh from specific level - FbxMesh* GetMesh(int pLevel) const; - - /** SetSubdivLevelMesh Set certain subdivision mesh - * \param pLevel working level - * \param pMesh new level mesh. pLevel = 0 means base mesh, - pLevel = MaxLevel -1 means finest mesh - */ - void SetSubdivLevelMesh(int pLevel, FbxMesh* pMesh); - - int GetLevelCount() const; - void SetLevelCount(int pLevelCount); - - int GetCurrentLevel() const; - void SetCurrentLevel(int pCurrentLevel); - - FbxMesh* GetCurrentMesh() const; - - FbxSubDiv::EScheme GetSubdivScheme() const; - - FbxSubDiv::ETesselationPattern GetTessPattern() const; - - void SetSubdivScheme(FbxSubDiv::EScheme pScheme); - - void SetTessPattern(FbxSubDiv::ETesselationPattern pPattern); - - FbxSubDiv::EDisplaySmoothness GetDisplaySmoothness() const; - - void SetDisplaySmoothness(FbxSubDiv::EDisplaySmoothness pSmoothness); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - - //base geometry mesh for subdivision - FbxMesh* mBaseMesh; - - //finest geometry mesh for subdivision - FbxMesh* mFinestMesh; - - //current operating subdivision level - int mCurrLevel; - - //number of subdiv level - int mLevelCount; - - //scheme of subdiv - EScheme mScheme; - - //pattern of subdiv - ETesselationPattern mPattern; - - //display smoothness of subdiv - EDisplaySmoothness mSmoothness; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h deleted file mode 100644 index 75f320b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h +++ /dev/null @@ -1,240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtrimnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ - -#include - -#include -#include -#include - -#include - -/** FbxBoundary describes a trimming boundary for a trimmed NURBS object. - * Note:Outer boundaries run counter-clockwise in UV space and inner - * boundaries run clockwise. An outer boundary represents the outer edges - * of the trimmed surface whereas the inner boundaries define "holes" in - * the surface. - */ -class FBXSDK_DLL FbxBoundary : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxBoundary, FbxGeometry); - -public: - - //! Properties - static const char* sOuterFlag; - - /** This property handles outer flag. - * - * Default value is false. - */ - FbxPropertyT OuterFlag; - - /** Adds an edge to this boundary. - * \param pCurve The curve to be appended to the end of this boundary - */ - void AddCurve( FbxNurbsCurve* pCurve ); - - /** Returns the number of edges within this boundary. - * \return The number of edges within this boundary - */ - int GetCurveCount() const; - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise the return value is undefined. - */ - FbxNurbsCurve* GetCurve( int pIndex ); - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise, the return value is undefined. - */ - const FbxNurbsCurve* GetCurve( int pIndex ) const; - - - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Detects if the point is in the boundary's control hull. - * \param pPoint The point to be detected. - * \return \c True if the point is in the boundary's control hull, returns \c false if it is not in the control hull. - */ - bool IsPointInControlHull(const FbxVector4& pPoint ); - - /** Computes the origin point in the boundary - * \return The origin point. - */ - FbxVector4 ComputePointInBoundary(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - void ClearCurves(); - void CopyCurves( FbxBoundary const& pOther ); - bool IsValid(bool mustClosed = true); - bool IsCounterClockwise(); - -protected: - void ConstructProperties(bool pForceSet) override; - - void Reset(); - bool LineSegmentIntersect(const FbxVector4 & pStart1, const FbxVector4 & pEnd1, const FbxVector4 & pStart2, const FbxVector4 & pEnd2 ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxTrimNurbsSurface describes a NURBS surface with regions - trimmed or cut away with trimming boundaries. - */ -class FBXSDK_DLL FbxTrimNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxTrimNurbsSurface,FbxGeometry); -public: - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - - /** Returns the number of regions on this trimmed NURBS surface. - * Note: There is always at least one region. - * \return The number of regions - */ - int GetTrimRegionCount() const; - - /** Calls this function before adding boundaries to a new trim region. - * The number of regions is incremented on this call. - */ - void BeginTrimRegion(); - - /** Calls this function after the last boundary for a given region is added. - * If no boundaries are added between the calls to BeginTrimRegion - * and EndTrimRegion, the last region is removed. - */ - void EndTrimRegion(); - - /** Appends a trimming boundary to the set of trimming boundaries. - * The first boundary specified for a given trim region should be - * the outer boundary. All other boundaries are inner boundaries. - * This must be called after a call to BeginTrimRegion(). Boundaries - * cannot be shared among regions. Duplicate the boundary if necessary. - * \param pBoundary The boundary to add. - * \return \c True if the boundary is added successfully. - * If the boundary is not added successfully, returns \c false. - */ - bool AddBoundary( FbxBoundary* pBoundary ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - const FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ) const; - - /** Returns the number of boundaries for a given region. - * \param pRegionIndex The index of the region. - * \return The number of trim boundaries for the given region. - */ - int GetBoundaryCount(int pRegionIndex = 0) const; - - /** Sets the NURBS surface that is trimmed by the trimming boundaries. - * \param pNurbs The NURBS surface to be trimmed. - */ - void SetNurbsSurface( const FbxNurbsSurface* pNurbs ); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - const FbxNurbsSurface* GetNurbsSurface() const; - - /** Sets the flag which indicates whether the surface normals are flipped. - * You can flip the normals of the surface to reverse the surface. - * \param pFlip If \c true, the surface is reversed. If it is false, the surface is not reversed. - */ - inline void SetFlipNormals( bool pFlip ) { mFlipNormals = pFlip; } - - /** Checks if the normals are flipped. - * \return \c True if normals are flipped, returns \c false if they are not flipped. - */ - inline bool GetFlipNormals() const { return mFlipNormals; } - - int GetControlPointsCount() const override; - - /** Sets the control point and the normal values for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index. - * \param pI2DSearch Unused in this implementation. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false) override; - - /** Sets the control point for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - - /** Returns the NURBS surface's control points. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxVector4* GetControlPoints(FbxStatus* pStatus = NULL) const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool IsValid(bool mustClosed = true); - void ClearBoundaries(); - void CopyBoundaries( FbxTrimNurbsSurface const& pOther ); - bool IsValid(int pRegion, bool mustClosed = true); - void RebuildRegions(); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - bool mFlipNormals; - FbxArray mRegionIndices; - bool mNewRegion; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h deleted file mode 100644 index add1460..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvertexcachedeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ - -#include - -#include -#include - -#include - -/** \brief This class deforms control points of a geometry using control point positions - * stored in the associated cache object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVertexCacheDeformer : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxVertexCacheDeformer, FbxDeformer); - -public: - //! Vertex cache deformer data type - enum ECacheChannelType - { - ePositions, //!< This vertex cache deformer handles positions - eNormals, //!< This vertex cache deformer handles normals - eUVs, //!< This vertex cache deformer handles uvs - eTangents, //!< This vertex cache deformer handles tangents - eBinormals, //!< This vertex cache deformer handles binormals - eUserDefined //!< This vertex cache deformer handles user specified data (the cache channel string can provide a hint) - }; - - /** Assign a cache object to be used by this deformer. - * \param pCache The cache object. */ - void SetCache(FbxCache* pCache); - - /** Get the cache object used by this deformer. - * \return A pointer to the cache object used by this deformer, or \c NULL if no cache object is assigned. */ - FbxCache* GetCache() const; - - //! Indicate if the deformer is active or not. - FbxPropertyT Active; - - //! The channel name used in the cache file - FbxPropertyT Channel; - - //! The cache set used by this vertex cache deformer - FbxPropertyT CacheSet; - - //! The vertex cache deformer type - FbxPropertyT Type; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - EDeformerType GetDeformerType() const override { return FbxDeformer::eVertexCache; } - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVertexCacheDeformer::ECacheChannelType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h b/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h deleted file mode 100644 index c859f4b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h +++ /dev/null @@ -1,139 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxweightedmapping.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ - -#include - -#include - -#include - -/** Define a weighted bidirectional mapping relation on objects. - * \nosubgrouping - * There are two object set. The source object of mapping is in source set. - * The destination object is in destination set. - * Each object can have multiple mapping relation with other objects. - */ -class FBXSDK_DLL FbxWeightedMapping -{ -public: - /** Object set type in the mapping relation. - */ - enum ESet - { - eSource, //!< Object is as source. - eDestination //!< Object is as destination. - }; - - /** Record one mapping from one object. */ - struct Element - { - //! The index of another object in the mapping in the another ESet array. - int mIndex; - //! Weight of the mapping. - double mWeight; - }; - - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * Initialize the source set and destination set. - * \param pSourceSize Source set size - * \param pDestinationSize Destination set size - */ - FbxWeightedMapping(int pSourceSize, int pDestinationSize); - - //! Destructor. - ~FbxWeightedMapping(); - //@} - - - /** Remove all weighted relations and give new source and destination sets sizes. - * \param pSourceSize New source set size. - * \param pDestinationSize New destination set size. - */ - void Reset(int pSourceSize, int pDestinationSize); - - /** Add a weighted mapping relation. - * \param pSourceIndex Index of the source object. - * \param pDestinationIndex Index of the destination object. - * \param pWeight Weight of the mapping. - */ - void Add(int pSourceIndex, int pDestinationIndex, double pWeight); - - /** Get the number of elements of a set. - * \param pSet source or destination set. - */ - int GetElementCount(ESet pSet) const; - - /** Get the number of relations an element of a set is linked to. - * For example, for one object (which index is specified by pElement) in source set (specified by pSet), - * the function return how many objects (as destination) the object (as source) mapping to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - */ - int GetRelationCount(ESet pSet, int pElement) const; - - /** Get one of the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pIndex Relation index of the object linked to. - * \return Element gives the index of an element in the other set and the assigned weight. - */ - Element& GetRelation(ESet pSet, int pElement, int pIndex); - - /** Given the index of an element in the other set, get the index of one of the relations - * an element of a set is linked to. Returns -1 if there is not relation between these elements. - * \param pSet Source or destination set. - * \param pElementInSet Object index in the set. - * \param pElementInOtherSet Object index in another set. - * \return The index of one of the relations, -1 if there is not relation between these elements. - */ - int GetRelationIndex(ESet pSet, int pElementInSet, int pElementInOtherSet) const; - - /** Get the sum of the weights from the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - * \return The sum of the weights from the relations. - */ - double GetRelationSum(ESet pSet, int pElement, bool pAbsoluteValue) const; - - - /** Normalize the weights of the relations of all the elements of a set. - * \param pSet Source or destination set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - */ - void Normalize(ESet pSet, bool pAbsoluteValue); - - FbxWeightedMapping& operator=(const FbxWeightedMapping& pWMap); - -private: - - //! Remove all weighted relations. - void Clear(); - - FbxArray*> mElements[2]; - -}; - -typedef class FbxArray FbxArrayTemplateElement; -typedef class FbxArray*> FbxArrayTemplateArrayTemplateElement; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h deleted file mode 100644 index d06eaf1..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h +++ /dev/null @@ -1,859 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingoperator.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ - -#include - -#include - -#include - -/** This object represents a binding operation on a FbxObject or FbxProperty. - * For example, FbxBindingOperator can be used to bind a light object - * to a parameter of shader via FbxNodeDirectionBOF or FbxNodePositionBOF. - * \code - * //Create an entry lEntry of binding table lTable. - * FbxBindingTableEntry& lEntry = lTable->AddNewEntry(); - * - * //Create a NodePositionConvert binding operator and add it as source of the lEntry. - * FbxOperatorEntryView lSrc(&lEntry, true, true); - * lSrc.SetOperatorName( "NodePositionConvert"); - * FbxBindingOperator* lOp = pImpl.AddNewBindingOperator( "NodePositionConvert", FbxNodePositionBOF::FunctionName); - * - * //Add a property entry to the binding operator. - * FbxBindingTableEntry& lEntryPropParam = lOp->AddNewEntry(); - * FbxPropertyEntryView lPropSrc(&lEntryPropParam, true, true); - * //Set the shader parameter (the property's name) as source of the lEntryPropParam. - * lPropSrc.SetProperty(lProp.GetHierarchicalName()); - * //Set the operator function FbxNodePositionBOF as destination of the lEntryPropParam. - * lEntryPropParam.SetDestination( FbxNodePositionBOF::FunctionName ); - * - * //Set the shader parameter as destination of the lEntry. - * FbxSemanticEntryView lDst( &lEntry, false, true ); - * lDst.SetSemantic( lProp.GetName() ); - * \endcode - * \nosubgrouping - * \see FbxOperatorEntryView, FbxBindingTableEntry, FbxPropertyEntryView - */ -class FBXSDK_DLL FbxBindingOperator : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingOperator, FbxBindingTableBase); - -public: - /** Run the operator on the given object. - * \param pObject The object that will be evaluated. - * \param pResult A pointer to a buffer to hold the result. - * \return \c true on success, \c false otherwise. - */ - template - bool Evaluate(const FbxObject* pObject, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = Evaluate(pObject, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pObject The object that will be evaluated. - * \param pInOut Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - template - bool ReverseEvaluation(const FbxObject* pObject, FBXTYPE * pInOut, - bool setObj=false, int index=0) const - { - - const void* lIn = pInOut; - void* lOut = NULL; - EFbxType lOutType; - - bool lSuccess = ReverseEvaluate(pObject, lIn, &lOut, &lOutType, setObj, index); - - if (lSuccess) - { - FbxTypeCopy(*pInOut, lOut, lOutType); - } - - FreeEvaluationResult(lOutType, lOut); - - return lSuccess; - } - - /** Evaluate the value of an operator parameter. - * \param pObject The object that will be evaluated. - * \param pEntryDestinationName The name of the parameter. - * This is used to get the property or operator that is related to this parameter, - * then to evaluate the property or operator. - * \param pResult A pointer to the result. - * \return \c true on success, \c false otherwise. - * \remarks This method can handle different types of entries. For property entry and constant entry, - * this method will find out the property via the pEntryDestinationName and then evaluate its value; - * for operator entry, this method will find out the operator via the pEntryDestinationName and - * evaluate the operator function to get the property's value; for any other types of entry, this method - * is meaningless. - */ - template - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = EvaluateEntry(pObject, pEntryDestinationName, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** This property stores the name of function. - * - * Default value is "". - */ - FbxPropertyT FunctionName; - - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Function name. - static const char* sFunctionName; - //! Target name. - static const char* sTargetName; - - //! Default value for function name. - static const char* sDefaultFunctionName; - //! Default value for target name. - static const char* sDefaultTargetName; - - - ////////////////////////////////////////////////////////////////////////// - // Functions - ////////////////////////////////////////////////////////////////////////// - - /** \internal - * - */ - static void RegisterFunctions(); - - /** \internal - * - */ - static void UnregisterFunctions(); - - - /** It represents a binding relationship between current object and the target. - * Any binding operation need to specify a certain kind of binding function. - * \nosubgrouping - */ - class FBXSDK_DLL Function - { - public: - //!Destructor. - virtual ~Function() {} - - /** Run the operator on the given object. - * \param pOperator The operator that will be applied. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - * The caller must call FreeEvaluationResult() when it is done with this pointer. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const = 0; - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pOperator The operator that will be applied. - * \param pTarget The object that will be evaluated. - * \param pIn - * \param pOut - * \param pOutType Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const = 0; - }; - - /** The abstract factory class for binding function. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionCreatorBase - { - public: - //!Destructor. - virtual ~FunctionCreatorBase() {} - - /** Get name of the function. - * \return The name of the function. - */ - virtual const char* GetFunctionName() const = 0; - - /** Create the function. - */ - virtual Function* CreateFunction() const = 0; - }; - - /** The concrete factory class for binding function. - * \nosubgrouping - */ - template - class FunctionCreator : public FunctionCreatorBase - { - public: - - /** Get Name of the operation function. - * \return The Name of the operation function. - */ - virtual const char* GetFunctionName() const - { - return FUNCTION::FunctionName; - } - - /** Create the operation function. - */ - virtual Function* CreateFunction() const - { - return FbxNew< FUNCTION >(); - } - }; - - /** This utility class is used to register and unregister the binding function creators. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionRegistry - { - public: - /** To register the binding function creator. - * \param pCreator The binding function creator to register. - */ - static void RegisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Insert(pCreator.GetFunctionName(), &pCreator); - } - - /** To unregister the binding function creator. - * \param pCreator The binding function creator to unregister. - */ - static void UnregisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Remove(pCreator.GetFunctionName()); - } - - /** To find the binding function creator by name. - * \param pName The name of the operation function creator to find. - */ - static const FunctionCreatorBase* FindCreator(const char* pName) - { - RegistryType::RecordType* lRecord = sRegistry.Find(pName); - - if (lRecord) - { - return lRecord->GetValue(); - } - else - { - return NULL; - } - } - - private: - typedef FbxMap RegistryType; - static RegistryType sRegistry; - }; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, EFbxType* pResultType, void** pResult) const; - bool GetEntryProperty(const FbxObject* pObject, const char* pEntryDestinationName, FbxProperty & pProp) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - void InstantiateFunction(); - bool Evaluate(const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - bool ReverseEvaluate(const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - void FreeEvaluationResult(EFbxType pResultType, void* pResult) const; - - Function* mFunction; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** An evaluation operator to get the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - */ -class FBXSDK_DLL FbxNodePositionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodePositionBOF(); - virtual ~FbxNodePositionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** An evaluation operator to get the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - */ -class FBXSDK_DLL FbxNodeDirectionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeDirectionBOF(); - virtual ~FbxNodeDirectionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A pass through operator used to assign constants to parameters. -*/ -class FBXSDK_DLL FbxAssignBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" and returns it. - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAssignBOF(); - virtual ~FbxAssignBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A conditional operator that outputs one out of two properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxConditionalBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * If the property value is true (!= 0, != ""), returns the value of the - * property specified by "ifTrue", else returns the value of the property - * specified by "ifFalse". - * - * Currently the data types supported for the input property are - * limited to "integer", "boolean", "float", "double" and "string". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxConditionalBOF(); - virtual ~FbxConditionalBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A switch operator that outputs one out of n properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSwitchBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * Returns the value of the property specified by "case_n", where n - * is the value of "predicate". If there is no case_n entry, returns - * the value of the property specified by "default". - * - * Currently the data types supported for the predicate property are - * limited to "integer" and "boolean". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSwitchBOF(); - virtual ~FbxSwitchBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxTRSToMatrixBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "T", "R" and "S" and - * return a transform matrix. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxTRSToMatrixBOF(); - virtual ~FbxTRSToMatrixBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxAddBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X+Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAddBOF(); - virtual ~FbxAddBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxSubstractBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X-Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSubstractBOF(); - virtual ~FbxSubstractBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - //Set index to 1 to get realWorldScale. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyBOF(); - virtual ~FbxMultiplyBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyDistBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyDistBOF(); - virtual ~FbxMultiplyDistBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxOneOverXBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" - * return 1/X as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxOneOverXBOF(); - virtual ~FbxOneOverXBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPowerBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X^Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPowerBOF(); - virtual ~FbxPowerBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxDegreeToRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDegreeToRadianBOF(); - virtual ~FbxDegreeToRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxVectorDegreeToVectorRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a vector3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxVectorDegreeToVectorRadianBOF(); - virtual ~FbxVectorDegreeToVectorRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxSphericalToCartesianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "rho", "theta" and "phi" - * return the converted Cartesian coordinates as a double3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSphericalToCartesianBOF(); - virtual ~FbxSphericalToCartesianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxIsYupBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check if the scene coordinate system is y-up - * return a bool. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIsYupBOF(); - virtual ~FbxIsYupBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -/** A symbol(string) operator that search the string table and return its corresponding unique id, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSymbolIDBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check in the symbol table the string and returns its unique ID as an integer - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSymbolIDBOF(); - virtual ~FbxSymbolIDBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A chooser operator that check spot distribution and returns the correct value, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSpotDistributionChooserBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check the enum of the spot distribution and returns the correct value - * as an int. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSpotDistributionChooserBOF(); - virtual ~FbxSpotDistributionChooserBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h deleted file mode 100644 index 9d3a817..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingsentryview.h -#ifndef _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ - -#include - -#include - -#include - -/** FbxBindingsEntryView represents binding table entry in entry tables. - * The name of the binding table can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxBindingsEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxBindingsEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxBindingsEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxBindingsEntryView(); - - /** Get the binding table's name for the binding entry. - * \return The binding table's name. - */ - const char* GetBindingTableName() const; - - /** Set the binding table's name for binding entry. - * \param pName The binding table's name to set. - */ - void SetBindingTableName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxBindingsEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h deleted file mode 100644 index 70d8793..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtable.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ - -#include - -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to corresponding destinations, usually a third party shader parameters. - * Binding represents a link between internal object(e.g. FbxObject) and - * external object(e.g. HLSL shader parameters). - * \nosubgrouping - * \see FbxBindingOperator, FbxBindingTableBase - */ -class FBXSDK_DLL FbxBindingTable : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingTable, FbxBindingTableBase); - -public: - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - /** This property stores the type of target. - * - * Default value is "". - */ - FbxPropertyT TargetType; - - /** Relative URL of file containing the shader implementation description. - * e.g.: ./shader.mi - * Default value is "". - */ - FbxPropertyT DescRelativeURL; - - /** Absolute URL of file containing the shader implementation description. - * e.g.: file:///usr/tmp/shader.mi - * Default value is "". - */ - FbxPropertyT DescAbsoluteURL; - - /** Identify the shader to use in previous description's URL. - * e.g.: MyOwnShader - * Default value is "". - */ - FbxPropertyT DescTAG; - - /** Relative URL of file containing the shader implementation code. - * e.g.: ./bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeRelativeURL; - - /** Absolute URL of file containing the shader implementation code. - * e.g.: file:///usr/tmp/bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeAbsoluteURL; - - /** Identify the shader function entry to use in previous code's URL. - * e.g.: MyOwnShaderFunc - * Default value is "". - */ - FbxPropertyT CodeTAG; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Target name. - static const char* sTargetName; - - //! Target type. - static const char* sTargetType; - - //! Relative URL for shader description. - static const char* sDescRelativeURL; - - //! Absolute URL for shader description. - static const char* sDescAbsoluteURL; - - //! Identify the shader to use in previous description's URL. - static const char* sDescTAG; - - //! Relative URL for shader code. - static const char* sCodeRelativeURL; - - //! Absolute URL for shader code. - static const char* sCodeAbsoluteURL; - - //! Identify the shader function entry to use in previous code's URL. - static const char* sCodeTAG; - - - //! Default value for target name. - static const char* sDefaultTargetName; - - //! Default value for target type. - static const char* sDefaultTargetType; - - //! Default value for relative URL for shader description. - static const char* sDefaultDescRelativeURL; - - //! Default value for absolute URL for shader description. - static const char* sDefaultDescAbsoluteURL; - - //! Default value for identifying the shader to use in previous description's URL. - static const char* sDefaultDescTAG; - - //! Default value for relative URL for shader code. - static const char* sDefaultCodeRelativeURL; - - //! Default value for absolute URL for shader code. - static const char* sDefaultCodeAbsoluteURL; - - //! Default value for identifying the shader function entry to use in previous code's URL. - static const char* sDefaultCodeTAG; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h deleted file mode 100644 index 70530de..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtablebase.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ - -#include - -#include -#include -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to destinations which can be of similar types. - * \see FbxBindingTableEntry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxBindingTableBase,FbxObject); - -public: - /** Adds a new entry to the binding table. - * \return The new entry. - */ - FbxBindingTableEntry& AddNewEntry(); - - /** Query the number of table entries. - * \return The number of entries. - */ - size_t GetEntryCount() const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry const& GetEntry( size_t pIndex ) const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry& GetEntry( size_t pIndex ); - - /** Retrieve the table entry for the given source value. - * \param pSrcName The source value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a source equal in value to pSrcName. - */ - const FbxBindingTableEntry* GetEntryForSource(const char* pSrcName) const; - - /** Retrieve the table entry for the given destination value. - * \param pDestName The destination value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a destination equal in value to pDestName. - */ - const FbxBindingTableEntry* GetEntryForDestination(const char* pDestName) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Remark: This method copies the mEntries table AND clears the UserData on the resulting copy to prevent shared memory - // data between clones/copies. - FbxObject& Copy(const FbxObject& pObject) override; - -private: - FbxDynamicArray mEntries; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h deleted file mode 100644 index 7a840f7..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtableentry.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ - -#include - -#include - -#include - -/** A binding table entry stores a binding between a source and a - * destination. Users should not instantiate this class directly, - * but always call FbxBindingTableBase::AddNewEntry() to create - * a new entry in the binding table. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableEntry -{ -public: - /** - *\name Constructor and Destructor - */ - //@{ - //!Constructor. - FbxBindingTableEntry(); - - /**Copy constructor. - * \param pEntry FbxBindingTableEntry to be copied. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry(const FbxBindingTableEntry& pEntry); - - //!Destructor. - ~FbxBindingTableEntry(); - //@} - - /** - * \name Access - */ - //@{ - /** Set the source. - * \param pSource The source to set. - */ - void SetSource( const char* pSource ); - - //!Retrieve the source. - const char* GetSource() const; - - /** Set the destination. - * \param pDestination The destination to set. - */ - void SetDestination( const char* pDestination ); - - //!Retrieve the destination. - const char* GetDestination() const; - - /** Set the source type or destination type. - * \param pType The source type or destination type to set. - * \param pAsSource Flag indicates source type or destination type to set. - */ - void SetEntryType( const char* pType, bool pAsSource ); - - /** Get the source type or destination type. - * \param pAsSource Flag indicates source type or destination type to get. - * \return Source type or destination type. - */ - const char* GetEntryType( bool pAsSource ) const; - - /** Retrieve user data pointer. - * \return User data pointer. - */ - void* GetUserDataPtr(); - - /** Retrieve user data pointer. - * \return User data pointer. - */ - const void* GetUserDataPtr() const; - - /** Set user data pointer. - * \param pData user data pointer. - */ - void SetUserDataPtr(void* pData ); - //@} - - /** Assignment operator. - * \param pEntry FbxBindingTableEntry assigned to this one. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry& operator=(const FbxBindingTableEntry& pEntry); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxString mSource; - FbxString mDestination; - FbxString mSourceType; - FbxString mDestinationType; - void* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h deleted file mode 100644 index 63f500d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstantentryview.h -#ifndef _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxConstantEntryView represents constant string entry in entry tables. - * The constant string can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxConstantEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxConstantEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxConstantEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxConstantEntryView(); - - /** Get the constant string for binding entry. - * \return The constant string. - */ - const char* GetConstantName() const; - - /** Set the constant string for binding entry. - * \param pName The constant string to set. - */ - void SetConstantName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxConstantEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxentryview.h deleted file mode 100644 index f306ca3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxentryview.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxentryview.h -#ifndef _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ - -#include - -#include - -class FbxBindingTableEntry; - -/** Entry view class represents binding entry in entry tables. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEntryView -{ -public: - - //! Entry type. - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxEntryView(); - //@} - - - /** Check whether this entry view is valid or not. - * If this entry view corresponds with an valid entry which is not NULL, and the - * entry type of this entry view is the same as that of the entry it corresponds with, - * then this entry view is valid. - * \return \c true if the entry view is valid, \c false otherwise. - */ - virtual bool IsValid() const; - - /** Create a new entry view. - * \return \c true if the entry view is created successfully, \c false otherwise. - */ - virtual bool Create(); - - /** Get the entry type of this entry view. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool mAsSource; - FbxBindingTableEntry* mEntry; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h deleted file mode 100644 index 8f69885..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ - -#include - -#include - -#include - -/** This class describes image mapping on top of geometry. - * \note To apply a texture to geometry, first connect the - * geometry to a FbxSurfaceMaterial object (e.g. FbxSurfaceLambert) - * and then connect one of its properties (e.g. Diffuse) to the - * FbxFileTexture object. - * \see FbxSurfaceLambert - * \see FbxSurfacePhong - * \see FbxSurfaceMaterial - * \note For some example code, see also the CreateTexture() function - * in the ExportScene03 of FBX SDK examples. - * \nosubgrouping - */ -class FBXSDK_DLL FbxFileTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxFileTexture, FbxTexture); - -public: - /** - * \name Texture Properties - */ - //@{ - /** This property handles the material use. - * Default value is false. - */ - FbxPropertyT UseMaterial; - - /** This property handles the Mipmap use. - * Default value is false. - */ - FbxPropertyT UseMipMap; - - /** Resets the default texture values. - * \remarks The texture file name is not reset. - */ - void Reset() override; - - /** Sets the associated texture file. - * \param pName The absolute path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid, you cannot leave the name empty. - */ - bool SetFileName(const char* pName); - - /** Sets the associated texture file. - * \param pName The relative path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid. - */ - bool SetRelativeFileName(const char* pName); - - /** Returns the absolute texture file path. - * \return The absolute texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetFileName() has not been called before. - */ - const char* GetFileName () const; - - /** Returns the relative texture file path. - * \return The relative texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetRelativeFileName() has not been called before. - */ - const char* GetRelativeFileName() const; - - /** \enum EMaterialUse Specify if texture uses model material. - */ - enum EMaterialUse - { - eModelMaterial, //! Texture uses model material. - eDefaultMaterial //! Texture does not use model material. - }; - - /** Sets the material use. - * \param pMaterialUse Specify how texture uses model material. - */ - void SetMaterialUse(EMaterialUse pMaterialUse); - - /** Returns the material use. - * \return How the texture uses model material. - */ - EMaterialUse GetMaterialUse() const; - - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxFileTexture const& pTexture) const; - - FbxString& GetMediaName(); - void SetMediaName(const char* pMediaName); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); - void SyncVideoFileName(const char* pFileName); - void SyncVideoRelativeFileName(const char* pFileName); - - FbxString mFileName; - FbxString mRelativeFileName; - FbxString mMediaName; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementation.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementation.h deleted file mode 100644 index 347cd28..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementation.h +++ /dev/null @@ -1,241 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementation.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ - -#include - -#include - -#include - -class FbxBindingOperator; -class FbxBindingTable; - -/** This object represents the shading node implementation. - * It defines basic information about the shader and the binding table(FbxBindingTable). - * For example, you can create a new FbxImplementation like this: - * \code - * FbxImplementation* lImpl = FbxImplementation::Create( &pMyScene, "MyImplementation" ); - * pMyObject.AddImplementation( lImpl ); - * pMyObject.SetDefaultImplementation( lImpl ); - * lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; //FBXSDK_RENDERING_API_DIRECTX, FBXSDK_RENDERING_API_OPENGL, FBXSDK_RENDERING_API_MENTALRAY or FBXSDK_RENDERING_API_PREVIEW - * lImpl->RenderAPIVersion = "9.0"; //API Version - * - * lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; //FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX or FBXSDK_SHADING_LANGUAGE_MRSL - * lImpl->LanguageVersion = "1.0"; //Language Version - * \endcode - * - * After the new FbxImplementation is created, you can access FbxBindingTable like this: - * \code - * FbxBindingTable* lTable = lImpl->GetTableByTargetName("root"); - * \endcode - * Also, you can access the exist FbxImplementation in FbxObject by this: - * \code - * const FbxImplementation* lImpl = GetImplementation( pMyObject, FBXSDK_IMPLEMENTATION_CGFX ); // FBXSDK_IMPLEMENTATION_PREVIEW, FBXSDK_IMPLEMENTATION_MENTALRAY, FBXSDK_IMPLEMENTATION_CGFX, FBXSDK_IMPLEMENTATION_HLSL, FBXSDK_IMPLEMENTATION_OGS or FBXSDK_IMPLEMENTATION_NONE - * \endcode - * \nosubgrouping - * \see FbxImplementationFilter - */ -class FBXSDK_DLL FbxImplementation : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxImplementation, FbxObject); - -public: - /** - * \name Target Name. - */ - //@{ - FbxString RenderName; - //@} - - /** - * \name Shader Language and API descriptions. - */ - //@{ - - /** Shader Language. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT Language; - - //! Shader Language version. - FbxPropertyT LanguageVersion; - - /** Render API. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT RenderAPI; - - //! Render API version. - FbxPropertyT RenderAPIVersion; - //@} - - - /** - * \name Binding description - */ - //@{ - - //! Name of root binding table. - FbxPropertyT RootBindingName; - - //! Property to store the shader parameters(constants) values in this implementation. - FbxProperty GetConstants() const; - - /** Add a new binding table to the table list. - * \param pTargetName The target name for the binding table. - * \param pTargetType The target type for the binding table. - * \return the new binding table. - */ - FbxBindingTable* AddNewTable( const char* pTargetName, const char* pTargetType ); - - /** Retrieves a handle on the root binding table. - * \return A const pointer to the root table or NULL if it does not exist. - */ - const FbxBindingTable* GetRootTable() const; - - /** Retrieves a handle on the root binding table. - * \return A pointer to the root table or NULL if it does not exist. - */ - FbxBindingTable* GetRootTable(); - - /** Gets the number of binding tables. - * \return the number of binding tables. - */ - int GetTableCount() const; - - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - const FbxBindingTable* GetTable( int pIndex ) const; - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - FbxBindingTable* GetTable( int pIndex ); - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A const pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetName( const char* pName ) const; - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetName( const char* pName ); - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A const pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetType( const char* pTargetName ) const; - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetType( const char* pTargetName ); - - - /** Add a new binding operator to the operator list. - * \param pTargetName The target name for the binding operator. - * \param pFunctionName The function name for the binding operator. - * \return The new operator. - */ - FbxBindingOperator* AddNewBindingOperator( const char* pTargetName, const char* pFunctionName ); - - /** Gets the number of binding operators. - * \return the number of binding operators. - */ - int GetBindingOperatorCount() const; - - /** Returns the binding operator that has the given name. - * \param pTargetName The target name of the binding operator to look for. - * \return A const pointer to the binding operator with the given name, or NULL if there is no such binding table. - */ - const FbxBindingOperator* GetOperatorByTargetName( const char* pTargetName ) const; - //@} - - - /** - * \name Static values - */ - //@{ - - // property names - - /** Shader Language name. - * \see Language - */ - static const char* sLanguage; - - /** Shader Language version. - * \see LanguageVersion - */ - static const char* sLanguageVersion; - - /** Shader render API. - * \see RenderAPI - */ - static const char* sRenderAPI; - - /** Shader render API version. - * \see RenderAPIVersion - */ - static const char* sRenderAPIVersion; - - /** Name of root binding table. - * \see RootBindingName - */ - static const char* sRootBindingName; - - /** Name of property to store the shader parameters(constants) values in this implementation. - * \see GetConstants - */ - static const char* sConstants; - - //! default value for implementation type. - static const char* sDefaultType; - - //! default value for shader language. - static const char* sDefaultLanguage; - - //! default value for shader language version. - static const char* sDefaultLanguageVersion; - - //! default value for shader render API. - static const char* sDefaultRenderAPI; - - //! default value for shader render API version. - static const char* sDefaultRenderAPIVersion; - - //! default value for root binding table name. - static const char* sDefaultRootBindingName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h deleted file mode 100644 index 85a18f4..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationfilter.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** \brief This object represents a shading node filter criteria - * based on the shading node implementation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxImplementationFilter : public FbxObjectFilter -{ - -public: - - /** The default shading API. - */ - static const char * sCHR_ANY_SHADING_API; - - /** The default shading API version. - */ - static const char * sCHR_ANY_SHADING_API_VERSION; - - /** The default shading language. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE; - - /** The default shading language version. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE_VERSION; - - - /** Constructor - * \param pShadingAPI a string containing the implementation API name: - * MentalRay - * OpenGL - * DirectX - * - * \param pShadingAPIVersion a string containing the implementation API version: - * eg. 1.0 - * - * \param pShadingLanguage a string identifying the implementation language name: - * GLSL = GL Shading Language - * HLSL = High Level Shading Language - * CGFX = CG effect(NVidia) - * RIB = RenderMan (RIB) - * etc... - * - * \param pShadingLanguageVersion a string identifying the implementation language version: - * eg. 1.0 - * - * \remarks by default the created criteria correspond to any shader - */ - FbxImplementationFilter( - const char * pShadingAPI = sCHR_ANY_SHADING_API, - const char * pShadingAPIVersion = sCHR_ANY_SHADING_API_VERSION, - const char * pShadingLanguage = sCHR_ANY_SHADING_LANGUAGE, - const char * pShadingLanguageVersion = sCHR_ANY_SHADING_LANGUAGE_VERSION - ); - - //! Destructor. - virtual ~FbxImplementationFilter(); - - /** Tells if this filter matches the given shading node implementation - * \param pObjectPtr The given shading node implementation - */ - virtual bool Match(const FbxObject * pObjectPtr) const; - - //! Stores the shading API - FbxString mShadingAPI; - - //! Stores the shading API Version - FbxString mShadingAPIVersion; - - //! Stores the shading language - FbxString mShadingLanguage; - - //! Stores the shading language version - FbxString mShadingLanguageVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - /** Utility method to determine if the given object is a shading node - * that we recognize. - */ - static bool IsShadingObject( const FbxObject* pObject ); - - /** Returns a criteria suitable for use with querying connections - * to shading nodes that we recognize, on FbxObject. - */ - static FbxCriteria Criteria(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h deleted file mode 100644 index a305164..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationutils.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ - -#include - -#include -#include -#include -#include - -#include - -/** Get FbxImplementation from FbxObject. - * \param pObject FbxObject to get FbxImplementation. - * \param pImplementationTarget Name of the implementation property to get. - * \return FbxImplementation Pointer to FbxImplementation. - */ -FBXSDK_DLL const FbxImplementation* GetImplementation( const FbxObject* pObject, const char* pImplementationTarget ); - -/** Get bound property value from FbxBindingTable. - * \param pBindingTable FbxBindingTable to get bound property value. - * \param pEntryName Name of the Entry type to get. - * \param pImplementation FbxImplementation of the bound property value to get if the Entry type is FbxOperatorEntryView::sEntryType. - * \param pBoundObject FbxObject of the bound property value to get if the Entry type is FbxPropertyEntryView::sEntryType. - * \param pValue Pointer to bound property value from FbxBindingTable. - * \return Whether get bound property value success or not. - */ -template bool GetBoundPropertyValue(const FbxBindingTable* pBindingTable, - const char* pEntryName, - const FbxImplementation* pImplementation, - const FbxObject* pBoundObject, - T& pValue) -{ - if ((NULL != pImplementation) && (NULL != pBindingTable) && (NULL != pBoundObject) && (NULL != pEntryName)) - { - const FbxBindingTableEntry* lEntry = pBindingTable->GetEntryForDestination(pEntryName); - - if (NULL != lEntry) - { - if (strcmp(lEntry->GetEntryType(true), FbxPropertyEntryView::sEntryType) == 0) - { - const char* lPropName = lEntry->GetSource(); - FbxProperty lProp = pBoundObject->FindPropertyHierarchical(lPropName); - if (lProp.IsValid()) - { - pValue = lProp.Get(); - return true; - } - } - else if (strcmp(lEntry->GetEntryType(true), FbxOperatorEntryView::sEntryType) == 0) - { - const char* lOperatorName = lEntry->GetSource(); - const FbxBindingOperator* lOp = pImplementation->GetOperatorByTargetName(lOperatorName); - if (lOp) - { - return lOp->Evaluate(pBoundObject, &pValue); - } - } - } - } - - return false; -} - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h deleted file mode 100644 index 818eb7b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayeredtexture.h -#ifndef _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ - -#include - -#include - -#include - -/** FbxLayeredTexture is a combination of multiple textures(FbxTexture) blended sequentially. - * For example, you can access individual texture by: - * \code - * FbxTexture* pIndiTexture = lLayeredTexture->GetSrcObject(FbxTexture::ClassId, pTextureIndex); - * \endcode - * Another example to construct a layered texture with two sub textures. - * \code - * FbxFileTexture *background, *file1; - * FbxLayeredTexture* layeredTexture; - * - * // connect two file textures to a layered texture via OO connections - * layeredTexture->ConnectSrcObject(background); - * layeredTexture->ConnectSrcObject(file1); - * - * // set the second file texture's blend mode and alpha. - * layeredTexture->SetTextureBlendMode(1, FbxLayeredTexture::eOver); - * layeredTexture->SetTextureAlpha(1, 0.5); - * \endcode - * \nosubgrouping - * \see FbxTexture - */ -class FBXSDK_DLL FbxLayeredTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxLayeredTexture, FbxTexture); - -public: - /** \enum EBlendMode Blend modes. - * - \e eTranslucent, The new texture layer is transparent (depending on the Alpha value). - * - \e eAdditive, Add the color of the new texture to the previous texture. - * - \e eModulate, Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2, Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver, Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount, Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdditive, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Equivalence operator. - * \param pOther The object for comparison. - * \return \c True if pOther is equivalent to this object, returns \c false otherwise. - */ - bool operator==( const FbxLayeredTexture& pOther ) const; - - /** Sets the blending mode of a specified texture. - * \param pIndex The texture index. - * \param pMode The blend mode to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureBlendMode( int pIndex, EBlendMode pMode ); - - /** Returns the blending mode of a specified texture - * \param pIndex The texture index. - * \param pMode The parameter that will hold the returned blend mode. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureBlendMode( int pIndex, EBlendMode& pMode ) const; - - /** Sets the alpha of a specified texture. - * \param pIndex The texture index. - * \param pAlpha The alpha to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureAlpha( int pIndex, double pAlpha ); - - /** Returns the alpha of a specified texture - * \param pIndex The texture index. - * \param pAlpha The parameter that will hold the returned alpha. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureAlpha( int pIndex, double& pAlpha ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - struct InputData - { - EBlendMode mBlendMode; - double mAlpha; - }; - -public: - FbxArray mInputData; - -protected: - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - bool RemoveInputData( int pIndex ); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLayeredTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h deleted file mode 100644 index 0d20fff..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayerentryview.h -#ifndef _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ - -#include - -#include -#include -#include - -#include - -class FbxLayerContainer; - -/** FbxLayerEntryView encodes a layer element representation (the index of the layer, the type of the layer - * element and whether the layer element is a UVSet layer element) to a string stored in FbxBindingTableEntry - * and decodes the string back to a layer element representation. - * This class is used in combination with FbxBindingTableEntry to represent a source or a destination - * FbxLayerElement. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxLayerEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxLayerEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxLayerEntryView(FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxLayerEntryView(); - - /** Set the layer element for the binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void SetLayerElement( int pLayerIndex, FbxLayerElement::EType pType, bool pUVSet ); - - /** Get the layer element for binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void GetLayerElement( int &pLayerIndex, FbxLayerElement::EType& pType, bool& pUVSet ) const; - - /** Get the layer element for binding entry. - * \param pContainer FbxLayerContainer to get the layer element from. - * \return The layer element for binding entry. - */ - FbxLayerElement* GetLayerElement( FbxLayerContainer* pContainer ) const; - - /** Get the entry type. - * \return Entry type as string "FbxLayerEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - static const char* sDelimiter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h deleted file mode 100644 index 07cfdf3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxoperatorentryview.h -#ifndef _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxOperatorEntryView represents binding operator entry in entry tables. - * The binding operator can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxOperatorEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxOperatorEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxOperatorEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxOperatorEntryView(); - - /** Get the operator name from the binding entry. - * \return The operator name. - */ - const char* GetOperatorName() const; - - /** Set the operator name to the binding entry. - * \param pName The operator name to set. - */ - void SetOperatorName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxOperatorEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h deleted file mode 100644 index 10e36fe..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduraltexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Contains the information to generate a texture procedurally. Data information for the texture - * generation is contained in a blob property. - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralTexture, FbxTexture); - - public: - /** - * \name Procedural Texture Properties - */ - //@{ - - /** This property handles the raw data for generating procedural texture. - */ - FbxPropertyT BlobProp; - - /** Resets the default procedural texture values. - */ - void Reset() override; - - //@} - - /** - * \name Property Access Methods - */ - //@{ - - /** Sets the blob. - * \param pBlob Blob containing information for the procedural texture - */ - void SetBlob(FbxBlob& pBlob); - - /** Get the blob. - * \return Blob containing information for the procedural texture - */ - FbxBlob GetBlob() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxProceduralTexture const& pTexture) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h deleted file mode 100644 index c3fcb77..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyentryview.h -#ifndef _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxPropertyEntryView represents property entry in entry tables. - * The property can be used as source or destination for the binding entry. - * Use this class to manipulate binding table's attributes. - * - * \code Here is a code snippet to show how it used. - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lView( lEntry, true, true); - * lView.SetProperty( lProp.GetName()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxPropertyEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxPropertyEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxPropertyEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxPropertyEntryView(); - //@} - - /** Get the property name from the binding entry. - * \return The property name. - */ - const char* GetProperty() const; - - /** Set the property name to the binding entry. - * \param pPropertyName The property name to set. - */ - void SetProperty(const char* pPropertyName); - - /** Get the entry type. - * \return Entry type as string "FbxPropertyEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h deleted file mode 100644 index a852cd2..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsemanticentryview.h -#ifndef _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxSemanticEntryView stores a binding corresponding to - * a semantic within a shader file. - * A shader semantic is a parameter, a constant or an operator. - * So a shader semantic could bind with FbxProperty ( parameter, constant) and FbxBindingOperator (operator). - * - * Here is a code snippet to show how it used. - * \code - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lSrcView( lEntry, true, true); - * lSrcView.SetProperty( lProp.GetHierarchicalName()); - * FbxSemanticEntryView lDstView( &pEntry, false, true ); - * lDstView.SetSemantic( lProp.Getname()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSemanticEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxSemanticEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxSemanticEntryView (FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false); - - //! Destructor. - virtual ~FbxSemanticEntryView(); - //@} - - /** Set the semantic to the binding entry. - * \param pSemantic The semantic string to set. - */ - void SetSemantic( const char* pSemantic ); - - /** Get the semantic from the binding entry. - * \param pAppendIndex \c true if the returned semantic append a index, \c false otherwise. - * \return The semantic. - */ - FbxString GetSemantic(bool pAppendIndex = true) const; - - /** Get the semantic index suffix. - * \return Semantic index suffix. - */ - int GetIndex() const; - - /** Get the entry type. - * \return Entry type as string "FbxSemanticEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h deleted file mode 100644 index 010ec50..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshadingconventions.h -#ifndef _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ -#define _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ - -#include - -#include - -//Predefined shader languages -#define FBXSDK_SHADING_LANGUAGE_HLSL "HLSL" -#define FBXSDK_SHADING_LANGUAGE_GLSL "GLSL" -#define FBXSDK_SHADING_LANGUAGE_CGFX "CGFX" -#define FBXSDK_SHADING_LANGUAGE_SFX "SFX" -#define FBXSDK_SHADING_LANGUAGE_MRSL "MentalRaySL" - -//Predefined rendering APIs -#define FBXSDK_RENDERING_API_DIRECTX "DirectX" -#define FBXSDK_RENDERING_API_OPENGL "OpenGL" -#define FBXSDK_RENDERING_API_MENTALRAY "MentalRay" -#define FBXSDK_RENDERING_API_PREVIEW "PreviewColorAPI" - -#define FBXSDK_IMPLEMENTATION_PREVIEW "ImplementationPreview" -#define FBXSDK_IMPLEMENTATION_MENTALRAY "ImplementationMentalRay" -#define FBXSDK_IMPLEMENTATION_CGFX "ImplementationCGFX" -#define FBXSDK_IMPLEMENTATION_HLSL "ImplementationHLSL" -#define FBXSDK_IMPLEMENTATION_SFX "ImplementationSFX" -#define FBXSDK_IMPLEMENTATION_OGS "ImplementaitonOGS" -#define FBXSDK_IMPLEMENTATION_NONE "ImplementationNone" - -//PROTEIN 1.0 conventions -#define FBXSDK_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FBXSDK_TYPE_LIGHT "KFbxLight" -#define FBXSDK_TYPE_PROCEDURALGEOMETRY "KFbxProceduralGeometry" -#define FBXSDK_TYPE_SURFACEMATERIAL "KFbxSurfaceMaterial" -#define FBXSDK_TYPE_TEXTURE "KFbxTexture" -#define FBXSDK_TYPE_SWATCHSCENE "KFbxSwatchScene" - -//PROTEIN 2.0 conventions -#define ADSK_TYPE_ENVIRONMENT "ADSKEnvironmentDefinition" -#define ADSK_TYPE_LIGHT "ADSKLightDefinition" -#define ADSK_TYPE_PROCEDURALGEOMETRY "ADSKProceduralGeometryDefinition" -#define ADSK_TYPE_SURFACEMATERIAL "ADSKSurfaceMaterialDefinition" -#define ADSK_TYPE_TEXTURE "ADSKTextureDefinition" -#define ADSK_TYPE_SWATCHSCENE "ADSKSwatchSceneDefinition" - -//ASSET Definition conventions -#define ADSK_UI_DEFINITION_URL "UIDefinition" - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h deleted file mode 100644 index 85d3c79..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacelambert.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ - -#include - -#include - -#include - -/** This class contains settings for Lambert Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceLambert : public FbxSurfaceMaterial -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceLambert,FbxSurfaceMaterial); - -public: - /** - * \name Material properties - */ - //@{ - - //! Emissive color property. - FbxPropertyT Emissive; - - /** Emissive factor property. This factor is used to - * attenuate the emissive color. - */ - FbxPropertyT EmissiveFactor; - - //! Ambient color property. - FbxPropertyT Ambient; - - /** Ambient factor property. This factor is used to - * attenuate the ambient color. - */ - FbxPropertyT AmbientFactor; - - //! Diffuse color property. - FbxPropertyT Diffuse; - - /** Diffuse factor property. This factor is used to - * attenuate the diffuse color. - */ - FbxPropertyT DiffuseFactor; - - /** NormalMap property. This property can be used to specify the distortion of the surface - * normals and create the illusion of a bumpy surface. - */ - FbxPropertyT NormalMap; - - /** Bump property. This property is used to distort the - * surface normal and create the illusion of a bumpy surface. - */ - FbxPropertyT Bump; - - /** Bump factor property. This factor is used to - * make a surface more or less bumpy. - */ - FbxPropertyT BumpFactor; - - //! Transparent color property. - FbxPropertyT TransparentColor; - - /** Transparency factor property. This property is used to make a - * surface more or less opaque (0 = opaque, 1 = transparent). - */ - FbxPropertyT TransparencyFactor; - - //! Displacement color property. - FbxPropertyT DisplacementColor; - - //! Displacement factor property. - FbxPropertyT DisplacementFactor; - - //! Vector displacement color property. - FbxPropertyT VectorDisplacementColor; - - //! Vector displacement factor property. - FbxPropertyT VectorDisplacementFactor; - - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sEmissiveDefault; - static const FbxDouble sEmissiveFactorDefault; - - static const FbxDouble3 sAmbientDefault; - static const FbxDouble sAmbientFactorDefault; - - static const FbxDouble3 sDiffuseDefault; - static const FbxDouble sDiffuseFactorDefault; - - static const FbxDouble3 sBumpDefault; - static const FbxDouble3 sNormalMapDefault; - static const FbxDouble sBumpFactorDefault; - - static const FbxDouble3 sTransparentDefault; - static const FbxDouble sTransparencyFactorDefault; - - static const FbxDouble3 sDisplacementDefault; - static const FbxDouble sDisplacementFactorDefault; - - static const FbxDouble3 sVectorDisplacementDefault; - static const FbxDouble sVectorDisplacementFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h deleted file mode 100644 index 5fff3f3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacematerial.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ - -#include - -#include - -#include - -/** This class contains material settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceMaterial : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceMaterial, FbxObject); - -public: - /** - * \name Standard Material Property Names - */ - //@{ - - static const char* sShadingModel; - static const char* sMultiLayer; - - static const char* sEmissive; - static const char* sEmissiveFactor; - - static const char* sAmbient; - static const char* sAmbientFactor; - - static const char* sDiffuse; - static const char* sDiffuseFactor; - - static const char* sSpecular; - static const char* sSpecularFactor; - static const char* sShininess; - - static const char* sBump; - static const char* sNormalMap; - static const char* sBumpFactor; - - static const char* sTransparentColor; - static const char* sTransparencyFactor; - - static const char* sReflection; - static const char* sReflectionFactor; - - static const char* sDisplacementColor; - static const char* sDisplacementFactor; - - static const char* sVectorDisplacementColor; - static const char* sVectorDisplacementFactor; - //@} - - /** - * \name Material Properties - */ - //@{ - FbxPropertyT ShadingModel; - FbxPropertyT MultiLayer; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxBool sMultiLayerDefault; - static const char* sShadingModelDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool SetColorParameter(FbxProperty pProperty, FbxColor const& pColor); - bool GetColorParameter(FbxProperty pProperty, FbxColor& pColor) const; - bool SetDoubleParameter(FbxProperty pProperty, double pDouble); - bool GetDoubleParameter(FbxProperty pProperty, double pDouble) const; - - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h deleted file mode 100644 index d7c952b..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacephong.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ - -#include - -#include - -#include - -/** This class contains settings for Phong Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfacePhong : public FbxSurfaceLambert -{ - FBXSDK_OBJECT_DECLARE(FbxSurfacePhong, FbxSurfaceLambert); - -public: - /** - * \name Material properties - */ - //@{ - //! Specular property. - FbxPropertyT Specular; - - /** Specular factor property. This factor is used to - * attenuate the specular color. - */ - FbxPropertyT SpecularFactor; - - /** Shininess property. This property controls the aspect - * of the shiny spot. It is the specular exponent in the Phong - * illumination model. - */ - FbxPropertyT Shininess; - - /** Reflection color property. This property is used to - * implement reflection mapping. - */ - FbxPropertyT Reflection; - - /** Reflection factor property. This property is used to - * attenuate the reflection color. - */ - FbxPropertyT ReflectionFactor; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sSpecularDefault; - static const FbxDouble sSpecularFactorDefault; - - static const FbxDouble sShininessDefault; - - static const FbxDouble3 sReflectionDefault; - static const FbxDouble sReflectionFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxtexture.h b/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxtexture.h deleted file mode 100644 index 6e34461..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/scene/shading/fbxtexture.h +++ /dev/null @@ -1,577 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_H_ - -#include - -#include - -#include - -/** This class is the base class for textures, ie classes FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * It describes image mapping on top of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxTexture : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxTexture, FbxObject); - -public: - /** - * \name Texture Properties - */ - //@{ - /** \enum EUnifiedMappingType Internal enum for texture mapping types. - * Includes mapping types and planar mapping normal orientations. - * Use SetMappingType(), GetMappingType(), SetPlanarMappingNormal() - * and GetPlanarMappingNormal() to access these values. - */ - enum EUnifiedMappingType - { - eUMT_UV, //! Maps to EMappingType::eUV. - eUMT_XY, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalZ. - eUMT_YZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalX. - eUMT_XZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalY. - eUMT_SPHERICAL, //! Maps to EMappingType::eSpherical. - eUMT_CYLINDRICAL, //! Maps to EMappingType::eCylindrical. - eUMT_ENVIRONMENT, //! Maps to EMappingType::eEnvironment. - eUMT_PROJECTION, //! Unused. - eUMT_BOX, //! DEPRECATED! Maps to EMappingType::eBox. - eUMT_FACE, //! DEPRECATED! Maps to EMappingType::eFace. - eUMT_NO_MAPPING, //! Maps to EMappingType::eNull. - }; - - /** \enum ETextureUse6 Internal enum for texture usage. - * For example, the texture might be used as a standard texture, as a shadow map, as a bump map, etc. - * Use SetTextureUse() and GetTextureUse() to access these values. - */ - enum ETextureUse6 - { - eTEXTURE_USE_6_STANDARD, //! Maps to ETextureUse::eStandard. - eTEXTURE_USE_6_SPHERICAL_REFLEXION_MAP, //! Maps to ETextureUse::eSphericalReflectionMap. - eTEXTURE_USE_6_SPHERE_REFLEXION_MAP, //! Maps to ETextureUse::eSphereReflectionMap. - eTEXTURE_USE_6_SHADOW_MAP, //! Maps to ETextureUse::eShadowMap. - eTEXTURE_USE_6_LIGHT_MAP, //! Maps to ETextureUse::eLightMap. - eTEXTURE_USE_6_BUMP_NORMAL_MAP //! Maps to ETextureUse::eBumpNormalMap. - }; - - /** \enum EWrapMode Wrap modes. - * Use SetWrapMode(), GetWrapModeU() and GetWrapModeV() to access these values. - */ - enum EWrapMode - { - eRepeat, //! Apply the texture over and over on the model's surface until the model is covered. This is the default setting. - eClamp //! Apply the texture to a model only once, using the color at the ends of the texture as the "filter". - }; - - /** \enum EBlendMode Blend modes. - */ - enum EBlendMode - { - eTranslucent, //! The texture is transparent, depending on the Alpha settings. - eAdditive, //! The color of the texture is added to the previous texture. - eModulate, //! The color value of the texture is multiplied by the color values of all previous layers of texture. - eModulate2, //! The color value of the texture is multiplied by two and then multiplied by the color values of all previous layers of texture. - eOver //! The texture is opaque. - }; - - /** \enum EAlignMode Align indices for cropping. - */ - enum EAlignMode - { - eLeft, //! Left cropping. - eRight, //! Right cropping. - eTop, //! Top cropping. - eBottom //! Bottom cropping. - }; - - /** \enum ECoordinates Texture coordinates. - */ - enum ECoordinates - { - eU, //! U axis. - eV, //! V axis. - eW //! W axis. - }; - - // Type description - - /** This property handles the use of textures. - * Default value is eTEXTURE_USE_6_STANDARD. - */ - FbxPropertyT TextureTypeUse; - - /** This property handles the default alpha value for textures. - * Default value is 1.0 - */ - FbxPropertyT Alpha; - - - // Mapping information - - /** This property handles the texture mapping types. - * Default value is eUMT_UV. - */ - FbxPropertyT CurrentMappingType; - - /** This property handles the texture wrap modes in U. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeU; - - /** This property handles the texture wrap modes in V. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeV; - - /** This property handles the swap UV flag. - * If swap UV flag is enabled, the texture's width and height are swapped. - * Default value is false. - */ - FbxPropertyT UVSwap; - - /** This property handles the PremultiplyAlpha flag. - * If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - * Default value is true. - */ - FbxPropertyT PremultiplyAlpha; - - // Texture positioning - - /** This property handles the default translation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Translation; - - /** This property handles the default rotation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Rotation; - - /** This property handles the default scale vector. - * Default value is FbxDouble3(1.0,1.0,1.0). - */ - FbxPropertyT Scaling; - - /** This property handles the rotation pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT RotationPivot; - - /** This property handles the scaling pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT ScalingPivot; - - // Blend mode - /** This property handles the texture blend mode. - * Default value is eAdditive. - */ - FbxPropertyT CurrentTextureBlendMode; - - // UV set to use. - /** This property handles the use of UV sets. - * Default value is "default". - */ - FbxPropertyT UVSet; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "World", "Object" and "Tangent" - * Default value is "Object". - */ - static const char* sVectorSpace ; - static const char* sVectorSpaceWorld ; - static const char* sVectorSpaceObject ; - static const char* sVectorSpaceTangent ; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "Floating-point Absolute" and "Signed Encoding" - * Default value is "Floating-point Absolute". - */ - static const char* sVectorEncoding ; - static const char* sVectorEncodingFP ; - static const char* sVectorEncodingSE ; - - - /** Resets the default texture values. - */ - virtual void Reset(); - - /** Sets the swap UV flag. - * \param pSwapUV Set to \c true if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - void SetSwapUV(bool pSwapUV); - - /** Returns the swap UV flag. - * \return \c True if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - bool GetSwapUV() const; - - /** Sets the PremultiplyAlpha flag. - * \param pPremultiplyAlpha Set to \c true if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - void SetPremultiplyAlpha(bool pPremultiplyAlpha); - - /** Returns the PremultiplyAlpha flag. - * \return \c True if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - bool GetPremultiplyAlpha() const; - - /** \enum EAlphaSource Controls if the Alpha computation of the current texture comes from the Alpha channel, RGB Intensity channel, or if there is No Alpha. - */ - enum EAlphaSource - { - eNone, //! No Alpha. - eRGBIntensity, //! RGB Intensity (computed). - eBlack //! Alpha channel. Black is 100% transparency, white is opaque. - }; - - /** Sets the alpha source. - * \param pAlphaSource The alpha source identifier. - */ - void SetAlphaSource(EAlphaSource pAlphaSource); - - /** Returns the alpha source. - * \return The alpha source identifier for this texture. - */ - EAlphaSource GetAlphaSource() const; - - /** Sets cropping. - * \param pLeft Left cropping value. - * \param pTop Top cropping value. - * \param pRight Right cropping value. - * \param pBottom Bottom cropping value. - * \remarks The defined rectangle is not checked for invalid values. - * The caller must verify that the rectangle - * is meaningful for this texture. - */ - void SetCropping(int pLeft, int pTop, int pRight, int pBottom); - - /** Returns left cropping. - * \return The left side of the cropping rectangle. - */ - int GetCroppingLeft() const; - - /** Returns top cropping. - * \return The top side of the cropping rectangle. - */ - int GetCroppingTop() const; - - /** Returns right cropping. - * \return The right side of the cropping rectangle. - */ - int GetCroppingRight() const; - - /** Returns bottom cropping. - * \return The bottom side of the cropping rectangle. - */ - int GetCroppingBottom() const; - - /** \enum EMappingType Texture mapping types. - */ - enum EMappingType - { - eNull, //! No texture mapping defined. - ePlanar, //! Apply texture to the model viewed as a plane. - eSpherical, //! Wrap texture around the model as if it was a sphere. - eCylindrical, //! Wrap texture around the model as if it was a cylinder. - eBox, //! Wrap texture around the model as if it was a box. - eFace, //! Apply texture to the model viewed as a face. - eUV, //! Apply texture to the model according to UVs. - eEnvironment //! Texture is an environment map. - }; - - /** Sets the mapping type. - * \param pMappingType The mapping type identifier. - */ - void SetMappingType(EMappingType pMappingType); - - /** Returns the mapping type. - * \return The mapping type identifier. - */ - EMappingType GetMappingType() const; - - /** \enum EPlanarMappingNormal Planar mapping normal orientations. - */ - enum EPlanarMappingNormal - { - ePlanarNormalX, //! Normals are in the direction of the X axis, mapping plan is in the YZ axis. - ePlanarNormalY, //! Normals are in the direction of the Y axis, mapping plan is in the XZ axis. - ePlanarNormalZ //! Normals are in the direction of the Z axis, mapping plan is in the XY axis. - }; - - /** Sets the normal orientations for planar mapping. - * \param pPlanarMappingNormal The identifier for planar mapping normal orientation. - */ - void SetPlanarMappingNormal(EPlanarMappingNormal pPlanarMappingNormal); - - /** Returns the normal orientations for planar mapping. - * \return The identifier for planar mapping normal orientation. - */ - EPlanarMappingNormal GetPlanarMappingNormal() const; - - /** \enum ETextureUse Texture uses. - */ - enum ETextureUse - { - eStandard, //! Standard texture use (ex. image) - eShadowMap, //! Shadow map - eLightMap, //! Light map - eSphericalReflectionMap, //! Spherical reflection map: Object reflects the contents of the scene - eSphereReflectionMap, //! Sphere reflection map: Object reflects the contents of the scene from only one point of view - eBumpNormalMap //! Bump map: Texture contains two direction vectors, that are used to convey relief in a texture. - }; - - /** Sets the texture use. - * \param pTextureUse The texture use identifier. - */ - void SetTextureUse(ETextureUse pTextureUse); - - /** Returns the texture use. - * \return The texture use identifier. - */ - ETextureUse GetTextureUse() const; - - - /** Sets the U and V wrap mode. - * \param pWrapU Wrap mode identifier. - * \param pWrapV Wrap mode identifier. - */ - void SetWrapMode(EWrapMode pWrapU, EWrapMode pWrapV); - - /** Returns the U wrap mode. - * \return U wrap mode identifier. - */ - EWrapMode GetWrapModeU() const; - - /** Returns the V wrap mode. - * \return V wrap mode identifier. - */ - EWrapMode GetWrapModeV() const; - - - /** Sets the blend mode. - * \param pBlendMode Blend mode identifier. - */ - void SetBlendMode(EBlendMode pBlendMode); - - /** Returns the blend mode. - * \return Blend mode identifier. - */ - EBlendMode GetBlendMode() const; - - //@} - - /** - * \name Default Values Management By Vectors - * This set of functions provides direct access to the default values in vector base. - */ - //@{ - - /** Sets the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - */ - inline void SetDefaultT(const FbxVector4& pT) { Translation.Set( pT ); } - - /** Returns the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - * \return The input parameter completed with appropriate data. - */ - FbxVector4& GetDefaultT(FbxVector4& pT) const; - - /** Sets the default rotation vector. - * \param pR The first element is the texture rotation around the - * U axis in degrees. The second element is the texture rotation - * around the V axis in degrees. The third element is the texture - * rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the - * vector product of the U and V axes that is W = U x V. - */ - inline void SetDefaultR(const FbxVector4& pR) { Rotation.Set( FbxDouble3(pR[0],pR[1],pR[2]) ); } - - /** Returns the default rotation vector. - * \param pR First element is the texture rotation around the - * U axis in degrees. Second element is the texture rotation - * around the V axis in degrees. Third element is the texture - * rotation around the W axis in degrees. - * \return Input parameter filled with appropriate data. - * \remarks The W axis is oriented towards the result of the - * vector product of the U axis and V axis i.e. W = U x V. - */ - FbxVector4& GetDefaultR(FbxVector4& pR) const; - - /** Sets the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - inline void SetDefaultS(const FbxVector4& pS) { Scaling.Set( FbxDouble3(pS[0],pS[1],pS[2]) ); } - - /** Returns the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - FbxVector4& GetDefaultS(FbxVector4& pS) const; - - //@} - - /** - * \name Default Alpha Value - */ - //@{ - - /** Sets the default alpha. - * \param pAlpha A value on a scale from 0 to 1, with 0 being transparent. - */ - void SetDefaultAlpha(double pAlpha); - - /** Returns the default alpha. - * \return A value on a scale from 0 to 1, with 0 being transparent. - */ - double GetDefaultAlpha() const; - - //@} - - /** - * \name Default Values Management By Numbers - * This set of functions provides direct access to the default values in number base. - * U, V and W coordinates are mapped to the X, Y and Z coordinates of the default vectors - * found in the "Default Values By Vector" section. - */ - //@{ - - /** Sets translation. - * \param pU Horizontal translation applied to a texture. A displacement - * of one unit is equal to the texture's width after applying U scaling. - * \param pV Vertical translation applied to a texture. A displacement - * of one unit is equal to the texture's height after applying V scaling. - */ - void SetTranslation(double pU,double pV); - - /** Returns translation applied to the texture width. - * \remarks A displacement of one unit is equal to the texture's width - * after applying U scaling. - */ - double GetTranslationU() const; - - /** Returns translation applied to the texture height. - * \remarks A displacement of one unit is equal to the texture's height - * after applying V scaling. - */ - double GetTranslationV() const; - - /** Sets rotation. - * \param pU Texture rotation around the U axis in degrees. - * \param pV Texture rotation around the V axis in degrees. - * \param pW Texture rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the vector product of - * the U and V axes that is W = U x V. - */ - void SetRotation(double pU, double pV, double pW = 0.0); - - //! Returns the texture rotation around the U axis in degrees. - double GetRotationU() const; - - //! Returns the texture rotation around the V axis in degrees. - double GetRotationV() const; - - //! Returns the texture rotation around the W axis in degrees. - double GetRotationW() const; - - /** Sets scale. - * \param pU Scale applied to the texture width. - * \param pV Scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - void SetScale(double pU,double pV); - - /** Returns scale applied to the texture width. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleU() const; - - /** Returns scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleV() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxTexture const& pTexture) const; - - void SetUVTranslation(FbxVector2& pT); - FbxVector2& GetUVTranslation(); - void SetUVScaling(FbxVector2& pS); - FbxVector2& GetUVScaling(); - - FbxString GetTextureType(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - void Init(); - - int mCropping[4]; // not a prop - - EAlphaSource mAlphaSource; // now unused in MB (always set to None); not a prop - EMappingType mMappingType; // CurrentMappingType - EPlanarMappingNormal mPlanarMappingNormal; // CurrentMappingType - - // Unsupported parameters in the FBX SDK, these are declared but not accessible. - // They are used to keep imported and exported data identical. - FbxVector2 mUVScaling; // not a prop - FbxVector2 mUVTranslation; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTexture::EUnifiedMappingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::ETextureUse6&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EWrapMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxclonemanager.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxclonemanager.h deleted file mode 100644 index 1d18826..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxclonemanager.h +++ /dev/null @@ -1,284 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclonemanager.h -#ifndef _FBXSDK_UTILS_CLONE_MANAGER_H_ -#define _FBXSDK_UTILS_CLONE_MANAGER_H_ - -#include - -#include -#include - -#include - -/** The clone manager is a utility for cloning entire networks of FbxObject. - * Options are available for specifying how the clones inherit the connections - * of the original. - * - * Networks of FbxObject (inter-connected objects by OO, OP, PO or PP connections) - * can be cloned. How the connections of clones are handled depends on mSrcPolicy and mExternalDstPolicy. - * - * To clone FbxObject instances and their dependents, put them into a CloneSet - * and pass the CloneSet to this class: - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * cloneSet.Insert(someObject, defaultCloneOptions); - * cloneManager.AddDependents(cloneSet, someObject, defaultCloneOptions); - * cloneManager.Clone(cloneSet, scene) - * \endcode - * - * \remark If cloning occurs on the same scene as the original objects, the system will contain duplicated names. Although this is acceptable in FBX, - * some applications may not behave correctly with duplicated names. It is the responsability of the caller to resolve any conflicts. - * - * \see FbxCloneManager::CloneSetElement - * \see FbxCloneManager::CloneSet - * \nosubgrouping - */ -class FBXSDK_DLL FbxCloneManager -{ -public: - - //! Maximum depth to clone dependents. - static const int sMaximumCloneDepth; - - /** Connect to objects that are connected to original object. - * This is a flag to mSrcPolicy or mExternalDstPolicy. - */ - static const int sConnectToOriginal; - - /** Connect to clones of objects that are connected to original object. - * (only if those original objects are also in the clone set) - * This is a flag to mSrcPolicy. - */ - static const int sConnectToClone; - - /** This represents an element in FbxCloneManager::CloneSet to be cloned. - * This class contains the option for specifying how connections are cloned and the - * cloned object. - * \see FbxCloneManager - * \see FbxCloneManager::CloneSet - */ - struct FBXSDK_DLL CloneSetElement - { - public: - /** Constructor. - * \param pSrcPolicy Specify how to handle source connections. Valid values are 0, sConnectToOriginal, - * sConnectToClone or sConnectToOriginal|sConnectToClone. - * \param pExternalDstPolicy Specify how to handle destination connections to objects NOT in - * the clone set. Valid values are 0 or sConnectToOriginal. - * \param pCloneType Specify the type of cloning. FbxObject::Clone uses the same parameter. - */ - CloneSetElement( int pSrcPolicy = 0, - int pExternalDstPolicy = 0, - FbxObject::ECloneType pCloneType = FbxObject::eReferenceClone ); - - //! the type of cloning to perform - FbxObject::ECloneType mType; - - /** Policy on how to handle source connections on the original object. Valid values are 0 - * or any bitwise OR'd combination of sConnectToOriginal, and sConnectToClone. - */ - int mSrcPolicy; - - /** policy on how to handle destination connections on the original object to - * objects NOT in the clone set. (Destination connections to objects in the set - * are handled by that object's source policy) Valid values are 0 or sConnectToOriginal. - */ - int mExternalDstPolicy; - - /** This is a pointer to the newly created clone. - * It is set after the call to FbxCloneManager::Clone() - */ - FbxObject* mObjectClone; - - /** Internal use. - */ - bool mLayerElementProcessed; - bool mConnectionsProcessed; - }; - - /** The CloneSet is a collection of pointers to objects that will be cloned in Clone() - * Attached to each object is a CloneSetElement. Its member variables dictate how - * the corresponding object will be cloned, and how it will inherit connections - * on the original object. - */ - typedef FbxMap CloneSet; - - /** Constructor - */ - FbxCloneManager(); - - /** Destructor - */ - virtual ~FbxCloneManager(); - - /** This function simplifies the process of cloning one object and all its depedency graph by automatically preparing - * the CloneSet and calling the Clone method using the code below. - * - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * FbxObject* lReturnObj = (FbxObject*)pObject; - * - * cloneManager.AddDependents(cloneSet, pObject, defaultCloneOptions, FbxCriteria::ObjectType(FbxObject::ClassId)); - * cloneSet.Insert((FbxObject*)pObject, defaultCloneOptions); - * - * // collect all the FbxCharacters, if any (these are indirect dependencies not visible by the AddDependents recursion) - * FbxArray lExtras; - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lObj = lIterator->GetKey(); - * cloneManager.LookForIndirectDependent(lObj, cloneSet, lExtras); - * lIterator = lIterator->Successor(); - * } - * - * // and add them to cloneSet - * for (int i = 0, c = lExtras.GetCount(); i < c; i++) - * { - * FbxObject* lObj = lExtras[i]; - * cloneManager.AddDependents(cloneSet, lObj, defaultCloneOptions); - * cloneSet.Insert(lObj, defaultCloneOptions); - * } - * - * // clone everything - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // get the clone of pObject - * CloneSet::RecordType* lIterator = cloneSet.Find((FbxObject* const)pObject); - * if( lIterator ) - * { - * lReturnObj = lIterator->GetValue().mObjectClone; - * } - * } - * return lReturnObj; - * \endcode - * - * \param pObject Object to clone. - * \param pContainer This object (typically a scene or document) will contain the new clones. - * \return The clone of \e pObject if all its depedency graph have been cloned successfully, NULL otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - * - * Example: - * \code - * FbxObject* lObj2BCloned = ... - * FbxNode* myNewParent = FbxNode::Create(lNewScene, "Clone"); - * lNewScene->GetRootNode()->AddChild(lN); - * - * FbxCloneManager cloneManager; - * FbxNode *lClone = (FbxNode*)cloneManager.Clone(lObj2BCloned); - * - * // make sure the cloned object is connected to the scene - * lClone->ConnectDstObject(lNewScene); - * \endcode - */ - static FbxObject* Clone(const FbxObject* pObject, FbxObject* pContainer = NULL); - - /** Clone all objects in the set using the given policies for duplication - * of connections. Each CloneSetElement in the set will have its mObjectClone - * pointer set to the newly created clone. The following code shows how to access the cloned objects: - * - * \code - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // access the clones - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lOriginalObject = lIterator->GetKey(); - * FbxObject* lClonedObject = lIterator->GetValue().mObjectClone; - * lIterator = lIterator->Successor(); - * } - * } - * \endcode - * - * \param pSet Set of objects to clone - * \param pContainer This object (typically a scene or document) will contain the new clones - * \return true if all objects were cloned, false otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - */ - virtual bool Clone( CloneSet& pSet, FbxObject* pContainer = NULL ) const; - - /** Add all dependents of the given object to the CloneSet. - * Dependents of items already in the set are ignored to prevent - * infinite recursion on cyclic dependencies. - * \param pSet The set to add items. - * \param pObject Object to add dependents to - * \param pCloneOptions - * \param pTypes Types of dependent objects to consider - * \param pDepth Maximum recursive depth. Valid range is [0,sMaximumCloneDepth] - * - * The following example shows how to perform multiple calls to AddDependents() to collect several - * subgraphs to be cloned: - * \code - * FbxObject* lRoot = ... // initialized with the root of the graph to be cloned - * FbxCharacter* lCharacter = ... // points to the FbxCharacter driving the character defined by "lRoot" graph - * - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * - * cloneManager.AddDependents(cloneSet, lRoot); - * cloneSet.Insert(lRoot, defaultCloneOptions); - * - * cloneManager.AddDependents(cloneSet, lCharacter); - * cloneSet.Insert(lCharacter, defaultCloneOptions); - * - * \endcode - */ - virtual void AddDependents( CloneSet& pSet, - const FbxObject* pObject, - const CloneSetElement& pCloneOptions = CloneSetElement(), - FbxCriteria pTypes = FbxCriteria::ObjectType(FbxObject::ClassId), - int pDepth = sMaximumCloneDepth ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxObject* Clone(const FbxObject* pObject, CloneSet* pSet, FbxObject* pContainer = NULL); - -private: - friend class FbxScene; - - bool ReAssignLayerElements( FbxCloneManager::CloneSet::RecordType* pIterator, const FbxCloneManager::CloneSet& pSet) const; - bool CloneConnections( CloneSet::RecordType* pIterator, const CloneSet& pSet) const; - bool CheckIfCloneOnSameScene(const FbxObject* pObject, FbxObject* pContainer) const; - - virtual void LookForIndirectDependent(const FbxObject* pObject, CloneSet& pSet, FbxArray& lIndirectDepend); - virtual bool NeedToBeExcluded(FbxObject* lObj) const; - - bool mCloneOnSameScene; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#define CloneSetCast(x) ((FbxCloneManager::CloneSet*)(x)) -#define CloneSetElementCast(x) ((FbxCloneManager::CloneSetElement*)((x!=NULL)?&(x->GetValue()):NULL)) - -#endif /* _FBXSDK_UTILS_CLONE_MANAGER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h deleted file mode 100644 index ada538f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformationsevaluator.h -#ifndef _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ -#define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ - -#include - -#include - -class FbxNode; -class FbxMesh; -class FbxTime; -class FbxAnimLayer; -class FbxPose; -class FbxCluster; -class FbxVector4; -class FbxAMatrix; -class FbxDualQuaternion; - -class FBXSDK_DLL FbxDeformationsEvaluator -{ -public: - /** Configure this object to process the given mesh. - * \param pNode Node object owner of the mesh. - * \param pMesh Processed object. - * \return \c true if \e pMesh is connected to \e pNode and the internal data allocation succeeded. */ - bool Init(const FbxNode* pNode, const FbxMesh* pMesh); - - /** If this object is properly configured, evaluates the shape deformation of the mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime); - - /** If this object is properly configured, evaluates the skin deformation of the received mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \param pGX Local to World matrix to express the returned vertices in World space. - * \param pPose If defined, use the pose to evaluate the current transform. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX=NULL, const FbxPose* pPose=NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDeformationsEvaluator(); - virtual ~FbxDeformationsEvaluator(); - -private: - void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose); - void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void Cleanup(); - - bool mIsConfigured; - FbxNode* mNode; - FbxMesh* mMesh; - FbxAnimLayer* mAnimLayer; - - int mVertexCount; - FbxVector4* mDstVertexArray; - FbxVector4* mVertexArrayLinear; - FbxVector4* mVertexArrayDQ; - - FbxAMatrix* mClusterDeformation; - double* mClusterWeight; - FbxDualQuaternion* mDQClusterDeformation; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h deleted file mode 100644 index 9656754..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxembeddedfilesaccumulator.h -#ifndef _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ -#define _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ - -#include - -#include - -#include - -/** This processor is used to accumulate the list of file dependencies (embedded files) in a hierarchy of objects. - * It retrieves information of embedded files from objects and accumulates them to its class member mEmbeddedFiles. - * \see FbxProcessor::ProcessCollection(FbxCollection *) - * \nosubgrouping - */ -class FBXSDK_DLL FbxEmbeddedFilesAccumulator : public FbxProcessor -{ -public: - /** - * Map the object to the property's hierarchical name. - * An object may use the same file on multiple properties, hence the - * set. - * Each property may have multiple URLs, separate by |. - * We thus need to store the index along with the property. - */ - //@{ - struct PropertyUrlIndex - { - FbxString mPropName; - int mIndex; - - PropertyUrlIndex() : mIndex(0) - { - } - - PropertyUrlIndex(const FbxString& pUrl, int pIndex) - : mPropName(pUrl) - , mIndex(pIndex) - { - } - }; - - //! Comparer for PropertyUrlIndexSet, which outputs consistent partial orders for PropertyUrlIndex pairs - struct FbxPropertyUrlIndexCompare - { - inline int operator()(const PropertyUrlIndex& pKeyA, const PropertyUrlIndex& pKeyB) const - { - if( pKeyA.mPropName < pKeyB.mPropName ) return -1; - if( pKeyB.mPropName < pKeyA.mPropName ) return 1; - if( pKeyA.mIndex < pKeyB.mIndex ) return -1; - if( pKeyB.mIndex < pKeyA.mIndex ) return 1; - return 0; - } - }; - - typedef FbxSet PropertyUrlIndexSet; - - typedef FbxMap ObjectPropertyMap; - - struct EmbeddedFileInfo - { - FbxString mOriginalPropertyUrl; - ObjectPropertyMap mConsumers; - }; - //@} - - /** - * Map the (absolute filename) to which object/properties use this file. - * To simply get the list of file dependencies, iterate through this map and query - * all the keys. - */ - //@{ - typedef FbxMap EmbeddedFilesMap; - - EmbeddedFilesMap mEmbeddedFiles; - //@} - -public: - - /** Constructor. - * The name is not important. - * The property filter is a list of strings, property names, which are automatically ignored when - * encountered. Property names must be the full hierarchical property name (ie: parent|child|child). - * - * \param pManager Reference to the SDK manager. - * \param pName Name of this object. - * \param pPropertyFilter Reference to the property filter. - */ - FbxEmbeddedFilesAccumulator(FbxManager& pManager, const char* pName, FbxSet& pPropertyFilter); - virtual ~FbxEmbeddedFilesAccumulator(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool internal_ProcessObject(FbxObject* pObject); - FbxSet mPropertyFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h deleted file mode 100644 index 1ecd53d..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h +++ /dev/null @@ -1,345 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryconverter.h -#ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ -#define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ - -#include - -#include - -#include - -class FbxManager; -class FbxMesh; -class FbxPatch; -class FbxNurbs; -class FbxNurbsSurface; -class FbxNurbsCurve; -class FbxWeightedMapping; -class FbxSurfaceEvaluator; -class FbxScene; -class FbxNode; -class FbxNodeAttribute; -class FbxGeometry; - -/** -* This class provides the functionality to convert geometry nodes -* attributes (FbxMesh, FbxNurbs and FbxPatch) and mainly focuses on the two -* major categories: Triangulation and conversion between NURBS and Patches surfaces. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxGeometryConverter -{ -public: - /** \name Triangulation Utilities */ - //@{ - /** Triangulate all node attributes in the scene that can be triangulated. - * \param pScene The scene to iterate through to triangulate meshes. - * \param pReplace If \c true, replace the original meshes with the new triangulated meshes on all the nodes, and delete the original meshes. Otherwise, original meshes are left untouched. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return \c true if all node attributes that can be triangulated were triangulated successfully. - * \remark The function will still iterate through all meshes regardless if one fails to triangulate, but will return false in that case. This function - * currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. */ - bool Triangulate(FbxScene* pScene, bool pReplace, bool pLegacy=false); - - /** Triangulate a node attribute, if supported, and preserve the skins and shapes animation channels. - * \param pNodeAttribute Pointer to the node containing the geometry to triangulate. - * \param pReplace If \c true, replace the original geometry with the new triangulated geometry on the nodes, and delete the original geometry. - * Otherwise, the original geometry is left untouched, the new one is added to the nodes, and becomes the default one. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return The newly created node attribute if successful, otherwise NULL. If node attribute type is not supported by triangulation, it returns the original node attribute. - * \remark This function currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. If the node attribute does not support triangulation, - * or if it is already triangulated, this function will return pNodeAttribute. */ - FbxNodeAttribute* Triangulate(FbxNodeAttribute* pNodeAttribute, bool pReplace, bool pLegacy=false); - - /** Compute a "vertex-correspondence" table that helps passing from source to destination geometry. - * \param pSrcGeom Pointer to the source geometry. - * \param pDstGeom Pointer to the destination geometry. - * \param pSrcToDstWeightedMapping Pointer to the weighted mapping table. - * \param pSwapUV Set to \c true to swap UVs. - * \return \c true on success, \c false if the function fails to compute the correspondence. - * \remark Skins and shapes are also converted to fit the alternate geometry. */ - bool ComputeGeometryControlPointsWeightedMapping(FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom, FbxWeightedMapping* pSrcToDstWeightedMapping, bool pSwapUV=false); - //@} - - /** - * \name Geometry Conversion - */ - //@{ - /** Convert from patch to nurb. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb or \c NULL if the conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbs* ConvertPatchToNurbs(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb. Use this function to preserve the patch's - * skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsInPlace(FbxNode* pNode); - - /** Convert a patch to nurb surface. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb surface or \c NULL if conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbsSurface* ConvertPatchToNurbsSurface(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb surface. Use this function to preserve - * the patch's skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a FbxNurbs to a FbxNurbsSurface - * \param pNurbs Pointer to the original nurb - * \return A FbxNurbsSurface that is equivalent to the original nurb. - */ - FbxNurbsSurface* ConvertNurbsToNurbsSurface( FbxNurbs* pNurbs ); - - /** Convert a FbxNurbsSurface to a FbxNurbs - * \param pNurbs Pointer to the original nurbs surface - * \return A FbxNurbs that is equivalent to the original nurbs surface. - */ - FbxNurbs* ConvertNurbsSurfaceToNurbs( FbxNurbsSurface* pNurbs ); - - /** Convert a nurb, contained in a node, to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurb. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a nurb contained in a node to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurbs surface. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsSurfaceToNurbsInPlace(FbxNode* pNode); - //@} - - /** - * \name Nurb UV and Links Swapping - */ - //@{ - /** Flip UV and/or skin clusters of a nurb. - * \param pNurbs Pointer to the Source nurb. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbs, or \c NULL if the function fails. - */ - FbxNurbs* FlipNurbs(FbxNurbs* pNurbs, bool pSwapUV, bool pSwapClusters); - - /** Flip UV and/or skin clusters of a nurb surface. - * \param pNurbs Pointer to the Source nurb surface. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbsSurface, or \c NULL if the function fails. - */ - FbxNurbsSurface* FlipNurbsSurface(FbxNurbsSurface* pNurbs, bool pSwapUV, bool pSwapClusters); - //@} - - /** - * \name Normals By Polygon Vertex Emulation - */ - //@{ - /** Emulate normals by polygon vertex mode for a mesh. - * \param pMesh Pointer to the mesh object. - * \return \c true on success, \c false if the number of normals in the - * mesh and in its associated shapes don't match the number of polygon - * vertices. - * \remarks For applications that only supports normals by control points, - * this function duplicates control points to equal the - * number of polygon vertices. skins and shapes are also converted. - * As preconditions: - * -# polygons must have been created - * -# the number of normals in the mesh and in its associated shapes must match the - * number of polygon vertices. - */ - bool EmulateNormalsByPolygonVertex(FbxMesh* pMesh); - - /** Create edge smoothing information from polygon-vertex mapped normals. - * Existing smoothing information is removed and edge data is created if - * none exists on the mesh. - * \param pMesh The mesh used to generate edge smoothing. - * \return \c true on success, \c false otherwise. - * \remarks The edge smoothing data is placed on Layer 0 of the mesh. - * Normals do not need to be on Layer 0, since the first layer with - * per polygon vertex normals is used. - */ - bool ComputeEdgeSmoothingFromNormals( FbxMesh* pMesh ) const; - - /** Convert edge smoothing to polygon smoothing group. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted. - * \return \c true on success, \c false otherwise. - * \remarks The smoothing group is bitwise. Each bit of the integer represents - * one smoothing group. Therefore, there is a maximum of 32 smoothing groups. - */ - bool ComputePolygonSmoothingFromEdgeSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - - /** Convert polygon smoothing group to edge smoothing. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted - * \return \c true on success, \c false otherwise. - */ - bool ComputeEdgeSmoothingFromPolygonSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - //@} - - /** \name Split Mesh Per Materials */ - //@{ - /** Split all the mesh in the scene per material. - * \param pScene The scene to iterate through to split meshes. - * \param pReplace If \c true, replace the original mesh with new ones and delete the original meshes, but *only* if they got split into multiple meshes, otherwise they are left untouched. - * \return \c true if all splitable mesh were successfully split, \c false otherwise. - * \remark The function will still iterate through all meshes regardless if one fails to split, but will return false in that case. */ - bool SplitMeshesPerMaterial(FbxScene* pScene, bool pReplace); - - /** Split mesh per material. - * \param pMesh The mesh that will be split if it has multiple materials assigned. - * \param pReplace If \c true, replace the original mesh with new one and delete the original mesh, but *only* if they got split into multiple meshes, otherwise left untouched. - * \return \c true on success, \c false otherwise. - * \remark The function will fail if the mapped material is not per face (FbxLayerElement::eByPolygon) or if a material is multi-layered. It will create as many meshes as - * there are materials applied to it. If one mesh have some polygons with material A, some polygons with material B, and some polygons with NO material, 3 meshes distinct - * will be created. The newly created meshes will be automatically attached to the same FbxNode that holds the original FbxMesh. If the original mesh have tangents, they will - * be regenerated on the new meshes. */ - bool SplitMeshPerMaterial(FbxMesh* pMesh, bool pReplace); - //@} - - /** Re-parent nodes at root node level under a new node to re-center them at world center. - * Basically, this function calculates the scene bounding box in world coordinates, and test if the center of that bounding box distance from the - * world center is larger or equal than the threshold. If true, a new node with the proper negative offset position will become the new parent of all nodes at root node level. - * \param pScene The scene to process. - * \param pThreshold Threshold at which all nodes will be re-centered. - * \return \c true if any nodes were re-centered, otherwise \c false. */ - bool RecenterSceneToWorldCenter(FbxScene* pScene, FbxDouble pThreshold); - - /** - * Merge multiple meshes to one mesh. - * The method will merge: - * a) mesh vertex; - * b) mesh polygon; - * c) mesh edge; - * d) all mesh elements; only the layer 0 elements is merged. - * e) if there are skins for old mesh, merge these skins. The new skin clusters link to old skeletons. - * - * \param pMeshNodes FBX nodes that hold multiple meshes. These meshes will be merged. - * \param pNodeName Name of new mesh node. - * \param pScene The scene that will contain the new mesh node. - * \return The new mesh node if merge successfully, otherwise NULL is returned. - * \remarks This method creates a new mesh, leaving the source mesh unchanged. - * The transform of new mesh node is: translate (0, 0, 0), rotation (0, 0, 0), scale (1, 1, 1). - * For layer element material, normal, smoothing, UV set, vertex color, binormal, tangent and polygon group, - * if any mesh misses these element, the merge for this kind of element is skipped. - * For layer element crease, hole, visibility and user data, if any mesh has such element, the kind of element - * will be merged. The missing element will be filled with default values. - * For meshes with skin binding, if the pose of frame 0 is different with bind pose, the new mesh will be distorted. - */ - FbxNode* MergeMeshes(FbxArray& pMeshNodes, const char* pNodeName, FbxScene* pScene); - - /** - * Cleanup or remove degenerated meshes. - * \param pScene The scene to process. - * \param pAffectedNodes The list of nodes that have been affected by this operation. - * \remarks If the cleaned-up mesh becomes invalid, it is removed entirely. - */ - void RemoveBadPolygonsFromMeshes(FbxScene* pScene, FbxArray* pAffectedNodes = NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxGeometryConverter(FbxManager* pManager); - ~FbxGeometryConverter(); - -private: - FbxMesh* TriangulateMeshInternal(const FbxMesh* pMesh); - FbxMesh* TriangulateMeshInternalLegacy(const FbxMesh* pMesh); - FbxMesh* TriangulatePatchInternal(const FbxPatch* pPatch); - FbxMesh* TriangulateNurbsInternal(const FbxNurbs* pNurbs); - - bool AddAlternateGeometry(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pAltGeom, FbxWeightedMapping* pSrcToAltWeightedMapping, bool pConvertDeformations); - bool ConvertGeometryAnimation(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom); - void ReplaceNodeAttribute(FbxNode* pNode, FbxNodeAttribute* pNewNodeAttr); - bool AddTriangulatedMeshGeometry(FbxNode* pNode, int pUVStepCoeff); - bool CreateAndCopyLayerElement(FbxMesh *pNewMesh, FbxMesh *pRefMesh); - bool SetLayerElements(FbxMesh *pNewMesh, FbxMesh *pMesh, int pPolygonIndex, int pPolyPointIndex, int pLoopIndex, bool pIsSearched, bool pIsEndPolygon); - - /** FbxTriangulation - * \param Index Output array of triangle indices - * \param pNumSide Input number of sides of the polygon to triangulate - * -- Triangulation algorithm is strip, Sorting vertex index for strip in clockwise. - * - * 2 3 4 - * 0----------0---------0 - * / ` - * / ` 5 - * 1 / 0 - * 0 / - * ` / - * ` / - * 0 0-----0-------------0 6 - * 7 - * The result of this one will be [{0,1,2},{2,3,0},{0,3,7},{3,4,7},{7,4,6},{4,5,6}] - */ - static void FbxTriangulation(int *Index, int pNumSide); - - bool ComputePatchToMeshControlPointsWeightedMapping(FbxPatch* pSrcPatch, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pSwapUV=false); - bool ComputeNurbsToMeshControlPointsWeightedMapping(FbxNurbsSurface* pSrcNurbs, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pRescaleUVs=false, bool pSwapUV=false); - - void InitializeWeightInControlPoints(FbxGeometryBase* pGeometry); - void InitializeWeightInNormals(FbxLayerContainer* pLayerContainer); - void TriangulateContinuousSurface(FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface, FbxUInt pPointCountX, FbxUInt pPointCountY, bool ClockWise=false); - void CheckForZeroWeightInShape(FbxGeometry *pGeometry); - FbxMesh* CreateMeshFromParametricSurface(const FbxGeometry* pGeometry); - FbxNurbs* CreateNurbsFromPatch(FbxPatch* pPatch); - FbxNurbsSurface* CreateNurbsSurfaceFromPatch(FbxPatch* pPatch); - - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator, int pUCount, int pVCount); - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(FbxArray const& pSourceClusters, int pSourceControlPointsCount, FbxArray& pDestinationClusters, int pDestinationControlPointsCount, FbxWeightedMapping* pSourceToDestinationMapping); - void BuildClusterToSourceMapping(FbxArray const& pSourceClusters, FbxWeightedMapping* pClusterToSourceMapping); - void CheckClusterToSourceMapping(FbxWeightedMapping* pClusterToSourceMapping); - void ConvertCluster(int pSourceClusterIndex, FbxWeightedMapping* pClusterToSourceMapping, FbxWeightedMapping* pSourceToDestinationMapping, FbxCluster* pDestinationCluster); - void DuplicateControlPoints(FbxArray& pControlPoints, FbxArray& pPolygonVertices); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated, int pTriangleNum); - void ResizePolygon(FbxMesh *pNewMesh, int pNewCountVertices = 0, int pNewCountPolygons =0, bool pClearFlag = true); - - template void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb); - - bool CopyAnimationCurves(FbxNode* pNode, FbxGeometry* pNewGeometry); - bool FlipNurbsCurve(FbxNurbsCurve* pCurve) const; - void FlipControlPoints(FbxGeometryBase* pPoints, int pUCount, int pVCount) const; - bool ConvertMaterialReferenceMode(FbxMesh* pMeshRef) const; - void RevertMaterialReferenceModeConversion(FbxMesh* pMeshRef) const; - - FbxManager* mManager; - - friend class FbxWriter3ds; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmanipulators.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmanipulators.h deleted file mode 100644 index 43b05f3..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmanipulators.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanipulators.h -#ifndef _FBXSDK_UTILS_MANIPULATORS_H_ -#define _FBXSDK_UTILS_MANIPULATORS_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxCameraManipulationState; - -/** This class can be used to provide basic camera manipulation in any program using this library. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCameraManipulator : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCameraManipulator, FbxObject); - -public: - //! All possible manipulation actions that can be performed on a camera using this manipulator. - enum EAction - { - eNone, //!< No action. - eOrbit, //!< Orbiting camera around LootAt/Interest position. - eDolly, //!< Moving camera closer or away from its LookAt/Intest position. - ePan, //!< Panning camera up, down and sideways. - eFreePan //!< Panning and dollying all at once. - }; - - /** Begin manipulation of the camera. - * \param pAction The action performed for this manipulation scope. - * \param pX Begin horizontal position of the manipulation, in pixels. - * \param pY Begin vertical position of the manipulation, in pixels. */ - void Begin(EAction pAction, float pX, float pY); - - /** Notify manipulation of latest input. - * \param pTimeDelta Elapsed time since the last notify. Only used if Smoothing is enabled. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Notify(float pX, float pY, float pScale=0); - - //! End current manipulation. - void End(); - - /** Update the camera position. This must be called periodically in order for the camera to update its position. - * \param pTimeDelta Elapsed time since the last update. If Smooth is disabled, you can leave this value to zero. - * \remark Begin, Notify and End will not change the current camera position. */ - void Update(const FbxTime& pTimeDelta=FBXSDK_TIME_ZERO); - - /** Do a complete manipulation action in a single operation. This is the equivalent of calling Begin, Notify and End successively. - * \param pAction The action performed for this manipulation scope. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Action(EAction pAction, float pX, float pY, float pScale=0); - - /** Retrieve current manipulation action. - * \return The action currently performed by the camera manipulator. */ - EAction GetCurrentAction() const; - - /** Change camera position and LookAt node to frame all objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameAll(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame all selected objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameSelected(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame the selected position on screen. The LookAt will be placed - * at first closest intersecting geometry, and the distance between camera and LookAt will be preserved. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pCulling If \c true, only test triangles that are front-facing, otherwise test both sides. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameScreenPosition(float pX, float pY, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** The camera controlled by the manipulator. */ - FbxPropertyT Camera; - - /** Width of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportWidth; - - /** Height of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportHeight; - - /** Camera manipulations will be smooth if enabled. True by default. */ - FbxPropertyT Smooth; - - /** Camera manipulations smoothing speed. Higher speed will stabilize the camera more quickly. Default is 10.0 */ - FbxPropertyT SmoothSpeed; - - /** Invert the camera horizontal manipulation direction if set to true. False by default. */ - FbxPropertyT InvertX; - - /** Invert the camera vertical manipulation direction if set to true. False by default. */ - FbxPropertyT InvertY; - - /** Restore the camera transform upon destruction of the manipulator. */ - FbxPropertyT Restore; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - -private: - void Reset(); - FbxCamera* GetCamera() const; - FbxNode* GetCameraNode() const; - FbxNode* GetCameraLookAtNode() const; - FbxNode* GetCameraTargetUpNode() const; - FbxVector4 GetCameraPosition() const; - void SetCameraPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraRotation() const; - void SetCameraRotation(const FbxVector4& pRotation); - FbxVector4 GetCameraLookAtPosition() const; - void SetCameraLookAtPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraTargetUpPosition() const; - void SetCameraTargetUpPosition(const FbxVector4& pPosition); - FbxAMatrix GetCameraRotationMatrix() const; - void SetCameraRotationMatrix(const FbxAMatrix& pRM); - - double ComputeRotationAxis(FbxVector4& pFront, FbxVector4& pUp, FbxVector4& pRight, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector) const; - void ComputeRotationMatrix(FbxAMatrix& pRM, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector); - void UpdateCameraRotation(); - - bool FrameObjects(bool pSelected, const FbxTime& pTime); - FbxVector4 ComputePositionToFitBBoxInFrustum(const FbxVector4& pBBoxMin, const FbxVector4& pBBoxMax, const FbxVector4& pBBoxCenter, const FbxVector4& pCameraPosition, const FbxAMatrix& pCameraRM, const FbxTime& pTime); - - EAction mCurrentAction; - FbxFloat mBeginMouse[3], mLastMouse[3]; - FbxVector4 mBeginPosition, mBeginAxis[3]; - FbxBool mBeginFlipped; - - FbxDouble mDestOrthoZoom; - FbxVector4 mDestPosition, mDestLookAt, mDestTargetUp; - FbxAMatrix mDestRotation; - - FbxVector4 mInitialPosition, mInitialRotation, mInitialLookAt; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MANIPULATORS_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h deleted file mode 100644 index 101d289..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmaterialconverter.h -#ifndef _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ -#define _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ - -#include - -#include - -#include - -class LayerConfig; -class FbxMaterialConverter_Impl; - -/** - * \brief This class provides functions to restructure the material and textures - * applied to geometries from FBX v5 material system to v6-and-up or the other way around. - * \nosubgrouping - * \see FbxSurfaceMaterial, FbxTexture - */ -class FBXSDK_DLL FbxMaterialConverter -{ -public: - FbxMaterialConverter( FbxManager& mManager, FbxSurfaceMaterial* pDefaultMaterial = NULL); - ~FbxMaterialConverter(); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for all geometries - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pScene The scene whose geometries should be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxScene& pScene ); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for the given geometry - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pNode The geometry node to be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxNode* pNode ); - - /** This is the reverse operation of ConnectTexturesToMaterials() - * Textures connected to Materials' color properties are stored - * in layer elements, and their connections to the color properties - * are broken.(Convert scene from FBX v6-and-up material system to v5) - * \param pScene The scene whose geometries should be converted. - * \return true if all geometries were converted, false otherwise - */ - bool AssignTexturesToLayerElements( FbxScene& pScene ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef FbxPair TexData; - - FbxMaterialConverter& operator=(const FbxMaterialConverter&); - - FbxManager& mManager; - FbxSurfaceMaterial* mDefaultMaterial; - FbxMaterialConverter_Impl* mImpl; - - - void GetTextures( int pComponent, FbxLayer* pLayer, LayerConfig& pLayerConfig ) const; - FbxSurfaceMaterial* GetMaterial( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - int GetMaterialOrder( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - - bool HasGoodMappingModes( FbxNode* pNode, FbxGeometry* pGeom ) const; - void ConnectTextures( FbxSurfaceMaterial* pMat, FbxObject* pTexture, int pTextureType ) const; - bool HasPerFaceMaterialMapping( FbxGeometry* pGeom ) const; - void SetTextureUVSets( FbxGeometry* pGeom ) const; - bool HasTextures( FbxGeometry* pGeom ) const; - - void GetTextureList( FbxArray& pTextures, FbxLayeredTexture* pTex ) const; - - FbxLayer* FindLayerForTexture( FbxTexture* pTex, - FbxLayerElement::EType pTexType, - FbxLayerElementTexture::EBlendMode pTexBlendMode, - FbxGeometry* pGeom, - int lComponentIndex, - int lStartIndex = 0 ) const; - - void InitTextureElement( FbxLayerElementTexture* pTexElm, int pComponentCount, - FbxLayerElementTexture::EBlendMode pMode) const; - - bool AssignTexturesToLayerElements( FbxNode* pNode); - - bool HasTextureLayerElements( FbxGeometry& pGeom ) const; - - void ConvertToPerFaceMapping( FbxMesh* pGeom ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxnamehandler.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxnamehandler.h deleted file mode 100644 index 70bb58f..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxnamehandler.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnamehandler.h -#ifndef _FBXSDK_UTILS_NAMEHANDLER_H_ -#define _FBXSDK_UTILS_NAMEHANDLER_H_ - -#include - -#include -#include - -#include - -/** A name is a case-sensitive string ID of a property, a node, a node attribute, a texture, etc. The characters constituting a name has no specific limitation. - * An initial name is the original name (from importing a file, for example), which is saved up for reversible renaming. - * A current name is the name used in FBX. - * A namespace is a simple grouping of objects under a given name. Namespaces are primarily used to resolve - * name-clash issues in FBX, where a new object has the same name as an existing object. - * - * For example, Maya only accepts names with letters, digits, or underscores. And when a user import FBX into Maya, - * a node whose name contains whitespace will be renamed. But the connections and references to this node in FBX - * scene graph still use the original name, so users have to use the initial name to retrieve related information. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNameHandler -{ -public: - /** Constructor. - * \param pInitialName Name string used to initialize both members (initialName and currentName) - * of this class. - */ - FbxNameHandler(const char* pInitialName = ""); - - /** Copy constructor. - * \param pName A FbxNameHandler copied to this one. - */ - FbxNameHandler(FbxNameHandler const& pName); - - // !Destructor - ~FbxNameHandler(); - - /** Set the initial name. - * \param pInitialName New string for the initial name. - * \remarks The current name will also be changed to this value. - */ - void SetInitialName(const char* pInitialName); - - /** Get the initial name. - * \return Pointer to the InitialName string buffer. - */ - const char* GetInitialName() const; - - /** Set the current name. - * \param pNewName New string for the current name. - * \remarks The initial name is not affected. - */ - void SetCurrentName(const char* pNewName); - - /** Get the current name. - * \return Pointer to the CurrentName string buffer. - */ - const char* GetCurrentName() const; - - /** Set the namespace. - * \param pNameSpace New string for the namespace. - * \remarks The initial name is not affected. - */ - void SetNameSpace(const char* pNameSpace); - - /** Get the namespace. - * \return Pointer to the namespace string buffer. - */ - const char* GetNameSpace() const; - - /** Check if the current name and initial name match. - * \return \c true if the current name isn't identical to the initial name. - */ - bool IsRenamed() const; - - /** Assignment operator - * \param pName FbxNameHandler assigned to this one. - */ - FbxNameHandler& operator= (FbxNameHandler const& pName); - - /** - * \name Private use for the renaming strategies classes. - * - * Some renaming strategies classes need to store the parent name to successfully apply the renaming algorithms. - * The methods in this section allow them to do so. - * \remark Because of the very specific use of the mParentName string, - * callers of the FbxNameHandler class should never assume that mParentName is correctly initialized - * nor contains a meaningful value outside the scope of the renaming strategy class that used it. - */ - //@{ - - /** Set the parent name. - * \param pParentName New string for the parent name. - * \remarks The parent name here could combine several hierarchy name. - * The full name should be "ParentName + CurrentName". - * A - * |_B - * |_C - * For the above hierarchy, the parent name of C is "AB". - * The full name of C is "ABC". - */ - void SetParentName(const char* pParentName); - - /** Get the parent name. - * \return Pointer to the ParentName string buffer. - */ - const char* GetParentName() const; - - //@} - - /** Get the namespaces in a string pointer array format. - * \return FbxArray . - * \remarks The array is filled in reverse order. For example, with a namespace string defined as: - * a:b:c:d, the filled array is: array[0]=d, array[1]=c, array[2]=b and array[3]=a - */ - FbxArray GetNameSpaceArray(char identifier); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mParentName; - FbxString mInitialName; - FbxString mCurrentName; - FbxString mNameSpace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_NAMEHANDLER_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessor.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessor.h deleted file mode 100644 index eb2b5c8..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessor.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessor.h -#ifndef _FBXSDK_UTILS_PROCESSOR_H_ -#define _FBXSDK_UTILS_PROCESSOR_H_ - -#include - -#include - -#include - -class FbxCollection; - -/** The class and its derived classes(e.g. FbxProcessorXRefCopy, FbxProcessorXRefCopyUserLibrary, etc.) are used to process shader, library, asset, etc. - * For example, you could update object property and its value via FbxProcessor::ProcessObject(), FbxProcessor::internal_ProcessObject(), etc. - */ -class FBXSDK_DLL FbxProcessor : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxProcessor, FbxObject); - -public: - /** - * \name Processor management - */ - //@{ - /** Process the specified collection. - * \param pCollection - */ - bool ProcessCollection(FbxCollection *pCollection=0); - - /** Process the specified object. - * \param pCollection FbxObject to process - */ - bool ProcessObject (FbxObject *pCollection=0); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool internal_ProcessCollectionBegin (FbxCollection *pCollection); - virtual bool internal_ProcessCollectionEnd (FbxCollection *pCollection); - virtual bool internal_ProcessObject (FbxObject* pObject); - virtual bool internal_ProcessCollection (FbxCollection* pCollection); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h deleted file mode 100644 index 99c0941..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorshaderdependency.h -#ifndef _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ -#define _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ - -#include - -#include -#include -#include - -#include - -/** Crawls CgFx and HLSL shader files, copies them, and all dependent - * shader files into the location specified by RootProcessPath. - */ -class FBXSDK_DLL FbxProcessorShaderDependency : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorShaderDependency, FbxProcessor); - -public: - FbxPropertyT RootProcessPath; - - FbxPropertyT CleanupOnDestroy; - - FbxPropertyT AdditionalIncludePaths; - - void ClearProcessedFiles(); - - /** - * \name Overridable internal function */ - //@{ -protected: - bool internal_ProcessObject(FbxObject* pObject) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -// Constructor / Destructor -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -public: - - class StringHash - { - public: - unsigned int operator()( const FbxString& pValue ) const - { - // from wikipedia.org - // Jenkins One-at-a-time hash - - size_t lLen = pValue.GetLen(); - unsigned int lHashValue = 0; - const char* lData = pValue.Buffer(); - for( size_t i = 0; i < lLen; ++i ) - { - lHashValue += lData[i]; - lHashValue += (lHashValue << 10); - lHashValue ^= (lHashValue >> 16); - } - lHashValue += (lHashValue << 3); - lHashValue ^= (lHashValue >> 11); - lHashValue += (lHashValue << 15); - - return lHashValue; - } - }; - -protected: - - class FileDeleter - { - public: - FileDeleter( const char* pFileUrl ) : mFileUrl( pFileUrl) {}; - ~FileDeleter() - { - if( !mFileUrl.IsEmpty() ) - { - remove( mFileUrl ); - } - }; - - void Release() { mFileUrl = ""; } - - private: FbxString mFileUrl; - }; - - // first == string as it appears in the file - // second == string URL - struct FilePathData - { - FbxString mOriginalStr; - FbxString mOriginalAbsUrl; - - FbxString mNewStr; - }; - - typedef FbxDynamicArray< FilePathData > FilePathList; - - virtual bool GetIncludePaths( FbxString& pFile, FilePathList& pPaths, FbxXRefManager& pManager ) const; - virtual bool ReplaceUrls( const FbxString& pFileUrl, const FbxString& pNewFileUrl, - const FilePathList& pPaths ) const; - -private: - struct Dependency - { - FbxString mNewUrl; - FbxString mOriginalUrl; - }; - - typedef FbxHashMap< FbxString, Dependency, StringHash > DependMap; - - DependMap mDependMap; - - FbxString mRootPath; - - FbxXRefManager mResolver; - int mSystemIndex; - - // magic number to limit the size of files we can parse =( - static const int sMaxFileSize; - - bool ParseDependencies( const FbxBindingTable& pTable ); - bool AddDependency( FbxString& pFileUrl ); - bool AddSystemPaths(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxref.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxref.h deleted file mode 100644 index 5720928..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxref.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxref.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_H_ - -#include - -#include -#include - -#include - -/** This class contains objects - * This class also provides access to global settings and take information. - */ -class FBXSDK_DLL FbxProcessorXRefCopy : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopy, FbxProcessor); - -public: - class FBXSDK_DLL MissingUrlHandler - { - public: - virtual ~MissingUrlHandler(); - virtual void MissingUrl(const FbxString& pUrl, const FbxProperty&) = 0; - }; - - /** - * \name Properties - */ - //@{ - FbxPropertyT OutputDirectory; - - /** As we resolve xref and copy assets, do we update properties to - * now use this relative path? Defaults to TRUE. - */ - FbxPropertyT UpdateProperties; - - /** Default to FALSE -- when set, this informs the processor to track - * every properties that were modified during the scene processing. - */ - FbxPropertyT TrackUpdatedProperties; - - /** Default to TRUE -- when not set, files are only copied if one of - * the following conditions is met: - * - * 1) Target does not exist - * 2) Target has a different time - * 3) Target has a different size - */ - FbxPropertyT ForceCopy; - - /** Default to TRUE -- when copying a file, also copy its modification - * time. A bit of a requirement if you're not going to use ForceCopy. - */ - FbxPropertyT CopyFileTimes; - //@} - - /** Optional callback; when set, this will be called when an Url cannot be - * be copied because the source is not found. - * Memory is owned by the client code, and will not be freed by us. - */ - MissingUrlHandler* MissingUrlHandler; - - /** Since FbxProperty is an opaque type, we can't do an efficient operator < - * on it, and must keep the data on the object, which can be compared through - * pointers, and then we can further compare against the property name. - */ - struct PropertyUpdate - { - FbxProperty mProperty; - FbxString mOriginalValue; - - inline PropertyUpdate() {} - inline PropertyUpdate(const FbxProperty& pProp, const FbxString& pVal) : - mProperty(pProp), mOriginalValue(pVal) {} - - inline bool operator <(const PropertyUpdate& pOther) const - { - return strcmp(mProperty.GetName(), pOther.mProperty.GetName()) < 0; - } - }; - typedef FbxSet UpdateSet; - typedef FbxMap PropertyUpdateMap; - - /** All properties that were updated, with their original value. - * Will always be empty if TrackUpdatedProperties - * was not set before calling ProcessCollection/ProcessObject. - * NOT cleared before each processing run. - */ - PropertyUpdateMap& GetUpdatedProperties(); - - /** If property tracking was enabled, goes through and reverts all changes - * to the properties. Does not un-copy the files, naturally. - */ - void RevertPropertyChanges(); - - /** This is just a safety net to make sure RevertPropertyChanges is called when - * this goes out of scope. - */ - struct FBXSDK_DLL AutoRevertPropertyChanges - { - AutoRevertPropertyChanges(FbxProcessorXRefCopy* pCopy) : mXRefCopy(pCopy) {} - ~AutoRevertPropertyChanges() - { - if( mXRefCopy ) - mXRefCopy->RevertPropertyChanges(); - } - - FbxProcessorXRefCopy* mXRefCopy; - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - PropertyUpdateMap mUpdatedProperties; - - // Implements the rules specified for the ForceCopy property. - // Also checks the ForceCopy property. - bool ShouldCopyFile(const FbxString& pTarget, const FbxString& pSource) const; - - bool internal_ProcessCollectionBegin (FbxCollection* pObject) override; - bool internal_ProcessCollectionEnd (FbxCollection* pObject) override; - bool internal_ProcessObject (FbxObject* pObject) override; - bool ProcessPathProperty(FbxProperty &pProperty); - virtual bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h deleted file mode 100644 index 4098d37..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxrefuserlib.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ - -#include - -#include - -#include - -/** - * Specialized xref copy processor - */ -class FBXSDK_DLL FbxProcessorXRefCopyUserLibrary : public FbxProcessorXRefCopy -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopyUserLibrary, FbxProcessorXRefCopy); - -public: - /** - * \name Properties - */ - //@{ - // Do we copy files even if they are in the system library? - // Defaults to FALSE. - FbxPropertyT CopyAllAssets; - - // Do we copy files even if they are not within the scene? This is - // the typical use case when creating a new library, and defaults to - // TRUE. If you want to extract assets from a specific library you - // you would set this to FALSE to ignore assets from external (user, - // system) libraries. - FbxPropertyT CopyExternalAssets; - - // Do we copy assets that use absolute paths? If true, then after - // the scene processor has run through the URL will be relative to - // the scene document. - // Defaults to TRUE. - FbxPropertyT CopyAbsoluteUrlAssets; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h deleted file mode 100644 index a137aae..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h +++ /dev/null @@ -1,355 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategy.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ - -#include - -#include -#include - -#include - -class FbxScene; -class FbxNode; - -/** This base class is an abstract implementation of a renaming strategy for avoiding name clashes. - * An implementation of a reader (FbxReader) or writer (FbxWriter) class must call a concrete implementation - * of "FbxRenamingStrategyInterface::Rename()" every time a name is imported or exported to avoid name clashes. - * Any class deriving from FbxRenamingStrategyInterface must implement FbxRenamingStrategyInterface::Clear(), - * FbxRenamingStrategyInterface::Rename(), and FbxRenamingStrategyInterface::Clone(). - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyNumber - */ -class FBXSDK_DLL FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyInterface(); - - //! Destructor. - virtual ~FbxRenamingStrategyInterface (); - - //! Resets internal state regarding assigned names. - virtual void Clear() = 0; - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName) = 0; - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone() = 0; -}; - -/** Implements a renaming strategy that resolves name clashes by adding number postfixes. - * For example, when there are three objects with the same name "MyObject", - * they will be renamed to "MyObject", "MyObject1" and "MyObject2". - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyBase - */ -class FBXSDK_DLL FbxRenamingStrategyNumber : public FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyNumber(); - - //! Destructor. - virtual ~FbxRenamingStrategyNumber (); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxArray mNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxRenamingStrategy object can be set to rename all the objects in a scene. - * It can remove name clashing, remove illegal characters, manage namespaces and manage backward compatibility. - * It is better to choose FbxSceneRenamer instead of this class to simplify the usage. - * \remark This class implements a legacy renaming strategy where unsupported characters are replaced with the - * underscore character. Improved renaming strategies solvers can be implemented using the functions provided - * by the FbxRenamingStrategyUtils class and the FbxRenamingStrategyBase. - * \nosubgrouping - * \see FbxSceneRenamer - */ -class FBXSDK_DLL FbxRenamingStrategy : public FbxRenamingStrategyInterface -{ -public: - /** \enum EDirection The mode describing the convention direction, from FBX format or to FBX format. - * - \e eToFBX Convert to FBX format from another format. - * - \e eFromFBX Convert from FBX format to another format. - */ - enum EDirection - { - eToFBX, - eFromFBX - }; - - /** Constructor. - * \param pMod The mode describing the convention direction, from FBX format or to FBX format. - * \param pOnCreationRun - */ - FbxRenamingStrategy(EDirection pMod, bool pOnCreationRun = false); - - //! Destructor. - virtual ~FbxRenamingStrategy(); - - /** Rename a name if necessary. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - - /** \enum EClashType - * - \e eNameClashAuto - * - \e eNameClashType1 - * - \e eNameClashType2 - */ - enum EClashType - { - eNameClashAuto, - eNameClashType1, - eNameClashType2 - }; - - /** Setup the strategy to perform this algorithm - * \param pType - */ - void SetClashSolverType(EClashType pType); - - /** Get the namespace of the last renamed object. - * \return Char pointer to the namespace. - */ - virtual char* GetNameSpace() { return mNameSpace.Buffer(); } - - /** Sets the current scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetInNameSpaceSymbol(FbxString pNameSpaceSymbol){mInNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets the wanted scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetOutNameSpaceSymbol(FbxString pNameSpaceSymbol){mOutNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets case sensitivity for name clashing. - * \param pIsCaseSensitive Set to \c true to make the name clashing case sensitive. - */ - virtual void SetCaseSensibility(bool pIsCaseSensitive){mCaseSensitive = pIsCaseSensitive ;} - - /** Sets the flag for character acceptance during renaming. - * \param pReplaceNonAlphaNum Set to \c true to replace illegal characters with an underscore ("_"). - */ - virtual void SetReplaceNonAlphaNum(bool pReplaceNonAlphaNum){mReplaceNonAlphaNum = pReplaceNonAlphaNum;} - - /** Sets the flag for first character acceptance during renaming. - * \param pFirstNotNum Set to \c true to add an underscore to the name if the first character is a number. - */ - virtual void SetFirstNotNum(bool pFirstNotNum){mFirstNotNum = pFirstNotNum;} - - /** Recursively renames all the unparented namespaced objects (Prefix mode) starting from this node. - * \param pNode Parent node. - * \param pIsRoot The root node. - * \return \c true if the "_NSclash" have been added to one or more node. - * \remarks This function adds "_NSclash" when it encounters an unparented namespaced object. - */ - virtual bool RenameUnparentNameSpace(FbxNode* pNode, bool pIsRoot = false); - - /** Recursively removes all the unparented namespaced "key" starting from this node. - * \param pNode Parent node. - * \return \c true if successfully removed the "_NSclash" from one or more nodes. - * \remarks This function removes "_NSclash" when encountered. This is the opposite from RenameUnparentNameSpace. - */ - virtual bool RemoveImportNameSpaceClash(FbxNode* pNode); - - /** Recursively get all the namespace starting from this node's parent. - * \param pNode Parent node. - * \param pNameSpaceList output the namespace list from pNode's parent to the root node. - */ - virtual void GetParentsNameSpaceList(FbxNode* pNode, FbxArray &pNameSpaceList); - - /** Recursively replace the namespace starting from this node to its children. - * \param pNode Current node. - * \param OldNS The old namespace to be replaced with the NewNs. - * \param NewNS The new namespace to replace OldNs. - * \return \c true if successfull - * \remarks This function only replaces the first occurence of OldNS with NewNS. - */ - virtual bool PropagateNameSpaceChange(FbxNode* pNode, FbxString OldNS, FbxString NewNS); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool RenameToFBX(FbxNameHandler& pName); - virtual bool RenameFromFBX(FbxNameHandler& pName); - virtual FbxString& ReplaceNonAlphaNum(FbxString& pName, const char* pReplace, bool pIgnoreNameSpace); - - EDirection mMode; - EClashType mType; - - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxCharPtrSet mStringNameArray; - FbxArray mExistingNsList; - bool mOnCreationRun; - bool mCaseSensitive; - bool mReplaceNonAlphaNum; - bool mFirstNotNum; - FbxString mNameSpace; - FbxString mInNameSpaceSymbol; //symbol identifying a name space - FbxString mOutNameSpaceSymbol; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxSceneRenamer provides a way to easily rename objects in a scene without using the FbxRenamingStrategy class. - * FbxSceneRenamer can remove name clashing and illegal characters. It also manages namespaces. - * - * Example: - * Maya only accepts names with letters, digits, or underscores, and we want to convert - * all the names of a scene from FBX format to Maya format. - * \code - * FbxSceneRenamer lSceneRenamer(pScene); - * lSceneRenamer.RenameFor(FbxSceneRenamer::eFBX_TO_MAYA); - * \endcode - * \nosubgrouping - * \see FbxRenamingStrategy - */ -class FBXSDK_DLL FbxSceneRenamer -{ -public: - /** Constructor - * \param pScene A scene which contains objects to be renamed. - */ - FbxSceneRenamer(FbxScene* pScene) {mScene = pScene;}; - - //! Destructor. - virtual ~FbxSceneRenamer(){}; - - /** \enum ERenamingMode The Mode describing from which format to which format. - * - \e eNone - * - \e eMAYA_TO_FBX5 - * - \e eMAYA_TO_FBX_MB75 - * - \e eMAYA_TO_FBX_MB70 - * - \e eFBXMB75_TO_FBXMB70 - * - \e eFBX_TO_FBX - * - \e eMAYA_TO_FBX - * - \e eFBX_TO_MAYA - * - \e eLW_TO_FBX - * - \e eFBX_TO_LW - * - \e eXSI_TO_FBX - * - \e eFBX_TO_XSI - * - \e eMAX_TO_FBX - * - \e eFBX_TO_MAX - * - \e eMB_TO_FBX - * - \e eFBX_TO_MB - * - \e eDAE_TO_FBX - * - \e eFBX_TO_DAE - */ - enum ERenamingMode - { - eNone, - eMAYA_TO_FBX5, - eMAYA_TO_FBX_MB75, - eMAYA_TO_FBX_MB70, - eFBXMB75_TO_FBXMB70, - eFBX_TO_FBX, - eMAYA_TO_FBX, - eFBX_TO_MAYA, - eLW_TO_FBX, - eFBX_TO_LW, - eXSI_TO_FBX, - eFBX_TO_XSI, - eMAX_TO_FBX, - eFBX_TO_MAX, - eMB_TO_FBX, - eFBX_TO_MB, - eDAE_TO_FBX, - eFBX_TO_DAE - }; - - /** Rename the objects of the scene according the specific mode. - * \param pMode A mode describing from which format to which format. - */ - void RenameFor(ERenamingMode pMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ResolveNameClashing(bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive, - bool pReplaceNonAlphaNum, bool pFirstNotNum, - FbxString pInNameSpaceSymbol, FbxString pOutNameSpaceSymbol, - bool pNoUnparentNS/*for MB < 7.5*/, bool pRemoveNameSpaceClash); - - FbxRenamingStrategyInterface* mNodeRenamingStrategy; - FbxScene* mScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ */ - diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h deleted file mode 100644 index 60e3d43..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategybase.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ - -#include - -#include -#include - -#include - -/** \brief Base class for renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyBase(); - - /** Constructor. - * \param pNameSpaceSymbol - */ - FbxRenamingStrategyBase(char pNameSpaceSymbol); - - //! Destructor. - virtual ~FbxRenamingStrategyBase(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene)=0; - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene)=0; - - /** This method find the original name of a given string - * \param pString - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pString)=0; - - /** This method find the renaming name of a given string - * \param pString - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pString, bool pIsPropertyName=false)=0; - - //! clean up the name cells. - virtual void CleanUp(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - char mNamespaceSymbol; - FbxCharPtrSet mStringNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h deleted file mode 100644 index ab43848..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx5.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 5. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx5: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx5(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx5(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h deleted file mode 100644 index ec4f224..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx6.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 6. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx6: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx6(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx6(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h deleted file mode 100644 index 1b7d832..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx7.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyFbx7 : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyFbx7(); - virtual ~FbxRenamingStrategyFbx7(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h deleted file mode 100644 index a830817..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyutilities.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ - -#include - -#include - -#include - -#define NAMECLASH1_KEY "_ncl1_" // name (x) -#define NAMECLASH2_KEY "_ncl2_" // Upper/lower cases clash - -#define UPPERTOLOWER_KEY "ul" -#define LOWERTOUPPER_KEY "lu" - -/** \brief This class contains a set of utilities, which are used by the FBX renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyUtils -{ -public: - - /** Check if the string has non alphanumeric characters and replace them with a special string containing a prefix and - * the character code. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \param pFirstCharMustBeAlphaOnly This flag tells whether the first char of the string must be alpha only. Its default - * value is \c false. - * \param pPermittedChars List of non alphanumeric characters that do not require to be converted because already - * supported by the destination application. When encountered, these characters are simply - * skipped and left as is. - * \param p8bitCharsOnly When \c true, this flag tells the routine that only 8 bit coded characters can be - * represented by the encoding format (see note below). If set to \c false, the range of supported - * character is increased and the memory usage may be less. But the routine will perform slower - * because of the internal conversions required. - * \return Returns \c true if at least one character in \c pString has been encoded. - * \note The encoding string depends on the value of \c p8bitCharsOnly argument. When this parameter value is \c true, - * each non-alphanumeric character is replaced with FBXASC### (where ### is the decimal code of the character). - * Inversely, when the value is \c false, each non-alphanumeric characters is replaced with FBXCHR##### (where - * ##### is the hexadecimal representation of the character code). - */ - static bool EncodeNonAlpha(FbxString &pString, bool pFirstCharMustBeAlphaOnly=false, FbxString pPermittedChars="", bool p8bitCharsOnly = true); - - /** Take a string that has been encoded by EncodeNonAlpha and re-extract the non-alphanumeric values. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \return Returns \c true if the \c pString argument has been decoded. - */ - static bool DecodeNonAlpha(FbxString &pString); - - /** This method will add the _ncl1_ with the provided pInstanceNumber to the string - * \param pString - * \param pInstanceNumber Its default value is 0. - * \return Always returns true. - * \remarks please ALWAYS call Encode Duplicate BEFORE Encode Case Insensitive. - */ - static bool EncodeDuplicate(FbxString &pString, int pInstanceNumber=0); - - /** This method will remove the _ncl1_xxx from the given string - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeDuplicate(FbxString &pString); - - /** This method will compare pString and pString2, set pString to pString2 and append the ncl2 suffix to it - * \param pString - * \param pString2 - * \return Returns true if the pString has been modified - * \remarks pString and pString2 must be identical except for casing. - */ - static bool EncodeCaseInsensitive(FbxString &pString, const FbxString pString2); - - /** This method will decode a string that has a ncl2 to it - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeCaseInsensitive(FbxString &pString); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(const char* pName); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(FbxString& pName); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h deleted file mode 100644 index 1503adc..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrootnodeutility.h -#ifndef _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ -#define _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ - -#include - -#include - -#include - -class FbxScene; -class FbxAxisSystem; -class FbxNode; - -/** \brief This class collects static functions for manipulating Fbx_Root nodes. - * Fbx_Root nodes were used to orient and scale scenes from other graphics applications. They have been replaced by the - * conversion routines in FbxAxisSystem and FbxSystemUnit. These methods are provided for backward compatibility only - * and will eventually be removed. Use the conversion routines in FbxSystemUnit and FbxAxisSystem when possible. - */ -class FBXSDK_DLL FbxRootNodeUtility -{ -public: - - static const char* sFbxRootNodePrefix; - - /** This method strips the scene of all Fbx_Root nodes. - * \param pScene The scene to convert - * \return \c true if successful, \c false otherwise. - * \remarks Converts the children of any Fbx_Roots to the orientation - * and units that the Fbx_Root transformation represented. - * The scene should look unchanged. - */ - static bool RemoveAllFbxRoots( FbxScene* pScene ); - - /** Inserts an Fbx_Root node into the scene to orient the - * scene from its axis and unit systems to the specified ones. - * \param pScene The scene to convert - * \param pDstAxis Destination axis. - * \param pDstUnit Destination unit - * \param pUnitOptions Unit conversion options - * - */ - static bool InsertFbxRoot( FbxScene* pScene, - const FbxAxisSystem& pDstAxis, - const FbxSystemUnit& pDstUnit, - const FbxSystemUnit::ConversionOptions& pUnitOptions = FbxSystemUnit::DefaultConversionOptions ); - - /** Check if a node is an Fbx_Root node - * \param pNode The node to query - * \return \c true if pNode is a Fbx_Root node, false otherwise - */ - static bool IsFbxRootNode(FbxNode* pNode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxRootNodeUtility(); - FbxRootNodeUtility(const FbxRootNodeUtility& pOther); - ~FbxRootNodeUtility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h deleted file mode 100644 index 56b0d07..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscenecheckutility.h -#ifndef _FBXSDK_SCENE_CHECK_UTILITY_H_ -#define _FBXSDK_SCENE_CHECK_UTILITY_H_ - -#include -#include -#include -#include - -class FbxScene; -class FbxStatus; - -/** \brief This class defines functions to check the received scene graph for issues. - * remark This is still an experimental class and it is not expected to validate - every single data object. - */ -class FBXSDK_DLL FbxSceneCheckUtility -{ -public: - enum ECheckMode { - eCheckCycles = 1, - eCheckAnimationEmptyLayers = 2, - eCheckAnimatioCurveData = 4, - eCheckAnimationData = 6, - eCheckGeometryData = 8, - eCheckOtherData = 16, - eCkeckData = 30 // includes Geometry,Animation&Other - }; - - /** Construct the object - * pScene Input scene to check - * pStatus FbxStatus object to set error codes in (optional) - * pDetails Details messages of issues found (optional) - * - * remark The Details array and its content must be cleared by the caller - */ - FbxSceneCheckUtility(const FbxScene* pScene, FbxStatus* pStatus=NULL, FbxArray* pDetails = NULL); - ~FbxSceneCheckUtility(); - - /** Check for issues in the scene - * return \false if any issue is found in the scene - * remark Depending on the check mode settings, the processing time can increase dramatically. - * remark If a status and/or details object is provided, the error code is set and, details info is - logged. - */ - bool Validate(ECheckMode pCheckMode=eCheckCycles); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - - /** Validate that the data in the given structure is within acceptable ranges - * return \false if any issue is found - */ - static bool ValidateObjectData(const FbxNurbs* pNurbs); - static bool ValidateObjectData(const FbxNurbsCurve* pNurbs); - static bool ValidateObjectData(const FbxNurbsSurface* pNurbs); - -protected: - bool HaveCycles(); - bool HaveInvalidData(int pCheckMode); - -private: - FbxSceneCheckUtility(); - FbxSceneCheckUtility(const FbxSceneCheckUtility& pOther); - - // Check functions return true if valid, false otherwise - bool CheckMappingMode(FbxLayerElement::EMappingMode pMappingMode, const FbxString& pPrefix); - bool CheckReferenceMode(FbxLayerElement::EReferenceMode pReferenceMode, const FbxString& pPrefix); - bool CheckSurfaceMode(FbxGeometry::ESurfaceMode pSurfaceMode, const FbxString& pPrefix); - - template - bool CheckSurfaceType(T pSurfaceType, const FbxString& pPrefix, const char* pDir); - - int MaxCountLimit(FbxLayerElement::EMappingMode pMappingMode, - int pCtrlPointsCount, - int pVerticesCount, - int pPolygonsCount, - int pEdgesCount, - int pElseCount); - - enum { - eNoRestriction, - eDirectOnly, - eIndexOnly, - }; - - template - bool CheckLayerElement(FbxLayerElementTemplate* pLET, - int pMaxCount, - const char* pId, - const FbxString& pPrefix, - int pRestriction = eNoRestriction); - - bool MeshHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool NurbsHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool GeometryHaveInvalidData(FbxGeometry* pGeom, const FbxString& pBase); - - bool GlobalSettingsHaveInvalidData(); - - bool AnimationHaveInvalidData(int pCheckMode); - bool AnimationHaveEmptyLayers(); - bool AnimationHaveInvalidCurveData(); - - const FbxScene* mScene; - - FbxStatus* mStatus; - FbxArray* mDetails; - FbxString mBuffer; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxusernotification.h b/sdk/Linux/2019.2/include/fbxsdk/utils/fbxusernotification.h deleted file mode 100644 index 0f3a561..0000000 --- a/sdk/Linux/2019.2/include/fbxsdk/utils/fbxusernotification.h +++ /dev/null @@ -1,523 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxusernotification.h -#ifndef _FBXSDK_UTILS_USER_NOTIFICATION_H_ -#define _FBXSDK_UTILS_USER_NOTIFICATION_H_ - -#include - -#include -#include -#include - -#include - -class FbxLogFile; -class FbxMessageEmitter; -class FbxUserNotificationFilteredIterator; - -/** This class defines one entry object held by the FbxUserNotification class. - * \nosubgrouping - * An entry object is a message to show error, warning or information. - * Direct manipulation of this object should not be required. At most, access to - * its members can be granted for querying purposes. - */ -class FBXSDK_DLL FbxAccumulatorEntry -{ -public: - /** Category of the accumulator entry. - */ - enum EClass - { - eError=1, //!< Error message entry. - eWarning=2, //!< Warning message entry. - eInformation=4, //!< Information message entry. - eAny=7 //!< Entry that does not belong to above class. Cannot be used as a class ID - }; - - /** Constructor. - * \param pAEClass Specify the category for this entry. - * \param pName Identifies this entry (more than one object can have the same name). - * \param pDescr The description of the entry. This is the common message. The details - * are added separately by the FbxUserNotification classes. - * \param pDetail A list of detail string that will be copied into the local array. - * \param pMuteState Whether this entry is muted. - * \remarks By default the object is muted so it does not get processed by the low level - * output routines of the UserNotification accumulator. The entry gets activated - * (unmuted) by the calls to AddDetail() in the accumulator. - */ - FbxAccumulatorEntry(EClass pAEClass, const FbxString& pName, const FbxString& pDescr, - FbxString pDetail="", bool pMuteState=true); - - /** Copy Constructor. - * \param pAE Another FbxAccumulatorEntry object to be copied. - * \param pSkipDetails Flag to skip details. - */ - FbxAccumulatorEntry(const FbxAccumulatorEntry& pAE, bool pSkipDetails); - - //! Destructor. - ~FbxAccumulatorEntry(); - - //! Returns the category class of this entry. - EClass GetClass() const; - - //! Returns the name of this entry. - FbxString GetName() const; - - //! Returns the description of this entry. - FbxString GetDescription() const; - - //! Returns the number of details stored. - int GetDetailsCount() const; - - /** Returns a pointer to one specific detail string (or NULL if the id is invalid). - * Detail string is dynamic. One entry can have multiple detail strings to hold extra information. - * For example, if one entry message is related to many FBX nodes, user can add these nodes' name as details. - * \param id The detail id. - * \return Pointer to the specific detail. - */ - const FbxString* GetDetail(int id) const; - - //! Returns True if this entry is muted. - bool IsMuted() const; - -private: - FbxArray& GetDetails(); - void Mute(bool pState); - - bool mMute; - EClass mAEClass; - FbxString mName; - FbxString mDescr; - FbxArray mDetails; - - friend class FbxUserNotification; -}; - - -/** This class accumulates user notifications and sends them to any device opened by the derived classes. - * If this class is not derived, the data can only be sent to a log file. To send data to a log file, - * it must be opened before attempting to send data, otherwise, the messages will be lost. - */ -class FBXSDK_DLL FbxUserNotification -{ -public: - /** - * Create and initialize user notification object for the SDK manager. - * One SDK manager has one global user notification object. - * If the SDK manager already has global user notification object, the function will do nothing. - * - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \param pSessionDescription This string is used to separate session logs in the file. - * \return the global user notification object owned by the SDK manager. - */ - static FbxUserNotification* Create(FbxManager* pManager, - const FbxString& pLogFileName, - const FbxString& pSessionDescription); - - /** - * Destroy the global user notification object owned by the SDK manager. - */ - static void Destroy(FbxManager* pManager); - - /** Instantiate a FbxUserNotification but leave it uninitialized. The caller must - * explicitly call InitAccumulator to initialize it and ClearAccumulator when finished - * using it. - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \remarks If pLogFileName is an empty string the log file does not get created and any - * output sent to it is lost. - * \param pSessionDescription This string is used to separate session logs in the file. - * \remarks If the specified log file already exists, messages are appended to it. This - * class never deletes the log file. Derived classes may delete the log file - * before opening (it must be done in the constructor because the log file is - * opened in the InitAccumulator) or at the end of the processing in the - * PostTerminate method. - */ - FbxUserNotification(FbxManager* pManager, - FbxString const& pLogFileName, - FbxString const& pSessionDescription); - - //! Destructor. - virtual ~FbxUserNotification(); - - /** - * Accumulator is to hold the notification entries. User can add entries to it. - * This method must be called before using the Accumulator. It opens the log file and - * calls AccumulatorInit followed by OpenExtraDevices. Failing to call this method - * will prevent other actions except ClearAccumulator, GetLogFileName and GetLogFilePath. - */ - void InitAccumulator(); - - /** This method must be called when the Accumulator is no longer needed. It calls - * CloseExtraDevices, followed by the AccumulatorClear, and then closes the log file. - */ - void ClearAccumulator(); - - /** IDs for pre-defined message entries. - */ - enum EEntryID - { - eBindPoseInvalidObject, - eBindPoseInvalidRoot, - eBindPoseNotAllAncestorsNodes, - eBindPoseNotAllDeformingNodes, - eBindPoseNotAllAncestorsDefinitionNodes, - eBindPoseRelativeMatrix, - eEmbedMediaNotify, - eFileIONotify, //!< this is generic for reader and writer to log notifications. - eFileIONotifyMaterial, - eFileIONotifyDXFNotSupportNurbs, - eEntryStartID //!< Starting ID for any Accumulator entry added by derived classes. - }; - - /** - * \name Accumulator Management - */ - //@{ - /** Adds one entry into the accumulator. - * \param pID This entry unique ID. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \return The ID of the newly allocated entry. This ID is pEntryId. - */ - int AddEntry(const int pID, const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass=FbxAccumulatorEntry::eWarning); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pString The detail string to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxString pString); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pNode The node to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxNode* pNode); - - //! Returns the number of AccumulatorEntries currently stored in this accumulator. - int GetNbEntries() const; - - /** Get the specified FbxAccumulatorEntry. - * \param pEntryId ID of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the id is invalid or the Accumulator - * is not properly initialized. - */ - const FbxAccumulatorEntry* GetEntry(int pEntryId); - - /** Get the FbxAccumulatorEntry at the specified index. - * \param pEntryIndex index of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the index is invalid or the Accumulator - * is not properly initialized.. - */ - const FbxAccumulatorEntry* GetEntryAt(int pEntryIndex) const; - - //! Returns the number of Details recorded so far in this accumulator. - int GetNbDetails() const; - - /** Get the specified detail. - * \param pDetailId Index of the detail. This is the id-th detail of type pClass as inserted - * when the AddDetail - * \param pAE Pointer to the FbxAccumulatorEntry object that contains the requested detail. - * The returned valued can be NULL if an error occurred. - * \return The index of the detail to be used when calling the GetDetail of the FbxAccumulatorEntry. - * \remarks A value of -1 is acceptable and means that the FbxAccumulatorEntry has no details. However, - * if pAE is NULL, the return value is meaningless. - */ - int GetDetail(int pDetailId, const FbxAccumulatorEntry*& pAE) const; - - //@} - - /** - * \name Accumulator Output - */ - //@{ - /** Specify send what kind of data to output device. - */ - enum EOutputSource - { - eAccumulatorEntry, //!< Entry with its details. - eSequencedDetails //!< Details in the recorded order. - }; - - /** Send the accumulator entries to the output devices. - * This method needs to be explicitly called by the program that uses this - * class. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred. - * \param pIndex If this parameter >= 0, only send the specified entry/detail index to the output devices. - * Otherwise send all of them. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(EOutputSource pOutSrc=eAccumulatorEntry, int pIndex = -1, bool pExtraDevicesOnly = false); - - /** Send the accumulator entry to the output devices. - * \param pId Send the entry/detail that matching pIdx to the output devices, - * otherwise send all of them. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred.. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - */ - bool OutputById(EEntryID pId, EOutputSource pOutSrc=eAccumulatorEntry, bool pExtraDevicesOnly = false); - - /** Send an immediate entry to the output devices. - * This method bypasses the accumulator by sending the entry directly to the output devices - * and discarding it right after. The internal accumulator lists are left unchanged by this call. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass, bool pExtraDevicesOnly = false); - - /** Sends the content of the iterator to the output devices. - * This method bypasses the accumulator by sending each entry in the iterator directly to - * the output devices. The internal accumulator lists are left unchanged by this call. - * \param pAEFIter The Filtered FbxAccumulatorEntry iterator object. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(FbxUserNotificationFilteredIterator& pAEFIter, bool pExtraDevicesOnly = false); - - /** Set log message emitter. - * \param pLogMessageEmitter The new log message emitter. - */ - void SetLogMessageEmitter(FbxMessageEmitter * pLogMessageEmitter); - - /** - * \name Utilities - */ - //@{ - /** Returns the absolute path to the log file. If this method is not overridden in a derived class, it - * returns the TEMP directory. - * \param pPath The returned path. - */ - virtual void GetLogFilePath(FbxString& pPath); - - /** Returns the log file name. */ - inline FbxString GetLogFileName() { return mLogFileName; } - //@} - -protected: - /** - * Identify one detail in all accumulator entries by record the entry object and its detail id. - */ - class AESequence - { - public: - AESequence(FbxAccumulatorEntry* pAE, int pDetailId) : - mAE(pAE), - mDetailId(pDetailId) - { - }; - - //! Return the entry object the detail belongs to. - FbxAccumulatorEntry* AE() { return mAE; } - //! Return the detail id in the entry object - int DetailId() { return mDetailId; } - - private: - FbxAccumulatorEntry* mAE; - int mDetailId; - }; - - friend class FbxUserNotificationFilteredIterator; - - /** Allow a derived class to finalize processing AFTER the log file handle has been - * deleted. This may be required if the log file needs to be moved or shown. - * \returns True if the object is properly cleaned. - */ - virtual bool PostTerminate(); - - /** Allow the implementation class to perform accumulator initializations before - * the Extra devices are opened. By default this method does nothing. - */ - virtual void AccumulatorInit(); - - /** Allow the implementation class to perform accumulator clear after the Extra devices are - * closed. By default this method does nothing. - */ - virtual void AccumulatorClear(); - - /** Allow the implementation class to opens its output devices (called by InitAccumulator). - * By default this method does nothing. - */ - virtual void OpenExtraDevices(); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pEntries Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pEntries); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pAESequence Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pAESequence); - - /** Allow the implementation class to send one accumulator entry to the devices. - * By default this method does nothing. - * \param pOutputNow Flag indicates whether to output now. - * \param pAccEntry Accumulator entry to output. - * \param pDetailId Detail id. - * \return \c true if successful, \c false otherwise. - * \remarks Derived methods should check for the IsMuted() state to decide if the accumulator - * entry should get through or get discarded. See AddDetail for more details. - */ - virtual bool SendToExtraDevices(bool pOutputNow, const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - - - /** Allow the implementation class to close it's output devices (called in the ClearAccumulator) - * By default this method does nothing. - */ - virtual void CloseExtraDevices(); - - //! Clears the Accumulator list, remove all user notification entries.. - void ResetAccumulator(); - - //! Clears the Sequence list. - void ResetSequence(); - - /** Send the pIdth element of the accumulator or sequence list to the log file. - * \param pOutSrc The output source, accumulator or sequence list. - * \param pId Element id. - */ - void SendToLog(EOutputSource pOutSrc, int pId); - - /** Send the accumulator entry to the log file. - * \param pAccEntry The accumulator entry. - * \param pDetailId Detail id. - */ - void SendToLog(const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - -private: - FbxString mLogFileName; - FbxString* mLog; - FbxLogFile* mLogFile; - FbxMessageEmitter* mLogMessageEmitter; - - bool mProperlyInitialized; - FbxString mSessionDescription; - bool mProperlyCleaned; - - FbxMultiMap mAccuHT; // The set establish a relationship between an FbxAccumulatorEntry and it's ID - FbxArray mAccu; // The array defines the order the FbxAccumulatorEntry objects have been - // added to the accumulator (calls to AddEntry) - // Both structures share the same pointers. - FbxArray mAESequence; - FbxManager* mSdkManager; -}; - -/** This class iterates through the accumulated messages depending on the configuration - * flags (filter). The iterator keeps a local copy of the data extracted from the - * accumulator. - */ -class FBXSDK_DLL FbxUserNotificationFilteredIterator -{ -public: - /** Constructor. - * \param pAccumulator This reference is only used during construction for retrieving - * the data required to fill the iterator. - * \param pFilterClass The bitwise combination of the EClass identifiers. An FbxAccumulatorEntry - * element is copied from the accumulator if its Class matches one of the - * bits of this flag. - * \param pSrc Specify which data format is extracted from the accumulator. - * \param pNoDetail This parameter is used ONLY if pSrc == eAccumulatorEntry and, if set to - * false, the details of the FbxAccumulatorEntry are also sent to the output - * devices. If left to its default value, only the description of the - * FbxAccumulatorEntry is sent. - */ - FbxUserNotificationFilteredIterator(FbxUserNotification& pAccumulator, - int pFilterClass, - FbxUserNotification::EOutputSource pSrc = FbxUserNotification::eSequencedDetails, - bool pNoDetail = true); - - virtual ~FbxUserNotificationFilteredIterator(); - - //! Returns the number of elements contained in this iterator. - int GetNbItems() const; - - //! Put the iterator in its reset state. - void Reset(); - - /** Get this iterator's first item. - * \return NULL if the iterator is empty. - */ - FbxAccumulatorEntry* First(); - - /** Get this iterator's previous item. - * \return NULL if the iterator reached the beginning (or is empty). - * \remarks This method will also return NULL if it is called before - * or immediately after a call to First() and reset the iterator to - * its reset state (meaning that a call to First() is mandatory - * to be able to iterate again). - */ - FbxAccumulatorEntry* Previous(); - - /** Get this iterator's next item. - * \return NULL if the iterator reached the end (or is empty). - * \remarks This method will also return NULL if it is called while - * the iterator is in its reset state (called before - * First() or after a preceding call to Previous() reached - * beyond the beginning). - */ - FbxAccumulatorEntry* Next(); - -protected: - // Called in the constructor. - virtual void BuildFilteredList(FbxUserNotification& pAccumulator); - - int mIterator; - int mFilterClass; - bool mNoDetail; - FbxUserNotification::EOutputSource mAccuSrcData; - FbxArray mFilteredAE; -}; - -#include - -#endif /* _FBXSDK_UTILS_USER_NOTIFICATION_H_ */ diff --git a/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.a b/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.a deleted file mode 100644 index 25e66a1..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cea7b46da8fc68dbf95843eb90b9c572868b518485ced3b37fa57108a909fe36 -size 77856354 diff --git a/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.so b/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.so deleted file mode 100644 index 1e25b13..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x64/debug/libfbxsdk.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b3a08caf6bdd9de49eaac309618d8d2602b2beecc4e2ad8274dd6cab74171b9 -size 17090640 diff --git a/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.a b/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.a deleted file mode 100644 index 58c4385..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:266d5717d9451edb7f95629949ce10e27ee120b35ebdad97a69c62b57da353d4 -size 31167444 diff --git a/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.so b/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.so deleted file mode 100644 index f2f0922..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x64/release/libfbxsdk.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06abc04ae1fedb753fb097e558a798289ca729e83eb946b7d79d1641a85ef976 -size 9949560 diff --git a/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.a b/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.a deleted file mode 100644 index ccb07ba..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f6d099aa240f83437eea933e3181ea1cfd52ee6da521429aafedde00c5197f6 -size 59103552 diff --git a/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.so b/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.so deleted file mode 100644 index 12ec959..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x86/debug/libfbxsdk.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a6e256e2a33e4f6c822a7a49d717a48e2410b2ed016afe61a01bb9e79f571c9 -size 15130860 diff --git a/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.a b/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.a deleted file mode 100644 index 2aaa4e2..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:16fb47fa767276ae566bdf54de6c47f7b328d5f69951a43ff2b796f918a43de5 -size 24403506 diff --git a/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.so b/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.so deleted file mode 100644 index 35f8f50..0000000 --- a/sdk/Linux/2019.2/lib/gcc/x86/release/libfbxsdk.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:85068a1b26b36f00d70ea2adc8aa712cd295e79841ccfb8096990a8def2a2fb9 -size 9898664 diff --git a/sdk/Linux/2019.2/samples/Animation/CMakeLists.txt b/sdk/Linux/2019.2/samples/Animation/CMakeLists.txt deleted file mode 100644 index 59b3e45..0000000 --- a/sdk/Linux/2019.2/samples/Animation/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Animation .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Linux/2019.2/samples/Animation/main.cxx b/sdk/Linux/2019.2/samples/Animation/main.cxx deleted file mode 100644 index 193c599..0000000 --- a/sdk/Linux/2019.2/samples/Animation/main.cxx +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of animation stacks, layers, curvenodes and curves. -// -// 1. Create a stack. -// 2. Add the mandatory base layer. -// 3. Show how to set the layer blend mode bypass. -// 4. Animate the layers's weight property. -// 5. Show how to use AddChannel and ResetChannels. -// 6. Create a 3 components curvenode and animate two of the three channels. -// 7. Add the curve node to the animation layer. -// 8. Create curves and add keys. -// 9. Create an extra layer with a different blend mode. -// 10. Show how to share the same animation curve on two layers (different channels) -// 11. Evaluate the overall result. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - int i; - FbxTime lTime; - FbxAnimCurveKey key; - FbxAnimCurve* lCurve = NULL; - - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Stack001"); - - // this stack animation range is limited from 0 to 1 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Set and get the blend mode bypass of the layer - bool val; - lAnimLayer->SetBlendModeBypass(eFbxTypeCount, true); // set the bypass to all the datatypes. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = true - lAnimLayer->SetBlendModeBypass(eFbxBool, false); // overwrite just for the bool datatype. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = false - val = lAnimLayer->GetBlendModeBypass(eFbxChar); // val = true - val = lAnimLayer->GetBlendModeBypass(eFbxDateTime); // val = true - val = lAnimLayer->GetBlendModeBypass((EFbxType)-1); // invalid type, val = false - val = lAnimLayer->GetBlendModeBypass((EFbxType)120); // invalid type (>MAX_TYPES), val = false - - - // we want to animate the layer's weight property. - FbxAnimCurveNode* wcn = lAnimLayer->CreateCurveNode(lAnimLayer->Weight); - if (wcn) - { - // the curve node from the Weight property already contains 1 channel (Weight). - i = wcn->GetChannelsCount(); // i = 1 - - // Now, let's add a second channel to the animation node. Note that this code - // is useless and has only been provided to show the usage of the AddChannel and - // ResetChannels - bool ret; - ret = wcn->AddChannel("MyAddedIntChannel", 99); // this call will succed - i = wcn->GetChannelsCount(); // i = 2 - ret = wcn->AddChannel("MyAddedIntChannel", 10); // this call will fail, since the channel already exists. - i = wcn->GetChannelsCount(); // i = 2 - wcn->ResetChannels(); // remove any added channels - i = wcn->GetChannelsCount(); // i = 1 - } - - // get the Weight curve (and create it if it does not exist, wich is the case!) - lCurve = lAnimLayer->Weight.GetCurve(lAnimLayer, true); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*100.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // - // now create a 3 components curvenode and animate two of the three channels. - // - // first, we need a "dummy" property so we can call the CreateTypedCurveNode - FbxProperty p = FbxProperty::Create(pScene, FbxDouble3DT, "Vector3Property"); - p.Set(FbxDouble3(1.1, 2.2, 3.3)); - FbxAnimCurveNode* lCurveNode = FbxAnimCurveNode::CreateTypedCurveNode(p, pScene); - - // let's make sure the curveNode is added to the animation layer. - lAnimLayer->AddMember(lCurveNode); - - // and to the "Vector3Property" since CreateTypedCurveNode does not make any connection - p.ConnectSrcObject(lCurveNode); - - //Example of channel get value: - //double v1 = lCurveNode->GetChannelValue(0U, 0.0); // v1 = 1.1 - //float v2 = lCurveNode->GetChannelValue (1U, 0.0f); // v2 = 2.2 - //int v3 = lCurveNode->GetChannelValue (2U, 0); // v3 = 3 - - // - // create two free curves (not connected to anything) - // - - // first curve - lCurve = FbxAnimCurve::Create(pScene, "curve1"); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 10 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*10.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // connect it to the second channel - lCurveNode->ConnectToChannel(lCurve, 1); - - // second curve - lCurve = FbxAnimCurve::Create(pScene, "curve2"); - if (lCurve) - { - // add three keys at time 1, 2 and 3 sec with values 3.33, 6.66 and 9.99 respectively - lCurve->KeyModifyBegin(); - for (i = 1; i < 4; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*3.33f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - // connect it to the third channel - lCurveNode->ConnectToChannel(lCurve, "Z"); // for backward compatibility, string identifier are still - // allowed for the X,Y,Z and W components or "0", "1", ... "9", "A", "B", ... "F" for the Matrix44 datatype - - - // ====================================================================== - // - // Add a second animation layer and evaluate using the FbxAnimEvaluator - // - // ====================================================================== - lAnimLayer = FbxAnimLayer::Create(pScene, "Layer2"); - lAnimStack->AddMember(lAnimLayer); - - // get the number of animation layers in the stack - // int nbLayers = lAnimStack->GetMemberCount(); // nblayers = 2 - lAnimLayer = lAnimStack->GetMember(1); // get the second layer - - // set its blend mode to Additive - lAnimLayer->BlendMode.Set(FbxAnimLayer::eBlendAdditive); - - // Now, let's animate the first channel of the "Vector3Property" (remember, we animated the second and - // third ones on the base layer - when we connected "curve1" and "curve2" on lCurveNode above) - // but first, make sure the property is animatable otherwise the creation of the curveNode is prohibited. - p.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lCurveNode = p.GetCurveNode(lAnimLayer, true); // create it since it does not exist yet - - // use "curve2" to animate it on channel 0 - lCurveNode->ConnectToChannel(lCurve, 0U); - - // and set the other two channels values - lCurveNode->SetChannelValue(1U, 5.0); - lCurveNode->SetChannelValue(2U, 0.0); - - // evaluate the "Vector3Property" value at three different times - // with the use of the FbxAnimEvaluator so we take into account the two layers - - // make sure the evaluator is using the correct context (context == animstack) - pScene->SetCurrentAnimationStack(lAnimStack); - for (i = 0; i < 3; i++) - { - lTime.SetSecondDouble((float)i); - FbxDouble3 value = p.EvaluateValue(lTime); - } - - /* - The base layer has a weight curve: - - Time | 0 | 1 | 2 | - Weight +-------------+----------------+--------------| - Base Layer | 0.0 | 100.0% | (100.0%) | - Layer2 | <100.0%> | <100.0%> | <100.0%> | - +-------------+----------------+--------------| - - () Querying values outside the first and/or last keys in a curve will return - the first/last key defined. - <> Since it has never been set, it defaults to the multiplication neutral element (in percent). - - At the specified times each channel value on their respective layers is: - - Time | 0 | 1 | 2 | - Channel +-------------+----------------+--------------| - 0 Base | 0* | 1.1* | 1.1* | - Layer2 | (3.33) | 3.33 | 6.66 | (curve2) - +-------------+----------------+--------------| - 1 Base | 0* | 10.0* | (10.0) | (curve1) - Layer2 | 5.0 | 5.0 | 5.0 | - +-------------+----------------+--------------| - 2 Base | 0* | 3.3* | 6.66* | (curve2) - Layer2 | 0.0 | 0.0 | 0.0 | - +-------------+----------------+--------------| - - * key (or property, if not animated) value multiplied by the weight. - () same as value at time 1 since there is no key here. - - therefore, considering that the second animation layer's blend mode is set - to additive, the evaluated values for v at 0, 1 and 2 seconds are: - - time | 0 | 1 | 2 | - v +-------------+----------------+--------------| - 0 | 3.33 | 4.43 | 7.76 | - 1 | 5.0 | 15.00 | 15.00 | - 2 | 0.0 | 3.33 | 6.66 | - +-------------+----------------+--------------| - */ - return true; -} - diff --git a/sdk/Linux/2019.2/samples/Audio/CMakeLists.txt b/sdk/Linux/2019.2/samples/Audio/CMakeLists.txt deleted file mode 100644 index de7d710..0000000 --- a/sdk/Linux/2019.2/samples/Audio/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Audio .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio1.mp3" "${FBX_BUILD_ROOT}/audio1.mp3" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio2.wav" "${FBX_BUILD_ROOT}/audio2.wav" -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Linux/2019.2/samples/Audio/audio1.mp3 b/sdk/Linux/2019.2/samples/Audio/audio1.mp3 deleted file mode 100644 index f50ed8f..0000000 Binary files a/sdk/Linux/2019.2/samples/Audio/audio1.mp3 and /dev/null differ diff --git a/sdk/Linux/2019.2/samples/Audio/audio2.wav b/sdk/Linux/2019.2/samples/Audio/audio2.wav deleted file mode 100644 index b04b59d..0000000 Binary files a/sdk/Linux/2019.2/samples/Audio/audio2.wav and /dev/null differ diff --git a/sdk/Linux/2019.2/samples/Audio/main.cxx b/sdk/Linux/2019.2/samples/Audio/main.cxx deleted file mode 100644 index 2eb38d4..0000000 --- a/sdk/Linux/2019.2/samples/Audio/main.cxx +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of audio tracks and audio clips. -// -// 1. Create a stack. -// 2. Add the mandatory animation base layer. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Take 001"); - - // this stack animation range is limited from 0 to 10 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND * 10; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one animation layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Now, we create two audio tracks - FbxAudioLayer* lAudioTrack1 = FbxAudioLayer::Create(pScene, "AudioTrack0"); - lAnimStack->AddMember(lAudioTrack1); - FbxAudioLayer* lAudioTrack2 = FbxAudioLayer::Create(pScene, "AudioTrack1"); - lAnimStack->AddMember(lAudioTrack2); - lAudioTrack2->Solo = true; - - // Add a second animation layer - FbxAnimLayer* lAnimLayer1 = FbxAnimLayer::Create(pScene, "Layer1"); - lAnimStack->AddMember(lAnimLayer1); - - /* At this point the FbxAnimStack object has the following members: - GetMember(0) = lAnimLayer - GetMember(1) = lAudioTrack1 - GetMember(2) = lAudioTrack2 - GetMember(3) = lAnimLayer1 - */ - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(2) == lAudioTrack2); - FBX_ASSERT(lAnimStack->GetMember(3) == lAnimLayer1); - - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAnimLayer1); - FBX_ASSERT(lAnimStack->GetMember(0) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack2); - - // Create the audio clips - FbxTime t; - FbxAudio* lAudio1 = FbxAudio::Create(pScene, "Clip1"); - lAudio1->SetFileName("audio2.wav"); - lAudio1->BitRate = 176000; - lAudio1->Channels = 1; - lAudio1->SampleRate = 22050; - t.SetMilliSeconds(500); - lAudio1->Duration = t; - lAudio1->ClipIn = FBXSDK_TIME_ONE_SECOND * 25; - lAudio1->ClipOut = FBXSDK_TIME_ONE_SECOND * 40; - - FbxAudio* lAudio2 = FbxAudio::Create(pScene, "Clip2"); - lAudio2->SetFileName("audio1.mp3"); - lAudio2->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio2->Channels = 1; - lAudio2->BitRate = 64000; - lAudio2->SampleRate = 22050; - lAudio2->ClipIn = 0; - lAudio2->ClipOut = FBXSDK_TIME_ONE_SECOND; - - FbxAudio* lAudio3 = FbxAudio::Create(pScene, "Clip3"); - lAudio3->SetFileName("audio1.mp3"); // same file as Clip2 thus, same attributes - lAudio3->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio3->Channels = 1; - lAudio3->BitRate = 64000; - lAudio3->SampleRate = 22050; - lAudio3->ClipIn = FBXSDK_TIME_ONE_SECOND*5; - lAudio3->ClipOut = FBXSDK_TIME_ONE_SECOND*10; - t.SetMilliSeconds(333); - lAudio3->Offset = t; - - // Attach the audio clips to the audio tracks - lAudioTrack1->AddMember(lAudio1); - - lAudioTrack2->AddMember(lAudio1); - lAudioTrack2->AddMember(lAudio2); - lAudioTrack2->AddMember(lAudio3); - - // animate the volume on the audio clip 2 - // animate the volume on the audio clip 2 - lAudio2->Volume().Set(-3.0); - FbxAnimCurve* lVolCurve = lAudio2->Volume().GetCurve(lAnimLayer, true); - if (lVolCurve) - { - FbxTime lTime; - FbxAnimCurveKey key; - - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lVolCurve->KeyModifyBegin(); - for (int i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, (1-i)*1.0f); - lVolCurve->KeyAdd(lTime, key); - } - lVolCurve->KeyModifyEnd(); - } - - return true; -} - diff --git a/sdk/Linux/2019.2/samples/CMakeSettings.txt b/sdk/Linux/2019.2/samples/CMakeSettings.txt deleted file mode 100644 index 278ee50..0000000 --- a/sdk/Linux/2019.2/samples/CMakeSettings.txt +++ /dev/null @@ -1,266 +0,0 @@ -# =================================================================================== -# -# PRE-REQUISITES -# -# =================================================================================== - -STRING(REGEX REPLACE "/[^/]*$" "" FBX_CMAKE_ROOT "${CMAKE_CURRENT_LIST_FILE}") -GET_FILENAME_COMPONENT(FBX_ROOT "${FBX_CMAKE_ROOT}/.." ABSOLUTE) -STRING(REGEX MATCH "[^/]+$" FBX_CMAKE_OUTPUT_FOLDER "${CMAKE_CURRENT_BINARY_DIR}") - -SET(FBX_CMAKELIST_DEPENDENT) -IF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - SET(FBX_CMAKELIST_DEPENDENT "CMakeLists.txt") -ENDIF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - -IF (NOT WIN32 AND NOT APPLE) - # assume we are on Linux - SET(LINUX 1) -ENDIF() - -# =================================================================================== -# -# MACROS SECTION -# -# =================================================================================== - -MACRO(SETPOLICY policy state) - if(POLICY ${policy}) - cmake_policy(SET ${policy} ${state}) - endif() -ENDMACRO(SETPOLICY policy state) - - -MACRO(SET_SAMPLES_GLOBAL_FLAGS) - SET(FBX_TMP_TARGET_LIBS ${FBX_REQUIRED_LIBS_DEPENDENCY}) - IF(NOT WIN32) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} dl pthread) - IF(APPLE) - IF(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework Carbon -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ELSE(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework CoreFoundation -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ENDIF(NOT FBX_CLANG) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} iconv) - ELSEIF(LINUX) - SET(FBX_LINKER_FLAGS ${FBX_LINKER_FLAGS} "-Wl,-rpath,${FBX_BUILD_ROOT}") - ENDIF() - IF(FBX_LINKER_FLAGS) - SET_TARGET_PROPERTIES(${FBX_TARGET_NAME} PROPERTIES LINK_FLAGS ${FBX_LINKER_FLAGS}) - ENDIF() - ENDIF(NOT WIN32) - - INCLUDE_DIRECTORIES(BEFORE "${FBX_ROOT}/include") - INCLUDE_DIRECTORIES(AFTER "${FBX_CMAKE_ROOT}/Common") - - IF(WIN32) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - ELSE(WIN32) - SET(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - IF(FBX_ARCH STREQUAL "x64") - SET(CMAKE_CXX_FLAGS "-m64 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m64 ${CMAKE_C_FLAGS}") - ELSEIF(FBX_ARCH STREQUAL "x86") - SET(CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}") - ENDIF() - IF (FBX_DEBUG) - SET(CMAKE_CXX_FLAGS "-D_DEBUG -g ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_DEBUG -g ${CMAKE_C_FLAGS}") - ELSE() - SET(CMAKE_CXX_FLAGS "-D_NDEBUG -Os ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_NDEBUG -Os ${CMAKE_C_FLAGS}") - ENDIF() - - IF(APPLE) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") - ENDIF(APPLE) - ENDIF(WIN32) - - IF(FBX_SHARED) - ADD_DEFINITIONS(-DFBXSDK_SHARED) - IF(WIN32) - STRING(REGEX REPLACE "\\.lib" ".dll" DLL_FILE "${FBX_REQUIRED_LIBS_DEPENDENCY}") - ADD_CUSTOM_COMMAND(TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${DLL_FILE} - $) - ENDIF() - - # copy the fbxsdk dynamic library to the output directory - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FBX_SDK_ABS} ${FBX_BUILD_ROOT}/${FBX_SDK} - ) - ENDIF(FBX_SHARED) - - TARGET_LINK_LIBRARIES(${FBX_TARGET_NAME} ${FBX_TMP_TARGET_LIBS}) - SET(FBX_TMP_TARGET_LIBS) -ENDMACRO(SET_SAMPLES_GLOBAL_FLAGS) - - -MACRO(FBX_PROJECT project subdir) - SET(FBX_PROJECT_NAME ${project}) - SET(FBX_TARGET_NAME ${project}) - SET(FBX_PROJECT_SUBDIR ${subdir} ) - - SET(TMP_COMPILER ${FBX_COMPILER}) - IF(FBX_RTL_SUFFX) - SET(TMP_COMPILER ${FBX_COMPILER}${FBX_RTL_SUFFX}) - ENDIF() - IF(NOT WIN32) - IF (NOT FBX_SHARED) - SET(TMP_COMPILER ${FBX_COMPILER}-static) - ENDIF() - ENDIF() - - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}") #${CMAKE_CFG_INTDIR} is automatically added by CMake - ELSEIF(LINUX OR APPLE) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${FBX_ARCH}/${TMP_COMPILER}/${FBX_VARIANT}") - ELSE() - MESSAGE(FATAL_ERROR "Unsupported platform.") - RETURN() - ENDIF() - - PROJECT(${project} ${ARGN}) - SET(PROJECT_BINARY_DIR "${FBX_BUILD_ROOT}") - SET(EXECUTABLE_OUTPUT_PATH "${FBX_BUILD_ROOT}") - SET(LIBRARY_OUTPUT_PATH "${FBX_BUILD_ROOT}") - - # Put the Variant part back into FBX_BUILD_ROOT - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}/${CMAKE_CFG_INTDIR}") - ENDIF() -ENDMACRO(FBX_PROJECT project subdir) - - -# =================================================================================== -# -# COMMON SECTION -# -# =================================================================================== -IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER ${CMAKE_MIN_REQ_VERSION}) - IF (${CMAKE_MAJOR_VERSION} LESS 3) - SETPOLICY(CMP0005 OLD) - SETPOLICY(CMP0003 OLD) - SETPOLICY(CMP0011 OLD) - ELSE() - SETPOLICY(CMP0003 NEW) - SETPOLICY(CMP0011 NEW) - ENDIF() - SETPOLICY(CMP0042 OLD) - SETPOLICY(CMP0045 OLD) -ENDIF() - -SET(FBX_SHARED) # can be set at command line with -DFBX_SHARED=1 -SET(FBX_STATIC_RTL) # can be set at command line with -DFBX_STATIC_RTL=1 (use static MSVCRT (/MT), otherwise use dynamic MSVCRT (/MD)) -SET(FBX_VARIANT) # can be set at command line with -DFBX_VARIANT=debug or release (Unix only) -SET(FBX_ARCH) # can be set at command line with -DFBX_ARCH=x64 or x86 (Unix only) -SET(FBX_LINKER_FLAGS) - -IF (FBX_SHARED AND FBX_STATIC_RTL) - SET(FBX_STATIC_RTL) - MESSAGE("\nBoth FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only.") -ENDIF() - -IF(NOT FBX_VARIANT) - SET(FBX_VARIANT "debug") -ENDIF() - -SET(FBX_DEBUG) -IF (FBX_VARIANT MATCHES "debug") - SET(FBX_DEBUG 1) -ENDIF() - -IF(NOT FBX_ARCH) - SET(FBX_ARCH "x64") - IF(WIN32 AND NOT CMAKE_CL_64) - SET(FBX_ARCH "x86") - ENDIF() -ENDIF() - -IF(WIN32) - SET(CMAKE_USE_RELATIVE_PATHS 1) - SET(LIB_EXTENSION ".lib") -ELSE(WIN32) - SET(LIB_EXTENSION ".a") - IF(FBX_SHARED) - IF(APPLE) - SET(LIB_EXTENSION ".dylib") - ELSEIF(LINUX) - SET(LIB_EXTENSION ".so") - ENDIF() - ENDIF() -ENDIF(WIN32) - -SET(FBX_SDK libfbxsdk${LIB_EXTENSION}) -IF(WIN32) - IF(CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo) - set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configurations to what we need" FORCE) - ENDIF() - - SET(FBX_VARIANT "$(Configuration)") - IF(MSVC_VERSION EQUAL 1700) - SET(FBX_COMPILER "vs2012") - ELSEIF(MSVC_VERSION EQUAL 1800) - SET(FBX_COMPILER "vs2013") - ELSEIF(MSVC_VERSION EQUAL 1900) - SET(FBX_COMPILER "vs2015") - ELSEIF(MSVC_VERSION EQUAL 1911) - SET(FBX_COMPILER "vs2017") - ENDIF() - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_SDK_ABS ${FBX_TARGET_LIBS_PATH}/${FBX_SDK}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS}) - IF(NOT FBX_SHARED) - IF(FBX_STATIC_RTL) - SET(FBX_CC_RTL "/MT") - SET(FBX_CC_RTLd "/MTd") - SET(FBX_RTL_SUFFX "-mt") - ELSE() - SET(FBX_CC_RTL "/MD") - SET(FBX_CC_RTLd "/MDd") - SET(FBX_RTL_SUFFX "-md") - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY - ${FBX_TARGET_LIBS_PATH}/libfbxsdk${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/libxml2${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/zlib${FBX_RTL_SUFFX}${LIB_EXTENSION}) - ENDIF() -ELSE() - MESSAGE("Detecting compiler version used") - EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) - IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - MESSAGE("Detected Clang ${CMAKE_CXX_COMPILER_VERSION}") - SET(FBX_COMPILER "clang") - SET(FBX_CLANG 1) - ELSE() - SET(FBX_COMPILER "gcc") - IF(CMAKE_CXX_COMPILER_VERSION MATCHES " [4-9]\\.[0-9].*") - MESSAGE( "Detected GCC >= 4.0" ) - ELSE() - MESSAGE(FATAL_ERROR "Detected " ${GCC_PREFIX} " only GCC 4.x and higher supported") - ENDIF() - ENDIF() - - IF(APPLE) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_VARIANT}") - IF(FBX_COMPILER STREQUAL "gcc") - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/ub/${FBX_VARIANT}") - ENDIF() - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ELSEIF(LINUX) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ENDIF() - SET(FBX_SDK_ABS ${FBX_EXTRA_LIBS_PATH}fbxsdk${LIB_EXTENSION}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS} z xml2) -ENDIF() \ No newline at end of file diff --git a/sdk/Linux/2019.2/samples/Camera/CMakeLists.txt b/sdk/Linux/2019.2/samples/Camera/CMakeLists.txt deleted file mode 100644 index c17988a..0000000 --- a/sdk/Linux/2019.2/samples/Camera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Camera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Camera/Camera.fbx" "${FBX_BUILD_ROOT}/Camera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/Camera/Camera.fbx b/sdk/Linux/2019.2/samples/Camera/Camera.fbx deleted file mode 100644 index 361bda7..0000000 --- a/sdk/Linux/2019.2/samples/Camera/Camera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4c6de8e9b23c05bd0bd2c227e9d817deb30efea5779db5afe03752a2869e2cd -size 23180 diff --git a/sdk/Linux/2019.2/samples/Camera/main.cxx b/sdk/Linux/2019.2/samples/Camera/main.cxx deleted file mode 100644 index 5765145..0000000 --- a/sdk/Linux/2019.2/samples/Camera/main.cxx +++ /dev/null @@ -1,593 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) Get a camera from a scene. -// 2) Inspect the camera attributes and show them. -// 3) Create my own camera. -// 4) Inspect the camera attributes and show them. -// 5) Modify the new camera aspect. -// 6) Inspect the camera attributes and show them. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene from the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get camera from node attribute type. -// 6. Inspect the camera attributes and show the result. -// 7. Create camera using NTSC format. -// 8. Inspect the camera attributes and show the result. -// 9. Reset the new camera's aspect attributes with NTSC standard. -// 10. Inspect the camera attributes and show the result. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Camera.fbx" - -#define GET_MAX(a, b) (a) < (b) ? (b) : (a) - -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio); - -void DisplayCameraInfo(FbxNode* pNode); - -FbxCamera* CreateMyCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if( lScene) - { - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - //This function illustrates how to get camera info from scene. - if( gVerbose ) DisplayCameraInfo(lRootNode); - - //create my own camera set - FbxCamera* lMyCamera = CreateMyCamera(lScene); - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - //modify the camera's aspect attributes - lMyCamera->SetAspect( FbxCamera::eFixedResolution, 640, 480); - //Though we set the aspect attributes according to the NTSC standard, camera format is modified as eCUSTOM_FORMAT. - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - } - else - { - FBXSDK_printf("\n\nNull scene...\n"); - } - - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get camera info from scene. -void DisplayCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //get camera - FbxCamera* lCamera = pNode->GetCamera(); - - if( lCamera != NULL) - { - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - //get camera's information - - double lResolutionHeight = 0.0; - double lResolutionWidth = 0.0; - //get camera format - FbxCamera::EFormat lCameraFormat = lCamera->GetFormat(); - //camera using specific format has a given resolution(aspect) width and height. - /* - resolution width resolution height - eD1_NTSC 720 486 - eNTSC 640 480 - ePAL 570 486 - eD1_PAL 720 576 - eHD 1980 1080 - e640x480 640 480 - e320x200 320 200 - e320x240 320 240 - e128x128 128 128 - eFULL_SCREEN 1280 1024 - */ - switch( lCameraFormat) - { - case FbxCamera::eCustomFormat: - FBXSDK_printf( "Camera format is customized.\n"); - break; - case FbxCamera::eNTSC: - FBXSDK_printf( "Camera format is NTSC.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::eD1NTSC: - FBXSDK_printf( "Camera format is D1 NTSC.\n"); - lResolutionWidth = 720; - lResolutionHeight = 486; - break; - case FbxCamera::ePAL: - FBXSDK_printf( "Camera format is PAL.\n"); - lResolutionWidth = 570; - lResolutionHeight = 486; - break; - case FbxCamera::eD1PAL: - FBXSDK_printf( "Camera format is D1 PAL.\n"); - lResolutionWidth = 720; - lResolutionHeight = 576; - break; - case FbxCamera::eHD: - FBXSDK_printf( "Camera format is HD.\n"); - lResolutionWidth = 1980; - lResolutionHeight = 1080; - break; - case FbxCamera::e640x480: - FBXSDK_printf( "Camera format is 640x480.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::e320x200: - FBXSDK_printf( "Camera format is 320x200.\n"); - lResolutionWidth = 320; - lResolutionHeight = 200; - break; - case FbxCamera::e320x240: - FBXSDK_printf( "Camera format is 320x240.\n"); - lResolutionWidth = 320; - lResolutionHeight = 240; - break; - case FbxCamera::e128x128: - FBXSDK_printf( "Camera format is 128x128.\n"); - lResolutionWidth = 128; - lResolutionHeight = 128; - break; - case FbxCamera::eFullscreen: - FBXSDK_printf( "Camera format is full screen.\n"); - lResolutionWidth = 1280; - lResolutionHeight = 1024; - break; - default: - FBXSDK_printf( "Unknown camera format.\n"); - break; - } - - //get camera's inherent properties - { - //get aspect height - double lAspectHeight = lCamera->AspectHeight.Get(); - //get aspect width - double lAspectWidth = lCamera->AspectWidth.Get(); - //get aspect ratio - double lPixeltRatio = lCamera->GetPixelRatio(); - //verify the pixel ratio - double lScreenRatio = 4 / 3; // default screen ratio is 4 : 3; - if( lCamera->GetFormat() == FbxCamera::eHD) - { - lScreenRatio = 16 / 9; // in HD mode, screen ratio is 16 : 9; - } - double lInspectedPixelRatio = ComputePixelRatio( lResolutionWidth, lResolutionHeight, lScreenRatio); - if( lPixeltRatio != lInspectedPixelRatio) - { - FBXSDK_printf( "Camera pixel ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lPixeltRatio, lInspectedPixelRatio); - lCamera->PixelAspectRatio.Set( lInspectedPixelRatio); - lPixeltRatio = lInspectedPixelRatio; - } - else - { - FBXSDK_printf( "camera pixel ratio is %lf.\n", lPixeltRatio); - } - //get aspect ratio mode - /* - If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - If the ratio mode is eFIXED_RATIO, the height value is set to 1.0 and the width value is relative to the height value. - If the ratio mode is eFIXED_RESOLUTION, both width and height values are in pixels. - If the ratio mode is eFIXED_WIDTH, the width value is in pixels and the height value is relative to the width value. - If the ratio mode is eFIXED_HEIGHT, the height value is in pixels and the width value is relative to the height value. - */ - FbxCamera::EAspectRatioMode lCameraAspectRatioMode = lCamera->GetAspectRatioMode(); - switch( lCameraAspectRatioMode) - { - case FbxCamera::eWindowSize: - FBXSDK_printf( "Camera aspect ratio mode is window size.\n"); - break; - case FbxCamera::eFixedRatio: - FBXSDK_printf( "Camera aspect ratio mode is fixed ratio.\n"); - break; - case FbxCamera::eFixedResolution: - FBXSDK_printf( "Camera aspect ratio mode is fixed resolution.\n"); - break; - case FbxCamera::eFixedWidth: - FBXSDK_printf( "Camera aspect ratio mode is fixed width.\n"); - break; - case FbxCamera::eFixedHeight: - FBXSDK_printf( "Camera aspect ratio mode is fixed height.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aspect ratio mode.\n"); - break; - - } - //inspect the aspect width and height - if( lCameraFormat != FbxCamera::eCustomFormat && lCameraAspectRatioMode != FbxCamera::eWindowSize) - { - double lInspectedAspectHeight = 0.0; - double lInspectedAspectWidth = 0.0; - switch( lCameraAspectRatioMode) - { - default: - break; - case FbxCamera::eFixedRatio: - if( lAspectHeight != 1.0) - { - FBXSDK_printf( "Camera aspect height should be 1.0 in fixed ratio mode.\n\rRevise the height: %lf to 1.0.\n\n", lAspectHeight); - lCamera->AspectHeight.Set( 1.0); - lAspectHeight = 1.0; - } - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight * lPixeltRatio; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectWidth.Set( lInspectedAspectWidth); - lAspectWidth = lInspectedAspectWidth; - } - break; - case FbxCamera::eFixedResolution: - if( lAspectWidth != lResolutionWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lResolutionWidth); - lCamera->AspectWidth.Set( lResolutionWidth); - lAspectWidth = lResolutionWidth; - } - if( lAspectHeight != lResolutionHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lResolutionHeight); - lCamera->AspectHeight.Set( lResolutionHeight); - lAspectHeight = lResolutionHeight; - } - break; - case FbxCamera::eFixedWidth: - lInspectedAspectHeight = lResolutionHeight / lResolutionWidth; - if( lAspectHeight != lInspectedAspectHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lInspectedAspectHeight); - lCamera->AspectHeight.Set( lInspectedAspectHeight); - lAspectHeight = lInspectedAspectHeight; - } - break; - case FbxCamera::eFixedHeight: - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectHeight.Set( lInspectedAspectWidth); - lAspectHeight = lInspectedAspectWidth; - } - break; - - } - } - FBXSDK_printf( "Camera aspect width: %lf .\n Camera aspect height: %lf .\n", lAspectWidth, lAspectHeight); - - //inspect aperture width and height - double lInspectedApertureHeight = 0.0; - double lInspectedApertureWidth = 0.0; - //get camera's aperture format - FbxCamera::EApertureFormat lApertureFormat = lCamera->GetApertureFormat(); - //camera using specific aperture format has a given aperture width and height. - /* - aperture width aperture width aperture height (unit: inch) - e16MM_THEATRICAL 0.4040 0.2950 - eSUPER_16MM 0.4930 0.2920 - e35MM_ACADEMY 0.8640 0.6300 - e35MM_TV_PROJECTION 0.8160 0.6120 - e35MM_FULL_APERTURE 0.9800 0.7350 - e35MM_185_PROJECTION 0.8250 0.4460 - e35MM_ANAMORPHIC 0.8640 0.7320 - e70MM_PROJECTION 2.0660 0.9060 - eVISTAVISION 1.4850 0.9910 - eDYNAVISION 2.0800 1.4800 - eIMAX 2.7720 2.0720 - */ - switch( lApertureFormat) - { - case FbxCamera::eCustomAperture: - FBXSDK_printf( "Camera aperture format is customized.\n"); - break; - case FbxCamera::e16mmTheatrical: - FBXSDK_printf( "Camera aperture format is 16mm theatrical.\n"); - lInspectedApertureWidth = 0.4040; - lInspectedApertureHeight = 0.2950; - break; - case FbxCamera::eSuper16mm: - FBXSDK_printf( "Camera aperture format is super 16mm.\n"); - lInspectedApertureWidth = 0.4930; - lInspectedApertureHeight = 0.2920; - break; - case FbxCamera::e35mmAcademy: - FBXSDK_printf( "Camera aperture format is 35mm academy.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.6300; - break; - case FbxCamera::e35mmTVProjection: - FBXSDK_printf( "Camera aperture format is 35mm TV projection.\n"); - lInspectedApertureWidth = 0.8160; - lInspectedApertureHeight = 0.6120; - break; - case FbxCamera::e35mmFullAperture: - FBXSDK_printf( "Camera aperture format is 35mm full projection.\n"); - lInspectedApertureWidth = 0.9800; - lInspectedApertureHeight = 0.7350; - break; - case FbxCamera::e35mm185Projection: - FBXSDK_printf( "Camera aperture format is 35mm 185 projection.\n"); - lInspectedApertureWidth = 0.8250; - lInspectedApertureHeight = 0.4460; - break; - case FbxCamera::e35mmAnamorphic: - FBXSDK_printf( "Camera aperture format is 35mm anamorphic.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.7320; - break; - case FbxCamera::e70mmProjection: - FBXSDK_printf( "Camera aperture format is 70mm projection.\n"); - lInspectedApertureWidth = 2.0660; - lInspectedApertureHeight = 0.9060; - break; - case FbxCamera::eVistaVision: - FBXSDK_printf( "Camera aperture format is vistavision.\n"); - lInspectedApertureWidth = 1.4850; - lInspectedApertureHeight = 0.9910; - break; - case FbxCamera::eDynaVision: - FBXSDK_printf( "Camera aperture format is dynavision.\n"); - lInspectedApertureWidth = 2.0800; - lInspectedApertureHeight = 1.4800; - break; - case FbxCamera::eIMAX: - FBXSDK_printf( "Camera aperture format is imax.\n"); - lInspectedApertureWidth = 2.7720; - lInspectedApertureHeight = 2.0720; - break; - default: - FBXSDK_printf( "Unknown camera aperture format.\n"); - break; - } - - //get camera's aperture mode - FbxCamera::EApertureMode lApertureMode = lCamera->GetApertureMode(); - /* - Camera aperture modes. The aperture mode determines which values drive the camera aperture. - If the aperture mode is eHORIZONTAL_AND_VERTICAL, then the FOVX and FOVY is used. - If the aperture mode is eHORIZONTAL or eVERTICAL, then the FOV is used. - if the aperture mode is eFOCAL_LENGTH, then the focal length is used. - */ - switch( lApertureMode) - { - //fit the resolution gate within the film gate - case FbxCamera::eHorizAndVert: - FBXSDK_printf( "Camera aperture mode is horizontal and vertical.\n"); - break; - //fit the resolution gate horizontally within the film gate - case FbxCamera::eHorizontal: - FBXSDK_printf( "Camera aperture mode is horizontal.\n"); - break; - //fit the resolution gate vertically within the film gate - case FbxCamera::eVertical: - FBXSDK_printf( "Camera aperture mode is vertical.\n"); - break; - //fit the resolution gate according to the focal length - case FbxCamera::eFocalLength: - FBXSDK_printf( "Camera aperture mode is focal length.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aperture mode.\n"); - break; - - } - //get camera's aperture height. - double lApertureHeight = lCamera->GetApertureHeight(); - //get camera's aperture width. - double lApertureWidth = lCamera->GetApertureWidth(); - //get camera's aperture ratio. - double lApertureRatio = lCamera->FilmAspectRatio.Get(); - if( lApertureFormat != FbxCamera::eCustomAperture) - { - //inspect aperture width. - if( lApertureWidth != lInspectedApertureWidth) - { - FBXSDK_printf( "Camera aperture width is not right.\n\rRevise the width: %lf inches to %lf inches.\n\n", lApertureWidth, lInspectedApertureWidth); - lCamera->FilmWidth.Set( lInspectedApertureWidth); - lApertureWidth = lInspectedApertureWidth; - } - //inspect aperture height - if( lApertureHeight != lInspectedApertureHeight) - { - FBXSDK_printf( "Camera aperture height is not right.\n\rRevise the height: %lf inches to %lf inches.\n\n", lApertureHeight, lInspectedApertureHeight); - lCamera->FilmHeight.Set( lInspectedApertureHeight); - lApertureHeight = lInspectedApertureHeight; - } - //inspect aperture ratio. - double lInspectedApertureRatio = lApertureWidth / lApertureHeight; - if( lApertureRatio != lInspectedApertureRatio) - { - FBXSDK_printf( "Camera aperture ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lApertureRatio, lInspectedApertureRatio); - lCamera->FilmAspectRatio.Set( lInspectedApertureRatio); - lApertureRatio = lInspectedApertureRatio; - } - } - - FBXSDK_printf( "Camera aperture width: %lf inches.\n\rCamera aperture height: %lf inches.\n", lApertureWidth, lApertureHeight); - FBXSDK_printf( "Camera aperture ratio is %lf.\n\n", lApertureRatio); - - - //get focal length - double lFocalLength = lCamera->FocalLength.Get(); - //get FOV - double lFocalAngle = lCamera->FieldOfView.Get(); - //get squeeze ratio - double lFilmSqueezeRatio = lCamera->GetSqueezeRatio(); - if( lApertureMode == FbxCamera::eHorizAndVert) - { - //compute the focal length using FOVX. - double lFocalAngleX = lCamera->FieldOfViewX.Get();//horizontal fov - double lFocalAngleY = lCamera->FieldOfViewY.Get();//vertical fov - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngleX); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera horizontal FOV: %lf.\n\rCamera vertical FOV: %lf.\n ", lFocalAngleX, lFocalAngleY); - } - else if( lApertureMode == FbxCamera::eFocalLength) - { - //compute the FOV using focal length - double lComputedFOV = lCamera->ComputeFieldOfView( lFocalLength); - if( lFocalAngle != lComputedFOV) - { - FBXSDK_printf( "Camera FOV is not right.\n\rRevise the FOV: %lf degrees to %lf degrees.\n\n", lFocalAngle, lComputedFOV); - lCamera->FieldOfView.Set( lComputedFOV); - lFocalAngle = lComputedFOV; - } - else - { - FBXSDK_printf( "Camera FOV is %lf degrees.\n", lFocalAngle); - } - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - else - { - //compute the focal length using FOV - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngle); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera FOV: %lf.\n", lFocalAngle); - } - FBXSDK_printf( "Camera squeeze ratio is %lf \n", lFilmSqueezeRatio); - - } - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - } - - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - DisplayCameraInfo(pNode->GetChild(i)); - } -} - -//This function illustrates how to create and connect camera. -FbxCamera* CreateMyCamera(FbxScene* pScene) -{ - if(!pScene) - return NULL; - - //create a fbx node for camera - FbxNode* lMyCameraNode = FbxNode::Create(pScene,"myCameraNode"); - //connect camera node to root node - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->ConnectSrcObject( lMyCameraNode); - //create a cameraStereo, it's a node attribute of camera node. - FbxCamera* lMyCamera = FbxCamera::Create(pScene,"myCamera"); - //set Camera as a node attribute of the FBX node. - lMyCameraNode->SetNodeAttribute (lMyCamera); - //we recommend to use existed format - //set camera format - lMyCamera->SetFormat( FbxCamera::eNTSC); - //set camera aperture format - lMyCamera->SetApertureFormat( FbxCamera::e16mmTheatrical); - //set camera aperture mode - lMyCamera->SetApertureMode(FbxCamera::eVertical); - //set camera FOV - double lFOV = 45; - lMyCamera->FieldOfView.Set( lFOV); - //set camera FOV - double lFocalLength = lMyCamera->ComputeFocalLength( lFOV); - lMyCamera->FocalLength.Set( lFocalLength); - - - - return lMyCamera; - -} - -//This function computes the pixel ratio -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio) -{ - if( pWidth < 0.0 || pHeight < 0.0) - return 0.0; - - pWidth = GET_MAX( pWidth, 1.0 ); - pHeight = GET_MAX( pHeight, 1.0 ); - - double lResolutionRatio = (double) pWidth / pHeight; - - return pScreenRatio / lResolutionRatio; -} - - diff --git a/sdk/Linux/2019.2/samples/Common/AnimationUtility.cxx b/sdk/Linux/2019.2/samples/Common/AnimationUtility.cxx deleted file mode 100644 index 60f1454..0000000 --- a/sdk/Linux/2019.2/samples/Common/AnimationUtility.cxx +++ /dev/null @@ -1,27 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "AnimationUtility.h" - -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack) -{ - const char * DEFAULT_STACK_NAME = "Base_Stack"; - const char * DEFAULT_LAYER_NAME = "Base_Layer"; - - // Create one animation stack - pAnimStack = FbxAnimStack::Create(pScene, DEFAULT_STACK_NAME); - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, DEFAULT_LAYER_NAME); - pAnimStack->AddMember(lAnimLayer); - - return lAnimLayer; -} diff --git a/sdk/Linux/2019.2/samples/Common/AnimationUtility.h b/sdk/Linux/2019.2/samples/Common/AnimationUtility.h deleted file mode 100644 index ffac293..0000000 --- a/sdk/Linux/2019.2/samples/Common/AnimationUtility.h +++ /dev/null @@ -1,24 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_ANIMATION_UTILITY_H_ -#define INCLUDE_ANIMATION_UTILITY_H_ - -#include - -/** Create a default animation stack and a default animation layer for the given scene. - * /param pScene The scene in which the animation stack and layer are created. - * /param pAnimStack The created animation stack. - * /return The created animation layer. - */ -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack); - -#endif // INCLUDE_ANIMATION_UTILITY_H_ diff --git a/sdk/Linux/2019.2/samples/Common/Common.cxx b/sdk/Linux/2019.2/samples/Common/Common.cxx deleted file mode 100644 index a41e8b8..0000000 --- a/sdk/Linux/2019.2/samples/Common/Common.cxx +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "../Common/Common.h" - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); - - //Load plugins from the executable directory (optional) - FbxString lPath = FbxGetApplicationDirectory(); - pManager->LoadPluginsDirectory(lPath.Buffer()); - - //Create an FBX scene. This object holds most objects imported/exported from/to files. - pScene = FbxScene::Create(pManager, "My Scene"); - if( !pScene ) - { - FBXSDK_printf("Error: Unable to create FBX scene!\n"); - exit(1); - } -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat, bool pEmbedMedia) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format in less no ASCII format found - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(EXP_FBX_GOBO, true); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX file format version %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pScene); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename) -{ - int lFileMajor, lFileMinor, lFileRevision; - int lSDKMajor, lSDKMinor, lSDKRevision; - //int lFileFormat = -1; - int lAnimStackCount; - bool lStatus; - char lPassword[1024]; - - // Get the file version number generate by the FBX SDK. - FbxManager::GetFileFormatVersion(lSDKMajor, lSDKMinor, lSDKRevision); - - // Create an importer. - FbxImporter* lImporter = FbxImporter::Create(pManager,""); - - // Initialize the importer by providing a filename. - const bool lImportStatus = lImporter->Initialize(pFilename, -1, pManager->GetIOSettings()); - lImporter->GetFileVersion(lFileMajor, lFileMinor, lFileRevision); - - if( !lImportStatus ) - { - FbxString error = lImporter->GetStatus().GetErrorString(); - FBXSDK_printf("Call to FbxImporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", error.Buffer()); - - if (lImporter->GetStatus().GetCode() == FbxStatus::eInvalidFileVersion) - { - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - } - - return false; - } - - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - - if (lImporter->IsFBX()) - { - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - - // From this point, it is possible to access animation stack information without - // the expense of loading the entire file. - - FBXSDK_printf("Animation Stack Information\n"); - - lAnimStackCount = lImporter->GetAnimStackCount(); - - FBXSDK_printf(" Number of Animation Stacks: %d\n", lAnimStackCount); - FBXSDK_printf(" Current Animation Stack: \"%s\"\n", lImporter->GetActiveAnimStackName().Buffer()); - FBXSDK_printf("\n"); - - for(int i = 0; i < lAnimStackCount; i++) - { - FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(i); - - FBXSDK_printf(" Animation Stack %d\n", i); - FBXSDK_printf(" Name: \"%s\"\n", lTakeInfo->mName.Buffer()); - FBXSDK_printf(" Description: \"%s\"\n", lTakeInfo->mDescription.Buffer()); - - // Change the value of the import name if the animation stack should be imported - // under a different name. - FBXSDK_printf(" Import Name: \"%s\"\n", lTakeInfo->mImportName.Buffer()); - - // Set the value of the import state to false if the animation stack should be not - // be imported. - FBXSDK_printf(" Import State: %s\n", lTakeInfo->mSelect ? "true" : "false"); - FBXSDK_printf("\n"); - } - - // Set the import states. By default, the import states are always set to - // true. The code below shows how to change these states. - IOS_REF.SetBoolProp(IMP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(IMP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(IMP_FBX_LINK, true); - IOS_REF.SetBoolProp(IMP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(IMP_FBX_GOBO, true); - IOS_REF.SetBoolProp(IMP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(IMP_FBX_GLOBAL_SETTINGS, true); - } - - // Import the scene. - lStatus = lImporter->Import(pScene); - if (lStatus == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(pScene), &status, &details); - lStatus = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lStatus == false) - { - if (details.GetCount()) - { - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - } - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("Please enter password: "); - - lPassword[0] = '\0'; - - FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - scanf("%s", lPassword); - FBXSDK_CRT_SECURE_NO_WARNING_END - - FbxString lString(lPassword); - - IOS_REF.SetStringProp(IMP_FBX_PASSWORD, lString); - IOS_REF.SetBoolProp(IMP_FBX_PASSWORD_ENABLE, true); - - lStatus = lImporter->Import(pScene); - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("\nPassword is wrong, import aborted.\n"); - } - } - - // Destroy the importer. - lImporter->Destroy(); - - return lStatus; -} diff --git a/sdk/Linux/2019.2/samples/Common/Common.h b/sdk/Linux/2019.2/samples/Common/Common.h deleted file mode 100644 index 99850fa..0000000 --- a/sdk/Linux/2019.2/samples/Common/Common.h +++ /dev/null @@ -1,25 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ -#ifndef _COMMON_H -#define _COMMON_H - -#include - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene); -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus); -void CreateAndFillIOSettings(FbxManager* pManager); - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false); -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename); - -#endif // #ifndef _COMMON_H - - diff --git a/sdk/Linux/2019.2/samples/Common/GeometryUtility.cxx b/sdk/Linux/2019.2/samples/Common/GeometryUtility.cxx deleted file mode 100644 index d2aba26..0000000 --- a/sdk/Linux/2019.2/samples/Common/GeometryUtility.cxx +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GeometryUtility.h" - -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight) -{ - FbxMesh * lPyramid = FbxMesh::Create(pScene, pName); - - // Calculate the vertices of the pyramid - const double lBottomWidthHalf = pBottomWidth / 2; - const FbxVector4 PyramidControlPointArray[] = - { - FbxVector4(0, pHeight, 0), - FbxVector4(lBottomWidthHalf, 0, lBottomWidthHalf), - FbxVector4(lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, lBottomWidthHalf) - }; - - // Initialize and set the control points of the mesh - const int lControlPointCount = sizeof(PyramidControlPointArray) / sizeof(FbxVector4); - lPyramid->InitControlPoints(lControlPointCount); - for (int lIndex = 0; lIndex < lControlPointCount; ++lIndex) - { - lPyramid->SetControlPointAt(PyramidControlPointArray[lIndex], lIndex); - } - - // Set the control point indices of the bottom side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the front side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the left side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(2); - lPyramid->AddPolygon(3); - lPyramid->EndPolygon(); - - // Set the control point indices of the back side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(4); - lPyramid->EndPolygon(); - - // Set the control point indices of the right side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(1); - lPyramid->EndPolygon(); - - // Attach the mesh to a node - FbxNode * lPyramidNode = FbxNode::Create(pScene, pName); - lPyramidNode->SetNodeAttribute(lPyramid); - - // Set this node as a child of the root node - pScene->GetRootNode()->AddChild(lPyramidNode); - - return lPyramidNode; -} - - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -5.0, 0.0, 5.0, 1.0}, { 5.0, 0.0, 5.0, 1.0}, { 5.0,10.0, 5.0, 1.0}, { -5.0,10.0, 5.0, 1.0}, - { -5.0, 0.0, -5.0, 1.0}, { 5.0, 0.0, -5.0, 1.0}, { 5.0,10.0, -5.0, 1.0}, { -5.0,10.0, -5.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // uvs - static Vector2 lUVs[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eAllSame); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lMaterialElement->GetIndexArray().Add(0); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->LclTranslation.Set(pLclTranslation); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - // create UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV("UVSet1"); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (int i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs[i][0], lUVs[i][1])); - - for (int i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - return lNode; -} - diff --git a/sdk/Linux/2019.2/samples/Common/GeometryUtility.h b/sdk/Linux/2019.2/samples/Common/GeometryUtility.h deleted file mode 100644 index 5071cdc..0000000 --- a/sdk/Linux/2019.2/samples/Common/GeometryUtility.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_GEOMETRY_UTILITY_H_ -#define INCLUDE_GEOMETRY_UTILITY_H_ - -#include - -/** Create a pyramid mesh with specific bottom width and height, and attach it to a node. - * /param pScene The scene in which the pyramid mesh is created. - * /param pName The name of the pyramid mesh and the node to which the pyramid is attached. - * /param pBottomWidht The width of the bottom side of the pyramid. - * /param pHeight The height of the pyramid. - * /return Return the node to which the pyramid mesh is attached. - */ -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight); - -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation); - -#endif // INCLUDE_GEOMETRY_UTILITY_H_ diff --git a/sdk/Linux/2019.2/samples/ConvertScene/CMakeLists.txt b/sdk/Linux/2019.2/samples/ConvertScene/CMakeLists.txt deleted file mode 100644 index 5a30716..0000000 --- a/sdk/Linux/2019.2/samples/ConvertScene/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ConvertScene .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ConvertScene/box.fbx" "${FBX_BUILD_ROOT}/box.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ConvertScene/box.fbx b/sdk/Linux/2019.2/samples/ConvertScene/box.fbx deleted file mode 100644 index d78a3cb..0000000 --- a/sdk/Linux/2019.2/samples/ConvertScene/box.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:862247f82d91dab7a998c6110775eaed0bd7196368e40f3bf6115f9221bf1875 -size 12128 diff --git a/sdk/Linux/2019.2/samples/ConvertScene/main.cxx b/sdk/Linux/2019.2/samples/ConvertScene/main.cxx deleted file mode 100644 index dffec2a..0000000 --- a/sdk/Linux/2019.2/samples/ConvertScene/main.cxx +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This program converts any file in a format supported by the FBX SDK -// into DAE, FBX, 3DS, OBJ and DXF files. -// -// Steps: -// 1. Initialize SDK objects. -// 2. Load a file(fbx, obj,...) to a FBX scene. -// 3. Create a exporter. -// 4. Retrieve the writer ID according to the description of file format. -// 5. Initialize exporter with specified file format -// 6. Export. -// 7. Destroy the exporter -// 8. Destroy the FBX SDK manager -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "box.fbx" - -const char* lFileTypes[] = -{ - "_dae.dae", "Collada DAE (*.dae)", - "_fbx7binary.fbx", "FBX binary (*.fbx)", - "_fbx7ascii.fbx", "FBX ascii (*.fbx)", - "_fbx6binary.fbx", "FBX 6.0 binary (*.fbx)", - "_fbx6ascii.fbx", "FBX 6.0 ascii (*.fbx)", - "_obj.obj", "Alias OBJ (*.obj)", - "_dxf.dxf", "AutoCAD DXF (*.dxf)" -}; - -int main(int argc, char** argv) -{ - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - bool lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - if( lResult ) - { - const size_t lFileNameLength = strlen((argc>=3)?argv[2]:lFilePath.Buffer()); - char* lNewFileName = new char[lFileNameLength+64]; - FBXSDK_strcpy(lNewFileName,lFileNameLength+64,(argc>=3)?argv[2]:lFilePath.Buffer()); - - const size_t lFileTypeCount = sizeof(lFileTypes)/sizeof(lFileTypes[0])/2; - - for(size_t i=0; iGetIOPluginRegistry()->FindWriterIDByDescription(lFileTypes[i*2+1]); - - // Construct the output file name. - FBXSDK_strcpy(lNewFileName+lFileNameLength-4,60, lFileTypes[i*2]); - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - // Initialize the exporter. - lResult = lExporter->Initialize(lNewFileName, lFormat, lSdkManager->GetIOSettings()); - if( !lResult ) - { - FBXSDK_printf("%s:\tCall to FbxExporter::Initialize() failed.\n", lFileTypes[i*2+1]); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - } - else - { - // Export the scene. - lResult = lExporter->Export(lScene); - if( !lResult ) - { - FBXSDK_printf("Call to FbxExporter::Export() failed.\n"); - } - } - - // Destroy the exporter. - lExporter->Destroy(); - } - delete[] lNewFileName; - } - else - { - FBXSDK_printf("Call to LoadScene() failed.\n"); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - diff --git a/sdk/Linux/2019.2/samples/ExportDocument/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportDocument/CMakeLists.txt deleted file mode 100644 index 8645921..0000000 --- a/sdk/Linux/2019.2/samples/ExportDocument/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportDocument .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportDocument/main.cxx b/sdk/Linux/2019.2/samples/ExportDocument/main.cxx deleted file mode 100644 index b28435a..0000000 --- a/sdk/Linux/2019.2/samples/ExportDocument/main.cxx +++ /dev/null @@ -1,494 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The document created in this example is a container for objects. -// The document includes two sub-documents to contain materials and lights separately. -// -// The example illustrates how to: -// 1) create document and export -// 2) create objects that connect to document directly -// 3) create sub-document -// 4) create materials and textures, connect texture to material -// 5) create lights -// 6) export a document in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -#define SAMPLE_FILENAME "ExportDocument.fbx" - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument); -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument); -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument); -FbxNode* CreatePlane(FbxManager* pManager, const char* pName); -FbxSurfacePhong* CreateMaterial(FbxManager* pManager); -FbxTexture* CreateTexture(FbxManager* pManager); -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType); - - -void InitializeSdkObjects(FbxManager*& pManager) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -// Export document, the format is ascii by default -bool SaveDocument(FbxManager* pManager, FbxDocument* pDocument, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format if pEmbedMedia is true - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - if (!pEmbedMedia) - { - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX version number for this version of the FBX SDK is %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pDocument); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxDocument* lDocument = NULL; - bool lResult = false; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager); - - // create the main document - lDocument = FbxDocument::Create(lSdkManager, "RootDoc"); - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - // Create the scene. - lResult = CreateDocument(lSdkManager, lDocument); - if( lResult ) - { - //Save the document - lResult = SaveDocument(lSdkManager, lDocument, lSampleFileName); - if( !lResult ) FBXSDK_printf("\n\nAn error occurred while saving the document...\n"); - } - else FBXSDK_printf("\n\nAn error occurred while creating the document...\n"); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument) -{ - int lCount; - - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Example document"; - lDocInfo->mSubject = "Illustrates the creation of FbxDocument with geometries, materials and lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pDocument->SetDocumentInfo(lDocInfo); - - // NOTE: Objects created directly in the SDK Manager are not visible - // to the disk save routines unless they are manually connected to the - // documents (see below). Ideally, one would directly use the FbxScene/FbxDocument - // during the creation of objects so they are automatically connected and become visible - // to the disk save routines. - FbxNode* lPlane = CreatePlane(pManager, "Plane"); - - // add the geometry to the main document. - pDocument->AddRootMember(lPlane); - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 3: the FbxNode - lPlane; FbxMesh belongs to lPlane; Material that connect to lPlane - - // Create sub document to contain materials. - FbxDocument* lMatDocument = FbxDocument::Create(pManager,"Material"); - - CreateMatDocument(pManager, lMatDocument); - // Connect the light sub document to main document - pDocument->AddMember(lMatDocument); - - // Create sub document to contain lights - FbxDocument* lLightDocument = FbxDocument::Create(pManager,"Light"); - CreateLightDocument(pManager, lLightDocument); - // Connect the light sub document to main document - pDocument->AddMember(lLightDocument); - - lCount = pDocument->GetMemberCount(); // lCount = 5 : 3 add two sub document - - // document can contain animation. Please refer to other sample about how to set animation - pDocument->CreateAnimStack("PlanAnim"); - - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 7: 5 add AnimStack and AnimLayer - lCount = pDocument->GetMemberCount(); // lCount = 2 - - return true; -} - -// Create material sub document -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for materials"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with materials."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx material document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pMatDocument->SetDocumentInfo(lDocInfo); - - // add material object to the sub document - pMatDocument->AddMember(CreateMaterial(pManager)); -} - -// Create light sub document -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for lights"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx light document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pLightDocument->SetDocumentInfo(lDocInfo); - - // add light objects to the sub document - pLightDocument->AddMember(CreateLight(pManager, FbxLight::eSpot)); - pLightDocument->AddMember(CreateLight(pManager, FbxLight::ePoint)); -} - -// Create a plane mesh. -FbxNode* CreatePlane(FbxManager* pManager, const char* pName) -{ - int i; - FbxMesh* lMesh = FbxMesh::Create(pManager,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - - FbxVector4 lNormalZPos(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lElementNormal= lMesh->CreateElementNormal(); - - lElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the normal values for every control point. - lElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel. - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygons. Assign texture and texture UV indices. - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(i = 0; i < 4; i++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseElement->GetIndexArray().SetAt(i, i); - } - - lMesh->EndPolygon (); - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // rotate the plane - lNode->LclRotation.Set(FbxVector4(90, 0, 0)); - - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - if( !lMesh->GetElementMaterial( 0)) - return NULL; - - // add material to the node. - // the material can't in different document with the geometry node or in sub-document - // we create a simple material here which belong to main document - FbxString lMaterialName = "material_for_plane"; - FbxString lShadingName = "Phong"; - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - lMaterial->Diffuse.Set(FbxDouble3(1.0, 1.0, 0)); - lMaterial->DiffuseFactor.Set(1.); - - lNode->AddMaterial(lMaterial); - - // We are in eByPolygon, so there's only need for index (a plane has 1 polygon). - lMaterialElement->GetIndexArray().SetCount(lMesh->GetPolygonCount()); - - // Set the Index to the material - for(i=0; iGetPolygonCount(); ++i) - lMaterialElement->GetIndexArray().SetAt(i,0); - - // return the FbxNode - return lNode; -} - - -// Create a texture -FbxTexture* CreateTexture(FbxManager* pManager) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pManager,""); - - // Resource file must be in the application's directory. - FbxString lPath = FbxGetApplicationDirectory(); - FbxString lTexPath = lPath + "\\Crate.jpg"; - - // Set texture properties. - lTexture->SetFileName(lTexPath.Buffer()); - lTexture->SetName("Diffuse Texture"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetAlphaSource (FbxTexture::eNone); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - return lTexture; -} - -// Create material. -// FBX scene must connect materials FbxNode, otherwise materials will not be exported. -// FBX document don't need connect materials to FbxNode, it can export standalone materials. -FbxSurfacePhong* CreateMaterial(FbxManager* pManager) -{ - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .ConnectSrcObject(CreateTexture(pManager)); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor .Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - - return lMaterial; -} - -// Create light. -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType) -{ - FbxString lLightName; - FbxDouble val; - - switch (pType) - { - case FbxLight::eSpot: - lLightName = "SpotLight"; - break; - case FbxLight::ePoint: - lLightName = "PointLight"; - break; - case FbxLight::eDirectional: - lLightName = "DirectionalLight"; - break; - default: - break; - } - - FbxLight* lFbxLight = FbxLight::Create(pManager, lLightName.Buffer()); - - lFbxLight->LightType.Set(pType); - - // parameters for spot light - if (pType == FbxLight::eSpot) - { - lFbxLight->InnerAngle.Set(40.0); - val = lFbxLight->InnerAngle.Get(); // val = 40 - - lFbxLight->OuterAngle.Set(40); - val = lFbxLight->OuterAngle.Get(); // val = 40 - } - - // - // Light Color... - // - FbxDouble3 lColor; - lColor[0] = 0.0; - lColor[1] = 1.0; - lColor[2] = 0.5; - lFbxLight->Color.Set(lColor); - FbxDouble3 val3 = lFbxLight->Color.Get(); // val3 = (0, 1, 0.5) - - // - // Light Intensity... - // - lFbxLight->Intensity.Set(100.0); - val = lFbxLight->Intensity.Get(); // val = 100 - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,lLightName+"Node"); - - // set the node attribute - lNode->SetNodeAttribute(lFbxLight); - lNode->LclTranslation.Set(FbxDouble3(20, 30, 100)); - val3 = lNode->LclTranslation.Get(); // val3 = (20, 30, 100) - - return lNode; -} - - diff --git a/sdk/Linux/2019.2/samples/ExportScene01/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportScene01/CMakeLists.txt deleted file mode 100644 index d43b74f..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene01/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene01 .) -SET(FBX_TARGET_SOURCE - main.cxx - Thumbnail.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Linux/2019.2/samples/ExportScene01/Thumbnail.h b/sdk/Linux/2019.2/samples/ExportScene01/Thumbnail.h deleted file mode 100644 index 0ccbe0f..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene01/Thumbnail.h +++ /dev/null @@ -1,792 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _THUMBNAIL_H -#define _THUMBNAIL_H - -/** Thumbnail images to be exported by ExportScene01 example. - */ - -// Thumbnail for the scene. -// 64x64 RGB pixels -const unsigned char cSceneThumbnail[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe7, 0xe7, 0xc3, - 0xc2, 0xc2, 0xdb, 0xda, 0xda, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xf7, 0xf7, 0xf7, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa6, 0xa6, 0x37, 0x35, 0x36, 0x1c, - 0x18, 0x19, 0x25, 0x22, 0x23, 0xb1, 0xb0, 0xb1, 0xf4, 0xf4, 0xf4, 0xeb, 0xeb, 0xeb, 0xf1, 0xf1, - 0xf1, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfc, 0xfc, 0xfc, 0xef, 0xef, 0xef, 0x7c, 0x79, 0x7a, 0x2d, 0x29, 0x2a, 0x1c, 0x18, 0x19, 0x1f, - 0x1d, 0x1f, 0x1c, 0x1a, 0x1c, 0xa8, 0xa9, 0xab, 0xf1, 0xf2, 0xf4, 0xeb, 0xec, 0xed, 0xf0, 0xf0, - 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf3, 0xf3, 0xf3, 0xd7, 0xd7, 0xd7, 0xcd, 0xcd, 0xcd, 0xe6, 0xe6, 0xe6, 0xf6, 0xf6, 0xf6, - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, - 0xbc, 0xbc, 0xbc, 0x43, 0x43, 0x43, 0x24, 0x21, 0x21, 0x1f, 0x1b, 0x1c, 0x20, 0x1d, 0x1e, 0x41, - 0x3f, 0x40, 0xa8, 0xa5, 0xa7, 0xde, 0xdf, 0xe1, 0xee, 0xef, 0xf0, 0xf1, 0xf1, 0xf2, 0xfc, 0xfc, - 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfd, 0xfd, 0x98, 0x97, - 0x98, 0x39, 0x36, 0x37, 0x1d, 0x18, 0x19, 0x22, 0x1e, 0x1f, 0x1e, 0x1b, 0x1c, 0x5c, 0x5a, 0x5a, - 0xbc, 0xbb, 0xbc, 0xf0, 0xf2, 0xf4, 0xea, 0xeb, 0xec, 0xf5, 0xf5, 0xf5, 0xfd, 0xfc, 0xfc, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xed, 0xed, 0x8f, 0x8d, 0x8d, - 0x22, 0x1e, 0x1f, 0x24, 0x1f, 0x20, 0x1e, 0x18, 0x1a, 0x2f, 0x2d, 0x2d, 0x81, 0x82, 0x83, 0xe1, - 0xe2, 0xe4, 0xe7, 0xe8, 0xe9, 0xef, 0xef, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0x85, 0x84, 0x85, 0x31, 0x2d, - 0x2e, 0x1c, 0x17, 0x18, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1f, 0x20, 0x13, 0x11, 0x11, - 0x50, 0x4f, 0x50, 0xbb, 0xbd, 0xbf, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xf5, 0xf5, 0xf5, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x61, 0x18, 0x15, 0x16, - 0x22, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x55, 0x53, 0x53, 0xb7, 0xb8, 0xb7, 0xf2, 0xf4, 0xf5, 0xe9, - 0xea, 0xec, 0xf4, 0xf5, 0xf6, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xcf, 0xcf, 0xcf, - 0xbc, 0xbb, 0xbb, 0xde, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xe1, 0xe0, 0xe0, 0x46, 0x43, 0x43, 0x19, 0x14, - 0x15, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x1f, 0x1b, 0x19, - 0x2c, 0x29, 0x29, 0x71, 0x71, 0x72, 0xea, 0xeb, 0xeb, 0xeb, 0xed, 0xec, 0xee, 0xf0, 0xef, 0xf9, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf4, 0xf4, 0xf4, 0xb6, 0xb6, 0xb6, 0x45, 0x42, 0x43, 0x1b, 0x16, 0x18, 0x1d, 0x19, 0x1a, - 0x2f, 0x2d, 0x2d, 0x83, 0x83, 0x83, 0xd8, 0xd9, 0xd9, 0xf0, 0xf2, 0xf1, 0xee, 0xef, 0xee, 0xfa, - 0xfa, 0xfa, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd9, 0xd9, 0x41, 0x3d, 0x3e, - 0x09, 0x05, 0x06, 0x74, 0x73, 0x73, 0xf2, 0xf2, 0xf2, 0xe9, 0xe9, 0xe9, 0xec, 0xec, 0xec, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xd5, 0xd4, 0xd4, 0x40, 0x3d, 0x3d, 0x18, 0x13, - 0x15, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x20, 0x1c, 0x1b, - 0x25, 0x22, 0x22, 0x64, 0x64, 0x65, 0xe9, 0xeb, 0xea, 0xeb, 0xed, 0xec, 0xed, 0xee, 0xed, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xec, - 0xec, 0x98, 0x98, 0x98, 0x28, 0x27, 0x27, 0x1f, 0x1c, 0x1d, 0x19, 0x14, 0x15, 0x49, 0x46, 0x47, - 0xb2, 0xb2, 0xb2, 0xe4, 0xe6, 0xe6, 0xea, 0xed, 0xec, 0xf2, 0xf3, 0xf3, 0xfc, 0xfd, 0xfd, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x04, 0x05, 0x65, 0x63, 0x65, 0xdc, 0xdd, 0xdf, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xef, 0x55, 0x55, 0x55, 0x1c, 0x1a, - 0x1b, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1c, 0x17, 0x18, - 0x39, 0x36, 0x36, 0x8a, 0x8a, 0x89, 0xe9, 0xeb, 0xea, 0xea, 0xec, 0xeb, 0xf0, 0xf2, 0xf1, 0xfc, - 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe2, 0xe1, 0x79, 0x77, - 0x78, 0x1b, 0x16, 0x17, 0x23, 0x1f, 0x20, 0x18, 0x16, 0x16, 0x69, 0x69, 0x69, 0xcb, 0xcc, 0xcc, - 0xee, 0xf0, 0xef, 0xe9, 0xec, 0xea, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x03, 0x04, 0x64, 0x62, 0x63, 0xdb, 0xdb, 0xdd, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xc2, 0xc2, 0xc3, 0x4e, 0x4b, - 0x4c, 0x15, 0x11, 0x12, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x1e, 0x19, 0x1b, - 0x74, 0x71, 0x72, 0xe4, 0xe4, 0xe3, 0xe8, 0xea, 0xe9, 0xeb, 0xed, 0xec, 0xf7, 0xf8, 0xf8, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x60, 0x14, 0x12, - 0x12, 0x21, 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x87, 0x86, 0x86, 0xd8, 0xda, 0xda, 0xee, 0xf2, 0xf0, - 0xec, 0xee, 0xed, 0xf9, 0xfa, 0xfa, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf9, 0xf9, 0xbf, 0xbe, 0xbe, 0x37, 0x33, 0x34, - 0x07, 0x03, 0x05, 0x5e, 0x5c, 0x5d, 0xd2, 0xd3, 0xd2, 0xeb, 0xeb, 0xeb, 0xe9, 0xeb, 0xea, 0xf6, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xdf, - 0xdf, 0x96, 0x95, 0x96, 0x56, 0x55, 0x56, 0x52, 0x50, 0x51, 0x6a, 0x69, 0x69, 0xb2, 0xb2, 0xb2, - 0xe8, 0xe8, 0xe8, 0xef, 0xef, 0xef, 0xf4, 0xf4, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xcc, 0xcc, 0xcc, 0x4a, 0x47, 0x48, 0x1a, 0x16, 0x17, 0x1b, 0x17, - 0x18, 0x38, 0x36, 0x37, 0xa6, 0xa6, 0xa6, 0xdf, 0xe1, 0xe0, 0xed, 0xef, 0xee, 0xef, 0xf1, 0xf0, - 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xd2, 0xd1, 0xd2, 0x3a, 0x37, 0x38, - 0x09, 0x05, 0x06, 0x57, 0x54, 0x55, 0xc4, 0xc4, 0xc4, 0xea, 0xeb, 0xeb, 0xe8, 0xea, 0xe9, 0xf5, - 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, - 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, - 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, - 0xf9, 0xf9, 0xb2, 0xb2, 0xb2, 0x32, 0x32, 0x32, 0x20, 0x1d, 0x1e, 0x17, 0x13, 0x14, 0x53, 0x51, - 0x51, 0xbd, 0xbe, 0xbe, 0xe7, 0xea, 0xe9, 0xea, 0xec, 0xeb, 0xf3, 0xf4, 0xf4, 0xfd, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0x46, 0x43, 0x44, - 0x0e, 0x0a, 0x0b, 0x49, 0x47, 0x48, 0xae, 0xad, 0xb0, 0xeb, 0xeb, 0xed, 0xe8, 0xea, 0xe9, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xa1, - 0xa0, 0xa0, 0x27, 0x23, 0x24, 0x23, 0x1f, 0x20, 0x17, 0x13, 0x14, 0x65, 0x63, 0x64, 0xc9, 0xca, - 0xca, 0xef, 0xf1, 0xf0, 0xeb, 0xec, 0xeb, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x63, 0x60, 0x60, - 0x1c, 0x18, 0x19, 0x35, 0x33, 0x34, 0x92, 0x92, 0x94, 0xec, 0xed, 0xef, 0xe9, 0xeb, 0xea, 0xf1, - 0xf2, 0xf2, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x26, - 0x24, 0x24, 0x1f, 0x1a, 0x1b, 0x21, 0x1d, 0x1e, 0x78, 0x78, 0x78, 0xce, 0xd1, 0xd0, 0xf0, 0xf3, - 0xf2, 0xeb, 0xed, 0xec, 0xf8, 0xfb, 0xfa, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0x8d, 0x8d, 0x8d, - 0x31, 0x2e, 0x2f, 0x1d, 0x19, 0x1a, 0x71, 0x6e, 0x6f, 0xee, 0xee, 0xef, 0xea, 0xeb, 0xed, 0xed, - 0xee, 0xf0, 0xf9, 0xf9, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xf4, 0xf4, 0x7b, 0x78, 0x79, 0x2d, 0x29, 0x2a, 0x17, - 0x13, 0x14, 0x32, 0x2e, 0x2f, 0x84, 0x83, 0x83, 0xd9, 0xdb, 0xda, 0xee, 0xf1, 0xf0, 0xee, 0xef, - 0xee, 0xfb, 0xfb, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xc4, 0xc3, 0xc3, - 0x4a, 0x47, 0x48, 0x08, 0x05, 0x06, 0x51, 0x4f, 0x4f, 0xdd, 0xdd, 0xdd, 0xe8, 0xe9, 0xeb, 0xeb, - 0xeb, 0xee, 0xf6, 0xf6, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xe4, 0xe4, 0xe4, 0x6f, 0x6f, 0x6f, 0x2e, 0x2b, 0x2b, 0x14, 0x10, 0x11, 0x39, - 0x37, 0x38, 0x91, 0x91, 0x92, 0xe5, 0xe6, 0xe6, 0xea, 0xec, 0xeb, 0xef, 0xf1, 0xf0, 0xfa, 0xfb, - 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, - 0x67, 0x65, 0x66, 0x07, 0x04, 0x05, 0x3d, 0x3a, 0x3b, 0xaa, 0xab, 0xab, 0xe1, 0xe2, 0xe4, 0xeb, - 0xec, 0xee, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xd9, 0xd8, 0xd9, 0x73, 0x70, 0x71, 0x24, 0x1f, 0x20, 0x1a, 0x14, 0x16, 0x3d, 0x3a, 0x3c, 0x9b, - 0x9b, 0x9c, 0xf2, 0xf3, 0xf5, 0xe8, 0xe9, 0xeb, 0xf2, 0xf2, 0xf2, 0xfc, 0xfc, 0xfc, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x9d, 0x9a, 0x9b, 0x33, 0x2e, 0x2f, 0x24, 0x21, 0x22, 0x64, 0x64, 0x64, 0xd8, 0xd8, 0xda, 0xf1, - 0xf2, 0xf3, 0xee, 0xee, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdb, 0xdc, - 0x6f, 0x6d, 0x6e, 0x16, 0x13, 0x14, 0x24, 0x1f, 0x20, 0x3b, 0x39, 0x39, 0xab, 0xac, 0xab, 0xf3, - 0xf5, 0xf5, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe1, 0xe1, 0xe1, 0x71, 0x6f, 0x70, 0x0e, 0x09, 0x0a, 0x2d, 0x29, 0x2a, 0xba, 0xb9, 0xb9, 0xeb, - 0xec, 0xec, 0xec, 0xec, 0xec, 0xf2, 0xf2, 0xf2, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe4, 0xe5, 0xe5, 0x67, 0x67, 0x68, - 0x14, 0x10, 0x12, 0x25, 0x20, 0x22, 0x41, 0x3f, 0x40, 0xbc, 0xbc, 0xbe, 0xed, 0xef, 0xf0, 0xed, - 0xed, 0xee, 0xf4, 0xf4, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xb0, 0xae, 0xaf, 0x2b, 0x26, 0x27, 0x24, 0x20, 0x21, 0x63, 0x62, 0x62, 0xc6, - 0xc6, 0xc6, 0xf4, 0xf4, 0xf4, 0xed, 0xed, 0xed, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xe6, 0xe5, 0xe6, 0x58, 0x56, 0x57, 0x1e, 0x1a, 0x1b, - 0x1b, 0x17, 0x19, 0x4c, 0x4b, 0x4b, 0xcc, 0xce, 0xcd, 0xe6, 0xe8, 0xe9, 0xec, 0xec, 0xef, 0xf4, - 0xf4, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xeb, 0xea, 0xea, 0x8b, 0x89, 0x89, 0x1f, 0x1b, 0x1c, 0x17, 0x15, 0x16, 0x8c, - 0x8d, 0x8c, 0xe7, 0xe9, 0xe8, 0xeb, 0xed, 0xec, 0xec, 0xee, 0xed, 0xfa, 0xfb, 0xfa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x56, 0x53, 0x54, 0x27, 0x24, 0x25, 0x13, 0x0f, 0x10, - 0x5d, 0x5c, 0x5d, 0xcc, 0xce, 0xd0, 0xe9, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xf6, 0xf6, 0xf6, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0xd6, 0xd7, 0x55, 0x51, 0x52, 0x24, 0x1f, 0x21, 0x2c, - 0x29, 0x2a, 0x94, 0x95, 0x95, 0xf4, 0xf7, 0xf5, 0xe8, 0xea, 0xe9, 0xf0, 0xf1, 0xf0, 0xff, 0xff, - 0xff, 0xd3, 0xd3, 0xd3, 0x60, 0x5f, 0x5f, 0x22, 0x1f, 0x20, 0x15, 0x13, 0x14, 0x64, 0x64, 0x64, - 0xc8, 0xc9, 0xc9, 0xf0, 0xf1, 0xf3, 0xea, 0xea, 0xec, 0xf7, 0xf6, 0xf7, 0xfd, 0xfd, 0xfd, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xd4, 0xd3, 0xd4, 0x42, 0x40, 0x41, 0x0f, - 0x0d, 0x0e, 0x3c, 0x3a, 0x3b, 0x96, 0x94, 0x95, 0xeb, 0xed, 0xec, 0xf0, 0xf3, 0xf2, 0xd0, 0xd1, - 0xd0, 0x6f, 0x6d, 0x6d, 0x14, 0x0f, 0x10, 0x22, 0x1f, 0x20, 0x62, 0x62, 0x64, 0xc4, 0xc4, 0xc6, - 0xf4, 0xf4, 0xf5, 0xec, 0xec, 0xec, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xb9, 0xb7, 0xb8, 0x49, - 0x47, 0x48, 0x0d, 0x0a, 0x0b, 0x32, 0x2e, 0x2f, 0x82, 0x80, 0x81, 0xcc, 0xcc, 0xcc, 0x6a, 0x68, - 0x69, 0x14, 0x10, 0x11, 0x29, 0x24, 0x25, 0x59, 0x55, 0x56, 0xd0, 0xcf, 0xd1, 0xf1, 0xf1, 0xf3, - 0xed, 0xed, 0xef, 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, - 0xb0, 0xb0, 0x44, 0x43, 0x43, 0x1b, 0x16, 0x17, 0x24, 0x20, 0x21, 0x2c, 0x28, 0x29, 0x24, 0x20, - 0x21, 0x20, 0x1c, 0x1e, 0x5c, 0x5b, 0x5b, 0xd9, 0xdb, 0xda, 0xe8, 0xea, 0xeb, 0xec, 0xed, 0xef, - 0xf6, 0xf7, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xbb, 0xba, 0xba, 0x48, 0x44, 0x45, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x17, 0x12, - 0x13, 0x45, 0x42, 0x44, 0xaa, 0xa9, 0xaa, 0xe9, 0xea, 0xea, 0xe9, 0xea, 0xeb, 0xf2, 0xf2, 0xf4, - 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xe4, 0xe4, 0xe5, 0x86, 0x85, 0x86, 0x1f, 0x1c, 0x1d, 0x1e, 0x1c, 0x1d, 0x21, 0x1f, - 0x20, 0x1c, 0x1a, 0x1b, 0x2e, 0x2a, 0x2b, 0x6b, 0x67, 0x68, 0xc2, 0xc2, 0xc3, 0xe8, 0xea, 0xe9, - 0xef, 0xf1, 0xf0, 0xf4, 0xf5, 0xf6, 0xfc, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x93, 0x93, 0x93, 0x1b, 0x19, 0x1a, 0x23, 0x20, 0x21, 0x3f, 0x3d, 0x3e, 0x42, 0x40, - 0x41, 0x30, 0x2c, 0x2d, 0x21, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x1f, 0x1e, 0x1e, 0x4b, 0x4a, 0x4b, - 0x96, 0x96, 0x97, 0xd0, 0xd1, 0xd3, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf2, 0xf8, 0xf8, 0xf8, 0xfd, - 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, - 0x9d, 0x9d, 0x36, 0x32, 0x33, 0x1a, 0x16, 0x17, 0x31, 0x2f, 0x30, 0xb1, 0xb2, 0xb4, 0xed, 0xee, - 0xf1, 0xcb, 0xcb, 0xcd, 0x79, 0x79, 0x78, 0x36, 0x35, 0x35, 0x23, 0x20, 0x21, 0x21, 0x1d, 0x1e, - 0x20, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x41, 0x3e, 0x3f, 0x6b, 0x6a, 0x6b, 0x9b, 0x9a, 0x9a, 0xc4, - 0xc3, 0xc3, 0xe4, 0xe4, 0xe4, 0xf3, 0xf3, 0xf3, 0xf8, 0xf8, 0xf8, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, - 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xbf, 0xbe, 0xbe, 0x4d, - 0x4a, 0x4b, 0x0a, 0x07, 0x08, 0x37, 0x37, 0x36, 0xa2, 0xa3, 0xa3, 0xdf, 0xe0, 0xe2, 0xed, 0xee, - 0xf0, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xf7, 0xf7, 0xf7, 0xc4, 0xc4, 0xc4, 0x81, 0x80, 0x80, - 0x42, 0x40, 0x40, 0x23, 0x1e, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x21, 0x1e, 0x1f, 0x20, - 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x33, 0x30, 0x31, 0x48, 0x47, 0x47, 0x5f, 0x5e, 0x5e, 0x73, 0x72, - 0x72, 0x81, 0x81, 0x81, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0xb8, 0xb8, 0xb8, - 0xf8, 0xf8, 0xf8, 0xf1, 0xf1, 0xf1, 0xf6, 0xf6, 0xf6, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe1, 0xe1, 0xe1, 0x4d, 0x49, 0x4a, 0x17, - 0x12, 0x13, 0x30, 0x2d, 0x2d, 0x7f, 0x7e, 0x7e, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xec, 0xf0, 0xf0, - 0xf0, 0xfa, 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0xfe, 0xfe, 0xe8, 0xe8, 0xe8, 0xba, 0xba, 0xba, 0x91, 0x90, 0x91, 0x67, 0x66, 0x67, 0x44, - 0x41, 0x42, 0x2b, 0x27, 0x28, 0x21, 0x1e, 0x1f, 0x20, 0x1d, 0x1e, 0x22, 0x1e, 0x1f, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x10, 0x0d, 0x0e, 0x5b, 0x5b, 0x5a, - 0xe4, 0xe7, 0xe6, 0xe7, 0xe9, 0xe8, 0xeb, 0xeb, 0xeb, 0xf6, 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0x65, 0x65, 0x65, 0x29, 0x26, 0x26, 0x15, - 0x11, 0x12, 0x77, 0x74, 0x75, 0xe8, 0xe8, 0xe9, 0xea, 0xeb, 0xea, 0xec, 0xec, 0xec, 0xf8, 0xf8, - 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf9, 0xf8, 0xf8, 0xe9, 0xe8, 0xe9, 0xd6, 0xd5, 0xd6, 0xc0, 0xbf, 0xc0, 0xae, 0xad, - 0xae, 0xa2, 0xa1, 0xa2, 0x9c, 0x9b, 0x9c, 0x97, 0x97, 0x97, 0x9e, 0x9e, 0x9e, 0xc7, 0xc8, 0xc7, - 0xf6, 0xf9, 0xf7, 0xf1, 0xf3, 0xf2, 0xf7, 0xf7, 0xf7, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xed, 0xee, 0xee, 0x91, 0x91, 0x91, 0x20, 0x1b, 0x1d, 0x17, 0x12, 0x14, 0x65, - 0x63, 0x64, 0xc6, 0xc7, 0xc8, 0xf0, 0xf1, 0xf3, 0xe9, 0xea, 0xeb, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xa4, 0xa4, 0xa5, 0x23, 0x21, 0x22, 0x23, 0x20, 0x21, 0x3e, 0x3b, 0x3c, 0xb5, - 0xb3, 0xb4, 0xf7, 0xf7, 0xf8, 0xea, 0xeb, 0xed, 0xf4, 0xf5, 0xf5, 0xfd, 0xfd, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xba, 0xb9, 0xb9, 0x51, 0x4d, 0x4e, 0x14, 0x0f, 0x10, 0x2b, 0x27, 0x28, 0xaa, 0xab, 0xab, 0xe5, - 0xe7, 0xe6, 0xed, 0xed, 0xed, 0xf0, 0xf0, 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfd, 0xeb, 0xeb, 0xeb, - 0x60, 0x5d, 0x5e, 0x0e, 0x09, 0x0a, 0x31, 0x2d, 0x2e, 0x7a, 0x76, 0x77, 0xda, 0xdb, 0xda, 0xef, - 0xf1, 0xf0, 0xef, 0xf0, 0xf0, 0xfb, 0xfa, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x77, 0x73, 0x74, - 0x2c, 0x27, 0x28, 0x14, 0x11, 0x12, 0x55, 0x55, 0x55, 0xdb, 0xdd, 0xdc, 0xe8, 0xea, 0xe9, 0xeb, - 0xed, 0xec, 0xf6, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xa4, 0xa3, 0xa3, 0x33, 0x30, 0x31, - 0x0f, 0x0a, 0x0c, 0x49, 0x46, 0x46, 0xac, 0xac, 0xac, 0xeb, 0xed, 0xec, 0xe9, 0xeb, 0xea, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfa, 0xf9, 0xf9, 0xaa, 0xa8, 0xa9, 0x27, 0x22, 0x23, 0x1f, 0x1c, 0x1d, - 0x1d, 0x1c, 0x1d, 0x82, 0x83, 0x82, 0xf3, 0xf5, 0xf4, 0xe9, 0xea, 0xe9, 0xef, 0xef, 0xef, 0xfa, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xb0, 0xb0, 0xb1, 0x33, 0x32, 0x33, 0x20, 0x1d, 0x1e, 0x18, 0x14, 0x15, - 0x6b, 0x69, 0x69, 0xc8, 0xc9, 0xc8, 0xf0, 0xf2, 0xf1, 0xea, 0xec, 0xeb, 0xf8, 0xf9, 0xf9, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xca, 0xc9, 0xc9, 0x63, 0x61, 0x62, 0x3d, 0x3c, 0x3c, 0x6a, 0x6a, 0x6a, - 0xca, 0xca, 0xca, 0xf5, 0xf5, 0xf5, 0xed, 0xed, 0xed, 0xf6, 0xf6, 0xf6, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfd, 0xfe, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x78, 0x77, 0x78, 0x89, 0x89, 0x89, 0xad, 0xad, 0xad, - 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x22, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x21, 0x1d, 0x1e, 0x3d, 0x3b, 0x3c, 0x66, 0x63, 0x64, 0x68, 0x65, 0x66, 0x46, 0x43, 0x44, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x25, 0x22, 0x23, 0x46, 0x44, - 0x45, 0x97, 0x95, 0x96, 0x7e, 0x7c, 0x7d, 0x3b, 0x38, 0x39, 0x22, 0x1f, 0x20, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x64, 0x60, 0x61, 0xb2, 0xaf, 0xb0, 0xaf, 0xad, - 0xae, 0x43, 0x41, 0x42, 0x21, 0x1f, 0x20, 0x1d, 0x1b, 0x1c, 0x2b, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1f, 0x1b, 0x1c, 0x2e, - 0x2a, 0x2b, 0x72, 0x6f, 0x70, 0xd8, 0xd6, 0xd7, 0xc4, 0xc3, 0xc4, 0x5e, 0x5c, 0x5c, 0x1e, 0x1a, - 0x1b, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x1c, 0x18, 0x19, 0x3a, 0x36, 0x38, 0x91, 0x8f, 0x90, 0xe3, - 0xe3, 0xe3, 0xe1, 0xe0, 0xe0, 0x76, 0x74, 0x75, 0x2a, 0x26, 0x27, 0x1f, 0x1b, 0x1c, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1e, 0x1f, 0x25, 0x22, 0x22, 0x2d, 0x2c, 0x2c, 0x33, - 0x30, 0x30, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, - 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, - 0x35, 0x32, 0x33, 0x2b, 0x28, 0x29, 0x22, 0x20, 0x21, 0x2c, 0x2a, 0x2b, 0x33, 0x2f, 0x30, 0x35, - 0x30, 0x31, 0x34, 0x30, 0x32, 0x34, 0x30, 0x32, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x31, - 0x32, 0x31, 0x2e, 0x2f, 0x2f, 0x2b, 0x2c, 0x2e, 0x2a, 0x2b, 0x27, 0x23, 0x24, 0x22, 0x1e, 0x1f, - 0x21, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x2e, 0x2a, 0x2b, 0x35, - 0x32, 0x33, 0x33, 0x30, 0x31, 0x34, 0x30, 0x31, 0x2e, 0x2b, 0x2c, 0x26, 0x23, 0x24, 0x22, 0x1e, - 0x1f, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x1f, 0x1c, 0x1d, - 0x26, 0x23, 0x24, 0x46, 0x43, 0x44, 0xa4, 0xa3, 0xa3, 0xf4, 0xf5, 0xf5, 0xed, 0xee, 0xee, 0x93, - 0x93, 0x93, 0x30, 0x2f, 0x2f, 0x20, 0x1c, 0x1d, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x16, 0x12, 0x13, 0x45, 0x42, 0x43, 0xc2, 0xc1, 0xc2, 0xf9, - 0xf8, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x96, 0x95, 0x95, 0x30, 0x2e, 0x2f, 0xa5, 0xa3, 0xa4, 0xf4, 0xf3, 0xf4, 0xff, - 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0xfa, 0xfb, 0xed, 0xec, 0xed, - 0xc1, 0xc0, 0xc2, 0x7a, 0x79, 0x7a, 0x2c, 0x2b, 0x2b, 0x1b, 0x18, 0x18, 0x4b, 0x47, 0x48, 0xac, - 0xaa, 0xab, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xb9, 0xb8, 0xb8, 0x51, 0x4f, - 0x4f, 0x1d, 0x19, 0x1a, 0x24, 0x20, 0x21, 0x21, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x5f, 0x5d, 0x5d, - 0xc0, 0xc1, 0xc0, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xab, 0xac, 0xac, 0x43, 0x41, 0x42, 0x1e, - 0x1a, 0x1b, 0x22, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd7, 0xd6, 0xd6, 0x74, 0x72, 0x73, 0x39, 0x35, 0x36, 0x3b, 0x39, - 0x39, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3b, 0x3b, 0x39, 0x3a, - 0x3d, 0x3c, 0x3d, 0x28, 0x25, 0x26, 0x3b, 0x37, 0x38, 0xa3, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe3, 0xe3, 0xe3, 0x8c, 0x8b, 0x8b, 0x3a, 0x37, 0x38, 0x39, 0x37, 0x38, 0x3b, 0x39, - 0x3a, 0x3a, 0x38, 0x39, 0x3c, 0x3a, 0x3b, 0x4c, 0x4a, 0x4b, 0xa0, 0xa0, 0xa0, 0xea, 0xea, 0xea, - 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf3, 0xa6, 0xa6, 0xa6, 0x3a, 0x37, 0x38, 0x17, 0x12, 0x13, 0x23, - 0x20, 0x21, 0x52, 0x52, 0x52, 0xba, 0xb9, 0xba, 0xf5, 0xf4, 0xf5, 0xff, 0xff, 0xff, 0xf1, 0xf1, - 0xf1, 0xb0, 0xb0, 0xb0, 0x4d, 0x4d, 0x4d, 0x74, 0x74, 0x74, 0xd0, 0xd0, 0xd0, 0xff, 0xff, 0xff, - 0xf9, 0xf8, 0xf8, 0xce, 0xcd, 0xce, 0x5c, 0x58, 0x59, 0x23, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xde, 0xdf, 0xdf, 0x91, 0x90, 0x91, 0x64, 0x61, 0x62, 0x65, 0x63, - 0x63, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x67, 0x65, 0x66, - 0x39, 0x37, 0x38, 0x13, 0x10, 0x11, 0x3b, 0x37, 0x38, 0xa4, 0xa3, 0xa4, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xea, 0xe9, 0xea, 0xa7, 0xa6, 0xa7, 0x69, 0x66, 0x67, 0x69, 0x67, 0x68, 0x6b, 0x69, - 0x6a, 0x6a, 0x68, 0x69, 0x6e, 0x6c, 0x6d, 0x80, 0x7f, 0x80, 0xc7, 0xc6, 0xc7, 0xf8, 0xf8, 0xf8, - 0xff, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0x54, 0x54, 0x54, 0x29, 0x25, 0x26, 0x1f, 0x1b, 0x1c, 0x23, - 0x1f, 0x20, 0x21, 0x1d, 0x1f, 0x22, 0x1f, 0x20, 0x5b, 0x5a, 0x5a, 0xc2, 0xc2, 0xc2, 0xff, 0xff, - 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd8, 0xd8, - 0x74, 0x71, 0x72, 0x2b, 0x27, 0x28, 0x20, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xee, 0xee, 0xee, 0xe9, 0xe9, 0xe9, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, - 0x68, 0x67, 0x68, 0x0b, 0x09, 0x0a, 0x3a, 0x37, 0x38, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xec, 0xec, 0xec, 0xe1, 0xe1, 0xe1, 0xe3, 0xe2, 0xe2, 0xe4, 0xe3, - 0xe3, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xec, 0xeb, 0xeb, 0xf9, 0xfa, 0xfa, 0xff, 0xff, 0xff, - 0xe0, 0xe1, 0xe0, 0xa1, 0xa1, 0xa1, 0x63, 0x62, 0x62, 0x2d, 0x2a, 0x2a, 0x1f, 0x1b, 0x1c, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x7d, 0x7a, 0x7b, 0xe4, 0xe2, - 0xe3, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xf6, 0xf6, 0xf6, 0xa3, 0xa2, 0xa2, - 0x33, 0x30, 0x31, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd2, 0xd1, 0xd1, 0x63, 0x60, 0x61, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, - 0x22, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0x7c, 0x7b, 0x7b, 0x1c, 0x1b, 0x1b, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x22, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x2a, 0x27, 0x28, 0xa5, 0xa4, 0xa5, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0x90, 0x8e, 0x8f, 0x36, 0x32, 0x33, 0x16, - 0x12, 0x13, 0x2c, 0x28, 0x29, 0x68, 0x64, 0x65, 0xd1, 0xd0, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xec, 0xec, 0xec, 0xab, 0xab, 0xab, 0xdb, 0xdb, 0xdb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xe7, 0xe6, 0xe7, 0x8e, 0x8e, 0x8e, 0x38, 0x34, 0x35, 0x1d, 0x18, 0x1a, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x10, 0x12, 0x45, 0x42, 0x42, 0xc2, 0xc2, 0xc2, 0xf8, - 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xd2, 0xd2, 0xd2, 0x62, 0x62, 0x62, 0x1e, 0x1b, 0x1c, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x19, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa3, 0xa2, 0xa3, 0xf3, 0xf3, 0xf3, 0xff, - 0xff, 0xff, 0xeb, 0xeb, 0xeb, 0xaf, 0xaf, 0xaf, 0x77, 0x77, 0x77, 0x78, 0x77, 0x77, 0x7a, 0x78, - 0x79, 0x7a, 0x78, 0x79, 0x7b, 0x79, 0x7a, 0x82, 0x81, 0x82, 0xa1, 0xa1, 0xa1, 0xe0, 0xe0, 0xe0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xec, 0xed, 0x6a, 0x69, 0x6a, 0x24, 0x22, 0x23, 0x5d, - 0x5c, 0x5c, 0xcd, 0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xa6, 0xa3, - 0xa4, 0x3f, 0x3b, 0x3c, 0x23, 0x1f, 0x20, 0x25, 0x23, 0x25, 0x81, 0x80, 0x81, 0xe2, 0xe1, 0xe1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xe6, 0xe6, 0x83, 0x83, 0x82, 0x2b, 0x29, 0x29, 0x21, - 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3e, 0x3c, 0x3c, 0x9f, 0x9f, 0x9f, 0xc8, - 0xc8, 0xc8, 0xda, 0xda, 0xda, 0xaa, 0xab, 0xaa, 0x54, 0x53, 0x54, 0x1f, 0x1c, 0x1d, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x1b, 0x17, 0x18, 0x35, 0x33, 0x34, 0x87, 0x87, 0x87, 0xc5, 0xc5, 0xc5, 0xd2, - 0xd2, 0xd2, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcd, 0xcd, 0xcc, 0xcd, - 0xcd, 0xcc, 0xce, 0xcd, 0xcc, 0xce, 0xcd, 0xca, 0xcb, 0xcb, 0xc4, 0xc4, 0xc4, 0xba, 0xb9, 0xba, - 0xa0, 0x9e, 0x9f, 0x70, 0x6d, 0x6e, 0x34, 0x31, 0x32, 0x37, 0x35, 0x36, 0x8e, 0x8d, 0x8e, 0xce, - 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xce, 0xce, 0xce, 0xa6, 0xa7, 0xa7, 0x50, 0x4f, 0x4f, 0x1a, 0x18, - 0x18, 0x23, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x19, 0x17, 0x17, 0x39, 0x38, 0x37, - 0x89, 0x89, 0x89, 0xc7, 0xc7, 0xc7, 0xd0, 0xd0, 0xd0, 0xd3, 0xd3, 0xd3, 0xa6, 0xa5, 0xa5, 0x4f, - 0x4e, 0x4e, 0x24, 0x23, 0x23, 0x20, 0x1d, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, - 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, - 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x22, - 0x1e, 0x1f, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, - 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x21, 0x1d, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, - 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, - 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, - 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, - 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x24, 0x20, 0x21, 0x2f, 0x2b, 0x2c, 0x44, 0x40, 0x41 -}; - -#endif // _THUMBNAIL_H - diff --git a/sdk/Linux/2019.2/samples/ExportScene01/main.cxx b/sdk/Linux/2019.2/samples/ExportScene01/main.cxx deleted file mode 100644 index 0e62b09..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene01/main.cxx +++ /dev/null @@ -1,573 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cylinder linked to a skeleton -// made of 2 segments. Two animation stacks show the influence of the -// skeleton segments over the cylinder. -// -// The example illustrates how to: -// 1) create a patch -// 2) create a skeleton segment -// 3) create a link -// 4) store the bind pose -// 5) store one arbitrary rest pose -// 6) create multiple animation stacks -// 7) create meta-data and add a thumbnail -// 8) export a scene in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "Thumbnail.h" - -#define SAMPLE_FILENAME "ExportScene01.fbx" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -FbxNode* CreatePatch(FbxScene* pScene, const char* pName); -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName); - -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot); -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch); -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AddThumbnailToScene(FbxScene* pScene); -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode); - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation and animation of a deformed cylinder."; - sceneInfo->mAuthor = "ExportScene01.exe sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "deformed cylinder"; - sceneInfo->mComment = "no particular comments required."; - - // we need to add the sceneInfo before calling AddThumbNailToScene because - // that function is asking the scene for the sceneInfo. - pScene->SetSceneInfo(sceneInfo); - - AddThumbnailToScene(pScene); - - FbxNode* lPatch = CreatePatch(pScene, "Patch"); - FbxNode* lSkeletonRoot = CreateSkeleton(pScene, "Skeleton"); - - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPatch); - lRootNode->AddChild(lSkeletonRoot); - - // Store poses - LinkPatchToSkeleton(pScene, lPatch, lSkeletonRoot); - StoreBindPose(pScene, lPatch); - StoreRestPose(pScene, lSkeletonRoot); - - // Animation - AnimateSkeleton(pScene, lSkeletonRoot); - - return true; -} - -// Create a cylinder centered on the Z axis. -FbxNode* CreatePatch(FbxScene* pScene, const char* pName) -{ - FbxPatch* lPatch = FbxPatch::Create(pScene,pName); - - // Set patch properties. - lPatch->InitControlPoints(4, FbxPatch::eBSpline, 7, FbxPatch::eBSpline); - lPatch->SetStep(4, 4); - lPatch->SetClosed(true, false); - - FbxVector4* lVector4 = lPatch->GetControlPoints(); - int i; - - for (i = 0; i < 7; i++) - { - double lRadius = 15.0; - double lSegmentLength = 20.0; - lVector4[4*i + 0].Set(lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 1].Set(0.0, -lRadius, (i-3)*lSegmentLength); - lVector4[4*i + 2].Set(-lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 3].Set(0.0, lRadius, (i-3)*lSegmentLength); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // Rotate the cylinder along the X axis so the axis - // of the cylinder is the same as the bone axis (Y axis) - FbxVector4 lR(-90.0, 0.0, 0.0); - lNode->LclRotation.Set(lR); - lNode->SetNodeAttribute(lPatch); - - return lNode; -} - -// Create a skeleton with 2 segments. -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName) -{ - // Create skeleton root. - FbxString lRootName(pName); - lRootName += "Root"; - FbxSkeleton* lSkeletonRootAttribute = FbxSkeleton::Create(pScene, pName); - lSkeletonRootAttribute->SetSkeletonType(FbxSkeleton::eRoot); - FbxNode* lSkeletonRoot = FbxNode::Create(pScene,lRootName.Buffer()); - lSkeletonRoot->SetNodeAttribute(lSkeletonRootAttribute); - lSkeletonRoot->LclTranslation.Set(FbxVector4(0.0, -40.0, 0.0)); - - // Create skeleton first limb node. - FbxString lLimbNodeName1(pName); - lLimbNodeName1 += "LimbNode1"; - FbxSkeleton* lSkeletonLimbNodeAttribute1 = FbxSkeleton::Create(pScene,lLimbNodeName1); - lSkeletonLimbNodeAttribute1->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute1->Size.Set(1.0); - FbxNode* lSkeletonLimbNode1 = FbxNode::Create(pScene,lLimbNodeName1.Buffer()); - lSkeletonLimbNode1->SetNodeAttribute(lSkeletonLimbNodeAttribute1); - lSkeletonLimbNode1->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Create skeleton second limb node. - FbxString lLimbNodeName2(pName); - lLimbNodeName2 += "LimbNode2"; - FbxSkeleton* lSkeletonLimbNodeAttribute2 = FbxSkeleton::Create(pScene,lLimbNodeName2); - lSkeletonLimbNodeAttribute2->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute2->Size.Set(1.0); - FbxNode* lSkeletonLimbNode2 = FbxNode::Create(pScene,lLimbNodeName2.Buffer()); - lSkeletonLimbNode2->SetNodeAttribute(lSkeletonLimbNodeAttribute2); - lSkeletonLimbNode2->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Build skeleton node hierarchy. - lSkeletonRoot->AddChild(lSkeletonLimbNode1); - lSkeletonLimbNode1->AddChild(lSkeletonLimbNode2); - - return lSkeletonRoot; -} - -// Set the influence of the skeleton segments over the cylinder. -// The link mode is FbxCluster::eTotalOne which means the total -// of the weights assigned to a given control point must equal 1. -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot) -{ - int i, j; - FbxAMatrix lXMatrix; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - FbxNode* lLimbNode2 = lLimbNode1->GetChild(0); - - // Bottom section of cylinder is clustered to skeleton root. - FbxCluster *lClusterToRoot = FbxCluster::Create(pScene,""); - lClusterToRoot->SetLink(lRoot); - lClusterToRoot->SetLinkMode(FbxCluster::eTotalOne); - for(i=0; i<4; ++i) - for(j=0; j<4; ++j) - lClusterToRoot->AddControlPointIndex(4*i + j, 1.0 - 0.25*i); - - // Center section of cylinder is clustered to skeleton limb node. - FbxCluster* lClusterToLimbNode1 = FbxCluster::Create(pScene, ""); - lClusterToLimbNode1->SetLink(lLimbNode1); - lClusterToLimbNode1->SetLinkMode(FbxCluster::eTotalOne); - - for (i =1; i<6; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode1->AddControlPointIndex(4*i + j, (i == 1 || i == 5 ? 0.25 : 0.50)); - - - // Top section of cylinder is clustered to skeleton limb. - - FbxCluster * lClusterToLimbNode2 = FbxCluster::Create(pScene,""); - lClusterToLimbNode2->SetLink(lLimbNode2); - lClusterToLimbNode2->SetLinkMode(FbxCluster::eTotalOne); - - for (i=3; i<7; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode2->AddControlPointIndex(4*i + j, 0.25*(i - 2)); - - // Now we have the Patch and the skeleton correctly positioned, - // set the Transform and TransformLink matrix accordingly. - FbxScene* lScene = pPatch->GetScene(); - if( lScene ) lXMatrix = pPatch->EvaluateGlobalTransform(); - - lClusterToRoot->SetTransformMatrix(lXMatrix); - lClusterToLimbNode1->SetTransformMatrix(lXMatrix); - lClusterToLimbNode2->SetTransformMatrix(lXMatrix); - - - - if( lScene ) lXMatrix = lRoot->EvaluateGlobalTransform(); - lClusterToRoot->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode1->EvaluateGlobalTransform(); - lClusterToLimbNode1->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode2->EvaluateGlobalTransform(); - lClusterToLimbNode2->SetTransformLinkMatrix(lXMatrix); - - - // Add the clusters to the patch by creating a skin and adding those clusters to that skin. - // After add that skin. - - FbxGeometry* lPatchAttribute = (FbxGeometry*) pPatch->GetNodeAttribute(); - FbxSkin* lSkin = FbxSkin::Create(pScene, ""); - lSkin->AddCluster(lClusterToRoot); - lSkin->AddCluster(lClusterToLimbNode1); - lSkin->AddCluster(lClusterToLimbNode2); - lPatchAttribute->AddDeformer(lSkin); - -} - -// Create two animation stacks. -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - - // First animation stack. - lAnimStackName = "Bend on 2 sides"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Z channel - FbxAnimCurve* lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Same thing for the next object - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Second animation stack. - lAnimStackName = "Bend and turn around"; - lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Y channel - lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 720.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } -} - -// Add a thumbnail to the scene -void AddThumbnailToScene(FbxScene* pScene) -{ - FbxThumbnail* lThumbnail = FbxThumbnail::Create(pScene,""); - - lThumbnail->SetDataFormat(FbxThumbnail::eRGB_24); - lThumbnail->SetSize(FbxThumbnail::e64x64); - lThumbnail->SetThumbnailImage(cSceneThumbnail); - - if (pScene->GetSceneInfo()) - { - pScene->GetSceneInfo()->SetSceneThumbnail(lThumbnail); - } -} - -// Store the Bind Pose -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch) -{ - // In the bind pose, we must store all the link's global matrix at the time of the bind. - // Plus, we must store all the parent(s) global matrix of a link, even if they are not - // themselves deforming any model. - - // In this example, since there is only one model deformed, we don't need walk through - // the scene - // - - // Now list the all the link involve in the patch deformation - FbxArray lClusteredFbxNodes; - int i, j; - - if (pPatch && pPatch->GetNodeAttribute()) - { - int lSkinCount=0; - int lClusterCount=0; - switch (pPatch->GetNodeAttribute()->GetAttributeType()) - { - default: - break; - case FbxNodeAttribute::eMesh: - case FbxNodeAttribute::eNurbs: - case FbxNodeAttribute::ePatch: - - lSkinCount = ((FbxGeometry*)pPatch->GetNodeAttribute())->GetDeformerCount(FbxDeformer::eSkin); - //Go through all the skins and count them - //then go through each skin and get their cluster count - for(i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount+=lSkin->GetClusterCount(); - } - break; - } - //if we found some clusters we must add the node - if (lClusterCount) - { - //Again, go through all the skins get each cluster link and add them - for (i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount=lSkin->GetClusterCount(); - for (j=0; jGetCluster(j)->GetLink(); - AddNodeRecursively(lClusteredFbxNodes, lClusterNode); - } - - } - - // Add the patch to the pose - lClusteredFbxNodes.Add(pPatch); - } - } - - // Now create a bind pose with the link list - if (lClusteredFbxNodes.GetCount()) - { - // A pose must be named. Arbitrarily use the name of the patch node. - FbxPose* lPose = FbxPose::Create(pScene,pPatch->GetName()); - - // default pose type is rest pose, so we need to set the type as bind pose - lPose->SetIsBindPose(true); - - for (i=0; iEvaluateGlobalTransform(); - - lPose->Add(lKFbxNode, lBindMatrix); - } - - // Add the pose to the scene - pScene->AddPose(lPose); - } -} - -// Store a Rest Pose -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - // This example show an arbitrary rest pose assignment. - // This rest pose will set the bone rotation to the same value - // as time 1 second in the first stack of animation, but the - // position of the bone will be set elsewhere in the scene. - FbxString lNodeName; - FbxNode* lKFbxNode; - FbxMatrix lTransformMatrix; - FbxVector4 lT,lR,lS(1.0, 1.0, 1.0); - - // Create the rest pose - FbxPose* lPose = FbxPose::Create(pScene,"A Bind Pose"); - - // Set the skeleton root node to the global position (10, 10, 10) - // and global rotation of 45deg along the Z axis. - lT.Set(10.0, 10.0, 10.0); - lR.Set( 0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton root node to the pose - lKFbxNode = pSkeletonRoot; - lPose->Add(lKFbxNode, lTransformMatrix, false /*it's a global matrix*/); - - // Set the lLimbNode1 node to the local position of (0, 40, 0) - // and local rotation of -90deg along the Z axis. This show that - // you can mix local and global coordinates in a rest pose. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, -90.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Set the lLimbNode2 node to the local position of (0, 40, 0) - // and local rotation of 45deg along the Z axis. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lNodeName = lKFbxNode->GetName(); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Now add the pose to the scene - pScene->AddPose(lPose); -} - -// Add the specified node to the node array. Also, add recursively -// all the parent node of the specified node to the array. -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode) -{ - if (pNode) - { - AddNodeRecursively(pNodeArray, pNode->GetParent()); - - if (pNodeArray.Find(pNode) == -1) - { - // Node not in the list, add it - pNodeArray.Add(pNode); - } - } -} - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix) -{ - memcpy((double*)pXMatrix, &pMatrix.mData[0][0], sizeof(pMatrix.mData)); -} diff --git a/sdk/Linux/2019.2/samples/ExportScene02/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportScene02/CMakeLists.txt deleted file mode 100644 index e43487e..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene02/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene02 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportScene02/gradient.jpg b/sdk/Linux/2019.2/samples/ExportScene02/gradient.jpg deleted file mode 100644 index 20c1c0f..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene02/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Linux/2019.2/samples/ExportScene02/main.cxx b/sdk/Linux/2019.2/samples/ExportScene02/main.cxx deleted file mode 100644 index b95b22f..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene02/main.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a sphere morphed by 2 shapes. A -// animation stack shows the influence of the shapes over the sphere. -// -// The example illustrates how to: -// 1) create a nurbs -// 2) map a shape over a nurbs -// 3) map a texture over a nurbs on material channel Diffuse -// and Ambient -// 4) map a material over a nurbs -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene02.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName); - -void MapStretchedShape(FbxScene* pScene, FbxNode* pNurbs); -void MapBoxShape(FbxScene* pScene, FbxNode* pNurbs); -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs); -void MapTexture(FbxScene* pScene, FbxNode* pNurbs); -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs); - -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lNurbs = CreateNurbs(pScene, "Nurbs"); - - MapShapesOnNurbs(pScene, lNurbs); - MapMaterial(pScene, lNurbs); - MapTexture(pScene, lNurbs); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lNurbs); - - AnimateNurbs(lNurbs, pScene); - return true; -} - -// Create a sphere. -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName) -{ - FbxNurbs* lNurbs = FbxNurbs::Create(pScene,pName); - - // Set nurbs properties. - lNurbs->SetOrder(4, 4); - lNurbs->SetStep(2, 2); - lNurbs->InitControlPoints(8, FbxNurbs::ePeriodic, 7, FbxNurbs::eOpen); - - double lUKnotVector[] = { -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 }; - memcpy(lNurbs->GetUKnotVector(), lUKnotVector, lNurbs->GetUKnotCount()*sizeof(double)); - - double lVKnotVector[] = { 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0 }; - memcpy(lNurbs->GetVKnotVector(), lVKnotVector, lNurbs->GetVKnotCount()*sizeof(double)); - - FbxVector4* lVector4 = lNurbs->GetControlPoints(); - int i, j; - double lScale = 20.0; - double lPi = 3.14159; - double lYAngle[] = { 90.0, 90.0, 52.0, 0.0, -52.0, -90.0, -90.0 }; - double lRadius[] = { 0.0, 0.283, 0.872, 1.226, 0.872, 0.283, 0.0}; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - double lX = lScale * lRadius[i] * cos(lPi/4*j); - double lY = lScale * sin(2*lPi/360*lYAngle[i]); - double lZ = lScale * lRadius[i] * sin(lPi/4*j); - double lWeight = 1.0; - - lVector4[8*i + j].Set(lX, lY, lZ, lWeight); - } - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lNurbs); - - return lNode; -} - -// Map nurbs control points onto a stretched shape. -void MapStretchedShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"StretchedShape"); - - FbxVector4 lExtremeRight(-250.0, 0.0, 0.0); - FbxVector4 lExtremeLeft(250.0, 0.0, 0.0); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - if (j < 3 || j > 6) - { - lVector4[8*i + j] = lExtremeLeft; - } - else - { - lVector4[8*i + j] = lExtremeRight; - } - } - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -// Map nurbs control points onto a box shape. -void MapBoxShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"BoxShape"); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - double lScale = 20.0; - double lWeight = 1.0; - double lX[] = { 0.9, 1.1, 0.0, -1.1, -0.9, -1.1, 0.0, 1.1 }; - double lZ[] = { 0.0, 1.1, 0.9, 1.1, 0.0, -1.1, -0.9, -1.1 }; - - // Top control points. - for (i = 0; i < 8; i++) - { - lVector4[i].Set(0.0, lScale, 0.0, lWeight); - } - - // Middle control points. - for (i = 1; i < 6; i++) - { - double lY = 1.0 - 0.5 * (i - 1); - - for (j = 0; j < 8; j++) - { - lVector4[8*i + j].Set(lScale*lX[j], lScale*lY, lScale*lZ[j], lWeight); - } - } - - // Bottom control points. - for (i = 48; i < 56; i++) - { - lVector4[i].Set(0.0, -lScale, 0.0, lWeight); - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,"MyBlendShape"); - FbxBlendShapeChannel* lBlendShapeChannel01 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel01"); - FbxBlendShapeChannel* lBlendShapeChannel02 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel02"); - - //Create and add two target shapes on the lBlendShapeChannel. - MapStretchedShape(pScene, lBlendShapeChannel01); - MapBoxShape(pScene, lBlendShapeChannel01); - - MapBoxShape(pScene, lBlendShapeChannel02); - - //Set the lBlendShapeChannel on lBlendShape. - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel01); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel02); - - //Set the lBlendShape on pNurbs. - FbxGeometry* lGeometry = pNurbs->GetGeometry(); - lGeometry->AddDeformer(lBlendShape); -}; - -// Map texture over sphere. -void MapTexture(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"scene02.jpg"); - - // The texture won't be displayed if node shading mode isn't set to FbxNode::eTextureShading. - pNurbs->SetShadingMode(FbxNode::eTextureShading); - - // Set texture properties. - lTexture->SetFileName("scene02.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.45, -0.05); - lTexture->SetScale(4.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - // we connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNurbs->GetSrcObject(0); - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - //now, we can try to map a texture on the AMBIENT channel of a material. - - //It is important to create a NEW texture and not to simply change the - //properties of lTexture. - - //Set the Texture properties - lTexture=FbxFileTexture::Create(pScene, "grandient.jpg"); - lTexture->SetFileName("gradient.jpg"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - - // we connect the texture to the material Ambient property - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - -} - -// Map material over sphere. -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene,"scene02"); - FbxDouble3 lBlue(0.0, 0.0, 1.0); - FbxDouble3 lBlack(0.0, 0.0, 0.0); - - lMaterial->Emissive.Set(lBlue); - lMaterial->Ambient.Set(lBlack); - lMaterial->Specular.Set(lBlack); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->Shininess.Set(0.0); - lMaterial->ReflectionFactor.Set(0.0); - - // Create GeometryElementMaterial - FbxNurbs* lNurbs = pNurbs->GetNurbs(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lNurbs->GetElementMaterial( 0); - - if (!lGeometryElementMaterial) - { - lGeometryElementMaterial = lNurbs->CreateElementMaterial(); - } - - // The material is mapped to the whole Nurbs - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNurbs->AddMaterial(lMaterial); -} - -// Morph sphere into box shape. -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - // First animation stack. - lAnimStackName = "Morph sphere into box"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxGeometry* lNurbsAttribute = (FbxGeometry*) pNurbs->GetNodeAttribute(); - - // The stretched shape is at index 0 because it was added first to the nurbs. - FbxAnimCurve* lCurve = lNurbsAttribute->GetShapeChannel(0, 0, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 75.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - // The box shape is at index 1 because it was added second to the nurbs. - lCurve = lNurbsAttribute->GetShapeChannel(0, 1, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - - diff --git a/sdk/Linux/2019.2/samples/ExportScene02/scene02.jpg b/sdk/Linux/2019.2/samples/ExportScene02/scene02.jpg deleted file mode 100644 index f162280..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene02/scene02.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Linux/2019.2/samples/ExportScene03/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportScene03/CMakeLists.txt deleted file mode 100644 index b2c41ba..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene03 .) -SET(FBX_TARGET_SOURCE - main.cxx - MyKFbxMesh.cxx - MyKFbxMesh.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.cxx b/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.cxx deleted file mode 100644 index 325039b..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyKFbxMesh.h" - -FBXSDK_OBJECT_IMPLEMENT(MyKFbxMesh); -FBXSDK_OBJECT_IMPLEMENT(MyFbxObject); - -const char* MyKFbxMesh::GetTypeName() const -{ - return "MyKFbxMesh"; -} - -FbxProperty MyKFbxMesh::GetProperty(int pId) -{ - FbxProperty dummy; - switch (pId) - { - case eMY_PROPERTY1 : return FindProperty("MyExtraPropertyBool"); - case eMY_PROPERTY2 : return FindProperty("MyExtraPropertyInteger"); - case eMY_PROPERTY3 : return FindProperty("MyExtraPropertyFloat"); - case eMY_PROPERTY4 : return FindProperty("MyExtraPropertyDouble"); - case eMY_PROPERTY5 : return FindProperty("MyExtraPropertyString"); - case eMY_PROPERTY6 : return FindProperty("MyExtraPropertyVector3"); - case eMY_PROPERTY7 : return FindProperty("MyExtraPropertyColor"); - case eMY_PROPERTY8 : return FindProperty("MyExtraPropertyVector4"); - case eMY_PROPERTY9 : return FindProperty("MyExtraPropertyMatrix4x4"); - case eMY_PROPERTY10: return FindProperty("MyExtraPropertyEnum"); - case eMY_PROPERTY11: return FindProperty("MyExtraPropertyTime"); - default: - break; - }; - - return dummy; -} - -void MyKFbxMesh::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - - FbxProperty::Create(this, FbxBoolDT, "MyExtraPropertyBool", "MyExtraPropertyLabel1"); - FbxProperty::Create(this, FbxIntDT, "MyExtraPropertyInteger", "MyExtraPropertyLabel2"); - FbxProperty::Create(this, FbxFloatDT, "MyExtraPropertyFloat", "MyExtraPropertyLabel3"); - FbxProperty::Create(this, FbxDoubleDT, "MyExtraPropertyDouble", "MyExtraPropertyLabel4"); - FbxProperty::Create(this, FbxStringDT, "MyExtraPropertyString", "MyExtraPropertyLabel5"); - FbxProperty::Create(this, FbxDouble3DT, "MyExtraPropertyVector3", "MyExtraPropertyLabel6"); - FbxProperty::Create(this, FbxColor3DT, "MyExtraPropertyColor", "MyExtraPropertyLabel7"); - FbxProperty::Create(this, FbxDouble4DT, "MyExtraPropertyVector4", "MyExtraPropertyLabel8"); - FbxProperty::Create(this, FbxDouble4x4DT, "MyExtraPropertyMatrix4x4", "MyExtraPropertyLabel9"); - FbxProperty::Create(this, FbxEnumDT, "MyExtraPropertyEnum", "MyExtraPropertyLabel10"); - FbxProperty::Create(this, FbxTimeDT, "MyExtraPropertyTime", "MyExtraPropertyLabel11"); - - //we must set the flag to eUser if it is FbxEnumDT or FbxStringListDT - this->GetProperty((int)eMY_PROPERTY10).ModifyFlag(FbxPropertyFlags::eUserDefined, true); -} - -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -const char* MyFbxObject::GetTypeName() const -{ - return "MyFbxObject"; -} - -void MyFbxObject::Destruct(bool pRecursive) -{ - ParentClass::Destruct(pRecursive); -} - -void MyFbxObject::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - FbxProperty::Create(this, FbxDoubleDT, "MyAnimatedPropertyName", "MyFbxObject Animated Property Label"); -} diff --git a/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.h b/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.h deleted file mode 100644 index 2e671a9..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/MyKFbxMesh.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _MYKFBXMESH_H_ -#define _MYKFBXMESH_H_ - -#include - -//Show how to create a class derived from existing kfbx class -class MyKFbxMesh : public FbxMesh -{ - FBXSDK_OBJECT_DECLARE(MyKFbxMesh, FbxMesh); - -public: - typedef enum - { - eColor =0, //inherited by FbxMesh - eMY_PROPERTY1, - eMY_PROPERTY2, - eMY_PROPERTY3, - eMY_PROPERTY4, - eMY_PROPERTY5, - eMY_PROPERTY6, - eMY_PROPERTY7, - eMY_PROPERTY8, - eMY_PROPERTY9, - eMY_PROPERTY10, - eMY_PROPERTY11, - eMY_PROPERTY_COUNT - } ePROPERTY; - - //Important to implement - const char* GetTypeName() const override; - FbxProperty GetProperty(int pId); - -protected: - virtual void ConstructProperties(bool pForceSet) override; - -private: - int mExtraOption; -}; - -class MyFbxObject : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(MyFbxObject, FbxObject); - -public: - virtual const char* GetTypeName() const override; - -protected: - virtual void Destruct(bool pRecursive) override; - virtual void ConstructProperties(bool pForceSet) override; -}; - -#endif diff --git a/sdk/Linux/2019.2/samples/ExportScene03/gradient.jpg b/sdk/Linux/2019.2/samples/ExportScene03/gradient.jpg deleted file mode 100644 index 20c1c0f..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Linux/2019.2/samples/ExportScene03/main.cxx b/sdk/Linux/2019.2/samples/ExportScene03/main.cxx deleted file mode 100644 index 206da1b..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/main.cxx +++ /dev/null @@ -1,1631 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a textured cube, a pyramid -// with materials mapped on it's faces and triangle deformed by vertex cache. -// An animation stack displays 6 different angles of all models. -// -// The example illustrates how to: -// 1) create a cube in mesh -// 2) map textures on diffuse, ambient and emissive channel of the cube -// 3) create an UV set for each channel with a texture for the cube -// 4) create a pyramid in mesh -// 5) create and map materials on the diffuse channel for each faces of the pyramid -// 6) create a cube with our custom mesh type -// 7) create and map materials on the diffuse channel for our custom mesh cube -// 8) create and add to our custom meshed cube a User Data Layer -// 9) create vertex cache deformer (by default maya caches are created in 64bits (mcx extension)) -// 10) create an animation stack -// 11) animate vertex -// 12) export a scene in a .FBX file -// -// -// 1. To test vertex (3 doubles) cache (default) : -// -// ./ExportScene03 cacheFileName -// -// 2. To test int32 cache : -// -// ./ExportScene03 cacheFileName 1 -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "MyKFbxMesh.h" - -#define SAMPLE_FILENAME_MC "ExportScene03_MC.fbx" -#define SAMPLE_FILENAME_PC2 "ExportScene03_PC2.fbx" -#define SAMPLE_CACHE_TYPE 2 - -#define PID_MY_GEOMETRY_LEMENT 0 - -// Function prototypes. -bool CreateScene(FbxScene* pScene, char* pSampleFileName); - -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName); -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName); - -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh); - -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid); -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName); - -void SetCubeDefaultPosition(FbxNode* pCube); -void SetPyramidDefaultPosition(FbxNode* pPyramid); -void SetTriangleDefaultPosition(FbxNode* pTriangle); -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube); - -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer); -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleInt32(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleFloat(FbxNode* pNode, double pFrameRate); - -bool gExportVertexCacheMCFormat = true; - -// Declare the UV names globally so we can create them on the mesh and then assign them properly -// to our textures when we create them -static const char* gDiffuseElementName = "DiffuseUV"; -static const char* gAmbientElementName = "AmbientUV"; -static const char* gEmissiveElementName = "EmissiveUV"; - -// gCacheType == 0 (default) - double vertex array -// == 1 - int32 array -// == 2 - float array -int gCacheType = -1; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - char* lSampleFileName = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - //Add the new class we have created to the Sdk Manager - //Our class MyKFbxMesh is derived from FbxMesh - lSdkManager->RegisterFbxClass("MyKFbxMesh", FBX_TYPE(MyKFbxMesh), FBX_TYPE(FbxMesh)); - //Now, our class MyKFbxMesh is ready to be used - - lSdkManager->RegisterFbxClass("MyFbxObject", FBX_TYPE(MyFbxObject), FBX_TYPE(FbxObject), "MyFbxObjectType", "MyFbxObjectSubType"); - - //The example can take an output file name as an argument, and a cache format - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if( gCacheType == -1 ) gCacheType = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = gExportVertexCacheMCFormat ? (char *)SAMPLE_FILENAME_MC : (char *)SAMPLE_FILENAME_PC2; - if( gCacheType == -1 ) gCacheType = SAMPLE_CACHE_TYPE; - - // Create the scene. - lResult = CreateScene(lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene, char* pSampleFileName) -{ - FbxNode* lCube = CreateCubeWithTexture(pScene, "Cube"); - FbxNode* lPyramid = CreatePyramidWithMaterials(pScene, "Pyramid"); - FbxNode* lTriangle = CreateTriangle(pScene, "Triangle"); - FbxNode* lMyKFbxMeshCube = CreateCubeWithMaterialAndMyKFbxMesh(pScene, "CubeMyKFbxMesh"); - MyFbxObject* lMyFbxObject = MyFbxObject::Create(pScene, "MyFbxObject 1"); - - MapShapeOnPyramid(pScene, lPyramid); - MapVertexCacheOnTriangle(pScene, lTriangle, pSampleFileName); - - SetCubeDefaultPosition(lCube); - SetPyramidDefaultPosition(lPyramid); - SetTriangleDefaultPosition(lTriangle); - SetMyKFbxMeshCubeDefaultPosition(lMyKFbxMeshCube); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - lRootNode->AddChild(lMyKFbxMeshCube); - lRootNode->AddChild(lTriangle); - lRootNode->ConnectSrcObject(lMyFbxObject); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Show all faces"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - //Create a simple animated fcurve - FbxProperty lMyProperty = lMyFbxObject->FindProperty("MyAnimatedPropertyName"); - if( lMyProperty.IsValid() ) - { - lMyProperty.Set(0.0); //Default value - lMyProperty.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lMyProperty.CreateCurveNode(lAnimLayer); - FbxAnimCurve* lMyFCurve = lMyProperty.GetCurve(lAnimLayer, true); - if( lMyFCurve ) - { - FbxAnimCurveKey key; - - key.Set(FBXSDK_TIME_ZERO, -100); lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(100), 0) ; lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(200), 100) ; lMyFCurve->KeyAdd(key.GetTime(), key); - } - } - - Animate(lCube, lAnimLayer); - Animate(lPyramid, lAnimLayer); - Animate(lMyKFbxMeshCube, lAnimLayer); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - switch(gCacheType) - { - case 0: - default: - AnimateVertexCacheOnTriangleDoubleVertex(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 1: - AnimateVertexCacheOnTriangleInt32(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 2: - AnimateVertexCacheOnTriangleFloat(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - } - - return true; -} - -// Create a cube with a texture. -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal= lMesh->CreateElementNormal(); - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Here are two different ways to set the normal values. - bool firstWayNormalCalculations=true; - if (firstWayNormalCalculations) - { - // The first method is to set the actual normal value - // for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - } - else - { - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - } - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( gDiffuseElementName); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - - // Create UV for Ambient channel - FbxGeometryElementUV* lUVAmbientElement = lMesh->CreateElementUV(gAmbientElementName); - - lUVAmbientElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVAmbientElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0, 0); - lVectors1.Set(1, 0); - lVectors2.Set(0, 0.418586879968643); - lVectors3.Set(1, 0.418586879968643); - - lUVAmbientElement->GetDirectArray().Add(lVectors0); - lUVAmbientElement->GetDirectArray().Add(lVectors1); - lUVAmbientElement->GetDirectArray().Add(lVectors2); - lUVAmbientElement->GetDirectArray().Add(lVectors3); - - // Create UV for Emissive channel - FbxGeometryElementUV* lUVEmissiveElement = lMesh->CreateElementUV(gEmissiveElementName); - - lUVEmissiveElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVEmissiveElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0.2343, 0); - lVectors1.Set(1, 0.555); - lVectors2.Set(0.333, 0.999); - lVectors3.Set(0.555, 0.666); - - lUVEmissiveElement->GetDirectArray().Add(lVectors0); - lUVEmissiveElement->GetDirectArray().Add(lVectors1); - lUVEmissiveElement->GetDirectArray().Add(lVectors2); - lUVEmissiveElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(24); - lUVAmbientElement->GetIndexArray().SetCount(24); - lUVEmissiveElement->GetIndexArray().SetCount(24); - - - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - //we won't use the default way of assigning textures, as we have - //textures on more than just the default (diffuse) channel. - lMesh->BeginPolygon(-1, -1, false); - - - - for(j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[i*4 + j] // Control point index. - ); - //Now we have to update the index array of the UVs for diffuse, ambient and emissive - lUVDiffuseElement->GetIndexArray().SetAt(i*4+j, j); - lUVAmbientElement->GetIndexArray().SetAt(i*4+j, j); - lUVEmissiveElement->GetIndexArray().SetAt(i*4+j, j); - - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - CreateTexture(pScene, lMesh); - - return lNode; -} - -// Create a pyramid with materials. -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - - FbxGeometryElementNormal* lNormalElement= lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons. Assign material indices. - - // Pyramid base. - lMesh->BeginPolygon(0); // Material index. - - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(i); // Material index. - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - CreateMaterials(pScene, lMesh); - - return lNode; -} - -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - // The three vertices - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(0, 50, -50); - - // Create control points. - lMesh->InitControlPoints(3); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - - // Create the triangle's polygon - lMesh->BeginPolygon(); - lMesh->AddPolygon(0); // Control point 0 - lMesh->AddPolygon(1); // Control point 1 - lMesh->AddPolygon(2); // Control point 2 - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName) -{ - int i, j; - - //create a cube with our newly created class - MyKFbxMesh* lMyKFbxMesh = MyKFbxMesh::Create(pScene,pName); - FbxDouble3 lVector3(0.1, 0.2, 0.3); - FbxDouble4 lVector4(0.1, 0.2, 0.3, 0.4); - FbxDouble4 lVector41(1.1, 1.2, 1.3, 1.4); - FbxDouble4 lVector42(2.1, 2.2, 2.3, 2.4); - FbxDouble4 lVector43(3.1, 3.2, 3.3, 3.4); - FbxDouble4x4 lMatrix(lVector4,lVector41,lVector42,lVector43); - - FbxColor lGreen(0.0, 0.0, 1.0); - - FbxTime lTime(333); - //Set user-specific properties of our classes - FbxString lString = "My Property 5 Value"; - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY1).Set(true); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY2).Set((int) 1); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY3).Set((float)2.2); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY4).Set((double)3.3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY5).Set(lString); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lVector3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lGreen); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY8).Set(lVector4); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY9).Set(lMatrix); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).Set(3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("AAA"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("BBB"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("CCC"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("DDD"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY11).Set(lTime); - - FbxVector4 lControlPoint0(-25, 0, 25); - FbxVector4 lControlPoint1(25, 0, 25); - FbxVector4 lControlPoint2(25, 50, 25); - FbxVector4 lControlPoint3(-25, 50, 25); - FbxVector4 lControlPoint4(-25, 0, -25); - FbxVector4 lControlPoint5(25, 0, -25); - FbxVector4 lControlPoint6(25, 50, -25); - FbxVector4 lControlPoint7(-25, 50, -25); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMyKFbxMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMyKFbxMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMyKFbxMesh->CreateElementNormal(); - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMyKFbxMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create UV coordinates. - FbxGeometryElementUV* lUVElement = lMyKFbxMesh->CreateElementUV( ""); - FBX_ASSERT( lUVElement != NULL); - lUVElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVElement->GetDirectArray().Add(lVectors0); - lUVElement->GetDirectArray().Add(lVectors1); - lUVElement->GetDirectArray().Add(lVectors2); - lUVElement->GetDirectArray().Add(lVectors3); - - for(i = 0; i < 6; i++) - { - //we created 6 lambert materials in the MyKFbxMesh - //make each face use a different one - lMyKFbxMesh->BeginPolygon(i); - - for(j = 0; j < 4; j++) - { - lMyKFbxMesh->AddPolygon(lPolygonVertices[i*4 + j], // Control point index. - j); // Valid texture UV index since texture UV mapping is by polygon vertex. - } - - lMyKFbxMesh->EndPolygon (); - } - - - //Add a User Data Element - //As of now, the types supported by a User Data Element are: FbxBoolDT, FbxIntDT, FbxFloatDT and FbxDoubleDT - - //For this example, we will create a element which possess 1 float and 1 bool - - //create a template array of KFbxDataTypes - FbxArray lArrayType; - - //Create a template array of const char* - FbxArray lArrayNames; - - //let's add our types and the names of each of the added types - lArrayType.Add(FbxFloatDT); - lArrayNames.Add("My Float"); - - lArrayType.Add(FbxBoolDT); - lArrayNames.Add("My Bool"); - - - //Now we are ready to create the User Data Element - FbxGeometryElementUserData* lFbxGeometryElementUserData = FbxGeometryElementUserData::Create(lMyKFbxMesh, "My Geometry Element",PID_MY_GEOMETRY_LEMENT,lArrayType, lArrayNames); - //And UserData create function is still in implementing - - - //For this example we will set the mapping mode to POLYGON_VERTEX - lFbxGeometryElementUserData->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - - //As we are using the eDirect Reference mode, and we are using polygon vertex Mapping mode - //we have to resize the direct array to the number of polygon vertex we have in this mesh - lFbxGeometryElementUserData->ResizeAllDirectArrays(lMyKFbxMesh->GetPolygonVertexCount()); - - - //To change the values in the direct array, we simply get the array and modify what we need to - FbxLayerElementArrayTemplate* directArrayF = lFbxGeometryElementUserData->GetDirectArrayVoid("My Float"); - float *lDirectArrayFloat = NULL; - lDirectArrayFloat = directArrayF->GetLocked(lDirectArrayFloat); - - FbxLayerElementArrayTemplate* directArrayB = lFbxGeometryElementUserData->GetDirectArrayVoid("My Bool"); - bool *lDirectArrayBool = NULL; - directArrayB->GetLocked(lDirectArrayBool); - - //Modify every data for each polygon vertex on our mesh with some value - for(i=0; iGetPolygonVertexCount(); ++i) - { - if(lDirectArrayFloat) - lDirectArrayFloat[i]=(float)(i+0.5); - if(lDirectArrayBool) - lDirectArrayBool[i]= (i%2==0); - } - - directArrayF->Release((void**)&lDirectArrayFloat); - directArrayB->Release((void**)&lDirectArrayBool); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMyKFbxMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - //let's create the materials - //6 materials, 1 for each face of the cube - CreateMaterialsWithMyKFbxMesh(pScene, lMyKFbxMesh); - - return lNode; -} - - -// Create texture for cube. -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh) -{ - // A texture need to be connected to a property on the material, - // so let's use the material (if it exists) or create a new one - FbxSurfacePhong* lMaterial = NULL; - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - { - lMaterial = lNode->GetSrcObject(0); - if (lMaterial == NULL) - { - FbxString lMaterialName = "toto"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - - FbxLayer* lLayer = pMesh->GetLayer(0); - - // Create a layer element material to handle proper mapping. - FbxLayerElementMaterial* lLayerElementMaterial = FbxLayerElementMaterial::Create(pMesh, lMaterialName.Buffer()); - - // This allows us to control where the materials are mapped. Using eAllSame - // means that all faces/polygons of the mesh will be assigned the same material. - lLayerElementMaterial->SetMappingMode(FbxLayerElement::eAllSame); - lLayerElementMaterial->SetReferenceMode(FbxLayerElement::eIndexToDirect); - - // Save the material on the layer - lLayer->SetMaterials(lLayerElementMaterial); - - // Add an index to the lLayerElementMaterial. Since we have only one, and are using eAllSame mapping mode, - // we only need to add one. - lLayerElementMaterial->GetIndexArray().Add(0); - - lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .Set(lDiffuseColor); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor.Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - lNode->AddMaterial(lMaterial); - } - } - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"Diffuse Texture"); - - // Set texture properties. - lTexture->SetFileName("scene03.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gDiffuseElementName)); // Connect texture to the proper UV - - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Ambient Texture"); - - // Set texture properties. - lTexture->SetFileName("gradient.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gAmbientElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Emissive Texture"); - - // Set texture properties. - lTexture->SetFileName("spotty.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gEmissiveElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Emissive.ConnectSrcObject(lTexture); -} - -// Create materials for pyramid. -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh) -{ - int i; - - for (i = 0; i < 5; i++ ) - { - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfacePhong *lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingName); - lMaterial->Shininess.Set(0.5); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - } -} - -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh) -{ - int i; - for (i = 0; i != 6; ++i ) - { - FbxString lMaterialName = "material"; - FbxString lShadingModelName = i%2==0 ? "Lambert" : "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfaceLambert *lMaterial = FbxSurfaceLambert::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingModelName); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMyKFbxMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - - } -} - -// Map pyramid control points onto an upside down shape. -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid) -{ - FbxShape* lShape = FbxShape::Create(pScene,"Upside Down"); - - FbxVector4 lControlPoint0(-50, 100, 50); - FbxVector4 lControlPoint1(50, 100, 50); - FbxVector4 lControlPoint2(50, 100, -50); - FbxVector4 lControlPoint3(-50, 100, -50); - FbxVector4 lControlPoint4(0, 0, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, -0.447, 0.894); - FbxVector4 lNormalP2(0.894, -0.447, 0); - FbxVector4 lNormalP3(0, -0.447, -0.894); - FbxVector4 lNormalP4(-0.894, -0.447, 0); - - // Create control points. - lShape->InitControlPoints(16); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - - FbxGeometryElementNormal* lNormalElement = lShape->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,""); - FbxBlendShapeChannel* lBlendShapeChannel = FbxBlendShapeChannel::Create(pScene, ""); - pPyramid->GetMesh()->AddDeformer(lBlendShape); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel); - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName) -{ - // By convention, all cache files are created in a _fpc folder located at the same - // place as the .fbx file. - FbxString lFBXAbsolutePath = FbxPathUtils::Resolve(pSampleFileName); - - // Create a cache directory with the same name as the fbx file - FbxString lFPCAbsoluteDirectory; - - lFPCAbsoluteDirectory = FbxPathUtils::GetFolderName(lFBXAbsolutePath); - lFPCAbsoluteDirectory += "/"; - lFPCAbsoluteDirectory += FbxPathUtils::GetFileName(pSampleFileName, false); - lFPCAbsoluteDirectory += "_fpc"; - - // Make this path the shortest possible - lFPCAbsoluteDirectory = FbxPathUtils::Clean(lFPCAbsoluteDirectory); - - // Now get the point cache absolute and relative file name - FbxString lAbsolutePCFileName = lFPCAbsoluteDirectory + FbxString("/") + pTriangle->GetName(); - lAbsolutePCFileName += gExportVertexCacheMCFormat ? ".xml" : ".pc2"; - - FbxString lRelativePCFileName = FbxPathUtils::GetRelativeFilePath(FbxPathUtils::GetFolderName(lFBXAbsolutePath)+"/", lAbsolutePCFileName); - - // Make sure the direcotry exist. - if (!FbxPathUtils::Create(FbxPathUtils::GetFolderName(lAbsolutePCFileName))) - { - // Cannot create this directory. So do not create the point cache - return; - } - - // - // Create the cache file - // - FbxCache* lCache = FbxCache::Create(pScene, pTriangle->GetName()); - - lCache->SetCacheFileName(lRelativePCFileName, lAbsolutePCFileName); - lCache->SetCacheFileFormat(gExportVertexCacheMCFormat ? FbxCache::eMayaCache : FbxCache::eMaxPointCacheV2); - - // - // Create the vertex deformer - // - FbxVertexCacheDeformer* lDeformer = FbxVertexCacheDeformer::Create(pScene, pTriangle->GetName()); - - lDeformer->SetCache(lCache); - lDeformer->Channel = pTriangle->GetName(); - lDeformer->Active = true; - - // Apply the deformer on the mesh - pTriangle->GetGeometry()->AddDeformer(lDeformer); - - if (gExportVertexCacheMCFormat && gCacheType != 1) - { - // - // Create the second deformer for normal data - // - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - - lDeformer = FbxVertexCacheDeformer::Create(pScene, channelName); - // normal cache data is stored with the points data in the same cache file, - // so two deformers are connnected to the same cache file. - lDeformer->SetCache(lCache); - lDeformer->Channel = channelName; - lDeformer->Active = true; - - pTriangle->GetGeometry()->AddDeformer(lDeformer); - } -} - -// Cube is translated to the left. -void SetCubeDefaultPosition(FbxNode* pCube) -{ - pCube->LclTranslation.Set(FbxVector4(-75.0, -50.0, 0.0)); - pCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Pyramid is translated to the right. -void SetPyramidDefaultPosition(FbxNode* pPyramid) -{ - pPyramid->LclTranslation.Set(FbxVector4(75.0, -50.0, 0.0)); - pPyramid->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pPyramid->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetTriangleDefaultPosition(FbxNode* pTriangle) -{ - pTriangle->LclTranslation.Set(FbxVector4(200.0, -50.0, 0.0)); - pTriangle->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pTriangle->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube) -{ - pMyKFbxCube->LclTranslation.Set(FbxVector4(-200.0, -25.0, 0.0)); - pMyKFbxCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMyKFbxCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Displays 6 different angles. -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(0.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 180.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 270.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 360.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - - // The upside down shape is at index 0 because it is the only one. - // The cube has no shape so the function returns NULL is this case. - FbxGeometry* lGeometry = (FbxGeometry*) pNode->GetNodeAttribute(); - lCurve = lGeometry->GetShapeChannel(0, 0, pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - - unsigned int lFrameCount = (unsigned int)(lStopTime.Get()/lTimeIncrement.Get()); - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eDoubleVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = lCache->OpenFileForWrite(0.0, pFrameRate, lFrameCount, 3, &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - double lVertices[3][3]; - double lScaleFactor = 1.0-double(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0 * lScaleFactor; // X - lVertices[0][1] = 0.0; // Y - lVertices[0][2] = 50.0 * lScaleFactor; // Z - - lVertices[1][0] = 50.0 * lScaleFactor; // X - lVertices[1][1] = 0.0; // Y - lVertices[1][2] = 50.0 * lScaleFactor; // Z - - lVertices[2][0] = 0.0 * lScaleFactor; // X - lVertices[2][1] = 50.0 * lScaleFactor; // Y - lVertices[2][2] = -50.0 * lScaleFactor; // Z - - lCache->BeginWriteAt(lCurrentTime); - if (gExportVertexCacheMCFormat) - { - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - } - else - { - lCache->Write(lCurrentFrame, &lVertices[0][0]); - } - lCache->EndWriteAt(); - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } -} - -void AnimateVertexCacheOnTriangleInt32(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet = false; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - - // Open the file for writing int32 array - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eInt32Array, "positions", &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - int v[2]; - - v[0] = -10 + lCurrentFrame; - v[1] = v[0]+1; - - if (gExportVertexCacheMCFormat) - { - lCache->Write(lChannelIndex, lCurrentTime, &v[0], 2); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - - FBXSDK_printf("Testing awCache int32 array read and write\n"); - bool passTest = true; - // FBXSDK_printf("Should print out -10 .. 110\n"); - while (lCurrentTime2 <= lStopTime) - { - int v[2]; - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &v[0], 2); - if ((v[0] != -10 + lCurrentFrame) || (v[0]+1 != v[1]) ) - { - FBXSDK_printf("awCache int32 array read/write mismatch\n"); - passTest = false; - break; - } - // FBXSDK_printf("%d ",v[0]); - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache int32 array read and write test passed\n"); - } -} - - -void AnimateVertexCacheOnTriangleFloat(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eFloatVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = false; - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - float lVertices[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0f * lScaleFactor; // X - lVertices[0][1] = 0.0f; // Y - lVertices[0][2] = 50.0f * lScaleFactor; // Z - - lVertices[1][0] = 50.0f * lScaleFactor; // X - lVertices[1][1] = 0.0f; // Y - lVertices[1][2] = 50.0f * lScaleFactor; // Z - - lVertices[2][0] = 0.0f * lScaleFactor; // X - lVertices[2][1] = 50.0f * lScaleFactor; // Y - lVertices[2][2] = -50.0f * lScaleFactor; // Z - - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - if (gExportVertexCacheMCFormat) - { - lCache->BeginWriteAt(lCurrentTime); - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - - lCache->EndWriteAt(); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - #define AbsFlt(a) (((a) < 0) ? -(a) : (a)) - #define CmpFlt(a,b) (AbsFlt((a)-(b)) > 1e-5) - - FBXSDK_printf("Testing awCache Float3 array read and write\n"); - bool passTest = true; - while (lCurrentTime2 <= lStopTime && passTest) - { - float lVertices[3][3]; - float lNormals[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime2.GetSecondDouble()/lStopTime.GetSecondDouble()); - - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &lVertices[0][0], 3); - lCache->Read(lNormalChannelIndex, lCurrentTime2, &lNormals[0][0], 3); - - if ((CmpFlt(lVertices[0][0], -50.0f * lScaleFactor) || CmpFlt(lVertices[0][1], 0.0f ) || CmpFlt(lVertices[0][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[1][0], 50.0f * lScaleFactor) || CmpFlt(lVertices[1][1], 0.0f ) || CmpFlt(lVertices[1][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[2][0], 0.0f * lScaleFactor) || CmpFlt(lVertices[2][1], 50.0f * lScaleFactor) || CmpFlt(lVertices[2][2],-50.0f * lScaleFactor))) - { - FBXSDK_printf("awCache Float3 vertex array read/write mismatch\n"); - passTest = false; - break; - } - - for (int i = 0; i < 3; i++) - { - if ((CmpFlt(lNormals[i][0], 0.0f) || CmpFlt(lNormals[i][1], 1.0f ) || CmpFlt(lNormals[i][2], 0.0f))) - { - FBXSDK_printf("awCache Float3 normal array read/write mismatch\n"); - passTest = false; - break; - } - } - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - #undef AbsFlt - #undef CmpFlt - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache float3 array read and write test passed\n"); - } - -} - - diff --git a/sdk/Linux/2019.2/samples/ExportScene03/scene03.jpg b/sdk/Linux/2019.2/samples/ExportScene03/scene03.jpg deleted file mode 100644 index 9e51fd9..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/scene03.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5c29a811fa6f65c0e70d5dc2a948efea523e6330a7ff51496eaef249ce80de9 -size 4774 diff --git a/sdk/Linux/2019.2/samples/ExportScene03/spotty.jpg b/sdk/Linux/2019.2/samples/ExportScene03/spotty.jpg deleted file mode 100644 index dd038e3..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene03/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Linux/2019.2/samples/ExportScene04/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportScene04/CMakeLists.txt deleted file mode 100644 index 55470f7..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene04/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene04 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportScene04/gobo.tif b/sdk/Linux/2019.2/samples/ExportScene04/gobo.tif deleted file mode 100644 index dc4dc2b..0000000 Binary files a/sdk/Linux/2019.2/samples/ExportScene04/gobo.tif and /dev/null differ diff --git a/sdk/Linux/2019.2/samples/ExportScene04/main.cxx b/sdk/Linux/2019.2/samples/ExportScene04/main.cxx deleted file mode 100644 index 3947518..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene04/main.cxx +++ /dev/null @@ -1,588 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a group of lights, a marker and -// a camera. An animation stack rotates the lights and moves the camera -// around. -// -// The example illustrates how to: -// 1) create a light and it assign a gobo -// 2) set global light settings -// 3) create a marker -// 4) create a camera and link it to a point of interest -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene04.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName); -FbxNode* CreateLight(FbxScene* pScene, const char* pName); -FbxNode* CreateMarker(FbxScene* pScene, const char* pName); -FbxNode* CreateCamera(FbxScene* pScene, const char* pName); - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest); - -void SetLightGroupDefaultPosition(FbxNode* pLightGroup); -void SetLightDefaultPosition(FbxNode* pLight, int pIndex); -void SetMarkerDefaultPosition(FbxNode* pMarker); -void SetCamera1DefaultPosition(FbxNode* pCamera); -void SetCamera2DefaultPosition(FbxNode* pCamera); - -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer); -void AnimateCamera(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lLightGroup = CreateLightGroup(pScene, "LightGroup"); - FbxNode* lMarker = CreateMarker(pScene, "Marker"); - FbxNode* lCamera1 = CreateCamera(pScene, "Camera1"); - FbxNode* lCamera2 = CreateCamera(pScene, "Camera2"); - - pScene->GetGlobalSettings().SetAmbientColor(FbxColor(1.0, 0.5, 0.2)); - - SetCameraPointOfInterest(lCamera1, lMarker); - SetCameraPointOfInterest(lCamera2, lCamera1); - - SetLightGroupDefaultPosition(lLightGroup); - SetMarkerDefaultPosition(lMarker); - SetCamera1DefaultPosition(lCamera1); - SetCamera2DefaultPosition(lCamera2); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Rotating lights"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Build the scene graph. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lLightGroup); - lRootNode->AddChild(lMarker); - lRootNode->AddChild(lCamera1); - lCamera1->AddChild(lCamera2); - - - // Set perspective camera as the default camera. - pScene->GetGlobalSettings().SetDefaultCamera(FBXSDK_CAMERA_PERSPECTIVE); - - AnimateLightGroup(lLightGroup, lAnimLayer); - AnimateCamera(lCamera1, lAnimLayer); - - return true; -} - -// Create 6 lights and set global light settings. -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName) -{ - FbxString lLightName; - FbxNode* lGroup = NULL; - FbxNode* lNode = NULL; - FbxLight* lLight = NULL; - int i; - - lGroup = FbxNode::Create(pScene,pName); - - for(i = 0; i < 6; i++) - { - lLightName = pName; - lLightName += "-Light"; - lLightName += i; - - lNode = CreateLight(pScene, lLightName.Buffer()); - lGroup->AddChild(lNode); - } - - for (i = 0; i < 6; i++) - { - lLight = (FbxLight*) lGroup->GetChild(i)->GetNodeAttribute(); - lLight->FileName.Set("gobo.tif");// Resource file is in current directory. - lLight->DrawGroundProjection.Set(true); - lLight->DrawVolumetricLight.Set(true); - lLight->DrawFrontFacingVolumetricLight.Set(false); - } - - return lGroup; -} - -// Create a spotlight. -FbxNode* CreateLight(FbxScene* pScene, const char* pName) -{ - FbxLight* lLight = FbxLight::Create(pScene,pName); - - lLight->LightType.Set(FbxLight::eSpot); - lLight->CastLight.Set(true); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lLight); - - return lNode; -} - -// Create a marker to use a point of interest for the camera. -FbxNode* CreateMarker(FbxScene* pScene, const char* pName) -{ - FbxMarker* lMarker = FbxMarker::Create(pScene,pName); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMarker); - - return lNode; -} - -FbxNode* CreateCamera(FbxScene* pScene, const char* pName) -{ - FbxCamera* lCamera = FbxCamera::Create(pScene,pName); - - // Modify some camera default settings. - lCamera->SetApertureMode(FbxCamera::eVertical); - lCamera->SetApertureWidth(0.816); - lCamera->SetApertureHeight(0.612); - lCamera->SetSqueezeRatio(0.5); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lCamera); - - return lNode; -} - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest) -{ - // Set the camera to always point at this node. - pCamera->SetTarget(pPointOfInterest); -} - -// The light group is just over the XZ plane. -void SetLightGroupDefaultPosition(FbxNode* pLightGroup) -{ - int i; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - SetLightDefaultPosition(pLightGroup->GetChild(i), i); - } - - pLightGroup->LclTranslation.Set(FbxVector4(0.0, 15.0, 0.0)); - pLightGroup->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pLightGroup->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetLightDefaultPosition(FbxNode* pLight, int pIndex) -{ - // Set light location depending of it's index. - pLight->LclTranslation.Set(FbxVector4((cos((double)pIndex) * 40.0), 0.0, (sin((double)pIndex) * 40.0))); - pLight->LclRotation.Set(FbxVector4(20.0, (90.0 - pIndex * 60.0), 0.0)); - pLight->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); - - // Set light attributes depending of it's index. - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxLight* light = pLight->GetLight(); - if (light) - { - light->Color.Set(lColor[pIndex % 6]); - light->Intensity.Set(33.0); - light->OuterAngle.Set(90.0); - light->Fog.Set(100.0); - } -} - -void SetMarkerDefaultPosition(FbxNode* pMarker) -{ - // The marker is at the origin. - pMarker->LclTranslation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// The code below shows how to compute the camera rotation. -// In the present case, it wouldn't be necessary since the -// camera is set to point to the marker. -void SetCamera1DefaultPosition(FbxNode* pCamera) -{ - FbxVector4 lCameraLocation(0.0, 100.0, -300.0); - FbxVector4 lDefaultPointOfInterest(1.0, 100.0, -300.0); - FbxVector4 lNewPointOfInterest(0, 0, 0); - FbxVector4 lRotation; - FbxVector4 lScaling(1.0, 1.0, 1.0); - - FbxVector4::AxisAlignmentInEulerAngle(lCameraLocation, lDefaultPointOfInterest, lNewPointOfInterest, lRotation); - - pCamera->LclTranslation.Set(lCameraLocation); - pCamera->LclRotation.Set(lRotation); - pCamera->LclScaling.Set(lScaling); -} - -void SetCamera2DefaultPosition(FbxNode* pCamera) -{ - pCamera->LclTranslation.Set(FbxVector4(-150.0, 0.0, 75.0)); -} - -// The light group rises and rotates. -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i; - int lKeyIndex = 0; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - AnimateLight(pLightGroup->GetChild(i), i, pAnimLayer); - } - - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLightGroup->LclRotation.GetCurveNode(pAnimLayer, true); - pLightGroup->LclTranslation.GetCurveNode(pAnimLayer, true); - - // Y axis rotation. - lCurve = pLightGroup->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 5*360.0); - - lCurve->KeyModifyEnd(); - } - - // Y axis translation. - lCurve = pLightGroup->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 15.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 200.0); - - lCurve->KeyModifyEnd(); - } -} - -// The lights are changing color, intensity, orientation and cone angle. -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i, j; - int lKeyIndex = 0; - - FbxLight* light = pLight->GetLight(); - - // Intensity fade in/out. - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Intensity.GetCurveNode(pAnimLayer, true); - lCurve = light->Intensity.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // Fog fade in/out - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Fog.GetCurveNode(pAnimLayer, true); - lCurve = light->Fog.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // X rotation swoops & cone angle woobles. - { - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLight->LclRotation.GetCurveNode(pAnimLayer, true); - light->OuterAngle.GetCurveNode(pAnimLayer, true); - - lCurve = pLight->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - FbxAnimCurve* lConeCurve = light->OuterAngle.GetCurve(pAnimLayer,true); - double lValue; - - lCurve->KeyModifyBegin(); - lConeCurve->KeyModifyBegin(); - - for (i = 0; i < 8; i++) - { - lTime.SetSecondDouble((double)i * 0.833333); - lValue = cos((((double)i) + (((double)pIndex) * 60.0)) * 72.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, float((lValue - 0.4) * 30.0)); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, float((2.0 - (lValue + 1.0)) * 45.0)); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - } - - // Finally, have the lights spread out and lose focus. - lTime.SetSecondDouble(10.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, 180.0); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lCurve->KeyModifyEnd(); - lConeCurve->KeyModifyEnd(); - } - - // Color cycling. - { - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxAnimCurve* lCurveA[3]; - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - light->Color.GetCurveNode(pAnimLayer, true); - lCurveA[0] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_RED, true); - lCurveA[1] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_GREEN, true); - lCurveA[2] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_BLUE, true); - - if (lCurveA[0] && lCurveA[1] && lCurveA[2]) - { - lCurveA[0]->KeyModifyBegin(); - lCurveA[1]->KeyModifyBegin(); - lCurveA[2]->KeyModifyBegin(); - - for (i = 0; i < 24; i++) - { - j = i + pIndex; - - while (j > 5) - { - j -= 6; - } - - lTime.SetSecondDouble((double)i * 0.4166666); - - lKeyIndex = lCurveA[0]->KeyAdd(lTime); - lCurveA[0]->KeySetValue(lKeyIndex, (float)lColor[j][0]); - lCurveA[0]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[1]->KeyAdd(lTime); - lCurveA[1]->KeySetValue(lKeyIndex, (float)lColor[j][1]); - lCurveA[1]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[2]->KeyAdd(lTime); - lCurveA[2]->KeySetValue(lKeyIndex, (float)lColor[j][2]); - lCurveA[2]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - } - - lCurveA[0]->KeyModifyEnd(); - lCurveA[1]->KeyModifyEnd(); - lCurveA[2]->KeyModifyEnd(); - } - } -} - -// The camera is rising and rolling twice. -void AnimateCamera(FbxNode* pCamera, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - pCamera->LclTranslation.GetCurveNode(pAnimLayer, true); - - // X translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 200.0); - - lCurve->KeyModifyEnd(); - } - - // Y translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 300.0); - - lCurve->KeyModifyEnd(); - } - - // Camera roll. - FbxCamera* cam = pCamera->GetCamera(); - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - cam->Roll.GetCurveNode(pAnimLayer, true); - lCurve = cam->Roll.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble (0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 2*360.0); - - lCurve->KeyModifyEnd(); - } -} - diff --git a/sdk/Linux/2019.2/samples/ExportScene05/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportScene05/CMakeLists.txt deleted file mode 100644 index c9001d0..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene05/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene05 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../MyOwnWriterReader/MyOwnReader.cxx - ../MyOwnWriterReader/MyOwnWriter.cxx - ../MyOwnWriterReader/MyOwnWriterReader.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportScene05/main.cxx b/sdk/Linux/2019.2/samples/ExportScene05/main.cxx deleted file mode 100644 index 1727d6b..0000000 --- a/sdk/Linux/2019.2/samples/ExportScene05/main.cxx +++ /dev/null @@ -1,332 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a skeleton made of 3 segments. -// The position of a node in a .FBX file is expressed in coordinates -// relative to it's parent. This example shows how to convert to and -// from a global position. -// -// The example illustrates how to: -// 1) create a skeleton segment -// 2) get a node's global default position -// 3) set a node's global default position -// 4) set limits, rotation order and pre/post pivots -// 5) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include -#ifdef FBXSDK_ENV_WIN -// On Windows platform need to include this to define _msize() -#include -#endif - -//include needed for custom reader/writer -#include "../MyOwnWriterReader/MyOwnWriterReader.h" - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene05.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition); -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have an FBX file. Let's try to write to a custom writer and read our file with our custom reader. - - FBXSDK_printf("Writing to file with custom writer\n"); - int lRegisteredCount; - int lPluginId; - - //We need to register the writer for the sdk to be aware. - lSdkManager->GetIOPluginRegistry()->RegisterWriter(CreateMyOwnWriter, GetMyOwnWriterInfo, - lPluginId, lRegisteredCount, FillOwnWriterIOSettings); - - - //The filename - const char* lFileName = "CustomWriter.CFF"; - - //at this point use our custom writer to write: - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - //Here, we set the custom writer. - int lFileFormat = lSdkManager->GetIOPluginRegistry()->FindWriterIDByExtension("CFF"); - - //Initialize the file - if(lExporter->Initialize(lFileName, lFileFormat, lSdkManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, false); - return 1; - } - - //This will call the write function of the custom writer. - lResult = lExporter->Export(lScene); - if(lResult == false) - { - FBXSDK_printf("Error in write of our custom writer\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have written to the custom writer, let's read with our custom reader. - - //Again, we need to register the reader. - lSdkManager->GetIOPluginRegistry()->RegisterReader(CreateMyOwnReader, GetMyOwnReaderInfo, - lPluginId, lRegisteredCount, FillOwnReaderIOSettings); - - //Create the importer - FbxImporter* lImporter = FbxImporter::Create(lSdkManager,""); - - - //We initialize our file. - //Here we can simply pass the filename, and it should automatically find the right file format and reader. - lResult = lImporter->Initialize(lFileName, -1, lSdkManager->GetIOSettings() ); - - //At one point, this will call our read function of our custom reader. - lResult = lImporter->Import(lScene); - - if(lResult == false) - { - FBXSDK_printf("There was a problem in the read of our custom reader\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxVector4 lT, lR, lS; - FbxAMatrix lGM; - - // Create nodes. - FbxNode* pNodeA = FbxNode::Create(pScene,"A"); - FbxNode* pNodeB = FbxNode::Create(pScene,"B"); - FbxNode* pNodeC = FbxNode::Create(pScene,"C"); - FbxNode* pNodeD = FbxNode::Create(pScene,"D"); - - // Create node attributes. - FbxSkeleton* lSkeletonA = FbxSkeleton::Create(pScene,""); - lSkeletonA->SetSkeletonType(FbxSkeleton::eRoot); - pNodeA->SetNodeAttribute(lSkeletonA); - FbxSkeleton* lSkeletonB = FbxSkeleton::Create(pScene,""); - lSkeletonB->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeB->SetNodeAttribute(lSkeletonB); - FbxSkeleton* lSkeletonC = FbxSkeleton::Create(pScene,""); - lSkeletonC->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeC->SetNodeAttribute(lSkeletonC); - FbxSkeleton* lSkeletonD = FbxSkeleton::Create(pScene,""); - lSkeletonD->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeD->SetNodeAttribute(lSkeletonD); - - - // On node A we set translation limits - pNodeA->TranslationActive = true; - pNodeA->TranslationMinX = true; - pNodeA->TranslationMinY = true; - pNodeA->TranslationMinZ = true; - pNodeA->TranslationMin = FbxVector4(0.1, 0.2, 0.3); - pNodeA->TranslationMaxX = true; - pNodeA->TranslationMaxY = true; - pNodeA->TranslationMaxZ = true; - pNodeA->TranslationMax = FbxVector4(5.0, 1.0, 0.0); - pNodeA->UpdatePivotsAndLimitsFromProperties(); - - // On node B we set the rotation order and the pre/post pivots - // (for these value to have an effect, we need to enable the RotationActive flag) - pNodeB->RotationActive = true; - pNodeB->RotationMaxX = true; - pNodeB->RotationMaxY = false; - pNodeB->RotationMaxZ = false; - pNodeB->RotationMax = FbxVector4(33.3, 0.0, 0.0); - pNodeB->UpdatePivotsAndLimitsFromProperties(); - - pNodeB->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - pNodeB->SetRotationOrder(FbxNode::eSourcePivot, eSphericXYZ); - pNodeB->SetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot, false); - pNodeB->SetQuaternionInterpolation(FbxNode::eSourcePivot, eQuatInterpClassic); - pNodeB->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(11.1, 22.2, 33.3)); - pNodeB->SetPreRotation(FbxNode::eSourcePivot, FbxVector4(15.0, 30.0, 45.0)); - pNodeB->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(-45.0, -30.0, -15.0)); - - // Set node hierarchy. - pScene->GetRootNode()->AddChild(pNodeA); - pNodeA->AddChild(pNodeB); - pNodeB->AddChild(pNodeC); - pNodeC->AddChild(pNodeD); - - // Set global position of node A. - lT.Set(0.0, 0.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 45.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeA, lGM); - - // Set global position of node B. - lT.Set(30.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeB, lGM); - - // Set global position of node C. - lT.Set(55.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, -40.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeC, lGM); - - // Set global position of node D. - lT.Set(70.0, 10.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeD, lGM); - - // Set meta-data on some of the nodes. - // - // For this sample, we'll use a hiearchical set of meta-data: - // - // Family - // Type - // Instance - // - // Family contains all the common properties, and the lower levels override various - // values. - // - FbxObjectMetaData* pFamilyMetaData = FbxObjectMetaData::Create(pScene, "Family"); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Level", "Level").Set(FbxString("Family")); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Type", "Type").Set(FbxString("Wall")); - FbxProperty::Create(pFamilyMetaData, FbxFloatDT, "Width", "Width").Set(10.0f); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Weight", "Weight").Set(25.0); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Cost", "Cost").Set(1.25); - - FbxObjectMetaData* pTypeMetaData = FbxCast(pFamilyMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pTypeMetaData->SetName("Type"); - - // On this level we'll just override two properties - pTypeMetaData->FindProperty("Cost").Set(2500.0); - pTypeMetaData->FindProperty("Level").Set(FbxString("Type")); - - FbxObjectMetaData* pInstanceMetaData = FbxCast(pTypeMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pInstanceMetaData->SetName("Instance"); - - // And on this level, we'll go in and add a brand new property, too. - FbxProperty::Create(pInstanceMetaData, FbxStringDT, "Sku", "Sku#").Set(FbxString("143914-10")); - pInstanceMetaData->FindProperty("Width").Set(1100.50f); - pInstanceMetaData->FindProperty("Type").Set(FbxString("Super Heavy Duty Wall")); - pInstanceMetaData->FindProperty("Level").Set(FbxString("Instance")); - - // Finally connect metadata information to some of our nodes. - pNodeA->ConnectSrcObject(pInstanceMetaData); - pNodeC->ConnectSrcObject(pInstanceMetaData); // Share the same object - - pNodeD->ConnectSrcObject(pTypeMetaData); - - return true; -} - -// Function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lParentGlobalPosition; - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lLocalPosition = lParentGlobalPosition.Inverse() * pGlobalPosition; - } - else - { - lLocalPosition = pGlobalPosition; - } - - pNode->LclTranslation.Set(lLocalPosition.GetT()); - pNode->LclRotation.Set(lLocalPosition.GetR()); - pNode->LclScaling.Set(lLocalPosition.GetS()); -} - -// Recursive function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lGlobalPosition; - FbxAMatrix lParentGlobalPosition; - - lLocalPosition.SetT(pNode->LclTranslation.Get()); - lLocalPosition.SetR(pNode->LclRotation.Get()); - lLocalPosition.SetS(pNode->LclScaling.Get()); - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - else - { - lGlobalPosition = lLocalPosition; - } - - return lGlobalPosition; -} - - diff --git a/sdk/Linux/2019.2/samples/ExportShader/CMakeLists.txt b/sdk/Linux/2019.2/samples/ExportShader/CMakeLists.txt deleted file mode 100644 index c245da7..0000000 --- a/sdk/Linux/2019.2/samples/ExportShader/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportShader .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ExportShader/Default_reflection.dds b/sdk/Linux/2019.2/samples/ExportShader/Default_reflection.dds deleted file mode 100644 index 0e212b4..0000000 Binary files a/sdk/Linux/2019.2/samples/ExportShader/Default_reflection.dds and /dev/null differ diff --git a/sdk/Linux/2019.2/samples/ExportShader/glass.fx b/sdk/Linux/2019.2/samples/ExportShader/glass.fx deleted file mode 100644 index 3ff2fcc..0000000 --- a/sdk/Linux/2019.2/samples/ExportShader/glass.fx +++ /dev/null @@ -1,200 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: glass.fx - -Copyright NVIDIA Corporation 2002-2004 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Glass shader with reflection and refractive dispersion. - -******************************************************************************/ - -float Script : STANDARDSGLOBAL < - string UIWidget = "none"; - string ScriptClass = "object"; - string ScriptOrder = "standard"; - string ScriptOutput = "color"; - string Script = "Technique=dx9;"; -> = 0.8; - -/************* TWEAKABLES **************/ - -float4x4 worldIT : WorldInverseTranspose; -float4x4 wvp : WorldViewProjection; -float4x4 world : World; -float4x4 viewI : ViewInverse; - -float reflectStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Reflection"; -> = 1.0; - -float refractStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Refraction"; -> = 1.0; - -half3 etas -< - string UIName = "Refraction indices"; -> = { 0.80, 0.82, 0.84 }; - -texture cubeMap : Environment -< - string ResourceName = "default_reflection.dds"; - string ResourceType = "Cube"; ->; - -texture fresnelTex : Environment -< - string ResourceType = "2D"; - string function = "generateFresnelTex"; - - float2 Dimensions = { 256.0f, 1.0f}; ->; - -samplerCUBE environmentMapSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = Linear; -}; - -sampler2D fresnelSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = None; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float4 Position : POSITION; - float4 UV : TEXCOORD0; - float3 Normal : NORMAL; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float4 TexCoord : TEXCOORD0; - float3 WorldNormal : TEXCOORD1; - float3 WorldView : TEXCOORD2; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN, - uniform float4x4 WorldViewProj, - uniform float4x4 WorldIT, - uniform float4x4 World, - uniform float4x4 viewI -) { - vertexOutput OUT; - float3 normal = normalize(IN.Normal); - OUT.WorldNormal = mul(normal, (float3x3) WorldIT); - float3 Pw = mul(IN.Position, World).xyz; - OUT.TexCoord = IN.UV; - OUT.WorldView = viewI[3].xyz - Pw; - OUT.HPosition = mul(IN.Position, WorldViewProj); - return OUT; -} - -/********* pixel shader ********/ - -// modified refraction function that returns boolean for total internal reflection -float3 -refract2( float3 I, float3 N, float eta, out bool fail ) -{ - float IdotN = dot(I, N); - float k = 1 - eta*eta*(1 - IdotN*IdotN); -// return k < 0 ? (0,0,0) : eta*I - (eta*IdotN + sqrt(k))*N; - fail = k < 0; - return eta*I - (eta*IdotN + sqrt(k))*N; -} - -// approximate Fresnel function -float fresnel(float NdotV, float bias, float power) -{ - return bias + (1.0-bias)*pow(1.0 - max(NdotV, 0), power); -} - -// function to generate a texture encoding the Fresnel function -float4 generateFresnelTex(float NdotV : POSITION) : COLOR -{ - return fresnel(NdotV, 0.2, 4.0); -} - -float4 mainPS(vertexOutput IN, - uniform samplerCUBE EnvironmentMap, - uniform half reflectStrength, - uniform half refractStrength, - uniform half3 etas - ) : COLOR -{ - half3 N = normalize(IN.WorldNormal); - float3 V = normalize(IN.WorldView); - - // reflection - half3 R = reflect(-V, N); - half4 reflColor = texCUBE(EnvironmentMap, R); - -// half fresnel = fresnel(dot(N, V), 0.2, 4.0); - half fresnel = tex2D(fresnelSampler, dot(N, V)); - - // wavelength colors - const half4 colors[3] = { - { 1, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { 0, 0, 1, 0 }, - }; - - // transmission - half4 transColor = 0; - bool fail = false; - for(int i=0; i<3; i++) { - half3 T = refract2(-V, N, etas[i], fail); - transColor += texCUBE(EnvironmentMap, T) * colors[i]; - } - - return lerp(transColor*refractStrength, reflColor*reflectStrength, fresnel); -} - -/*************/ - -technique dx9 < - string Script = "Pass=p0;"; -> { - pass p0 < - string Script = "Draw=geometry;"; - > { - VertexShader = compile vs_2_0 mainVS(wvp,worldIT,world,viewI); - PixelShader = compile ps_2_0 mainPS(environmentMapSampler, - reflectStrength, refractStrength, - etas); - } -} - -/***************************** eof ***/ diff --git a/sdk/Linux/2019.2/samples/ExportShader/main.cxx b/sdk/Linux/2019.2/samples/ExportShader/main.cxx deleted file mode 100644 index d44f2a9..0000000 --- a/sdk/Linux/2019.2/samples/ExportShader/main.cxx +++ /dev/null @@ -1,254 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is two cubes. -// One is linked to a CGFX shader. Another is linked to a HLSL shader. -// -// The example illustrates how to: -// 1) create a CGFX shader -// 2) create a HLSL shader -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "../Common/GeometryUtility.h" - -#define SAMPLE_FILENAME "ExportShader.fbx" -#define CGFX_SHADERFILE "xfSkyBox.cgfx" -#define HLSL_SHADERFILE "glass.fx" -#define TEXTURE_FILE "Default_reflection.dds" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene); -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene); -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, -1, true); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation of shader."; - sceneInfo->mAuthor = "ExportShader sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "shader"; - sceneInfo->mComment = "no particular comments required."; - - pScene->SetSceneInfo(sceneInfo); - - // Cube with CgFX shader - FbxDouble3 lCgfxTranslation(0, 0, 0); - FbxNode* lCgfxNode = CreateCube(pScene, "CgfxCube", lCgfxTranslation); - - FbxSurfaceMaterial* lCgfxMat = CreateCgfxShader(pScene); - lCgfxNode->AddMaterial(lCgfxMat); - - // Cube with HLSL shader - FbxDouble3 lHlslTranslation(20, 0, 0); - FbxNode* lHlslNode = CreateCube(pScene, "HlslCube", lHlslTranslation); - - FbxSurfaceMaterial* lHlslMat = CreateHlslShader(pScene); - lHlslNode->AddMaterial(lHlslMat); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCgfxNode); - lRootNode->AddChild(lHlslNode); - - return true; -} - -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lCgfxMat = FbxSurfaceMaterial::Create(pScene, "CgfxShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Cgfx_Implementation")); - - lCgfxMat->AddImplementation( lImpl ); - lCgfxMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_OPENGL; - lImpl->RenderAPIVersion = "1.5"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_CGFX; - lImpl->LanguageVersion = "1.5"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = CGFX_SHADERFILE; - // technique name - lTable->DescTAG = "user"; - - FbxProperty lRootProp = FbxProperty::Create( lCgfxMat, FbxCompoundDT, "ShaderExample"); - // Property "SurfColor" - FbxProperty lProp = FbxProperty::Create( lRootProp, FbxDouble3DT, "SurfColor" ); - FbxDouble3 lSurfVal(0, 1, 0); - lProp.Set(lSurfVal); - CreateTableEntry(lTable, lProp); // for every property, create a table entry in binding table - - // Property MasterAlpha - lProp = FbxProperty::Create(lRootProp, FbxFloatDT, "MasterAlpha"); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property EnvSample, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lRootProp, FbxDouble3DT, "EnvSampler", "EnvSampler"); - FbxDouble3 lSampleVal(0, 0, 0); - lProp.Set(lSampleVal); - CreateTableEntry(lTable, lProp); - - // create texture and connect to property - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "EnvSamplerTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - return lCgfxMat; -} - -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lHlslMat = FbxSurfaceMaterial::Create(pScene, "HlslShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Hlsl_Implementation")); - - lHlslMat->AddImplementation( lImpl ); - lHlslMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; - lImpl->RenderAPIVersion = "9.0"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; - lImpl->LanguageVersion = "1.0"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = HLSL_SHADERFILE; - // technique name - lTable->DescTAG = "dx9"; - - - // Property Script - FbxProperty lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "Script", "Script"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.8); - CreateTableEntry(lTable, lProp); - - // Property reflectStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "reflectStrength", "reflectStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property refractStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "refractStrength", "refractStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.75); - CreateTableEntry(lTable, lProp); - - // Property etas - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "etas", "etas"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lEtasVal(0.8, 0.6, 0.4); - lProp.Set(lEtasVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, not connect a texture to it, just skip it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "fresnelTex", "fresnelTex"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lTexVal(0, 0, 0); - lProp.Set(lTexVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "cubeMap", "cubeMap"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lMapVal(0, 1, 0); - lProp.Set(lMapVal); - CreateTableEntry(lTable, lProp); - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "cubeMapTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - - return lHlslMat; -} - -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp) -{ - // create entry - FbxBindingTableEntry& lEntry = pTable->AddNewEntry(); - // set src to the fbx property, in this sample, fbx properties have the same name with shader parameters - FbxPropertyEntryView lSrc( &lEntry, true, true ); - // Because CgFX uses compound property, so do not use pProp.GetName() - lSrc.SetProperty( pProp.GetHierarchicalName()); - - // set dst to the shader parameter - FbxSemanticEntryView lDst( &lEntry, false, true ); - lDst.SetSemantic( pProp.GetName() ); -} diff --git a/sdk/Linux/2019.2/samples/ExportShader/xfSkyBox.cgfx b/sdk/Linux/2019.2/samples/ExportShader/xfSkyBox.cgfx deleted file mode 100644 index 196f64c..0000000 --- a/sdk/Linux/2019.2/samples/ExportShader/xfSkyBox.cgfx +++ /dev/null @@ -1,142 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: //sw/devtools/FXComposer2/Alpha4+/SDK/MEDIA/CgFX1.4/xfSkyBox.cgfx#1 $ - -Copyright NVIDIA Corporation 2002 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Projects a cube map across space, with that space defined by a user - coordinate system. Read this into maya, connect an extra transform's - WorldInverse matrix to "CoordSysIXf," and apply to a background - geometry (big sphere, cube, whatever) - $Date: 2006/04/10 $ - -******************************************************************************/ - -// string Category = "Effects\\Cg\\BRDF"; -// string keywords = "dx9,texture,anti-aliasing,derivatives,pointlight"; -// string description = "Analytic Anti-aliasing - No Texture Map"; - -/************* UNTWEAKABLES **************/ - -float4x4 WorldITXf : WorldInverseTranspose; -float4x4 WorldViewProjXf : WorldViewProjection; -float4x4 WorldXf : World; -float4x4 ViewITXf : ViewInverseTranspose; -float4x4 ViewIXf : ViewInverse; -float4x4 WorldViewXf : WorldView; - -/************* TWEAKABLES **************/ - -float3 SurfColor : Diffuse -< - string UIName = "Surface Color"; -> = {1.0f, 1.0f, 1.0f}; - -// float4 userCoords0 = {1,0,0,0}; -// float4 userCoords1 = {0,1,0,0}; -// float4 userCoords2 = {0,0,1,0}; -// float4 userCoords3 = {0,0,0,1}; - -float4x4 CoordSysIXf : WorldInverse; - -float MasterAlpha < - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 1.0; - float UIStep = 0.001; -> = 0.0f; - -////////////////////// - -texture EnvTexture : Environment < - string ResourceName = "Default_reflection.dds"; - string ResourceType = "Cube"; ->; - -samplerCUBE EnvSampler = sampler_state { - Texture = ; - MinFilter = LinearMipMapLinear; - MagFilter = Linear; - WrapS = ClampToEdge; - WrapT = ClampToEdge; - WrapR = ClampToEdge; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float3 Position : POSITION; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float3 UserPos : TEXCOORD0; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - OUT.HPosition = mul(WorldViewProjXf, Po); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - return OUT; -} - -vertexOutput flipVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - OUT.UserPos.y = -OUT.UserPos.y; - OUT.HPosition = mul(WorldViewProjXf, Po); - return OUT; -} - - -/********* pixel shader ********/ - -// PS with box-filtered step function -float4 mainPS(vertexOutput IN) : COLOR { - float3 reflColor = SurfColor * texCUBE(EnvSampler,-IN.UserPos).xyz; - // return float4(IN.UserPos.xyz,1.0f); - return float4(reflColor.xyz,MasterAlpha); -} - -/************************************************************/ - -technique yFlip { - pass p0 { - VertexProgram = compile arbvp1 flipVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -technique user { - pass p0 { - VertexProgram = compile arbvp1 mainVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -/***************************** eof ***/ diff --git a/sdk/Linux/2019.2/samples/FileStream/CMakeLists.txt b/sdk/Linux/2019.2/samples/FileStream/CMakeLists.txt deleted file mode 100644 index 6fd03bb..0000000 --- a/sdk/Linux/2019.2/samples/FileStream/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(FileStream .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Linux/2019.2/samples/FileStream/main.cxx b/sdk/Linux/2019.2/samples/FileStream/main.cxx deleted file mode 100644 index 029c1b4..0000000 --- a/sdk/Linux/2019.2/samples/FileStream/main.cxx +++ /dev/null @@ -1,249 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// -// The example illustrates how to: -// 1) create a file custom stream class -// 2) write a text file using the stream -// 3) read the generated file via the stream -// -///////////////////////////////////////////////////////////////////////// - -#include - -// Custom stream -class CustomStreamClass : public FbxStream -{ -public: - CustomStreamClass( FbxManager* pSdkManager, const char* mode ) - { - mFile = NULL; - - // expect the mode to contain something - if (mode == NULL) return; - - - FBXSDK_strcpy(mFileName, 30, "CustomStreamClass_temp.txt"); - FBXSDK_strcpy(mMode, 3, (mode) ? mode : "r"); - - if ( mode[0] == 'r' ) - { - const char* format = "FBX (*.fbx)"; - mReaderID = pSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( format ); - mWriterID = -1; - } - else - { - const char* format = "FBX ascii (*.fbx)"; - mWriterID = pSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription( format ); - mReaderID = -1; - } - } - - ~CustomStreamClass() - { - Close(); - } - - virtual EState GetState() - { - return mFile ? FbxStream::eOpen : eClosed; - } - - /** Open the stream. - * \return True if successful. - */ - virtual bool Open( void* /*pStreamData*/ ) - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle - // multiple opens - if (mFile == NULL) - FBXSDK_fopen(mFile, mFileName, mMode); - - if (mFile != NULL) - fseek( mFile, 0L, SEEK_SET ); - - return ( mFile != NULL ); - } - - /** Close the stream. - * \return True if successful. - */ - virtual bool Close() - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle multiple closes - if ( mFile ) - fclose( mFile ); - mFile = NULL; - return true; - } - - /** Empties the internal data of the stream. - * \return True if successful. - */ - virtual bool Flush() - { - return true; - } - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. - */ - virtual int Write(const void* pData, int pSize) - { - if ( mFile == NULL ) - return 0; - return (int)fwrite( pData, 1, pSize, mFile ); - } - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. - */ - virtual int Read (void* pData, int pSize) const - { - if ( mFile == NULL ) - return 0; - return (int)fread( pData, 1, pSize, mFile ); - } - - virtual int GetReaderID() const - { - return mReaderID; - } - - virtual int GetWriterID() const - { - return mWriterID; - } - - void Seek( const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos ) - { - switch ( pSeekPos ) - { - case FbxFile::eBegin: - fseek( mFile, (long)pOffset, SEEK_SET ); - break; - case FbxFile::eCurrent: - fseek( mFile, (long)pOffset, SEEK_CUR ); - break; - case FbxFile::eEnd: - fseek( mFile, (long)pOffset, SEEK_END ); - break; - } - } - - virtual long GetPosition() const - { - if ( mFile == NULL ) - return 0; - return ftell( mFile ); - } - virtual void SetPosition( long pPosition ) - { - if ( mFile ) - fseek( mFile, pPosition, SEEK_SET ); - } - - virtual int GetError() const - { - if ( mFile == NULL ) - return 0; - return ferror( mFile ); - } - virtual void ClearError() - { - if ( mFile != NULL ) - clearerr( mFile ); - } - -private: - FILE* mFile; - int mReaderID; - int mWriterID; - char mFileName[30]; - char mMode[3]; -}; - - - -int testExport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene. - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an exporter. - FbxExporter* lExporter = FbxExporter::Create( lSdkManager, "" ); - // create a stream. - CustomStreamClass stream( lSdkManager, "wb" ); - // can pass in a void* data pointer to be passed to the stream on FileCreate - void* streamData = NULL; - // initialize the exporter. - if ( !lExporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // export the scene. - if ( !lExporter->Export( lScene ) ) - return -1; - // destroy the exporter. - lExporter->Destroy(); - - return 0; -} - -int testImport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an importer. - FbxImporter* lImporter = FbxImporter::Create( lSdkManager, "" ); - // create a stream. (CustomStreamClass – stream initialization in constructor) - CustomStreamClass stream( lSdkManager, "rb" ); - // can pass in a void* data pointer to be passed to the stream on FileOpen - void* streamData = NULL; - // initialize the importer with a stream - if ( !lImporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // import the scene. - if ( !lImporter->Import( lScene ) ) - return -1; - // destroy the importer. - lImporter->Destroy(); - - return 0; -} - -int main(int /*argc*/, char** /*argv*/) -{ - int ret; - - ret = testExport(); - if ( ret ) return ret; - - ret = testImport(); - if ( ret ) return ret; - - return 0; -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/CMakeLists.txt b/sdk/Linux/2019.2/samples/ImportScene/CMakeLists.txt deleted file mode 100644 index 8a68076..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ImportScene .) -SET(FBX_TARGET_SOURCE - DisplayAnimation.cxx - DisplayCache.cxx - DisplayCamera.cxx - DisplayCommon.cxx - DisplayGenericInfo.cxx - DisplayGlobalSettings.cxx - DisplayHierarchy.cxx - DisplayLight.cxx - DisplayLink.cxx - DisplayMarker.cxx - DisplayMaterial.cxx - DisplayMesh.cxx - DisplayNurb.cxx - DisplayPatch.cxx - DisplayLodGroup.cxx - DisplayPivotsAndLimits.cxx - DisplayPose.cxx - DisplayShape.cxx - DisplaySkeleton.cxx - DisplayTexture.cxx - DisplayUserProperties.cxx - main.cxx - DisplayAnimation.h - DisplayCache.h - DisplayCamera.h - DisplayCommon.h - DisplayGenericInfo.h - DisplayGlobalSettings.h - DisplayHierarchy.h - DisplayLight.h - DisplayLink.h - DisplayMarker.h - DisplayMaterial.h - DisplayMesh.h - DisplayNurb.h - DisplayPatch.h - DisplayLodGroup.h - DisplayPivotsAndLimits.h - DisplayPose.h - DisplayShape.h - DisplaySkeleton.h - DisplayTexture.h - DisplayUserProperties.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.cxx deleted file mode 100644 index 5525f43..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.cxx +++ /dev/null @@ -1,569 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#include "DisplayAnimation.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool isSwitcher = false); - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher); -void DisplayCurveKeys(FbxAnimCurve* pCurve); -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty); - -void DisplayAnimation(FbxScene* pScene) -{ - int i; - for (i = 0; i < pScene->GetSrcObjectCount(); i++) - { - FbxAnimStack* lAnimStack = pScene->GetSrcObject(i); - - FbxString lOutputString = "Animation Stack Name: "; - lOutputString += lAnimStack->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimStack, pScene->GetRootNode()); - } -} - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher) -{ - int l; - int nbAnimLayers = pAnimStack->GetMemberCount(); - int nbAudioLayers = pAnimStack->GetMemberCount(); - FbxString lOutputString; - - lOutputString = " contains "; - if (nbAnimLayers==0 && nbAudioLayers==0) - lOutputString += "no layers"; - - if (nbAnimLayers) - { - lOutputString += nbAnimLayers; - lOutputString += " Animation Layer"; - if (nbAnimLayers > 1) - lOutputString += "s"; - } - - if (nbAudioLayers) - { - if (nbAnimLayers) - lOutputString += " and "; - - lOutputString += nbAudioLayers; - lOutputString += " Audio Layer"; - if (nbAudioLayers > 1) - lOutputString += "s"; - } - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - for (l = 0; l < nbAnimLayers; l++) - { - FbxAnimLayer* lAnimLayer = pAnimStack->GetMember(l); - - lOutputString = "AnimLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimLayer, pNode, isSwitcher); - } - - for (l = 0; l < nbAudioLayers; l++) - { - FbxAudioLayer* lAudioLayer = pAnimStack->GetMember(l); - - lOutputString = "AudioLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAudioLayer, isSwitcher); - FBXSDK_printf("\n"); - } -} - -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool ) -{ - int lClipCount; - FbxString lOutputString; - - lClipCount = pAudioLayer->GetMemberCount(); - - lOutputString = " Name: "; - lOutputString += pAudioLayer->GetName(); - lOutputString += "\n\n"; - lOutputString += " Nb Audio Clips: "; - lOutputString += lClipCount; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - for (int i = 0; i < lClipCount; i++) - { - FbxAudio* lClip = pAudioLayer->GetMember(i); - lOutputString = " Clip["; - lOutputString += i; - lOutputString += "]:\t"; - lOutputString += lClip->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - } -} - -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher) -{ - int lModelCount; - FbxString lOutputString; - - lOutputString = " Node Name: "; - lOutputString += pNode->GetName(); - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - DisplayChannels(pNode, pAnimLayer, DisplayCurveKeys, DisplayListCurveKeys, isSwitcher); - FBXSDK_printf ("\n"); - - for(lModelCount = 0; lModelCount < pNode->GetChildCount(); lModelCount++) - { - DisplayAnimation(pAnimLayer, pNode->GetChild(lModelCount), isSwitcher); - } -} - - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher) -{ - FbxAnimCurve* lAnimCurve = NULL; - - // Display general curves. - if (!isSwitcher) - { - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" TX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" TY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" TZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" RX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" RY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" RZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" SX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" SY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" SZ\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a light or marker. - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - if (lAnimCurve) - { - FBXSDK_printf(" Red\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - if (lAnimCurve) - { - FBXSDK_printf(" Green\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - if (lAnimCurve) - { - FBXSDK_printf(" Blue\n"); - DisplayCurve(lAnimCurve); - } - - // Display curves specific to a light. - FbxLight* light = pNode->GetLight(); - if (light) - { - lAnimCurve = light->Intensity.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Intensity\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->OuterAngle.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Outer Angle\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->Fog.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Fog\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a camera. - FbxCamera* camera = pNode->GetCamera(); - if (camera) - { - lAnimCurve = camera->FieldOfView.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewY.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Optical Center X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterY.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Optical Center Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->Roll.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Roll\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNurbs || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::ePatch) - { - FbxGeometry* lGeometry = (FbxGeometry*) lNodeAttribute; - - int lBlendShapeDeformerCount = lGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - const char* lChannelName = lChannel->GetName(); - - lAnimCurve = lGeometry->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer, true); - if(lAnimCurve) - { - FBXSDK_printf(" Shape %s\n", lChannelName); - DisplayCurve(lAnimCurve); - } - } - } - } - } - - // Display curves specific to properties - FbxProperty lProperty = pNode->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - FbxString lFbxFCurveNodeName = lProperty.GetName(); - FbxAnimCurveNode* lCurveNode = lProperty.GetCurveNode(pAnimLayer); - - if (!lCurveNode){ - lProperty = pNode->GetNextProperty(lProperty); - continue; - } - - FbxDataType lDataType = lProperty.GetPropertyDataType(); - if (lDataType.GetType() == eFbxBool || lDataType.GetType() == eFbxDouble || lDataType.GetType() == eFbxFloat || lDataType.GetType() == eFbxInt) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayCurve(lAnimCurve); - } - } - else if(lDataType.GetType() == eFbxDouble3 || lDataType.GetType() == eFbxDouble4 || lDataType.Is(FbxColor3DT) || lDataType.Is(FbxColor4DT)) - { - char* lComponentName1 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_RED : (char*)"X"; - char* lComponentName2 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_GREEN : (char*)"Y"; - char* lComponentName3 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_BLUE : (char*)"Z"; - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - } - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName1); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(1U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(1U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName2); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(2U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(2U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName3); - DisplayCurve(lAnimCurve); - } - } - } - else if (lDataType.GetType() == eFbxEnum) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayListCurve(lAnimCurve, &lProperty); - } - } - } - - lProperty = pNode->GetNextProperty(lProperty); - } // while - -} - - -static int InterpolationFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant ) return 1; - if( (flags & FbxAnimCurveDef::eInterpolationLinear) == FbxAnimCurveDef::eInterpolationLinear ) return 2; - if( (flags & FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic ) return 3; - return 0; -} - -static int ConstantmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eConstantStandard) == FbxAnimCurveDef::eConstantStandard ) return 1; - if( (flags & FbxAnimCurveDef::eConstantNext) == FbxAnimCurveDef::eConstantNext ) return 2; - return 0; -} - -static int TangentmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eTangentAuto) == FbxAnimCurveDef::eTangentAuto ) return 1; - if( (flags & FbxAnimCurveDef::eTangentAutoBreak)== FbxAnimCurveDef::eTangentAutoBreak ) return 2; - if( (flags & FbxAnimCurveDef::eTangentTCB) == FbxAnimCurveDef::eTangentTCB ) return 3; - if( (flags & FbxAnimCurveDef::eTangentUser) == FbxAnimCurveDef::eTangentUser ) return 4; - if( (flags & FbxAnimCurveDef::eTangentGenericBreak) == FbxAnimCurveDef::eTangentGenericBreak ) return 5; - if( (flags & FbxAnimCurveDef::eTangentBreak) == FbxAnimCurveDef::eTangentBreak ) return 6; - return 0; -} - -static int TangentweightFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eWeightedNone) == FbxAnimCurveDef::eWeightedNone ) return 1; - if( (flags & FbxAnimCurveDef::eWeightedRight) == FbxAnimCurveDef::eWeightedRight ) return 2; - if( (flags & FbxAnimCurveDef::eWeightedNextLeft) == FbxAnimCurveDef::eWeightedNextLeft ) return 3; - return 0; -} - -static int TangentVelocityFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eVelocityNone) == FbxAnimCurveDef::eVelocityNone ) return 1; - if( (flags & FbxAnimCurveDef::eVelocityRight) == FbxAnimCurveDef::eVelocityRight ) return 2; - if( (flags & FbxAnimCurveDef::eVelocityNextLeft) == FbxAnimCurveDef::eVelocityNextLeft ) return 3; - return 0; -} - -void DisplayCurveKeys(FbxAnimCurve* pCurve) -{ - static const char* interpolation[] = { "?", "constant", "linear", "cubic"}; - static const char* constantMode[] = { "?", "Standard", "Next" }; - static const char* cubicMode[] = { "?", "Auto", "Auto break", "Tcb", "User", "Break", "User break" }; - static const char* tangentWVMode[] = { "?", "None", "Right", "Next left" }; - - FbxTime lKeyTime; - float lKeyValue; - char lTimeString[256]; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " [ "; - lOutputString += interpolation[ InterpolationFlagToIndex(pCurve->KeyGetInterpolation(lCount)) ]; - if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant) - { - lOutputString += " | "; - lOutputString += constantMode[ ConstantmodeFlagToIndex(pCurve->KeyGetConstantMode(lCount)) ]; - } - else if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic) - { - lOutputString += " | "; - lOutputString += cubicMode[ TangentmodeFlagToIndex(pCurve->KeyGetTangentMode(lCount)) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentweightFlagToIndex(pCurve->KeyGet(lCount).GetTangentWeightMode()) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentVelocityFlagToIndex(pCurve->KeyGet(lCount).GetTangentVelocityMode()) ]; - } - lOutputString += " ]"; - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} - -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty) -{ - FbxTime lKeyTime; - int lKeyValue; - char lTimeString[256]; - FbxString lListValue; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " ("; - lOutputString += pProperty->GetEnumValue(lKeyValue); - lOutputString += ")"; - - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.h deleted file mode 100644 index e4584c7..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayAnimation.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_ANIMATION_H -#define _DISPLAY_ANIMATION_H - -#include "DisplayCommon.h" - -void DisplayAnimation(FbxScene* pScene); -void DisplayDefaultAnimation(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_ANIMATION_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.cxx deleted file mode 100644 index 7b305c3..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.cxx +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - - -#include - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry) -{ - int lVertexCacheDeformerCount = pGeometry->GetDeformerCount( FbxDeformer::eVertexCache ); - - for( int i = 0; i < lVertexCacheDeformerCount; ++i ) - { - FbxVertexCacheDeformer* lDeformer = static_cast(pGeometry->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - if (lCache->OpenFileForRead()) - { - DisplayString(" Vertex Cache"); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - // skip normal channel - if (lChannelIndex < 0) - continue; - - FbxString lChnlName, lChnlInterp; - - FbxCache::EMCDataType lChnlType; - FbxTime start, stop, rate; - FbxCache::EMCSamplingType lChnlSampling; - unsigned int lChnlSampleCount, lDataCount; - - lCache->GetChannelName(lChannelIndex, lChnlName); - DisplayString(" Channel Name: ", lChnlName.Buffer()); - lCache->GetChannelDataType(lChannelIndex, lChnlType); - switch (lChnlType) - { - case FbxCache::eUnknownData: - DisplayString(" Channel Type: Unknown Data"); break; - case FbxCache::eDouble: - DisplayString(" Channel Type: Double"); break; - case FbxCache::eDoubleArray: - DisplayString(" Channel Type: Double Array"); break; - case FbxCache::eDoubleVectorArray: - DisplayString(" Channel Type: Double Vector Array"); break; - case FbxCache::eInt32Array: - DisplayString(" Channel Type: Int32 Array"); break; - case FbxCache::eFloatArray: - DisplayString(" Channel Type: Float Array"); break; - case FbxCache::eFloatVectorArray: - DisplayString(" Channel Type: Float Vector Array"); break; - } - lCache->GetChannelInterpretation(lChannelIndex, lChnlInterp); - DisplayString(" Channel Interpretation: ", lChnlInterp.Buffer()); - lCache->GetChannelSamplingType(lChannelIndex, lChnlSampling); - DisplayInt(" Channel Sampling Type: ", lChnlSampling); - lCache->GetAnimationRange(lChannelIndex, start, stop); - lCache->GetChannelSamplingRate(lChannelIndex, rate); - lCache->GetChannelSampleCount(lChannelIndex, lChnlSampleCount); - DisplayInt(" Channel Sample Count: ", lChnlSampleCount); - - // Only display cache data if the data type is float vector array - if (lChnlType != FbxCache::eFloatVectorArray) - continue; - - if (lChnlInterp == "normals") - DisplayString(" Normal Cache Data"); - else - DisplayString(" Points Cache Data"); - float* lBuffer = NULL; - unsigned int lBufferSize = 0; - int lFrame = 0; - for (FbxTime t = start; t <= stop; t+=rate) - { - DisplayInt(" Frame ", lFrame); - lCache->GetChannelPointCount(lChannelIndex, t, lDataCount); - if (lBuffer == NULL) - { - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else if (lBufferSize < lDataCount*3) - { - delete [] lBuffer; - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else - memset(lBuffer, 0, lBufferSize*sizeof(float)); - - lCache->Read(lChannelIndex, t, lBuffer, lDataCount); - if (lChnlInterp == "normals") - { - // display normals cache data - // the normal data is per-polygon per-vertex. we can get the polygon vertex index - // from the index array of polygon vertex - FbxMesh* lMesh = (FbxMesh*)pGeometry; - - if (lMesh == NULL) - { - // Only Mesh can have normal cache data - continue; - } - - DisplayInt(" Normal Count ", lDataCount); - int pi, j, lPolygonCount = lMesh->GetPolygonCount(); - unsigned lNormalIndex = 0; - for (pi = 0; pi < lPolygonCount && lNormalIndex+2 < lDataCount*3; pi++) - { - DisplayInt(" Polygon ", pi); - DisplayString(" Normals for Each Polygon Vertex: "); - int lPolygonSize = lMesh->GetPolygonSize(pi); - for (j = 0; j < lPolygonSize && lNormalIndex+2 < lDataCount*3; j++) - { - FbxVector4 normal(lBuffer[lNormalIndex], lBuffer[lNormalIndex+1], lBuffer[lNormalIndex+2]); - Display3DVector(" Normal Cache Data ", normal); - lNormalIndex += 3; - } - } - } - else - { - DisplayInt(" Points Count: ", lDataCount); - for (unsigned int j = 0; j < lDataCount*3; j=j+3) - { - FbxVector4 points(lBuffer[j], lBuffer[j+1], lBuffer[j+2]); - Display3DVector(" Points Cache Data: ", points); - } - } - - lFrame++; - } - - if (lBuffer != NULL) - { - delete [] lBuffer; - lBuffer = NULL; - } - - lCache->CloseFile(); - } - } -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.h deleted file mode 100644 index bcfb73a..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCache.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CACHE_H -#define _DISPLAY_CACHE_H - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_CACHE_H diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.cxx deleted file mode 100644 index ffd5892..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.cxx +++ /dev/null @@ -1,288 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - - -void DisplayCamera(FbxNode* pNode) -{ - DisplayCamera((FbxCamera*) pNode->GetNodeAttribute(), (char *) pNode->GetName(), pNode->GetTarget(), pNode->GetTargetUp()); -} - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString("Camera Name: ", pName); - if (!pCamera) - { - DisplayString("NOT FOUND"); - return; - } - DisplayMetaDataConnections(pCamera); - - DisplayCameraPositionAndOrientation(pCamera, pTargetNode, pTargetUpNode); - - const char* lProjectionTypes[] = { "Perspective", "Orthogonal" }; - - DisplayString(" Projection Type: ", lProjectionTypes[pCamera->ProjectionType.Get()]); - - DisplayViewingAreaControls(pCamera); - - // If camera projection type is set to FbxCamera::eOrthogonal, the - // aperture and film controls are not relevant. - if (pCamera->ProjectionType.Get() != FbxCamera::eOrthogonal) - { - DisplayApertureAndFilmControls(pCamera); - } - - DisplayBackgroundProperties(pCamera); - DisplayCameraViewOptions(pCamera); - DisplayRenderOptions(pCamera); - DisplayDefaultAnimationValues(pCamera); -} - - -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString(" Camera Position and Orientation"); - Display3DVector(" Position: ", pCamera->Position.Get()); - - if (pTargetNode) - { - DisplayString(" Camera Interest: ",(char *) pTargetNode->GetName()); - } - else - { - Display3DVector(" Default Camera Interest Position: ", pCamera->InterestPosition.Get()); - } - - if (pTargetUpNode) - { - DisplayString(" Camera Up Target: ", (char *) pTargetUpNode->GetName()); - } - else - { - Display3DVector(" Up Vector: ", pCamera->UpVector.Get()); - } - - DisplayDouble(" Roll: ", pCamera->Roll.Get()); -} - - -void DisplayViewingAreaControls(FbxCamera* pCamera) -{ - DisplayString(" Viewing Area Controls"); - - const char* lCameraFormat[] = { "Custom", "D1 NTSC", "NTSC", "PAL", "D1 PAL", - "HD", "640x480", "320x200", "320x240", "128x128", - "Full Screen" }; - - DisplayString(" Format: ", lCameraFormat[pCamera->GetFormat()]); - - const char* lAspectRatioModes[] = { "Window Size", "Fixed Ratio", "Fixed Resolution", - "Fixed Width", "Fixed Height" }; - - DisplayString(" Aspect Ratio Mode: ", lAspectRatioModes[pCamera->GetAspectRatioMode()]); - - // If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - if (pCamera->GetAspectRatioMode() != FbxCamera::eWindowSize) - { - DisplayDouble(" Aspect Width: ", pCamera->AspectWidth.Get()); - DisplayDouble(" Aspect Height: ", pCamera->AspectHeight.Get()); - } - - DisplayDouble(" Pixel Ratio: ", pCamera->PixelAspectRatio.Get()); - DisplayDouble(" Near Plane: ", pCamera->NearPlane.Get()); - DisplayDouble(" Far Plane: ", pCamera->FarPlane.Get()); - DisplayBool(" Mouse Lock: ", pCamera->LockMode.Get()); -} - - -void DisplayApertureAndFilmControls(FbxCamera* pCamera) -{ - DisplayString(" Aperture and Film Controls"); - - const char* lCameraApertureFormats[] = { "Custom", - "16mm Theatrical", - "Super 16mm", - "35mm Academy", - "35mm TV Projection", - "35mm Full Aperture", - "35mm 1.85 Projection", - "35mm Anamorphic", - "70mm Projection", - "VistaVision", - "Dynavision", - "Imax" }; - - DisplayString(" Aperture Format: ", lCameraApertureFormats[pCamera->GetApertureFormat()]); - - const char* lCameraApertureModes[] = { "Horizontal and Vertical", "Horizontal", "Vertical", "Focal Length" }; - - DisplayString(" Aperture Mode: ", lCameraApertureModes[pCamera->GetApertureMode()]); - - DisplayDouble(" Aperture Width: ", pCamera->GetApertureWidth(), " inches"); - DisplayDouble(" Aperture Height: ", pCamera->GetApertureHeight(), " inches"); - DisplayDouble(" Squeeze Ratio: ", pCamera->GetSqueezeRatio()); - DisplayDouble(" Focal Length: ", pCamera->FocalLength.Get(), "mm"); - DisplayDouble(" Field of View: ", pCamera->FieldOfView.Get(), " degrees"); -} - - -void DisplayBackgroundProperties(FbxCamera* pCamera) -{ - DisplayString(" Background Properties"); - - DisplayString(" Background File Name: \"", (char *) pCamera->GetBackgroundFileName(), "\""); - - const char* lBackgroundDisplayModes[] = { "Disabled", "Always", "When Media" }; - - DisplayString(" Background Display Mode: ", lBackgroundDisplayModes[pCamera->ViewFrustumBackPlaneMode.Get()]); - - DisplayBool(" Foreground Matte Threshold Enable: ", pCamera->ShowFrontplate.Get()); - - // This option is only relevant if background drawing mode is set to eFOREGROUND or eBACKGROUND_AND_FOREGROUND. - if (pCamera->ForegroundOpacity.Get()) - { - DisplayDouble(" Foreground Matte Threshold: ", pCamera->BackgroundAlphaTreshold.Get()); - } - - FbxString lBackgroundPlacementOptions; - - if (pCamera->GetBackPlateFitImage()) - { - lBackgroundPlacementOptions += " Fit,"; - } - if (pCamera->GetBackPlateCenter()) - { - lBackgroundPlacementOptions += " Center,"; - } - if (pCamera->GetBackPlateKeepRatio()) - { - lBackgroundPlacementOptions += " Keep Ratio,"; - } - if (pCamera->GetBackPlateCrop()) - { - lBackgroundPlacementOptions += " Crop,"; - } - if (!lBackgroundPlacementOptions.IsEmpty()) - { - FbxString lString = lBackgroundPlacementOptions.Left(lBackgroundPlacementOptions.GetLen() - 1); - DisplayString(" Background Placement Options: ",lString.Buffer()); - } - - DisplayDouble(" Background Distance: ", pCamera->BackPlaneDistance.Get()); - - const char* lCameraBackgroundDistanceModes[] = { "Relative to Interest", "Absolute from Camera" }; - - DisplayString(" Background Distance Mode: ", lCameraBackgroundDistanceModes[pCamera->BackPlaneDistanceMode.Get()]); -} - - -void DisplayCameraViewOptions(FbxCamera* pCamera) -{ - DisplayString(" Camera View Options"); - - DisplayBool(" View Camera Interest: ", pCamera->ViewCameraToLookAt.Get()); - DisplayBool(" View Near Far Planes: ", pCamera->ViewFrustumNearFarPlane.Get()); - DisplayBool(" Show Grid: ", pCamera->ShowGrid.Get()); - DisplayBool(" Show Axis: ", pCamera->ShowAzimut.Get()); - DisplayBool(" Show Name: ", pCamera->ShowName.Get()); - DisplayBool(" Show Info on Moving: ", pCamera->ShowInfoOnMoving.Get()); - DisplayBool(" Show Time Code: ", pCamera->ShowTimeCode.Get()); - DisplayBool(" Display Safe Area: ", pCamera->DisplaySafeArea.Get()); - - const char* lSafeAreaStyles[] = { "Round", "Square" }; - FbxColor color; - FbxDouble3 c; - - DisplayString(" Safe Area Style: ", lSafeAreaStyles[pCamera->SafeAreaDisplayStyle.Get()]); - DisplayBool(" Show Audio: ", pCamera->ShowAudio.Get()); - - c = pCamera->BackgroundColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Background Color: ", color); - - c = pCamera->AudioColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Audio Color: ", color); - - DisplayBool(" Use Frame Color: ", pCamera->UseFrameColor.Get()); - - c = pCamera->FrameColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Frame Color: ", color); -} - - -void DisplayRenderOptions(FbxCamera* pCamera) -{ - DisplayString(" Render Options"); - - const char* lCameraRenderOptionsUsageTimes[] = { "Interactive", "At Render" }; - - DisplayString(" Render Options Usage Time: ", lCameraRenderOptionsUsageTimes[pCamera->UseRealTimeDOFAndAA.Get()]); - DisplayBool(" Use Antialiasing: ", pCamera->UseAntialiasing.Get()); - DisplayDouble(" Antialiasing Intensity: ", pCamera->AntialiasingIntensity.Get()); - - const char* lCameraAntialiasingMethods[] = { "Oversampling Antialiasing", "Hardware Antialiasing" }; - - DisplayString(" Antialiasing Method: ", lCameraAntialiasingMethods[pCamera->AntialiasingMethod.Get()]); - - // This option is only relevant if antialiasing method is set to eOVERSAMPLING_ANTIALIASING. - if (pCamera->AntialiasingMethod.Get() == FbxCamera::eAAOversampling) - { - DisplayInt(" Number of Samples: ", pCamera->FrameSamplingCount.Get()); - } - - const char* lCameraSamplingTypes[] = { "Uniform", "Stochastic" }; - - DisplayString(" Sampling Type: ", lCameraSamplingTypes[pCamera->FrameSamplingType.Get()]); - DisplayBool(" Use Accumulation Buffer: ", pCamera->UseAccumulationBuffer.Get()); - DisplayBool(" Use Depth of Field: ", pCamera->UseDepthOfField.Get()); - - const char* lCameraFocusDistanceSources[] = { "Camera Interest", "Specific Distance" }; - - DisplayString(" Focus Distance Source: ", lCameraFocusDistanceSources[pCamera->FocusSource.Get()]); - - // This parameter is only relevant if focus distance source is set to eSPECIFIC_DISTANCE. - if (pCamera->FocusSource.Get() == FbxCamera::eFocusSpecificDistance) - { - DisplayDouble(" Specific Distance: ", pCamera->FocusDistance.Get()); - } - - DisplayDouble(" Focus Angle: ", pCamera->FocusAngle.Get(), " degrees"); -} - - -void DisplayDefaultAnimationValues(FbxCamera* pCamera) -{ - DisplayString(" Default Animation Values"); - - DisplayDouble(" Default Field of View: ", pCamera->FieldOfView.Get()); - DisplayDouble(" Default Field of View X: ", pCamera->FieldOfViewX.Get()); - DisplayDouble(" Default Field of View Y: ", pCamera->FieldOfViewY.Get()); - DisplayDouble(" Default Optical Center X: ", pCamera->OpticalCenterX.Get()); - DisplayDouble(" Default Optical Center Y: ", pCamera->OpticalCenterY.Get()); - DisplayDouble(" Default Roll: ", pCamera->Roll.Get()); -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.h deleted file mode 100644 index ce12edf..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCamera.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CAMERA_H -#define _DISPLAY_CAMERA_H - -#include "DisplayCommon.h" - -void DisplayCamera(FbxNode* pNode); -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - -#endif // #ifndef _DISPLAY_CAMERA_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.cxx deleted file mode 100644 index 3a28223..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.cxx +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.h deleted file mode 100644 index e069c24..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayCommon.h +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.cxx deleted file mode 100644 index 3c67265..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.cxx +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayProperties(FbxObject* pObject); -void DisplayGenericInfo(FbxNode* pNode, int pDepth); -void DisplayGenericInfo(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayGenericInfo(lRootNode->GetChild(i), 0); - } - - //Other objects directly connected onto the scene - for( i = 0; i < pScene->GetSrcObjectCount(); ++i ) - { - DisplayProperties(pScene->GetSrcObject(i)); - } -} - - -void DisplayGenericInfo(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - DisplayString(lString.Buffer()); - - //Display generic info about that Node - DisplayProperties(pNode); - DisplayString(""); - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayGenericInfo(pNode->GetChild(i), pDepth + 1); - } -} - -void DisplayProperties(FbxObject* pObject) -{ - - DisplayString("Name: ", (char *)pObject->GetName()); - - // Display all the properties - int i, lCount = 0; - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - lCount++; - lProperty = pObject->GetNextProperty(lProperty); - } - - FbxString lTitleStr = " Property Count: "; - - if (lCount == 0) - return; // there are no properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - i=0; - lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - // exclude user properties - - FbxString lString; - DisplayInt(" Property ", i); - lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - lString = lProperty.GetPropertyDataType().GetName(); - DisplayString(" Type: ",lString.Buffer()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - - switch (lProperty.GetPropertyDataType().GetType()) - { - case eFbxBool: - DisplayBool(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble4: - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - break; - - case eFbxInt: - DisplayInt(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble3: - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - break; - - //case FbxEnumDT: - // DisplayInt(" Default Value: ", lProperty.Get()); - // break; - - case eFbxFloat: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - case eFbxString: - lString = lProperty.Get(); - DisplayString(" Default Value: ", lString.Buffer()); - break; - - default: - DisplayString(" Default Value: UNIDENTIFIED"); - break; - } - i++; - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.h deleted file mode 100644 index 76a0572..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayGenericInfo.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GENERIC_INFO_H_ -#define _DISPLAY_GENERIC_INFO_H_ - -#include "DisplayCommon.h" - -void DisplayGenericInfo(FbxScene* pScene); - -#endif diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx deleted file mode 100644 index 22e956e..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" -#include "DisplayCamera.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayColor("Ambient Color: ", pGlobalSettings->GetAmbientColor()); - DisplayString(""); -} - - -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayString("Default Camera: ", pGlobalSettings->GetDefaultCamera()); - DisplayString(""); -} - - -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings) -{ - char lTimeString[256]; - - DisplayString("Time Mode : ", FbxGetTimeModeName(pGlobalSettings->GetTimeMode())); - - FbxTimeSpan lTs; - FbxTime lStart, lEnd; - pGlobalSettings->GetTimelineDefaultTimeSpan(lTs); - lStart = lTs.GetStart(); - lEnd = lTs.GetStop(); - DisplayString("Timeline default timespan: "); - DisplayString(" Start: ", lStart.GetTimeString(lTimeString, FbxUShort(256))); - DisplayString(" Stop : ", lEnd.GetTimeString(lTimeString, FbxUShort(256))); - - DisplayString(""); -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.h deleted file mode 100644 index d427de9..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayGlobalSettings.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GLOBAL_SETTINGS_H -#define _DISPLAY_GLOBAL_SETTINGS_H - -#include "DisplayCommon.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings); - -#endif // #ifndef _DISPLAY_GLOBAL_SETTINGS_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.cxx deleted file mode 100644 index c8b49cd..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.cxx +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -// Local functions prototype. -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -void DisplayHierarchy(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayHierarchy(lRootNode->GetChild(i), 0); - } -} - -void DisplayHierarchy(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - FBXSDK_printf(lString.Buffer()); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayHierarchy(pNode->GetChild(i), pDepth + 1); - } -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.h deleted file mode 100644 index 12dffe9..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayHierarchy.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_HIERARCHY_H -#define _DISPLAY_HIERARCHY_H - -#include "DisplayCommon.h" - -void DisplayHierarchy(FbxScene* pScene); -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -#endif // #ifndef _DISPLAY_HIERARCHY_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.cxx deleted file mode 100644 index 728a9ef..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.cxx +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLight.h" - -void DisplayDefaultAnimationValues(FbxLight* pLight); - -void DisplayLight(FbxNode* pNode) -{ - FbxLight* lLight = (FbxLight*) pNode->GetNodeAttribute(); - - DisplayString("Light Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lLight); - - const char* lLightTypes[] = { "Point", "Directional", "Spot", "Area", "Volume" }; - - DisplayString(" Type: ", lLightTypes[lLight->LightType.Get()]); - DisplayBool(" Cast Light: ", lLight->CastLight.Get()); - - if (!(lLight->FileName.Get().IsEmpty())) - { - DisplayString(" Gobo"); - - DisplayString(" File Name: \"", lLight->FileName.Get().Buffer(), "\""); - DisplayBool(" Ground Projection: ", lLight->DrawGroundProjection.Get()); - DisplayBool(" Volumetric Projection: ", lLight->DrawVolumetricLight.Get()); - DisplayBool(" Front Volumetric Projection: ", lLight->DrawFrontFacingVolumetricLight.Get()); - } - - DisplayDefaultAnimationValues(lLight); -} - - -void DisplayDefaultAnimationValues(FbxLight* pLight) -{ - DisplayString(" Default Animation Values"); - - FbxDouble3 c = pLight->Color.Get(); - FbxColor lColor(c[0], c[1], c[2]); - DisplayColor(" Default Color: ", lColor); - DisplayDouble(" Default Intensity: ", pLight->Intensity.Get()); - DisplayDouble(" Default Outer Angle: ", pLight->OuterAngle.Get()); - DisplayDouble(" Default Fog: ", pLight->Fog.Get()); -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.h deleted file mode 100644 index ca717ac..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLight.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LIGHT_H -#define _DISPLAY_LIGHT_H - -#include "DisplayCommon.h" - -void DisplayLight(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LIGHT_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.cxx deleted file mode 100644 index bf2aad7..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.cxx +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLink.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayLink(FbxGeometry* pGeometry) -{ - //Display cluster now - - //int i, lLinkCount; - //FbxCluster* lLink; - - int i, j; - int lSkinCount=0; - int lClusterCount=0; - FbxCluster* lCluster; - - lSkinCount=pGeometry->GetDeformerCount(FbxDeformer::eSkin); - - - - //lLinkCount = pGeometry->GetLinkCount(); - for(i=0; i!=lSkinCount; ++i) - { - lClusterCount = ((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetClusterCount(); - for (j = 0; j != lClusterCount; ++j) - { - DisplayInt(" Cluster ", i); - - lCluster=((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetCluster(j); - //lLink = pGeometry->GetLink(i); - - const char* lClusterModes[] = { "Normalize", "Additive", "Total1" }; - - DisplayString(" Mode: ", lClusterModes[lCluster->GetLinkMode()]); - - if(lCluster->GetLink() != NULL) - { - DisplayString(" Name: ", (char *) lCluster->GetLink()->GetName()); - } - - FbxString lString1 = " Link Indices: "; - FbxString lString2 = " Weight Values: "; - - int k, lIndexCount = lCluster->GetControlPointIndicesCount(); - int* lIndices = lCluster->GetControlPointIndices(); - double* lWeights = lCluster->GetControlPointWeights(); - - for(k = 0; k < lIndexCount; k++) - { - lString1 += lIndices[k]; - lString2 += (float) lWeights[k]; - - if (k < lIndexCount - 1) - { - lString1 += ", "; - lString2 += ", "; - } - } - - lString1 += "\n"; - lString2 += "\n"; - - FBXSDK_printf(lString1); - FBXSDK_printf(lString2); - - DisplayString(""); - - FbxAMatrix lMatrix; - - lMatrix = lCluster->GetTransformMatrix(lMatrix); - Display3DVector(" Transform Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Scaling: ", lMatrix.GetS()); - - lMatrix = lCluster->GetTransformLinkMatrix(lMatrix); - Display3DVector(" Transform Link Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Link Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Link Scaling: ", lMatrix.GetS()); - - if (lCluster->GetAssociateModel() != NULL) - { - lMatrix = lCluster->GetTransformAssociateModelMatrix(lMatrix); - DisplayString(" Associate Model: ", (char *) lCluster->GetAssociateModel()->GetName()); - Display3DVector(" Associate Model Translation: ", lMatrix.GetT()); - Display3DVector(" Associate Model Rotation: ", lMatrix.GetR()); - Display3DVector(" Associate Model Scaling: ", lMatrix.GetS()); - } - - DisplayString(""); - } - } -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.h deleted file mode 100644 index b3ab18d..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLink.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LINK_H -#define _DISPLAY_LINK_H - -#include "DisplayCommon.h" - -void DisplayLink(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_LINK_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.cxx deleted file mode 100644 index cac1610..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode) -{ - const char* lDisplayLevels[] = { "UseLOD", "Show", "Hide" }; - - DisplayString("LodGroup Name: ", (char *) pNode->GetName()); - - DisplayInt(" ", pNode->GetChildCount(), " Geometries"); - for (int i = 0; i < pNode->GetChildCount(); i++) - { - FbxNode* lChildNode = pNode->GetChild(i); - DisplayString(" ", lChildNode->GetName()); - } - - FbxLODGroup *lLodGroupAttr = (FbxLODGroup*)pNode->GetNodeAttribute(); - DisplayBool(" MinMaxDistance Enabled: ", lLodGroupAttr->MinMaxDistance.Get()); - if (lLodGroupAttr->MinMaxDistance.Get()) - { - DisplayDouble(" Min Distance: ", lLodGroupAttr->MinDistance.Get()); - DisplayDouble(" Max Distance: ", lLodGroupAttr->MaxDistance.Get()); - } - DisplayBool(" Is World Space: ", lLodGroupAttr->WorldSpace.Get()); - DisplayBool(" Thresholds used as Percentage: ", lLodGroupAttr->ThresholdsUsedAsPercentage.Get()); - - DisplayString(" Thresholds "); - for (int i = 0; i < lLodGroupAttr->GetNumThresholds(); i++) - { - FbxDistance lThreshVal; - bool res = lLodGroupAttr->GetThreshold(i, lThreshVal); - if (res || (!res && lLodGroupAttr->ThresholdsUsedAsPercentage.Get())) - // when thresholds are used as percentage, the GetThreshold returns false - // and we would need to make sure that the value is not bogus - DisplayDouble(" ", lThreshVal.value()); - } - - DisplayString(" DisplayLevels"); - for (int i = 0; i < lLodGroupAttr->GetNumDisplayLevels(); i++) - { - FbxLODGroup::EDisplayLevel lLevel; - if (lLodGroupAttr->GetDisplayLevel(i, lLevel)) - DisplayString(" ", lDisplayLevels[lLevel]); - } -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.h deleted file mode 100644 index 002874d..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayLodGroup.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LODGROUP_H -#define _DISPLAY_LODGROUP_H - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LODGROUP_H - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.cxx deleted file mode 100644 index 0745b77..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.cxx +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode) -{ - FbxMarker* lMarker = (FbxMarker*)pNode->GetNodeAttribute(); - FbxString lString; - - DisplayString("Marker Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMarker); - - // Type - lString = " Marker Type: "; - switch (lMarker->GetType()) - { - case FbxMarker::eStandard: lString += "Standard"; break; - case FbxMarker::eOptical: lString += "Optical"; break; - case FbxMarker::eEffectorIK: lString += "IK Effector"; break; - case FbxMarker::eEffectorFK: lString += "FK Effector"; break; - } - DisplayString(lString.Buffer()); - - // Look - lString = " Marker Look: "; - switch (lMarker->Look.Get()) - { - default: - break; - case FbxMarker::eCube: lString += "Cube"; break; - case FbxMarker::eHardCross: lString += "Hard Cross"; break; - case FbxMarker::eLightCross: lString += "Light Cross"; break; - case FbxMarker::eSphere: lString += "Sphere"; break; - } - DisplayString(lString.Buffer()); - - // Size - lString = FbxString(" Size: ") + FbxString(lMarker->Size.Get()); - DisplayString(lString.Buffer()); - - // Color - FbxDouble3 c = lMarker->Color.Get(); - FbxColor color(c[0], c[1], c[2]); - DisplayColor(" Color: ", color); - - // IKPivot - Display3DVector(" IKPivot: ", lMarker->IKPivot.Get()); -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.h deleted file mode 100644 index aa0dd06..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMarker.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MARKER_H -#define _DISPLAY_MARKER_H - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MARKER_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.cxx deleted file mode 100644 index 981bdc3..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.cxx +++ /dev/null @@ -1,252 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry) -{ - int lMaterialCount = 0; - FbxNode* lNode = NULL; - if(pGeometry){ - lNode = pGeometry->GetNode(); - if(lNode) - lMaterialCount = lNode->GetMaterialCount(); - } - - if (lMaterialCount > 0) - { - FbxPropertyT lKFbxDouble3; - FbxPropertyT lKFbxDouble1; - FbxColor theColor; - - for (int lCount = 0; lCount < lMaterialCount; lCount ++) - { - DisplayInt(" Material ", lCount); - - FbxSurfaceMaterial *lMaterial = lNode->GetMaterial(lCount); - - DisplayString(" Name: \"", (char *) lMaterial->GetName(), "\""); - - //Get the implementation to see if it's a hardware shader. - const FbxImplementation* lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_HLSL); - FbxString lImplemenationType = "HLSL"; - if(!lImplementation) - { - lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_CGFX); - lImplemenationType = "CGFX"; - } - if(lImplementation) - { - //Now we have a hardware shader, let's read it - FBXSDK_printf(" Hardware Shader Type: %s\n", lImplemenationType.Buffer()); - const FbxBindingTable* lRootTable = lImplementation->GetRootTable(); - FbxString lFileName = lRootTable->DescAbsoluteURL.Get(); - FbxString lTechniqueName = lRootTable->DescTAG.Get(); - - - const FbxBindingTable* lTable = lImplementation->GetRootTable(); - size_t lEntryNum = lTable->GetEntryCount(); - - for(int i=0;i <(int)lEntryNum; ++i) - { - const FbxBindingTableEntry& lEntry = lTable->GetEntry(i); - const char* lEntrySrcType = lEntry.GetEntryType(true); - FbxProperty lFbxProp; - - - FbxString lTest = lEntry.GetSource(); - FBXSDK_printf(" Entry: %s\n", lTest.Buffer()); - - - if ( strcmp( FbxPropertyEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lMaterial->FindPropertyHierarchical(lEntry.GetSource()); - if(!lFbxProp.IsValid()) - { - lFbxProp = lMaterial->RootProperty.FindHierarchical(lEntry.GetSource()); - } - - - } - else if( strcmp( FbxConstantEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lImplementation->GetConstants().FindHierarchical(lEntry.GetSource()); - } - if(lFbxProp.IsValid()) - { - if( lFbxProp.GetSrcObjectCount() > 0 ) - { - //do what you want with the textures - for(int j=0; j(); ++j) - { - FbxFileTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" File Texture: %s\n", lTex->GetFileName()); - } - for(int j=0; j(); ++j) - { - FbxLayeredTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Layered Texture: %s\n", lTex->GetName()); - } - for(int j=0; j(); ++j) - { - FbxProceduralTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Procedural Texture: %s\n", lTex->GetName()); - } - } - else - { - FbxDataType lFbxType = lFbxProp.GetPropertyDataType(); - FbxString blah = lFbxType.GetName(); - if(FbxBoolDT == lFbxType) - { - DisplayBool(" Bool: ", lFbxProp.Get() ); - } - else if ( FbxIntDT == lFbxType || FbxEnumDT == lFbxType ) - { - DisplayInt(" Int: ", lFbxProp.Get()); - } - else if ( FbxFloatDT == lFbxType) - { - DisplayDouble(" Float: ", lFbxProp.Get()); - - } - else if ( FbxDoubleDT == lFbxType) - { - DisplayDouble(" Double: ", lFbxProp.Get()); - } - else if ( FbxStringDT == lFbxType - || FbxUrlDT == lFbxType - || FbxXRefUrlDT == lFbxType ) - { - DisplayString(" String: ", lFbxProp.Get().Buffer()); - } - else if ( FbxDouble2DT == lFbxType) - { - FbxDouble2 lDouble2 = lFbxProp.Get(); - FbxVector2 lVect; - lVect[0] = lDouble2[0]; - lVect[1] = lDouble2[1]; - - Display2DVector(" 2D vector: ", lVect); - } - else if ( FbxDouble3DT == lFbxType || FbxColor3DT == lFbxType) - { - FbxDouble3 lDouble3 = lFbxProp.Get(); - - - FbxVector4 lVect; - lVect[0] = lDouble3[0]; - lVect[1] = lDouble3[1]; - lVect[2] = lDouble3[2]; - Display3DVector(" 3D vector: ", lVect); - } - - else if ( FbxDouble4DT == lFbxType || FbxColor4DT == lFbxType) - { - FbxDouble4 lDouble4 = lFbxProp.Get(); - FbxVector4 lVect; - lVect[0] = lDouble4[0]; - lVect[1] = lDouble4[1]; - lVect[2] = lDouble4[2]; - lVect[3] = lDouble4[3]; - Display4DVector(" 4D vector: ", lVect); - } - else if ( FbxDouble4x4DT == lFbxType) - { - FbxDouble4x4 lDouble44 = lFbxProp.Get(); - for(int j=0; j<4; ++j) - { - - FbxVector4 lVect; - lVect[0] = lDouble44[j][0]; - lVect[1] = lDouble44[j][1]; - lVect[2] = lDouble44[j][2]; - lVect[3] = lDouble44[j][3]; - Display4DVector(" 4x4D vector: ", lVect); - } - - } - } - - } - } - } - else if (lMaterial->GetClassId().Is(FbxSurfacePhong::ClassId)) - { - // We found a Phong material. Display its properties. - - // Display the Ambient Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Specular Color (unique to Phong materials) - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Specular; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Specular: ", theColor); - - // Display the Emissive Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - //Opacity is Transparency factor now - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - - // Display the Shininess - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->Shininess; - DisplayDouble(" Shininess: ", lKFbxDouble1.Get()); - - // Display the Reflectivity - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->ReflectionFactor; - DisplayDouble(" Reflectivity: ", lKFbxDouble1.Get()); - } - else if(lMaterial->GetClassId().Is(FbxSurfaceLambert::ClassId) ) - { - // We found a Lambert material. Display its properties. - // Display the Ambient Color - lKFbxDouble3=((FbxSurfaceLambert *)lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Emissive - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - // Display the Opacity - lKFbxDouble1 =((FbxSurfaceLambert *)lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - } - else - DisplayString("Unknown type of Material"); - - FbxPropertyT lString; - lString = lMaterial->ShadingModel; - DisplayString(" Shading Model: ", lString.Get().Buffer()); - DisplayString(""); - } - } -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.h deleted file mode 100644 index ec9fa99..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMaterial.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MATERIAL_H -#define _DISPLAY_MATERIAL_H - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_MATERIAL_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.cxx deleted file mode 100644 index 2265499..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.cxx +++ /dev/null @@ -1,602 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayMesh.h" - -#include "DisplayMaterial.h" -#include "DisplayTexture.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -#define MAT_HEADER_LENGTH 200 - -void DisplayControlsPoints(FbxMesh* pMesh); -void DisplayPolygons(FbxMesh* pMesh); -void DisplayMaterialMapping(FbxMesh* pMesh); -void DisplayTextureMapping(FbxMesh* pMesh); -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ); -void DisplayMaterialConnections(FbxMesh* pMesh); -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, - char * header, int pMatId, int l ); - -void DisplayMesh(FbxNode* pNode) -{ - FbxMesh* lMesh = (FbxMesh*) pNode->GetNodeAttribute (); - - DisplayString("Mesh Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMesh); - DisplayControlsPoints(lMesh); - DisplayPolygons(lMesh); - DisplayMaterialMapping(lMesh); - DisplayMaterial(lMesh); - DisplayTexture(lMesh); - DisplayMaterialConnections(lMesh); - DisplayLink(lMesh); - DisplayShape(lMesh); - - DisplayCache(lMesh); -} - - -void DisplayControlsPoints(FbxMesh* pMesh) -{ - int i, lControlPointsCount = pMesh->GetControlPointsCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - - DisplayString(" Control Points"); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - - for (int j = 0; j < pMesh->GetElementNormalCount(); j++) - { - FbxGeometryElementNormal* leNormals = pMesh->GetElementNormal( j); - if (leNormals->GetMappingMode() == FbxGeometryElement::eByControlPoint) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Normal Vector: "); - if (leNormals->GetReferenceMode() == FbxGeometryElement::eDirect) - Display3DVector(header, leNormals->GetDirectArray().GetAt(i)); - } - } - } - - DisplayString(""); -} - - -void DisplayPolygons(FbxMesh* pMesh) -{ - int i, j, lPolygonCount = pMesh->GetPolygonCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - char header[100]; - - DisplayString(" Polygons"); - - int vertexId = 0; - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - int l; - - for (l = 0; l < pMesh->GetElementPolygonGroupCount(); l++) - { - FbxGeometryElementPolygonGroup* lePolgrp = pMesh->GetElementPolygonGroup(l); - switch (lePolgrp->GetMappingMode()) - { - case FbxGeometryElement::eByPolygon: - if (lePolgrp->GetReferenceMode() == FbxGeometryElement::eIndex) - { - FBXSDK_sprintf(header, 100, " Assigned to group: "); - int polyGroupId = lePolgrp->GetIndexArray().GetAt(i); - DisplayInt(header, polyGroupId); - break; - } - default: - // any other mapping modes don't make sense - DisplayString(" \"unsupported group assignment\""); - break; - } - } - - int lPolygonSize = pMesh->GetPolygonSize(i); - - for (j = 0; j < lPolygonSize; j++) - { - int lControlPointIndex = pMesh->GetPolygonVertex(i, j); - if (lControlPointIndex < 0) - { - DisplayString(" Coordinates: Invalid index found!"); - continue; - } - else - Display3DVector(" Coordinates: ", lControlPoints[lControlPointIndex]); - - for (l = 0; l < pMesh->GetElementVertexColorCount(); l++) - { - FbxGeometryElementVertexColor* leVtxc = pMesh->GetElementVertexColor( l); - FBXSDK_sprintf(header, 100, " Color vertex: "); - - switch (leVtxc->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(lControlPointIndex); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(vertexId); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for (l = 0; l < pMesh->GetElementUVCount(); ++l) - { - FbxGeometryElementUV* leUV = pMesh->GetElementUV( l); - FBXSDK_sprintf(header, 100, " Texture UV: "); - - switch (leUV->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display2DVector(header, leUV->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leUV->GetIndexArray().GetAt(lControlPointIndex); - Display2DVector(header, leUV->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - int lTextureUVIndex = pMesh->GetTextureUVIndex(i, j); - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - case FbxGeometryElement::eIndexToDirect: - { - Display2DVector(header, leUV->GetDirectArray().GetAt(lTextureUVIndex)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for( l = 0; l < pMesh->GetElementNormalCount(); ++l) - { - FbxGeometryElementNormal* leNormal = pMesh->GetElementNormal( l); - FBXSDK_sprintf(header, 100, " Normal: "); - - if(leNormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leNormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leNormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leNormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leNormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementTangentCount(); ++l) - { - FbxGeometryElementTangent* leTangent = pMesh->GetElementTangent( l); - FBXSDK_sprintf(header, 100, " Tangent: "); - - if(leTangent->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leTangent->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leTangent->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leTangent->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leTangent->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementBinormalCount(); ++l) - { - - FbxGeometryElementBinormal* leBinormal = pMesh->GetElementBinormal( l); - - FBXSDK_sprintf(header, 100, " Binormal: "); - if(leBinormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leBinormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leBinormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leBinormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leBinormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - } - vertexId++; - } // for polygonSize - } // for polygonCount - - - //check visibility for the edges of the mesh - for(int l = 0; l < pMesh->GetElementVisibilityCount(); ++l) - { - FbxGeometryElementVisibility* leVisibility=pMesh->GetElementVisibility(l); - FBXSDK_sprintf(header, 100, " Edge Visibility : "); - DisplayString(header); - switch(leVisibility->GetMappingMode()) - { - default: - break; - //should be eByEdge - case FbxGeometryElement::eByEdge: - //should be eDirect - for(j=0; j!=pMesh->GetMeshEdgeCount();++j) - { - DisplayInt(" Edge ", j); - DisplayBool(" Edge visibility: ", leVisibility->GetDirectArray().GetAt(j)); - } - - break; - } - } - DisplayString(""); -} - -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ) -{ - int lLayeredTextureCount = pProperty.GetSrcObjectCount(); - if(lLayeredTextureCount > 0) - { - for(int j=0; j(j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - pConnectionString += " Texture "; - - for(int k =0; kGetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " on layer "; - pConnectionString += j; - } - pConnectionString += " |"; - } - else - { - //no layered texture simply get on the property - int lNbTextures = pProperty.GetSrcObjectCount(); - - if(lNbTextures > 0) - { - pConnectionString += " Texture "; - pConnectionString += " "; - - for(int j =0; j(j); - if(lTexture) - { - pConnectionString += "\""; - pConnectionString += (char*)lTexture->GetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " |"; - } - } -} - -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, char * header, int pMatId, int l ) -{ - if(!pMaterial) - return; - - FbxString lConnectionString = " Material %d -- "; - //Show all the textures - - FbxProperty lProperty; - //Diffuse Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuse); - DisplayTextureNames(lProperty, lConnectionString); - - //DiffuseFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuseFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Emissive Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissive); - DisplayTextureNames(lProperty, lConnectionString); - - //EmissiveFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissiveFactor); - DisplayTextureNames(lProperty, lConnectionString); - - - //Ambient Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbient); - DisplayTextureNames(lProperty, lConnectionString); - - //AmbientFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbientFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Specular Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecular); - DisplayTextureNames(lProperty, lConnectionString); - - //SpecularFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecularFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Shininess Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - DisplayTextureNames(lProperty, lConnectionString); - - //Bump Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sBump); - DisplayTextureNames(lProperty, lConnectionString); - - //Normal Map Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sNormalMap); - DisplayTextureNames(lProperty, lConnectionString); - - //Transparent Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparentColor); - DisplayTextureNames(lProperty, lConnectionString); - - //TransparencyFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparencyFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Reflection Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflection); - DisplayTextureNames(lProperty, lConnectionString); - - //ReflectionFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflectionFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Update header with material info - bool lStringOverflow = (lConnectionString.GetLen() + 10 >= MAT_HEADER_LENGTH); // allow for string length and some padding for "%d" - if (lStringOverflow) - { - // Truncate string! - lConnectionString = lConnectionString.Left(MAT_HEADER_LENGTH - 10); - lConnectionString = lConnectionString + "..."; - } - FBXSDK_sprintf(header, MAT_HEADER_LENGTH, lConnectionString.Buffer(), pMatId, l); - DisplayString(header); -} - -void DisplayMaterialConnections(FbxMesh* pMesh) -{ - int i, l, lPolygonCount = pMesh->GetPolygonCount(); - - char header[MAT_HEADER_LENGTH]; - - DisplayString(" Polygons Material Connections"); - - //check whether the material maps with only one mesh - bool lIsAllSame = true; - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial(l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - lIsAllSame = false; - break; - } - } - - //For eAllSame mapping type, just out the material and texture mapping info once - if(lIsAllSame) - { - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eAllSame) - { - FbxSurfaceMaterial* lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(0)); - int lMatId = lMaterialElement->GetIndexArray().GetAt(0); - if(lMatId >= 0) - { - DisplayInt(" All polygons share the same material in mesh ", l); - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - - //no material - if(l == 0) - DisplayString(" no material applied"); - } - - //For eByPolygon mapping type, just out the material and texture mapping info once - else - { - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - FbxSurfaceMaterial* lMaterial = NULL; - int lMatId = -1; - lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(i)); - lMatId = lMaterialElement->GetIndexArray().GetAt(i); - - if(lMatId >= 0) - { - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - } -} - - -void DisplayMaterialMapping(FbxMesh* pMesh) -{ - const char* lMappingTypes[] = { "None", "By Control Point", "By Polygon Vertex", "By Polygon", "By Edge", "All Same" }; - const char* lReferenceMode[] = { "Direct", "Index", "Index to Direct"}; - - int lMtrlCount = 0; - FbxNode* lNode = NULL; - if(pMesh){ - lNode = pMesh->GetNode(); - if(lNode) - lMtrlCount = lNode->GetMaterialCount(); - } - - for (int l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - FbxGeometryElementMaterial* leMat = pMesh->GetElementMaterial( l); - if (leMat) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Material Element %d: ", l); - DisplayString(header); - - - DisplayString(" Mapping: ", lMappingTypes[leMat->GetMappingMode()]); - DisplayString(" ReferenceMode: ", lReferenceMode[leMat->GetReferenceMode()]); - - int lMaterialCount = 0; - FbxString lString; - - if (leMat->GetReferenceMode() == FbxGeometryElement::eDirect || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - lMaterialCount = lMtrlCount; - } - - if (leMat->GetReferenceMode() == FbxGeometryElement::eIndex || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - int i; - - lString = " Indices: "; - - int lIndexArrayCount = leMat->GetIndexArray().GetCount(); - for (i = 0; i < lIndexArrayCount; i++) - { - lString += leMat->GetIndexArray().GetAt(i); - - if (i < lIndexArrayCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - - FBXSDK_printf(lString); - } - } - } - - DisplayString(""); -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.h deleted file mode 100644 index a86a939..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayMesh.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MESH_H -#define _DISPLAY_MESH_H - -#include "DisplayCommon.h" - -void DisplayMesh(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MESH_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.cxx deleted file mode 100644 index 60fd456..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayNurb.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayNurb(FbxNode* pNode) -{ - FbxNurbs* lNurbs = (FbxNurbs*) pNode->GetNodeAttribute (); - int i; - - DisplayString("Nurb Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lNurbs); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lNurbs->GetSurfaceMode()]); - - int lControlPointsCount = lNurbs->GetControlPointsCount(); - FbxVector4* lControlPoints = lNurbs->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lNurbTypes[] = { "Periodic", "Closed", "Open" }; - - DisplayString(" Nurb U Type: ", lNurbTypes[lNurbs->GetNurbsUType()]); - DisplayInt(" U Count: ", lNurbs->GetUCount()); - DisplayString(" Nurb V Type: ", lNurbTypes[lNurbs->GetNurbsVType()]); - DisplayInt(" V Count: ", lNurbs->GetVCount()); - DisplayInt(" U Order: ", lNurbs->GetUOrder()); - DisplayInt(" V Order: ", lNurbs->GetVOrder()); - DisplayInt(" U Step: ", lNurbs->GetUStep()); - DisplayInt(" V Step: ", lNurbs->GetVStep()); - - FbxString lString; - int lUKnotCount = lNurbs->GetUKnotCount(); - int lVKnotCount = lNurbs->GetVKnotCount(); - int lUMultiplicityCount = lNurbs->GetUCount(); - int lVMultiplicityCount = lNurbs->GetVCount(); - double* lUKnotVector = lNurbs->GetUKnotVector(); - double* lVKnotVector = lNurbs->GetVKnotVector(); - int* lUMultiplicityVector = lNurbs->GetUMultiplicityVector(); - int* lVMultiplicityVector = lNurbs->GetVMultiplicityVector(); - - lString = " U Knot Vector: "; - - for (i = 0; i < lUKnotCount; i++) - { - lString += (float) lUKnotVector[i]; - - if (i < lUKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Knot Vector: "; - - for (i = 0; i < lVKnotCount; i++) - { - lString += (float) lVKnotVector[i]; - - if (i < lVKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " U Multiplicity Vector: "; - - for (i = 0; i < lUMultiplicityCount; i++) - { - lString += lUMultiplicityVector[i]; - - if (i < lUMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Multiplicity Vector: "; - - for (i = 0; i < lVMultiplicityCount; i++) - { - lString += lVMultiplicityVector[i]; - - if (i < lVMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - DisplayString(""); - - DisplayTexture(lNurbs); - DisplayMaterial(lNurbs); - DisplayLink(lNurbs); - DisplayShape(lNurbs); - DisplayCache(lNurbs); -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.h deleted file mode 100644 index 9e9abd4..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayNurb.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_NURB_H -#define _DISPLAY_NURB_H - -#include "DisplayCommon.h" - -void DisplayNurb(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_NURB_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.cxx deleted file mode 100644 index 4ef3737..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.cxx +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPatch.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" - -void DisplayPatch(FbxNode* pNode) -{ - FbxPatch* lPatch = (FbxPatch*) pNode->GetNodeAttribute(); - - DisplayString("Patch Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lPatch); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lPatch->GetSurfaceMode()]); - - int i, lControlPointsCount = lPatch->GetControlPointsCount(); - FbxVector4* lControlPoints = lPatch->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lPatchTypes[] = { "Bezier", "Bezier Quadric", "Cardinal", "B-Spline", "Linear" }; - - DisplayString(" Patch U Type: ", lPatchTypes[lPatch->GetPatchUType()]); - DisplayInt(" U Count: ", lPatch->GetUCount()); - DisplayString(" Patch V Type: ", lPatchTypes[lPatch->GetPatchVType()]); - DisplayInt(" V Count: ", lPatch->GetVCount()); - DisplayInt(" U Step: ", lPatch->GetUStep()); - DisplayInt(" V Step: ", lPatch->GetVStep()); - DisplayBool(" U Closed: ", lPatch->GetUClosed()); - DisplayBool(" V Closed: ", lPatch->GetVClosed()); - DisplayBool(" U Capped Top: ", lPatch->GetUCappedTop()); - DisplayBool(" U Capped Bottom: ", lPatch->GetUCappedBottom()); - DisplayBool(" V Capped Top: ", lPatch->GetVCappedTop()); - DisplayBool(" V Capped Bottom: ", lPatch->GetVCappedBottom()); - - DisplayString(""); - - DisplayTexture(lPatch); - DisplayMaterial(lPatch); - DisplayLink(lPatch); - DisplayShape(lPatch); -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.h deleted file mode 100644 index c4b536e..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPatch.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PATCH_H -#define _DISPLAY_PATCH_H - -#include "DisplayCommon.h" - -void DisplayPatch(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PATCH_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx deleted file mode 100644 index 0c7597f..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -void DisplayPivotsAndLimits(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - // - // Pivots - // - FBXSDK_printf(" Pivot Information\n"); - - FbxNode::EPivotState lPivotState; - pNode->GetPivotState(FbxNode::eSourcePivot, lPivotState); - FBXSDK_printf(" Pivot State: %s\n", lPivotState == FbxNode::ePivotActive ? "Active" : "Reference"); - - lTmpVector = pNode->GetPreRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Pre-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetPostRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Post-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Limits - // - bool lIsActive, lMinXActive, lMinYActive, lMinZActive; - bool lMaxXActive, lMaxYActive, lMaxZActive; - FbxDouble3 lMinValues, lMaxValues; - - FBXSDK_printf(" Limits Information\n"); - - lIsActive = pNode->TranslationActive; - lMinXActive = pNode->TranslationMinX; - lMinYActive = pNode->TranslationMinY; - lMinZActive = pNode->TranslationMinZ; - lMaxXActive = pNode->TranslationMaxX; - lMaxYActive = pNode->TranslationMaxY; - lMaxZActive = pNode->TranslationMaxZ; - lMinValues = pNode->TranslationMin; - lMaxValues = pNode->TranslationMax; - - FBXSDK_printf(" Translation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->RotationActive; - lMinXActive = pNode->RotationMinX; - lMinYActive = pNode->RotationMinY; - lMinZActive = pNode->RotationMinZ; - lMaxXActive = pNode->RotationMaxX; - lMaxYActive = pNode->RotationMaxY; - lMaxZActive = pNode->RotationMaxZ; - lMinValues = pNode->RotationMin; - lMaxValues = pNode->RotationMax; - - FBXSDK_printf(" Rotation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->ScalingActive; - lMinXActive = pNode->ScalingMinX; - lMinYActive = pNode->ScalingMinY; - lMinZActive = pNode->ScalingMinZ; - lMaxXActive = pNode->ScalingMaxX; - lMaxYActive = pNode->ScalingMaxY; - lMaxZActive = pNode->ScalingMaxZ; - lMinValues = pNode->ScalingMin; - lMaxValues = pNode->ScalingMax; - - FBXSDK_printf(" Scaling limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h deleted file mode 100644 index fcb24e6..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PIVOTS_AND_LIMITS_H -#define _DISPLAY_PIVOTS_AND_LIMITS_H - -#include "DisplayCommon.h" - -void DisplayPivotsAndLimits(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PIVOTS_AND_LIMITS_H - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.cxx deleted file mode 100644 index 43b91b9..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.cxx +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPose.h" - -void DisplayPose(FbxScene* pScene) -{ - int i,j,k,lPoseCount; - FbxString lName; - - lPoseCount = pScene->GetPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxPose* lPose = pScene->GetPose(i); - - lName = lPose->GetName(); - DisplayString("Pose Name: ", lName.Buffer()); - - DisplayBool(" Is a bind pose: ", lPose->IsBindPose()); - - DisplayInt(" Number of items in the pose: ", lPose->GetCount()); - - DisplayString("",""); - - for (j=0; jGetCount(); j++) - { - lName = lPose->GetNodeName(j).GetCurrentName(); - DisplayString(" Item name: ", lName.Buffer()); - - if (!lPose->IsBindPose()) - { - // Rest pose can have local matrix - DisplayBool(" Is local space matrix: ", lPose->IsLocalMatrix(j)); - } - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxMatrix lMatrix = lPose->GetMatrix(j); - FbxVector4 lRow = lMatrix.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - } - } - - lPoseCount = pScene->GetCharacterPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxCharacterPose* lPose = pScene->GetCharacterPose(i); - FbxCharacter* lCharacter = lPose->GetCharacter(); - - if (!lCharacter) break; - - DisplayString("Character Pose Name: ", lCharacter->GetName()); - - FbxCharacterLink lCharacterLink; - FbxCharacter::ENodeId lNodeId = FbxCharacter::eHips; - - while (lCharacter->GetCharacterLink(lNodeId, &lCharacterLink)) - { - FbxAMatrix& lGlobalPosition = lCharacterLink.mNode->EvaluateGlobalTransform(FBXSDK_TIME_ZERO); - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxVector4 lRow = lGlobalPosition.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - - lNodeId = FbxCharacter::ENodeId(int(lNodeId) + 1); - } - } -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.h deleted file mode 100644 index 9865063..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayPose.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_POSE_H -#define _DISPLAY_POSE_H - -#include "DisplayCommon.h" - -void DisplayPose(FbxScene* pScene); - -#endif // #ifndef _DISPLAY_POSE_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.cxx deleted file mode 100644 index 50a138e..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry) -{ - int lBlendShapeCount, lBlendShapeChannelCount, lTargetShapeCount; - FbxBlendShape* lBlendShape; - FbxBlendShapeChannel* lBlendShapeChannel; - FbxShape* lShape; - - lBlendShapeCount = pGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - - for (int lBlendShapeIndex = 0; lBlendShapeIndex < lBlendShapeCount; ++lBlendShapeIndex) - { - lBlendShape = (FbxBlendShape*) pGeometry->GetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - DisplayString(" BlendShape ", (char *) lBlendShape->GetName()); - - lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lBlendShapeChannelIndex = 0; lBlendShapeChannelIndex < lBlendShapeChannelCount; ++lBlendShapeChannelIndex) - { - lBlendShapeChannel = lBlendShape->GetBlendShapeChannel(lBlendShapeChannelIndex); - DisplayString(" BlendShapeChannel ", (char *) lBlendShapeChannel->GetName()); - DisplayDouble(" Default Deform Value: ", lBlendShapeChannel->DeformPercent.Get()); - - lTargetShapeCount = lBlendShapeChannel->GetTargetShapeCount(); - for (int lTargetShapeIndex = 0; lTargetShapeIndex < lTargetShapeCount; ++lTargetShapeIndex) - { - lShape = lBlendShapeChannel->GetTargetShape(lTargetShapeIndex); - DisplayString(" TargetShape ", (char *) lShape->GetName()); - - int j, lControlPointsCount = lShape->GetControlPointsCount(); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - FbxLayerElementArrayTemplate* lNormals = NULL; - bool lStatus = lShape->GetNormals(&lNormals); - - for(j = 0; j < lControlPointsCount; j++) - { - DisplayInt(" Control Point ", j); - Display3DVector(" Coordinates: ", lControlPoints[j]); - - if (lStatus && lNormals && lNormals->GetCount() == lControlPointsCount) - { - Display3DVector(" Normal Vector: ", lNormals->GetAt(j)); - } - } - - DisplayString(""); - } - } - } -} - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.h deleted file mode 100644 index 90a58a8..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayShape.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SHAPE_H -#define _DISPLAY_SHAPE_H - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_SHAPE_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.cxx deleted file mode 100644 index 56c8834..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - DisplayString("Skeleton Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lSkeleton); - - const char* lSkeletonTypes[] = { "Root", "Limb", "Limb Node", "Effector" }; - - DisplayString(" Type: ", lSkeletonTypes[lSkeleton->GetSkeletonType()]); - - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimb) - { - DisplayDouble(" Limb Length: ", lSkeleton->LimbLength.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode) - { - DisplayDouble(" Limb Node Size: ", lSkeleton->Size.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eRoot) - { - DisplayDouble(" Limb Root Size: ", lSkeleton->Size.Get()); - } - - DisplayColor(" Color: ", lSkeleton->GetLimbNodeColor()); -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.h b/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.h deleted file mode 100644 index 87c02aa..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplaySkeleton.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SKELETON_H -#define _DISPLAY_SKELETON_H - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_SKELETON_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.cxx deleted file mode 100644 index 3e3a1ab..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.cxx +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode) -{ - FbxFileTexture *lFileTexture = FbxCast(pTexture); - FbxProceduralTexture *lProceduralTexture = FbxCast(pTexture); - - DisplayString(" Name: \"", (char *) pTexture->GetName(), "\""); - if (lFileTexture) - { - DisplayString(" Type: File Texture"); - DisplayString(" File Name: \"", (char *) lFileTexture->GetFileName(), "\""); - } - else if (lProceduralTexture) - { - DisplayString(" Type: Procedural Texture"); - } - DisplayDouble(" Scale U: ", pTexture->GetScaleU()); - DisplayDouble(" Scale V: ", pTexture->GetScaleV()); - DisplayDouble(" Translation U: ", pTexture->GetTranslationU()); - DisplayDouble(" Translation V: ", pTexture->GetTranslationV()); - DisplayBool(" Swap UV: ", pTexture->GetSwapUV()); - DisplayDouble(" Rotation U: ", pTexture->GetRotationU()); - DisplayDouble(" Rotation V: ", pTexture->GetRotationV()); - DisplayDouble(" Rotation W: ", pTexture->GetRotationW()); - - const char* lAlphaSources[] = { "None", "RGB Intensity", "Black" }; - - DisplayString(" Alpha Source: ", lAlphaSources[pTexture->GetAlphaSource()]); - DisplayDouble(" Cropping Left: ", pTexture->GetCroppingLeft()); - DisplayDouble(" Cropping Top: ", pTexture->GetCroppingTop()); - DisplayDouble(" Cropping Right: ", pTexture->GetCroppingRight()); - DisplayDouble(" Cropping Bottom: ", pTexture->GetCroppingBottom()); - - const char* lMappingTypes[] = { "Null", "Planar", "Spherical", "Cylindrical", - "Box", "Face", "UV", "Environment" }; - - DisplayString(" Mapping Type: ", lMappingTypes[pTexture->GetMappingType()]); - - if (pTexture->GetMappingType() == FbxTexture::ePlanar) - { - const char* lPlanarMappingNormals[] = { "X", "Y", "Z" }; - - DisplayString(" Planar Mapping Normal: ", lPlanarMappingNormals[pTexture->GetPlanarMappingNormal()]); - } - - const char* lBlendModes[] = { "Translucent", "Additive", "Modulate", "Modulate2", "Over", "Normal", "Dissolve", "Darken", "ColorBurn", "LinearBurn", - "DarkerColor", "Lighten", "Screen", "ColorDodge", "LinearDodge", "LighterColor", "SoftLight", "HardLight", "VividLight", - "LinearLight", "PinLight", "HardMix", "Difference", "Exclusion", "Substract", "Divide", "Hue", "Saturation", "Color", - "Luminosity", "Overlay"}; - - if(pBlendMode >= 0) - DisplayString(" Blend Mode: ", lBlendModes[pBlendMode]); - DisplayDouble(" Alpha: ", pTexture->GetDefaultAlpha()); - - if (lFileTexture) - { - const char* lMaterialUses[] = { "Model Material", "Default Material" }; - DisplayString(" Material Use: ", lMaterialUses[lFileTexture->GetMaterialUse()]); - } - - const char* pTextureUses[] = { "Standard", "Shadow Map", "Light Map", - "Spherical Reflexion Map", "Sphere Reflexion Map", "Bump Normal Map" }; - - DisplayString(" Texture Use: ", pTextureUses[pTexture->GetTextureUse()]); - DisplayString(""); - -} - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex){ - - if( pProperty.IsValid() ) - { - int lTextureCount = pProperty.GetSrcObjectCount(); - - for (int j = 0; j < lTextureCount; ++j) - { - //Here we have to check if it's layeredtextures, or just textures: - FbxLayeredTexture *lLayeredTexture = pProperty.GetSrcObject(j); - if (lLayeredTexture) - { - DisplayInt(" Layered Texture: ", j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - for(int k =0; kGetSrcObject(k); - if(lTexture) - { - - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - //NOTE the blend mode is ALWAYS on the LayeredTexture and NOT the one on the texture. - //Why is that? because one texture can be shared on different layered textures and might - //have different blend modes. - - FbxLayeredTexture::EBlendMode lBlendMode; - lLayeredTexture->GetTextureBlendMode(k, lBlendMode); - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", k); - DisplayTextureInfo(lTexture, (int) lBlendMode); - } - - } - } - else - { - //no layered texture simply get on the property - FbxTexture* lTexture = pProperty.GetSrcObject(j); - if(lTexture) - { - //display connected Material header only at the first time - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", j); - DisplayTextureInfo(lTexture, -1); - } - } - } - }//end if pProperty - -} - - -void DisplayTexture(FbxGeometry* pGeometry) -{ - int lMaterialIndex; - FbxProperty lProperty; - if(pGeometry->GetNode()==NULL) - return; - int lNbMat = pGeometry->GetNode()->GetSrcObjectCount(); - for (lMaterialIndex = 0; lMaterialIndex < lNbMat; lMaterialIndex++){ - FbxSurfaceMaterial *lMaterial = pGeometry->GetNode()->GetSrcObject(lMaterialIndex); - bool lDisplayHeader = true; - - //go through all the possible textures - if(lMaterial){ - - int lTextureIndex; - FBXSDK_FOR_EACH_TEXTURE(lTextureIndex) - { - lProperty = lMaterial->FindProperty(FbxLayerElement::sTextureChannelNames[lTextureIndex]); - FindAndDisplayTextureInfoByProperty(lProperty, lDisplayHeader, lMaterialIndex); - } - - }//end if(lMaterial) - - }// end for lMaterialIndex -} diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.h deleted file mode 100644 index 370260b..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayTexture.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_TEXTURE_H -#define _DISPLAY_TEXTURE_H - -#include "DisplayCommon.h" - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex); -void DisplayTexture(FbxGeometry* pGeometry); -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode); - -#endif // #ifndef _DISPLAY_TEXTURE_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.cxx b/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.cxx deleted file mode 100644 index 87405b2..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.cxx +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayUserProperties.h" - -void DisplayUserProperties(FbxObject* pObject) -{ - int lCount = 0; - FbxString lTitleStr = " Property Count: "; - - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - lCount++; - - lProperty = pObject->GetNextProperty(lProperty); - } - - if (lCount == 0) - return; // there are no user properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - lProperty = pObject->GetFirstProperty(); - int i = 0; - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - DisplayInt(" Property ", i); - FbxString lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - DisplayString(" Type: ", lProperty.GetPropertyDataType().GetName()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - FbxDataType lPropertyDataType=lProperty.GetPropertyDataType(); - - // BOOL - if (lPropertyDataType.GetType() == eFbxBool) - { - DisplayBool(" Default Value: ", lProperty.Get()); - } - // REAL - else if (lPropertyDataType.GetType() == eFbxDouble || lPropertyDataType.GetType() == eFbxFloat) - { - DisplayDouble(" Default Value: ", lProperty.Get()); - } - // COLOR - else if (lPropertyDataType.Is(FbxColor3DT) || lPropertyDataType.Is(FbxColor4DT)) - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - // INTEGER - else if (lPropertyDataType.GetType() == eFbxInt) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // VECTOR - else if(lPropertyDataType.GetType() == eFbxDouble3 || lPropertyDataType.GetType() == eFbxDouble4) - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - // LIST - else if (lPropertyDataType.GetType() == eFbxEnum) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // UNIDENTIFIED - else - { - DisplayString(" Default Value: UNIDENTIFIED"); - } - i++; - } - - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.h b/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.h deleted file mode 100644 index e700645..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/DisplayUserProperties.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_USER_PROPERTIES_H -#define _DISPLAY_USER_PROPERTIES_H - -#include "DisplayCommon.h" - -void DisplayUserProperties(FbxObject* pObject); - -#endif // #ifndef _DISPLAY_USER_PROPERTIES_H - - diff --git a/sdk/Linux/2019.2/samples/ImportScene/main.cxx b/sdk/Linux/2019.2/samples/ImportScene/main.cxx deleted file mode 100644 index f240580..0000000 --- a/sdk/Linux/2019.2/samples/ImportScene/main.cxx +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to detect if a scene is password -// protected, import and browse the scene to access node and animation -// information. It displays the content of the FBX file which name is -// passed as program argument. You can try it with the various FBX files -// output by the export examples. -// -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" -#include "DisplayCommon.h" -#include "DisplayHierarchy.h" -#include "DisplayAnimation.h" -#include "DisplayMarker.h" -#include "DisplaySkeleton.h" -#include "DisplayMesh.h" -#include "DisplayNurb.h" -#include "DisplayPatch.h" -#include "DisplayLodGroup.h" -#include "DisplayCamera.h" -#include "DisplayLight.h" -#include "DisplayGlobalSettings.h" -#include "DisplayPose.h" -#include "DisplayPivotsAndLimits.h" -#include "DisplayUserProperties.h" -#include "DisplayGenericInfo.h" - -// Local function prototypes. -void DisplayContent(FbxScene* pScene); -void DisplayContent(FbxNode* pNode); -void DisplayTarget(FbxNode* pNode); -void DisplayTransformPropagation(FbxNode* pNode); -void DisplayGeometricTransform(FbxNode* pNode); -void DisplayMetaData(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - // Load the scene. - - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - if( lFilePath.IsEmpty() ) - { - lResult = false; - FBXSDK_printf("\n\nUsage: ImportScene \n\n"); - } - else - { - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - } - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - // Display the scene. - DisplayMetaData(lScene); - - FBXSDK_printf("\n\n---------------------\nGlobal Light Settings\n---------------------\n\n"); - - if( gVerbose ) DisplayGlobalLightSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n----------------------\nGlobal Camera Settings\n----------------------\n\n"); - - if( gVerbose ) DisplayGlobalCameraSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n--------------------\nGlobal Time Settings\n--------------------\n\n"); - - if( gVerbose ) DisplayGlobalTimeSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n---------\nHierarchy\n---------\n\n"); - - if( gVerbose ) DisplayHierarchy(lScene); - - FBXSDK_printf("\n\n------------\nNode Content\n------------\n\n"); - - if( gVerbose ) DisplayContent(lScene); - - FBXSDK_printf("\n\n----\nPose\n----\n\n"); - - if( gVerbose ) DisplayPose(lScene); - - FBXSDK_printf("\n\n---------\nAnimation\n---------\n\n"); - - if( gVerbose ) DisplayAnimation(lScene); - - //now display generic information - - FBXSDK_printf("\n\n---------\nGeneric Information\n---------\n\n"); - if( gVerbose ) DisplayGenericInfo(lScene); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void DisplayContent(FbxScene* pScene) -{ - int i; - FbxNode* lNode = pScene->GetRootNode(); - - if(lNode) - { - for(i = 0; i < lNode->GetChildCount(); i++) - { - DisplayContent(lNode->GetChild(i)); - } - } -} - -void DisplayContent(FbxNode* pNode) -{ - FbxNodeAttribute::EType lAttributeType; - int i; - - if(pNode->GetNodeAttribute() == NULL) - { - FBXSDK_printf("NULL Node Attribute\n\n"); - } - else - { - lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType()); - - switch (lAttributeType) - { - default: - break; - case FbxNodeAttribute::eMarker: - DisplayMarker(pNode); - break; - - case FbxNodeAttribute::eSkeleton: - DisplaySkeleton(pNode); - break; - - case FbxNodeAttribute::eMesh: - DisplayMesh(pNode); - break; - - case FbxNodeAttribute::eNurbs: - DisplayNurb(pNode); - break; - - case FbxNodeAttribute::ePatch: - DisplayPatch(pNode); - break; - - case FbxNodeAttribute::eCamera: - DisplayCamera(pNode); - break; - - case FbxNodeAttribute::eLight: - DisplayLight(pNode); - break; - - case FbxNodeAttribute::eLODGroup: - DisplayLodGroup(pNode); - break; - } - } - - DisplayUserProperties(pNode); - DisplayTarget(pNode); - DisplayPivotsAndLimits(pNode); - DisplayTransformPropagation(pNode); - DisplayGeometricTransform(pNode); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayContent(pNode->GetChild(i)); - } -} - - -void DisplayTarget(FbxNode* pNode) -{ - if(pNode->GetTarget() != NULL) - { - DisplayString(" Target Name: ", (char *) pNode->GetTarget()->GetName()); - } -} - -void DisplayTransformPropagation(FbxNode* pNode) -{ - FBXSDK_printf(" Transformation Propagation\n"); - - // - // Rotation Space - // - EFbxRotationOrder lRotationOrder; - pNode->GetRotationOrder(FbxNode::eSourcePivot, lRotationOrder); - - FBXSDK_printf(" Rotation Space: "); - - switch (lRotationOrder) - { - case eEulerXYZ: - FBXSDK_printf("Euler XYZ\n"); - break; - case eEulerXZY: - FBXSDK_printf("Euler XZY\n"); - break; - case eEulerYZX: - FBXSDK_printf("Euler YZX\n"); - break; - case eEulerYXZ: - FBXSDK_printf("Euler YXZ\n"); - break; - case eEulerZXY: - FBXSDK_printf("Euler ZXY\n"); - break; - case eEulerZYX: - FBXSDK_printf("Euler ZYX\n"); - break; - case eSphericXYZ: - FBXSDK_printf("Spheric XYZ\n"); - break; - } - - // - // Use the Rotation space only for the limits - // (keep using eEulerXYZ for the rest) - // - FBXSDK_printf(" Use the Rotation Space for Limit specification only: %s\n", - pNode->GetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot) ? "Yes" : "No"); - - - // - // Inherit Type - // - FbxTransform::EInheritType lInheritType; - pNode->GetTransformationInheritType(lInheritType); - - FBXSDK_printf(" Transformation Inheritance: "); - - switch (lInheritType) - { - case FbxTransform::eInheritRrSs: - FBXSDK_printf("RrSs\n"); - break; - case FbxTransform::eInheritRSrs: - FBXSDK_printf("RSrs\n"); - break; - case FbxTransform::eInheritRrs: - FBXSDK_printf("Rrs\n"); - break; - } -} - -void DisplayGeometricTransform(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - FBXSDK_printf(" Geometric Transformations\n"); - - // - // Translation - // - lTmpVector = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - FBXSDK_printf(" Translation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Rotation - // - lTmpVector = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Scaling - // - lTmpVector = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); -} - - -void DisplayMetaData(FbxScene* pScene) -{ - FbxDocumentInfo* sceneInfo = pScene->GetSceneInfo(); - if (sceneInfo) - { - FBXSDK_printf("\n\n--------------------\nMeta-Data\n--------------------\n\n"); - FBXSDK_printf(" Title: %s\n", sceneInfo->mTitle.Buffer()); - FBXSDK_printf(" Subject: %s\n", sceneInfo->mSubject.Buffer()); - FBXSDK_printf(" Author: %s\n", sceneInfo->mAuthor.Buffer()); - FBXSDK_printf(" Keywords: %s\n", sceneInfo->mKeywords.Buffer()); - FBXSDK_printf(" Revision: %s\n", sceneInfo->mRevision.Buffer()); - FBXSDK_printf(" Comment: %s\n", sceneInfo->mComment.Buffer()); - - FbxThumbnail* thumbnail = sceneInfo->GetSceneThumbnail(); - if (thumbnail) - { - FBXSDK_printf(" Thumbnail:\n"); - - switch (thumbnail->GetDataFormat()) - { - case FbxThumbnail::eRGB_24: - FBXSDK_printf(" Format: RGB\n"); - break; - case FbxThumbnail::eRGBA_32: - FBXSDK_printf(" Format: RGBA\n"); - break; - } - - switch (thumbnail->GetSize()) - { - default: - break; - case FbxThumbnail::eNotSet: - FBXSDK_printf(" Size: no dimensions specified (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e64x64: - FBXSDK_printf(" Size: 64 x 64 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e128x128: - FBXSDK_printf(" Size: 128 x 128 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - } - } - } -} - diff --git a/sdk/Linux/2019.2/samples/Instances/CMakeLists.txt b/sdk/Linux/2019.2/samples/Instances/CMakeLists.txt deleted file mode 100644 index 9728cbb..0000000 --- a/sdk/Linux/2019.2/samples/Instances/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Instances .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Linux/2019.2/samples/Instances/main.cxx b/sdk/Linux/2019.2/samples/Instances/main.cxx deleted file mode 100644 index a73c19d..0000000 --- a/sdk/Linux/2019.2/samples/Instances/main.cxx +++ /dev/null @@ -1,440 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/****************************************************************************/ -/* This example shows how to instanciate meshes and curves in FBX. */ -/* - Create a cube */ -/* - Create instances of this cube (new nodes that point to the same mesh) */ -/* - Apply the same materials to the polygons of these cubes */ -/* - Create an animation curve */ -/* - Animate all cubes using the same animation curve. */ -/****************************************************************************/ - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Instances.fbx" -#define SAMPLE_INSTANCE_COUNT 10 - -// Globals -int gNbCubes = -1; -FbxDouble3 gRed(1.0, 0.0, 0.0); -FbxDouble3 gGreen(0.0, 1.0, 0.0); -FbxDouble3 gBlue(0.0, 0.0, 1.0); -FbxDouble3 gGray(0.5, 0.5, 0.5); -FbxDouble3 gWhite(1.0, 1.0, 1.0); - -FbxSurfacePhong* gMatWhite; -FbxSurfacePhong* gMatGray; -FbxSurfacePhong* gMatRed; -FbxSurfacePhong* gMatGreen; -FbxSurfacePhong* gMatBlue; - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube); -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor); -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene); -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an output file name as an argument, and a cube number. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if ( gNbCubes < 1 ) gNbCubes = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - if( gNbCubes < 1 ) gNbCubes = SAMPLE_INSTANCE_COUNT; - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Initial cube position - double lX = 0.0; - double lY = 20.0; - double lZ = 0.0; - - // Create global materials - gMatWhite = CreateMaterial(pScene, gWhite); - gMatGray = CreateMaterial(pScene, gGray); - gMatRed = CreateMaterial(pScene, gRed); - gMatGreen = CreateMaterial(pScene, gGreen); - gMatBlue = CreateMaterial(pScene, gBlue); - - FbxMesh* lCubeMesh = NULL; - FbxNode* lCubeNode = NULL; - - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Cube Animation Stack"); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - for (int i = 0; i < gNbCubes; i++) - { - FbxString lCubeName = "Cube "; - lCubeName += (i+1); - - if (i == 0) - { - // Create first cube - lCubeNode = CreateCube(pScene, lCubeName.Buffer()); - lCubeMesh = lCubeNode->GetMesh(); - } - else - { - // Create cube instance - lCubeNode = CreateCubeInstance(pScene, lCubeName.Buffer(), lCubeMesh); - } - - // set the cube position - lCubeNode->LclTranslation.Set(FbxVector4(lX, lY, lZ)); - - // Animate cube - // Create an animation curve for each node. - FbxAnimCurve* lAnimCurve = CreateAnimCurve(pScene); - AnimateCube(lCubeNode, lAnimLayer, lAnimCurve, i%3); - // alternate sides of X - if (lX >= 0) - { - lX += 50; - } - else - { - lX -= 50; - } - lX *= -1.0; - lY += 30.0; - } - - return true; -} - - -// The cube rotates around X, Y or Z. -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis) -{ - FbxAnimCurveNode *lCurveNode = pCube->LclRotation.GetCurveNode(pAnimLayer, true); - - // Find out which channel to animate: rotate around X axis, Y axis, or Z axis. - if(pRotAxis == 0) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_X); - } - else if(pRotAxis == 1) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Y); - } - else if(pRotAxis == 2) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Z); - } -} - -// Create a cube with a fresh new mesh, and add it to the scene. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - // Set the normals on Layer 0. - FbxLayer* lLayer = lMesh->GetLayer(0); - if (lLayer == NULL) - { - lMesh->CreateLayer(); - lLayer = lMesh->GetLayer(0); - } - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxLayerElementNormal* lLayerElementNormal= FbxLayerElementNormal::Create(lMesh, ""); - - lLayerElementNormal->SetMappingMode(FbxLayerElement::eByControlPoint); - - // Set the normal values for every control point. - lLayerElementNormal->SetReferenceMode(FbxLayerElement::eDirect); - - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - - lLayer->SetNormals(lLayerElementNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - - - // Create UV for Diffuse channel. - FbxLayerElementUV* lUVDiffuseLayer = FbxLayerElementUV::Create(lMesh, "DiffuseUV"); - lUVDiffuseLayer->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lUVDiffuseLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetUVs(lUVDiffuseLayer, FbxLayerElement::eTextureDiffuse); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseLayer->GetDirectArray().Add(lVectors0); - lUVDiffuseLayer->GetDirectArray().Add(lVectors1); - lUVDiffuseLayer->GetDirectArray().Add(lVectors2); - lUVDiffuseLayer->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseLayer->GetIndexArray().SetCount(24); - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(j = 0; j < 4; j++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i*4 + j]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseLayer->GetIndexArray().SetAt(i*4+j, j); - } - - lMesh->EndPolygon (); - } - - // Set material indices - FbxLayerElementMaterial* lMaterialLayer = FbxLayerElementMaterial::Create(lMesh, "MaterialIndices"); - lMaterialLayer->SetMappingMode(FbxLayerElement::eByPolygon); - lMaterialLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetMaterials(lMaterialLayer); - - for (i = 0; i < 6; i++) - { - // the i-th material on FbxNode is applied to the i-th polygon - lMaterialLayer->GetIndexArray().Add(i); - } - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a cube instance with the given mesh as node attribute, and add it to the scene. -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube) -{ - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(pFirstCube); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - if (pFirstCube->GetNodeCount() % 2 == 0) - { - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - } - else - { - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - } - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a material that will be applied to a polygon -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor) -{ - // Create material - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene, "Polygon Material"); - - // Set its diffuse color - lMaterial->Diffuse.Set(pColor); - - return lMaterial; -} - -// Create a single animation curve that will be used by all cubes. -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene) -{ - FbxTime lTime; - int lKeyIndex = 0; - - // Create curve - FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - - // Add keys to the curve - lAnimCurve->KeyModifyBegin(); - - // First key: time 0, value 0 - lTime.SetSecondDouble(0.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - // Second key: time 20s, value -3600 - // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. - lTime.SetSecondDouble(20.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - - // Done adding keys. - lAnimCurve->KeyModifyEnd(); - - return lAnimCurve; -} - diff --git a/sdk/Linux/2019.2/samples/Layers/1.jpg b/sdk/Linux/2019.2/samples/Layers/1.jpg deleted file mode 100644 index 7ae1969..0000000 --- a/sdk/Linux/2019.2/samples/Layers/1.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a273bfe3c0664b39bfeeebb94a923c766217dad1badb33f664dac365de288558 -size 8071 diff --git a/sdk/Linux/2019.2/samples/Layers/CMakeLists.txt b/sdk/Linux/2019.2/samples/Layers/CMakeLists.txt deleted file mode 100644 index be9ba97..0000000 --- a/sdk/Linux/2019.2/samples/Layers/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Layers .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/Layers/main.cxx b/sdk/Linux/2019.2/samples/Layers/main.cxx deleted file mode 100644 index 951eb7b..0000000 --- a/sdk/Linux/2019.2/samples/Layers/main.cxx +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cube with Layered textures and -// with materials mapped on it's faces. -// -// This sample illustrates how to use the following Elements: -// - Normal -// - Material -// - UVs -// - Vertex Color -// - Polygon Group -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Layers.fbx" -#define BACKGROUND_IMAGE_NAME "Spotty" -#define BACKGROUND_IMAGE "spotty.jpg" -#define GEO1_IMAGE_NAME "One" -#define GEO1_IMAGE "1.jpg" -#define GEO2_IMAGE_NAME "Waffle" -#define GEO2_IMAGE "waffle.jpg" - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // 2 uvs - static Vector2 lUVs0[14] = { - { 0.0, 0.0}, - { 1.0, 0.0}, - { 0.0, 1.0}, - { 1.0, 1.0}, - { 0.0, 2.0}, - { 1.0, 2.0}, - { 0.0, 3.0}, - { 1.0, 3.0}, - { 0.0, 4.0}, - { 1.0, 4.0}, - { 2.0, 0.0}, - { 2.0, 1.0}, - {-1.0, 0.0}, - {-1.0, 1.0} - }; - - static Vector2 lUVs1[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // colors - static Vector4 lColors[8] = { - // colors used for the materials - {1.0, 1.0, 1.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}, - {1.0, 0.0, 1.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 0.0, 1.0}, - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(f);//Material index. - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // create color vertices - /* We choose to define one color per control point. The other choice would - have been to use the eByPolygonVertex mapping mode. In this second case, - the reference mode should become eIndexToDirect. - */ - FbxGeometryElementVertexColor* lVertexColorElement = lMesh->CreateElementVertexColor(); - lVertexColorElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lVertexColorElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int c=0; c<8; c++) - lVertexColorElement->GetDirectArray().Add(FbxColor(lColors[c][0]*.8, lColors[c][1]*0.8, lColors[c][2]*.8, lColors[c][3]*.8)); - - - - // create polygroups. - /* We are going to make a first group with the 4 sides. - And a second group with the top and bottom sides. - - NOTE that the only reference mode allowed is eIndex - */ - FbxGeometryElementPolygonGroup* lPolygonGroupElement = lMesh->CreateElementPolygonGroup(); - lPolygonGroupElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lPolygonGroupElement->SetReferenceMode(FbxGeometryElement::eIndex); - lPolygonGroupElement->GetIndexArray().Add(0); // front face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // right side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // back face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // left side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(1); // bottom face assigned to group 1 - lPolygonGroupElement->GetIndexArray().Add(1); // top face assigned to group 1 - - - // create the UV textures mapping. - FbxTexture* lTexture[3]; - FbxLayeredTexture::EBlendMode lBlendMode[3]; - - // On layer 0 all the faces have the same texture - FbxGeometryElementUV* lUVElement0 = lMesh->CreateElementUV( BACKGROUND_IMAGE_NAME); - FBX_ASSERT( lUVElement0 != NULL); - lUVElement0->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement0->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - int i; - for (i = 0; i<14; i++) - lUVElement0->GetDirectArray().Add(FbxVector2(lUVs0[i][0], lUVs0[i][1])); - - for (i = 0; i<24; i++) - lUVElement0->GetIndexArray().Add(uvsId[i]); - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - - // Put a different material on each polygon - FbxSurfacePhong* lMaterial[6]; - for (i = 0; i < 6; i++ ) - { - FbxString lMaterialName = "material"; - lMaterialName += i; - - lMaterial[i] = FbxSurfacePhong::Create(pScene,lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial[i]->Emissive.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->Ambient.Set(FbxDouble3(lColors[i][0], lColors[i][1], lColors[i][2])); - lMaterial[i]->Diffuse.Set(FbxDouble3(1.0, 1.0, 1.0)); - lMaterial[i]->Specular.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->TransparencyFactor.Set(0.0); - lMaterial[i]->Shininess.Set(0.5); - lMaterial[i]->ShadingModel.Set(FbxString("phong")); - - // add materials to the node - lNode->AddMaterial(lMaterial[i]); - } - - // Create textures and texture mappings. - lTexture[0] = CreateTexture(pScene, BACKGROUND_IMAGE_NAME, BACKGROUND_IMAGE); - - lBlendMode[0] = FbxLayeredTexture::eTranslucent; - - // create second UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV( GEO1_IMAGE_NAME); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs1[i][0], lUVs1[i][1])); - - for (i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - lTexture[1] = CreateTexture(pScene, GEO1_IMAGE_NAME, GEO1_IMAGE); - lBlendMode[1] = FbxLayeredTexture::eModulate; - - - - FbxGeometryElementUV* lUVElement2 = lMesh->CreateElementUV( GEO2_IMAGE_NAME); - FBX_ASSERT( lUVElement2 != NULL); - // we re-use the UV mapping. - *lUVElement2 = *lUVElement0; - - lTexture[2] = CreateTexture(pScene, GEO2_IMAGE_NAME, GEO2_IMAGE); - - lBlendMode[2] = FbxLayeredTexture::eModulate; - - // Because we can only connect one texture to the material propery, we need - // to use a layered texture object to connect the multiple textures created above - // we know that 5 faces of the cube will use 2 textures (lTexture[0] and lTexture[1]) - // and only one face uses the three textures. Therefore we need two layered textures. - - FbxLayeredTexture* lLayeredTexture[2]; - - // the lLayeredTexure[1] is used for the 5 faces with two textures and lLayeredTexture[0] for - // the only face that uses the three textures - lLayeredTexture[0] = FbxLayeredTexture::Create(pScene, "layeredTexture0"); - lLayeredTexture[1] = FbxLayeredTexture::Create(pScene, "layeredTexture1"); - - // the first connected texture is the bottom one! - for (i = 0; i < 3; i++) - { - lLayeredTexture[0]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[0]->SetTextureBlendMode(i, lBlendMode[i]); - if (i < 2) - { - lLayeredTexture[1]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[1]->SetTextureBlendMode(i, lBlendMode[i]); - } - } - - // connect the layered textures to the 6 materials allocated before (material[0] is the - // material connected to the face 0 of the cube so it is the one that will have lLayeredTexture[0]. - lMaterial[0]->Diffuse.ConnectSrcObject(lLayeredTexture[0]); - for (i = 1; i < 6; i++) - lMaterial[i]->Diffuse.ConnectSrcObject(lLayeredTexture[1]); - - return lNode; -} - - -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,name); - lTexture->SetFileName(filename); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - return lTexture; -} diff --git a/sdk/Linux/2019.2/samples/Layers/spotty.jpg b/sdk/Linux/2019.2/samples/Layers/spotty.jpg deleted file mode 100644 index dd038e3..0000000 --- a/sdk/Linux/2019.2/samples/Layers/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Linux/2019.2/samples/Layers/waffle.jpg b/sdk/Linux/2019.2/samples/Layers/waffle.jpg deleted file mode 100644 index d49e33b..0000000 --- a/sdk/Linux/2019.2/samples/Layers/waffle.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f7ecae4205d129fbdb98c9c82cb6f8480753bbfc9a951ad1c38dd13653bad95 -size 23416 diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx deleted file mode 100644 index 7844985..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnReader.h" - -MyOwnReader::MyOwnReader(FbxManager &pManager, int pID): -FbxReader(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ -} - -MyOwnReader::~MyOwnReader() -{ - FileClose(); -} - -void MyOwnReader::GetVersion(int& pMajor, int& pMinor, int& pRevision) - -{ - pMajor = 1; - pMinor = 0; - pRevision=0; -} - -bool MyOwnReader::FileOpen(char* pFileName) -{ - if(mFilePointer != NULL) - FileClose(); - FBXSDK_fopen(mFilePointer, pFileName, "r"); - if(mFilePointer == NULL) - return false; - return true; -} -bool MyOwnReader::FileClose() -{ - if(mFilePointer!=NULL) - fclose(mFilePointer); - return true; - -} -bool MyOwnReader::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -bool MyOwnReader::GetReadOptions(bool /*pParseFileAsNeeded*/) -{ - return true; -} - -//Read the custom file and reconstruct node hierarchy. -bool MyOwnReader::Read(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - FbxNode* lRootNode = lScene->GetRootNode(); - FbxNodeAttribute * lRootNodeAttribute = FbxNull::Create(lScene,""); - lRootNode->SetNodeAttribute(lRootNodeAttribute); - - int lSize; - char* lBuffer = NULL; - if(mFilePointer != NULL) - { - //To obtain file size - fseek (mFilePointer , 0 , SEEK_END); - lSize = ftell (mFilePointer); - rewind (mFilePointer); - - //Read file content to a string. - lBuffer = (char*) malloc (sizeof(char)*lSize + 1); - size_t lRead = fread(lBuffer, 1, lSize, mFilePointer); - lBuffer[lRead]='\0'; - FbxString lString(lBuffer); - - //Parse the string to get name and relation of Nodes. - FbxString lSubString, lChildName, lParentName; - FbxNode* lChildNode; - FbxNode* lParentNode; - FbxNodeAttribute* lChildAttribute; - int lEndTokenCount = lString.GetTokenCount("\n"); - - for (int i = 0; i < lEndTokenCount; i++) - { - lSubString = lString.GetToken(i, "\n"); - FbxString lNodeString; - lChildName = lSubString.GetToken(0, "\""); - lParentName = lSubString.GetToken(2, "\""); - - //Build node hierarchy. - if(lParentName == "RootNode") - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(mManager,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lRootNode->AddChild(lChildNode); - } - else - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(lScene,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lParentNode = lRootNode->FindChild(lParentName.Buffer()); - lParentNode->AddChild(lChildNode); - } - } - free(lBuffer); - } - lResult = true; - } - return lResult; -} diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.h b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.h deleted file mode 100644 index ebf8f73..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnReader.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_READER_H -#define MY_OWN_READER_H - -#include - -// This class is a custom reader. -// The reader provide you the ability to get file version, read options and read hierarchy from file. -class MyOwnReader : public FbxReader -{ -public: - MyOwnReader(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnReader(); - - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - virtual bool FileOpen(char* pFileName); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif /* MY_OWN_READER_H */ diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx deleted file mode 100644 index 39bace5..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriter.h" - -MyOwnWriter::MyOwnWriter(FbxManager &pManager, int pID): -FbxWriter(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ - -} - -MyOwnWriter::~MyOwnWriter() -{ - FileClose(); -} - -// Create a file stream with pFileName -bool MyOwnWriter::FileCreate(char* pFileName) -{ - if(mFilePointer != NULL) - { - FileClose(); - } - FBXSDK_fopen(mFilePointer,pFileName,"w"); - if(mFilePointer == NULL) - { - return false; - } - return true; -} - -// Close the file stream -bool MyOwnWriter::FileClose() -{ - if(mFilePointer != NULL) - { - fclose(mFilePointer); - return true; - } - return false; -} - -// Check whether the file stream is open. -bool MyOwnWriter::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -// Get the file stream options -void MyOwnWriter::GetWriteOptions() -{ -} - -// Write file with stream options -bool MyOwnWriter::Write(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - PreprocessScene(*lScene); - FBXSDK_printf("I'm in my own writer\n"); - - FbxNode* lRootNode = lScene->GetRootNode(); - PrintHierarchy(lRootNode); - - PostprocessScene(*lScene); - lResult = true; - } - return lResult; -} - -// Write out Node Hierarchy recursively -void MyOwnWriter::PrintHierarchy(FbxNode* pStartNode) -{ - FbxNode* lChildNode; - const char* lParentName = pStartNode->GetName(); - for(int i = 0; iGetChildCount(); i++) - { - lChildNode = pStartNode->GetChild(i); - const char* lChildName = lChildNode->GetName(); - FBXSDK_fprintf(mFilePointer,"%s%s%s%s%s%s%s","\"",lChildName,"\"",", parent is ","\"",lParentName,"\"\n"); - } - - int lNodeChildCount = pStartNode->GetChildCount (); - while (lNodeChildCount > 0) - { - lNodeChildCount--; - lChildNode = pStartNode->GetChild (lNodeChildCount); - PrintHierarchy(lChildNode); - } -} - -// Pre-process the scene before write it out -bool MyOwnWriter::PreprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in pre-process\n"); - return true; -} - -// Post-process the scene after write it out -bool MyOwnWriter::PostprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in post process\n"); - return true; -} diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h deleted file mode 100644 index bd45fb6..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_WRITER_H -#define MY_OWN_WRITER_H - -#include - -//This class is a custom writer. -//The writer provide you the ability to write out node hierarchy to a custom file format. -class MyOwnWriter : public FbxWriter -{ -public: - MyOwnWriter(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnWriter(); - - virtual bool FileCreate(char* pFileName) ; - virtual bool FileClose() ; - virtual bool IsFileOpen(); - virtual void GetWriteOptions() ; - virtual void PrintHierarchy(FbxNode* pStartNode); - virtual bool Write(FbxDocument* pDocument); - - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx deleted file mode 100644 index 7975ae9..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriterReader.h" - -// Create your own writer. -// And your writer will get a pPluginID and pSubID. -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& /*pExporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnWriter >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnWriter -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int /*pId*/) -{ - static const char* sExt[] = - { - "CFF", - 0 - }; - - static const char* sDesc[] = - { - "Example Custom FileFormat (*.CFF)", - 0 - }; - - switch (pRequest) - { - case FbxWriter::eInfoExtension: - return sExt; - case FbxWriter::eInfoDescriptions: - return sDesc; - case FbxWriter::eInfoVersions: - return 0; - default: - return 0; - } -} - -void FillOwnWriterIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} - - -// Creates a MyOwnReader in the Sdk Manager -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& /*pImporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnReader >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnReader -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId) -{ - switch (pRequest) - { - case FbxReader::eInfoExtension: - return GetMyOwnWriterInfo(FbxWriter::eInfoExtension, pId); - case FbxReader::eInfoDescriptions: - return GetMyOwnWriterInfo(FbxWriter::eInfoDescriptions, pId); - default: - return 0; - } -} - -void FillOwnReaderIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} diff --git a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h b/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h deleted file mode 100644 index 2902496..0000000 --- a/sdk/Linux/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h +++ /dev/null @@ -1,33 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//////////////////////////////////////////////////////////////////////////// -// This example illustrates how to create your own writer/reader, -// and this will be used in IOPluginRegistry to RegisterWriter/Reader. -//////////////////////////////////////////////////////////////////////////// - - -#ifndef MY_OWN_WRITER_PLUGIN_H -#define MY_OWN_WRITER_PLUGIN_H - -#include -#include "MyOwnWriter.h" -#include "MyOwnReader.h" - -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int pId); -void FillOwnWriterIOSettings(FbxIOSettings& pIOS); - -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId); -void FillOwnReaderIOSettings(FbxIOSettings& pIOS); - -#endif diff --git a/sdk/Linux/2019.2/samples/Normals/CMakeLists.txt b/sdk/Linux/2019.2/samples/Normals/CMakeLists.txt deleted file mode 100644 index 4833c63..0000000 --- a/sdk/Linux/2019.2/samples/Normals/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Normals .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Normals/Normals.fbx" "${FBX_BUILD_ROOT}/Normals.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/Normals/Normals.fbx b/sdk/Linux/2019.2/samples/Normals/Normals.fbx deleted file mode 100644 index 801a458..0000000 --- a/sdk/Linux/2019.2/samples/Normals/Normals.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a783718dd72e3d1acd76b6e41c950ca1f9f04743a4c7f3dd4e571169ff464d4 -size 704532 diff --git a/sdk/Linux/2019.2/samples/Normals/main.cxx b/sdk/Linux/2019.2/samples/Normals/main.cxx deleted file mode 100644 index 7b28bda..0000000 --- a/sdk/Linux/2019.2/samples/Normals/main.cxx +++ /dev/null @@ -1,296 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get normals of mesh. -// 2) get smoothing info of mesh. -// 3) compute smoothing info from normals. -// 4) convert hard/soft edges info to smoothing group info. -// -//Background knowledge: -//There are two kinds of smoothing info: -//1. Smoothing groups info which is saved by polygon. It usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. -//2. Hard/soft edges info which is saved by edge. It usually come from Maya, because Maya can set hard/soft edges. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Get normals of mesh, according to different mapping mode and reference mode. -// 6. Recursively traverse each node in the scene. -// 7. Computing smoothing info from normals or convert smoothing info -// 8. Get smoothing info of mesh, according to different mapping mode and reference mode. -// 9. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Normals.fbx" - -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute = false, bool pConvertToSmoothingGroup = false); - -//get mesh normals info -void GetNormals(FbxNode* pNode); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //get normals info, if there're mesh in the scene - GetNormals(lRootNode); - - //set me true to compute smoothing info from normals - bool lComputeFromNormals = false; - //set me true to convert hard/soft edges info to smoothing groups info - bool lConvertToSmoothingGroup = false; - //get smoothing info, if there're mesh in the scene - GetSmoothing(lSdkManager, lRootNode, lComputeFromNormals, lConvertToSmoothingGroup); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//get mesh smoothing info -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute, bool pConvertToSmoothingGroup) -{ - if(!pNode || !pSdkManager) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //if there's no smoothing info in fbx file, but you still want to get smoothing info. - //please compute smoothing info from normals. - //Another case to recompute smoothing info from normals is: - //If users edit normals manually in 3ds Max or Maya and export the scene to FBX with smoothing info, - //The smoothing info may NOT match with normals. - //the mesh called "fbx_customNormals" in Normals.fbx is the case. All edges are hard, but normals actually represent the "soft" looking. - //Generally, the normals in fbx file holds the smoothing result you'd like to get. - //If you want to get correct smoothing info(smoothing group or hard/soft edges) which match with normals, - //please drop the original smoothing info of fbx file, and recompute smoothing info from normals. - //if you want to get soft/hard edge info, please call FbxGeometryConverter::ComputeEdgeSmoothingFromNormals(). - //if you want to get smoothing group info, please get soft/hard edge info first by ComputeEdgeSmoothingFromNormals() - //And then call FbxGeometryConverter::ComputePolygonSmoothingFromEdgeSmoothing(). - if(pCompute) - { - FbxGeometryConverter lGeometryConverter(pSdkManager); - lGeometryConverter.ComputeEdgeSmoothingFromNormals(lMesh); - //convert soft/hard edge info to smoothing group info - if(pConvertToSmoothingGroup) - lGeometryConverter.ComputePolygonSmoothingFromEdgeSmoothing(lMesh); - } - - //if there is smoothing groups info in your fbx file, but you want to get hard/soft edges info - //please use following code: - //FbxGeometryConverter lGeometryConverter(lSdkManager); - //lGeometryConverter.ComputeEdgeSmoothingFromPolygonSmoothing(lMesh); - - //get smoothing info - FbxGeometryElementSmoothing* lSmoothingElement = lMesh->GetElementSmoothing(); - if(lSmoothingElement) - { - //mapping mode is by edge. The mesh usually come from Maya, because Maya can set hard/soft edges. - //we can get smoothing info(which edges are soft, which edges are hard) by retrieving each edge. - if( lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByEdge ) - { - //Let's get smoothing of each edge, since the mapping mode of smoothing element is by edge - for(int lEdgeIndex = 0; lEdgeIndex < lMesh->GetMeshEdgeCount(); lEdgeIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as edge index. - //get smoothing by the index of edge - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lEdgeIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lEdgeIndex); - - //Got smoothing of each vertex. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("hard/soft value for edge[%d]: %d \n", lEdgeIndex, lSmoothingFlag); - //add your custom code here, to output smoothing or get them into a list, such as KArrayTemplate - //. . . - }//end for lEdgeIndex - }//end eByEdge - //mapping mode is by polygon. The mesh usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. - //we can get smoothing info(smoothing group ID for each polygon) by retrieving each polygon. - else if(lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - //Let's get smoothing of each polygon, since the mapping mode of smoothing element is by polygon. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as polygon index. - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lPolygonIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lPolygonIndex); - - //Got smoothing of each polygon. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("smoothing group ID for polygon[%d]: %d \n", lPolygonIndex, lSmoothingFlag); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lSmoothingElement - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetSmoothing(pSdkManager, pNode->GetChild(i), pCompute, pConvertToSmoothingGroup); - } -} - -//get mesh normals info -void GetNormals(FbxNode* pNode) -{ - if(!pNode) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //get the normal element - FbxGeometryElementNormal* lNormalElement = lMesh->GetElementNormal(); - if(lNormalElement) - { - //mapping mode is by control points. The mesh should be smooth and soft. - //we can get normals by retrieving each control point - if( lNormalElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - //Let's get normals of each vertex, since the mapping mode of normal element is by control point - for(int lVertexIndex = 0; lVertexIndex < lMesh->GetControlPointsCount(); lVertexIndex++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as vertex index. - //get normals by the index of control vertex - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lVertexIndex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lVertexIndex); - - //Got normals of each vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for vertex[%d]: %f %f %f %f \n", lVertexIndex, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - }//end for lVertexIndex - }//end eByControlPoint - //mapping mode is by polygon-vertex. - //we can get normals by retrieving polygon-vertex. - else if(lNormalElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lIndexByPolygonVertex = 0; - //Let's get normals of each polygon, since the mapping mode of normal element is by polygon-vertex. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - //get polygon size, you know how many vertices in current polygon. - int lPolygonSize = lMesh->GetPolygonSize(lPolygonIndex); - //retrieve each vertex of current polygon. - for(int i = 0; i < lPolygonSize; i++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as lIndexByPolygonVertex. - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lIndexByPolygonVertex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndexByPolygonVertex); - - //Got normals of each polygon-vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for polygon[%d]vertex[%d]: %f %f %f %f \n", - lPolygonIndex, i, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - lIndexByPolygonVertex++; - }//end for i //lPolygonSize - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lNormalElement - - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetNormals(pNode->GetChild(i)); - } -} - diff --git a/sdk/Linux/2019.2/samples/Pivot/CMakeLists.txt b/sdk/Linux/2019.2/samples/Pivot/CMakeLists.txt deleted file mode 100644 index 1032a99..0000000 --- a/sdk/Linux/2019.2/samples/Pivot/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Pivot .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx - ../Common/AnimationUtility.h - ../Common/AnimationUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/Pivot/main.cxx b/sdk/Linux/2019.2/samples/Pivot/main.cxx deleted file mode 100644 index 6753549..0000000 --- a/sdk/Linux/2019.2/samples/Pivot/main.cxx +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates how to get/set pivots, how to convert pivots -// and how to query local and global transform. -// -//Steps: -// 1. Initialize FBX SDK object. -// 2. Create default animation stack and animation layer. -// 3. Create a pyramid mesh and attach it to a node. -// 4. Set pivots. -// 5. Add animation to the pyramid node. -// 6. Evaluate the local and global transform. -// 7. Save the scene before pivot converting. -// 8. Convert the animation to reset pivots. -// 9. Save the scene after pivot converting. -// -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "../Common/AnimationUtility.h" -#include "../Common/GeometryUtility.h" - -const char * SAMPLE_FILENAME_BEFORE_CONVECTION = "pivot_before_convection.fbx"; -const char * SAMPLE_FILENAME_AFTER_CONVECTION = "pivot_after_convection.fbx"; - -const char * PYRAMID_NAME = "Pyramid"; - -const double KEY_TIME[] = {0.0, 0.5, 1.0}; -const float KEY_VALUE[] = {0.0, 90.0, 180.0}; - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create a animation stack and layer for the scene - FbxAnimStack * lAnimStack; - FbxAnimLayer * lAnimLayer = CreateDefaultAnimStackAndLayer(lScene, lAnimStack); - - // Create a pyramid mesh whose bottom width is 4 and height is 4. - // Attach this pyramid to a node and as a child of the root node of the scene - FbxNode * lPyramidNode = CreatePyramid(lScene, PYRAMID_NAME, 4, 4); - - // Enable pivot - lPyramidNode->SetRotationActive(true); - // Set the rotation pivot at the center of the pyramid - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 2, 0)); - // Add a post rotation for the pyramid - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, -90)); - - // Animate the Y channel of the local rotation - FbxAnimCurve * lAnimCurve = lPyramidNode->LclRotation.GetCurve(lAnimLayer, "Y", true); - if (lAnimCurve) - { - const int lKeyCount = sizeof(KEY_TIME)/sizeof(double); - for (int lKeyIndex = 0; lKeyIndex < lKeyCount; ++lKeyIndex) - { - FbxTime lTime; - FbxAnimCurveKey lKey; - lTime.SetSecondDouble(KEY_TIME[lKeyIndex]); - lKey.Set(lTime, KEY_VALUE[lKeyIndex]); - lAnimCurve->KeyAdd(lTime, lKey); - } - } - - // Query the local transform and global transform of the pyramid node at 0.5 second - FbxTime lTime; - lTime.SetSecondDouble(0.5); - FbxAMatrix lLocalTransform = lPyramidNode->EvaluateLocalTransform(lTime); - FbxAMatrix lGlobalTransform = lPyramidNode->EvaluateGlobalTransform(lTime); - - // Save the scene before pivot converting - bool lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_CONVECTION); - - // Set the target of pivot converting - // Reset the rotation pivot and post rotation, and maintain the animation - lPyramidNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - lPyramidNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - lPyramidNode->SetPostRotation(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetRotationPivot(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - - // Convert the animation between source pivot set and destination pivot set with a frame rate of 30 per second - lScene->GetRootNode()->ConvertPivotAnimationRecursive(lAnimStack, FbxNode::eDestinationPivot, 30.0); - - // Copy the rotation pivot and post rotation from destination set to source set in order to save them in file - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - - // Save the scene after pivot converting - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_CONVECTION); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} diff --git a/sdk/Linux/2019.2/samples/ProceduralTexture/CMakeLists.txt b/sdk/Linux/2019.2/samples/ProceduralTexture/CMakeLists.txt deleted file mode 100644 index fc5e06f..0000000 --- a/sdk/Linux/2019.2/samples/ProceduralTexture/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ProceduralTexture .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ProceduralTexture/a_texture.jpg" "${FBX_BUILD_ROOT}/${CMAKE_CFG_INTDIR}/a_texture.jpg" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/ProceduralTexture/a_texture.jpg b/sdk/Linux/2019.2/samples/ProceduralTexture/a_texture.jpg deleted file mode 100644 index f162280..0000000 --- a/sdk/Linux/2019.2/samples/ProceduralTexture/a_texture.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Linux/2019.2/samples/ProceduralTexture/main.cxx b/sdk/Linux/2019.2/samples/ProceduralTexture/main.cxx deleted file mode 100644 index f7cfb0e..0000000 --- a/sdk/Linux/2019.2/samples/ProceduralTexture/main.cxx +++ /dev/null @@ -1,385 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a plane with a procedural texture applied. -// -// The example illustrates how to: -// 1) Create a procedural texture -// 2) Set the blob property of a procedural texture -// 3) Get the blob property of a procedural texture and dump it on disk -// -///////////////////////////////////////////////////////////////////////// - -#include -#include -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ProceduralTexture.fbx" -#define TEXTURE_FILENAME "a_texture.jpg" -#define FILENAME_PROP "Filename" - -// Function prototypes. -bool CreateSceneAndSaveFile(int argc, char** argv); -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv); -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene); -bool CreateScene(FbxScene* pScene); -FbxNode* CreatePlane(FbxScene* pScene, const char* pName); -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName); -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName); -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode); -void MapProceduralTexure(FbxProceduralTexture* pProcTex, FbxNode* pNode); - -int main(int argc, char** argv) -{ - bool lResult; - - lResult = CreateSceneAndSaveFile(argc, argv); - if(lResult == false) - { - return 1; - } - - lResult = ReadFileAndDumpProceduralTextureBlobOnDisk(argc, argv); - if(lResult == false) - { - return 1; - } - - return 0; -} - -bool CreateSceneAndSaveFile(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Save the scene. - // The example can take an output file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Saving the file...\n"); - lResult = SaveScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an input file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Reading the FBX file...\n"); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Create a new file for each procedural texture found in the file. - lResult = DumpProceduralTextureBlobOnDisk(lScene); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while dumping procedural texture blobs on disk...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene) -{ - FBXSDK_printf("Writing the blob on disk...\n"); - // Collect all the procedural textures proxy objects in scene - int lNbProcTex = pScene->GetSrcObjectCount(); - - if (!lNbProcTex) - { - return true; - } - - bool lWroteBlob = false; // Bool: Wrote at least one blob on disk - - // Directory for blob extraction - FbxString lDirPath = FbxGetCurrentWorkPath() + "/Blobs/"; - - for(int lIndex = 0; lIndex < lNbProcTex; lIndex++) - { - FbxProceduralTexture* lProcTex = pScene->GetSrcObject(lIndex); - if(!lProcTex) - { - continue; - } - - FbxProperty lFilenameProp = lProcTex->RootProperty.Find(FILENAME_PROP); - if (!lFilenameProp.IsValid()) - { - continue; - } - - // Read binary blob - void* lBlobBegin = NULL; - size_t lBlobSize = 0; - FbxBlob lBinaryBlob = lProcTex->GetBlob(); - lBlobSize = lBinaryBlob.Size(); - lBlobBegin = const_cast(lBinaryBlob.Access()); - - // Get file name to dump the blob to. - FbxString lFilename = lFilenameProp.Get(); - FbxString lFilePath = lDirPath + FbxPathUtils::GetFileName(lFilename, false) + lIndex + "." + FbxPathUtils::GetExtensionName(lFilename); - - bool lIsWritable = FbxPathUtils::Create(FbxPathUtils::GetFolderName(lFilePath)); - if (lIsWritable) - { - std::ofstream lDataStreamOut(lFilePath.Buffer(), std::ofstream::binary); - lDataStreamOut.write((const char *)lBlobBegin, lBlobSize); - lDataStreamOut.close(); - // So now we wrote the file! - lWroteBlob = true; - FBXSDK_printf("Blob is written on disk! File: %s\n", lFilePath.Buffer()); - } - } - - return lWroteBlob; -} - -bool CreateScene(FbxScene* pScene) -{ - FBXSDK_printf("Creating the scene...\n"); - FbxNode* lPlane = CreatePlane(pScene, "Plane"); - - FbxSurfacePhong* lPhong = CreatePhongMaterial(pScene, "Phong"); - MapPhong(lPhong, lPlane); - FbxProceduralTexture* lProcTex = CreateProceduralTexture(pScene, "ProcTex"); - MapProceduralTexure(lProcTex, lPlane); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPlane); - - return true; -} - -// Create a plane. -FbxNode* CreatePlane(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lNormal(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - // Set the normals. - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMesh->CreateElementNormal();; - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the actual normal value for all 4 control points. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygon - lMesh->BeginPolygon(-1, -1, false); - for (int j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[j]); - //Now we have to update the index array of the UVs for diffuse - lUVDiffuseElement->GetIndexArray().SetAt(j, j); - } - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -// Create a procedural texture. -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName) -{ - FbxProceduralTexture* lProceduralTexture = FbxProceduralTexture::Create(pScene, pName); - - // For this example we simply dump the binary content of a jpg to the - // procedural texture's blob property. - // In the general case, dump whatever information needed for the procedural - // texture to the blob property. - - FbxString lFilename = TEXTURE_FILENAME; - - //check whether the file is readable - bool lIsReadable = FbxFileUtils::Exist(lFilename); - - if (lIsReadable) - { - // create binary blob from the texture file - FbxBlob lBinaryBlob; - std::ifstream lDataStreamIn(lFilename, std::ifstream::binary); - char* lBlobBegin = (char*)malloc(4096); - char* lBlobEnd = lBlobBegin; - long long lBlobSize = 0; - long long lBlobPointerSize = 4096; - std::streamsize lNbRead = 0; - while(!lDataStreamIn.eof()) - { - lBlobEnd = lBlobBegin + lBlobSize; - lDataStreamIn.read(lBlobEnd, 4096); - lNbRead = lDataStreamIn.gcount(); - lBlobPointerSize += 4096; - lBlobBegin = (char *)realloc(lBlobBegin, size_t(lBlobPointerSize)); - lBlobSize += lNbRead; - } - lDataStreamIn.close(); - lBinaryBlob.Assign(lBlobBegin, (int)lBlobSize); - free(lBlobBegin); - - lProceduralTexture->SetBlob(lBinaryBlob); - } - - // Add a property to retain file name - FbxProperty lFilenameProp = FbxProperty::Create(lProceduralTexture, FbxStringDT, FILENAME_PROP); - if (lFilenameProp.IsValid()) - { - lFilenameProp.Set(lFilename); - } - - return lProceduralTexture; -} - - -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName) -{ - FbxSurfacePhong* lPhong = FbxSurfacePhong::Create(pScene, pName); - - return lPhong; -} - -// Map procedural texture over plane. -void MapProceduralTexure(FbxProceduralTexture* pProceduralTexture, FbxNode* pNode) -{ - // The note shading mode has to be set to FbxNode::eTextureShading for the texture to be displayed. - pNode->SetShadingMode(FbxNode::eTextureShading); - - // we have to connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNode->GetSrcObject(0); - if (lMaterial) - { - lMaterial->Diffuse.ConnectSrcObject(pProceduralTexture); - } - -} - -// Map material over mesh. -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode) -{ - // Create MaterialElement in the mesh - FbxMesh* lMesh = pNode->GetMesh(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lMesh->CreateElementMaterial(); - - // The material is mapped to the whole mesh - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNode->AddMaterial(pPhong); -} - diff --git a/sdk/Linux/2019.2/samples/README.txt b/sdk/Linux/2019.2/samples/README.txt deleted file mode 100644 index 2de14ab..0000000 --- a/sdk/Linux/2019.2/samples/README.txt +++ /dev/null @@ -1,67 +0,0 @@ -================================================================================ - - FBX SDK SAMPLES README - -Welcome to the FBX SDK samples readme! This document explains how to call CMake -to generate the appropriate build files. - -Sincerely, -the Autodesk FBX team - -================================================================================ - -To generate the build files you need to call CMake with the desired generator -and the following options (omitting an option will set it to it's default -value as shown below between [] or explicitly said: - -FBX_SHARED : set at command line with -DFBX_SHARED=1 to enable the sample to - link with the FBX SDK dynamic library - -FBX_STATIC_RTL : set at command line with -DFBX_STATIC_RTL=1 to use the static - MSVCRT (/MT). By default will use the dynamic MSVCRT (/MD). - This option is only meaningful on the Windows platform. - -FBX_VARIANT : set at command line with -DFBX_VARIANT=[debug] or release. - This option is only meaningful on Unix/MacOS platforms. - On Windows, the generated solutions will contain the - Debug, Release and RelWithDebInfo targets. - -FBX_ARCH : set at command line with -DFBX_ARCH=[x64] or x86. - This option is only meaningful with the Make generator. - With the Visual Studio generators, this value is automatically - deduced based on the specified generator. - - -Although you can run cmake in the sample directory, to avoid mixing build files and source files -in the same folder, we strongly suggest you create a separate build folder and run cmake from there. - -Examples: -========== - -1) Building the ViewScene sample on Windows using Visual Studio 2015 (and the default settings): - - 1. cd samples\ViewScene - 2. mkdir build - 3. cd build - 4. cmake -G "Visual Studio 14 Win64" .. - - 5. Now that the ViewScene.sln and all the other related files have been generated in the samples\ViewScene\build, - load the solution in Visual Studio and build it. The build result will be written in the bin directory at the root - level of the FBX SDK installation. - -If you want to re-generate the solution with different settings, it is preferable that you first delete the content of -the build folder to avoid cmake cache incompatibilities. - -2) Building the ViewScene sample on Windows using Visual Studio 2015 32bits /MT - - cmake -G "Visual Studio 14" -DFBX_STATIC_RTL=1 .. - -3) Building the ViewScene sample on Windows using Visual Studio 2015 64 bits DLL - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 .. - -4) Wrong configuration, will display a warning and generates a DLL version - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 -DFBX_STATIC_RTL=1 .. - Both FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only. - diff --git a/sdk/Linux/2019.2/samples/StereoCamera/CMakeLists.txt b/sdk/Linux/2019.2/samples/StereoCamera/CMakeLists.txt deleted file mode 100644 index 441445e..0000000 --- a/sdk/Linux/2019.2/samples/StereoCamera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(StereoCamera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/StereoCamera/StereoCamera.fbx" "${FBX_BUILD_ROOT}/StereoCamera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/StereoCamera/StereoCamera.fbx b/sdk/Linux/2019.2/samples/StereoCamera/StereoCamera.fbx deleted file mode 100644 index a11ebff..0000000 --- a/sdk/Linux/2019.2/samples/StereoCamera/StereoCamera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8482fd83f99669599757e7bd926f8d6000330e86493f1a6c34824f514c1e0c5 -size 22863 diff --git a/sdk/Linux/2019.2/samples/StereoCamera/main.cxx b/sdk/Linux/2019.2/samples/StereoCamera/main.cxx deleted file mode 100644 index 50b4de5..0000000 --- a/sdk/Linux/2019.2/samples/StereoCamera/main.cxx +++ /dev/null @@ -1,243 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get a stereo camera from a scene -// 2) evaluate left/right camera -// 3) get local/global matrix of left and right camera -// 4) create stereo camera set -// 5) connect left/right and stereo -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get stereo camera by from node attribute type. -// 6. Get left and right camera. -// 7. Evaluate left/right camera. -// 8. Get local/global matrix of left and right camera. -// 9. Create stereo camera set after extracting stereo camera. -// 10. Connect left/right and stereo. -// 11. Get the updated values via connections. -// 12. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "StereoCamera.fbx" - -void PrintMatrix(const FbxAMatrix& pMatrix); - -void GetStereoCameraInfo(FbxNode* pNode); - -void CreateStereoCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //This function illustrates how to get stereo camera info from scene. - GetStereoCameraInfo(lRootNode); - - //create your own stereo camera set - CreateStereoCamera(lScene); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get stereo camera info from scene. -void GetStereoCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //detect stereo camera by node attribute type - if(pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCameraStereo) - { - //get stereo camera - FbxCameraStereo* lStereoCamera = (FbxCameraStereo*)pNode->GetNodeAttribute(); - - //once we get the FbxCameraStereo, its connection has already been done. - //it's easy to get its left and right camera - //get left camera - FbxCamera* lLeftCamera = lStereoCamera->GetLeftCamera(); - FbxString lLeftName = lLeftCamera->GetName(); - FBXSDK_printf("left camera: %s\n", lLeftName.Buffer()); - //get right camera - FbxCamera* lRightCamera = lStereoCamera->GetRightCamera(); - FbxString lRightName = lRightCamera->GetName(); - FBXSDK_printf("right camera: %s\n", lRightName.Buffer()); - - //FBX SDK support reevaluation functionality - //reevaluate left/right camera - double lLeftOffsetX = lStereoCamera->ReevaluateLeftCameraFilmOffsetX(); - FBXSDK_printf("reevaluated left camera film offset: %f\n", lLeftOffsetX); - double lLeftFbxOffsetX = lLeftCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX left camera film offset: %f\n", lLeftFbxOffsetX); - double lRightOffsetX = lStereoCamera->ReevaluateRightCameraFilmOffsetX(); - FBXSDK_printf("reevaluated right camera film offset: %f\n", lRightOffsetX); - double lRightFbxOffsetX = lRightCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX right camera film offset: %f\n", lRightFbxOffsetX); - - //get local/global matrix of left and right camera - //Then you can get their Translate, Rotate and Scale info. - FbxAMatrix lLeft_localMatrix = lStereoCamera->GetLeftCameraLocalMatrix(); - FbxAMatrix lRight_localMatrix = lStereoCamera->GetRightCameraLocalMatrix(); - FbxAMatrix lLeft_globalMatrix = lStereoCamera->GetLeftCameraGlobalMatrix(); - FbxAMatrix lRight_globalMatrix = lStereoCamera->GetRightCameraGlobalMatrix(); - - //print the local and global TRS for left camera - FBXSDK_printf("===local TRS of left camera===\n"); - PrintMatrix(lLeft_localMatrix); - FBXSDK_printf("===global TRS of left camera===\n"); - PrintMatrix(lLeft_globalMatrix); - - //print the local and global TRS for right camera - FBXSDK_printf("===local TRS of right camera===\n"); - PrintMatrix(lRight_localMatrix); - FBXSDK_printf("===global TRS of right camera===\n"); - PrintMatrix(lRight_globalMatrix); - }// end if pNode->GetNodeAttribute() - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetStereoCameraInfo(pNode->GetChild(i)); - } -} - -//print the TRS for the given matrix -void PrintMatrix(const FbxAMatrix& pMatrix) -{ - if( !gVerbose ) return; - - //print the TRS - FBXSDK_printf(" T : %f %f %f %f\n", - pMatrix.GetT()[0], - pMatrix.GetT()[1], - pMatrix.GetT()[2], - pMatrix.GetT()[3] ); - - FBXSDK_printf(" R : %f %f %f %f\n", - pMatrix.GetR()[0], - pMatrix.GetR()[1], - pMatrix.GetR()[2], - pMatrix.GetR()[3] ); - - FBXSDK_printf(" S : %f %f %f %f\n", - pMatrix.GetS()[0], - pMatrix.GetS()[1], - pMatrix.GetS()[2], - pMatrix.GetS()[3] ); -} - -//This function illustrates how to create and connect stereo camera. -void CreateStereoCamera(FbxScene* pScene) -{ - if(!pScene) - return; - - //create a fbx node for stereo camera - FbxNode* lMyStereoNode = FbxNode::Create(pScene,"myStereoNode"); - //create a cameraStereo, it's a node attribute of stereo camera node. - FbxCameraStereo* lMyStereoCamera = FbxCameraStereo::Create(pScene,"myStereoCamera"); - //set stereoCamera as a node attribute of the FBX node. - lMyStereoNode->SetNodeAttribute (lMyStereoCamera); - //create a camera(node attribute), it will be left camera of stereo - FbxCamera* lLeftCamera = FbxCamera::Create(pScene, "leftCamera"); - //create a camera(node attribute), it will be right camera of stereo - FbxCamera* lRightCamera = FbxCamera::Create(pScene, "rightCamera"); - //add left camera to stereo - lMyStereoCamera->SetLeftCamera(lLeftCamera); - //add right camera to stereo - lMyStereoCamera->SetRightCamera(lRightCamera); - - //During FBXSDK reevaluating, if ConnectProperties() is called, - //left and right camera property will be connected to stereo camera. - //It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - //FilmHeight, FilmSqueezeRatio] to stereo camera. - //If these properties of stereo camera have been modified by SDK, - //FBX will not automatically sync and update the corresponding properties of left/right camera. - //However, you could get the newest property of left/right camera since ConnectProperties() is called. - //To get the newest property value, please use lLeft_Camera->FocalLength.GetSrcProperty().Get(&lNewValue, ...); - //Then you can update your left/right camera properties, for example, lLeftCamera->FocalLength.Set(lNewValue); - lMyStereoCamera->ConnectProperties(); - - //test the connection - //get the focal length value of left camera. - double lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - double lFocalLength_Left_src = 0; - //get source property of left focal length, it should be stereo focal length. - FbxProperty lLeftSrcLengthProperty = lLeftCamera->FocalLength.GetSrcProperty(); - if(lLeftSrcLengthProperty.IsValid()) - { - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("Initialized FocalLength of left camera source: %f\n", lFocalLength_Left_src); - //modify the FocalLength of stereo camera - lMyStereoCamera->FocalLength.Set(3.333); - //get the FocalLength of left camera. It's 34.89 now. - //But it should be updated to 3.33 since stereo FocalLength has changed. - //FBX doesn't sync it from stereo camera - lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - //get the newest value from connected property. - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("FocalLength of left camera source: %f\n", lFocalLength_Left_src); - } -} - - diff --git a/sdk/Linux/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx b/sdk/Linux/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx deleted file mode 100644 index a63f31e..0000000 --- a/sdk/Linux/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31d94ad7a973ec84133ede3ab562703d09e6cbce7bd0f634dfc2f6a30685972d -size 147917 diff --git a/sdk/Linux/2019.2/samples/SwitchBinding/CMakeLists.txt b/sdk/Linux/2019.2/samples/SwitchBinding/CMakeLists.txt deleted file mode 100644 index c95dadc..0000000 --- a/sdk/Linux/2019.2/samples/SwitchBinding/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(SwitchBinding .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/SwitchBinding/Bind_Before_Switch.fbx" "${FBX_BUILD_ROOT}/Bind_Before_Switch.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Linux/2019.2/samples/SwitchBinding/main.cxx b/sdk/Linux/2019.2/samples/SwitchBinding/main.cxx deleted file mode 100644 index 5fee17b..0000000 --- a/sdk/Linux/2019.2/samples/SwitchBinding/main.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// Switch binding from one cylinder to the other one. -// Please check out the animation to see difference. -// Illustrates how to: -// 1. Get skin deformer and cluster; -// 2. Detach skin; -// 3. Bind and create corresponding bindpose; -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access the two cylinders -// 4. Get the skin deformer and all clusters from the first cylinder -// 5. Remove clusters, skin deformer and bind pose from the first cylinder -// 6. Move joints to proper position for cylinder2 -// 7. Update clusters, skin deformer and create a bind pose for the second cylinder -// 8. Save the scene to output file -// 9. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -const char * SAMPLE_FILENAME_BEFORE_SWITCH = "Bind_Before_Switch.fbx"; -const char * SAMPLE_FILENAME_AFTER_SWITCH = "Bind_After_Switch.fbx"; - -void SwitchBinding( FbxScene* pScene ); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_SWITCH); - if( lResult ) - { - //Switch binding from the first cylinder to the second one. - SwitchBinding( lScene ); - - //Save the scene after switching binding. - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_SWITCH); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void SwitchBinding(FbxScene * pScene) -{ - //Get the two cylinders. - FbxMesh* lCylinder01 = pScene->GetSrcObject(0); - FbxMesh* lCylinder02 = pScene->GetSrcObject(1); - - //Get the skin deformer, which will be switched from the first cylinder to the the second one. - FbxSkin* lSkin = (FbxSkin *) lCylinder01->GetDeformer(0, FbxDeformer::eSkin); - - // Get all clusters through the skin deformer, later they will be re-used for the second cylinder. - FbxArray lClusterArray; - for (int lClusterIndex = 0; lClusterIndex < lSkin->GetClusterCount(); ++lClusterIndex) - { - FbxCluster* lCluster=lSkin->GetCluster(lClusterIndex); - lClusterArray.Add(lCluster); - } - - // Detach the first cylinder. - // Remove clusters from the skin deformer. - for (int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); ++lClusterIndex) - lSkin->RemoveCluster(lClusterArray[lClusterIndex]); - // Remove the skin deformer from the first cylinder. - // Currently, the only deformer connected to lCylinder01 is the skin deformer. - lCylinder01->RemoveDeformer(0); - // Remove the corresponding bindpose. - pScene->RemovePose(0) ; - - // Bind the second cylinder and create the corresponding bind pose. - // Move the joints into the second cylinder. Only need to move the root joint. - lClusterArray[0]->GetLink()->LclTranslation.Set(FbxDouble3 ( -11.0322688253132,5.3883395780739,0) ); - - // Prepare an array to collect nodes for bind pose, which is combined of the geometry and joints. - FbxArray lPoseNodeArray; - - // Add the second cylinder to node array of bind pose. - lPoseNodeArray.Add(lCylinder02->GetNode()); - - // Set proper transformation for each cluster and add them to the skin deformer. - // ThansformMatrix is the global transformation of the mesh when the binding happens. - // TransformLinkMatrix is the global transformation of the joint(Link) when the binding happens. - FbxAMatrix lTransformMatrix, lTransformLinkMatrix; - lTransformMatrix = lCylinder02->GetNode()->EvaluateGlobalTransform(); - for(int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); lClusterIndex++) - { - // All joints have the same TransformMatrix. - lClusterArray[lClusterIndex]->SetTransformMatrix(lTransformMatrix); - - // Compute global transformation of each joint and set it as TransformLinkMatrix. - lTransformLinkMatrix = lClusterArray[lClusterIndex]->GetLink()->EvaluateGlobalTransform(); - lClusterArray[lClusterIndex]->SetTransformLinkMatrix(lTransformLinkMatrix); - - // Add cluster to the skin deformer. - lSkin->AddCluster(lClusterArray[lClusterIndex]); - - // Add each joint(Link) to node array of bindpose. - lPoseNodeArray.Add(lClusterArray[lClusterIndex]->GetLink()); - } - - // Add the skin deformer to the second cylinder. - lCylinder02->AddDeformer(lSkin); - - // Create a pose by the node array and set it as bindpose. - FbxPose* lPose = FbxPose::Create(pScene,lCylinder02->GetNode()->GetName()); - lPose->SetIsBindPose(true); - for(int lPoseNodeIndex = 0; lPoseNodeIndexEvaluateGlobalTransform(); - lPose->Add(lPoseNodeArray[lPoseNodeIndex], lBindMatrix); - } - - // Add the bindpose to the scene. - pScene->AddPose(lPose); -} diff --git a/sdk/Linux/2019.2/samples/Transformations/CMakeLists.txt b/sdk/Linux/2019.2/samples/Transformations/CMakeLists.txt deleted file mode 100644 index 449f28f..0000000 --- a/sdk/Linux/2019.2/samples/Transformations/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Transformations .) -SET(FBX_TARGET_SOURCE - main.cxx - DisplayCommon.h - DisplayCommon.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Transformations/JointHierarchy.fbx" "${FBX_BUILD_ROOT}/JointHierarchy.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.cxx b/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.cxx deleted file mode 100644 index 684a602..0000000 --- a/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.cxx +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.h b/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.h deleted file mode 100644 index 9be4903..0000000 --- a/sdk/Linux/2019.2/samples/Transformations/DisplayCommon.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Linux/2019.2/samples/Transformations/JointHierarchy.fbx b/sdk/Linux/2019.2/samples/Transformations/JointHierarchy.fbx deleted file mode 100644 index 1efc604..0000000 --- a/sdk/Linux/2019.2/samples/Transformations/JointHierarchy.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bb146cf8c339c49489e4c47bd9191abe45e2ddd77d2731f0d347ad3d8420642 -size 13019 diff --git a/sdk/Linux/2019.2/samples/Transformations/main.cxx b/sdk/Linux/2019.2/samples/Transformations/main.cxx deleted file mode 100644 index bc59c9a..0000000 --- a/sdk/Linux/2019.2/samples/Transformations/main.cxx +++ /dev/null @@ -1,331 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// Illustrates the followings: -// 1. How to use FbxAMatrix in transformation calculation. -// 2. What EvaluateGlobalTransform() and EvaluateLocalTransform() actually do. -// 3. How to get global and local transform of each joint in a joint hierarchy. -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene. -// 2. Load the input file to scene. -// 3. Calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). -// 4. Alternative way to calculate global and local transform from scratch by node's properties. -// 5. Compare, the above two results should be the same. -// 6. Display the joint's global and local transformation. -// 7. Destroy the FBX SDK Manager and FBX Scene. -// -// Notice: This sample does not take rotation order into consideration. It only shows the transformation -// calculation with XYZ rotation order. -//////////////////////////////////////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "DisplayCommon.h" - -const char * SAMPLE_FILENAME = "JointHierarchy.fbx"; - -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode); -void CompareTransformations( FbxNode* pNode, FbxScene* pScene ); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - CompareTransformations( lScene->GetRootNode(), lScene ); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void CompareTransformations(FbxNode* pNode, FbxScene * pScene) -{ - if( pNode != pScene->GetRootNode()) - { - DisplayString(pNode->GetName()); - FbxNode* lParentNode = pNode->GetParent(); - - // The first way: calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). - FbxAMatrix lGlobal, lLocal; - lGlobal= pNode->EvaluateGlobalTransform(); - lLocal = pNode->EvaluateLocalTransform(); - - // The second way: calculate global and local transform from scratch by the node's properties. - FbxAMatrix lParentTransform,lLocalTransform, lGlobalTransform; - lGlobalTransform = CalculateGlobalTransform(pNode); - if(lParentNode) - { - // Get parent global transform. - lParentTransform = CalculateGlobalTransform(lParentNode); - // Calculate local transform according to: LocalTransform = ParentGlobalInverse * GlobalTransform. - lLocalTransform = lParentTransform.Inverse() * lGlobalTransform; - } - else - lLocalTransform = lGlobalTransform; - - // Compare, the results are the same. Display the global and local transformation of each joint. - if(lGlobal == lGlobalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("GlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two global transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - - if(lLocal == lLocalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("LocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two local transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - } - - int lChildCount = pNode->GetChildCount(); - for( int i = 0; iGetChild(i), pScene); - } -} - -/* -Terminology: -Suffix "M" means this is a matrix, suffix "V" means it is a vector. -T is translation. -R is rotation. -S is scaling. -SH is shear. -GlobalRM(x) means the Global Rotation Matrix of node "x". -GlobalRM(P(x)) means the Global Rotation Matrix of the parent node of node "x". -All other transforms are described in the similar way. - -The algorithm description: -To calculate global transform of a node x according to different InheritType, -we need to calculate GlobalTM(x) and [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))] separately. -GlobalM(x) = GlobalTM(x) * [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))]; - -InhereitType = RrSs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalSM(x); - -InhereitType = RSrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalRM(x) * LocalSM(x); - -InhereitType = Rrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * LocalSM(x); - -LocalM(x)= TM(x) * RoffsetM(x) * RpivotM(x) * RpreM(x) * RM(x) * RpostM(x) * RpivotM(x)^-1 * SoffsetM(x) *SpivotM(x) * SM(x) * SpivotM(x)^-1 -LocalTWithAllPivotAndOffsetInformationV(x) = Local(x).GetT(); -GlobalTV(x) = GlobalM(P(x)) * LocalTWithAllPivotAndOffsetInformationV(x); - -Notice: FBX SDK does not support shear yet, so all local transform won't have shear. -However, global transform might bring in shear by combine the global transform of node in higher hierarchy. -For example, if you scale the parent by a non-uniform scale and then rotate the child node, then a shear will -be generated on the child node's global transform. -In this case, we always compensates shear and store it in the scale matrix too according to following formula: -Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix -*/ -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode) -{ - FbxAMatrix lTranlationM, lScalingM, lScalingPivotM, lScalingOffsetM, lRotationOffsetM, lRotationPivotM, \ - lPreRotationM, lRotationM, lPostRotationM, lTransform; - - FbxAMatrix lParentGX, lGlobalT, lGlobalRS; - - if(!pNode) - { - lTransform.SetIdentity(); - return lTransform; - } - - // Construct translation matrix - FbxVector4 lTranslation = pNode->LclTranslation.Get(); - lTranlationM.SetT(lTranslation); - - // Construct rotation matrices - FbxVector4 lRotation = pNode->LclRotation.Get(); - FbxVector4 lPreRotation = pNode->PreRotation.Get(); - FbxVector4 lPostRotation = pNode->PostRotation.Get(); - lRotationM.SetR(lRotation); - lPreRotationM.SetR(lPreRotation); - lPostRotationM.SetR(lPostRotation); - - // Construct scaling matrix - FbxVector4 lScaling = pNode->LclScaling.Get(); - lScalingM.SetS(lScaling); - - // Construct offset and pivot matrices - FbxVector4 lScalingOffset = pNode->ScalingOffset.Get(); - FbxVector4 lScalingPivot = pNode->ScalingPivot.Get(); - FbxVector4 lRotationOffset = pNode->RotationOffset.Get(); - FbxVector4 lRotationPivot = pNode->RotationPivot.Get(); - lScalingOffsetM.SetT(lScalingOffset); - lScalingPivotM.SetT(lScalingPivot); - lRotationOffsetM.SetT(lRotationOffset); - lRotationPivotM.SetT(lRotationPivot); - - // Calculate the global transform matrix of the parent node - FbxNode* lParentNode = pNode->GetParent(); - if(lParentNode) - { - lParentGX = CalculateGlobalTransform(lParentNode); - } - else - { - lParentGX.SetIdentity(); - } - - //Construct Global Rotation - FbxAMatrix lLRM, lParentGRM; - FbxVector4 lParentGR = lParentGX.GetR(); - lParentGRM.SetR(lParentGR); - lLRM = lPreRotationM * lRotationM * lPostRotationM; - - //Construct Global Shear*Scaling - //FBX SDK does not support shear, to patch this, we use: - //Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix - FbxAMatrix lLSM, lParentGSM, lParentGRSM, lParentTM; - FbxVector4 lParentGT = lParentGX.GetT(); - lParentTM.SetT(lParentGT); - lParentGRSM = lParentTM.Inverse() * lParentGX; - lParentGSM = lParentGRM.Inverse() * lParentGRSM; - lLSM = lScalingM; - - //Do not consider translation now - FbxTransform::EInheritType lInheritType = pNode->InheritType.Get(); - if(lInheritType == FbxTransform::eInheritRrSs) - { - lGlobalRS = lParentGRM * lLRM * lParentGSM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRSrs) - { - lGlobalRS = lParentGRM * lParentGSM * lLRM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRrs) - { - FbxAMatrix lParentLSM; - FbxVector4 lParentLS = lParentNode->LclScaling.Get(); - lParentLSM.SetS(lParentLS); - - FbxAMatrix lParentGSM_noLocal = lParentGSM * lParentLSM.Inverse(); - lGlobalRS = lParentGRM * lLRM * lParentGSM_noLocal * lLSM; - } - else - { - FBXSDK_printf("error, unknown inherit type! \n"); - } - - // Construct translation matrix - // Calculate the local transform matrix - lTransform = lTranlationM * lRotationOffsetM * lRotationPivotM * lPreRotationM * lRotationM * lPostRotationM * lRotationPivotM.Inverse()\ - * lScalingOffsetM * lScalingPivotM * lScalingM * lScalingPivotM.Inverse(); - FbxVector4 lLocalTWithAllPivotAndOffsetInfo = lTransform.GetT(); - // Calculate global translation vector according to: - // GlobalTranslation = ParentGlobalTransform * LocalTranslationWithPivotAndOffsetInfo - FbxVector4 lGlobalTranslation = lParentGX.MultT(lLocalTWithAllPivotAndOffsetInfo); - lGlobalT.SetT(lGlobalTranslation); - - //Construct the whole global transform - lTransform = lGlobalT * lGlobalRS; - - return lTransform; -} - - diff --git a/sdk/Linux/2019.2/samples/UVSample/CMakeLists.txt b/sdk/Linux/2019.2/samples/UVSample/CMakeLists.txt deleted file mode 100644 index 71945f9..0000000 --- a/sdk/Linux/2019.2/samples/UVSample/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UVSample .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.fbx" "${FBX_BUILD_ROOT}/sadface.fbx" - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.jpg" "${FBX_BUILD_ROOT}/sadface.jpg" -) - diff --git a/sdk/Linux/2019.2/samples/UVSample/main.cxx b/sdk/Linux/2019.2/samples/UVSample/main.cxx deleted file mode 100644 index 6d74d67..0000000 --- a/sdk/Linux/2019.2/samples/UVSample/main.cxx +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example shows to the user how to get UV information from mesh, -// and how to modify UV information on a specific UV set. -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access Node and its mesh -// 4. Get the UVs Information from the mesh -// 5. Modify the UV information and apply to the mesh -// 6. Save the scene to output file -// 7. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" - -//input file path -static const char* sInputFile = "sadface.fbx"; - -//output file path -static const char* sOutputFile = "happyface.fbx"; - - -//We load the all the UV information from the mesh -void LoadUVInformation(FbxMesh* pMesh); - -//We modify certain UV set and save the UV to mesh -void SaveUVInformation(FbxMesh* pMesh); - - -int main() -{ - - //FBX SDK Default Manager - FbxManager* lSdkManager = NULL; - - //Scene to load from file - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, sInputFile); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - //Get the first node in the scene - FbxNode* lNodeOfInterest = lScene->GetRootNode()->GetChild(0); - if(lNodeOfInterest) - { - FbxMesh* lMeshOFInterest = lNodeOfInterest->GetMesh(); - if(lMeshOFInterest) - { - //first, load the UV information and display them - LoadUVInformation(lMeshOFInterest); - - //then, modify certain uv set and save it - SaveUVInformation(lMeshOFInterest); - - //save the modified scene to file - SaveScene(lSdkManager, lScene, sOutputFile); - } - } - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void LoadUVInformation(FbxMesh* pMesh) -{ - //get all UV set names - FbxStringList lUVSetNameList; - pMesh->GetUVSetNames(lUVSetNameList); - - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < lUVSetNameList.GetCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const char* lUVSetName = lUVSetNameList.GetStringAt(lUVSetIndex); - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetName); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //index array, where holds the index referenced to the uv data - const bool lUseIndex = lUVElement->GetReferenceMode() != FbxGeometryElement::eDirect; - const int lIndexCount= (lUseIndex) ? lUVElement->GetIndexArray().GetCount() : 0; - - //iterating through the data by polygon - const int lPolyCount = pMesh->GetPolygonCount(); - - if( lUVElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - FbxVector2 lUVValue; - - //get the index of the current vertex in control points array - int lPolyVertIndex = pMesh->GetPolygonVertex(lPolyIndex,lVertIndex); - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyVertIndex) : lPolyVertIndex; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - } - } - } - else if (lUVElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lPolyIndexCounter = 0; - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - if (lPolyIndexCounter < lIndexCount) - { - FbxVector2 lUVValue; - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyIndexCounter) : lPolyIndexCounter; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - - lPolyIndexCounter++; - } - } - } - } - } -} - -void SaveUVInformation(FbxMesh* pMesh) -{ - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < pMesh->GetElementUVCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetIndex); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //new UV data - int lNewUVCount = 274/2; - double lNewUVData[274] = - { - 0.000499486923217773,0.000499725341796875,0.10039958357811,0.000499695539474487,0.200299650430679,0.0004996657371521,0.300199747085571,0.0004996657371521,0.400099813938141,0.000499635934829712,0.49999988079071,0.000499606132507324,0.59989994764328,0.000499576330184937,0.69980001449585,0.000499546527862549,0.799700140953064,0.000499546527862549,0.899600148200989,0.000499516725540161,0.999500274658203,0.000499486923217773,0.000499516725540161,0.100399821996689,0.100399613380432,0.100399792194366,0.200299680233002,0.100399762392044,0.300199747085571,0.100399762392044,0.400099813938141,0.100399732589722,0.499999910593033,0.100399702787399,0.599900007247925,0.100399672985077,0.699800074100494,0.100399643182755,0.799700140953064,0.100399643182755,0.899600207805634,0.100399613380432,0.999500274658203,0.10039958357811,0.000499546527862549,0.200299888849258,0.100399643182755,0.200299859046936,0.200299710035324,0.400099903345108,0.300199776887894,0.400099903345108,0.400099843740463,0.40009993314743,0.499999940395355,0.400099962949753,0.599900007247925,0.400099992752075,0.699800074100494,0.400100022554398,0.799700140953064,0.400100022554398,0.899600267410278,0.200299680233002,0.999500334262848,0.200299650430679,0.000499546527862549,0.30019998550415,0.100399643182755,0.300199925899506,0.200299710035324,0.300199806690216,0.300199806690216,0.300199836492538,0.400099873542786,0.300199866294861,0.499999940395355,0.300199866294861,0.599900007247925,0.300199925899506,0.699800133705139,0.300199925899506,0.799700140953064,0.300199955701828,0.899600267410278,0.300199747085571,0.999500334262848,0.300199747085571,0.000499576330184937,0.40010005235672,0.100399672985077,0.400100022554398,0.200299739837646,0.200299739837646,0.300199806690216,0.200299769639969,0.400099903345108,0.200299799442291,0.499999970197678,0.200299799442291,0.59990006685257,0.200299829244614,0.699800133705139,0.200299859046936,0.799700200557709,0.200299888849258,0.899600267410278,0.400099813938141,0.999500393867493,0.400099813938141,0.000499606132507324, - 0.50000011920929,0.100399702787399,0.50000011920929,0.200299769639969,0.500000059604645,0.300199866294861,0.500000059604645,0.40009993314743,0.5,0.5,0.5,0.59990006685257,0.499999970197678,0.699800133705139,0.499999940395355,0.799700260162354,0.499999940395355,0.899600267410278,0.499999910593033,0.999500393867493,0.49999988079071,0.000499635934829712,0.599900186061859,0.100399732589722,0.599900186061859,0.200299799442291,0.599900126457214,0.300199866294861,0.599900126457214,0.40009993314743,0.599900126457214,0.5,0.59990006685257,0.599900126457214,0.59990006685257,0.699800193309784,0.599900007247925,0.799700260162354,0.599900007247925,0.899600327014923,0.599900007247925,0.999500393867493,0.59989994764328,0.0004996657371521,0.699800252914429,0.100399762392044,0.699800252914429,0.200299829244614,0.699800252914429,0.300199896097183,0.699800193309784,0.400099962949753,0.699800193309784,0.500000059604645,0.699800133705139,0.599900126457214,0.699800133705139,0.699800193309784,0.699800133705139,0.799700260162354,0.699800074100494,0.899600386619568,0.699800074100494,0.999500453472137,0.69980001449585,0.0004996657371521,0.799700379371643,0.100399762392044,0.799700319766998,0.200299829244614,0.799700260162354,0.300199925899506,0.799700260162354,0.400099992752075,0.799700260162354,0.500000059604645,0.799700260162354,0.599900126457214,0.799700200557709,0.699800252914429,0.799700140953064,0.799700260162354,0.799700140953064,0.899600386619568,0.799700140953064,0.999500453472137,0.799700140953064,0.000499695539474487,0.899600386619568,0.100399792194366,0.899600386619568,0.200299859046936,0.899600386619568,0.300199925899506,0.899600386619568,0.400100022554398,0.899600327014923,0.50000011920929,0.899600267410278,0.599900186061859,0.899600267410278,0.699800252914429,0.899600267410278,0.799700319766998,0.899600267410278,0.899600386619568,0.899600207805634,0.999500513076782,0.899600148200989,0.000499725341796875,0.999500513076782,0.100399821996689,0.999500513076782,0.200299888849258,0.999500453472137,0.30019998550415,0.999500453472137, - 0.40010005235672,0.999500393867493,0.50000011920929,0.999500393867493,0.599900186061859,0.999500393867493,0.699800252914429,0.999500334262848,0.799700379371643,0.999500334262848,0.899600386619568,0.999500274658203,0.999500513076782,0.999500274658203,0.200299710035324,0.200299829244614,0.300199776887894,0.200299829244614,0.400099843740463,0.200299799442291,0.499999940395355,0.200299769639969,0.599900007247925,0.200299739837646,0.699800074100494,0.200299710035324,0.799700140953064,0.200299710035324,0.200299710035324,0.300199925899506,0.799700140953064,0.300199776887894,0.200299739837646,0.400099992752075,0.300199806690216,0.400099962949753,0.400099903345108,0.40009993314743,0.499999970197678,0.40009993314743,0.59990006685257,0.400099903345108,0.699800133705139,0.400099873542786,0.799700200557709,0.400099843740463 - }; - - //new UV index data - int lNewUVIndexCount = 600; - int lNewUVIndices[600] = - { - 11,0,12,1,12,0,12,1,13,2,13,1,13,2,14,3,14,2,14,3,15,4,15,3,15,4,16,5,16,4,16,5,17,6,17,5,17,6,18,7,18,6,18,7,19,8,19,7,19,8,20,9,20,8,20,9,21,10,21,9,22,11,23,12,23,11,23,12,121,13,121,12,121,13,122,14,122,13,122,14,123,15,123,14,123,15,124,16,124,15,124,16,125,17,125,16,125,17,126,18,126,17,126,18,127,19,127,18,127,19,31,20,31,19,31,20,32,21,32,20,33,22,34,23,34,22,34,23,128,121,128,23,35,24,36,25,36,24,36,25,37,26,37,25,37,26,38,27,38,26,38,27,39,28,39,27,39,28,40,29,40,28,40,29,41,30,41,29,129,127,42,31,42,127,42,31,43,32,43,31,44,33,45,34,45,33,45,34,130,128,130,34,46,35,47,36,47,35,47,36,48,37,48,36,48,37,49,38,49,37,49,38,50,39,50,38,50,39,51,40,51,39,51,40,52,41,52,40,136,129,53,42,53,129,53,42,54,43,54,42,55,44,56,45,56,44,56,45,57,130,57,45,57,130,58,131,58,130,58,131,59,132,59,131,59,132,60,133,60,132,60,133,61,134,61,133,61,134,62,135,62,134,62,135,63,136,63,135,63,136,64,53,64,136,64,53,65,54,65,53,66,55,67,56,67,55,67,56,68,57,68,56,68,57,69,58,69,57,69,58,70,59,70,58,70,59,71,60,71,59,71,60,72,61,72,60,72,61,73,62,73,61,73,62,74,63,74,62,74,63,75,64,75,63,75,64,76,65,76,64,77,66,78,67,78,66,78,67,79,68,79,67,79,68,80,69,80,68,80,69,81,70,81,69,81,70,82,71,82,70,82,71,83,72,83,71,83,72,84,73,84,72,84,73,85,74,85,73,85,74,86,75,86,74,86,75,87,76,87,75,88,77,89,78,89,77,89,78,90,79,90,78,90,79,91,80,91,79,91,80,92,81,92,80,92,81,93,82,93,81,93,82,94,83,94,82,94,83,95,84,95,83,95,84,96,85,96,84,96,85,97,86,97,85,97,86,98,87,98,86,99,88,100,89,100,88,100,89,101,90,101,89,101,90,102,91,102,90,102,91,103,92,103,91,103,92,104,93,104,92,104,93,105,94,105,93,105,94,106,95,106,94,106,95,107,96,107,95,107,96,108,97,108,96,108,97,109,98,109,97,110,99,111,100,111,99,111,100,112,101,112,100,112,101,113,102,113,101,113,102,114,103,114,102,114,103,115,104,115,103,115,104,116,105,116,104,116,105,117,106,117,105,117,106,118,107,118,106,118,107,119,108,119,107,119,108,120,109,120,108 - }; - - //set new UV data to direct array - lUVElement->GetDirectArray().Resize(lNewUVCount); - for(int lUVIndex = 0; lUVIndex < lNewUVCount; lUVIndex++) - { - FbxVector2 lUV(lNewUVData[2*lUVIndex], lNewUVData[2*lUVIndex+1]); - lUVElement->GetDirectArray().SetAt(lUVIndex, lUV); - } - - //set new UV index data to index array - lUVElement->GetIndexArray().Resize(lNewUVIndexCount); - for(int lUVIndex = 0; lUVIndex < lNewUVIndexCount; lUVIndex++) - { - lUVElement->GetIndexArray().SetAt(lUVIndex, lNewUVIndices[lUVIndex]); - } - - return; - } -} - diff --git a/sdk/Linux/2019.2/samples/UVSample/sadface.fbx b/sdk/Linux/2019.2/samples/UVSample/sadface.fbx deleted file mode 100644 index 06d3fac..0000000 --- a/sdk/Linux/2019.2/samples/UVSample/sadface.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:619179ea4689ea86114b4ab83b0d07e68ea5cbe28f84c9edf0a9ac293bf01f6e -size 33565 diff --git a/sdk/Linux/2019.2/samples/UVSample/sadface.jpg b/sdk/Linux/2019.2/samples/UVSample/sadface.jpg deleted file mode 100644 index 98a1cc8..0000000 --- a/sdk/Linux/2019.2/samples/UVSample/sadface.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:725930d0108270cf385c655ffc37372961499e352fe1dc941a646892e031e7ce -size 6730 diff --git a/sdk/Linux/2019.2/samples/UserProperties/CMakeLists.txt b/sdk/Linux/2019.2/samples/UserProperties/CMakeLists.txt deleted file mode 100644 index e4b5970..0000000 --- a/sdk/Linux/2019.2/samples/UserProperties/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UserProperties .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Linux/2019.2/samples/UserProperties/main.cxx b/sdk/Linux/2019.2/samples/UserProperties/main.cxx deleted file mode 100644 index a870319..0000000 --- a/sdk/Linux/2019.2/samples/UserProperties/main.cxx +++ /dev/null @@ -1,539 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// In this example a scene is created containing a cube and a pyramid. -// -// The example illustrates two things: -// 1) How to create user properties, attach them to the cube and -// animate them. -// 2) How to create a constraint, constraining the pyramid to the cube. -// -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "UserProperties.fbx" -#define ANIM_STACK_ANIMATE_LIST "Animate Cube List" -#define ANIM_STACK_ANIMATE_CUBE "Animate Cube" -#define ANIM_STACK_ANIMATE_PYRAMID "Animate Pyramid" - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName); -void CreateUserProperties(FbxNode *pNode); -void AnimateList(FbxScene* pScene, FbxProperty* pList); -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode); -void AnimateCube(FbxScene* pScene, FbxNode* pNode); -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode); -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - FbxNode* lPyramid = CreatePyramid(lScene, "Pyramid"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - - // Create the user properties on the Cube. - CreateUserProperties(lCube); - - // - - // animate the list "MyList" - FbxProperty p6 = lCube->FindProperty("MyList", false); - AnimateList(lScene, &p6); - - // Constraint (position constraint) the pyramid to the cube. - FbxConstraintPosition* lPositionConstraint = (FbxConstraintPosition*)CreatePositionConstraint(lScene, lCube, lPyramid); - if( lPositionConstraint ) lPositionConstraint->ConnectDstObject(lScene); - - // Animate the cube: the pyramid will follow, because of the position constraint. - AnimateCube(lScene, lCube); - - // Animate the pyramid: it doesn't actually move, because it is constrained to the immobile cube. - AnimatePyramid(lScene, lPyramid); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, lSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription("FBX ascii (*.fbx)") ); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - typedef double Vector4[4]; - typedef double Vector2[2]; - - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the polygons - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - - FbxGeometryElementNormal* lNormlElement= lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormlElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Finally we create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - pScene->GetRootNode()->AddChild(lNode); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - - -// Create a pyramid. -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - FbxGeometryElementNormal* lNormlElement = lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Create polygons. - - // Pyramid base. - lMesh->BeginPolygon(); - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(); - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - pScene->GetRootNode()->AddChild(lNode); - - // Translate the pyramid - FbxVector4 lTranslation(-150, 0, 0, 0); - lNode->LclTranslation.Set(lTranslation); - - return lNode; -} - - -void CreateUserProperties(FbxNode *pNode) { - // Now we create the user properties - FbxProperty p1 = FbxProperty::Create(pNode, FbxBoolDT, "MyBooleanProperty", "My Bool"); - FbxProperty p2 = FbxProperty::Create(pNode, FbxFloatDT, "MyRealProperty", "My floating point number"); - FbxProperty p3 = FbxProperty::Create(pNode, FbxColor3DT, "MyColorProperty", "My Color"); - FbxProperty p4 = FbxProperty::Create(pNode, FbxIntDT, "MyInteger", ""); - FbxProperty p5 = FbxProperty::Create(pNode, FbxDouble4DT, "MyVector", ""); - FbxProperty p6 = FbxProperty::Create(pNode, FbxStringListDT, "MyList", ""); - - /* - NOTE: The properties labels exists only while the property object is in memory. - The label is not saved in the FBX file. When loading properties from the FBX file - it will take the same value as the property name. - */ - - // we now fill the properties. All the properties are user properties so we set the - // correct flag - p1.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p2.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p3.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p4.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p5.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p6.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - - // let's make MyColorProperty, MyVector and MyList animatables - p3.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p5.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p6.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - - // we set the default values - FbxColor lRed(1.0, 0.0, 0.0); - p1.Set(false); - p2.Set(3.33); - p3.Set(lRed); - p4.Set(11); - p5.Set(FbxDouble3(-1.1, 2.2, -3.3)); - p6.Set(2); - - // and some limits - p4.SetLimits(-5.0, 9.0); - p5.SetLimits(0.0, 2.1); - - // add elements to the list - p6.AddEnumValue("one"); - p6.AddEnumValue("two"); - p6.AddEnumValue("three"); - p6.AddEnumValue("Four"); - p6.InsertEnumValue(0, "zero"); -} - - -// Animate the user property given by pList. -void AnimateList(FbxScene* pScene, FbxProperty* pList) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_LIST); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxAnimCurveNode* lFbxFCurveNode = pList->GetCurveNode(lAnimLayer, true); - if (lFbxFCurveNode) - { - FbxTime lKeyTime; - FbxAnimCurve* lFCurve = lFbxFCurveNode->GetCurve(0U); - if (lFCurve == NULL) - lFCurve = lFbxFCurveNode->CreateCurve(lFbxFCurveNode->GetName()); - - lFCurve->KeyModifyBegin(); - lFCurve->ResizeKeyBuffer(5); - - // One way of setting a keyframe value - lKeyTime.SetSecondDouble(0.0); - FbxAnimCurveKey lKey1(lKeyTime, 0.0); - lKey1.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey1.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(0, lKey1); - - lKeyTime.SetSecondDouble(1.0); - FbxAnimCurveKey lKey2(lKeyTime, 1.0); - lKey2.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey2.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(1, lKey2); - - // an other way of setting a keyframe value - lKeyTime.SetSecondDouble(2.0); - - // the cast to TangentMode is intended - lFCurve->KeySet(2, lKeyTime, 2.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(3.0); - lFCurve->KeySet(3, lKeyTime, 3.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(4.0); - lFCurve->KeySet(4, lKeyTime, 0.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lFCurve->KeyModifyEnd(); - } -} - - -// Create a position constraint whith pSourceNode as source node and pConstraintedNode as constrained node. -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode) -{ - FbxConstraintPosition *lPositionConstraint = FbxConstraintPosition::Create(pScene,"Position"); - - // set constrained object - lPositionConstraint->SetConstrainedObject(pConstrainedNode); - - // set source - lPositionConstraint->AddConstraintSource(pSourceNode, 100.0); - - // Constrain the position in X, Y and Z - lPositionConstraint->AffectX = true; - lPositionConstraint->AffectY = true; - lPositionConstraint->AffectZ = true; - - // keep offset between source and constrained object - FbxVector4 lPositionSource; - FbxVector4 lPositionConstrainedObj; - lPositionSource = pSourceNode->LclTranslation.Get(); - lPositionConstrainedObj = pConstrainedNode->LclTranslation.Get(); - FbxVector4 lOffset = lPositionConstrainedObj - lPositionSource; - lPositionConstraint->Translation = FbxDouble3(lOffset); - - // activate property - FbxProperty lActive = lPositionConstraint->FindProperty("Active", false); - lActive.Set(true); - - - return lPositionConstraint; -} - - -// Animate the cube by translating it in X, Y and Z. -void AnimateCube(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_CUBE); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); - -} - - -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_PYRAMID); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); -} - - -// Animate a given node. -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurveX = NULL; - FbxAnimCurve* lCurveY = NULL; - FbxAnimCurve* lCurveZ = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // The CurveNode must be created in order to access the AnimCurves - pNode->LclTranslation.GetCurveNode(pAnimLayer, true); - lCurveX = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - lCurveY = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - lCurveZ = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - - if (lCurveX) - { - lCurveX->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveX->KeyModifyEnd(); - } - - if (lCurveY) - { - lCurveY->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveY->KeyModifyEnd(); - } - - if (lCurveZ) - { - lCurveZ->KeyModifyBegin(); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(8.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(9.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveZ->KeyModifyEnd(); - } - -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/CMakeLists.txt b/sdk/Linux/2019.2/samples/ViewScene/CMakeLists.txt deleted file mode 100644 index a915449..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ViewScene .) -IF(CMAKE_OSX_SYSROOT MATCHES "Platforms/iPhone*") - MESSAGE(FATAL_ERROR "on iOS we don't have OpenGL stuff so we cannot compile ViewScene") - RETURN() -ENDIF() - -SET(FBX_TARGET_SOURCE - DrawScene.h - GetPosition.h - GlFunctions.h - SetCamera.h - SceneCache.h - SceneContext.h - DrawText.h - targa.h - DrawScene.cxx - GetPosition.cxx - GlFunctions.cxx - SetCamera.cxx - SceneCache.cxx - SceneContext.cxx - DrawText.cxx - main.cxx - targa.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_DEFINITIONS( - ${FBX_BUILD_DEFINES} - ${FBX_DEPENDENTS_DEFINES} -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET(SRC_LIB_ROOT ${FBX_ROOT}/samples/ViewScene/libs) -IF(WIN32) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.dll" "${FBX_BUILD_ROOT}/glew32.dll" - ) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.dll" "${FBX_BUILD_ROOT}/glut32.dll" - ) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) -ELSE(WIN32) - IF (APPLE) - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW32.a) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW64.a) - ENDIF() - SET(FBX_LINKER_FLAGS "-framework GLUT -framework OpenGL -framework Cocoa") - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - ELSEIF(LINUX) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW_amd64.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc34-amd64.a) - ELSE() - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc32.a) - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLUT} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_REQUIRED_LIBS_DEPENDENCY} GLU GL X11) - ENDIF(APPLE) -ENDIF(WIN32) - -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/humanoid.fbx" "${FBX_BUILD_ROOT}/humanoid.fbx" - - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/FBX_ASCII_TEXTURE" "${FBX_BUILD_ROOT}/FBX_ASCII_TEXTURE" -) diff --git a/sdk/Linux/2019.2/samples/ViewScene/DrawScene.cxx b/sdk/Linux/2019.2/samples/ViewScene/DrawScene.cxx deleted file mode 100644 index 4e2fdfe..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/DrawScene.cxx +++ /dev/null @@ -1,948 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawScene.h" -#include "SceneCache.h" -#include "GetPosition.h" - -void DrawNode(FbxNode* pNode, - FbxTime& lTime, - FbxAnimLayer * pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, - ShadingMode pShadingMode); -void DrawMarker(FbxAMatrix& pGlobalPosition); -void DrawSkeleton(FbxNode* pNode, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition); -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode); -void ComputeShapeDeformation(FbxMesh* pMesh, - FbxTime& pTime, - FbxAnimLayer * pAnimLayer, - FbxVector4* pVertexArray); -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose); -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray); -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition); -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition); -void DrawNull(FbxAMatrix& pGlobalPosition); -void MatrixScale(FbxAMatrix& pMatrix, double pValue); -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue); -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix); - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose) -{ - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - LightCache::IntializeEnvironment(pScene->GetGlobalSettings().GetAmbientColor()); - - // Setting the lights before drawing the whole scene - const int lLightCount = pScene->GetSrcObjectCount(); - for (int lLightIndex = 0; lLightIndex < lLightCount; ++lLightIndex) - { - FbxLight * lLight = pScene->GetSrcObject(lLightIndex); - FbxNode * lNode = lLight->GetNode(); - if (lNode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(lNode, pTime, pPose); - FbxAMatrix lGeometryOffset = GetGeometry(lNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - DrawLight(lNode, pTime, lGlobalOffPosition); - } - } -} - -// Draw recursively each node of the scene. To avoid recomputing -// uselessly the global positions, the global position of each -// node is passed to it's children while browsing the node tree. -// If the node is part of the given pose for the current scene, -// it will be drawn at the position specified in the pose, Otherwise -// it will be drawn at the given time. -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, FbxPose* pPose, - ShadingMode pShadingMode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(pNode, pTime, pPose, &pParentGlobalPosition); - - if (pNode->GetNodeAttribute()) - { - // Geometry offset. - // it is not inherited by the children. - FbxAMatrix lGeometryOffset = GetGeometry(pNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - - DrawNode(pNode, pTime, pAnimLayer, pParentGlobalPosition, lGlobalOffPosition, pPose, pShadingMode); - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - DrawNodeRecursive(pNode->GetChild(lChildIndex), pTime, pAnimLayer, lGlobalPosition, pPose, pShadingMode); - } -} - -// Draw the node following the content of it's node attribute. -void DrawNode(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - // All lights has been processed before the whole scene because they influence every geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMarker) - { - DrawMarker(pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - DrawSkeleton(pNode, pParentGlobalPosition, pGlobalPosition); - } - // NURBS and patch have been converted into triangluation meshes. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - DrawMesh(pNode, pTime, pAnimLayer, pGlobalPosition, pPose, pShadingMode); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eCamera) - { - DrawCamera(pNode, pTime, pAnimLayer, pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNull) - { - DrawNull(pGlobalPosition); - } - } - else - { - // Draw a Null for nodes without attribute. - DrawNull(pGlobalPosition); - } -} - - -// Draw a small box where the node is located. -void DrawMarker(FbxAMatrix& pGlobalPosition) -{ - GlDrawMarker(pGlobalPosition); -} - - -// Draw a limb between the node and its parent. -void DrawSkeleton(FbxNode* pNode, FbxAMatrix& pParentGlobalPosition, FbxAMatrix& pGlobalPosition) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - // Only draw the skeleton if it's a limb node and if - // the parent also has an attribute of type skeleton. - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode && - pNode->GetParent() && - pNode->GetParent()->GetNodeAttribute() && - pNode->GetParent()->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - GlDrawLimbNode(pParentGlobalPosition, pGlobalPosition); - } -} - - -// Draw the vertices of a mesh. -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxMesh* lMesh = pNode->GetMesh(); - const int lVertexCount = lMesh->GetControlPointsCount(); - - // No vertex to draw. - if (lVertexCount == 0) - { - return; - } - - const VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - - // If it has some defomer connection, update the vertices position - const bool lHasVertexCache = lMesh->GetDeformerCount(FbxDeformer::eVertexCache) && - (static_cast(lMesh->GetDeformer(0, FbxDeformer::eVertexCache)))->Active.Get(); - const bool lHasShape = lMesh->GetShapeCount() > 0; - const bool lHasSkin = lMesh->GetDeformerCount(FbxDeformer::eSkin) > 0; - const bool lHasDeformation = lHasVertexCache || lHasShape || lHasSkin; - - FbxVector4* lVertexArray = NULL; - if (!lMeshCache || lHasDeformation) - { - lVertexArray = new FbxVector4[lVertexCount]; - memcpy(lVertexArray, lMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - } - - if (lHasDeformation) - { - // Active vertex cache deformer will overwrite any other deformer - if (lHasVertexCache) - { - ReadVertexCacheData(lMesh, pTime, lVertexArray); - } - else - { - if (lHasShape) - { - // Deform the vertex array with the shapes. - ComputeShapeDeformation(lMesh, pTime, pAnimLayer, lVertexArray); - } - - //we need to get the number of clusters - const int lSkinCount = lMesh->GetDeformerCount(FbxDeformer::eSkin); - int lClusterCount = 0; - for (int lSkinIndex = 0; lSkinIndex < lSkinCount; ++lSkinIndex) - { - lClusterCount += ((FbxSkin *)(lMesh->GetDeformer(lSkinIndex, FbxDeformer::eSkin)))->GetClusterCount(); - } - if (lClusterCount) - { - // Deform the vertex array with the skin deformer. - ComputeSkinDeformation(pGlobalPosition, lMesh, pTime, lVertexArray, pPose); - } - } - - if (lMeshCache) - lMeshCache->UpdateVertexPosition(lMesh, lVertexArray); - } - - glPushMatrix(); - glMultMatrixd((const double*)pGlobalPosition); - - if (lMeshCache) - { - lMeshCache->BeginDraw(pShadingMode); - const int lSubMeshCount = lMeshCache->GetSubMeshCount(); - for (int lIndex = 0; lIndex < lSubMeshCount; ++lIndex) - { - if (pShadingMode == SHADING_MODE_SHADED) - { - const FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lIndex); - if (lMaterial) - { - const MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - if (lMaterialCache) - { - lMaterialCache->SetCurrentMaterial(); - } - } - else - { - // Draw green for faces without material - MaterialCache::SetDefaultMaterial(); - } - } - - lMeshCache->Draw(lIndex, pShadingMode); - } - lMeshCache->EndDraw(); - } - else - { - // OpenGL driver is too lower and use Immediate Mode - glColor4f(0.5f, 0.5f, 0.5f, 1.0f); - const int lPolygonCount = lMesh->GetPolygonCount(); - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; lPolygonIndex++) - { - const int lVerticeCount = lMesh->GetPolygonSize(lPolygonIndex); - glBegin(GL_LINE_LOOP); - for (int lVerticeIndex = 0; lVerticeIndex < lVerticeCount; lVerticeIndex++) - { - int index = lMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - if (index < 0) - { - FBX_ASSERT_NOW("Invalid index!"); - continue; - } - glVertex3dv((GLdouble *)lVertexArray[index]); - } - glEnd(); - } - } - - glPopMatrix(); - - delete [] lVertexArray; -} - - -// Deform the vertex array with the shapes contained in the mesh. -void ComputeShapeDeformation(FbxMesh* pMesh, FbxTime& pTime, FbxAnimLayer * pAnimLayer, FbxVector4* pVertexArray) -{ - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lSrcVertexArray = pVertexArray; - FbxVector4* lDstVertexArray = new FbxVector4[lVertexCount]; - memcpy(lDstVertexArray, pVertexArray, lVertexCount * sizeof(FbxVector4)); - - int lBlendShapeDeformerCount = pMesh->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - if(lChannel) - { - // Get the percentage of influence on this channel. - FbxAnimCurve* lFCurve = pMesh->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer); - if (!lFCurve) continue; - double lWeight = lFCurve->Evaluate(pTime); - - /* - If there is only one targetShape on this channel, the influence is easy to calculate: - influence = (targetShape - baseGeometry) * weight * 0.01 - dstGeometry = baseGeometry + influence - - But if there are more than one targetShapes on this channel, this is an in-between - blendshape, also called progressive morph. The calculation of influence is different. - - For example, given two in-between targets, the full weight percentage of first target - is 50, and the full weight percentage of the second target is 100. - When the weight percentage reach 50, the base geometry is already be fully morphed - to the first target shape. When the weight go over 50, it begin to morph from the - first target shape to the second target shape. - - To calculate influence when the weight percentage is 25: - 1. 25 falls in the scope of 0 and 50, the morphing is from base geometry to the first target. - 2. And since 25 is already half way between 0 and 50, so the real weight percentage change to - the first target is 50. - influence = (firstTargetShape - baseGeometry) * (25-0)/(50-0) * 100 - dstGeometry = baseGeometry + influence - - To calculate influence when the weight percentage is 75: - 1. 75 falls in the scope of 50 and 100, the morphing is from the first target to the second. - 2. And since 75 is already half way between 50 and 100, so the real weight percentage change - to the second target is 50. - influence = (secondTargetShape - firstTargetShape) * (75-50)/(100-50) * 100 - dstGeometry = firstTargetShape + influence - */ - - // Find the two shape indices for influence calculation according to the weight. - // Consider index of base geometry as -1. - - int lShapeCount = lChannel->GetTargetShapeCount(); - double* lFullWeights = lChannel->GetTargetShapeFullWeights(); - - // Find out which scope the lWeight falls in. - int lStartIndex = -1; - int lEndIndex = -1; - for(int lShapeIndex = 0; lShapeIndex 0 && lWeight <= lFullWeights[0]) - { - lEndIndex = 0; - break; - } - if(lWeight > lFullWeights[lShapeIndex] && lWeight < lFullWeights[lShapeIndex+1]) - { - lStartIndex = lShapeIndex; - lEndIndex = lShapeIndex + 1; - break; - } - } - - FbxShape* lStartShape = NULL; - FbxShape* lEndShape = NULL; - if(lStartIndex > -1) - { - lStartShape = lChannel->GetTargetShape(lStartIndex); - } - if(lEndIndex > -1) - { - lEndShape = lChannel->GetTargetShape(lEndIndex); - } - - //The weight percentage falls between base geometry and the first target shape. - if(lStartIndex == -1 && lEndShape) - { - double lEndWeight = lFullWeights[0]; - // Calculate the real weight. - lWeight = (lWeight/lEndWeight) * 100; - // Initialize the lDstVertexArray with vertex of base geometry. - memcpy(lDstVertexArray, lSrcVertexArray, lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the mesh vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lSrcVertexArray[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - //The weight percentage falls between two target shapes. - else if(lStartShape && lEndShape) - { - double lStartWeight = lFullWeights[lStartIndex]; - double lEndWeight = lFullWeights[lEndIndex]; - // Calculate the real weight. - lWeight = ((lWeight-lStartWeight)/(lEndWeight-lStartWeight)) * 100; - // Initialize the lDstVertexArray with vertex of the previous target shape geometry. - memcpy(lDstVertexArray, lStartShape->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the previous shape vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lStartShape->GetControlPoints()[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - }//If lChannel is valid - }//For each blend shape channel - }//For each blend shape deformer - - memcpy(pVertexArray, lDstVertexArray, lVertexCount * sizeof(FbxVector4)); - - delete [] lDstVertexArray; -} - -//Compute the transform matrix that the cluster will transform the vertex. -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose) -{ - FbxCluster::ELinkMode lClusterMode = pCluster->GetLinkMode(); - - FbxAMatrix lReferenceGlobalInitPosition; - FbxAMatrix lReferenceGlobalCurrentPosition; - FbxAMatrix lAssociateGlobalInitPosition; - FbxAMatrix lAssociateGlobalCurrentPosition; - FbxAMatrix lClusterGlobalInitPosition; - FbxAMatrix lClusterGlobalCurrentPosition; - - FbxAMatrix lReferenceGeometry; - FbxAMatrix lAssociateGeometry; - FbxAMatrix lClusterGeometry; - - FbxAMatrix lClusterRelativeInitPosition; - FbxAMatrix lClusterRelativeCurrentPositionInverse; - - if (lClusterMode == FbxCluster::eAdditive && pCluster->GetAssociateModel()) - { - pCluster->GetTransformAssociateModelMatrix(lAssociateGlobalInitPosition); - // Geometric transform of the model - lAssociateGeometry = GetGeometry(pCluster->GetAssociateModel()); - lAssociateGlobalInitPosition *= lAssociateGeometry; - lAssociateGlobalCurrentPosition = GetGlobalPosition(pCluster->GetAssociateModel(), pTime, pPose); - - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - lReferenceGlobalCurrentPosition = pGlobalPosition; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - // Multiply lClusterGlobalInitPosition by Geometric Transformation - lClusterGeometry = GetGeometry(pCluster->GetLink()); - lClusterGlobalInitPosition *= lClusterGeometry; - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the shift of the link relative to the reference. - //ModelM-1 * AssoM * AssoGX-1 * LinkGX * LinkM-1*ModelM - pVertexTransformMatrix = lReferenceGlobalInitPosition.Inverse() * lAssociateGlobalInitPosition * lAssociateGlobalCurrentPosition.Inverse() * - lClusterGlobalCurrentPosition * lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - } - else - { - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - lReferenceGlobalCurrentPosition = pGlobalPosition; - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the initial position of the link relative to the reference. - lClusterRelativeInitPosition = lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - - // Compute the current position of the link relative to the reference. - lClusterRelativeCurrentPositionInverse = lReferenceGlobalCurrentPosition.Inverse() * lClusterGlobalCurrentPosition; - - // Compute the shift of the link relative to the reference. - pVertexTransformMatrix = lClusterRelativeCurrentPositionInverse * lClusterRelativeInitPosition; - } -} - -// Deform the vertex array in classic linear way. -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - FbxAMatrix* lClusterDeformation = new FbxAMatrix[lVertexCount]; - memset(lClusterDeformation, 0, lVertexCount * sizeof(FbxAMatrix)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - if (lClusterMode == FbxCluster::eAdditive) - { - for (int i = 0; i < lVertexCount; ++i) - { - lClusterDeformation[i].SetIdentity(); - } - } - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - { - continue; - } - - // Compute the influence of the link on the vertex. - FbxAMatrix lInfluence = lVertexTransformMatrix; - MatrixScale(lInfluence, lWeight); - - if (lClusterMode == FbxCluster::eAdditive) - { - // Multiply with the product of the deformations on the vertex. - MatrixAddToDiagonal(lInfluence, 1.0 - lWeight); - lClusterDeformation[lIndex] = lInfluence * lClusterDeformation[lIndex]; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - // Add to the sum of the deformations on the vertex. - MatrixAdd(lClusterDeformation[lIndex], lInfluence); - - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeight = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeight != 0.0) - { - lDstVertex = lClusterDeformation[i].MultT(lSrcVertex); - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeight; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeight); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array in Dual Quaternion Skinning way. -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - - FbxDualQuaternion* lDQClusterDeformation = new FbxDualQuaternion[lVertexCount]; - memset(lDQClusterDeformation, 0, lVertexCount * sizeof(FbxDualQuaternion)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - FbxQuaternion lQ = lVertexTransformMatrix.GetQ(); - FbxVector4 lT = lVertexTransformMatrix.GetT(); - FbxDualQuaternion lDualQuaternion(lQ, lT); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - continue; - - // Compute the influence of the link on the vertex. - FbxDualQuaternion lInfluence = lDualQuaternion * lWeight; - if (lClusterMode == FbxCluster::eAdditive) - { - // Simply influenced by the dual quaternion. - lDQClusterDeformation[lIndex] = lInfluence; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - if(lClusterIndex == 0) - { - lDQClusterDeformation[lIndex] = lInfluence; - } - else - { - // Add to the sum of the deformations on the vertex. - // Make sure the deformation is accumulated in the same rotation direction. - // Use dot product to judge the sign. - double lSign = lDQClusterDeformation[lIndex].GetFirstQuaternion().DotProduct(lDualQuaternion.GetFirstQuaternion()); - if( lSign >= 0.0 ) - { - lDQClusterDeformation[lIndex] += lInfluence; - } - else - { - lDQClusterDeformation[lIndex] -= lInfluence; - } - } - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeightSum = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeightSum != 0.0) - { - lDQClusterDeformation[i].Normalize(); - lDstVertex = lDQClusterDeformation[i].Deform(lDstVertex); - - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeightSum; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeightSum); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lDQClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array according to the links contained in the mesh and the skinning type. -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - FbxSkin * lSkinDeformer = (FbxSkin *)pMesh->GetDeformer(0, FbxDeformer::eSkin); - FbxSkin::EType lSkinningType = lSkinDeformer->GetSkinningType(); - - if(lSkinningType == FbxSkin::eLinear || lSkinningType == FbxSkin::eRigid) - { - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eDualQuaternion) - { - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eBlend) - { - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lVertexArrayLinear = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayLinear, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - FbxVector4* lVertexArrayDQ = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayDQ, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayLinear, pPose); - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayDQ, pPose); - - // To blend the skinning according to the blend weights - // Final vertex = DQSVertex * blend weight + LinearVertex * (1- blend weight) - // DQSVertex: vertex that is deformed by dual quaternion skinning method; - // LinearVertex: vertex that is deformed by classic linear skinning method; - int lBlendWeightsCount = lSkinDeformer->GetControlPointIndicesCount(); - for(int lBWIndex = 0; lBWIndexGetControlPointBlendWeights()[lBWIndex]; - pVertexArray[lBWIndex] = lVertexArrayDQ[lBWIndex] * lBlendWeight + lVertexArrayLinear[lBWIndex] * (1 - lBlendWeight); - } - } -} - - -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray) -{ - FbxVertexCacheDeformer* lDeformer = static_cast(pMesh->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - unsigned int lVertexCount = (unsigned int)pMesh->GetControlPointsCount(); - bool lReadSucceed = false; - float* lReadBuf = NULL; - unsigned int BufferSize = 0; - - if (lDeformer->Type.Get() != FbxVertexCacheDeformer::ePositions) - // only process positions - return; - - unsigned int Length = 0; - lCache->Read(NULL, Length, FBXSDK_TIME_ZERO, lChannelIndex); - if (Length != lVertexCount*3) - // the content of the cache is by vertex not by control points (we don't support it here) - return; - - lReadSucceed = lCache->Read(&lReadBuf, BufferSize, pTime, lChannelIndex); - if (lReadSucceed) - { - unsigned int lReadBufIndex = 0; - - while (lReadBufIndex < 3*lVertexCount) - { - // In statements like "pVertexArray[lReadBufIndex/3].SetAt(2, lReadBuf[lReadBufIndex++])", - // on Mac platform, "lReadBufIndex++" is evaluated before "lReadBufIndex/3". - // So separate them. - pVertexArray[lReadBufIndex/3].mData[0] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[1] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[2] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - } - } -} - - -// Draw an oriented camera box where the node is located. -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition) -{ - FbxAMatrix lCameraGlobalPosition; - FbxVector4 lCameraPosition, lCameraDefaultDirection, lCameraInterestPosition; - - lCameraPosition = pGlobalPosition.GetT(); - - // By default, FBX cameras point towards the X positive axis. - FbxVector4 lXPositiveAxis(1.0, 0.0, 0.0); - lCameraDefaultDirection = lCameraPosition + lXPositiveAxis; - - lCameraGlobalPosition = pGlobalPosition; - - // If the camera is linked to an interest, get the interest position. - if (pNode->GetTarget()) - { - lCameraInterestPosition = GetGlobalPosition(pNode->GetTarget(), pTime).GetT(); - - // Compute the required rotation to make the camera point to it's interest. - FbxVector4 lCameraDirection; - FbxVector4::AxisAlignmentInEulerAngle(lCameraPosition, - lCameraDefaultDirection, - lCameraInterestPosition, - lCameraDirection); - - // Must override the camera rotation - // to make it point to it's interest. - lCameraGlobalPosition.SetR(lCameraDirection); - } - - // Get the camera roll. - FbxCamera* cam = pNode->GetCamera(); - double lRoll = 0; - - if (cam) - { - lRoll = cam->Roll.Get(); - FbxAnimCurve* fc = cam->Roll.GetCurve(pAnimLayer); - if (fc) fc->Evaluate(pTime); - } - GlDrawCamera(lCameraGlobalPosition, lRoll); -} - - -// Draw a colored sphere or cone where the node is located. -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition) -{ - const FbxLight* lLight = pNode->GetLight(); - if (!lLight) - return; - - // Must rotate the light's global position because - // FBX lights point towards the Y negative axis. - FbxAMatrix lLightRotation; - const FbxVector4 lYNegativeAxis(-90.0, 0.0, 0.0); - lLightRotation.SetR(lYNegativeAxis); - const FbxAMatrix lLightGlobalPosition = pGlobalPosition * lLightRotation; - - glPushMatrix(); - glMultMatrixd((const double*)lLightGlobalPosition); - - const LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - if (lLightCache) - { - lLightCache->SetLight(pTime); - } - - glPopMatrix(); -} - - -// Draw a cross hair where the node is located. -void DrawNull(FbxAMatrix& pGlobalPosition) -{ - GlDrawCrossHair(pGlobalPosition); -} - - -// Scale all the elements of a matrix. -void MatrixScale(FbxAMatrix& pMatrix, double pValue) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pMatrix[i][j] *= pValue; - } - } -} - - -// Add a value to all the elements in the diagonal of the matrix. -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue) -{ - pMatrix[0][0] += pValue; - pMatrix[1][1] += pValue; - pMatrix[2][2] += pValue; - pMatrix[3][3] += pValue; -} - - -// Sum two matrices element by element. -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pDstMatrix[i][j] += pSrcMatrix[i][j]; - } - } -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/DrawScene.h b/sdk/Linux/2019.2/samples/ViewScene/DrawScene.h deleted file mode 100644 index 95f3221..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/DrawScene.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_SCENE_H -#define _DRAW_SCENE_H - -#include "GlFunctions.h" - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose = NULL); - -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode); - -#endif // #ifndef _DRAW_SCENE_H - - - - - - diff --git a/sdk/Linux/2019.2/samples/ViewScene/DrawText.cxx b/sdk/Linux/2019.2/samples/ViewScene/DrawText.cxx deleted file mode 100644 index f3db78a..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/DrawText.cxx +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawText.h" - -namespace -{ - const float DEFAULT_POINT_SIZE = 20.f; - const float DEFAULT_GAP = 0.f; - - // The font texture contains all printable ASCII (0x20-0x7E) in value order. - const char * TEXTURE_FILENAME = "FBX_ASCII_TEXTURE"; - const int TEXTURE_WIDTH = 256; - const int TEXTURE_HEIGHT = 256; - const char TEXTURE_MIN_GLYPH = 0x20; - const char TEXTURE_MAX_GLYPH = 0x7E; - const int TEXTURE_GLYPH_COUNT = TEXTURE_MAX_GLYPH - TEXTURE_MIN_GLYPH + 1; -} - -DrawText::DrawText() : mGlyph(NULL), mTextureName(0), mPointSize(DEFAULT_POINT_SIZE), mGap(DEFAULT_GAP) -{ - Initialize(); -} - -DrawText::~DrawText() -{ - delete [] mGlyph; - - glDeleteTextures(1, &mTextureName); -} - -void DrawText::Display(const char * pText) -{ - if (!mGlyph || mTextureName == 0) - return; - - // Push OpenGL attributes. - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_COLOR_BUFFER_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - glBindTexture(GL_TEXTURE_2D, mTextureName); - glEnable(GL_TEXTURE_2D); - - // Blend with background color - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - // Visible for double side - glDisable(GL_CULL_FACE); - - // Blend with foreground color - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glPushMatrix(); - const char * pCharacter = pText; - while (*pCharacter != '\0') - { - if (*pCharacter == '\n') - { - glPopMatrix(); - // Move to the next line, left align - glTranslatef(0, -mPointSize, 0); - glPushMatrix(); - } - else - { - Glyph * lGlyph = mGlyph + (*pCharacter - TEXTURE_MIN_GLYPH); - if (lGlyph) - { - // Draw a rectangle with texture, alpha on. - glBegin(GL_POLYGON); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_top * mPointSize); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_top * mPointSize); - glEnd(); - - const float advance = lGlyph->advance * mPointSize + mGap; - glTranslatef(advance, 0, 0); - } - else - { - FBXSDK_printf("Invalid character: %c.\n", *pCharacter); - } - - } - ++pCharacter; - } - glPopMatrix(); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); -} - -void DrawText::Initialize() -{ - FILE * lFile = NULL; - FBXSDK_fopen(lFile, TEXTURE_FILENAME, "rb"); - if (lFile == NULL) - { - FBXSDK_printf("Warning: Failed to open %s and no text will be displayed.\n", TEXTURE_FILENAME); - return; - } - - // Load the texture coordinates and vertex coordinates. - mGlyph = new Glyph[TEXTURE_GLYPH_COUNT]; - fread(mGlyph, sizeof(Glyph), TEXTURE_GLYPH_COUNT, lFile); - - // Load the texture data, two bytes every pixel. - // One byte for luminance, always be 0xFF; The other for alpha. - const int lTextureSize = TEXTURE_WIDTH * TEXTURE_HEIGHT * 2; - unsigned char * lTextureData = new unsigned char[lTextureSize]; - if (fread(lTextureData, 1, lTextureSize, lFile) == lTextureSize) - { - // Save the texture data in GPU - glGenTextures(1, &mTextureName); - glBindTexture(GL_TEXTURE_2D, mTextureName); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, lTextureData); - glBindTexture(GL_TEXTURE_2D, 0); - } - delete [] lTextureData; - - fclose(lFile); -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/DrawText.h b/sdk/Linux/2019.2/samples/ViewScene/DrawText.h deleted file mode 100644 index 6171a88..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/DrawText.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_TEXT_H -#define _DRAW_TEXT_H - -#include "GlFunctions.h" - -// Utility classes for display text in OpenGL. - -class DrawText -{ -public: - DrawText(); - ~DrawText(); - - // Set the size of glyphs. - void SetPointSize(float pPointSize) { mPointSize = pPointSize; } - - // Set the extra horizontal size between two consecutive glyphs. - void SetGap(float pGap) { mGap = pGap; } - - // Display a string (ASCII only). - void Display(const char * pText); - -private: - // Initialize with pre-generated texture, containing glyph coordinates and bitmaps. - void Initialize(); - - struct Glyph - { - float advance; // horizontal distance from the origin of this glyph to next origin. - float texture_left; // texture coordinates of this glyph, range in [0, 1] - float texture_right; - float texture_bottom; - float texture_top; - float vertex_left; // vertex coordinates of this glyph - float vertex_right; // range almost in [0, 1], except some glyph with descend like 'g' or 'p' - float vertex_bottom; - float vertex_top; - }; - - Glyph * mGlyph; - GLuint mTextureName; - - float mPointSize; - float mGap; -}; - -#endif // _DRAW_TEXT_H - diff --git a/sdk/Linux/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE b/sdk/Linux/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE deleted file mode 100644 index ecb7a6e..0000000 Binary files a/sdk/Linux/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE and /dev/null differ diff --git a/sdk/Linux/2019.2/samples/ViewScene/GL/glew.h b/sdk/Linux/2019.2/samples/ViewScene/GL/glew.h deleted file mode 100644 index af53170..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GL/glew.h +++ /dev/null @@ -1,15304 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * 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 - * BRIAN PAUL 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. - */ - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#ifndef __glew_h__ -#define __glew_h__ -#define __GLEW_H__ - -#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) -#error gl.h included before glew.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error glext.h included before glew.h -#endif -#if defined(__gl_ATI_h_) -#error glATI.h included before glew.h -#endif - -#define __gl_h_ -#define __GL_H__ -#define __X_GL_H -#define __glext_h_ -#define __GLEXT_H_ -#define __gl_ATI_h_ - -#if defined(_WIN32) - -/* - * GLEW does not include to avoid name space pollution. - * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t - * defined properly. - */ -/* */ -#ifndef APIENTRY -#define GLEW_APIENTRY_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define APIENTRY __stdcall -# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -#endif -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# endif -#endif -/* */ -#ifndef CALLBACK -#define GLEW_CALLBACK_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define CALLBACK __attribute__ ((__stdcall__)) -# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -#endif -/* and */ -#ifndef WINGDIAPI -#define GLEW_WINGDIAPI_DEFINED -#define WINGDIAPI __declspec(dllimport) -#endif -/* */ -#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -#endif -/* */ -#if !defined(_W64) -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif -#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) -# ifdef _WIN64 -typedef __int64 ptrdiff_t; -# else -typedef _W64 int ptrdiff_t; -# endif -# define _PTRDIFF_T_DEFINED -# define _PTRDIFF_T_ -#endif - -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# else -# define GLAPI WINGDIAPI -# endif -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -/* - * GLEW_STATIC needs to be set when using the static version. - * GLEW_BUILD is set when building the DLL version. - */ -#ifdef GLEW_STATIC -# define GLEWAPI extern -#else -# ifdef GLEW_BUILD -# define GLEWAPI extern __declspec(dllexport) -# else -# define GLEWAPI extern __declspec(dllimport) -# endif -#endif - -#else /* _UNIX */ - -/* - * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO - * C. On my system, this amounts to _3 lines_ of included code, all of - * them pretty much harmless. If you know of a way of detecting 32 vs - * 64 _targets_ at compile time you are free to replace this with - * something that's portable. For now, _this_ is the portable solution. - * (mem, 2004-01-04) - */ - -#include - -/* SGI MIPSPro doesn't like stdint.h in C++ mode */ - -#if defined(__sgi) && !defined(__GNUC__) -#include -#else -#include -#endif - -#define GLEW_APIENTRY_DEFINED -#define APIENTRY -#define GLEWAPI extern - -/* */ -#ifndef GLAPI -#define GLAPI extern -#endif -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#endif /* _WIN32 */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ - -#ifndef GL_VERSION_1_1 -#define GL_VERSION_1_1 1 - -typedef unsigned int GLenum; -typedef unsigned int GLbitfield; -typedef unsigned int GLuint; -typedef int GLint; -typedef int GLsizei; -typedef unsigned char GLboolean; -typedef signed char GLbyte; -typedef short GLshort; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLulong; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; -#if defined(_MSC_VER) -# if _MSC_VER < 1400 -typedef __int64 GLint64EXT; -typedef unsigned __int64 GLuint64EXT; -# else -typedef signed long long GLint64EXT; -typedef unsigned long long GLuint64EXT; -# endif -#else -# if defined(__MINGW32__) || defined(__CYGWIN__) -#include -# endif -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#endif -typedef GLint64EXT GLint64; -typedef GLuint64EXT GLuint64; -typedef struct __GLsync *GLsync; - -typedef char GLchar; -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, - GLenum category, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For ARB_debug_output */ - -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, - GLenum type, - GLuint id, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For GL_ARB_cl_event */ - -typedef struct _cl_context *cl_context; -typedef struct _cl_event *cl_event; - -#define GL_ACCUM 0x0100 -#define GL_LOAD 0x0101 -#define GL_RETURN 0x0102 -#define GL_MULT 0x0103 -#define GL_ADD 0x0104 -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000fffff -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_TRUE 1 -#define GL_FALSE 0 -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LIST_MODE 0x0B30 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_SHADE_MODEL 0x0B54 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_FOG 0x0B60 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_NORMALIZE 0x0BA1 -#define GL_VIEWPORT 0x0BA2 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_INDEX_MODE 0x0C30 -#define GL_RGBA_MODE 0x0C31 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_RENDER_MODE 0x0C40 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_INDEX_BITS 0x0D51 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_COLOR_INDEX 0x1900 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_BITMAP 0x1A00 -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_RENDER 0x1C00 -#define GL_FEEDBACK 0x1C01 -#define GL_SELECT 0x1C02 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_ENV 0x2300 -#define GL_EYE_LINEAR 0x2400 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_SPHERE_MAP 0x2402 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_PLANE 0x2502 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D -#define GL_LOGIC_OP GL_INDEX_LOGIC_OP -#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 - -GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); -GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); -GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -GLAPI void GLAPIENTRY glArrayElement (GLint i); -GLAPI void GLAPIENTRY glBegin (GLenum mode); -GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); -GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GLAPI void GLAPIENTRY glCallList (GLuint list); -GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -GLAPI void GLAPIENTRY glClear (GLbitfield mask); -GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); -GLAPI void GLAPIENTRY glClearIndex (GLfloat c); -GLAPI void GLAPIENTRY glClearStencil (GLint s); -GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); -GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); -GLAPI void GLAPIENTRY glColor3iv (const GLint *v); -GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); -GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); -GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); -GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); -GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -GLAPI void GLAPIENTRY glColor4iv (const GLint *v); -GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); -GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glCullFace (GLenum mode); -GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); -GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GLAPI void GLAPIENTRY glDepthFunc (GLenum func); -GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); -GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); -GLAPI void GLAPIENTRY glDisable (GLenum cap); -GLAPI void GLAPIENTRY glDisableClientState (GLenum array); -GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); -GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); -GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); -GLAPI void GLAPIENTRY glEnable (GLenum cap); -GLAPI void GLAPIENTRY glEnableClientState (GLenum array); -GLAPI void GLAPIENTRY glEnd (void); -GLAPI void GLAPIENTRY glEndList (void); -GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); -GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); -GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); -GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); -GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); -GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); -GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -GLAPI void GLAPIENTRY glFinish (void); -GLAPI void GLAPIENTRY glFlush (void); -GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glFrontFace (GLenum mode); -GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); -GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); -GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); -GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); -GLAPI GLenum GLAPIENTRY glGetError (void); -GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v); -GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v); -GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v); -GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values); -GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values); -GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values); -GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, GLvoid* *params); -GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); -GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); -GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); -GLAPI void GLAPIENTRY glIndexMask (GLuint mask); -GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glIndexd (GLdouble c); -GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); -GLAPI void GLAPIENTRY glIndexf (GLfloat c); -GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); -GLAPI void GLAPIENTRY glIndexi (GLint c); -GLAPI void GLAPIENTRY glIndexiv (const GLint *c); -GLAPI void GLAPIENTRY glIndexs (GLshort c); -GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); -GLAPI void GLAPIENTRY glIndexub (GLubyte c); -GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); -GLAPI void GLAPIENTRY glInitNames (void); -GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); -GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); -GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); -GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); -GLAPI void GLAPIENTRY glLineWidth (GLfloat width); -GLAPI void GLAPIENTRY glListBase (GLuint base); -GLAPI void GLAPIENTRY glLoadIdentity (void); -GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glLoadName (GLuint name); -GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); -GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); -GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); -GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); -GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); -GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); -GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); -GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void GLAPIENTRY glPassThrough (GLfloat token); -GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values); -GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values); -GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values); -GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor); -GLAPI void GLAPIENTRY glPointSize (GLfloat size); -GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask); -GLAPI void GLAPIENTRY glPopAttrib (void); -GLAPI void GLAPIENTRY glPopClientAttrib (void); -GLAPI void GLAPIENTRY glPopMatrix (void); -GLAPI void GLAPIENTRY glPopName (void); -GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushMatrix (void); -GLAPI void GLAPIENTRY glPushName (GLuint name); -GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); -GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); -GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); -GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); -GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); -GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); -GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); -GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); -GLAPI void GLAPIENTRY glShadeModel (GLenum mode); -GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GLAPI void GLAPIENTRY glStencilMask (GLuint mask); -GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s); -GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); -GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord1i (GLint s); -GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); -GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); -GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); -GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); -GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) - -#endif /* GL_VERSION_1_1 */ - -/* ---------------------------------- GLU ---------------------------------- */ - -/* this is where we can safely include GLU */ -#if defined(__APPLE__) && defined(__MACH__) -#include -#else -#include -#endif - -/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 - -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_RESCALE_NORMAL 0x803A -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E - -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); - -#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) -#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) -#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) -#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) - -#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) - -#endif /* GL_VERSION_1_2 */ - -/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ - -#ifndef GL_VERSION_1_2_1 -#define GL_VERSION_1_2_1 1 - -#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) - -#endif /* GL_VERSION_1_2_1 */ - -/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 - -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_SUBTRACT 0x84E7 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#define GL_MULTISAMPLE_BIT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); - -#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) -#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) -#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) -#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) -#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) -#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) -#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) -#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) -#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) -#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) -#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) -#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) -#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) -#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) -#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) -#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) -#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) -#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) -#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) -#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) -#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) -#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) -#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) -#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) -#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) -#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) -#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) -#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) -#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) -#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) -#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) -#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) -#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) -#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) -#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) -#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) -#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) -#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) -#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) -#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) -#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) -#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) -#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) -#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) -#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) -#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) - -#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) - -#endif /* GL_VERSION_1_3 */ - -/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 - -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_COMPARE_R_TO_TEXTURE 0x884E - -typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); - -#define glBlendColor GLEW_GET_FUN(__glewBlendColor) -#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) -#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) -#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) -#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) -#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) -#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) -#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) -#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) -#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) -#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) -#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) -#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) -#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) -#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) -#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) -#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) -#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) -#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) -#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) -#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) -#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) -#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) -#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) -#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) -#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) -#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) -#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) -#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) -#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) -#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) -#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) -#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) -#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) -#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) -#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) -#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) -#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) -#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) -#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) -#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) -#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) -#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) -#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) -#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) -#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) -#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) - -#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) - -#endif /* GL_VERSION_1_4 */ - -/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 - -#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE -#define GL_FOG_COORD GL_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY -#define GL_SRC0_RGB GL_SOURCE0_RGB -#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER -#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE -#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA -#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE -#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA -#define GL_SRC1_RGB GL_SOURCE1_RGB -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING -#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA -#define GL_SRC2_RGB GL_SOURCE2_RGB -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 - -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); -typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); - -#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) -#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) -#define glBufferData GLEW_GET_FUN(__glewBufferData) -#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) -#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) -#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) -#define glEndQuery GLEW_GET_FUN(__glewEndQuery) -#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) -#define glGenQueries GLEW_GET_FUN(__glewGenQueries) -#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) -#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) -#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) -#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) -#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) -#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) -#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) -#define glIsQuery GLEW_GET_FUN(__glewIsQuery) -#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) -#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) - -#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) - -#endif /* GL_VERSION_1_5 */ - -/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 - -#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 - -typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLint obj, GLsizei maxLength, GLsizei* length, GLchar* source); -typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - -#define glAttachShader GLEW_GET_FUN(__glewAttachShader) -#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) -#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) -#define glCompileShader GLEW_GET_FUN(__glewCompileShader) -#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) -#define glCreateShader GLEW_GET_FUN(__glewCreateShader) -#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) -#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) -#define glDetachShader GLEW_GET_FUN(__glewDetachShader) -#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) -#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) -#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) -#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) -#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) -#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) -#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) -#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) -#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) -#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) -#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) -#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) -#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) -#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) -#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) -#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) -#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) -#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) -#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) -#define glIsProgram GLEW_GET_FUN(__glewIsProgram) -#define glIsShader GLEW_GET_FUN(__glewIsShader) -#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) -#define glShaderSource GLEW_GET_FUN(__glewShaderSource) -#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) -#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) -#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) -#define glUniform1f GLEW_GET_FUN(__glewUniform1f) -#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) -#define glUniform1i GLEW_GET_FUN(__glewUniform1i) -#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) -#define glUniform2f GLEW_GET_FUN(__glewUniform2f) -#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) -#define glUniform2i GLEW_GET_FUN(__glewUniform2i) -#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) -#define glUniform3f GLEW_GET_FUN(__glewUniform3f) -#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) -#define glUniform3i GLEW_GET_FUN(__glewUniform3i) -#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) -#define glUniform4f GLEW_GET_FUN(__glewUniform4f) -#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) -#define glUniform4i GLEW_GET_FUN(__glewUniform4i) -#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) -#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) -#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) -#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) -#define glUseProgram GLEW_GET_FUN(__glewUseProgram) -#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) -#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) -#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) -#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) -#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) -#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) -#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) -#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) -#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) -#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) -#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) -#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) -#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) -#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) -#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) -#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) -#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) -#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) -#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) -#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) -#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) -#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) -#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) -#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) -#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) -#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) -#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) -#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) -#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) -#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) -#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) -#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) -#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) -#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) -#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) -#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) -#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) -#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) - -#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) - -#endif /* GL_VERSION_2_0 */ - -/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 - -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B - -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); - -#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) -#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) -#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) -#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) -#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) -#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) - -#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) - -#endif /* GL_VERSION_2_1 */ - -/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ - -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 - -#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES -#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 -#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 -#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 -#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB -#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 -#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 -#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 -#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_DEPTH_BUFFER 0x8223 -#define GL_STENCIL_BUFFER 0x8224 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_ALPHA_INTEGER 0x8D97 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); -typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLint*); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLchar **, GLenum); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); - -#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) -#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) -#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) -#define glClampColor GLEW_GET_FUN(__glewClampColor) -#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) -#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) -#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) -#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) -#define glColorMaski GLEW_GET_FUN(__glewColorMaski) -#define glDisablei GLEW_GET_FUN(__glewDisablei) -#define glEnablei GLEW_GET_FUN(__glewEnablei) -#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) -#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) -#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) -#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) -#define glGetStringi GLEW_GET_FUN(__glewGetStringi) -#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) -#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) -#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) -#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) -#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) -#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) -#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) -#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) -#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) -#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) -#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) -#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) -#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) -#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) -#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) -#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) -#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) -#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) -#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) -#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) -#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) -#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) -#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) -#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) -#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) -#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) -#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) -#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) -#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) -#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) -#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) -#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) -#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) -#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) -#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) -#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) -#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) -#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) -#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) - -#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) - -#endif /* GL_VERSION_3_0 */ - -/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ - -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 - -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint); - -#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) -#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) -#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) -#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) - -#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) - -#endif /* GL_VERSION_3_1 */ - -/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ - -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 - -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum, GLenum, GLint64 *); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *); - -#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) -#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) -#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) - -#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) - -#endif /* GL_VERSION_3_2 */ - -/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ - -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_RGB10_A2UI 0x906F - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) - -#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) - -#endif /* GL_VERSION_3_3 */ - -/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ - -#ifndef GL_VERSION_4_0 -#define GL_VERSION_4_0 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); - -#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) -#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) -#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) -#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) -#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) - -#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) - -#endif /* GL_VERSION_4_0 */ - -/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ - -#ifndef GL_VERSION_4_1 -#define GL_VERSION_4_1 1 - -#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) - -#endif /* GL_VERSION_4_1 */ - -/* -------------------------- GL_3DFX_multisample -------------------------- */ - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 - -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 - -#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) - -#endif /* GL_3DFX_multisample */ - -/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 - -typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); - -#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) - -#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) - -#endif /* GL_3DFX_tbuffer */ - -/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 - -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 - -#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) - -#endif /* GL_3DFX_texture_compression_FXT1 */ - -/* ----------------------- GL_AMD_conservative_depth ----------------------- */ - -#ifndef GL_AMD_conservative_depth -#define GL_AMD_conservative_depth 1 - -#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) - -#endif /* GL_AMD_conservative_depth */ - -/* -------------------------- GL_AMD_debug_output -------------------------- */ - -#ifndef GL_AMD_debug_output -#define GL_AMD_debug_output 1 - -#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 -#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 -#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 -#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A -#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B -#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C -#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D -#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E -#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F -#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, char* message); - -#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) -#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) -#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) -#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) - -#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) - -#endif /* GL_AMD_debug_output */ - -/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ - -#ifndef GL_AMD_draw_buffers_blend -#define GL_AMD_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); - -#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) -#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) -#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) -#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) - -#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) - -#endif /* GL_AMD_draw_buffers_blend */ - -/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ - -#ifndef GL_AMD_name_gen_delete -#define GL_AMD_name_gen_delete 1 - -#define GL_DATA_BUFFER_AMD 0x9151 -#define GL_PERFORMANCE_MONITOR_AMD 0x9152 -#define GL_QUERY_OBJECT_AMD 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 -#define GL_SAMPLER_OBJECT_AMD 0x9155 - -typedef void (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); -typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); - -#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) -#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) -#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) - -#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) - -#endif /* GL_AMD_name_gen_delete */ - -/* ----------------------- GL_AMD_performance_monitor ---------------------- */ - -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 - -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 - -typedef void (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void* data); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char *counterString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, char *groupString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); - -#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) -#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) -#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) -#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) -#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) -#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) -#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) -#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) -#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) -#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) -#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) - -#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) - -#endif /* GL_AMD_performance_monitor */ - -/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ - -#ifndef GL_AMD_seamless_cubemap_per_texture -#define GL_AMD_seamless_cubemap_per_texture 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F - -#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) - -#endif /* GL_AMD_seamless_cubemap_per_texture */ - -/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ - -#ifndef GL_AMD_shader_stencil_export -#define GL_AMD_shader_stencil_export 1 - -#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) - -#endif /* GL_AMD_shader_stencil_export */ - -/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ - -#ifndef GL_AMD_texture_texture4 -#define GL_AMD_texture_texture4 1 - -#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) - -#endif /* GL_AMD_texture_texture4 */ - -/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ - -#ifndef GL_AMD_transform_feedback3_lines_triangles -#define GL_AMD_transform_feedback3_lines_triangles 1 - -#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) - -#endif /* GL_AMD_transform_feedback3_lines_triangles */ - -/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ - -#ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator 1 - -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_DISCRETE_AMD 0x9006 -#define GL_CONTINUOUS_AMD 0x9007 - -typedef void (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); - -#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) -#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) - -#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) - -#endif /* GL_AMD_vertex_shader_tessellator */ - -/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ - -#ifndef GL_APPLE_aux_depth_stencil -#define GL_APPLE_aux_depth_stencil 1 - -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 - -#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) - -#endif /* GL_APPLE_aux_depth_stencil */ - -/* ------------------------ GL_APPLE_client_storage ------------------------ */ - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 - -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 - -#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) - -#endif /* GL_APPLE_client_storage */ - -/* ------------------------- GL_APPLE_element_array ------------------------ */ - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 - -#define GL_ELEMENT_ARRAY_APPLE 0x8A0C -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); - -#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) -#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) -#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) -#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) -#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) - -#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) - -#endif /* GL_APPLE_element_array */ - -/* ----------------------------- GL_APPLE_fence ---------------------------- */ - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 - -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); - -#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) -#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) -#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) -#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) -#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) -#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) -#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) -#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) - -#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) - -#endif /* GL_APPLE_fence */ - -/* ------------------------- GL_APPLE_float_pixels ------------------------- */ - -#ifndef GL_APPLE_float_pixels -#define GL_APPLE_float_pixels 1 - -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F - -#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) - -#endif /* GL_APPLE_float_pixels */ - -/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 - -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 - -typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); - -#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) -#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) - -#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) - -#endif /* GL_APPLE_flush_buffer_range */ - -/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ - -#ifndef GL_APPLE_object_purgeable -#define GL_APPLE_object_purgeable 1 - -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_RETAINED_APPLE 0x8A1B -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_PURGEABLE_APPLE 0x8A1D - -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); - -#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) -#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) -#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) - -#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) - -#endif /* GL_APPLE_object_purgeable */ - -/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ - -#ifndef GL_APPLE_pixel_buffer -#define GL_APPLE_pixel_buffer 1 - -#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 - -#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) - -#endif /* GL_APPLE_pixel_buffer */ - -/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ - -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 - -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#define GL_RGB_422_APPLE 0x8A1F - -#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) - -#endif /* GL_APPLE_rgb_422 */ - -/* --------------------------- GL_APPLE_row_bytes -------------------------- */ - -#ifndef GL_APPLE_row_bytes -#define GL_APPLE_row_bytes 1 - -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 - -#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) - -#endif /* GL_APPLE_row_bytes */ - -/* ------------------------ GL_APPLE_specular_vector ----------------------- */ - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 - -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 - -#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) - -#endif /* GL_APPLE_specular_vector */ - -/* ------------------------- GL_APPLE_texture_range ------------------------ */ - -#ifndef GL_APPLE_texture_range -#define GL_APPLE_texture_range 1 - -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); -typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); - -#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) -#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) - -#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) - -#endif /* GL_APPLE_texture_range */ - -/* ------------------------ GL_APPLE_transform_hint ------------------------ */ - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 - -#define GL_TRANSFORM_HINT_APPLE 0x85B1 - -#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) - -#endif /* GL_APPLE_transform_hint */ - -/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) -#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) -#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) -#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) - -#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) - -#endif /* GL_APPLE_vertex_array_object */ - -/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CLIENT_APPLE 0x85B4 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) -#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) -#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) - -#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) - -#endif /* GL_APPLE_vertex_array_range */ - -/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ - -#ifndef GL_APPLE_vertex_program_evaluators -#define GL_APPLE_vertex_program_evaluators 1 - -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 -#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 -#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 -#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 -#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 -#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 -#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 - -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); - -#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) -#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) -#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) -#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) -#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) -#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) -#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) - -#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) - -#endif /* GL_APPLE_vertex_program_evaluators */ - -/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 - -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB - -#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) - -#endif /* GL_APPLE_ycbcr_422 */ - -/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ - -#ifndef GL_ARB_ES2_compatibility -#define GL_ARB_ES2_compatibility 1 - -#define GL_FIXED 0x140C -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); -typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid*binary, GLsizei length); - -#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) -#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) -#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) -#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) -#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) - -#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) - -#endif /* GL_ARB_ES2_compatibility */ - -/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ - -#ifndef GL_ARB_blend_func_extended -#define GL_ARB_blend_func_extended 1 - -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name); - -#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) -#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) - -#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) - -#endif /* GL_ARB_blend_func_extended */ - -/* ---------------------------- GL_ARB_cl_event ---------------------------- */ - -#ifndef GL_ARB_cl_event -#define GL_ARB_cl_event 1 - -#define GL_SYNC_CL_EVENT_ARB 0x8240 -#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 - -typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); - -#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) - -#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) - -#endif /* GL_ARB_cl_event */ - -/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 - -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D - -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); - -#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) - -#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) - -#endif /* GL_ARB_color_buffer_float */ - -/* -------------------------- GL_ARB_compatibility ------------------------- */ - -#ifndef GL_ARB_compatibility -#define GL_ARB_compatibility 1 - -#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) - -#endif /* GL_ARB_compatibility */ - -/* --------------------------- GL_ARB_copy_buffer -------------------------- */ - -#ifndef GL_ARB_copy_buffer -#define GL_ARB_copy_buffer 1 - -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 - -typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); - -#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) - -#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) - -#endif /* GL_ARB_copy_buffer */ - -/* -------------------------- GL_ARB_debug_output -------------------------- */ - -#ifndef GL_ARB_debug_output -#define GL_ARB_debug_output 1 - -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 -#define GL_DEBUG_SOURCE_API_ARB 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A -#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B -#define GL_DEBUG_TYPE_ERROR_ARB 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E -#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 -#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 -#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog); - -#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) -#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) -#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) -#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) - -#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) - -#endif /* GL_ARB_debug_output */ - -/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ - -#ifndef GL_ARB_depth_buffer_float -#define GL_ARB_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD - -#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) - -#endif /* GL_ARB_depth_buffer_float */ - -/* --------------------------- GL_ARB_depth_clamp -------------------------- */ - -#ifndef GL_ARB_depth_clamp -#define GL_ARB_depth_clamp 1 - -#define GL_DEPTH_CLAMP 0x864F - -#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) - -#endif /* GL_ARB_depth_clamp */ - -/* -------------------------- GL_ARB_depth_texture ------------------------- */ - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B - -#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) - -#endif /* GL_ARB_depth_texture */ - -/* -------------------------- GL_ARB_draw_buffers -------------------------- */ - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) - -#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) - -#endif /* GL_ARB_draw_buffers */ - -/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ - -#ifndef GL_ARB_draw_buffers_blend -#define GL_ARB_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); - -#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) -#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) -#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) -#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) - -#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) - -#endif /* GL_ARB_draw_buffers_blend */ - -/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ - -#ifndef GL_ARB_draw_elements_base_vertex -#define GL_ARB_draw_elements_base_vertex 1 - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei* count, GLenum type, GLvoid**indices, GLsizei primcount, GLint *basevertex); - -#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) -#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) -#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) -#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) - -#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) - -#endif /* GL_ARB_draw_elements_base_vertex */ - -/* -------------------------- GL_ARB_draw_indirect ------------------------- */ - -#ifndef GL_ARB_draw_indirect -#define GL_ARB_draw_indirect 1 - -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect); - -#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) -#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) - -#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) - -#endif /* GL_ARB_draw_indirect */ - -/* ------------------------- GL_ARB_draw_instanced ------------------------- */ - -#ifndef GL_ARB_draw_instanced -#define GL_ARB_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); - -#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) -#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) - -#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) - -#endif /* GL_ARB_draw_instanced */ - -/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ - -#ifndef GL_ARB_explicit_attrib_location -#define GL_ARB_explicit_attrib_location 1 - -#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) - -#endif /* GL_ARB_explicit_attrib_location */ - -/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ - -#ifndef GL_ARB_fragment_coord_conventions -#define GL_ARB_fragment_coord_conventions 1 - -#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) - -#endif /* GL_ARB_fragment_coord_conventions */ - -/* ------------------------ GL_ARB_fragment_program ------------------------ */ - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 - -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 - -#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) - -#endif /* GL_ARB_fragment_program */ - -/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 - -#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) - -#endif /* GL_ARB_fragment_program_shadow */ - -/* ------------------------- GL_ARB_fragment_shader ------------------------ */ - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 - -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B - -#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) - -#endif /* GL_ARB_fragment_shader */ - -/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ - -#ifndef GL_ARB_framebuffer_object -#define GL_ARB_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_INDEX 0x8222 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_SRGB 0x8C40 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) -#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) -#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) -#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) -#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) -#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) -#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) -#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) -#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) -#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) -#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) -#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) -#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) -#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) -#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) -#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) -#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) -#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) -#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) -#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) - -#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) - -#endif /* GL_ARB_framebuffer_object */ - -/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ - -#ifndef GL_ARB_framebuffer_sRGB -#define GL_ARB_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB 0x8DB9 - -#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) - -#endif /* GL_ARB_framebuffer_sRGB */ - -/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ - -#ifndef GL_ARB_geometry_shader4 -#define GL_ARB_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_ARB 0xA -#define GL_LINE_STRIP_ADJACENCY_ARB 0xB -#define GL_TRIANGLES_ADJACENCY_ARB 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) -#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) -#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) -#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) - -#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) - -#endif /* GL_ARB_geometry_shader4 */ - -/* ----------------------- GL_ARB_get_program_binary ----------------------- */ - -#ifndef GL_ARB_get_program_binary -#define GL_ARB_get_program_binary 1 - -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, GLvoid*binary); -typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); - -#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) -#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) -#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) - -#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) - -#endif /* GL_ARB_get_program_binary */ - -/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ - -#ifndef GL_ARB_gpu_shader5 -#define GL_ARB_gpu_shader5 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) - -#endif /* GL_ARB_gpu_shader5 */ - -/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ - -#ifndef GL_ARB_gpu_shader_fp64 -#define GL_ARB_gpu_shader_fp64 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); - -#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) -#define glProgramUniform1dEXT GLEW_GET_FUN(__glewProgramUniform1dEXT) -#define glProgramUniform1dvEXT GLEW_GET_FUN(__glewProgramUniform1dvEXT) -#define glProgramUniform2dEXT GLEW_GET_FUN(__glewProgramUniform2dEXT) -#define glProgramUniform2dvEXT GLEW_GET_FUN(__glewProgramUniform2dvEXT) -#define glProgramUniform3dEXT GLEW_GET_FUN(__glewProgramUniform3dEXT) -#define glProgramUniform3dvEXT GLEW_GET_FUN(__glewProgramUniform3dvEXT) -#define glProgramUniform4dEXT GLEW_GET_FUN(__glewProgramUniform4dEXT) -#define glProgramUniform4dvEXT GLEW_GET_FUN(__glewProgramUniform4dvEXT) -#define glProgramUniformMatrix2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2dvEXT) -#define glProgramUniformMatrix2x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3dvEXT) -#define glProgramUniformMatrix2x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4dvEXT) -#define glProgramUniformMatrix3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3dvEXT) -#define glProgramUniformMatrix3x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2dvEXT) -#define glProgramUniformMatrix3x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4dvEXT) -#define glProgramUniformMatrix4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4dvEXT) -#define glProgramUniformMatrix4x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2dvEXT) -#define glProgramUniformMatrix4x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3dvEXT) -#define glUniform1d GLEW_GET_FUN(__glewUniform1d) -#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) -#define glUniform2d GLEW_GET_FUN(__glewUniform2d) -#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) -#define glUniform3d GLEW_GET_FUN(__glewUniform3d) -#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) -#define glUniform4d GLEW_GET_FUN(__glewUniform4d) -#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) -#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) -#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) -#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) -#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) -#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) -#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) -#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) -#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) -#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) - -#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) - -#endif /* GL_ARB_gpu_shader_fp64 */ - -/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 - -#define GL_HALF_FLOAT_ARB 0x140B - -#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) - -#endif /* GL_ARB_half_float_pixel */ - -/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ - -#ifndef GL_ARB_half_float_vertex -#define GL_ARB_half_float_vertex 1 - -#define GL_HALF_FLOAT 0x140B - -#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) - -#endif /* GL_ARB_half_float_vertex */ - -/* ----------------------------- GL_ARB_imaging ---------------------------- */ - -#ifndef GL_ARB_imaging -#define GL_ARB_imaging 1 - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_IGNORE_BORDER 0x8150 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_WRAP_BORDER 0x8152 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); - -#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) -#define glColorTable GLEW_GET_FUN(__glewColorTable) -#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) -#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) -#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) -#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) -#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) -#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) -#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) -#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) -#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) -#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) -#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) -#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) -#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) -#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) -#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) -#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) -#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) -#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) -#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) -#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) -#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) -#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) -#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) -#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) -#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) -#define glHistogram GLEW_GET_FUN(__glewHistogram) -#define glMinmax GLEW_GET_FUN(__glewMinmax) -#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) -#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) -#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) - -#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) - -#endif /* GL_ARB_imaging */ - -/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ - -#ifndef GL_ARB_instanced_arrays -#define GL_ARB_instanced_arrays 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) - -#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) - -#endif /* GL_ARB_instanced_arrays */ - -/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ - -#ifndef GL_ARB_map_buffer_range -#define GL_ARB_map_buffer_range 1 - -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 - -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - -#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) -#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) - -#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) - -#endif /* GL_ARB_map_buffer_range */ - -/* ------------------------- GL_ARB_matrix_palette ------------------------- */ - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 - -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 - -typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); - -#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) -#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) -#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) -#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) -#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) - -#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) - -#endif /* GL_ARB_matrix_palette */ - -/* --------------------------- GL_ARB_multisample -------------------------- */ - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 - -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); - -#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) - -#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) - -#endif /* GL_ARB_multisample */ - -/* -------------------------- GL_ARB_multitexture -------------------------- */ - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) -#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) -#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) -#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) -#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) -#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) -#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) -#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) -#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) -#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) -#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) -#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) -#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) -#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) -#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) -#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) -#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) -#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) -#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) -#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) -#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) -#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) -#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) -#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) -#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) -#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) -#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) -#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) -#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) -#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) -#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) -#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) -#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) -#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) - -#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) - -#endif /* GL_ARB_multitexture */ - -/* ------------------------- GL_ARB_occlusion_query ------------------------ */ - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 - -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); - -#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) -#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) -#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) -#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) -#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) -#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) -#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) -#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) - -#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) - -#endif /* GL_ARB_occlusion_query */ - -/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ - -#ifndef GL_ARB_occlusion_query2 -#define GL_ARB_occlusion_query2 1 - -#define GL_ANY_SAMPLES_PASSED 0x8C2F - -#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) - -#endif /* GL_ARB_occlusion_query2 */ - -/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF - -#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) - -#endif /* GL_ARB_pixel_buffer_object */ - -/* ------------------------ GL_ARB_point_parameters ------------------------ */ - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 - -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) -#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) - -#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) - -#endif /* GL_ARB_point_parameters */ - -/* -------------------------- GL_ARB_point_sprite -------------------------- */ - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 - -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 - -#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) - -#endif /* GL_ARB_point_sprite */ - -/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ - -#ifndef GL_ARB_provoking_vertex -#define GL_ARB_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); - -#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) - -#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) - -#endif /* GL_ARB_provoking_vertex */ - -/* --------------------------- GL_ARB_robustness --------------------------- */ - -#ifndef GL_ARB_robustness -#define GL_ARB_robustness 1 - -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 -#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 - -typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); -typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); -typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); -typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); -typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); -typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, GLvoid*column, GLvoid*span); -typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); -typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); - -#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) -#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) -#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) -#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) -#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) -#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) -#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) -#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) -#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) -#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) -#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) -#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) -#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) -#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) -#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) -#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) -#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) -#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) -#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) - -#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) - -#endif /* GL_ARB_robustness */ - -/* ------------------------- GL_ARB_sample_shading ------------------------- */ - -#ifndef GL_ARB_sample_shading -#define GL_ARB_sample_shading 1 - -#define GL_SAMPLE_SHADING_ARB 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 - -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); - -#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) - -#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) - -#endif /* GL_ARB_sample_shading */ - -/* ------------------------- GL_ARB_sampler_objects ------------------------ */ - -#ifndef GL_ARB_sampler_objects -#define GL_ARB_sampler_objects 1 - -#define GL_SAMPLER_BINDING 0x8919 - -typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); -typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); -typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); - -#define glBindSampler GLEW_GET_FUN(__glewBindSampler) -#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) -#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) -#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) -#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) -#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) -#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) -#define glIsSampler GLEW_GET_FUN(__glewIsSampler) -#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) -#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) -#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) -#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) -#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) -#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) - -#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) - -#endif /* GL_ARB_sampler_objects */ - -/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ - -#ifndef GL_ARB_seamless_cube_map -#define GL_ARB_seamless_cube_map 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F - -#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) - -#endif /* GL_ARB_seamless_cube_map */ - -/* --------------------- GL_ARB_separate_shader_objects -------------------- */ - -#ifndef GL_ARB_separate_shader_objects -#define GL_ARB_separate_shader_objects 1 - -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_ALL_SHADER_BITS 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const char ** strings); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, char *infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); - -#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) -#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) -#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) -#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) -#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) -#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) -#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) -#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) -#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) -#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) -#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) -#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) -#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) -#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) -#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) -#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) -#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) -#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) -#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) -#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) -#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) -#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) -#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) -#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) -#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) -#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) -#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) -#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) -#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) -#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) -#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) -#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) -#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) -#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) -#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) -#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) -#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) -#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) -#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) -#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) -#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) -#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) -#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) -#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) -#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) -#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) -#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) -#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) -#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) -#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) -#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) -#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) -#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) -#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) -#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) -#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) -#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) -#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) -#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) -#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) - -#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) - -#endif /* GL_ARB_separate_shader_objects */ - -/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ - -#ifndef GL_ARB_shader_bit_encoding -#define GL_ARB_shader_bit_encoding 1 - -#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) - -#endif /* GL_ARB_shader_bit_encoding */ - -/* ------------------------- GL_ARB_shader_objects ------------------------- */ - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 - -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 - -typedef char GLcharARB; -typedef unsigned int GLhandleARB; - -typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); -typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); - -#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) -#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) -#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) -#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) -#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) -#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) -#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) -#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) -#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) -#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) -#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) -#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) -#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) -#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) -#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) -#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) -#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) -#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) -#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) -#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) -#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) -#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) -#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) -#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) -#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) -#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) -#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) -#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) -#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) -#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) -#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) -#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) -#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) -#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) -#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) -#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) -#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) -#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) -#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) - -#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) - -#endif /* GL_ARB_shader_objects */ - -/* ------------------------ GL_ARB_shader_precision ------------------------ */ - -#ifndef GL_ARB_shader_precision -#define GL_ARB_shader_precision 1 - -#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) - -#endif /* GL_ARB_shader_precision */ - -/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ - -#ifndef GL_ARB_shader_stencil_export -#define GL_ARB_shader_stencil_export 1 - -#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) - -#endif /* GL_ARB_shader_stencil_export */ - -/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ - -#ifndef GL_ARB_shader_subroutine -#define GL_ARB_shader_subroutine 1 - -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B - -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); -typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name); -typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); -typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); - -#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) -#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) -#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) -#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) -#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) -#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) -#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) -#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) - -#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) - -#endif /* GL_ARB_shader_subroutine */ - -/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ - -#ifndef GL_ARB_shader_texture_lod -#define GL_ARB_shader_texture_lod 1 - -#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) - -#endif /* GL_ARB_shader_texture_lod */ - -/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 - -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C - -#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) - -#endif /* GL_ARB_shading_language_100 */ - -/* -------------------- GL_ARB_shading_language_include -------------------- */ - -#ifndef GL_ARB_shading_language_include -#define GL_ARB_shading_language_include 1 - -#define GL_SHADER_INCLUDE_ARB 0x8DAE -#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 -#define GL_NAMED_STRING_TYPE_ARB 0x8DEA - -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length); -typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string); - -#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) -#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) -#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) -#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) -#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) -#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) - -#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) - -#endif /* GL_ARB_shading_language_include */ - -/* ----------------------------- GL_ARB_shadow ----------------------------- */ - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 - -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E - -#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) - -#endif /* GL_ARB_shadow */ - -/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 - -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF - -#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) - -#endif /* GL_ARB_shadow_ambient */ - -/* ------------------------------ GL_ARB_sync ------------------------------ */ - -#ifndef GL_ARB_sync -#define GL_ARB_sync 1 - -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF - -typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); -typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); -typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); -typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); -typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); - -#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) -#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) -#define glFenceSync GLEW_GET_FUN(__glewFenceSync) -#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) -#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) -#define glIsSync GLEW_GET_FUN(__glewIsSync) -#define glWaitSync GLEW_GET_FUN(__glewWaitSync) - -#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) - -#endif /* GL_ARB_sync */ - -/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ - -#ifndef GL_ARB_tessellation_shader -#define GL_ARB_tessellation_shader 1 - -#define GL_PATCHES 0xE -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_PATCH_VERTICES 0x8E72 -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_ISOLINES 0x8E7A -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A - -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); - -#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) -#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) - -#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) - -#endif /* GL_ARB_tessellation_shader */ - -/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_ARB 0x812D - -#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) - -#endif /* GL_ARB_texture_border_clamp */ - -/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ - -#ifndef GL_ARB_texture_buffer_object -#define GL_ARB_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) - -#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) - -#endif /* GL_ARB_texture_buffer_object */ - -/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ - -#ifndef GL_ARB_texture_buffer_object_rgb32 -#define GL_ARB_texture_buffer_object_rgb32 1 - -#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) - -#endif /* GL_ARB_texture_buffer_object_rgb32 */ - -/* ----------------------- GL_ARB_texture_compression ---------------------- */ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 - -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 - -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); - -#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) -#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) -#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) -#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) -#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) -#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) -#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) - -#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) - -#endif /* GL_ARB_texture_compression */ - -/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ - -#ifndef GL_ARB_texture_compression_bptc -#define GL_ARB_texture_compression_bptc 1 - -#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F - -#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) - -#endif /* GL_ARB_texture_compression_bptc */ - -/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ - -#ifndef GL_ARB_texture_compression_rgtc -#define GL_ARB_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE - -#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) - -#endif /* GL_ARB_texture_compression_rgtc */ - -/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 - -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C - -#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) - -#endif /* GL_ARB_texture_cube_map */ - -/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ - -#ifndef GL_ARB_texture_cube_map_array -#define GL_ARB_texture_cube_map_array 1 - -#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F - -#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) - -#endif /* GL_ARB_texture_cube_map_array */ - -/* ------------------------- GL_ARB_texture_env_add ------------------------ */ - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 - -#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) - -#endif /* GL_ARB_texture_env_add */ - -/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 - -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A - -#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) - -#endif /* GL_ARB_texture_env_combine */ - -/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 - -#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) - -#endif /* GL_ARB_texture_env_crossbar */ - -/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 - -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF - -#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) - -#endif /* GL_ARB_texture_env_dot3 */ - -/* -------------------------- GL_ARB_texture_float ------------------------- */ - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 - -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 - -#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) - -#endif /* GL_ARB_texture_float */ - -/* ------------------------- GL_ARB_texture_gather ------------------------- */ - -#ifndef GL_ARB_texture_gather -#define GL_ARB_texture_gather 1 - -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F - -#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) - -#endif /* GL_ARB_texture_gather */ - -/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_ARB 0x8370 - -#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) - -#endif /* GL_ARB_texture_mirrored_repeat */ - -/* ----------------------- GL_ARB_texture_multisample ---------------------- */ - -#ifndef GL_ARB_texture_multisample -#define GL_ARB_texture_multisample 1 - -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); - -#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) -#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) -#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) -#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) - -#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) - -#endif /* GL_ARB_texture_multisample */ - -/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 - -#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) - -#endif /* GL_ARB_texture_non_power_of_two */ - -/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ - -#ifndef GL_ARB_texture_query_lod -#define GL_ARB_texture_query_lod 1 - -#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) - -#endif /* GL_ARB_texture_query_lod */ - -/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 - -#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) - -#endif /* GL_ARB_texture_rectangle */ - -/* --------------------------- GL_ARB_texture_rg --------------------------- */ - -#ifndef GL_ARB_texture_rg -#define GL_ARB_texture_rg 1 - -#define GL_RED 0x1903 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C - -#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) - -#endif /* GL_ARB_texture_rg */ - -/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ - -#ifndef GL_ARB_texture_rgb10_a2ui -#define GL_ARB_texture_rgb10_a2ui 1 - -#define GL_RGB10_A2UI 0x906F - -#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) - -#endif /* GL_ARB_texture_rgb10_a2ui */ - -/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ - -#ifndef GL_ARB_texture_swizzle -#define GL_ARB_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 - -#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) - -#endif /* GL_ARB_texture_swizzle */ - -/* --------------------------- GL_ARB_timer_query -------------------------- */ - -#ifndef GL_ARB_timer_query -#define GL_ARB_timer_query 1 - -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); -typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); - -#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) -#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) -#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) - -#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) - -#endif /* GL_ARB_timer_query */ - -/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ - -#ifndef GL_ARB_transform_feedback2 -#define GL_ARB_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); - -#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) -#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) -#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) -#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) -#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) -#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) -#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) - -#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) - -#endif /* GL_ARB_transform_feedback2 */ - -/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ - -#ifndef GL_ARB_transform_feedback3 -#define GL_ARB_transform_feedback3 1 - -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); -typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); - -#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) -#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) -#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) -#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) - -#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) - -#endif /* GL_ARB_transform_feedback3 */ - -/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 - -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 - -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); - -#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) -#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) -#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) -#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) - -#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) - -#endif /* GL_ARB_transpose_matrix */ - -/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ - -#ifndef GL_ARB_uniform_buffer_object -#define GL_ARB_uniform_buffer_object 1 - -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, char* uniformName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); -typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const char** uniformNames, GLuint* uniformIndices); -typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); - -#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) -#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) -#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) -#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) -#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) -#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) -#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) -#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) -#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) -#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) - -#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) - -#endif /* GL_ARB_uniform_buffer_object */ - -/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ - -#ifndef GL_ARB_vertex_array_bgra -#define GL_ARB_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) - -#endif /* GL_ARB_vertex_array_bgra */ - -/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ - -#ifndef GL_ARB_vertex_array_object -#define GL_ARB_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); - -#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) -#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) -#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) -#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) - -#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) - -#endif /* GL_ARB_vertex_array_object */ - -/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_ARB_vertex_attrib_64bit -#define GL_ARB_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) -#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) -#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) -#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) -#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) -#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) -#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) -#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) -#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) -#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) - -#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) - -#endif /* GL_ARB_vertex_attrib_64bit */ - -/* -------------------------- GL_ARB_vertex_blend -------------------------- */ - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 - -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F - -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); -typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); - -#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) -#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) -#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) -#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) -#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) -#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) -#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) -#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) -#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) -#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) - -#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) - -#endif /* GL_ARB_vertex_blend */ - -/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 - -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA - -typedef ptrdiff_t GLsizeiptrARB; -typedef ptrdiff_t GLintptrARB; - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); - -#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) -#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) -#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) -#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) -#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) -#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) -#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) -#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) -#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) -#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) -#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) - -#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) - -#endif /* GL_ARB_vertex_buffer_object */ - -/* ------------------------- GL_ARB_vertex_program ------------------------- */ - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 - -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF - -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); - -#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) -#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) -#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) -#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) -#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) -#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) -#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) -#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) -#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) -#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) -#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) -#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) -#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) -#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) -#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) -#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) -#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) -#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) -#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) -#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) -#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) -#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) -#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) -#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) -#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) -#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) -#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) -#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) -#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) -#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) -#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) -#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) -#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) -#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) -#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) -#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) -#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) -#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) -#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) -#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) -#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) -#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) -#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) -#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) -#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) -#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) -#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) -#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) -#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) -#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) -#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) -#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) -#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) -#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) -#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) -#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) -#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) -#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) -#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) -#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) -#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) -#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) - -#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) - -#endif /* GL_ARB_vertex_program */ - -/* -------------------------- GL_ARB_vertex_shader ------------------------- */ - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 - -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A - -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); - -#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) -#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) -#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) - -#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) - -#endif /* GL_ARB_vertex_shader */ - -/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ - -#ifndef GL_ARB_vertex_type_2_10_10_10_rev -#define GL_ARB_vertex_type_2_10_10_10_rev 1 - -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_INT_2_10_10_10_REV 0x8D9F - -typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); - -#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) -#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) -#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) -#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) -#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) -#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) -#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) -#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) -#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) -#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) -#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) -#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) -#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) -#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) -#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) -#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) -#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) -#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) -#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) -#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) -#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) -#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) -#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) -#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) -#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) -#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) -#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) -#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) -#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) -#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) -#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) -#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) -#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) -#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) -#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) -#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) -#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) -#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) - -#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) - -#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ - -/* ------------------------- GL_ARB_viewport_array ------------------------- */ - -#ifndef GL_ARB_viewport_array -#define GL_ARB_viewport_array 1 - -#define GL_DEPTH_RANGE 0x0B70 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_MAX_VIEWPORTS 0x825B -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_UNDEFINED_VERTEX 0x8260 -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); - -#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) -#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) -#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) -#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) -#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) -#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) -#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) -#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) -#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) -#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) - -#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) - -#endif /* GL_ARB_viewport_array */ - -/* --------------------------- GL_ARB_window_pos --------------------------- */ - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); - -#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) -#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) -#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) -#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) -#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) -#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) -#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) -#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) -#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) -#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) -#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) -#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) -#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) -#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) -#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) -#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) - -#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) - -#endif /* GL_ARB_window_pos */ - -/* ------------------------- GL_ATIX_point_sprites ------------------------- */ - -#ifndef GL_ATIX_point_sprites -#define GL_ATIX_point_sprites 1 - -#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 -#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 -#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 -#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 -#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 -#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 - -#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) - -#endif /* GL_ATIX_point_sprites */ - -/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ - -#ifndef GL_ATIX_texture_env_combine3 -#define GL_ATIX_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATIX 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 -#define GL_MODULATE_SUBTRACT_ATIX 0x8746 - -#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) - -#endif /* GL_ATIX_texture_env_combine3 */ - -/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ - -#ifndef GL_ATIX_texture_env_route -#define GL_ATIX_texture_env_route 1 - -#define GL_SECONDARY_COLOR_ATIX 0x8747 -#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 -#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 - -#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) - -#endif /* GL_ATIX_texture_env_route */ - -/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ - -#ifndef GL_ATIX_vertex_shader_output_point_size -#define GL_ATIX_vertex_shader_output_point_size 1 - -#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E - -#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) - -#endif /* GL_ATIX_vertex_shader_output_point_size */ - -/* -------------------------- GL_ATI_draw_buffers -------------------------- */ - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) - -#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) - -#endif /* GL_ATI_draw_buffers */ - -/* -------------------------- GL_ATI_element_array ------------------------- */ - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 - -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); - -#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) -#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) -#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) - -#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) - -#endif /* GL_ATI_element_array */ - -/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 - -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C - -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); - -#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) -#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) -#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) -#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) - -#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) - -#endif /* GL_ATI_envmap_bumpmap */ - -/* ------------------------- GL_ATI_fragment_shader ------------------------ */ - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 - -#define GL_RED_BIT_ATI 0x00000001 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B - -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); - -#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) -#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) -#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) -#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) -#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) -#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) -#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) -#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) -#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) -#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) -#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) -#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) -#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) -#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) - -#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) - -#endif /* GL_ATI_fragment_shader */ - -/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 - -typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); - -#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) -#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) - -#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) - -#endif /* GL_ATI_map_object_buffer */ - -/* ----------------------------- GL_ATI_meminfo ---------------------------- */ - -#ifndef GL_ATI_meminfo -#define GL_ATI_meminfo 1 - -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD - -#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) - -#endif /* GL_ATI_meminfo */ - -/* -------------------------- GL_ATI_pn_triangles -------------------------- */ - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 - -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 - -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); - -#define glPNTrianglesfATI GLEW_GET_FUN(__glPNTrianglewesfATI) -#define glPNTrianglesiATI GLEW_GET_FUN(__glPNTrianglewesiATI) - -#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) - -#endif /* GL_ATI_pn_triangles */ - -/* ------------------------ GL_ATI_separate_stencil ------------------------ */ - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 - -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 - -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); - -#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) -#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) - -#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) - -#endif /* GL_ATI_separate_stencil */ - -/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ - -#ifndef GL_ATI_shader_texture_lod -#define GL_ATI_shader_texture_lod 1 - -#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) - -#endif /* GL_ATI_shader_texture_lod */ - -/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 - -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 - -#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) - -#endif /* GL_ATI_text_fragment_shader */ - -/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ - -#ifndef GL_ATI_texture_compression_3dc -#define GL_ATI_texture_compression_3dc 1 - -#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 - -#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) - -#endif /* GL_ATI_texture_compression_3dc */ - -/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 - -#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) - -#endif /* GL_ATI_texture_env_combine3 */ - -/* -------------------------- GL_ATI_texture_float ------------------------- */ - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 - -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F - -#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) - -#endif /* GL_ATI_texture_float */ - -/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 - -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 - -#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) - -#endif /* GL_ATI_texture_mirror_once */ - -/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 - -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 - -typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); -typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); -typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); - -#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) -#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) -#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) -#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) -#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) -#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) -#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) -#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) -#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) -#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) -#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) -#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) - -#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) - -#endif /* GL_ATI_vertex_array_object */ - -/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); - -#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) -#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) -#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) - -#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) - -#endif /* GL_ATI_vertex_attrib_array_object */ - -/* ------------------------- GL_ATI_vertex_streams ------------------------- */ - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 - -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_SOURCE_ATI 0x876C -#define GL_VERTEX_STREAM0_ATI 0x876D -#define GL_VERTEX_STREAM1_ATI 0x876E -#define GL_VERTEX_STREAM2_ATI 0x876F -#define GL_VERTEX_STREAM3_ATI 0x8770 -#define GL_VERTEX_STREAM4_ATI 0x8771 -#define GL_VERTEX_STREAM5_ATI 0x8772 -#define GL_VERTEX_STREAM6_ATI 0x8773 -#define GL_VERTEX_STREAM7_ATI 0x8774 - -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); - -#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) -#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) -#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) -#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) -#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) -#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) -#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) -#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) -#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) -#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) -#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) -#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) -#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) -#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) -#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) -#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) -#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) -#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) -#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) -#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) -#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) -#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) -#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) -#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) -#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) -#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) -#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) -#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) -#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) -#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) -#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) -#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) -#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) -#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) -#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) -#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) -#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) - -#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) - -#endif /* GL_ATI_vertex_streams */ - -/* --------------------------- GL_EXT_422_pixels --------------------------- */ - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 - -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF - -#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) - -#endif /* GL_EXT_422_pixels */ - -/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ - -#ifndef GL_EXT_Cg_shader -#define GL_EXT_Cg_shader 1 - -#define GL_CG_VERTEX_SHADER_EXT 0x890E -#define GL_CG_FRAGMENT_SHADER_EXT 0x890F - -#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) - -#endif /* GL_EXT_Cg_shader */ - -/* ------------------------------ GL_EXT_abgr ------------------------------ */ - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 - -#define GL_ABGR_EXT 0x8000 - -#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) - -#endif /* GL_EXT_abgr */ - -/* ------------------------------ GL_EXT_bgra ------------------------------ */ - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 - -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 - -#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) - -#endif /* GL_EXT_bgra */ - -/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 - -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF - -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); - -#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) -#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) -#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) - -#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) - -#endif /* GL_EXT_bindable_uniform */ - -/* --------------------------- GL_EXT_blend_color -------------------------- */ - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 - -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 - -typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - -#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) - -#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) - -#endif /* GL_EXT_blend_color */ - -/* --------------------- GL_EXT_blend_equation_separate -------------------- */ - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 - -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); - -#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) - -#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) - -#endif /* GL_EXT_blend_equation_separate */ - -/* ----------------------- GL_EXT_blend_func_separate ---------------------- */ - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 - -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB - -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); - -#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) - -#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) - -#endif /* GL_EXT_blend_func_separate */ - -/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 - -#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) - -#endif /* GL_EXT_blend_logic_op */ - -/* -------------------------- GL_EXT_blend_minmax -------------------------- */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 - -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); - -#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) - -#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) - -#endif /* GL_EXT_blend_minmax */ - -/* ------------------------- GL_EXT_blend_subtract ------------------------- */ - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 - -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B - -#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) - -#endif /* GL_EXT_blend_subtract */ - -/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 - -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 - -#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) - -#endif /* GL_EXT_clip_volume_hint */ - -/* ------------------------------ GL_EXT_cmyka ----------------------------- */ - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 - -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F - -#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) - -#endif /* GL_EXT_cmyka */ - -/* ------------------------- GL_EXT_color_subtable ------------------------- */ - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); - -#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) -#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) - -#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) - -#endif /* GL_EXT_color_subtable */ - -/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 - -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 - -typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); - -#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) -#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) - -#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) - -#endif /* GL_EXT_compiled_vertex_array */ - -/* --------------------------- GL_EXT_convolution -------------------------- */ - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 - -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 - -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); - -#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) -#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) -#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) -#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) -#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) -#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) -#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) -#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) -#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) -#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) -#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) -#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) -#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) - -#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) - -#endif /* GL_EXT_convolution */ - -/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 - -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 - -typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); - -#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) -#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) - -#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) - -#endif /* GL_EXT_coordinate_frame */ - -/* -------------------------- GL_EXT_copy_texture -------------------------- */ - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 - -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) -#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) -#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) -#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) -#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) - -#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) - -#endif /* GL_EXT_copy_texture */ - -/* --------------------------- GL_EXT_cull_vertex -------------------------- */ - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 - -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC - -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); - -#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) -#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) - -#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) - -#endif /* GL_EXT_cull_vertex */ - -/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 - -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 - -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); - -#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) - -#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) - -#endif /* GL_EXT_depth_bounds_test */ - -/* ----------------------- GL_EXT_direct_state_access ---------------------- */ - -#ifndef GL_EXT_direct_state_access -#define GL_EXT_direct_state_access 1 - -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F - -typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); -typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid** param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid** param); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); -typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); - -#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) -#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) -#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) -#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) -#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) -#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) -#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) -#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) -#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) -#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) -#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) -#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) -#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) -#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) -#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) -#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) -#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) -#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) -#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) -#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) -#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) -#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) -#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) -#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) -#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) -#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) -#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) -#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) -#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) -#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) -#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) -#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) -#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) -#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) -#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) -#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) -#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) -#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) -#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) -#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) -#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) -#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) -#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) -#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) -#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) -#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) -#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) -#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) -#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) -#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) -#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) -#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) -#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) -#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) -#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) -#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) -#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) -#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) -#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) -#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) -#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) -#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) -#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) -#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) -#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) -#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) -#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) -#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) -#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) -#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) -#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) -#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) -#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) -#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) -#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) -#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) -#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) -#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) -#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) -#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) -#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) -#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) -#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) -#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) -#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) -#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) -#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) -#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) -#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) -#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) -#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) -#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) -#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) -#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) -#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) -#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) -#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) -#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) -#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) -#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) -#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) -#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) -#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) -#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) -#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) -#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) -#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) -#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) -#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) -#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) -#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) -#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) -#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) -#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) -#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) -#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) -#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) -#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) -#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) -#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) -#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) -#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) -#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) -#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) -#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) -#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) -#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) -#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) -#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) -#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) -#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) -#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) -#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) -#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) -#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) -#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) -#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) -#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) -#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) -#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) -#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) -#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) -#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) -#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) -#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) -#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) -#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) -#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) -#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) -#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) -#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) -#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) -#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) -#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) -#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) -#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) -#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) -#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) -#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) -#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) -#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) -#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) -#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) -#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) -#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) -#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) -#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) -#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) -#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) -#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) -#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) -#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) -#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) -#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) -#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) -#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) -#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) -#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) -#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) -#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) -#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) -#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) -#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) -#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) -#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) -#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) -#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) -#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) -#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) -#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) -#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) -#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) -#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) -#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) -#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) -#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) -#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) -#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) -#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) -#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) -#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) -#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) -#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) -#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) -#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) -#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) -#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) -#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) -#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) -#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) -#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) -#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) -#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) - -#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) - -#endif /* GL_EXT_direct_state_access */ - -/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 - -typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); -typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); - -#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) -#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) -#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) -#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) -#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) -#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) - -#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) - -#endif /* GL_EXT_draw_buffers2 */ - -/* ------------------------- GL_EXT_draw_instanced ------------------------- */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); - -#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) -#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) - -#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) - -#endif /* GL_EXT_draw_instanced */ - -/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 - -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 - -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); - -#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) - -#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) - -#endif /* GL_EXT_draw_range_elements */ - -/* ---------------------------- GL_EXT_fog_coord --------------------------- */ - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 - -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 - -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); - -#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) -#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) -#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) -#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) -#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) - -#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) - -#endif /* GL_EXT_fog_coord */ - -/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ - -#ifndef GL_EXT_fragment_lighting -#define GL_EXT_fragment_lighting 1 - -#define GL_FRAGMENT_LIGHTING_EXT 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 -#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 -#define GL_LIGHT_ENV_MODE_EXT 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B -#define GL_FRAGMENT_LIGHT0_EXT 0x840C -#define GL_FRAGMENT_LIGHT7_EXT 0x8413 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); - -#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) -#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) -#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) -#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) -#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) -#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) -#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) -#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) -#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) -#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) -#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) -#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) -#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) -#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) -#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) -#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) -#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) -#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) - -#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) - -#endif /* GL_EXT_fragment_lighting */ - -/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 - -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA - -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - -#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) - -#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) - -#endif /* GL_EXT_framebuffer_blit */ - -/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 - -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) - -#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) - -#endif /* GL_EXT_framebuffer_multisample */ - -/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) -#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) -#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) -#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) -#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) -#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) -#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) -#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) -#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) -#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) -#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) -#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) -#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) -#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) -#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) -#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) -#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) - -#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) - -#endif /* GL_EXT_framebuffer_object */ - -/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA - -#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) - -#endif /* GL_EXT_framebuffer_sRGB */ - -/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_EXT 0xA -#define GL_LINE_STRIP_ADJACENCY_EXT 0xB -#define GL_TRIANGLES_ADJACENCY_EXT 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) -#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) -#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) -#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) - -#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) - -#endif /* GL_EXT_geometry_shader4 */ - -/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); - -#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) -#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) - -#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) - -#endif /* GL_EXT_gpu_program_parameters */ - -/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); - -#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) -#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) -#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) -#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) -#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) -#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) -#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) -#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) -#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) -#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) -#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) -#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) -#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) -#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) -#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) -#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) -#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) -#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) -#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) -#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) -#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) -#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) -#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) -#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) -#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) -#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) -#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) -#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) -#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) -#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) -#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) -#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) -#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) -#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) - -#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) - -#endif /* GL_EXT_gpu_shader4 */ - -/* ---------------------------- GL_EXT_histogram --------------------------- */ - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 - -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 - -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); - -#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) -#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) -#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) -#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) -#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) -#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) -#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) -#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) -#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) -#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) - -#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) - -#endif /* GL_EXT_histogram */ - -/* ----------------------- GL_EXT_index_array_formats ---------------------- */ - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 - -#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) - -#endif /* GL_EXT_index_array_formats */ - -/* --------------------------- GL_EXT_index_func --------------------------- */ - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 - -typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); - -#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) - -#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) - -#endif /* GL_EXT_index_func */ - -/* ------------------------- GL_EXT_index_material ------------------------- */ - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 - -typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) - -#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) - -#endif /* GL_EXT_index_material */ - -/* -------------------------- GL_EXT_index_texture ------------------------- */ - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 - -#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) - -#endif /* GL_EXT_index_texture */ - -/* -------------------------- GL_EXT_light_texture ------------------------- */ - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 - -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 - -typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) -#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) -#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) - -#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) - -#endif /* GL_EXT_light_texture */ - -/* ------------------------- GL_EXT_misc_attribute ------------------------- */ - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 - -#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) - -#endif /* GL_EXT_misc_attribute */ - -/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); - -#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) -#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) - -#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) - -#endif /* GL_EXT_multi_draw_arrays */ - -/* --------------------------- GL_EXT_multisample -------------------------- */ - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 - -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); - -#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) -#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) - -#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) - -#endif /* GL_EXT_multisample */ - -/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 - -#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) - -#endif /* GL_EXT_packed_depth_stencil */ - -/* -------------------------- GL_EXT_packed_float -------------------------- */ - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 - -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C - -#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) - -#endif /* GL_EXT_packed_float */ - -/* -------------------------- GL_EXT_packed_pixels ------------------------- */ - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 - -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 - -#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) - -#endif /* GL_EXT_packed_pixels */ - -/* ------------------------ GL_EXT_paletted_texture ------------------------ */ - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 - -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 -#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); - -#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) -#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) -#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) -#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) - -#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) - -#endif /* GL_EXT_paletted_texture */ - -/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF - -#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) - -#endif /* GL_EXT_pixel_buffer_object */ - -/* ------------------------- GL_EXT_pixel_transform ------------------------ */ - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 - -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 - -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) -#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) -#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) -#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) -#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) -#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) - -#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) - -#endif /* GL_EXT_pixel_transform */ - -/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 - -#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) - -#endif /* GL_EXT_pixel_transform_color_table */ - -/* ------------------------ GL_EXT_point_parameters ------------------------ */ - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 - -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) -#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) - -#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) - -#endif /* GL_EXT_point_parameters */ - -/* ------------------------- GL_EXT_polygon_offset ------------------------- */ - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 - -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 - -typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); - -#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) - -#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) - -#endif /* GL_EXT_polygon_offset */ - -/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ - -#ifndef GL_EXT_provoking_vertex -#define GL_EXT_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_PROVOKING_VERTEX_EXT 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); - -#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) - -#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) - -#endif /* GL_EXT_provoking_vertex */ - -/* ------------------------- GL_EXT_rescale_normal ------------------------- */ - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 - -#define GL_RESCALE_NORMAL_EXT 0x803A - -#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) - -#endif /* GL_EXT_rescale_normal */ - -/* -------------------------- GL_EXT_scene_marker -------------------------- */ - -#ifndef GL_EXT_scene_marker -#define GL_EXT_scene_marker 1 - -typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); - -#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) -#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) - -#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) - -#endif /* GL_EXT_scene_marker */ - -/* ------------------------- GL_EXT_secondary_color ------------------------ */ - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 - -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E - -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); - -#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) -#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) -#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) -#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) -#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) -#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) -#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) -#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) -#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) -#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) -#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) -#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) -#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) -#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) -#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) -#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) -#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) - -#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) - -#endif /* GL_EXT_secondary_color */ - -/* --------------------- GL_EXT_separate_shader_objects -------------------- */ - -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 - -#define GL_ACTIVE_PROGRAM_EXT 0x8B8D - -typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const char* string); -typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); - -#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) -#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) -#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) - -#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) - -#endif /* GL_EXT_separate_shader_objects */ - -/* --------------------- GL_EXT_separate_specular_color -------------------- */ - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 - -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA - -#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) - -#endif /* GL_EXT_separate_specular_color */ - -/* --------------------- GL_EXT_shader_image_load_store -------------------- */ - -#ifndef GL_EXT_shader_image_load_store -#define GL_EXT_shader_image_load_store 1 - -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 -#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 -#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 -#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 -#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 -#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 -#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 -#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 -#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 -#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 -#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 -#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A -#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B -#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C -#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D -#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E -#define GL_IMAGE_1D_EXT 0x904C -#define GL_IMAGE_2D_EXT 0x904D -#define GL_IMAGE_3D_EXT 0x904E -#define GL_IMAGE_2D_RECT_EXT 0x904F -#define GL_IMAGE_CUBE_EXT 0x9050 -#define GL_IMAGE_BUFFER_EXT 0x9051 -#define GL_IMAGE_1D_ARRAY_EXT 0x9052 -#define GL_IMAGE_2D_ARRAY_EXT 0x9053 -#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 -#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 -#define GL_INT_IMAGE_1D_EXT 0x9057 -#define GL_INT_IMAGE_2D_EXT 0x9058 -#define GL_INT_IMAGE_3D_EXT 0x9059 -#define GL_INT_IMAGE_2D_RECT_EXT 0x905A -#define GL_INT_IMAGE_CUBE_EXT 0x905B -#define GL_INT_IMAGE_BUFFER_EXT 0x905C -#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D -#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E -#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F -#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 -#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 -#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 -#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C -#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D -#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E -#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); -typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); - -#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) -#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) - -#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) - -#endif /* GL_EXT_shader_image_load_store */ - -/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 - -#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) - -#endif /* GL_EXT_shadow_funcs */ - -/* --------------------- GL_EXT_shared_texture_palette --------------------- */ - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 - -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB - -#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) - -#endif /* GL_EXT_shared_texture_palette */ - -/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 - -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 - -#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) - -#endif /* GL_EXT_stencil_clear_tag */ - -/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 - -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 - -typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); - -#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) - -#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) - -#endif /* GL_EXT_stencil_two_side */ - -/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 - -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 - -#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) - -#endif /* GL_EXT_stencil_wrap */ - -/* --------------------------- GL_EXT_subtexture --------------------------- */ - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 - -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); - -#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) -#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) -#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) - -#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) - -#endif /* GL_EXT_subtexture */ - -/* ----------------------------- GL_EXT_texture ---------------------------- */ - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 - -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 - -#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) - -#endif /* GL_EXT_texture */ - -/* ---------------------------- GL_EXT_texture3D --------------------------- */ - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 - -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); - -#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) - -#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) - -#endif /* GL_EXT_texture3D */ - -/* -------------------------- GL_EXT_texture_array ------------------------- */ - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 - -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D - -#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) - -#endif /* GL_EXT_texture_array */ - -/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) - -#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) - -#endif /* GL_EXT_texture_buffer_object */ - -/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ - -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 - -#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) - -#endif /* GL_EXT_texture_compression_dxt1 */ - -/* -------------------- GL_EXT_texture_compression_latc -------------------- */ - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 - -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 - -#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) - -#endif /* GL_EXT_texture_compression_latc */ - -/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE - -#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) - -#endif /* GL_EXT_texture_compression_rgtc */ - -/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 - -#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) - -#endif /* GL_EXT_texture_compression_s3tc */ - -/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ - -#ifndef GL_EXT_texture_cube_map -#define GL_EXT_texture_cube_map 1 - -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C - -#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) - -#endif /* GL_EXT_texture_cube_map */ - -/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ - -#ifndef GL_EXT_texture_edge_clamp -#define GL_EXT_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_EXT 0x812F - -#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) - -#endif /* GL_EXT_texture_edge_clamp */ - -/* --------------------------- GL_EXT_texture_env -------------------------- */ - -#ifndef GL_EXT_texture_env -#define GL_EXT_texture_env 1 - -#define GL_TEXTURE_ENV0_EXT 0 -#define GL_ENV_BLEND_EXT 0 -#define GL_TEXTURE_ENV_SHIFT_EXT 0 -#define GL_ENV_REPLACE_EXT 0 -#define GL_ENV_ADD_EXT 0 -#define GL_ENV_SUBTRACT_EXT 0 -#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 -#define GL_ENV_REVERSE_SUBTRACT_EXT 0 -#define GL_ENV_REVERSE_BLEND_EXT 0 -#define GL_ENV_COPY_EXT 0 -#define GL_ENV_MODULATE_EXT 0 - -#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) - -#endif /* GL_EXT_texture_env */ - -/* ------------------------- GL_EXT_texture_env_add ------------------------ */ - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 - -#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) - -#endif /* GL_EXT_texture_env_add */ - -/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 - -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A - -#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) - -#endif /* GL_EXT_texture_env_combine */ - -/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 - -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 - -#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) - -#endif /* GL_EXT_texture_env_dot3 */ - -/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 - -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF - -#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) - -#endif /* GL_EXT_texture_filter_anisotropic */ - -/* ------------------------- GL_EXT_texture_integer ------------------------ */ - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 - -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E - -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); - -#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) -#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) -#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) -#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) -#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) -#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) - -#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) - -#endif /* GL_EXT_texture_integer */ - -/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 - -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 - -#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) - -#endif /* GL_EXT_texture_lod_bias */ - -/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 - -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 - -#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) - -#endif /* GL_EXT_texture_mirror_clamp */ - -/* ------------------------- GL_EXT_texture_object ------------------------- */ - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 - -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A - -typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); -typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); -typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); -typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); - -#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) -#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) -#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) -#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) -#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) -#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) - -#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) - -#endif /* GL_EXT_texture_object */ - -/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 - -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF - -typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); - -#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) - -#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) - -#endif /* GL_EXT_texture_perturb_normal */ - -/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ - -#ifndef GL_EXT_texture_rectangle -#define GL_EXT_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 - -#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) - -#endif /* GL_EXT_texture_rectangle */ - -/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F - -#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) - -#endif /* GL_EXT_texture_sRGB */ - -/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 - -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F - -#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) - -#endif /* GL_EXT_texture_shared_exponent */ - -/* -------------------------- GL_EXT_texture_snorm ------------------------- */ - -#ifndef GL_EXT_texture_snorm -#define GL_EXT_texture_snorm 1 - -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_ALPHA_SNORM 0x9010 -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_ALPHA8_SNORM 0x9014 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_ALPHA16_SNORM 0x9018 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_INTENSITY16_SNORM 0x901B - -#define GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) - -#endif /* GL_EXT_texture_snorm */ - -/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ - -#ifndef GL_EXT_texture_swizzle -#define GL_EXT_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 - -#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) - -#endif /* GL_EXT_texture_swizzle */ - -/* --------------------------- GL_EXT_timer_query -------------------------- */ - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 - -#define GL_TIME_ELAPSED_EXT 0x88BF - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); - -#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) -#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) - -#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) - -#endif /* GL_EXT_timer_query */ - -/* ----------------------- GL_EXT_transform_feedback ----------------------- */ - -#ifndef GL_EXT_transform_feedback -#define GL_EXT_transform_feedback 1 - -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F - -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); - -#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) -#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) -#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) -#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) -#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) -#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) -#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) - -#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) - -#endif /* GL_EXT_transform_feedback */ - -/* -------------------------- GL_EXT_vertex_array -------------------------- */ - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 - -#define GL_DOUBLE_EXT 0x140A -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 - -typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); - -#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) -#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) -#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) -#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) -#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) -#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) -#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) -#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) - -#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) - -#endif /* GL_EXT_vertex_array */ - -/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ - -#ifndef GL_EXT_vertex_array_bgra -#define GL_EXT_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) - -#endif /* GL_EXT_vertex_array_bgra */ - -/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_EXT_vertex_attrib_64bit -#define GL_EXT_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2_EXT 0x8F46 -#define GL_DOUBLE_MAT3_EXT 0x8F47 -#define GL_DOUBLE_MAT4_EXT 0x8F48 -#define GL_DOUBLE_VEC2_EXT 0x8FFC -#define GL_DOUBLE_VEC3_EXT 0x8FFD -#define GL_DOUBLE_VEC4_EXT 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) -#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) -#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) -#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) -#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) -#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) -#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) -#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) -#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) -#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) -#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) - -#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) - -#endif /* GL_EXT_vertex_attrib_64bit */ - -/* -------------------------- GL_EXT_vertex_shader ------------------------- */ - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 - -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED - -typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); -typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); -typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); -typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); - -#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) -#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) -#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) -#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) -#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) -#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) -#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) -#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) -#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) -#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) -#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) -#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) -#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) -#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) -#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) -#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) -#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) -#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) -#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) -#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) -#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) -#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) -#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) -#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) -#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) -#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) -#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) -#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) -#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) -#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) -#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) -#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) -#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) -#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) -#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) -#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) -#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) -#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) -#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) -#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) -#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) -#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) - -#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) - -#endif /* GL_EXT_vertex_shader */ - -/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 - -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 - -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); - -#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) -#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) -#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) - -#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) - -#endif /* GL_EXT_vertex_weighting */ - -/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ - -#ifndef GL_GREMEDY_frame_terminator -#define GL_GREMEDY_frame_terminator 1 - -typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); - -#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) - -#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) - -#endif /* GL_GREMEDY_frame_terminator */ - -/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 - -typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); - -#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) - -#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) - -#endif /* GL_GREMEDY_string_marker */ - -/* --------------------- GL_HP_convolution_border_modes -------------------- */ - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 - -#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) - -#endif /* GL_HP_convolution_border_modes */ - -/* ------------------------- GL_HP_image_transform ------------------------- */ - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 - -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) -#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) -#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) -#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) -#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) -#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) - -#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) - -#endif /* GL_HP_image_transform */ - -/* -------------------------- GL_HP_occlusion_test ------------------------- */ - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 - -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 - -#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) - -#endif /* GL_HP_occlusion_test */ - -/* ------------------------- GL_HP_texture_lighting ------------------------ */ - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 - -#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) - -#endif /* GL_HP_texture_lighting */ - -/* --------------------------- GL_IBM_cull_vertex -------------------------- */ - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 - -#define GL_CULL_VERTEX_IBM 103050 - -#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) - -#endif /* GL_IBM_cull_vertex */ - -/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); - -#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) -#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) - -#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) - -#endif /* GL_IBM_multimode_draw_arrays */ - -/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 - -#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 - -#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) - -#endif /* GL_IBM_rasterpos_clip */ - -/* --------------------------- GL_IBM_static_data -------------------------- */ - -#ifndef GL_IBM_static_data -#define GL_IBM_static_data 1 - -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 - -#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) - -#endif /* GL_IBM_static_data */ - -/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_IBM_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_IBM 0x8370 - -#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) - -#endif /* GL_IBM_texture_mirrored_repeat */ - -/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 - -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); - -#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) -#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) -#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) -#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) -#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) -#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) -#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) -#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) - -#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) - -#endif /* GL_IBM_vertex_array_lists */ - -/* -------------------------- GL_INGR_color_clamp -------------------------- */ - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 - -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 - -#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) - -#endif /* GL_INGR_color_clamp */ - -/* ------------------------- GL_INGR_interlace_read ------------------------ */ - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 - -#define GL_INTERLACE_READ_INGR 0x8568 - -#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) - -#endif /* GL_INGR_interlace_read */ - -/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 - -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); - -#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) -#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) -#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) -#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) - -#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) - -#endif /* GL_INTEL_parallel_arrays */ - -/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ - -#ifndef GL_INTEL_texture_scissor -#define GL_INTEL_texture_scissor 1 - -typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); -typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); - -#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) -#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) - -#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) - -#endif /* GL_INTEL_texture_scissor */ - -/* -------------------------- GL_KTX_buffer_region ------------------------- */ - -#ifndef GL_KTX_buffer_region -#define GL_KTX_buffer_region 1 - -#define GL_KTX_FRONT_REGION 0x0 -#define GL_KTX_BACK_REGION 0x1 -#define GL_KTX_Z_REGION 0x2 -#define GL_KTX_STENCIL_REGION 0x3 - -typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); -typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glBufferRegionEnabledEXT GLEW_GET_FUN(__glewBufferRegionEnabledEXT) -#define glDeleteBufferRegionEXT GLEW_GET_FUN(__glewDeleteBufferRegionEXT) -#define glDrawBufferRegionEXT GLEW_GET_FUN(__glewDrawBufferRegionEXT) -#define glNewBufferRegionEXT GLEW_GET_FUN(__glewNewBufferRegionEXT) -#define glReadBufferRegionEXT GLEW_GET_FUN(__glewReadBufferRegionEXT) - -#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) - -#endif /* GL_KTX_buffer_region */ - -/* ------------------------- GL_MESAX_texture_stack ------------------------ */ - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 - -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E - -#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) - -#endif /* GL_MESAX_texture_stack */ - -/* -------------------------- GL_MESA_pack_invert -------------------------- */ - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 - -#define GL_PACK_INVERT_MESA 0x8758 - -#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) - -#endif /* GL_MESA_pack_invert */ - -/* ------------------------- GL_MESA_resize_buffers ------------------------ */ - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 - -typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); - -#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) - -#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) - -#endif /* GL_MESA_resize_buffers */ - -/* --------------------------- GL_MESA_window_pos -------------------------- */ - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); - -#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) -#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) -#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) -#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) -#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) -#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) -#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) -#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) -#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) -#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) -#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) -#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) -#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) -#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) -#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) -#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) -#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) -#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) -#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) -#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) -#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) -#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) -#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) -#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) - -#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) - -#endif /* GL_MESA_window_pos */ - -/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 - -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 - -#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) - -#endif /* GL_MESA_ycbcr_texture */ - -/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ - -#ifndef GL_NVX_gpu_memory_info -#define GL_NVX_gpu_memory_info 1 - -#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 -#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 -#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 -#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A -#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B - -#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) - -#endif /* GL_NVX_gpu_memory_info */ - -/* --------------------------- GL_NV_blend_square -------------------------- */ - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 - -#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) - -#endif /* GL_NV_blend_square */ - -/* ------------------------ GL_NV_conditional_render ----------------------- */ - -#ifndef GL_NV_conditional_render -#define GL_NV_conditional_render 1 - -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); - -#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) -#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) - -#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) - -#endif /* GL_NV_conditional_render */ - -/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 - -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F - -#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) - -#endif /* GL_NV_copy_depth_to_color */ - -/* ---------------------------- GL_NV_copy_image --------------------------- */ - -#ifndef GL_NV_copy_image -#define GL_NV_copy_image 1 - -typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); - -#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) - -#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) - -#endif /* GL_NV_copy_image */ - -/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); - -#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) -#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) -#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) - -#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) - -#endif /* GL_NV_depth_buffer_float */ - -/* --------------------------- GL_NV_depth_clamp --------------------------- */ - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 - -#define GL_DEPTH_CLAMP_NV 0x864F - -#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) - -#endif /* GL_NV_depth_clamp */ - -/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ - -#ifndef GL_NV_depth_range_unclamped -#define GL_NV_depth_range_unclamped 1 - -#define GL_SAMPLE_COUNT_BITS_NV 0x8864 -#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 -#define GL_QUERY_RESULT_NV 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 -#define GL_SAMPLE_COUNT_NV 0x8914 - -#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) - -#endif /* GL_NV_depth_range_unclamped */ - -/* ---------------------------- GL_NV_evaluators --------------------------- */ - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 - -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 - -typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) -#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) -#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) -#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) -#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) -#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) -#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) -#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) -#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) - -#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) - -#endif /* GL_NV_evaluators */ - -/* ----------------------- GL_NV_explicit_multisample ---------------------- */ - -#ifndef GL_NV_explicit_multisample -#define GL_NV_explicit_multisample 1 - -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); - -#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) -#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) -#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) - -#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) - -#endif /* GL_NV_explicit_multisample */ - -/* ------------------------------ GL_NV_fence ------------------------------ */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 - -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); -typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); - -#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) -#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) -#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) -#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) -#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) -#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) -#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) - -#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) - -#endif /* GL_NV_fence */ - -/* --------------------------- GL_NV_float_buffer -------------------------- */ - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 - -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E - -#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) - -#endif /* GL_NV_float_buffer */ - -/* --------------------------- GL_NV_fog_distance -------------------------- */ - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 - -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C - -#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) - -#endif /* GL_NV_fog_distance */ - -/* ------------------------- GL_NV_fragment_program ------------------------ */ - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 - -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); - -#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) -#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) -#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) -#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) -#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) -#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) - -#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) - -#endif /* GL_NV_fragment_program */ - -/* ------------------------ GL_NV_fragment_program2 ------------------------ */ - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 - -#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) - -#endif /* GL_NV_fragment_program2 */ - -/* ------------------------ GL_NV_fragment_program4 ------------------------ */ - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 - -#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) - -#endif /* GL_NV_fragment_program4 */ - -/* --------------------- GL_NV_fragment_program_option --------------------- */ - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 - -#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) - -#endif /* GL_NV_fragment_program_option */ - -/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 - -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) - -#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) - -#endif /* GL_NV_framebuffer_multisample_coverage */ - -/* ------------------------ GL_NV_geometry_program4 ------------------------ */ - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 - -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 - -typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); - -#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) - -#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) - -#endif /* GL_NV_geometry_program4 */ - -/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 - -#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) - -#endif /* GL_NV_geometry_shader4 */ - -/* --------------------------- GL_NV_gpu_program4 -------------------------- */ - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 - -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); - -#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) -#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) -#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) -#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) -#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) -#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) -#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) -#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) -#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) -#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) -#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) -#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) - -#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) - -#endif /* GL_NV_gpu_program4 */ - -/* --------------------------- GL_NV_gpu_program5 -------------------------- */ - -#ifndef GL_NV_gpu_program5 -#define GL_NV_gpu_program5 1 - -#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C -#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F - -#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) - -#endif /* GL_NV_gpu_program5 */ - -/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ - -#ifndef GL_NV_gpu_program_fp64 -#define GL_NV_gpu_program_fp64 1 - -#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) - -#endif /* GL_NV_gpu_program_fp64 */ - -/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ - -#ifndef GL_NV_gpu_shader5 -#define GL_NV_gpu_shader5 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F -#define GL_INT8_NV 0x8FE0 -#define GL_INT8_VEC2_NV 0x8FE1 -#define GL_INT8_VEC3_NV 0x8FE2 -#define GL_INT8_VEC4_NV 0x8FE3 -#define GL_INT16_NV 0x8FE4 -#define GL_INT16_VEC2_NV 0x8FE5 -#define GL_INT16_VEC3_NV 0x8FE6 -#define GL_INT16_VEC4_NV 0x8FE7 -#define GL_INT64_VEC2_NV 0x8FE9 -#define GL_INT64_VEC3_NV 0x8FEA -#define GL_INT64_VEC4_NV 0x8FEB -#define GL_UNSIGNED_INT8_NV 0x8FEC -#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED -#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE -#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF -#define GL_UNSIGNED_INT16_NV 0x8FF0 -#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 -#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 -#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 -#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 -#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 -#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) -#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) -#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) -#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) -#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) -#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) -#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) -#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) -#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) -#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) -#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) -#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) -#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) -#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) -#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) -#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) -#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) -#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) -#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) -#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) -#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) -#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) -#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) -#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) -#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) -#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) -#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) -#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) -#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) -#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) -#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) -#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) -#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) -#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) - -#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) - -#endif /* GL_NV_gpu_shader5 */ - -/* ---------------------------- GL_NV_half_float --------------------------- */ - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 - -#define GL_HALF_FLOAT_NV 0x140B - -typedef unsigned short GLhalf; - -typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); -typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); -typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); - -#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) -#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) -#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) -#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) -#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) -#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) -#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) -#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) -#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) -#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) -#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) -#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) -#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) -#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) -#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) -#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) -#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) -#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) -#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) -#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) -#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) -#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) -#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) -#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) -#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) -#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) -#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) -#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) -#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) -#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) -#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) -#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) -#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) -#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) -#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) -#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) -#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) -#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) -#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) -#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) -#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) -#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) -#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) -#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) -#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) -#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) - -#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) - -#endif /* GL_NV_half_float */ - -/* ------------------------ GL_NV_light_max_exponent ----------------------- */ - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 - -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 - -#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) - -#endif /* GL_NV_light_max_exponent */ - -/* ----------------------- GL_NV_multisample_coverage ---------------------- */ - -#ifndef GL_NV_multisample_coverage -#define GL_NV_multisample_coverage 1 - -#define GL_COVERAGE_SAMPLES_NV 0x80A9 -#define GL_COLOR_SAMPLES_NV 0x8E20 - -#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) - -#endif /* GL_NV_multisample_coverage */ - -/* --------------------- GL_NV_multisample_filter_hint --------------------- */ - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 - -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 - -#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) - -#endif /* GL_NV_multisample_filter_hint */ - -/* ------------------------- GL_NV_occlusion_query ------------------------- */ - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 - -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 - -typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); - -#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) -#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) -#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) -#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) -#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) -#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) -#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) - -#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) - -#endif /* GL_NV_occlusion_query */ - -/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA - -#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) - -#endif /* GL_NV_packed_depth_stencil */ - -/* --------------------- GL_NV_parameter_buffer_object --------------------- */ - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 - -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 - -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); - -#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) -#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) -#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) - -#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) - -#endif /* GL_NV_parameter_buffer_object */ - -/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ - -#ifndef GL_NV_parameter_buffer_object2 -#define GL_NV_parameter_buffer_object2 1 - -#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) - -#endif /* GL_NV_parameter_buffer_object2 */ - -/* ------------------------- GL_NV_pixel_data_range ------------------------ */ - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 - -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D - -typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); - -#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) -#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) - -#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) - -#endif /* GL_NV_pixel_data_range */ - -/* --------------------------- GL_NV_point_sprite -------------------------- */ - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 - -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); - -#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) -#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) - -#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) - -#endif /* GL_NV_point_sprite */ - -/* -------------------------- GL_NV_present_video -------------------------- */ - -#ifndef GL_NV_present_video -#define GL_NV_present_video 1 - -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B - -typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); - -#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) -#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) -#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) -#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) -#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) -#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) - -#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) - -#endif /* GL_NV_present_video */ - -/* ------------------------ GL_NV_primitive_restart ------------------------ */ - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 - -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 - -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); - -#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) -#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) - -#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) - -#endif /* GL_NV_primitive_restart */ - -/* ------------------------ GL_NV_register_combiners ----------------------- */ - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 - -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 - -typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); - -#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) -#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) -#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) -#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) -#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) -#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) -#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) -#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) -#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) -#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) -#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) -#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) -#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) - -#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) - -#endif /* GL_NV_register_combiners */ - -/* ----------------------- GL_NV_register_combiners2 ----------------------- */ - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 - -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 - -typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); - -#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) -#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) - -#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) - -#endif /* GL_NV_register_combiners2 */ - -/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ - -#ifndef GL_NV_shader_buffer_load -#define GL_NV_shader_buffer_load 1 - -#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D -#define GL_GPU_ADDRESS_NV 0x8F34 -#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 - -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) -#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) -#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) -#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) -#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) -#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) -#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) -#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) -#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) -#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) -#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) -#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) -#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) - -#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) - -#endif /* GL_NV_shader_buffer_load */ - -/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ - -#ifndef GL_NV_tessellation_program5 -#define GL_NV_tessellation_program5 1 - -#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 -#define GL_TESS_CONTROL_PROGRAM_NV 0x891E -#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F -#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 -#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 - -#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) - -#endif /* GL_NV_tessellation_program5 */ - -/* -------------------------- GL_NV_texgen_emboss -------------------------- */ - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 - -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F - -#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) - -#endif /* GL_NV_texgen_emboss */ - -/* ------------------------ GL_NV_texgen_reflection ------------------------ */ - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 - -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 - -#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) - -#endif /* GL_NV_texgen_reflection */ - -/* ------------------------- GL_NV_texture_barrier ------------------------- */ - -#ifndef GL_NV_texture_barrier -#define GL_NV_texture_barrier 1 - -typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); - -#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) - -#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) - -#endif /* GL_NV_texture_barrier */ - -/* --------------------- GL_NV_texture_compression_vtc --------------------- */ - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 - -#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) - -#endif /* GL_NV_texture_compression_vtc */ - -/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 - -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B - -#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) - -#endif /* GL_NV_texture_env_combine4 */ - -/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 - -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F - -#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) - -#endif /* GL_NV_texture_expand_normal */ - -/* ------------------------ GL_NV_texture_rectangle ------------------------ */ - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 - -#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) - -#endif /* GL_NV_texture_rectangle */ - -/* -------------------------- GL_NV_texture_shader ------------------------- */ - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 - -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F - -#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) - -#endif /* GL_NV_texture_shader */ - -/* ------------------------- GL_NV_texture_shader2 ------------------------- */ - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 - -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D - -#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) - -#endif /* GL_NV_texture_shader2 */ - -/* ------------------------- GL_NV_texture_shader3 ------------------------- */ - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 - -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 - -#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) - -#endif /* GL_NV_texture_shader3 */ - -/* ------------------------ GL_NV_transform_feedback ----------------------- */ - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 - -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F - -typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); - -#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) -#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) -#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) -#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) -#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) -#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) -#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) -#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) -#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) -#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) -#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) - -#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) - -#endif /* GL_NV_transform_feedback */ - -/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ - -#ifndef GL_NV_transform_feedback2 -#define GL_NV_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); - -#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) -#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) -#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) -#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) -#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) -#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) -#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) - -#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) - -#endif /* GL_NV_transform_feedback2 */ - -/* -------------------------- GL_NV_vdpau_interop -------------------------- */ - -#ifndef GL_NV_vdpau_interop -#define GL_NV_vdpau_interop 1 - -#define GL_SURFACE_STATE_NV 0x86EB -#define GL_SURFACE_REGISTERED_NV 0x86FD -#define GL_SURFACE_MAPPED_NV 0x8700 -#define GL_WRITE_DISCARD_NV 0x88BE - -typedef GLintptr GLvdpauSurfaceNV; - -typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); -typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const GLvoid*getProcAddress); -typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); -typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); -typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); -typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); - -#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) -#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) -#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) -#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) -#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) -#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) -#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) -#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) -#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) -#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) - -#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) - -#endif /* GL_NV_vdpau_interop */ - -/* ------------------------ GL_NV_vertex_array_range ----------------------- */ - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) -#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) - -#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) - -#endif /* GL_NV_vertex_array_range */ - -/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 - -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 - -#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) - -#endif /* GL_NV_vertex_array_range2 */ - -/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ - -#ifndef GL_NV_vertex_attrib_integer_64bit -#define GL_NV_vertex_attrib_integer_64bit 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); - -#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) -#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) -#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) -#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) -#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) -#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) -#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) -#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) -#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) -#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) -#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) -#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) -#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) -#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) -#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) -#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) -#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) -#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) -#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) - -#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) - -#endif /* GL_NV_vertex_attrib_integer_64bit */ - -/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ - -#ifndef GL_NV_vertex_buffer_unified_memory -#define GL_NV_vertex_buffer_unified_memory 1 - -#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E -#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F -#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 -#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 -#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 -#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 -#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 -#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 -#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 -#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 -#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 -#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 -#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A -#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B -#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C -#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D -#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E -#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F -#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 -#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 -#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 -#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 -#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 -#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 -#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 - -typedef void (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); -typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); - -#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) -#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) -#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) -#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) -#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) -#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) -#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) -#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) -#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) -#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) -#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) -#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) - -#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) - -#endif /* GL_NV_vertex_buffer_unified_memory */ - -/* -------------------------- GL_NV_vertex_program ------------------------- */ - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 - -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F - -typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); - -#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) -#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) -#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) -#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) -#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) -#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) -#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) -#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) -#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) -#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) -#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) -#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) -#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) -#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) -#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) -#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) -#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) -#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) -#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) -#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) -#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) -#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) -#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) -#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) -#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) -#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) -#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) -#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) -#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) -#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) -#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) -#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) -#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) -#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) -#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) -#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) -#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) -#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) -#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) -#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) -#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) -#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) -#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) -#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) -#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) -#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) -#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) -#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) -#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) -#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) -#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) -#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) -#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) -#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) -#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) -#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) -#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) -#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) -#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) -#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) -#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) -#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) -#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) -#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) - -#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) - -#endif /* GL_NV_vertex_program */ - -/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 - -#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) - -#endif /* GL_NV_vertex_program1_1 */ - -/* ------------------------- GL_NV_vertex_program2 ------------------------- */ - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 - -#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) - -#endif /* GL_NV_vertex_program2 */ - -/* ---------------------- GL_NV_vertex_program2_option --------------------- */ - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 - -#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) - -#endif /* GL_NV_vertex_program2_option */ - -/* ------------------------- GL_NV_vertex_program3 ------------------------- */ - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 - -#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C - -#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) - -#endif /* GL_NV_vertex_program3 */ - -/* ------------------------- GL_NV_vertex_program4 ------------------------- */ - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD - -#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) - -#endif /* GL_NV_vertex_program4 */ - -/* ------------------------ GL_OES_byte_coordinates ------------------------ */ - -#ifndef GL_OES_byte_coordinates -#define GL_OES_byte_coordinates 1 - -#define GL_BYTE 0x1400 - -#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) - -#endif /* GL_OES_byte_coordinates */ - -/* ------------------- GL_OES_compressed_paletted_texture ------------------ */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 - -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 - -#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) - -#endif /* GL_OES_compressed_paletted_texture */ - -/* --------------------------- GL_OES_read_format -------------------------- */ - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 - -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B - -#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) - -#endif /* GL_OES_read_format */ - -/* ------------------------ GL_OES_single_precision ------------------------ */ - -#ifndef GL_OES_single_precision -#define GL_OES_single_precision 1 - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); -typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - -#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) -#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) -#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) -#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) -#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) -#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) - -#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) - -#endif /* GL_OES_single_precision */ - -/* ---------------------------- GL_OML_interlace --------------------------- */ - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 - -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 - -#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) - -#endif /* GL_OML_interlace */ - -/* ---------------------------- GL_OML_resample ---------------------------- */ - -#ifndef GL_OML_resample -#define GL_OML_resample 1 - -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 - -#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) - -#endif /* GL_OML_resample */ - -/* ---------------------------- GL_OML_subsample --------------------------- */ - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 - -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 - -#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) - -#endif /* GL_OML_subsample */ - -/* --------------------------- GL_PGI_misc_hints --------------------------- */ - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 - -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 -#define GL_CONSERVE_MEMORY_HINT_PGI 107005 -#define GL_RECLAIM_MEMORY_HINT_PGI 107006 -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 -#define GL_ALWAYS_FAST_HINT_PGI 107020 -#define GL_ALWAYS_SOFT_HINT_PGI 107021 -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 -#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 -#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 -#define GL_STRICT_LIGHTING_HINT_PGI 107031 -#define GL_STRICT_SCISSOR_HINT_PGI 107032 -#define GL_FULL_STIPPLE_HINT_PGI 107033 -#define GL_CLIP_NEAR_HINT_PGI 107040 -#define GL_CLIP_FAR_HINT_PGI 107041 -#define GL_WIDE_LINE_HINT_PGI 107042 -#define GL_BACK_NORMALS_HINT_PGI 107043 - -#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) - -#endif /* GL_PGI_misc_hints */ - -/* -------------------------- GL_PGI_vertex_hints -------------------------- */ - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 - -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_VERTEX_DATA_HINT_PGI 107050 -#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 -#define GL_MATERIAL_SIDE_HINT_PGI 107052 -#define GL_MAX_VERTEX_HINT_PGI 107053 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 - -#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) - -#endif /* GL_PGI_vertex_hints */ - -/* ----------------------- GL_REND_screen_coordinates ---------------------- */ - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 - -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 - -#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) - -#endif /* GL_REND_screen_coordinates */ - -/* ------------------------------- GL_S3_s3tc ------------------------------ */ - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 - -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA4_DXT5_S3TC 0x83A5 - -#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) - -#endif /* GL_S3_s3tc */ - -/* -------------------------- GL_SGIS_color_range -------------------------- */ - -#ifndef GL_SGIS_color_range -#define GL_SGIS_color_range 1 - -#define GL_EXTENDED_RANGE_SGIS 0x85A5 -#define GL_MIN_RED_SGIS 0x85A6 -#define GL_MAX_RED_SGIS 0x85A7 -#define GL_MIN_GREEN_SGIS 0x85A8 -#define GL_MAX_GREEN_SGIS 0x85A9 -#define GL_MIN_BLUE_SGIS 0x85AA -#define GL_MAX_BLUE_SGIS 0x85AB -#define GL_MIN_ALPHA_SGIS 0x85AC -#define GL_MAX_ALPHA_SGIS 0x85AD - -#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) - -#endif /* GL_SGIS_color_range */ - -/* ------------------------- GL_SGIS_detail_texture ------------------------ */ - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 - -typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); - -#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) -#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) - -#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) - -#endif /* GL_SGIS_detail_texture */ - -/* -------------------------- GL_SGIS_fog_function ------------------------- */ - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 - -typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); - -#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) -#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) - -#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) - -#endif /* GL_SGIS_fog_function */ - -/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 - -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 - -#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) - -#endif /* GL_SGIS_generate_mipmap */ - -/* -------------------------- GL_SGIS_multisample -------------------------- */ - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 - -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); - -#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) -#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) - -#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) - -#endif /* GL_SGIS_multisample */ - -/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 - -#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) - -#endif /* GL_SGIS_pixel_texture */ - -/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 - -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 - -#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) - -#endif /* GL_SGIS_point_line_texgen */ - -/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 - -typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); -typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); - -#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) -#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) - -#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) - -#endif /* GL_SGIS_sharpen_texture */ - -/* --------------------------- GL_SGIS_texture4D --------------------------- */ - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); - -#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) -#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) - -#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) - -#endif /* GL_SGIS_texture4D */ - -/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_SGIS 0x812D - -#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) - -#endif /* GL_SGIS_texture_border_clamp */ - -/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_SGIS 0x812F - -#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) - -#endif /* GL_SGIS_texture_edge_clamp */ - -/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 - -typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); -typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); - -#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) -#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) - -#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) - -#endif /* GL_SGIS_texture_filter4 */ - -/* -------------------------- GL_SGIS_texture_lod -------------------------- */ - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 - -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D - -#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) - -#endif /* GL_SGIS_texture_lod */ - -/* ------------------------- GL_SGIS_texture_select ------------------------ */ - -#ifndef GL_SGIS_texture_select -#define GL_SGIS_texture_select 1 - -#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) - -#endif /* GL_SGIS_texture_select */ - -/* ----------------------------- GL_SGIX_async ----------------------------- */ - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 - -#define GL_ASYNC_MARKER_SGIX 0x8329 - -typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); -typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); - -#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) -#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) -#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) -#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) -#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) -#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) - -#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) - -#endif /* GL_SGIX_async */ - -/* ------------------------ GL_SGIX_async_histogram ------------------------ */ - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 - -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D - -#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) - -#endif /* GL_SGIX_async_histogram */ - -/* -------------------------- GL_SGIX_async_pixel -------------------------- */ - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 - -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 - -#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) - -#endif /* GL_SGIX_async_pixel */ - -/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 - -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 - -#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) - -#endif /* GL_SGIX_blend_alpha_minmax */ - -/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 - -#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) - -#endif /* GL_SGIX_clipmap */ - -/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 - -#define GL_CONVOLUTION_HINT_SGIX 0x8316 - -#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) - -#endif /* GL_SGIX_convolution_accuracy */ - -/* ------------------------- GL_SGIX_depth_texture ------------------------- */ - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 - -#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) - -#endif /* GL_SGIX_depth_texture */ - -/* -------------------------- GL_SGIX_flush_raster ------------------------- */ - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 - -typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); - -#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) - -#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) - -#endif /* GL_SGIX_flush_raster */ - -/* --------------------------- GL_SGIX_fog_offset -------------------------- */ - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 - -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 - -#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) - -#endif /* GL_SGIX_fog_offset */ - -/* -------------------------- GL_SGIX_fog_texture -------------------------- */ - -#ifndef GL_SGIX_fog_texture -#define GL_SGIX_fog_texture 1 - -#define GL_TEXTURE_FOG_SGIX 0 -#define GL_FOG_PATCHY_FACTOR_SGIX 0 -#define GL_FRAGMENT_FOG_SGIX 0 - -typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); - -#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) - -#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) - -#endif /* GL_SGIX_fog_texture */ - -/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ - -#ifndef GL_SGIX_fragment_specular_lighting -#define GL_SGIX_fragment_specular_lighting 1 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); - -#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) -#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) -#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) -#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) -#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) -#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) -#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) -#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) -#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) -#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) -#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) -#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) -#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) -#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) -#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) -#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) -#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) - -#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) - -#endif /* GL_SGIX_fragment_specular_lighting */ - -/* --------------------------- GL_SGIX_framezoom --------------------------- */ - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 - -typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); - -#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) - -#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) - -#endif /* GL_SGIX_framezoom */ - -/* --------------------------- GL_SGIX_interlace --------------------------- */ - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 - -#define GL_INTERLACE_SGIX 0x8094 - -#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) - -#endif /* GL_SGIX_interlace */ - -/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 - -#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) - -#endif /* GL_SGIX_ir_instrument1 */ - -/* ------------------------- GL_SGIX_list_priority ------------------------- */ - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 - -#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) - -#endif /* GL_SGIX_list_priority */ - -/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 - -typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); - -#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) - -#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) - -#endif /* GL_SGIX_pixel_texture */ - -/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ - -#ifndef GL_SGIX_pixel_texture_bits -#define GL_SGIX_pixel_texture_bits 1 - -#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) - -#endif /* GL_SGIX_pixel_texture_bits */ - -/* ------------------------ GL_SGIX_reference_plane ------------------------ */ - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 - -typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); - -#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) - -#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) - -#endif /* GL_SGIX_reference_plane */ - -/* ---------------------------- GL_SGIX_resample --------------------------- */ - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 - -#define GL_PACK_RESAMPLE_SGIX 0x842E -#define GL_UNPACK_RESAMPLE_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 - -#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) - -#endif /* GL_SGIX_resample */ - -/* ----------------------------- GL_SGIX_shadow ---------------------------- */ - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 - -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D - -#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) - -#endif /* GL_SGIX_shadow */ - -/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 - -#define GL_SHADOW_AMBIENT_SGIX 0x80BF - -#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) - -#endif /* GL_SGIX_shadow_ambient */ - -/* ----------------------------- GL_SGIX_sprite ---------------------------- */ - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 - -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); - -#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) -#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) -#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) -#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) - -#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) - -#endif /* GL_SGIX_sprite */ - -/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 - -typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); - -#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) - -#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) - -#endif /* GL_SGIX_tag_sample_buffer */ - -/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 - -#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) - -#endif /* GL_SGIX_texture_add_env */ - -/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 - -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B - -#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) - -#endif /* GL_SGIX_texture_coordinate_clamp */ - -/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 - -#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) - -#endif /* GL_SGIX_texture_lod_bias */ - -/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 - -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E - -#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) - -#endif /* GL_SGIX_texture_multi_buffer */ - -/* ------------------------- GL_SGIX_texture_range ------------------------- */ - -#ifndef GL_SGIX_texture_range -#define GL_SGIX_texture_range 1 - -#define GL_RGB_SIGNED_SGIX 0x85E0 -#define GL_RGBA_SIGNED_SGIX 0x85E1 -#define GL_ALPHA_SIGNED_SGIX 0x85E2 -#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 -#define GL_INTENSITY_SIGNED_SGIX 0x85E4 -#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 -#define GL_RGB16_SIGNED_SGIX 0x85E6 -#define GL_RGBA16_SIGNED_SGIX 0x85E7 -#define GL_ALPHA16_SIGNED_SGIX 0x85E8 -#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 -#define GL_INTENSITY16_SIGNED_SGIX 0x85EA -#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB -#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC -#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED -#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE -#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF -#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 -#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 -#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 -#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 -#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 -#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 -#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 -#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 -#define GL_MIN_LUMINANCE_SGIS 0x85F8 -#define GL_MAX_LUMINANCE_SGIS 0x85F9 -#define GL_MIN_INTENSITY_SGIS 0x85FA -#define GL_MAX_INTENSITY_SGIS 0x85FB - -#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) - -#endif /* GL_SGIX_texture_range */ - -/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 - -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C - -#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) - -#endif /* GL_SGIX_texture_scale_bias */ - -/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) - -#endif /* GL_SGIX_vertex_preclip */ - -/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ - -#ifndef GL_SGIX_vertex_preclip_hint -#define GL_SGIX_vertex_preclip_hint 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) - -#endif /* GL_SGIX_vertex_preclip_hint */ - -/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 - -#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) - -#endif /* GL_SGIX_ycrcb */ - -/* -------------------------- GL_SGI_color_matrix -------------------------- */ - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 - -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB - -#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) - -#endif /* GL_SGI_color_matrix */ - -/* --------------------------- GL_SGI_color_table -------------------------- */ - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 - -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); - -#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) -#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) -#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) -#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) -#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) -#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) -#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) - -#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) - -#endif /* GL_SGI_color_table */ - -/* ----------------------- GL_SGI_texture_color_table ---------------------- */ - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 - -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD - -#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) - -#endif /* GL_SGI_texture_color_table */ - -/* ------------------------- GL_SUNX_constant_data ------------------------- */ - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 - -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 - -typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); - -#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) - -#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) - -#endif /* GL_SUNX_constant_data */ - -/* -------------------- GL_SUN_convolution_border_modes -------------------- */ - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 - -#define GL_WRAP_BORDER_SUN 0x81D4 - -#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) - -#endif /* GL_SUN_convolution_border_modes */ - -/* -------------------------- GL_SUN_global_alpha -------------------------- */ - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 - -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA - -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); - -#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) -#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) -#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) -#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) -#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) -#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) -#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) -#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) - -#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) - -#endif /* GL_SUN_global_alpha */ - -/* --------------------------- GL_SUN_mesh_array --------------------------- */ - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 - -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 - -#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) - -#endif /* GL_SUN_mesh_array */ - -/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ - -#ifndef GL_SUN_read_video_pixels -#define GL_SUN_read_video_pixels 1 - -typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); - -#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) - -#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) - -#endif /* GL_SUN_read_video_pixels */ - -/* --------------------------- GL_SUN_slice_accum -------------------------- */ - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 - -#define GL_SLICE_ACCUM_SUN 0x85CC - -#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) - -#endif /* GL_SUN_slice_accum */ - -/* -------------------------- GL_SUN_triangle_list ------------------------- */ - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 - -#define GL_RESTART_SUN 0x01 -#define GL_REPLACE_MIDDLE_SUN 0x02 -#define GL_REPLACE_OLDEST_SUN 0x03 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB - -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); - -#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) -#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) -#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) -#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) -#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) -#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) -#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) - -#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) - -#endif /* GL_SUN_triangle_list */ - -/* ----------------------------- GL_SUN_vertex ----------------------------- */ - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 - -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); - -#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) -#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) -#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) -#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) -#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) -#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) -#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) -#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) -#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) -#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) -#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) -#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) -#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) -#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) -#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) -#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) -#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) -#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) -#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) -#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) -#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) -#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) -#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) -#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) -#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) -#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) -#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) -#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) -#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) - -#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) - -#endif /* GL_SUN_vertex */ - -/* -------------------------- GL_WIN_phong_shading ------------------------- */ - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 - -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB - -#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) - -#endif /* GL_WIN_phong_shading */ - -/* -------------------------- GL_WIN_specular_fog -------------------------- */ - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 - -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC - -#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) - -#endif /* GL_WIN_specular_fog */ - -/* ---------------------------- GL_WIN_swap_hint --------------------------- */ - -#ifndef GL_WIN_swap_hint -#define GL_WIN_swap_hint 1 - -typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); - -#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) - -#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) - -#endif /* GL_WIN_swap_hint */ - -/* ------------------------------------------------------------------------- */ - -#if defined(GLEW_MX) && defined(_WIN32) -#define GLEW_FUN_EXPORT -#else -#define GLEW_FUN_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) -#define GLEW_VAR_EXPORT -#else -#define GLEW_VAR_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) && defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; - -GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; -GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; -GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; -GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; -GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; -GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; -GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; -GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; -GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; -GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; -GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; -GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; - -GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; -GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; -GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; -GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; -GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; -GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; -GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; -GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; -GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; -GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; -GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; -GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; -GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; -GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; -GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; -GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; - -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; -GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; -GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; -GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; -GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; -GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; -GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; -GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; -GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; -GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; - -GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; - -GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; -GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; -GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; - -GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; -GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; - -GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; -GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; -GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; -GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; -GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; - -GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; - -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; -GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; -GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; -GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; -GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; -GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; - -GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; - -GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; - -GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DEXTPROC __glewProgramUniform1dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVEXTPROC __glewProgramUniform1dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DEXTPROC __glewProgramUniform2dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVEXTPROC __glewProgramUniform2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DEXTPROC __glewProgramUniform3dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVEXTPROC __glewProgramUniform3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DEXTPROC __glewProgramUniform4dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVEXTPROC __glewProgramUniform4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC __glewProgramUniformMatrix2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC __glewProgramUniformMatrix2x3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC __glewProgramUniformMatrix2x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC __glewProgramUniformMatrix3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC __glewProgramUniformMatrix3x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC __glewProgramUniformMatrix3x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC __glewProgramUniformMatrix4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC __glewProgramUniformMatrix4x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC __glewProgramUniformMatrix4x3dvEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; -GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; -GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; -GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; -GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; -GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; -GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; -GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; -GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; -GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; -GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; - -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; -GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; - -GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; - -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; -GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; -GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; -GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; - -GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; -GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; -GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; -GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; -GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; -GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; -GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; -GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; -GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; - -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; - -GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; -GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; -GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; -GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; - -GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; -GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; - -GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; -GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; -GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; -GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; -GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; -GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; -GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; - -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; -GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; - -GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; -GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; -GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; -GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; - -GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; -GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; -GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; -GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; -GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; -GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; -GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; - -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; - -GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; - -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; -GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; -GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; -GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; -GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; - -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; -GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; -GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; -GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; -GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; - -GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; -GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; -GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; -GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; -GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; -GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; - -GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; -GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; - -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; - -GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; -GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; -GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; -GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; -GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; - -GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; -GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; -GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; - -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; - -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; -GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; -GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; -GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; - -GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; - -GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glPNTrianglewesfATI; -GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glPNTrianglewesiATI; - -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; - -GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; -GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; -GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; -GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; -GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; - -GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; - -GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; -GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; - -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; - -GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; - -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; -GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; - -GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; -GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; -GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; -GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; - -GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; -GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; - -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; - -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; -GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; -GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; -GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; - -GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; - -GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; - -GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; -GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; - -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; - -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; - -GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; -GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; - -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; - -GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; -GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; - -GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; -GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; - -GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; - -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; - -GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; -GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; - -GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; -GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; -GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; -GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; -GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; - -GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; - -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; - -GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; -GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; -GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; -GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; -GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; - -GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; -GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; -GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; -GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; -GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; -GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; -GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; -GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; -GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; -GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; -GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; -GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; - -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; - -GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; - -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; - -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; - -GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; -GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; - -GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDEXTPROC __glewBufferRegionEnabledEXT; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONEXTPROC __glewDeleteBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONEXTPROC __glewDrawBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONEXTPROC __glewNewBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONEXTPROC __glewReadBufferRegionEXT; - -GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; - -GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; - -GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; -GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; -GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; -GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; -GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; -GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; -GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; -GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; -GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; -GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; - -GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; -GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; - -GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; -GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; - -GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; -GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; - -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; -GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; -GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; - -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; -GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; - -GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; - -GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; -GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; - -GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; -GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; -GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; -GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; - -GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; -GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; -GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; -GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; -GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; -GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; - -GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; -GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; -GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; -GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; -GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; -GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; -GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; -GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; -GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; -GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; -GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; - -GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; - -GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; - -GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; -GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; - -GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; -GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; - -GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; - -GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; - -GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; - -GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; - -GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; - -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; - -GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; - -GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; - -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; - -GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; - -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; - -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; - -GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; - -#if defined(GLEW_MX) && !defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; -GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; -GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; - -#ifdef GLEW_MX -}; /* GLEWContextStruct */ -#endif /* GLEW_MX */ - -/* ------------------------------------------------------------------------- */ - -/* error codes */ -#define GLEW_OK 0 -#define GLEW_NO_ERROR 0 -#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ -#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* GL 1.1 and up are not supported */ -#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* GLX 1.2 and up are not supported */ - -/* string codes */ -#define GLEW_VERSION 1 -#define GLEW_VERSION_MAJOR 2 -#define GLEW_VERSION_MINOR 3 -#define GLEW_VERSION_MICRO 4 - -/* API */ -#ifdef GLEW_MX - -typedef struct GLEWContextStruct GLEWContext; -GLEWAPI GLenum glewContextInit (GLEWContext* ctx); -GLEWAPI GLboolean glewContextIsSupported (GLEWContext* ctx, const char* name); - -#define glewInit() glewContextInit(glewGetContext()) -#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) -#ifdef _WIN32 -# define GLEW_GET_FUN(x) glewGetContext()->x -#else -# define GLEW_GET_FUN(x) x -#endif - -#else /* GLEW_MX */ - -GLEWAPI GLenum glewInit (); -GLEWAPI GLboolean glewIsSupported (const char* name); -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) -#define GLEW_GET_FUN(x) x - -#endif /* GLEW_MX */ - -GLEWAPI GLboolean glewExperimental; -GLEWAPI GLboolean glewGetExtension (const char* name); -GLEWAPI const GLubyte* glewGetErrorString (GLenum error); -GLEWAPI const GLubyte* glewGetString (GLenum name); - -#ifdef __cplusplus -} -#endif - -#ifdef GLEW_APIENTRY_DEFINED -#undef GLEW_APIENTRY_DEFINED -#undef APIENTRY -#undef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifdef GLEW_CALLBACK_DEFINED -#undef GLEW_CALLBACK_DEFINED -#undef CALLBACK -#endif - -#ifdef GLEW_WINGDIAPI_DEFINED -#undef GLEW_WINGDIAPI_DEFINED -#undef WINGDIAPI -#endif - -#undef GLAPI -/* #undef GLEWAPI */ - -#endif /* __glew_h__ */ diff --git a/sdk/Linux/2019.2/samples/ViewScene/GL/glut.h b/sdk/Linux/2019.2/samples/ViewScene/GL/glut.h deleted file mode 100644 index 0e6ddfb..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GL/glut.h +++ /dev/null @@ -1,716 +0,0 @@ -#ifndef __glut_h__ -#define __glut_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#if defined(_WIN32) - -/* GLUT 3.7 now tries to avoid including - to avoid name space pollution, but Win32's - needs APIENTRY and WINGDIAPI defined properly. */ -# if 0 - /* This would put tons of macros and crap in our clean name space. */ -# define WIN32_LEAN_AND_MEAN -# include -# else - /* XXX This is from Win32's */ -# ifndef APIENTRY -# define GLUT_APIENTRY_DEFINED -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif - /* XXX This is from Win32's */ -# ifndef CALLBACK -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) || defined(__LCC__) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* XXX Hack for lcc compiler. It doesn't support __declspec(dllimport), just __stdcall. */ -# if defined( __LCC__ ) -# undef WINGDIAPI -# define WINGDIAPI __stdcall -# else - /* XXX This is from Win32's and */ -# ifndef WINGDIAPI -# define GLUT_WINGDIAPI_DEFINED -# define WINGDIAPI __declspec(dllimport) -# endif -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA - in your compile preprocessor options. */ -# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) -# pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */ -/* To enable automatic SGI OpenGL for Windows library usage for GLUT, - define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */ -# ifdef GLUT_USE_SGI_OPENGL -# pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */ -# pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */ -# pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */ -# else -# pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */ -# pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */ -# pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */ -# endif -# endif - -/* To disable supression of annoying warnings about floats being promoted - to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor - options. */ -# ifndef GLUT_NO_WARNING_DISABLE -# pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */ -# pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -# endif - -/* Win32 has an annoying issue where there are multiple C run-time - libraries (CRTs). If the executable is linked with a different CRT - from the GLUT DLL, the GLUT DLL will not share the same CRT static - data seen by the executable. In particular, atexit callbacks registered - in the executable will not be called if GLUT calls its (different) - exit routine). GLUT is typically built with the - "/MD" option (the CRT with multithreading DLL support), but the Visual - C++ linker default is "/ML" (the single threaded CRT). - - One workaround to this issue is requiring users to always link with - the same CRT as GLUT is compiled with. That requires users supply a - non-standard option. GLUT 3.7 has its own built-in workaround where - the executable's "exit" function pointer is covertly passed to GLUT. - GLUT then calls the executable's exit function pointer to ensure that - any "atexit" calls registered by the application are called if GLUT - needs to exit. - - Note that the __glut*WithExit routines should NEVER be called directly. - To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ - -/* XXX This is from Win32's */ -# if !defined(_MSC_VER) && !defined(__cdecl) - /* Define __cdecl for non-Microsoft compilers. */ -# define __cdecl -# define GLUT_DEFINED___CDECL -# endif -# ifndef _CRTIMP -# ifdef _NTSDK - /* Definition compatible with NT SDK */ -# define _CRTIMP -# else - /* Current definition */ -# ifdef _DLL -# define _CRTIMP __declspec(dllimport) -# else -# define _CRTIMP -# endif -# endif -# define GLUT_DEFINED__CRTIMP -# endif - -/* GLUT API entry point declarations for Win32. */ -# ifdef GLUT_BUILDING_LIB -# define GLUTAPI __declspec(dllexport) -# else -# ifdef _DLL -# define GLUTAPI __declspec(dllimport) -# else -# define GLUTAPI extern -# endif -# endif - -/* GLUT callback calling convention for Win32. */ -# define GLUTCALLBACK __cdecl - -#endif /* _WIN32 */ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) -# ifndef GLUT_BUILDING_LIB -extern _CRTIMP void __cdecl exit(int); -# endif -#else -/* non-Win32 case. */ -/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */ -# define APIENTRY -# define GLUT_APIENTRY_DEFINED -# define CALLBACK -/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */ -# define GLUTAPI extern -# define GLUTCALLBACK -/* Prototype exit for the non-Win32 case (see above). */ -extern void exit(int); -#endif - -/** - GLUT API revision history: - - GLUT_API_VERSION is updated to reflect incompatible GLUT - API changes (interface changes, semantic changes, deletions, - or additions). - - GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 - - GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, - extension. Supports new input devices like tablet, dial and button - box, and Spaceball. Easy to query OpenGL extensions. - - GLUT_API_VERSION=3 glutMenuStatus added. - - GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, - glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic - video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc, - glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, - glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!). -**/ -#ifndef GLUT_API_VERSION /* allow this to be overriden */ -#define GLUT_API_VERSION 3 -#endif - -/** - GLUT implementation revision history: - - GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT - API revisions and implementation revisions (ie, bug fixes). - - GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of - GLUT Xlib-based implementation. 11/29/94 - - GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of - GLUT Xlib-based implementation providing GLUT version 2 - interfaces. - - GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 - - GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 - - GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 - - GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 - - GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner - and video resize. 1/3/97 - - GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines. - - GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release. - - GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling. - - GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support. - - GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface. - - GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa -**/ -#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */ -#define GLUT_XLIB_IMPLEMENTATION 15 -#endif - -/* Display mode bit masks. */ -#define GLUT_RGB 0 -#define GLUT_RGBA GLUT_RGB -#define GLUT_INDEX 1 -#define GLUT_SINGLE 0 -#define GLUT_DOUBLE 2 -#define GLUT_ACCUM 4 -#define GLUT_ALPHA 8 -#define GLUT_DEPTH 16 -#define GLUT_STENCIL 32 -#if (GLUT_API_VERSION >= 2) -#define GLUT_MULTISAMPLE 128 -#define GLUT_STEREO 256 -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_LUMINANCE 512 -#endif - -/* Mouse buttons. */ -#define GLUT_LEFT_BUTTON 0 -#define GLUT_MIDDLE_BUTTON 1 -#define GLUT_RIGHT_BUTTON 2 - -/* Mouse button state. */ -#define GLUT_DOWN 0 -#define GLUT_UP 1 - -#if (GLUT_API_VERSION >= 2) -/* function keys */ -#define GLUT_KEY_F1 1 -#define GLUT_KEY_F2 2 -#define GLUT_KEY_F3 3 -#define GLUT_KEY_F4 4 -#define GLUT_KEY_F5 5 -#define GLUT_KEY_F6 6 -#define GLUT_KEY_F7 7 -#define GLUT_KEY_F8 8 -#define GLUT_KEY_F9 9 -#define GLUT_KEY_F10 10 -#define GLUT_KEY_F11 11 -#define GLUT_KEY_F12 12 -/* directional keys */ -#define GLUT_KEY_LEFT 100 -#define GLUT_KEY_UP 101 -#define GLUT_KEY_RIGHT 102 -#define GLUT_KEY_DOWN 103 -#define GLUT_KEY_PAGE_UP 104 -#define GLUT_KEY_PAGE_DOWN 105 -#define GLUT_KEY_HOME 106 -#define GLUT_KEY_END 107 -#define GLUT_KEY_INSERT 108 -#endif - -/* Entry/exit state. */ -#define GLUT_LEFT 0 -#define GLUT_ENTERED 1 - -/* Menu usage state. */ -#define GLUT_MENU_NOT_IN_USE 0 -#define GLUT_MENU_IN_USE 1 - -/* Visibility state. */ -#define GLUT_NOT_VISIBLE 0 -#define GLUT_VISIBLE 1 - -/* Window status state. */ -#define GLUT_HIDDEN 0 -#define GLUT_FULLY_RETAINED 1 -#define GLUT_PARTIALLY_RETAINED 2 -#define GLUT_FULLY_COVERED 3 - -/* Color index component selection values. */ -#define GLUT_RED 0 -#define GLUT_GREEN 1 -#define GLUT_BLUE 2 - -#if defined(_WIN32) -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN ((void*)0) -#define GLUT_STROKE_MONO_ROMAN ((void*)1) - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 ((void*)2) -#define GLUT_BITMAP_8_BY_13 ((void*)3) -#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4) -#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 ((void*)6) -#define GLUT_BITMAP_HELVETICA_12 ((void*)7) -#define GLUT_BITMAP_HELVETICA_18 ((void*)8) -#endif -#else -/* Stroke font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutStrokeRoman; -GLUTAPI void *glutStrokeMonoRoman; - -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN (&glutStrokeRoman) -#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) - -/* Bitmap font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutBitmap9By15; -GLUTAPI void *glutBitmap8By13; -GLUTAPI void *glutBitmapTimesRoman10; -GLUTAPI void *glutBitmapTimesRoman24; -GLUTAPI void *glutBitmapHelvetica10; -GLUTAPI void *glutBitmapHelvetica12; -GLUTAPI void *glutBitmapHelvetica18; - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) -#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13) -#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10) -#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10) -#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12) -#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18) -#endif -#endif - -/* glutGet parameters. */ -#define GLUT_WINDOW_X ((GLenum) 100) -#define GLUT_WINDOW_Y ((GLenum) 101) -#define GLUT_WINDOW_WIDTH ((GLenum) 102) -#define GLUT_WINDOW_HEIGHT ((GLenum) 103) -#define GLUT_WINDOW_BUFFER_SIZE ((GLenum) 104) -#define GLUT_WINDOW_STENCIL_SIZE ((GLenum) 105) -#define GLUT_WINDOW_DEPTH_SIZE ((GLenum) 106) -#define GLUT_WINDOW_RED_SIZE ((GLenum) 107) -#define GLUT_WINDOW_GREEN_SIZE ((GLenum) 108) -#define GLUT_WINDOW_BLUE_SIZE ((GLenum) 109) -#define GLUT_WINDOW_ALPHA_SIZE ((GLenum) 110) -#define GLUT_WINDOW_ACCUM_RED_SIZE ((GLenum) 111) -#define GLUT_WINDOW_ACCUM_GREEN_SIZE ((GLenum) 112) -#define GLUT_WINDOW_ACCUM_BLUE_SIZE ((GLenum) 113) -#define GLUT_WINDOW_ACCUM_ALPHA_SIZE ((GLenum) 114) -#define GLUT_WINDOW_DOUBLEBUFFER ((GLenum) 115) -#define GLUT_WINDOW_RGBA ((GLenum) 116) -#define GLUT_WINDOW_PARENT ((GLenum) 117) -#define GLUT_WINDOW_NUM_CHILDREN ((GLenum) 118) -#define GLUT_WINDOW_COLORMAP_SIZE ((GLenum) 119) -#if (GLUT_API_VERSION >= 2) -#define GLUT_WINDOW_NUM_SAMPLES ((GLenum) 120) -#define GLUT_WINDOW_STEREO ((GLenum) 121) -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_WINDOW_CURSOR ((GLenum) 122) -#endif -#define GLUT_SCREEN_WIDTH ((GLenum) 200) -#define GLUT_SCREEN_HEIGHT ((GLenum) 201) -#define GLUT_SCREEN_WIDTH_MM ((GLenum) 202) -#define GLUT_SCREEN_HEIGHT_MM ((GLenum) 203) -#define GLUT_MENU_NUM_ITEMS ((GLenum) 300) -#define GLUT_DISPLAY_MODE_POSSIBLE ((GLenum) 400) -#define GLUT_INIT_WINDOW_X ((GLenum) 500) -#define GLUT_INIT_WINDOW_Y ((GLenum) 501) -#define GLUT_INIT_WINDOW_WIDTH ((GLenum) 502) -#define GLUT_INIT_WINDOW_HEIGHT ((GLenum) 503) -#define GLUT_INIT_DISPLAY_MODE ((GLenum) 504) -#if (GLUT_API_VERSION >= 2) -#define GLUT_ELAPSED_TIME ((GLenum) 700) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_WINDOW_FORMAT_ID ((GLenum) 123) -#endif - -#if (GLUT_API_VERSION >= 2) -/* glutDeviceGet parameters. */ -#define GLUT_HAS_KEYBOARD ((GLenum) 600) -#define GLUT_HAS_MOUSE ((GLenum) 601) -#define GLUT_HAS_SPACEBALL ((GLenum) 602) -#define GLUT_HAS_DIAL_AND_BUTTON_BOX ((GLenum) 603) -#define GLUT_HAS_TABLET ((GLenum) 604) -#define GLUT_NUM_MOUSE_BUTTONS ((GLenum) 605) -#define GLUT_NUM_SPACEBALL_BUTTONS ((GLenum) 606) -#define GLUT_NUM_BUTTON_BOX_BUTTONS ((GLenum) 607) -#define GLUT_NUM_DIALS ((GLenum) 608) -#define GLUT_NUM_TABLET_BUTTONS ((GLenum) 609) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_DEVICE_IGNORE_KEY_REPEAT ((GLenum) 610) -#define GLUT_DEVICE_KEY_REPEAT ((GLenum) 611) -#define GLUT_HAS_JOYSTICK ((GLenum) 612) -#define GLUT_OWNS_JOYSTICK ((GLenum) 613) -#define GLUT_JOYSTICK_BUTTONS ((GLenum) 614) -#define GLUT_JOYSTICK_AXES ((GLenum) 615) -#define GLUT_JOYSTICK_POLL_RATE ((GLenum) 616) -#endif - -#if (GLUT_API_VERSION >= 3) -/* glutLayerGet parameters. */ -#define GLUT_OVERLAY_POSSIBLE ((GLenum) 800) -#define GLUT_LAYER_IN_USE ((GLenum) 801) -#define GLUT_HAS_OVERLAY ((GLenum) 802) -#define GLUT_TRANSPARENT_INDEX ((GLenum) 803) -#define GLUT_NORMAL_DAMAGED ((GLenum) 804) -#define GLUT_OVERLAY_DAMAGED ((GLenum) 805) - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* glutVideoResizeGet parameters. */ -#define GLUT_VIDEO_RESIZE_POSSIBLE ((GLenum) 900) -#define GLUT_VIDEO_RESIZE_IN_USE ((GLenum) 901) -#define GLUT_VIDEO_RESIZE_X_DELTA ((GLenum) 902) -#define GLUT_VIDEO_RESIZE_Y_DELTA ((GLenum) 903) -#define GLUT_VIDEO_RESIZE_WIDTH_DELTA ((GLenum) 904) -#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA ((GLenum) 905) -#define GLUT_VIDEO_RESIZE_X ((GLenum) 906) -#define GLUT_VIDEO_RESIZE_Y ((GLenum) 907) -#define GLUT_VIDEO_RESIZE_WIDTH ((GLenum) 908) -#define GLUT_VIDEO_RESIZE_HEIGHT ((GLenum) 909) -#endif - -/* glutUseLayer parameters. */ -#define GLUT_NORMAL ((GLenum) 0) -#define GLUT_OVERLAY ((GLenum) 1) - -/* glutGetModifiers return mask. */ -#define GLUT_ACTIVE_SHIFT 1 -#define GLUT_ACTIVE_CTRL 2 -#define GLUT_ACTIVE_ALT 4 - -/* glutSetCursor parameters. */ -/* Basic arrows. */ -#define GLUT_CURSOR_RIGHT_ARROW 0 -#define GLUT_CURSOR_LEFT_ARROW 1 -/* Symbolic cursor shapes. */ -#define GLUT_CURSOR_INFO 2 -#define GLUT_CURSOR_DESTROY 3 -#define GLUT_CURSOR_HELP 4 -#define GLUT_CURSOR_CYCLE 5 -#define GLUT_CURSOR_SPRAY 6 -#define GLUT_CURSOR_WAIT 7 -#define GLUT_CURSOR_TEXT 8 -#define GLUT_CURSOR_CROSSHAIR 9 -/* Directional cursors. */ -#define GLUT_CURSOR_UP_DOWN 10 -#define GLUT_CURSOR_LEFT_RIGHT 11 -/* Sizing cursors. */ -#define GLUT_CURSOR_TOP_SIDE 12 -#define GLUT_CURSOR_BOTTOM_SIDE 13 -#define GLUT_CURSOR_LEFT_SIDE 14 -#define GLUT_CURSOR_RIGHT_SIDE 15 -#define GLUT_CURSOR_TOP_LEFT_CORNER 16 -#define GLUT_CURSOR_TOP_RIGHT_CORNER 17 -#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18 -#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19 -/* Inherit from parent window. */ -#define GLUT_CURSOR_INHERIT 100 -/* Blank cursor. */ -#define GLUT_CURSOR_NONE 101 -/* Fullscreen crosshair (if available). */ -#define GLUT_CURSOR_FULL_CROSSHAIR 102 -#endif - -/* GLUT initialization sub-API. */ -GLUTAPI void APIENTRY glutInit(int *argcp, char **argv); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } -#define glutInit glutInit_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutInitDisplayString(const char *string); -#endif -GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y); -GLUTAPI void APIENTRY glutInitWindowSize(int width, int height); -GLUTAPI void APIENTRY glutMainLoop(void); - -/* GLUT window sub-API. */ -GLUTAPI int APIENTRY glutCreateWindow(const char *title); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } -#define glutCreateWindow glutCreateWindow_ATEXIT_HACK -#endif -#endif -GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height); -GLUTAPI void APIENTRY glutDestroyWindow(int win); -GLUTAPI void APIENTRY glutPostRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutSwapBuffers(void); -GLUTAPI int APIENTRY glutGetWindow(void); -GLUTAPI void APIENTRY glutSetWindow(int win); -GLUTAPI void APIENTRY glutSetWindowTitle(const char *title); -GLUTAPI void APIENTRY glutSetIconTitle(const char *title); -GLUTAPI void APIENTRY glutPositionWindow(int x, int y); -GLUTAPI void APIENTRY glutReshapeWindow(int width, int height); -GLUTAPI void APIENTRY glutPopWindow(void); -GLUTAPI void APIENTRY glutPushWindow(void); -GLUTAPI void APIENTRY glutIconifyWindow(void); -GLUTAPI void APIENTRY glutShowWindow(void); -GLUTAPI void APIENTRY glutHideWindow(void); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutFullScreen(void); -GLUTAPI void APIENTRY glutSetCursor(int cursor); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWarpPointer(int x, int y); -#endif - -/* GLUT overlay sub-API. */ -GLUTAPI void APIENTRY glutEstablishOverlay(void); -GLUTAPI void APIENTRY glutRemoveOverlay(void); -GLUTAPI void APIENTRY glutUseLayer(GLenum layer); -GLUTAPI void APIENTRY glutPostOverlayRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutShowOverlay(void); -GLUTAPI void APIENTRY glutHideOverlay(void); -#endif - -/* GLUT menu sub-API. */ -GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int)); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); } -#define glutCreateMenu glutCreateMenu_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutDestroyMenu(int menu); -GLUTAPI int APIENTRY glutGetMenu(void); -GLUTAPI void APIENTRY glutSetMenu(int menu); -GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value); -GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu); -GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value); -GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu); -GLUTAPI void APIENTRY glutRemoveMenuItem(int item); -GLUTAPI void APIENTRY glutAttachMenu(int button); -GLUTAPI void APIENTRY glutDetachMenu(int button); - -/* GLUT window callback sub-API. */ -GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height)); -GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value); -GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state)); -#if (GLUT_API_VERSION >= 2) -GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value)); -GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y)); -GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void)); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state)); -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval); -#endif -#endif -#endif - -/* GLUT color index sub-API. */ -GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue); -GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component); -GLUTAPI void APIENTRY glutCopyColormap(int win); - -/* GLUT state retrieval sub-API. */ -GLUTAPI int APIENTRY glutGet(GLenum type); -GLUTAPI int APIENTRY glutDeviceGet(GLenum type); -#if (GLUT_API_VERSION >= 2) -/* GLUT extension support sub-API */ -GLUTAPI int APIENTRY glutExtensionSupported(const char *name); -#endif -#if (GLUT_API_VERSION >= 3) -GLUTAPI int APIENTRY glutGetModifiers(void); -GLUTAPI int APIENTRY glutLayerGet(GLenum type); -#endif - -/* GLUT font sub-API */ -GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character); -GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character); -GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character); -GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string); -GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string); -#endif - -/* GLUT pre-built models sub-API */ -GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCube(GLdouble size); -GLUTAPI void APIENTRY glutSolidCube(GLdouble size); -GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutWireDodecahedron(void); -GLUTAPI void APIENTRY glutSolidDodecahedron(void); -GLUTAPI void APIENTRY glutWireTeapot(GLdouble size); -GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size); -GLUTAPI void APIENTRY glutWireOctahedron(void); -GLUTAPI void APIENTRY glutSolidOctahedron(void); -GLUTAPI void APIENTRY glutWireTetrahedron(void); -GLUTAPI void APIENTRY glutSolidTetrahedron(void); -GLUTAPI void APIENTRY glutWireIcosahedron(void); -GLUTAPI void APIENTRY glutSolidIcosahedron(void); - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* GLUT video resize sub-API. */ -GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param); -GLUTAPI void APIENTRY glutSetupVideoResizing(void); -GLUTAPI void APIENTRY glutStopVideoResizing(void); -GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height); -GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height); - -/* GLUT debugging sub-API. */ -GLUTAPI void APIENTRY glutReportErrors(void); -#endif - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -/* GLUT device control sub-API. */ -/* glutSetKeyRepeat modes. */ -#define GLUT_KEY_REPEAT_OFF 0 -#define GLUT_KEY_REPEAT_ON 1 -#define GLUT_KEY_REPEAT_DEFAULT 2 - -/* Joystick button masks. */ -#define GLUT_JOYSTICK_BUTTON_A 1 -#define GLUT_JOYSTICK_BUTTON_B 2 -#define GLUT_JOYSTICK_BUTTON_C 4 -#define GLUT_JOYSTICK_BUTTON_D 8 - -GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore); -GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode); -GLUTAPI void APIENTRY glutForceJoystickFunc(void); - -/* GLUT game mode sub-API. */ -/* glutGameModeGet. */ -#define GLUT_GAME_MODE_ACTIVE ((GLenum) 0) -#define GLUT_GAME_MODE_POSSIBLE ((GLenum) 1) -#define GLUT_GAME_MODE_WIDTH ((GLenum) 2) -#define GLUT_GAME_MODE_HEIGHT ((GLenum) 3) -#define GLUT_GAME_MODE_PIXEL_DEPTH ((GLenum) 4) -#define GLUT_GAME_MODE_REFRESH_RATE ((GLenum) 5) -#define GLUT_GAME_MODE_DISPLAY_CHANGED ((GLenum) 6) - -GLUTAPI void APIENTRY glutGameModeString(const char *string); -GLUTAPI int APIENTRY glutEnterGameMode(void); -GLUTAPI void APIENTRY glutLeaveGameMode(void); -GLUTAPI int APIENTRY glutGameModeGet(GLenum mode); -#endif - -#ifdef __cplusplus -} - -#endif - -#ifdef GLUT_APIENTRY_DEFINED -# undef GLUT_APIENTRY_DEFINED -# undef APIENTRY -#endif - -#ifdef GLUT_WINGDIAPI_DEFINED -# undef GLUT_WINGDIAPI_DEFINED -# undef WINGDIAPI -#endif - -#ifdef GLUT_DEFINED___CDECL -# undef GLUT_DEFINED___CDECL -# undef __cdecl -#endif - -#ifdef GLUT_DEFINED__CRTIMP -# undef GLUT_DEFINED__CRTIMP -# undef _CRTIMP -#endif - -#endif /* __glut_h__ */ diff --git a/sdk/Linux/2019.2/samples/ViewScene/GetPosition.cxx b/sdk/Linux/2019.2/samples/ViewScene/GetPosition.cxx deleted file mode 100644 index 72195a0..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GetPosition.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains the functions to get the global -// position of a node for a given time in the current animation stack. -// -///////////////////////////////////////////////////////////////////////// - -#include "GetPosition.h" - -// Get the global position of the node for the current pose. -// If the specified node is not part of the pose or no pose is specified, get its -// global position at the current time. -FbxAMatrix GetGlobalPosition(FbxNode* pNode, const FbxTime& pTime, FbxPose* pPose, FbxAMatrix* pParentGlobalPosition) -{ - FbxAMatrix lGlobalPosition; - bool lPositionFound = false; - - if (pPose) - { - int lNodeIndex = pPose->Find(pNode); - - if (lNodeIndex > -1) - { - // The bind pose is always a global matrix. - // If we have a rest pose, we need to check if it is - // stored in global or local space. - if (pPose->IsBindPose() || !pPose->IsLocalMatrix(lNodeIndex)) - { - lGlobalPosition = GetPoseMatrix(pPose, lNodeIndex); - } - else - { - // We have a local matrix, we need to convert it to - // a global space matrix. - FbxAMatrix lParentGlobalPosition; - - if (pParentGlobalPosition) - { - lParentGlobalPosition = *pParentGlobalPosition; - } - else - { - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalPosition(pNode->GetParent(), pTime, pPose); - } - } - - FbxAMatrix lLocalPosition = GetPoseMatrix(pPose, lNodeIndex); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - - lPositionFound = true; - } - } - - if (!lPositionFound) - { - // There is no pose entry for that node, get the current global position instead. - - // Ideally this would use parent global position and local position to compute the global position. - // Unfortunately the equation - // lGlobalPosition = pParentGlobalPosition * lLocalPosition - // does not hold when inheritance type is other than "Parent" (RSrs). - // To compute the parent rotation and scaling is tricky in the RrSs and Rrs cases. - lGlobalPosition = pNode->EvaluateGlobalTransform(pTime); - } - - return lGlobalPosition; -} - -// Get the matrix of the given pose -FbxAMatrix GetPoseMatrix(FbxPose* pPose, int pNodeIndex) -{ - FbxAMatrix lPoseMatrix; - FbxMatrix lMatrix = pPose->GetMatrix(pNodeIndex); - - memcpy((double*)lPoseMatrix, (double*)lMatrix, sizeof(lMatrix.mData)); - - return lPoseMatrix; -} - -// Get the geometry offset to a node. It is never inherited by the children. -FbxAMatrix GetGeometry(FbxNode* pNode) -{ - const FbxVector4 lT = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - const FbxVector4 lR = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - const FbxVector4 lS = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - - return FbxAMatrix(lT, lR, lS); -} - diff --git a/sdk/Linux/2019.2/samples/ViewScene/GetPosition.h b/sdk/Linux/2019.2/samples/ViewScene/GetPosition.h deleted file mode 100644 index 1b26338..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GetPosition.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GET_POSITION_H -#define _GET_POSITION_H - -#include - -FbxAMatrix GetGlobalPosition(FbxNode* pNode, - const FbxTime& pTime, - FbxPose* pPose = NULL, - FbxAMatrix* pParentGlobalPosition = NULL); -FbxAMatrix GetPoseMatrix(FbxPose* pPose, - int pNodeIndex); -FbxAMatrix GetGeometry(FbxNode* pNode); - -#endif // #ifndef _GET_POSITION_H - - - diff --git a/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.cxx b/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.cxx deleted file mode 100644 index 89baece..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.cxx +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GlFunctions.h" - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glTranslated( pFilmOffsetX, pFilmOffsetY, 0); - gluPerspective(pFieldOfViewY, - pAspect, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(pLeftPlane, - pRightPlane, - pBottomPlane, - pTopPlane, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlDrawMarker(FbxAMatrix& pGlobalPosition) -{ - glColor3f(0.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - glBegin(GL_LINE_LOOP); - glVertex3f(+1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glEnd(); - - glPopMatrix(); -} - - -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, FbxAMatrix& pGlobalEndPosition) -{ - glColor3f(1.0, 0.0, 0.0); - glLineWidth(2.0); - - glBegin(GL_LINES); - - glVertex3dv((GLdouble *)pGlobalBasePosition.GetT()); - glVertex3dv((GLdouble *)pGlobalEndPosition.GetT()); - - glEnd(); -} - -void GlDrawCamera(FbxAMatrix& pGlobalPosition, double pRoll) -{ - glColor3d(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - glRotated(pRoll, 1.0, 0.0, 0.0); - - int i; - float lCamera[10][2] = {{ 0, 5.5 }, { -3, 4.5 }, - { -3, 7.5 }, { -6, 10.5 }, { -23, 10.5 }, - { -23, -4.5 }, { -20, -7.5 }, { -3, -7.5 }, - { -3, -4.5 }, { 0, -5.5 } }; - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - } - glEnd(); - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - } - } - glEnd(); - - for (i = 0; i < 10; i++) - { - glBegin( GL_LINES ); - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - glEnd(); - } - - glPopMatrix(); -} - - -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition) -{ - glColor3f(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - double lCrossHair[6][3] = { { -3, 0, 0 }, { 3, 0, 0 }, - { 0, -3, 0 }, { 0, 3, 0 }, - { 0, 0, -3 }, { 0, 0, 3 } }; - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[0]); - glVertex3dv(lCrossHair[1]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[2]); - glVertex3dv(lCrossHair[3]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[4]); - glVertex3dv(lCrossHair[5]); - - glEnd(); - - glPopMatrix(); -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.h b/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.h deleted file mode 100644 index 5df14df..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/GlFunctions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GL_FUNCTIONS_H -#define _GL_FUNCTIONS_H - -#include - -#include "GL/glew.h" -#define GLUT_DISABLE_ATEXIT_HACK -#if defined(__MACH__) -#include -#else -#include "GL/gl.h" -#include "GL/glu.h" -#endif - -#include - -enum ShadingMode -{ - SHADING_MODE_WIREFRAME, - SHADING_MODE_SHADED, -}; - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY); -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp); - -void GlDrawMarker(FbxAMatrix& pGlobalPosition); -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, - FbxAMatrix& pGlobalEndPosition); -void GlDrawCamera(FbxAMatrix& pGlobalPosition, - double pRoll); -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition); - -#endif // #ifndef _GL_FUNCTIONS_H - - diff --git a/sdk/Linux/2019.2/samples/ViewScene/SceneCache.cxx b/sdk/Linux/2019.2/samples/ViewScene/SceneCache.cxx deleted file mode 100644 index 1cdc401..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SceneCache.cxx +++ /dev/null @@ -1,690 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneCache.h" - -namespace -{ - const float ANGLE_TO_RADIAN = 3.1415926f / 180.f; - const GLfloat BLACK_COLOR[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat GREEN_COLOR[] = {0.0f, 1.0f, 0.0f, 1.0f}; - const GLfloat WHITE_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat WIREFRAME_COLOR[] = {0.5f, 0.5f, 0.5f, 1.0f}; - - const int TRIANGLE_VERTEX_COUNT = 3; - - // Four floats for every position. - const int VERTEX_STRIDE = 4; - // Three floats for every normal. - const int NORMAL_STRIDE = 3; - // Two floats for every UV. - const int UV_STRIDE = 2; - - const GLfloat DEFAULT_LIGHT_POSITION[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat DEFAULT_DIRECTION_LIGHT_POSITION[] = {0.0f, 0.0f, 1.0f, 0.0f}; - const GLfloat DEFAULT_SPOT_LIGHT_DIRECTION[] = {0.0f, 0.0f, -1.0f}; - const GLfloat DEFAULT_LIGHT_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat DEFAULT_LIGHT_SPOT_CUTOFF = 180.0f; - - // Get specific property value and connected texture if any. - // Value = Property value * Factor property value (if no factor property, multiply by 1). - FbxDouble3 GetMaterialProperty(const FbxSurfaceMaterial * pMaterial, - const char * pPropertyName, - const char * pFactorPropertyName, - GLuint & pTextureName) - { - FbxDouble3 lResult(0, 0, 0); - const FbxProperty lProperty = pMaterial->FindProperty(pPropertyName); - const FbxProperty lFactorProperty = pMaterial->FindProperty(pFactorPropertyName); - if (lProperty.IsValid() && lFactorProperty.IsValid()) - { - lResult = lProperty.Get(); - double lFactor = lFactorProperty.Get(); - if (lFactor != 1) - { - lResult[0] *= lFactor; - lResult[1] *= lFactor; - lResult[2] *= lFactor; - } - } - - if (lProperty.IsValid()) - { - const int lTextureCount = lProperty.GetSrcObjectCount(); - if (lTextureCount) - { - const FbxFileTexture* lTexture = lProperty.GetSrcObject(); - if (lTexture && lTexture->GetUserDataPtr()) - { - pTextureName = *(static_cast(lTexture->GetUserDataPtr())); - } - } - } - - return lResult; - } -} - -VBOMesh::VBOMesh() : mHasNormal(false), mHasUV(false), mAllByControlPoint(true) -{ - // Reset every VBO to zero, which means no buffer. - for (int lVBOIndex = 0; lVBOIndex < VBO_COUNT; ++lVBOIndex) - { - mVBONames[lVBOIndex] = 0; - } -} - -VBOMesh::~VBOMesh() -{ - // Delete VBO objects, zeros are ignored automatically. - glDeleteBuffers(VBO_COUNT, mVBONames); - -// FbxArrayDelete(mSubMeshes); - - for(int i=0; i < mSubMeshes.GetCount(); i++) - { - delete mSubMeshes[i]; - } - - mSubMeshes.Clear(); - -} - -bool VBOMesh::Initialize(const FbxMesh *pMesh) -{ - if (!pMesh->GetNode()) - return false; - - const int lPolygonCount = pMesh->GetPolygonCount(); - - // Count the polygon count of each material - FbxLayerElementArrayTemplate* lMaterialIndice = NULL; - FbxGeometryElement::EMappingMode lMaterialMappingMode = FbxGeometryElement::eNone; - if (pMesh->GetElementMaterial()) - { - lMaterialIndice = &pMesh->GetElementMaterial()->GetIndexArray(); - lMaterialMappingMode = pMesh->GetElementMaterial()->GetMappingMode(); - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - FBX_ASSERT(lMaterialIndice->GetCount() == lPolygonCount); - if (lMaterialIndice->GetCount() == lPolygonCount) - { - // Count the faces of each material - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - const int lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - if (mSubMeshes.GetCount() < lMaterialIndex + 1) - { - mSubMeshes.Resize(lMaterialIndex + 1); - } - if (mSubMeshes[lMaterialIndex] == NULL) - { - mSubMeshes[lMaterialIndex] = new SubMesh; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Make sure we have no "holes" (NULL) in the mSubMeshes table. This can happen - // if, in the loop above, we resized the mSubMeshes by more than one slot. - for (int i = 0; i < mSubMeshes.GetCount(); i++) - { - if (mSubMeshes[i] == NULL) - mSubMeshes[i] = new SubMesh; - } - - // Record the offset (how many vertex) - const int lMaterialCount = mSubMeshes.GetCount(); - int lOffset = 0; - for (int lIndex = 0; lIndex < lMaterialCount; ++lIndex) - { - mSubMeshes[lIndex]->IndexOffset = lOffset; - lOffset += mSubMeshes[lIndex]->TriangleCount * 3; - // This will be used as counter in the following procedures, reset to zero - mSubMeshes[lIndex]->TriangleCount = 0; - } - FBX_ASSERT(lOffset == lPolygonCount * 3); - } - } - } - - // All faces will use the same material. - if (mSubMeshes.GetCount() == 0) - { - mSubMeshes.Resize(1); - mSubMeshes[0] = new SubMesh(); - } - - // Congregate all the data of a mesh to be cached in VBOs. - // If normal or UV is by polygon vertex, record all vertex attributes by polygon vertex. - mHasNormal = pMesh->GetElementNormalCount() > 0; - mHasUV = pMesh->GetElementUVCount() > 0; - FbxGeometryElement::EMappingMode lNormalMappingMode = FbxGeometryElement::eNone; - FbxGeometryElement::EMappingMode lUVMappingMode = FbxGeometryElement::eNone; - if (mHasNormal) - { - lNormalMappingMode = pMesh->GetElementNormal(0)->GetMappingMode(); - if (lNormalMappingMode == FbxGeometryElement::eNone) - { - mHasNormal = false; - } - if (mHasNormal && lNormalMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - if (mHasUV) - { - lUVMappingMode = pMesh->GetElementUV(0)->GetMappingMode(); - if (lUVMappingMode == FbxGeometryElement::eNone) - { - mHasUV = false; - } - if (mHasUV && lUVMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - - // Allocate the array memory, by control point or by polygon vertex. - int lPolygonVertexCount = pMesh->GetControlPointsCount(); - if (!mAllByControlPoint) - { - lPolygonVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - } - float * lVertices = new float[lPolygonVertexCount * VERTEX_STRIDE]; - unsigned int * lIndices = new unsigned int[lPolygonCount * TRIANGLE_VERTEX_COUNT]; - float * lNormals = NULL; - if (mHasNormal) - { - lNormals = new float[lPolygonVertexCount * NORMAL_STRIDE]; - } - float * lUVs = NULL; - FbxStringList lUVNames; - pMesh->GetUVSetNames(lUVNames); - const char * lUVName = NULL; - if (mHasUV && lUVNames.GetCount()) - { - lUVs = new float[lPolygonVertexCount * UV_STRIDE]; - lUVName = lUVNames[0]; - } - - // Populate the array with vertex attribute, if by control point. - const FbxVector4 * lControlPoints = pMesh->GetControlPoints(); - FbxVector4 lCurrentVertex; - FbxVector4 lCurrentNormal; - FbxVector2 lCurrentUV; - if (mAllByControlPoint) - { - const FbxGeometryElementNormal * lNormalElement = NULL; - const FbxGeometryElementUV * lUVElement = NULL; - if (mHasNormal) - { - lNormalElement = pMesh->GetElementNormal(0); - } - if (mHasUV) - { - lUVElement = pMesh->GetElementUV(0); - } - for (int lIndex = 0; lIndex < lPolygonVertexCount; ++lIndex) - { - // Save the vertex position. - lCurrentVertex = lControlPoints[lIndex]; - lVertices[lIndex * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - - // Save the normal. - if (mHasNormal) - { - int lNormalIndex = lIndex; - if (lNormalElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndex); - } - lCurrentNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - lNormals[lIndex * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lIndex * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lIndex * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - // Save the UV. - if (mHasUV) - { - int lUVIndex = lIndex; - if (lUVElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lUVIndex = lUVElement->GetIndexArray().GetAt(lIndex); - } - lCurrentUV = lUVElement->GetDirectArray().GetAt(lUVIndex); - lUVs[lIndex * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lIndex * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - - } - - int lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - // The material for current face. - int lMaterialIndex = 0; - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - } - - // Where should I save the vertex attribute index, according to the material - const int lIndexOffset = mSubMeshes[lMaterialIndex]->IndexOffset + - mSubMeshes[lMaterialIndex]->TriangleCount * 3; - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - if (mAllByControlPoint) - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lControlPointIndex); - } - // Populate the array with vertex attribute, if by polygon vertex. - else - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lVertexCount); - - lCurrentVertex = lControlPoints[lControlPointIndex]; - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - - if (mHasNormal) - { - pMesh->GetPolygonVertexNormal(lPolygonIndex, lVerticeIndex, lCurrentNormal); - lNormals[lVertexCount * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lVertexCount * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lVertexCount * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - if (mHasUV) - { - bool lUnmappedUV; - pMesh->GetPolygonVertexUV(lPolygonIndex, lVerticeIndex, lUVName, lCurrentUV, lUnmappedUV); - lUVs[lVertexCount * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lVertexCount * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - } - ++lVertexCount; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Create VBOs - glGenBuffers(VBO_COUNT, mVBONames); - - // Save vertex attributes into GPU - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - - if (mHasNormal) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * NORMAL_STRIDE * sizeof(float), lNormals, GL_STATIC_DRAW); - delete [] lNormals; - } - - if (mHasUV) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * UV_STRIDE * sizeof(float), lUVs, GL_STATIC_DRAW); - delete [] lUVs; - } - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, lPolygonCount * TRIANGLE_VERTEX_COUNT * sizeof(unsigned int), lIndices, GL_STATIC_DRAW); - delete [] lIndices; - - return true; -} - -void VBOMesh::UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const -{ - // Convert to the same sequence with data in GPU. - float * lVertices = NULL; - int lVertexCount = 0; - if (mAllByControlPoint) - { - lVertexCount = pMesh->GetControlPointsCount(); - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - for (int lIndex = 0; lIndex < lVertexCount; ++lIndex) - { - lVertices[lIndex * VERTEX_STRIDE] = static_cast(pVertices[lIndex][0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(pVertices[lIndex][1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(pVertices[lIndex][2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - } - } - else - { - const int lPolygonCount = pMesh->GetPolygonCount(); - lVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - - lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(pVertices[lControlPointIndex][0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(pVertices[lControlPointIndex][1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(pVertices[lControlPointIndex][2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - } - ++lVertexCount; - } - } - } - - // Transfer into GPU. - if (lVertices) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - } -} - -void VBOMesh::Draw(int pMaterialIndex, ShadingMode pShadingMode) const -{ -#if _MSC_VER >= 1900 && defined(_WIN64) - // this warning occurs when building 64bit. - #pragma warning( push ) - #pragma warning( disable : 4312) -#endif - - // Where to start. - GLsizei lOffset = mSubMeshes[pMaterialIndex]->IndexOffset * sizeof(unsigned int); - if ( pShadingMode == SHADING_MODE_SHADED) - { - const GLsizei lElementCount = mSubMeshes[pMaterialIndex]->TriangleCount * 3; - glDrawElements(GL_TRIANGLES, lElementCount, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - } - else - { - for (int lIndex = 0; lIndex < mSubMeshes[pMaterialIndex]->TriangleCount; ++lIndex) - { - // Draw line loop for every triangle. - glDrawElements(GL_LINE_LOOP, TRIANGLE_VERTEX_COUNT, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - lOffset += sizeof(unsigned int) * TRIANGLE_VERTEX_COUNT; - } - } -#if _MSC_VER >= 1900 && defined(_WIN64) - #pragma warning( pop ) -#endif -} - -void VBOMesh::BeginDraw(ShadingMode pShadingMode) const -{ - // Push OpenGL attributes. - glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_CURRENT_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - // Set vertex position array. - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glVertexPointer(VERTEX_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_VERTEX_ARRAY); - - // Set normal array. - if (mHasNormal && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glNormalPointer(GL_FLOAT, 0, 0); - glEnableClientState(GL_NORMAL_ARRAY); - } - - // Set UV array. - if (mHasUV && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glTexCoordPointer(UV_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - } - - // Set index array. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - - if (pShadingMode == SHADING_MODE_SHADED) - { - glEnable(GL_LIGHTING); - - glEnable(GL_TEXTURE_2D); - - glEnable(GL_NORMALIZE); - } - else - { - glColor4fv(WIREFRAME_COLOR); - } -} - -void VBOMesh::EndDraw() const -{ - // Reset VBO binding. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopClientAttrib(); -} - -MaterialCache::MaterialCache() : mShinness(0) -{ - -} - -MaterialCache::~MaterialCache() -{ - -} - -// Bake material properties. -bool MaterialCache::Initialize(const FbxSurfaceMaterial * pMaterial) -{ - const FbxDouble3 lEmissive = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sEmissive, FbxSurfaceMaterial::sEmissiveFactor, mEmissive.mTextureName); - mEmissive.mColor[0] = static_cast(lEmissive[0]); - mEmissive.mColor[1] = static_cast(lEmissive[1]); - mEmissive.mColor[2] = static_cast(lEmissive[2]); - - const FbxDouble3 lAmbient = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sAmbient, FbxSurfaceMaterial::sAmbientFactor, mAmbient.mTextureName); - mAmbient.mColor[0] = static_cast(lAmbient[0]); - mAmbient.mColor[1] = static_cast(lAmbient[1]); - mAmbient.mColor[2] = static_cast(lAmbient[2]); - - const FbxDouble3 lDiffuse = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sDiffuse, FbxSurfaceMaterial::sDiffuseFactor, mDiffuse.mTextureName); - mDiffuse.mColor[0] = static_cast(lDiffuse[0]); - mDiffuse.mColor[1] = static_cast(lDiffuse[1]); - mDiffuse.mColor[2] = static_cast(lDiffuse[2]); - - const FbxDouble3 lSpecular = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sSpecular, FbxSurfaceMaterial::sSpecularFactor, mSpecular.mTextureName); - mSpecular.mColor[0] = static_cast(lSpecular[0]); - mSpecular.mColor[1] = static_cast(lSpecular[1]); - mSpecular.mColor[2] = static_cast(lSpecular[2]); - - FbxProperty lShininessProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - if (lShininessProperty.IsValid()) - { - double lShininess = lShininessProperty.Get(); - mShinness = static_cast(lShininess); - } - - return true; -} - -void MaterialCache::SetCurrentMaterial() const -{ - glMaterialfv(GL_FRONT, GL_EMISSION, mEmissive.mColor); - glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient.mColor); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mDiffuse.mColor); - glMaterialfv(GL_FRONT, GL_SPECULAR, mSpecular.mColor); - glMaterialf(GL_FRONT, GL_SHININESS, mShinness); - - glBindTexture(GL_TEXTURE_2D, mDiffuse.mTextureName); -} - -void MaterialCache::SetDefaultMaterial() -{ - glMaterialfv(GL_FRONT, GL_EMISSION, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_AMBIENT, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_DIFFUSE, GREEN_COLOR); - glMaterialfv(GL_FRONT, GL_SPECULAR, BLACK_COLOR); - glMaterialf(GL_FRONT, GL_SHININESS, 0); - - glBindTexture(GL_TEXTURE_2D, 0); -} - -int LightCache::sLightCount = 0; - -LightCache::LightCache() : mType(FbxLight::ePoint) -{ - mLightIndex = GL_LIGHT0 + sLightCount++; -} - -LightCache::~LightCache() -{ - glDisable(mLightIndex); - --sLightCount; -} - -// Bake light properties. -bool LightCache::Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer) -{ - mType = pLight->LightType.Get(); - - FbxPropertyT lColorProperty = pLight->Color; - FbxDouble3 lLightColor = lColorProperty.Get(); - mColorRed.mValue = static_cast(lLightColor[0]); - mColorGreen.mValue = static_cast(lLightColor[1]); - mColorBlue.mValue = static_cast(lLightColor[2]); - - if (pAnimLayer) - { - mColorRed.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - mColorGreen.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - mColorBlue.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - } - - if (mType == FbxLight::eSpot) - { - FbxPropertyT lConeAngleProperty = pLight->InnerAngle; - mConeAngle.mValue = static_cast(lConeAngleProperty.Get()); - if (pAnimLayer) - mConeAngle.mAnimCurve = lConeAngleProperty.GetCurve(pAnimLayer); - } - - return true; -} - -void LightCache::SetLight(const FbxTime & pTime) const -{ - const GLfloat lLightColor[4] = {mColorRed.Get(pTime), mColorGreen.Get(pTime), mColorBlue.Get(pTime), 1.0f}; - const GLfloat lConeAngle = mConeAngle.Get(pTime); - - glColor3fv(lLightColor); - - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_POLYGON_BIT); - // Visible for double side. - glDisable(GL_CULL_FACE); - // Draw wire-frame geometry. - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - if (mType == FbxLight::eSpot) - { - // Draw a cone for spot light. - glPushMatrix(); - glScalef(1.0f, 1.0f, -1.0f); - const double lRadians = ANGLE_TO_RADIAN * lConeAngle; - const double lHeight = 15.0; - const double lBase = lHeight * tan(lRadians / 2); - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluCylinder(lQuadObj, 0.0, lBase, lHeight, 18, 1); - gluDeleteQuadric(lQuadObj); - glPopMatrix(); - } - else - { - // Draw a sphere for other types. - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluSphere(lQuadObj, 1.0, 10, 10); - gluDeleteQuadric(lQuadObj); - } - glPopAttrib(); - glPopAttrib(); - - // The transform have been set, so set in local coordinate. - if (mType == FbxLight::eDirectional) - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - } - else - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_LIGHT_POSITION); - } - - glLightfv(mLightIndex, GL_DIFFUSE, lLightColor); - glLightfv(mLightIndex, GL_SPECULAR, lLightColor); - - if (mType == FbxLight::eSpot && lConeAngle != 0.0) - { - glLightfv(mLightIndex, GL_SPOT_DIRECTION, DEFAULT_SPOT_LIGHT_DIRECTION); - - // If the cone angle is 0, equal to a point light. - if (lConeAngle != 0.0f) - { - // OpenGL use cut off angle, which is half of the cone angle. - glLightf(mLightIndex, GL_SPOT_CUTOFF, lConeAngle/2); - } - } - glEnable(mLightIndex); -} - -void LightCache::IntializeEnvironment(const FbxColor & pAmbientLight) -{ - glLightfv(GL_LIGHT0, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - glLightfv(GL_LIGHT0, GL_DIFFUSE, DEFAULT_LIGHT_COLOR); - glLightfv(GL_LIGHT0, GL_SPECULAR, DEFAULT_LIGHT_COLOR); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, DEFAULT_LIGHT_SPOT_CUTOFF); - glEnable(GL_LIGHT0); - - // Set ambient light. - GLfloat lAmbientLight[] = {static_cast(pAmbientLight[0]), static_cast(pAmbientLight[1]), - static_cast(pAmbientLight[2]), 1.0f}; - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lAmbientLight); -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/SceneCache.h b/sdk/Linux/2019.2/samples/ViewScene/SceneCache.h deleted file mode 100644 index 793447c..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SceneCache.h +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CACHE_H -#define _SCENE_CACHE_H - -#include "GlFunctions.h" - -// Save mesh vertices, normals, UVs and indices in GPU with OpenGL Vertex Buffer Objects -class VBOMesh -{ -public: - VBOMesh(); - ~VBOMesh(); - - // Save up data into GPU buffers. - bool Initialize(const FbxMesh * pMesh); - - // Update vertex positions for deformed meshes. - void UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const; - - // Bind buffers, set vertex arrays, turn on lighting and texture. - void BeginDraw(ShadingMode pShadingMode) const; - // Draw all the faces with specific material with given shading mode. - void Draw(int pMaterialIndex, ShadingMode pShadingMode) const; - // Unbind buffers, reset vertex arrays, turn off lighting and texture. - void EndDraw() const; - - // Get the count of material groups - int GetSubMeshCount() const { return mSubMeshes.GetCount(); } - -private: - enum - { - VERTEX_VBO, - NORMAL_VBO, - UV_VBO, - INDEX_VBO, - VBO_COUNT, - }; - - // For every material, record the offsets in every VBO and triangle counts - struct SubMesh - { - SubMesh() : IndexOffset(0), TriangleCount(0) {} - - int IndexOffset; - int TriangleCount; - }; - - GLuint mVBONames[VBO_COUNT]; - FbxArray mSubMeshes; - bool mHasNormal; - bool mHasUV; - bool mAllByControlPoint; // Save data in VBO by control point or by polygon vertex. -}; - -// Cache for FBX material -class MaterialCache -{ -public: - MaterialCache(); - ~MaterialCache(); - - bool Initialize(const FbxSurfaceMaterial * pMaterial); - - // Set material colors and binding diffuse texture if exists. - void SetCurrentMaterial() const; - - bool HasTexture() const { return mDiffuse.mTextureName != 0; } - - // Set default green color. - static void SetDefaultMaterial(); - -private: - struct ColorChannel - { - ColorChannel() : mTextureName(0) - { - mColor[0] = 0.0f; - mColor[1] = 0.0f; - mColor[2] = 0.0f; - mColor[3] = 1.0f; - } - - GLuint mTextureName; - GLfloat mColor[4]; - }; - ColorChannel mEmissive; - ColorChannel mAmbient; - ColorChannel mDiffuse; - ColorChannel mSpecular; - GLfloat mShinness; -}; - -// Property cache, value and animation curve. -struct PropertyChannel -{ - PropertyChannel() : mAnimCurve(NULL), mValue(0.0f) {} - // Query the channel value at specific time. - GLfloat Get(const FbxTime & pTime) const - { - if (mAnimCurve) - { - return mAnimCurve->Evaluate(pTime); - } - else - { - return mValue; - } - } - - FbxAnimCurve * mAnimCurve; - GLfloat mValue; -}; - -// Cache for FBX lights -class LightCache -{ -public: - LightCache(); - ~LightCache(); - - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - static void IntializeEnvironment(const FbxColor & pAmbientLight); - - bool Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer); - - // Draw a geometry (sphere for point and directional light, cone for spot light). - // And set light attributes. - void SetLight(const FbxTime & pTime) const; - -private: - static int sLightCount; // How many lights in this scene. - - GLuint mLightIndex; - FbxLight::EType mType; - PropertyChannel mColorRed; - PropertyChannel mColorGreen; - PropertyChannel mColorBlue; - PropertyChannel mConeAngle; -}; - -#endif // _SCENE_CACHE_H diff --git a/sdk/Linux/2019.2/samples/ViewScene/SceneContext.cxx b/sdk/Linux/2019.2/samples/ViewScene/SceneContext.cxx deleted file mode 100644 index 5b2c668..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SceneContext.cxx +++ /dev/null @@ -1,1019 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneContext.h" - -#include "SceneCache.h" -#include "SetCamera.h" -#include "DrawScene.h" -#include "DrawText.h" -#include "targa.h" -#include "../Common/Common.h" - -namespace -{ - // Default file of ViewScene example - const char * SAMPLE_FILENAME = "humanoid.fbx"; - - // Button and action definition - const int LEFT_BUTTON = 0; - const int MIDDLE_BUTTON = 1; - const int RIGHT_BUTTON = 2; - - const int BUTTON_DOWN = 0; - const int BUTTON_UP = 1; - - // Find all the cameras under this node recursively. - void FillCameraArrayRecursive(FbxNode* pNode, FbxArray& pCameraArray) - { - if (pNode) - { - if (pNode->GetNodeAttribute()) - { - if (pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCamera) - { - pCameraArray.Add(pNode); - } - } - - const int lCount = pNode->GetChildCount(); - for (int i = 0; i < lCount; i++) - { - FillCameraArrayRecursive(pNode->GetChild(i), pCameraArray); - } - } - } - - // Find all the cameras in this scene. - void FillCameraArray(FbxScene* pScene, FbxArray& pCameraArray) - { - pCameraArray.Clear(); - - FillCameraArrayRecursive(pScene->GetRootNode(), pCameraArray); - } - - // Find all poses in this scene. - void FillPoseArray(FbxScene* pScene, FbxArray& pPoseArray) - { - const int lPoseCount = pScene->GetPoseCount(); - - for (int i=0; i < lPoseCount; ++i) - { - pPoseArray.Add(pScene->GetPose(i)); - } - } - - void PreparePointCacheData(FbxScene* pScene, FbxTime &pCache_Start, FbxTime &pCache_Stop) - { - // This function show how to cycle through scene elements in a linear way. - const int lNodeCount = pScene->GetSrcObjectCount(); - FbxStatus lStatus; - - for (int lIndex=0; lIndexGetSrcObject(lIndex); - - if (lNode->GetGeometry()) - { - int i, lVertexCacheDeformerCount = lNode->GetGeometry()->GetDeformerCount(FbxDeformer::eVertexCache); - - // There should be a maximum of 1 Vertex Cache Deformer for the moment - lVertexCacheDeformerCount = lVertexCacheDeformerCount > 0 ? 1 : 0; - - for (i=0; i(lNode->GetGeometry()->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - // Process the point cache data only if the constraint is active - if (lDeformer->Active.Get()) - { - if (lCache->GetCacheFileFormat() == FbxCache::eMaxPointCacheV2) - { - // This code show how to convert from PC2 to MC point cache format - // turn it on if you need it. -#if 0 - if (!lCache->ConvertFromPC2ToMC(FbxCache::eMCOneFile, - FbxTime::GetFrameRate(pScene->GetGlobalTimeSettings().GetTimeMode()))) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lCache->GetStaus().GetErrorString(); - } -#endif - } - else if (lCache->GetCacheFileFormat() == FbxCache::eMayaCache) - { - // This code show how to convert from MC to PC2 point cache format - // turn it on if you need it. - //#if 0 - if (!lCache->ConvertFromMCToPC2(FbxTime::GetFrameRate(pScene->GetGlobalSettings().GetTimeMode()), 0, &lStatus)) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lStatus.GetErrorString(); - } - //#endif - } - - - // Now open the cache file to read from it - if (!lCache->OpenFileForRead(&lStatus)) - { - // Cannot open file - FbxString lTheErrorIs = lStatus.GetErrorString(); - - // Set the deformer inactive so we don't play it back - lDeformer->Active = false; - } - else - { - // get the start and stop time of the cache - FbxTime lChannel_Start; - FbxTime lChannel_Stop; - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - if(lCache->GetAnimationRange(lChannelIndex, lChannel_Start, lChannel_Stop)) - { - // get the smallest start time - if(lChannel_Start < pCache_Start) pCache_Start = lChannel_Start; - - // get the biggest stop time - if(lChannel_Stop > pCache_Stop) pCache_Stop = lChannel_Stop; - } - } - } - } - } - } - } - - // Load a texture file (TGA only now) into GPU and return the texture object name - bool LoadTextureFromFile(const FbxString & pFilePath, unsigned int & pTextureObject) - { - if (pFilePath.Right(3).Upper() == "TGA") - { - tga_image lTGAImage; - - if (tga_read(&lTGAImage, pFilePath.Buffer()) == TGA_NOERR) - { - // Make sure the image is left to right - if (tga_is_right_to_left(&lTGAImage)) - tga_flip_horiz(&lTGAImage); - - // Make sure the image is bottom to top - if (tga_is_top_to_bottom(&lTGAImage)) - tga_flip_vert(&lTGAImage); - - // Make the image BGR 24 - tga_convert_depth(&lTGAImage, 24); - - // Transfer the texture date into GPU - glGenTextures(1, &pTextureObject); - glBindTexture(GL_TEXTURE_2D, pTextureObject); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexImage2D(GL_TEXTURE_2D, 0, 3, lTGAImage.width, lTGAImage.height, 0, GL_BGR, - GL_UNSIGNED_BYTE, lTGAImage.image_data); - glBindTexture(GL_TEXTURE_2D, 0); - - tga_free_buffers(&lTGAImage); - - return true; - } - } - - return false; - } - - // Bake node attributes and materials under this node recursively. - // Currently only mesh, light and material. - void LoadCacheRecursive(FbxNode * pNode, FbxAnimLayer * pAnimLayer, bool pSupportVBO) - { - // Bake material and hook as user data. - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && !lMaterial->GetUserDataPtr()) - { - FbxAutoPtr lMaterialCache(new MaterialCache); - if (lMaterialCache->Initialize(lMaterial)) - { - lMaterial->SetUserDataPtr(lMaterialCache.Release()); - } - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Bake mesh as VBO(vertex buffer object) into GPU. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (pSupportVBO && lMesh && !lMesh->GetUserDataPtr()) - { - FbxAutoPtr lMeshCache(new VBOMesh); - if (lMeshCache->Initialize(lMesh)) - { - lMesh->SetUserDataPtr(lMeshCache.Release()); - } - } - } - // Bake light properties. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && !lLight->GetUserDataPtr()) - { - FbxAutoPtr lLightCache(new LightCache); - if (lLightCache->Initialize(lLight, pAnimLayer)) - { - lLight->SetUserDataPtr(lLightCache.Release()); - } - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - LoadCacheRecursive(pNode->GetChild(lChildIndex), pAnimLayer, pSupportVBO); - } - } - - // Unload the cache and release the memory under this node recursively. - void UnloadCacheRecursive(FbxNode * pNode) - { - // Unload the material cache - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && lMaterial->GetUserDataPtr()) - { - MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - lMaterial->SetUserDataPtr(NULL); - delete lMaterialCache; - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Unload the mesh cache - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (lMesh && lMesh->GetUserDataPtr()) - { - VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - lMesh->SetUserDataPtr(NULL); - delete lMeshCache; - } - } - // Unload the light cache - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && lLight->GetUserDataPtr()) - { - LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - lLight->SetUserDataPtr(NULL); - delete lLightCache; - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - UnloadCacheRecursive(pNode->GetChild(lChildIndex)); - } - } - - // Bake node attributes and materials for this scene and load the textures. - void LoadCacheRecursive(FbxScene * pScene, FbxAnimLayer * pAnimLayer, const char * pFbxFileName, bool pSupportVBO) - { - // Load the textures into GPU, only for file texture now - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && !lFileTexture->GetUserDataPtr()) - { - // Try to load the texture from absolute path - const FbxString lFileName = lFileTexture->GetFileName(); - - // Only TGA textures are supported now. - if (lFileName.Right(3).Upper() != "TGA") - { - FBXSDK_printf("Only TGA textures are supported now: %s\n", lFileName.Buffer()); - continue; - } - - GLuint lTextureObject = 0; - bool lStatus = LoadTextureFromFile(lFileName, lTextureObject); - - const FbxString lAbsFbxFileName = FbxPathUtils::Resolve(pFbxFileName); - const FbxString lAbsFolderName = FbxPathUtils::GetFolderName(lAbsFbxFileName); - if (!lStatus) - { - // Load texture from relative file name (relative to FBX file) - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lFileTexture->GetRelativeFileName()); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - // Load texture from file name only (relative to FBX file) - const FbxString lTextureFileName = FbxPathUtils::GetFileName(lFileName); - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lTextureFileName); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - FBXSDK_printf("Failed to load texture file: %s\n", lFileName.Buffer()); - continue; - } - - if (lStatus) - { - GLuint * lTextureName = new GLuint(lTextureObject); - lFileTexture->SetUserDataPtr(lTextureName); - } - } - } - - LoadCacheRecursive(pScene->GetRootNode(), pAnimLayer, pSupportVBO); - } - - // Unload the cache and release the memory fro this scene and release the textures in GPU - void UnloadCacheRecursive(FbxScene * pScene) - { - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && lFileTexture->GetUserDataPtr()) - { - GLuint * lTextureName = static_cast(lFileTexture->GetUserDataPtr()); - lFileTexture->SetUserDataPtr(NULL); - glDeleteTextures(1, lTextureName); - delete lTextureName; - } - } - - UnloadCacheRecursive(pScene->GetRootNode()); - } -} - -bool InitializeOpenGL() -{ - // Initialize GLEW. - GLenum lError = glewInit(); - if (lError != GLEW_OK) - { - FBXSDK_printf("GLEW Error: %s\n", glewGetErrorString(lError)); - return false; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glClearColor(0.0, 0.0, 0.0, 0.0); - - // OpenGL 1.5 at least. - if (!GLEW_VERSION_1_5) - { - FBXSDK_printf("The OpenGL version should be at least 1.5 to display shaded scene!\n"); - return false; - } - - return true; -} - -SceneContext::SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO) -: mFileName(pFileName), mStatus(UNLOADED), -mSdkManager(NULL), mScene(NULL), mImporter(NULL), mCurrentAnimLayer(NULL), mSelectedNode(NULL), -mPoseIndex(-1), mCameraStatus(CAMERA_NOTHING), mPause(false), mShadingMode(SHADING_MODE_SHADED), -mSupportVBO(pSupportVBO), mCameraZoomMode(ZOOM_FOCAL_LENGTH), -mWindowWidth(pWindowWidth), mWindowHeight(pWindowHeight), mDrawText(new DrawText) -{ - if (mFileName == NULL) - mFileName = SAMPLE_FILENAME; - - // initialize cache start and stop time - mCache_Start = FBXSDK_TIME_INFINITE; - mCache_Stop = FBXSDK_TIME_MINUS_INFINITE; - - // Create the FBX SDK manager which is the object allocator for almost - // all the classes in the SDK and create the scene. - InitializeSdkObjects(mSdkManager, mScene); - - if (mSdkManager) - { - // Create the importer. - int lFileFormat = -1; - mImporter = FbxImporter::Create(mSdkManager,""); - if (!mSdkManager->GetIOPluginRegistry()->DetectReaderFileFormat(mFileName, lFileFormat) ) - { - // Unrecognizable file format. Try to fall back to FbxImporter::eFBX_BINARY - lFileFormat = mSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( "FBX binary (*.fbx)" );; - } - - // Initialize the importer by providing a filename. - if(mImporter->Initialize(mFileName, lFileFormat) == true) - { - // The file is going to be imported at - // the end of the first display callback. - mWindowMessage = "Importing file "; - mWindowMessage += mFileName; - mWindowMessage += "\nPlease wait!"; - - // Set scene status flag to ready to load. - mStatus = MUST_BE_LOADED; - } - else - { - mWindowMessage = "Unable to open file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - mWindowMessage += "\nEsc to exit"; - } - } - else - { - mWindowMessage = "Unable to create the FBX SDK manager"; - mWindowMessage += "\nEsc to exit"; - } -} - -SceneContext::~SceneContext() -{ - FbxArrayDelete(mAnimStackNameArray); - - delete mDrawText; - - // Unload the cache and free the memory - if (mScene) - { - UnloadCacheRecursive(mScene); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(mSdkManager, true); -} - -bool SceneContext::LoadFile() -{ - bool lResult = false; - // Make sure that the scene is ready to load. - if (mStatus == MUST_BE_LOADED) - { - if (mImporter->Import(mScene) == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(mScene), &status, &details); - lResult = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lResult == false) - { - if (details.GetCount()) - { - mStatus = UNLOADED; - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - - if (lResult) - { - // Set the scene status flag to refresh - // the scene in the first timer callback. - mStatus = MUST_BE_REFRESHED; - - // Convert Axis System to what is used in this example, if needed - FbxAxisSystem SceneAxisSystem = mScene->GetGlobalSettings().GetAxisSystem(); - FbxAxisSystem OurAxisSystem(FbxAxisSystem::eYAxis, FbxAxisSystem::eParityOdd, FbxAxisSystem::eRightHanded); - if (SceneAxisSystem != OurAxisSystem) - { - OurAxisSystem.ConvertScene(mScene); - } - - // Convert Unit System to what is used in this example, if needed - FbxSystemUnit SceneSystemUnit = mScene->GetGlobalSettings().GetSystemUnit(); - if (SceneSystemUnit.GetScaleFactor() != 1.0) - { - //The unit in this example is centimeter. - FbxSystemUnit::cm.ConvertScene(mScene); - } - - // Get the list of all the animation stack. - mScene->FillAnimStackNameArray(mAnimStackNameArray); - - // Get the list of all the cameras in the scene. - FillCameraArray(mScene, mCameraArray); - - // Convert mesh, NURBS and patch into triangle mesh - FbxGeometryConverter lGeomConverter(mSdkManager); - lGeomConverter.Triangulate(mScene, /*replace*/true); - - // Bake the scene for one frame - LoadCacheRecursive(mScene, mCurrentAnimLayer, mFileName, mSupportVBO); - - // Convert any .PC2 point cache data into the .MC format for - // vertex cache deformer playback. - PreparePointCacheData(mScene, mCache_Start, mCache_Stop); - - // Get the list of pose in the scene - FillPoseArray(mScene, mPoseArray); - - // Initialize the window message. - mWindowMessage = "File "; - mWindowMessage += mFileName; - mWindowMessage += "\nClick on the right mouse button to enter menu."; - mWindowMessage += "\nEsc to exit."; - - // Initialize the frame period. - mFrameTime.SetTime(0, 0, 0, 1, 0, mScene->GetGlobalSettings().GetTimeMode()); - - // Print the keyboard shortcuts. - FBXSDK_printf("Play/Pause Animation: Space Bar.\n"); - FBXSDK_printf("Camera Rotate: Left Mouse Button.\n"); - FBXSDK_printf("Camera Pan: Left Mouse Button + Middle Mouse Button.\n"); - FBXSDK_printf("Camera Zoom: Middle Mouse Button.\n"); - } - } - else - { - // Import failed, set the scene status flag accordingly. - mStatus = UNLOADED; - - mWindowMessage = "Unable to import file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - } - - // Destroy the importer to release the file. - mImporter->Destroy(); - mImporter = NULL; - } - - return lResult; -} - -bool SceneContext::SetCurrentAnimStack(int pIndex) -{ - const int lAnimStackCount = mAnimStackNameArray.GetCount(); - if (!lAnimStackCount || pIndex >= lAnimStackCount) - { - return false; - } - - // select the base layer from the animation stack - FbxAnimStack * lCurrentAnimationStack = mScene->FindMember(mAnimStackNameArray[pIndex]->Buffer()); - if (lCurrentAnimationStack == NULL) - { - // this is a problem. The anim stack should be found in the scene! - return false; - } - - // we assume that the first animation layer connected to the animation stack is the base layer - // (this is the assumption made in the FBXSDK) - mCurrentAnimLayer = lCurrentAnimationStack->GetMember(); - mScene->SetCurrentAnimationStack(lCurrentAnimationStack); - - FbxTakeInfo* lCurrentTakeInfo = mScene->GetTakeInfo(*(mAnimStackNameArray[pIndex])); - if (lCurrentTakeInfo) - { - mStart = lCurrentTakeInfo->mLocalTimeSpan.GetStart(); - mStop = lCurrentTakeInfo->mLocalTimeSpan.GetStop(); - } - else - { - // Take the time line value - FbxTimeSpan lTimeLineTimeSpan; - mScene->GetGlobalSettings().GetTimelineDefaultTimeSpan(lTimeLineTimeSpan); - - mStart = lTimeLineTimeSpan.GetStart(); - mStop = lTimeLineTimeSpan.GetStop(); - } - - // check for smallest start with cache start - if(mCache_Start < mStart) - mStart = mCache_Start; - - // check for biggest stop with cache stop - if(mCache_Stop > mStop) - mStop = mCache_Stop; - - // move to beginning - mCurrentTime = mStart; - - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - return true; -} - -bool SceneContext::SetCurrentCamera(const char * pCameraName) -{ - if (!pCameraName) - { - return false; - } - - FbxGlobalSettings& lGlobalCameraSettings = mScene->GetGlobalSettings(); - lGlobalCameraSettings.SetDefaultCamera(pCameraName); - mStatus = MUST_BE_REFRESHED; - return true; -} - -bool SceneContext::SetCurrentPoseIndex(int pPoseIndex) -{ - mPoseIndex = pPoseIndex; - mStatus = MUST_BE_REFRESHED; - return true; -} - -void SceneContext::OnTimerClick() const -{ - // Loop in the animation stack if not paused. - if (mStop > mStart && !mPause) - { - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - mCurrentTime += mFrameTime; - - if (mCurrentTime > mStop) - { - mCurrentTime = mStart; - } - } - // Avoid displaying the same frame on - // and on if the animation stack has no length. - else - { - // Set the scene status flag to avoid refreshing - // the scene in the next timer callback. - mStatus = REFRESHED; - } -} - -// Redraw the scene -bool SceneContext::OnDisplay() -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // Test if the scene has been loaded yet. - if (mStatus != UNLOADED && mStatus != MUST_BE_LOADED) - { - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glEnable(GL_DEPTH_TEST); - // Draw the front face only, except for the texts and lights. - glEnable(GL_CULL_FACE); - - // Set the view to the current camera settings. - SetCamera(mScene, mCurrentTime, mCurrentAnimLayer, mCameraArray, - mWindowWidth, mWindowHeight); - - FbxPose * lPose = NULL; - if (mPoseIndex != -1) - { - lPose = mScene->GetPose(mPoseIndex); - } - - // If one node is selected, draw it and its children. - FbxAMatrix lDummyGlobalPosition; - - if (mSelectedNode) - { - // Set the lighting before other things. - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mSelectedNode, mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - // Otherwise, draw the whole scene. - else - { - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mScene->GetRootNode(), mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - - glPopAttrib(); - glPopAttrib(); - } - - DisplayWindowMessage(); - - return true; -} - -void SceneContext::OnReshape(int pWidth, int pHeight) -{ - glViewport(0, 0, (GLsizei)pWidth, (GLsizei)pHeight); - mWindowWidth = pWidth; - mWindowHeight = pHeight; -} - -void SceneContext::OnKeyboard(unsigned char pKey) -{ - // Zoom In on '+' or '=' keypad keys - if (pKey == 43 || pKey == 61) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // Zoom Out on '-' or '_' keypad keys - if (pKey == 45 || pKey == 95) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 0 - 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // 'N' enable/disable normal display - if (pKey == 'N' || pKey == 'n') - { - //gOGLScene->GetShadingManager()->SetDrawNormal(!gOGLScene->GetShadingManager()->IsDrawNormal()); - } - - // Pause and unpause when spacebar is pressed. - if (pKey == ' ') - { - SetPause(!GetPause()); - } -} - -void SceneContext::OnMouse(int pButton, int pState, int pX, int pY) -{ - // Move the camera (orbit, zoom or pan) with the mouse. - FbxCamera* lCamera = GetCurrentCamera(mScene); - if (lCamera) - { - mCamPosition = lCamera->Position.Get(); - mCamCenter = lCamera->InterestPosition.Get(); - mRoll = lCamera->Roll.Get(); - } - mLastX = pX; - mLastY = pY; - - switch (pButton) - { - case LEFT_BUTTON: - // ORBIT (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ZOOM) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ORBIT; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ZOOM; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - - case MIDDLE_BUTTON: - // ZOOM (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ORBIT) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ZOOM; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ORBIT; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - } -} - -void SceneContext::OnMouseMotion(int pX, int pY) -{ - int motion; - - switch (mCameraStatus) - { - default: - break; - case CAMERA_ORBIT: - CameraOrbit(mScene, mCamPosition, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_ZOOM: - motion = mLastY-pY; - CameraZoom(mScene, motion, mCameraZoomMode); - mLastY = pY; - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_PAN: - CameraPan(mScene, mCamPosition, mCamCenter, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - } -} - -void SceneContext::SetSelectedNode(FbxNode * pSelectedNode) -{ - mSelectedNode = pSelectedNode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::SetShadingMode(ShadingMode pMode) -{ - mShadingMode = pMode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::DisplayWindowMessage() -{ - glColor3f(1.0, 1.0, 1.0); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, mWindowWidth, 0, mWindowHeight); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - // Display message in the left up corner of the window - const float lX = 5; - const float lY = static_cast(mWindowHeight) - 20; - glTranslatef(lX, lY, 0); - - mDrawText->SetPointSize(15.f); - mDrawText->Display(mWindowMessage.Buffer()); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); -} - -void SceneContext::DisplayGrid(const FbxAMatrix & pTransform) -{ - glPushMatrix(); - glMultMatrixd(pTransform); - - // Draw a grid 500*500 - glColor3f(0.3f, 0.3f, 0.3f); - glLineWidth(1.0); - const int hw = 500; - const int step = 20; - const int bigstep = 100; - int i; - - // Draw Grid - for (i = -hw; i <= hw; i+=step) { - - if (i % bigstep == 0) { - glLineWidth(2.0); - } else { - glLineWidth(1.0); - } - glBegin(GL_LINES); - glVertex3i(i,0,-hw); - glVertex3i(i,0,hw); - glEnd(); - glBegin(GL_LINES); - glVertex3i(-hw,0,i); - glVertex3i(hw,0,i); - glEnd(); - - } - - // Write some grid info - const GLfloat zoffset = -2.f; - const GLfloat xoffset = 1.f; - mDrawText->SetPointSize(4.f); - for (i = -hw; i <= hw; i+=bigstep) - { - - FbxString scoord; - int lCount; - - // Don't display origin - //if (i == 0) continue; - if (i == 0) { - scoord = "0"; - lCount = (int)scoord.GetLen(); - glPushMatrix(); - glVertex3f(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - - mDrawText->Display(scoord.Buffer()); - - glPopMatrix(); - - continue; - } - - // X coordinates - scoord = "X: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - // Z coordinates - scoord = "Z: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(xoffset,0,i+zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - } - - glPopMatrix(); -} - - -void SceneContext::SetZoomMode( CameraZoomMode pZoomMode) -{ - if( pZoomMode == ZOOM_POSITION) - { - mCameraZoomMode = ZOOM_POSITION; - } - else - { - mCameraZoomMode = ZOOM_FOCAL_LENGTH; - } - -} diff --git a/sdk/Linux/2019.2/samples/ViewScene/SceneContext.h b/sdk/Linux/2019.2/samples/ViewScene/SceneContext.h deleted file mode 100644 index 8e54a72..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SceneContext.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CONTEXT_H -#define _SCENE_CONTEXT_H - -#include "GlFunctions.h" - -class DrawText; - -// This class is responsive for loading files and recording current status as -// a bridge between window system such as GLUT or Qt and a specific FBX scene. -class SceneContext -{ -public: - enum Status - { - UNLOADED, // Unload file or load failure; - MUST_BE_LOADED, // Ready for loading file; - MUST_BE_REFRESHED, // Something changed and redraw needed; - REFRESHED // No redraw needed. - }; - Status GetStatus() const { return mStatus; } - - // Initialize with a .FBX, .DAE or .OBJ file name and current window size. - SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO); - ~SceneContext(); - - // Return the FBX scene for more informations. - const FbxScene * GetScene() const { return mScene; } - // Load the FBX or COLLADA file into memory. - bool LoadFile(); - - // The time period for one frame. - const FbxTime GetFrameTime() const { return mFrameTime; } - - // Call this method when redraw is needed. - bool OnDisplay(); - // Call this method when window size is changed. - void OnReshape(int pWidth, int pHeight); - // Call this method when keyboard input occurs. - void OnKeyboard(unsigned char pKey); - // Call this method when mouse buttons are pushed or released. - void OnMouse(int pButton, int pState, int pX, int pY); - // Call this method when mouse is moved. - void OnMouseMotion(int pX, int pY); - // Call this method when timer is finished, for animation display. - void OnTimerClick() const; - - // Methods for creating menus. - // Get all the cameras in current scene, including producer cameras. - const FbxArray & GetCameraArray() const { return mCameraArray; } - // Get all the animation stack names in current scene. - const FbxArray & GetAnimStackNameArray() const { return mAnimStackNameArray; } - // Get all the pose in current scene. - const FbxArray & GetPoseArray() const { return mPoseArray; } - - // The input index is corresponding to the array returned from GetAnimStackNameArray. - bool SetCurrentAnimStack(int pIndex); - // Set the current camera with its name. - bool SetCurrentCamera(const char * pCameraName); - // The input index is corresponding to the array returned from GetPoseArray. - bool SetCurrentPoseIndex(int pPoseIndex); - // Set the currently selected node from external window system. - void SetSelectedNode(FbxNode * pSelectedNode); - // Set the shading mode, wire-frame or shaded. - void SetShadingMode(ShadingMode pMode); - - // Pause the animation. - void SetPause(bool pPause) { mPause = pPause; } - // Check whether the animation is paused. - bool GetPause() const { return mPause; } - - - enum CameraZoomMode - { - ZOOM_FOCAL_LENGTH, - ZOOM_POSITION - }; - CameraZoomMode GetZoomMode() { return mCameraZoomMode; } - void SetZoomMode( CameraZoomMode pZoomMode); - -private: - // Display information about current status in the left-up corner of the window. - void DisplayWindowMessage(); - // Display a X-Z grid. - void DisplayGrid(const FbxAMatrix & pTransform); - - enum CameraStatus - { - CAMERA_NOTHING, - CAMERA_ORBIT, - CAMERA_ZOOM, - CAMERA_PAN - }; - - const char * mFileName; - mutable Status mStatus; - mutable FbxString mWindowMessage; - - FbxManager * mSdkManager; - FbxScene * mScene; - FbxImporter * mImporter; - FbxAnimLayer * mCurrentAnimLayer; - FbxNode * mSelectedNode; - - int mPoseIndex; - FbxArray mAnimStackNameArray; - FbxArray mCameraArray; - FbxArray mPoseArray; - - mutable FbxTime mFrameTime, mStart, mStop, mCurrentTime; - mutable FbxTime mCache_Start, mCache_Stop; - - // Data for camera manipulation - mutable int mLastX, mLastY; - mutable FbxVector4 mCamPosition, mCamCenter; - mutable double mRoll; - mutable CameraStatus mCameraStatus; - - bool mPause; - ShadingMode mShadingMode; - bool mSupportVBO; - - //camera zoom mode - CameraZoomMode mCameraZoomMode; - - int mWindowWidth, mWindowHeight; - // Utility class for draw text in OpenGL. - DrawText * mDrawText; -}; - -// Initialize GLEW, must be called after the window is created. -bool InitializeOpenGL(); - -#endif // _SCENE_CONTEXT_H - diff --git a/sdk/Linux/2019.2/samples/ViewScene/SetCamera.cxx b/sdk/Linux/2019.2/samples/ViewScene/SetCamera.cxx deleted file mode 100644 index b558be4..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SetCamera.cxx +++ /dev/null @@ -1,896 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains functions to: -// 1) find the current camera; -// 2) get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 3) compute the orientation of a camera. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "GetPosition.h" -#include "GlFunctions.h" -#include "SetCamera.h" -#include "SceneContext.h" - -#define HFOV2VFOV(h, ar) (2.0 * atan((ar) * tan( (h * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectY / aspectX -#define VFOV2HFOV(v, ar) (2.0 * atan((ar) * tan( (v * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectX / aspectY - -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray); -void GetCameraAnimatedParameters(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer); -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera); - -static double gsOrthoCameraScale = 178.0; - - -// Set the view to the current camera settings. -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight) -{ - // Find the current camera at the given time. - FbxCamera* lCamera = GetCurrentCamera(pScene, pTime, pAnimLayer, pCameraArray); - if( lCamera == NULL) - return; - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lUp(0,1,0); - FbxVector4 lForward, lRight; - - if (lCamera) - { - lEye = lCamera->Position.Get(); - lUp = lCamera->UpVector.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = GetGlobalPosition(lCameraNode->GetTarget(), pTime).GetT(); - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - lCenter = lCamera->InterestPosition.Get(); - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector(GetGlobalPosition(lCameraNode, pTime).GetR()); - lGlobalRotation.SetR(lRotationVector); - - // Get the length - FbxVector4 lInterestPosition(lCamera->InterestPosition.Get()); - FbxVector4 lCameraGlobalPosition(GetGlobalPosition(lCameraNode, pTime).GetT()); - double lLength = (FbxVector4(lInterestPosition - lCameraGlobalPosition).Length()); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lCenter = lGlobalRotation.MultT(lRotationVector); - lCenter *= lLength; - lCenter += lEye; - - // Update the default up vector with the camera rotation. - lRotationVector = FbxVector4(0,1.0,0); - lUp = lGlobalRotation.MultT(lRotationVector); - } - } - - // Align the up vector. - lForward = lCenter - lEye; - lForward.Normalize(); - lRight = lForward.CrossProduct(lUp); - lRight.Normalize(); - lUp = lRight.CrossProduct(lForward); - lUp.Normalize(); - - // Rotate the up vector with the roll value. - double lRadians = 0; - - if (lCamera) - lRadians = lCamera->Roll.Get() * FBXSDK_PI_DIV_180; - lUp = lUp * cos( lRadians) + lRight * sin(lRadians); - - - double lNearPlane = 0.01; - if (lCamera) - lNearPlane = lCamera->GetNearPlane(); - double lFarPlane = 4000.0; - if (lCamera) - lFarPlane = lCamera->GetFarPlane(); - - //Get global scaling. - FbxVector4 lCameraScaling = GetGlobalPosition(lCameraNode, pTime).GetS(); - static const int FORWARD_SCALE = 2; - - //scaling near plane and far plane - lNearPlane *= lCameraScaling[ FORWARD_SCALE]; - lFarPlane *= lCameraScaling[ FORWARD_SCALE]; - - - - - - - // Get the relevant camera settings for a perspective view. - if (lCamera && lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - //get the aspect ratio - FbxCamera::EAspectRatioMode lCamAspectRatioMode = lCamera->GetAspectRatioMode(); - double lAspectX = lCamera->AspectWidth.Get(); - double lAspectY = lCamera->AspectHeight.Get(); - double lAspectRatio = 1.333333; - switch( lCamAspectRatioMode) - { - case FbxCamera::eWindowSize: - lAspectRatio = lAspectX / lAspectY; - break; - case FbxCamera::eFixedRatio: - lAspectRatio = lAspectX; - - break; - case FbxCamera::eFixedResolution: - lAspectRatio = lAspectX / lAspectY * lCamera->GetPixelRatio(); - break; - case FbxCamera::eFixedWidth: - lAspectRatio = lCamera->GetPixelRatio() / lAspectY; - break; - case FbxCamera::eFixedHeight: - lAspectRatio = lCamera->GetPixelRatio() * lAspectX; - break; - default: - break; - - } - - //get the aperture ratio - double lFilmHeight = lCamera->GetApertureHeight(); - double lFilmWidth = lCamera->GetApertureWidth() * lCamera->GetSqueezeRatio(); - //here we use Height : Width - double lApertureRatio = lFilmHeight / lFilmWidth; - - - //change the aspect ratio to Height : Width - lAspectRatio = 1 / lAspectRatio; - //revise the aspect ratio and aperture ratio - FbxCamera::EGateFit lCameraGateFit = lCamera->GateFit.Get(); - switch( lCameraGateFit ) - { - - case FbxCamera::eFitFill: - if( lApertureRatio > lAspectRatio) // the same as eHORIZONTAL_FIT - { - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - } - else if( lApertureRatio < lAspectRatio) //the same as eVERTICAL_FIT - { - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - } - break; - case FbxCamera::eFitVertical: - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitHorizontal: - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitStretch: - lAspectRatio = lApertureRatio; - break; - case FbxCamera::eFitOverscan: - if( lFilmWidth > lFilmHeight) - { - lFilmHeight = lFilmWidth * lAspectRatio; - } - else - { - lFilmWidth = lFilmHeight / lAspectRatio; - } - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitNone: - default: - break; - } - //change the aspect ratio to Width : Height - lAspectRatio = 1 / lAspectRatio; - - double lFieldOfViewX = 0.0; - double lFieldOfViewY = 0.0; - if ( lCamera->GetApertureMode() == FbxCamera::eVertical) - { - lFieldOfViewY = lCamera->FieldOfView.Get(); - lFieldOfViewX = VFOV2HFOV( lFieldOfViewY, 1 / lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizontal) - { - lFieldOfViewX = lCamera->FieldOfView.Get(); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eFocalLength) - { - lFieldOfViewX = lCamera->ComputeFieldOfView(lCamera->FocalLength.Get()); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - lFieldOfViewX = lCamera->FieldOfViewX.Get(); - lFieldOfViewY = lCamera->FieldOfViewY.Get(); - } - - - - double lRealScreenRatio = (double)pWindowWidth / (double)pWindowHeight; - int lViewPortPosX = 0, - lViewPortPosY = 0, - lViewPortSizeX = pWindowWidth, - lViewPortSizeY = pWindowHeight; - //compute the view port - if( lRealScreenRatio > lAspectRatio) - { - lViewPortSizeY = pWindowHeight; - lViewPortSizeX = (int)( lViewPortSizeY * lAspectRatio); - lViewPortPosY = 0; - lViewPortPosX = (int)((pWindowWidth - lViewPortSizeX) * 0.5); - } - else - { - lViewPortSizeX = pWindowWidth; - lViewPortSizeY = (int)(lViewPortSizeX / lAspectRatio); - lViewPortPosX = 0; - lViewPortPosY = (int)((pWindowHeight - lViewPortSizeY) * 0.5); - } - - //revise the Perspective since we have film offset - double lFilmOffsetX = lCamera->FilmOffsetX.Get(); - double lFilmOffsetY = lCamera->FilmOffsetY.Get(); - lFilmOffsetX = 0 - lFilmOffsetX / lFilmWidth * 2.0; - lFilmOffsetY = 0 - lFilmOffsetY / lFilmHeight * 2.0; - - GlSetCameraPerspective( lFieldOfViewY, lAspectRatio, lNearPlane, lFarPlane, lEye, lCenter, lUp, lFilmOffsetX, lFilmOffsetY); - - - - //glMatrixMode(GL_PROJECTION); - //double lTestPerpMatrix[ 16]; - //glGetDoublev( GL_PROJECTION_MATRIX, lTestPerpMatrix); - - //lTestPerpMatrix[ 8] -= lFilmOffsetX; - //lTestPerpMatrix[ 9] -= lFilmOffsetY; - // - //glLoadMatrixd( lTestPerpMatrix); - //glMatrixMode(GL_MODELVIEW); - - - glViewport( lViewPortPosX, lViewPortPosY, lViewPortSizeX, lViewPortSizeY); - - - } - // Get the relevant camera settings for an orthogonal view. - else - { - double lPixelRatio = 1.0; - if (lCamera) - lPixelRatio = lCamera->GetPixelRatio(); - - double lLeftPlane, lRightPlane, lBottomPlane, lTopPlane; - - if(pWindowWidth < pWindowHeight) - { - lLeftPlane = -gsOrthoCameraScale * lPixelRatio; - lRightPlane = gsOrthoCameraScale * lPixelRatio; - lBottomPlane = -gsOrthoCameraScale * pWindowHeight / pWindowWidth; - lTopPlane = gsOrthoCameraScale * pWindowHeight / pWindowWidth; - } - else - { - pWindowWidth *= (int) lPixelRatio; - lLeftPlane = -gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lRightPlane = gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lBottomPlane = -gsOrthoCameraScale; - lTopPlane = gsOrthoCameraScale; - } - - GlSetCameraOrthogonal(lLeftPlane, - lRightPlane, - lBottomPlane, - lTopPlane, - lNearPlane, - lFarPlane, - lEye, - lCenter, - lUp); - } -} - - -// Find the current camera at the given time. -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray) -{ - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxString lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - // check if we need to create the Producer cameras! - if (lGlobalCameraSettings.GetCameraProducerPerspective() == NULL && - lGlobalCameraSettings.GetCameraProducerBottom() == NULL && - lGlobalCameraSettings.GetCameraProducerTop() == NULL && - lGlobalCameraSettings.GetCameraProducerFront() == NULL && - lGlobalCameraSettings.GetCameraProducerBack() == NULL && - lGlobalCameraSettings.GetCameraProducerRight() == NULL && - lGlobalCameraSettings.GetCameraProducerLeft() == NULL) - { - lGlobalCameraSettings.CreateProducerCameras(); - } - - if (lCurrentCameraName.Compare(FBXSDK_CAMERA_PERSPECTIVE) == 0) - { - return lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BOTTOM) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_TOP) == 0) - { - return lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_FRONT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BACK) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_RIGHT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_LEFT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerLeft(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_SWITCHER) == 0) - { - FbxCameraSwitcher* lCameraSwitcher = pScene->GlobalCameraSettings().GetCameraSwitcher(); - FbxAnimCurve* lCurve = NULL; - if (lCameraSwitcher) - { - lCurve = lCameraSwitcher->CameraIndex.GetCurve(pAnimLayer); - int lCameraIndex = lCurve ? int(lCurve->Evaluate(pTime)) - 1 : 0; - if (lCameraIndex >= 0 && lCameraIndex < pCameraArray.GetCount()) - { - FbxNode* lNode = pCameraArray[lCameraIndex]; - - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - } - else - { - int i; - FbxNode* lNode = NULL; - - // Find the camera in the camera array. - for (i = 0; i < pCameraArray.GetCount(); i++) - { - if (lCurrentCameraName.Compare(pCameraArray[i]->GetName()) == 0) - { - lNode = pCameraArray[i]; - break; - } - } - - if (lNode) - { - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - - return lGlobalCameraSettings.GetCameraProducerPerspective(); -} - -// Get the animated parameters of a camera contained in the scene -// and store them in the associated member variables contained in -// the camera. -void GetCameraAnimatedParameters(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer) -{ - FbxCamera* lCamera = (FbxCamera*) pNode->GetNodeAttribute(); - lCamera->Position.Set(GetGlobalPosition(pNode, pTime).GetT()); - - FbxAnimCurve* fc = lCamera->Roll.GetCurve(pAnimLayer); - if (fc) - lCamera->Roll.Set(fc->Evaluate(pTime)); - - FbxCamera::EApertureMode lCameraApertureMode = lCamera->GetApertureMode(); - if (lCameraApertureMode == FbxCamera::eHorizontal || - lCameraApertureMode == FbxCamera::eVertical) - { - double lFieldOfView = lCamera->FieldOfView.Get(); - fc = lCamera->FieldOfView.GetCurve(pAnimLayer); - if (fc) - lFieldOfView = fc->Evaluate(pTime); - - //update FOV and focal length - lCamera->FieldOfView.Set( lFieldOfView); - lCamera->FocalLength.Set( lCamera->ComputeFocalLength( lFieldOfView)); - - } - else if ( lCameraApertureMode == FbxCamera::eHorizAndVert) - { - double lOldFieldOfViewX = lCamera->FieldOfViewX.Get(); - double lOldFieldOfViewY = lCamera->FieldOfViewY.Get(); - - //update FOV - double lNewFieldOfViewX = lOldFieldOfViewX; - double lNewFieldOfViewY = lOldFieldOfViewY; - fc = lCamera->FieldOfViewX.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewX = fc->Evaluate(pTime); - - fc = lCamera->FieldOfViewY.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewY = fc->Evaluate(pTime); - - lCamera->FieldOfViewX.Set(lNewFieldOfViewX); - lCamera->FieldOfViewY.Set(lNewFieldOfViewY); - - //update aspect - double lUpdatedApertureX = lCamera->GetApertureWidth(); - double lUpdatedApertureY = lCamera->GetApertureHeight(); - lUpdatedApertureX *= tan( lNewFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180); - lUpdatedApertureY *= tan( lNewFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180); - - lCamera->FilmWidth.Set( lUpdatedApertureX); - lCamera->FilmHeight.Set( lUpdatedApertureY); - lCamera->FilmAspectRatio.Set( lUpdatedApertureX / lUpdatedApertureY); - - - } - else if ( lCameraApertureMode == FbxCamera::eFocalLength) - { - double lFocalLength = lCamera->FocalLength.Get(); - fc = lCamera->FocalLength.GetCurve(pAnimLayer); - if (fc && fc ->Evaluate(pTime)) - lFocalLength = fc->Evaluate( pTime); - - - //update FOV and focal length - lCamera->FocalLength.Set( lFocalLength); - lCamera->FieldOfView.Set( lCamera->ComputeFieldOfView( lFocalLength)); - } -} - -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera) -{ - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (pCamera == lGlobalCameraSettings.GetCameraProducerPerspective()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerTop()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBottom()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerFront()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBack()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerRight()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerLeft()) - return true; - - return false; -} - -FbxCamera* GetCurrentCamera(FbxScene* pScene) -{ - FbxCamera* lRet = NULL; - FbxString lCurrentCameraName; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - if (lCurrentCameraName == FBXSDK_CAMERA_PERSPECTIVE) - { - lRet = lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_TOP) - { - lRet = lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BOTTOM) - { - lRet = lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_FRONT) - { - lRet = lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BACK) - { - lRet = lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_RIGHT) - { - lRet = lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_LEFT) - { - lRet = lGlobalCameraSettings.GetCameraProducerLeft(); - } - else - { - FbxNode* lCameraNode = pScene->FindNodeByName( lCurrentCameraName); - if( lCameraNode) - { - lRet = lCameraNode->GetCamera(); - } - } - return lRet; -} - - -double TransformAperture( double pAperture, double pTransform) -{ - double lTransformAperture = ( pAperture + pTransform); - if( lTransformAperture < 0.25) - { - lTransformAperture = 0.25; - } - if( lTransformAperture > 179.0) - { - lTransformAperture = 179.0; - } - return lTransformAperture; -} - -void UpdatePerspCameraAttributes( FbxCamera* pCamera, double pNewApertureW, double pNewApertureH) -{ - - if( pCamera == NULL || FbxAnimUtilities::IsAnimated( pCamera)) - return; - // update focal length or field of view. - double lApertureWidthOrig = pCamera->GetApertureWidth(); - double lApertureHeightOrig = pCamera->GetApertureHeight(); - - if (pCamera->GetApertureMode() == FbxCamera::eFocalLength) { - // update focal length according to hypothetic new apertures. - double lFLOrig = pCamera->FocalLength.Get(); - double lFOVOrig = pCamera->ComputeFieldOfView(lFLOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth( pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFLNew = pCamera->ComputeFocalLength(lFOVOrig); - double lFOVNew = pCamera->ComputeFieldOfView(lFLNew); - pCamera->FocalLength.Set(lFLNew); - pCamera->FieldOfView.Set(lFOVNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eVertical - || pCamera->GetApertureMode() == FbxCamera::eHorizontal) { - double lFOVOrig = pCamera->FieldOfView.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNew = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNew); - pCamera->FieldOfView.Set(lFOVNew); - pCamera->FocalLength.Set(lFLNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - double lFOVOrigX = pCamera->FieldOfViewX.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrigX); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNewX = pCamera->ComputeFieldOfView(lFLOrig); - double lFOVNewY = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewY); - pCamera->FocalLength.Set(lFLNew); - } - // reset aperture width and height - pCamera->SetApertureWidth(lApertureWidthOrig); - pCamera->SetApertureHeight(lApertureHeightOrig); -} - - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode) -{ - FbxCamera* lCamera = GetCurrentCamera(pScene); - if( lCamera == NULL) - return; - if( pZoomMode == SceneContext::ZOOM_FOCAL_LENGTH) - { - if (lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - double lTransform = 0 - pZoomDepth / 400.0; - - double lApertureW = lCamera->GetApertureWidth(); - lApertureW = TransformAperture( lApertureW, lTransform); - - double lApertureH = lCamera->GetApertureHeight(); - lApertureH = TransformAperture( lApertureH, lTransform); - - UpdatePerspCameraAttributes( lCamera, lApertureW, lApertureH); - - - } - else - { - if( pZoomDepth > 0) - gsOrthoCameraScale *= 0.8; - else - gsOrthoCameraScale *= 1.25; - } - } - else - { - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lForward(0,0,0); - - if (lCamera) - { - lEye = lCamera->Position.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = lCameraNode->GetTarget()->LclTranslation.Get(); - lForward = lCenter - lEye; - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - { - lCenter = lCamera->InterestPosition.Get(); - lForward = lCenter - lEye; - } - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector( lCameraNode->LclRotation.Get()); - lGlobalRotation.SetR(lRotationVector); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lForward = lGlobalRotation.MultT(lRotationVector); - } - } - lForward.Normalize(); - lEye += lForward * pZoomDepth; - FbxDouble3 lPosition(lEye[0], lEye[1], lEye[2]); - lCamera->Position.Set(lPosition); - - } -} - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY) -{ - // Orbit the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (lCamera != lGlobalCameraSettings.GetCameraProducerPerspective()) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxVector4 lRotationVector, lNewPosition, lCurPosition; - FbxAMatrix lRotation; - FbxVector4 lCenter = lCamera->InterestPosition.Get(); - - // current position - FbxVector4 lPosition = lCamera->Position.Get(); - lCurPosition = lPosition-lCenter; - - // translate - lNewPosition = lOrigCamPos-lCenter; - - int rotX; - if (lNewPosition[2] == 0) { - rotX = 90; - } else { - rotX = (int) (atan((double)lNewPosition[0]/(double)lNewPosition[2]) * FBXSDK_180_DIV_PI); - } - bool bRoll = (((int)OrigRoll % 360) != 0); - if ( (lNewPosition[2] < 0 && !bRoll) - || (lNewPosition[2] > 0 && bRoll) ) { - dY = -dY; - } - if (bRoll) dX = -dX; - - // Center on the X axis (push) - lRotationVector[1] = -rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the vertical movement: around the X axis - lRotationVector[1] = 0; - lRotationVector[0] = dY; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Back from the X axis (pop) - lRotationVector[0] = 0; - lRotationVector[1] = rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the horizontal movement - lRotationVector[1] = -dX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - - // Detect camera flip - if ( lNewPosition[0]*lCurPosition[0] < 0 - && lNewPosition[2]*lCurPosition[2] < 0) { - // flip -> roll 180. - double lRoll = lCamera->Roll.Get(); - lRoll = 180.0-lRoll; - lCamera->Roll.Set(lRoll); - } - - // Back from center - lNewPosition = lNewPosition + lCenter; - - lCamera->Position.Set(lNewPosition); - -} - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, double OrigRoll, int dX, int dY) { - // Pan the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - if (!IsProducerCamera(pScene, lCamera)) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - - FbxVector4 lRotationXV, lRotationYV, lTranslationV; - FbxAMatrix lRotationX, lRotationY, lRotationXInverse, lRotationYInverse, lTranslation; - FbxVector4 lNewPosition = lOrigCamPos; - FbxVector4 lNewCenter = lOrigCamCenter; - - // Translate the camera in dX and dY according to its point of view. - if (lCamera == lGlobalCameraSettings.GetCameraProducerTop()) { - lTranslationV[0] = -dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBottom()) { - lTranslationV[0] = dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerFront()) { - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBack()) { - lTranslationV[0] = dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerRight()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = dX; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerLeft()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = -dX; - } else { - // Perspective view. More computation. - - // Adjust displacement when there is roll - bool bRoll = (((int)OrigRoll % 360) != 0); - if (bRoll) { - dX = -dX; - dY = -dY; - } - - // Compute angles aY and aZ of the camera with Y and Z axis. - double aZ, aY; - /// Vector of distance between camera and center (lookat) - FbxVector4 lDist = lNewPosition - lNewCenter; - // Euclidian distance between camera and lookat - double dist = (double)(lDist[0]*lDist[0]+lDist[1]*lDist[1]+lDist[2]*lDist[2]); - // aZ - if (lDist[2] == 0) { - aZ = 90.0; - } else { - aZ = (atan((double)lDist[0]/(double)lDist[2]) * FBXSDK_180_DIV_PI); - } - if (lNewPosition[2] < lNewCenter[2]) aZ += 180; - // aY - if (dist > 0.001) { - aY = (asin(sqrt((double)(lDist[1]*lDist[1])/ dist)) * FBXSDK_180_DIV_PI); - } else { - aY = 0; - } - if (lNewPosition[1] < lNewCenter[1]) aY = -aY; - - - // Basis translation - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - - // Rotation around Y axis - lRotationYV[0] = 0; - lRotationYV[1] = -aZ; - lRotationYV[2] = 0; - lRotationY.SetR(lRotationYV); - // Rotation around X axis - lRotationXV[0] = aY; - lRotationXV[1] = 0; - lRotationXV[2] = 0; - lRotationX.SetR(lRotationXV); - - // Modify translation according to aY and aZ. - lTranslation.SetT(lTranslationV); - lRotationYInverse = lRotationY.Inverse(); - lRotationXInverse = lRotationX.Inverse(); - lTranslation = lRotationYInverse * lRotationXInverse * lTranslation * lRotationY * lRotationX; - lTranslationV = lTranslation.GetT(); - } - - // Translate camera and center according to pan. - lNewPosition += lTranslationV; - lNewCenter += lTranslationV; - - lCamera->Position.Set(lNewPosition); - lCamera->InterestPosition.Set(lNewCenter); -} - diff --git a/sdk/Linux/2019.2/samples/ViewScene/SetCamera.h b/sdk/Linux/2019.2/samples/ViewScene/SetCamera.h deleted file mode 100644 index 08aacbe..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/SetCamera.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SET_CAMERA_H -#define _SET_CAMERA_H - -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight); - -FbxCamera* GetCurrentCamera(FbxScene* pScene); - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode); - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY); - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, - double OrigRoll, int dX, int dY); - -#endif // #ifndef _SET_CAMERA_H - - - - - - diff --git a/sdk/Linux/2019.2/samples/ViewScene/humanoid.fbx b/sdk/Linux/2019.2/samples/ViewScene/humanoid.fbx deleted file mode 100644 index 57d0733..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/humanoid.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ce40cb9b86d0bcdfb66a3382a80349b70037d65197906be34eab0db6eb9418c -size 8983744 diff --git a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW.a b/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW.a deleted file mode 100644 index db28cc1..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1bff3b47a4eb198efef760f7e7fe278ec77a4cdcb1ea3513d2dbb84287d91133 -size 402904 diff --git a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW_amd64.a b/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW_amd64.a deleted file mode 100644 index 8c6a76e..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libGLEW_amd64.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cac6c6f357307728e83922d6561935c10a232a39da77c78d117c213214f35eca -size 585556 diff --git a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc32.a b/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc32.a deleted file mode 100644 index 4836f90..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc32.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df4530e9ee85e59443e5173d81a31b93f22553c8ccc9afa86fa0f11742f4c015 -size 349398 diff --git a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc34-amd64.a b/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc34-amd64.a deleted file mode 100644 index f0cf2ff..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/libs/linux/libglut_gcc34-amd64.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:05de509374da352ab113bc86768d975c55ba301798c9e517fd031113f8156f87 -size 397216 diff --git a/sdk/Linux/2019.2/samples/ViewScene/main.cxx b/sdk/Linux/2019.2/samples/ViewScene/main.cxx deleted file mode 100644 index 3998b51..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/main.cxx +++ /dev/null @@ -1,466 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to display the content of a FBX or a OBJ file -// in a graphical window. This program is based on the OpenGL Utility Toolkit -// (GLUT). Start the program on the command line by providing a FBX or a -// OBJ file name. A menu is provided to select the current camera and the current -// animation stack. -// -// Among other things, the example illustrates how to: -// 1) Use a custom memory allocator -// 2) Import a scene from a .FBX, .DAE or .OBJ file; -// 3) Convert the nurbs and patch attribute types of a scene into mesh -// node attributes; And trianglate all meshes. -// 4) Get the list of all the cameras in the scene; -// 5) Find the current camera; -// 6) Get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 7) Compute the local and global positions of a node; -// 8) Compute the orientation of a camera; -// 9) Compute the orientation of a light; -// 10) Compute the shape deformation of mesh vertices; -// 11) Compute the link deformation of mesh vertices. -// 12) Display the point cache simulation of a mesh. -// 13) Get the list of all pose in the scene; -// 14) Show the scene using at a specific pose. -// -///////////////////////////////////////////////////////////////////////// - -#include "SceneContext.h" -#include "GL/glut.h" - -void ExitFunction(); -void CreateMenus(); -void CameraSelectionCallback(int pItem); -void CameraZoomModeCallback(int pItem); -void AnimStackSelectionCallback(int pItem); -void MenuSelectionCallback(int pItem); -void PoseSelectionCallback(int pItem); -void ShadingModeSelectionCallback(int pItem); -void TimerCallback(int); -void DisplayCallback(); -void ReshapeCallback(int pWidth, int pHeight); -void KeyboardCallback(unsigned char pKey, int, int); -void MouseCallback(int button, int state, int x, int y); -void MotionCallback(int x, int y); - -SceneContext * gSceneContext; - -// Menu item ids. -#define PRODUCER_PERSPECTIVE_ITEM 100 -#define PRODUCER_TOP_ITEM 101 -#define PRODUCER_BOTTOM_ITEM 102 -#define PRODUCER_FRONT_ITEM 103 -#define PRODUCER_BACK_ITEM 104 -#define PRODUCER_RIGHT_ITEM 105 -#define PRODUCER_LEFT_ITEM 106 -#define CAMERA_SWITCHER_ITEM 107 -#define PLAY_ANIMATION 200 - - -const int MENU_SHADING_MODE_WIREFRAME = 300; -const int MENU_SHADING_MODE_SHADED = 301; -const char * MENU_STRING_SHADING_MODE_WIREFRAME = "Wireframe"; -const char * MENU_STRING_SHADING_MODE_SHADED = "Shaded"; - -const int MENU_ZOOM_FOCAL_LENGTH = 401; -const int MENU_ZOOM_POSITION = 402; - -const int MENU_EXIT = 400; - -const int DEFAULT_WINDOW_WIDTH = 720; -const int DEFAULT_WINDOW_HEIGHT = 486; - -class MyMemoryAllocator -{ -public: - static void* MyMalloc(size_t pSize) - { - char *p = (char*)malloc(pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyCalloc(size_t pCount, size_t pSize) - { - char *p = (char*)calloc(pCount, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyRealloc(void* pData, size_t pSize) - { - if (pData) - { - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - char *p = (char*)realloc((char*)pData - FBXSDK_MEMORY_ALIGNMENT, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - else - { // Mismatch - char *p = (char*)realloc((char*)pData, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - else - { - char *p = (char*)realloc(NULL, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - - static void MyFree(void* pData) - { - if (pData==NULL) - return; - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - free((char*)pData - FBXSDK_MEMORY_ALIGNMENT); - } - else - { // Mismatch - free(pData); - } - } -}; - -static bool gAutoQuit = false; - -int main(int argc, char** argv) -{ - // Set exit function to destroy objects created by the FBX SDK. - atexit(ExitFunction); - - // Use a custom memory allocator - FbxSetMallocHandler(MyMemoryAllocator::MyMalloc); - FbxSetReallocHandler(MyMemoryAllocator::MyRealloc); - FbxSetFreeHandler(MyMemoryAllocator::MyFree); - FbxSetCallocHandler(MyMemoryAllocator::MyCalloc); - - // glut initialisation - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT); - glutInitWindowPosition(100, 100); - glutCreateWindow("ViewScene"); - - // Initialize OpenGL. - const bool lSupportVBO = InitializeOpenGL(); - - // set glut callbacks - glutDisplayFunc(DisplayCallback); - glutReshapeFunc(ReshapeCallback); - glutKeyboardFunc(KeyboardCallback); - glutMouseFunc(MouseCallback); - glutMotionFunc(MotionCallback); - - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gAutoQuit = true; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - gSceneContext = new SceneContext(!lFilePath.IsEmpty() ? lFilePath.Buffer() : NULL, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT, lSupportVBO); - - glutMainLoop(); - - return 0; -} - - -// Function to destroy objects created by the FBX SDK. -void ExitFunction() -{ - delete gSceneContext; -} - -// Create the menus to select the current camera and the current animation stack. -void CreateMenus() -{ - // Create the submenu to select the current camera. - int lCameraMenu = glutCreateMenu(CameraSelectionCallback); - - // Add the producer cameras. - glutAddMenuEntry(FBXSDK_CAMERA_PERSPECTIVE, PRODUCER_PERSPECTIVE_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_TOP, PRODUCER_TOP_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BOTTOM, PRODUCER_BOTTOM_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_FRONT, PRODUCER_FRONT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BACK, PRODUCER_BACK_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_RIGHT, PRODUCER_RIGHT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_LEFT, PRODUCER_LEFT_ITEM); - - // Add the camera switcher if there is at least one camera in the scene. - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (lCameraArray.GetCount() > 0) - { - glutAddMenuEntry(FBXSDK_CAMERA_SWITCHER, CAMERA_SWITCHER_ITEM); - } - - // Add the cameras contained in the scene. - for (int lCameraIndex = 0; lCameraIndex < lCameraArray.GetCount(); ++lCameraIndex) - { - glutAddMenuEntry(lCameraArray[lCameraIndex]->GetName(), lCameraIndex); - } - - // Create the submenu to select the current animation stack. - int lAnimStackMenu = glutCreateMenu(AnimStackSelectionCallback); - int lCurrentAnimStackIndex = 0; - - // Add the animation stack names. - const FbxArray & lAnimStackNameArray = gSceneContext->GetAnimStackNameArray(); - for (int lPoseIndex = 0; lPoseIndex < lAnimStackNameArray.GetCount(); ++lPoseIndex) - { - glutAddMenuEntry(lAnimStackNameArray[lPoseIndex]->Buffer(), lPoseIndex); - - // Track the current animation stack index. - if (lAnimStackNameArray[lPoseIndex]->Compare(gSceneContext->GetScene()->ActiveAnimStackName.Get()) == 0) - { - lCurrentAnimStackIndex = lPoseIndex; - } - } - - // Call the animation stack selection callback immediately to - // initialize the start, stop and current time. - AnimStackSelectionCallback(lCurrentAnimStackIndex); - - const int lShadingModeMenu = glutCreateMenu(ShadingModeSelectionCallback); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_WIREFRAME, MENU_SHADING_MODE_WIREFRAME); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_SHADED, MENU_SHADING_MODE_SHADED); - - int lBindPoseCount = 0; - int lRestPoseCount = 0; - // Create a submenu for bind poses - int lBindPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - const FbxArray & lPoseArray = gSceneContext->GetPoseArray(); - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsBindPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lBindPoseCount++; - } - } - - // Create a submenu for rest poses - int lRestPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsRestPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lRestPoseCount++; - } - } - - // Create the submenu to go to a specific pose - int lPoseMenu = 0; - if (lBindPoseCount>0 || lRestPoseCount>0) - { - lPoseMenu = glutCreateMenu(PoseSelectionCallback); - if (lBindPoseCount>0) - glutAddSubMenu("Bind Pose", lBindPoseMenu); - if (lRestPoseCount>0) - glutAddSubMenu("Rest Pose", lRestPoseMenu); - } - - // Create the submenu to zoom mode - int lZoomMenu = glutCreateMenu( CameraZoomModeCallback); - glutAddMenuEntry( "Zooming lens", MENU_ZOOM_FOCAL_LENGTH); - glutAddMenuEntry( "Zooming Position", MENU_ZOOM_POSITION); - - // Build the main menu. - glutCreateMenu(MenuSelectionCallback); - glutAddSubMenu("Select Camera", lCameraMenu); - glutAddSubMenu("Select Animation Stack", lAnimStackMenu); - glutAddSubMenu("Select Shading Mode", lShadingModeMenu); - if (lBindPoseCount>0 || lRestPoseCount>0) - glutAddSubMenu("Go to Pose", lPoseMenu); - glutAddSubMenu( "Zoom Mode", lZoomMenu); - glutAddMenuEntry("Play", PLAY_ANIMATION); - glutAddMenuEntry("Exit", MENU_EXIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -// Select the current camera. -void CameraSelectionCallback(int pItem) -{ - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (pItem == PRODUCER_PERSPECTIVE_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_PERSPECTIVE); - } - else if (pItem == PRODUCER_TOP_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_TOP); - } - else if (pItem == PRODUCER_BOTTOM_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BOTTOM); - } - else if (pItem == PRODUCER_FRONT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_FRONT); - } - else if (pItem == PRODUCER_BACK_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BACK); - } - else if (pItem == PRODUCER_RIGHT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_RIGHT); - } - else if (pItem == PRODUCER_LEFT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_LEFT); - } - else if (pItem == CAMERA_SWITCHER_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_SWITCHER); - } - else if (pItem >= 0 && pItem < lCameraArray.GetCount()) - { - gSceneContext->SetCurrentCamera(lCameraArray[pItem]->GetName()); - } -} - -void CameraZoomModeCallback(int pItem) -{ - if( pItem == MENU_ZOOM_FOCAL_LENGTH) - gSceneContext->SetZoomMode( SceneContext::ZOOM_FOCAL_LENGTH); - else - gSceneContext->SetZoomMode(SceneContext::ZOOM_POSITION); -} - -// Select the current animation stack and set the start, stop and current time. -void AnimStackSelectionCallback( int pItem ) -{ - gSceneContext->SetCurrentAnimStack(pItem); -} - -void PoseSelectionCallback(int pItem) -{ - gSceneContext->SetCurrentPoseIndex(pItem); -} - -void ShadingModeSelectionCallback(int pItem) -{ - if (pItem == MENU_SHADING_MODE_WIREFRAME) - { - gSceneContext->SetShadingMode(SHADING_MODE_WIREFRAME); - } - else if (pItem == MENU_SHADING_MODE_SHADED) - { - gSceneContext->SetShadingMode(SHADING_MODE_SHADED); - } -} - -// Exit the application from the main menu. -void MenuSelectionCallback(int pItem) -{ - if (pItem == PLAY_ANIMATION) - { - gSceneContext->SetCurrentPoseIndex(-1); - } - else if (pItem == MENU_EXIT) - { - exit(0); - } -} - - -// Trigger the display of the current frame. -void TimerCallback(int) -{ - // Ask to display the current frame only if necessary. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_REFRESHED) - { - glutPostRedisplay(); - } - - gSceneContext->OnTimerClick(); - - // Call the timer to display the next frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); -} - - -// Refresh the application window. -void DisplayCallback() -{ - gSceneContext->OnDisplay(); - - glutSwapBuffers(); - - // Import the scene if it's ready to load. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_LOADED) - { - // This function is only called in the first display callback - // to make sure that the application window is opened and a - // status message is displayed before. - if (!gSceneContext->LoadFile()) - exit(1); - - CreateMenus(); - - // Call the timer to display the first frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); - } - - if( gAutoQuit ) exit(0); -} - - -// Resize the application window. -void ReshapeCallback(int pWidth, int pHeight) -{ - gSceneContext->OnReshape(pWidth, pHeight); -} - -// Exit the application from the keyboard. -void KeyboardCallback(unsigned char pKey, int /*pX*/, int /*pY*/) -{ - // Exit on ESC key. - if (pKey == 27) - { - exit(0); - } - - gSceneContext->OnKeyboard(pKey); -} - -void MouseCallback(int button, int state, int x, int y) -{ - gSceneContext->OnMouse(button, state, x, y); -} - - -void MotionCallback(int x, int y) -{ - gSceneContext->OnMouseMotion(x, y); -} - - - - diff --git a/sdk/Linux/2019.2/samples/ViewScene/targa.cxx b/sdk/Linux/2019.2/samples/ViewScene/targa.cxx deleted file mode 100644 index 9d77fc4..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/targa.cxx +++ /dev/null @@ -1,1115 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without changes, for - * free or for profit, is allowed as long as this copyright notice is kept - * intact. Modified versions must be clearly marked as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -/*@unused@*/ static const char rcsid[] = - "$Id: targa.c,v 1.7 2003/06/21 09:30:53 emikulic Exp $"; - -#define TGA_KEEP_MACROS /* BIT, htole16, letoh16 */ -#ifdef __cplusplus -extern "C" { -#endif -#include "targa.h" -#ifdef __cplusplus -} -#endif - -#include -#include /* memcpy, memcmp */ - -#define SANE_DEPTH(x) ((x) == 8 || (x) == 16 || (x) == 24 || (x) == 32) -#define UNMAP_DEPTH(x) ((x) == 16 || (x) == 24 || (x) == 32) - -#ifdef _MSC_VER -#pragma warning(disable:4244) -#pragma warning(disable:4996) -#endif - -static const char tga_id[] = - "\0\0\0\0" /* extension area offset */ - "\0\0\0\0" /* developer directory offset */ - "TRUEVISION-XFILE."; - -static const size_t tga_id_length = 26; /* tga_id + \0 */ - - - -/* helpers */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp); -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row); -typedef enum { RAW, RLE } packet_type; -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp); -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type); - - - -uint8_t tga_get_attribute_bits(const tga_image *tga) -{ - return tga->image_descriptor & TGA_ATTRIB_BITS; -} - -int tga_is_right_to_left(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_R_TO_L_BIT) != 0; -} - -int tga_is_top_to_bottom(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_T_TO_B_BIT) != 0; -} - -int tga_is_colormapped(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP || - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE - ); -} - -int tga_is_rle(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE || - tga->image_type == TGA_IMAGE_TYPE_BGR_RLE || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - -int tga_is_mono(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_MONO || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - - - -/* --------------------------------------------------------------------------- - * Convert the numerical into a verbose error string. - * - * Returns: an error string - */ -const char *tga_error(const tga_result errcode) -{ - switch (errcode) - { - case TGA_NOERR: - return "no error"; - case TGAERR_FOPEN: - return "error opening file"; - case TGAERR_EOF: - return "premature end of file"; - case TGAERR_WRITE: - return "error writing to file"; - case TGAERR_CMAP_TYPE: - return "invalid color map type"; - case TGAERR_IMG_TYPE: - return "invalid image type"; - case TGAERR_NO_IMG: - return "no image data included"; - case TGAERR_CMAP_MISSING: - return "color-mapped image without color map"; - case TGAERR_CMAP_PRESENT: - return "non-color-mapped image with extraneous color map"; - case TGAERR_CMAP_LENGTH: - return "color map has zero length"; - case TGAERR_CMAP_DEPTH: - return "invalid color map depth"; - case TGAERR_ZERO_SIZE: - return "the image dimensions are zero"; - case TGAERR_PIXEL_DEPTH: - return "invalid pixel depth"; - case TGAERR_NO_MEM: - return "out of memory"; - case TGAERR_NOT_CMAP: - return "image is not color mapped"; - case TGAERR_RLE: - return "RLE data is corrupt"; - case TGAERR_INDEX_RANGE: - return "color map index out of range"; - case TGAERR_MONO: - return "image is mono"; - default: - return "unknown error code"; - } -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from a file named to . This is just a - * wrapper around tga_read_from_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_read(tga_image *dest, const char *filename) -{ - tga_result result; - FILE *fp = fopen(filename, "rb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_read_from_FILE(dest, fp); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from to . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. In the - * case of failure, the contents of dest are not guaranteed to be - * valid. - */ -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp) -{ - #define BARF(errcode) \ - { tga_free_buffers(dest); return errcode; } - - #define READ(destptr, size) \ - if (fread(destptr, size, 1, fp) != 1) BARF(TGAERR_EOF) - - #define READ16(dest) \ - { if (fread(&(dest), 2, 1, fp) != 1) BARF(TGAERR_EOF); \ - dest = letoh16(dest); } - - dest->image_id = NULL; - dest->color_map_data = NULL; - dest->image_data = NULL; - - READ(&dest->image_id_length,1); - READ(&dest->color_map_type,1); - if (dest->color_map_type != TGA_COLOR_MAP_ABSENT && - dest->color_map_type != TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_TYPE); - - READ(&dest->image_type, 1); - if (dest->image_type == TGA_IMAGE_TYPE_NONE) - BARF(TGAERR_NO_IMG); - - if (dest->image_type != TGA_IMAGE_TYPE_COLORMAP && - dest->image_type != TGA_IMAGE_TYPE_BGR && - dest->image_type != TGA_IMAGE_TYPE_MONO && - dest->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - dest->image_type != TGA_IMAGE_TYPE_BGR_RLE && - dest->image_type != TGA_IMAGE_TYPE_MONO_RLE) - BARF(TGAERR_IMG_TYPE); - - if (tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_ABSENT) - BARF(TGAERR_CMAP_MISSING); - - if (!tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_PRESENT); - - READ16(dest->color_map_origin); - READ16(dest->color_map_length); - READ(&dest->color_map_depth, 1); - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (dest->color_map_length == 0) - BARF(TGAERR_CMAP_LENGTH); - - if (!UNMAP_DEPTH(dest->color_map_depth)) - BARF(TGAERR_CMAP_DEPTH); - } - - READ16(dest->origin_x); - READ16(dest->origin_y); - READ16(dest->width); - READ16(dest->height); - - if (dest->width == 0 || dest->height == 0) - BARF(TGAERR_ZERO_SIZE); - - READ(&dest->pixel_depth, 1); - if (!SANE_DEPTH(dest->pixel_depth) || - (dest->pixel_depth != 8 && tga_is_colormapped(dest)) ) - BARF(TGAERR_PIXEL_DEPTH); - - READ(&dest->image_descriptor, 1); - - if (dest->image_id_length > 0) - { - dest->image_id = (uint8_t*)malloc(dest->image_id_length); - if (dest->image_id == NULL) BARF(TGAERR_NO_MEM); - READ(dest->image_id, dest->image_id_length); - } - - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - dest->color_map_data = (uint8_t*)malloc( - (dest->color_map_origin + dest->color_map_length) * - dest->color_map_depth / 8); - if (dest->color_map_data == NULL) BARF(TGAERR_NO_MEM); - READ(dest->color_map_data + - (dest->color_map_origin * dest->color_map_depth / 8), - dest->color_map_length * dest->color_map_depth / 8); - } - - dest->image_data = (uint8_t*) malloc( - dest->width * dest->height * dest->pixel_depth / 8); - if (dest->image_data == NULL) - BARF(TGAERR_NO_MEM); - - if (tga_is_rle(dest)) - { - /* read RLE */ - tga_result result = tga_read_rle(dest, fp); - if (result != TGA_NOERR) BARF(result); - } - else - { - /* uncompressed */ - READ(dest->image_data, - dest->width * dest->height * dest->pixel_depth / 8); - } - - return TGA_NOERR; - #undef BARF - #undef READ - #undef READ16 -} - - - -/* --------------------------------------------------------------------------- - * Helper function for tga_read_from_FILE(). Decompresses RLE image data from - * . Assumes header fields are set correctly. - */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp) -{ - #define RLE_BIT BIT(7) - #define READ(dest, size) \ - if (fread(dest, size, 1, fp) != 1) return TGAERR_EOF - - uint8_t *pos; - uint32_t p_loaded = 0, - p_expected = dest->width * dest->height; - uint8_t bpp = dest->pixel_depth/8; /* bytes per pixel */ - - pos = dest->image_data; - - while ((p_loaded < p_expected) && !feof(fp)) - { - uint8_t b; - READ(&b, 1); - if (b & RLE_BIT) - { - /* is an RLE packet */ - uint8_t count, tmp[4], i; - - count = (b & ~RLE_BIT) + 1; - READ(tmp, bpp); - - for (i=0; i p_expected) return TGAERR_RLE; - memcpy(pos, tmp, bpp); - pos += bpp; - } - } - else /* RAW packet */ - { - uint8_t count; - - count = (b & ~RLE_BIT) + 1; - if (p_loaded + count > p_expected) return TGAERR_RLE; - - p_loaded += count; - READ(pos, bpp*count); - pos += count * bpp; - } - } - return TGA_NOERR; - #undef RLE_BIT - #undef READ -} - - - -/* --------------------------------------------------------------------------- - * Write a Targa image to a file named from . This is just a - * wrapper around tga_write_to_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_write(const char *filename, const tga_image *src) -{ - tga_result result; - FILE *fp = fopen(filename, "wb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_write_to_FILE(fp, src); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Write one row of an image to using RLE. This is a helper function - * called from tga_write_to_FILE(). It assumes that has its header - * fields set up correctly. - */ -#define PIXEL(ofs) ( row + (ofs)*bpp ) -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row) -{ - #define WRITE(src, size) \ - if (fwrite(src, size, 1, fp) != 1) return TGAERR_WRITE - - uint16_t pos = 0; - uint16_t bpp = src->pixel_depth / 8; - - while (pos < src->width) - { - packet_type type = rle_packet_type(row, pos, src->width, bpp); - uint8_t len = rle_packet_len(row, pos, src->width, bpp, type); - uint8_t packet_header; - - packet_header = len - 1; - if (type == RLE) packet_header |= BIT(7); - - WRITE(&packet_header, 1); - if (type == RLE) - { - WRITE(PIXEL(pos), bpp); - } - else /* type == RAW */ - { - WRITE(PIXEL(pos), bpp*len); - } - - pos += len; - } - - return TGA_NOERR; - #undef WRITE -} - - - -/* --------------------------------------------------------------------------- - * Determine whether the next packet should be RAW or RLE for maximum - * efficiency. This is a helper function called from rle_packet_len() and - * tga_write_row_RLE(). - */ -#define SAME(ofs1, ofs2) (memcmp(PIXEL(ofs1), PIXEL(ofs2), bpp) == 0) - -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp) -{ - if (pos == width - 1) return RAW; /* one pixel */ - if (SAME(pos,pos+1)) /* dupe pixel */ - { - if (bpp > 1) return RLE; /* inefficient for bpp=1 */ - - /* three repeats makes the bpp=1 case efficient enough */ - if ((pos < width - 2) && SAME(pos+1,pos+2)) return RLE; - } - return RAW; -} - - - -/* --------------------------------------------------------------------------- - * Find the length of the current RLE packet. This is a helper function - * called from tga_write_row_RLE(). - */ -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type) -{ - uint8_t len = 2; - - if (pos == width - 1) return 1; - if (pos == width - 2) return 2; - - if (type == RLE) - { - while (pos + len < width) - { - if (SAME(pos, pos+len)) - len++; - else - return len; - - if (len == 128) return 128; - } - } - else /* type == RAW */ - { - while (pos + len < width) - { - if (rle_packet_type(row, pos+len, width, bpp) == RAW) - len++; - else - return len; - if (len == 128) return 128; - } - } - return len; /* hit end of row (width) */ -} -#undef SAME -#undef PIXEL - - - -/* --------------------------------------------------------------------------- - * Writes a Targa image to from . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. - * On failure, the contents of the file are not guaranteed - * to be valid. - */ -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src) -{ - #define WRITE(srcptr, size) \ - if (fwrite(srcptr, size, 1, fp) != 1) return TGAERR_WRITE - - #define WRITE16(src) \ - { uint16_t _temp = htole16(src); \ - if (fwrite(&_temp, 2, 1, fp) != 1) return TGAERR_WRITE; } - - WRITE(&src->image_id_length, 1); - - if (src->color_map_type != TGA_COLOR_MAP_ABSENT && - src->color_map_type != TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_TYPE; - WRITE(&src->color_map_type, 1); - - if (src->image_type == TGA_IMAGE_TYPE_NONE) - return TGAERR_NO_IMG; - if (src->image_type != TGA_IMAGE_TYPE_COLORMAP && - src->image_type != TGA_IMAGE_TYPE_BGR && - src->image_type != TGA_IMAGE_TYPE_MONO && - src->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - src->image_type != TGA_IMAGE_TYPE_BGR_RLE && - src->image_type != TGA_IMAGE_TYPE_MONO_RLE) - return TGAERR_IMG_TYPE; - WRITE(&src->image_type, 1); - - if (tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_ABSENT) - return TGAERR_CMAP_MISSING; - if (!tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_PRESENT; - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (src->color_map_length == 0) - return TGAERR_CMAP_LENGTH; - - if (!UNMAP_DEPTH(src->color_map_depth)) - return TGAERR_CMAP_DEPTH; - } - WRITE16(src->color_map_origin); - WRITE16(src->color_map_length); - WRITE(&src->color_map_depth, 1); - - WRITE16(src->origin_x); - WRITE16(src->origin_y); - - if (src->width == 0 || src->height == 0) - return TGAERR_ZERO_SIZE; - WRITE16(src->width); - WRITE16(src->height); - - if (!SANE_DEPTH(src->pixel_depth) || - (src->pixel_depth != 8 && tga_is_colormapped(src)) ) - return TGAERR_PIXEL_DEPTH; - WRITE(&src->pixel_depth, 1); - - WRITE(&src->image_descriptor, 1); - - if (src->image_id_length > 0) - WRITE(&src->image_id, src->image_id_length); - - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - WRITE(src->color_map_data + - (src->color_map_origin * src->color_map_depth / 8), - src->color_map_length * src->color_map_depth / 8); - - if (tga_is_rle(src)) - { - uint16_t row; - for (row=0; rowheight; row++) - { - tga_result result = tga_write_row_RLE(fp, src, - src->image_data + row*src->width*src->pixel_depth/8); - if (result != TGA_NOERR) return result; - } - } - else - { - /* uncompressed */ - WRITE(src->image_data, - src->width * src->height * src->pixel_depth / 8); - } - - WRITE(tga_id, tga_id_length); - - return TGA_NOERR; - #undef WRITE - #undef WRITE16 -} - - - -/* Convenient writing functions --------------------------------------------*/ - -/* - * This is just a helper function to initialise the header fields in a - * tga_image struct. - */ -static void init_tga_image(tga_image *img, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - img->image_id_length = 0; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->image_type = TGA_IMAGE_TYPE_NONE; /* override this below! */ - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - img->origin_x = 0; - img->origin_y = 0; - img->width = width; - img->height = height; - img->pixel_depth = depth; - img->image_descriptor = TGA_T_TO_B_BIT; - img->image_id = NULL; - img->color_map_data = NULL; - img->image_data = image; -} - - - -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO; - return tga_write(filename, &img); -} - - - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO_RLE; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Convenient manipulation functions ---------------------------------------*/ - -/* --------------------------------------------------------------------------- - * Horizontally flip the image in place. Reverses the right-to-left bit in - * the image descriptor. - */ -tga_result tga_flip_horiz(tga_image *img) -{ - uint16_t row; - size_t bpp; - uint8_t *left, *right; - int r_to_l; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - - for (row=0; rowheight; row++) - { - left = img->image_data + row * img->width * bpp; - right = left + (img->width - 1) * bpp; - - /* reverse from left to right */ - while (left < right) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, left, bpp); - memcpy(left, right, bpp); - memcpy(right, buffer, bpp); - - left += bpp; - right -= bpp; - } - } - - /* Correct image_descriptor's left-to-right-ness. */ - r_to_l = tga_is_right_to_left(img); - img->image_descriptor &= ~TGA_R_TO_L_BIT; /* mask out r-to-l bit */ - if (!r_to_l) - /* was l-to-r, need to set r_to_l */ - img->image_descriptor |= TGA_R_TO_L_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Vertically flip the image in place. Reverses the top-to-bottom bit in - * the image descriptor. - */ -tga_result tga_flip_vert(tga_image *img) -{ - uint16_t col; - size_t bpp, line; - uint8_t *top, *bottom; - int t_to_b; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - line = bpp * img->width; /* bytes per line */ - - for (col=0; colwidth; col++) - { - top = img->image_data + col * bpp; - bottom = top + (img->height - 1) * line; - - /* reverse from top to bottom */ - while (top < bottom) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, top, bpp); - memcpy(top, bottom, bpp); - memcpy(bottom, buffer, bpp); - - top += line; - bottom -= line; - } - } - - /* Correct image_descriptor's top-to-bottom-ness. */ - t_to_b = tga_is_top_to_bottom(img); - img->image_descriptor &= ~TGA_T_TO_B_BIT; /* mask out t-to-b bit */ - if (!t_to_b) - /* was b-to-t, need to set t_to_b */ - img->image_descriptor |= TGA_T_TO_B_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Convert a color-mapped image to unmapped BGR. Reallocates image_data to a - * bigger size, then converts the image backwards to avoid using a secondary - * buffer. Alters the necessary header fields and deallocates the color map. - */ -tga_result tga_color_unmap(tga_image *img) -{ - uint8_t bpp = img->color_map_depth / 8; /* bytes per pixel */ - int pos; - void *tmp; - - if (!tga_is_colormapped(img)) return TGAERR_NOT_CMAP; - if (img->pixel_depth != 8) return TGAERR_PIXEL_DEPTH; - if (!SANE_DEPTH(img->color_map_depth)) return TGAERR_CMAP_DEPTH; - - tmp = realloc(img->image_data, img->width * img->height * bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - for (pos = img->width * img->height - 1; pos >= 0; pos--) - { - uint8_t c_index = img->image_data[pos]; - uint8_t *c_bgr = img->color_map_data + (c_index * bpp); - - if (c_index >= img->color_map_origin + img->color_map_length) - return TGAERR_INDEX_RANGE; - - memcpy(img->image_data + (pos*bpp), c_bgr, (size_t)bpp); - } - - /* clean up */ - img->image_type = TGA_IMAGE_TYPE_BGR; - img->pixel_depth = img->color_map_depth; - - free(img->color_map_data); - img->color_map_data = NULL; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Return a pointer to a given pixel. Accounts for image orientation (T_TO_B, - * R_TO_L, etc). Returns NULL if the pixel is out of range. - */ -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y) -{ - if (x >= img->width || y >= img->height) - return NULL; - - if (!tga_is_top_to_bottom(img)) y = img->height - 1 - y; - if (tga_is_right_to_left(img)) x = img->width - 1 - x; - return img->image_data + (x + y * img->width) * img->pixel_depth/8; -} - - - -/* --------------------------------------------------------------------------- - * Unpack the pixel at the src pointer according to bits. Any of b,g,r,a can - * be set to NULL if not wanted. Returns TGAERR_PIXEL_DEPTH if a stupid - * number of bits is given. - */ -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a) -{ - switch (bits) - { - case 32: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = src[3]; - break; - - case 24: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = 0; - break; - - case 16: - { - uint16_t src16 = (uint16_t)(src[1] << 8) | (uint16_t)src[0]; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - if (b) *b = (uint8_t)(((src16 ) & FIVE_BITS) << 3); - if (g) *g = (uint8_t)(((src16 >> 5) & FIVE_BITS) << 3); - if (r) *r = (uint8_t)(((src16 >> 10) & FIVE_BITS) << 3); - if (a) *a = (uint8_t)( (src16 & BIT(15)) ? 255 : 0 ); - #undef FIVE_BITS - break; - } - - case 8: - if (b) *b = *src; - if (g) *g = *src; - if (r) *r = *src; - if (a) *a = 0; - break; - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Pack the pixel at the dest pointer according to bits. Returns - * TGAERR_PIXEL_DEPTH if a stupid number of bits is given. - */ -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a) -{ - switch (bits) - { - case 32: - dest[0] = b; - dest[1] = g; - dest[2] = r; - dest[3] = a; - break; - - case 24: - dest[0] = b; - dest[1] = g; - dest[2] = r; - break; - - case 16: - { - uint16_t tmp; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - tmp = (uint16_t)((b >> 3) & FIVE_BITS); - tmp |= ((g >> 3) & FIVE_BITS) << 5; - tmp |= ((r >> 3) & FIVE_BITS) << 10; - if (a > 127) tmp |= BIT(15); - #undef FIVE_BITS - - dest[0] = (uint8_t) (tmp & 0x00FF); - dest[1] = (uint8_t)((tmp & 0xFF00) >> 8); - break; - } - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Desaturate the specified Targa using the specified coefficients: - * output = ( red * cr + green * cg + blue * cb ) / dv - */ -tga_result tga_desaturate(tga_image *img, const int cr, const int cg, - const int cb, const int dv) -{ - uint8_t bpp = img->pixel_depth / 8; /* bytes per pixel */ - uint8_t *dest, *src, *tmp; - - if (tga_is_mono(img)) return TGAERR_MONO; - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width*img->height*bpp; - src += bpp) - { - uint8_t b, g, r; - (void)tga_unpack_pixel(src, img->pixel_depth, &b, &g, &r, NULL); - - *dest = (uint8_t)( ( (int)b * cb + - (int)g * cg + - (int)r * cr ) / dv ); - dest++; - } - - /* shrink */ - tmp = (uint8_t*)realloc(img->image_data, img->width * img->height); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - - img->pixel_depth = 8; - img->image_type = TGA_IMAGE_TYPE_MONO; - return TGA_NOERR; -} - -tga_result tga_desaturate_rec_601_1(tga_image *img) -{ - return tga_desaturate(img, 2989, 5866, 1145, 10000); -} - -tga_result tga_desaturate_rec_709(tga_image *img) -{ - return tga_desaturate(img, 2126, 7152, 722, 10000); -} - -tga_result tga_desaturate_itu(tga_image *img) -{ - return tga_desaturate(img, 2220, 7067, 713, 10000); -} - -tga_result tga_desaturate_avg(tga_image *img) -{ - return tga_desaturate(img, 1,1,1, 3); -} - - - -/* --------------------------------------------------------------------------- - * Convert an image to the given pixel depth. (one of 32, 24, 16) Avoids - * using a secondary buffer to do the conversion. - */ -tga_result tga_convert_depth(tga_image *img, const uint8_t bits) -{ - size_t src_size, dest_size; - uint8_t src_bpp, dest_bpp; - uint8_t *src, *dest; - - if (!UNMAP_DEPTH(bits) || - !SANE_DEPTH(img->pixel_depth) - ) return TGAERR_PIXEL_DEPTH; - - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - - if (img->pixel_depth == bits) return TGA_NOERR; /* no op, no err */ - - src_bpp = img->pixel_depth / 8; - dest_bpp = bits / 8; - - src_size = (size_t)( img->width * img->height * src_bpp ); - dest_size = (size_t)( img->width * img->height * dest_bpp ); - - if (src_size > dest_size) - { - void *tmp; - - /* convert forwards */ - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width * img->height * src_bpp; - src += src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest += dest_bpp; - } - - /* shrink */ - tmp = realloc(img->image_data, img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - } - else - { - /* expand */ - void *tmp = realloc(img->image_data, - img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - /* convert backwards */ - dest = img->image_data + (img->width*img->height - 1) * dest_bpp; - for (src = img->image_data + (img->width*img->height - 1) * src_bpp; - src >= img->image_data; - src -= src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest -= dest_bpp; - } - } - - img->pixel_depth = bits; - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Swap red and blue (RGB becomes BGR and vice verse). (in-place) - */ -tga_result tga_swap_red_blue(tga_image *img) -{ - uint8_t *ptr; - uint8_t bpp = img->pixel_depth / 8; - - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - for (ptr = img->image_data; - ptr < img->image_data + (img->width * img->height - 1) * bpp; - ptr += bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(ptr, img->pixel_depth, &b,&g,&r,&a); - (void)tga_pack_pixel(ptr, img->pixel_depth, r,g,b,a); - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Free the image_id, color_map_data and image_data buffers of the specified - * tga_image, if they're not already NULL. - */ -void tga_free_buffers(tga_image *img) -{ - if (img->image_id != NULL) - { - free(img->image_id); - img->image_id = NULL; - } - if (img->color_map_data != NULL) - { - free(img->color_map_data); - img->color_map_data = NULL; - } - if (img->image_data != NULL) - { - free(img->image_data); - img->image_data = NULL; - } -} - -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ - diff --git a/sdk/Linux/2019.2/samples/ViewScene/targa.h b/sdk/Linux/2019.2/samples/ViewScene/targa.h deleted file mode 100644 index 8709861..0000000 --- a/sdk/Linux/2019.2/samples/ViewScene/targa.h +++ /dev/null @@ -1,209 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * $Id: targa.h,v 1.7 2003/06/21 09:30:53 emikulic Exp $ - * - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without - * changes, for free or for profit, is allowed as long as this copyright - * notice is kept intact. Modified versions have to be clearly marked - * as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -#ifndef _TARGA_H_ -#define _TARGA_H_ - -#include -#ifndef _MSC_VER -# include -#else /* MSVC */ - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif - -#define BIT(index) (1 << (index)) - -#ifdef _BIG_ENDIAN -# define htole16(x) ( (((x) & 0x00FF) << 8) | (((x) & 0xFF00) >> 8) ) -# define letoh16(x) htole16(x) -#else /* little endian */ -# define htole16(x) (x) -# define letoh16(x) (x) -#endif /* endianness */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Targa image and header fields -------------------------------------------*/ -typedef struct -{ - /* Note that Targa is stored in little-endian order */ - uint8_t image_id_length; - - uint8_t color_map_type; - /* color map = palette */ - #define TGA_COLOR_MAP_ABSENT 0 - #define TGA_COLOR_MAP_PRESENT 1 - - uint8_t image_type; - #define TGA_IMAGE_TYPE_NONE 0 /* no image data */ - #define TGA_IMAGE_TYPE_COLORMAP 1 /* uncompressed, color-mapped */ - #define TGA_IMAGE_TYPE_BGR 2 /* uncompressed, true-color */ - #define TGA_IMAGE_TYPE_MONO 3 /* uncompressed, black and white */ - #define TGA_IMAGE_TYPE_COLORMAP_RLE 9 /* run-length, color-mapped */ - #define TGA_IMAGE_TYPE_BGR_RLE 10 /* run-length, true-color */ - #define TGA_IMAGE_TYPE_MONO_RLE 11 /* run-length, black and white */ - - /* color map specification */ - uint16_t color_map_origin; /* index of first entry */ - uint16_t color_map_length; /* number of entries included */ - uint8_t color_map_depth; /* number of bits per entry */ - - /* image specification */ - uint16_t origin_x; - uint16_t origin_y; - uint16_t width; - uint16_t height; - uint8_t pixel_depth; - - uint8_t image_descriptor; - /* bits 0,1,2,3 - attribute bits per pixel - * bit 4 - set if image is stored right-to-left - * bit 5 - set if image is stored top-to-bottom - * bits 6,7 - unused (must be set to zero) - */ - #define TGA_ATTRIB_BITS (uint8_t)(BIT(0)|BIT(1)|BIT(2)|BIT(3)) - #define TGA_R_TO_L_BIT (uint8_t)BIT(4) - #define TGA_T_TO_B_BIT (uint8_t)BIT(5) - #define TGA_UNUSED_BITS (uint8_t)(BIT(6)|BIT(7)) - /* Note: right-to-left order is not honored by some Targa readers */ - - uint8_t *image_id; - /* The length of this field is given in image_id_length, it's read raw - * from the file so it's not not guaranteed to be zero-terminated. If - * it's not NULL, it needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *color_map_data; - /* See the "color map specification" fields above. If not NULL, this - * field needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *image_data; - /* Follows image specification fields (see above) */ - - /* Extension area and developer area are silently ignored. The Targa 2.0 - * spec says we're not required to read or write them. - */ - -} tga_image; - - - -/* For decoding header bits ------------------------------------------------*/ -uint8_t tga_get_attribute_bits(const tga_image *tga); -int tga_is_right_to_left(const tga_image *tga); -int tga_is_top_to_bottom(const tga_image *tga); -int tga_is_colormapped(const tga_image *tga); -int tga_is_rle(const tga_image *tga); -int tga_is_mono(const tga_image *tga); - - - -/* Error handling ----------------------------------------------------------*/ -typedef enum { - TGA_NOERR, - TGAERR_FOPEN, - TGAERR_EOF, - TGAERR_WRITE, - TGAERR_CMAP_TYPE, - TGAERR_IMG_TYPE, - TGAERR_NO_IMG, - TGAERR_CMAP_MISSING, - TGAERR_CMAP_PRESENT, - TGAERR_CMAP_LENGTH, - TGAERR_CMAP_DEPTH, - TGAERR_ZERO_SIZE, - TGAERR_PIXEL_DEPTH, - TGAERR_NO_MEM, - TGAERR_NOT_CMAP, - TGAERR_RLE, - TGAERR_INDEX_RANGE, - TGAERR_MONO -} tga_result; - -const char *tga_error(const tga_result errcode); - - - -/* Load/save ---------------------------------------------------------------*/ -tga_result tga_read(tga_image *dest, const char *filename); -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp); -tga_result tga_write(const char *filename, const tga_image *src); -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src); - - - -/* Convenient writing functions --------------------------------------------*/ -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -/* These functions will use tga_swap_red_blue to MODIFY your image data */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - - - -/* Manipulation ------------------------------------------------------------*/ -tga_result tga_flip_horiz(tga_image *img); -tga_result tga_flip_vert(tga_image *img); -tga_result tga_color_unmap(tga_image *img); - -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y); -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a); -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a); - -tga_result tga_desaturate(tga_image *img, - const int cr, const int cg, const int cb, const int dv); -tga_result tga_desaturate_rec_601_1(tga_image *img); -tga_result tga_desaturate_rec_709(tga_image *img); -tga_result tga_desaturate_itu(tga_image *img); -tga_result tga_desaturate_avg(tga_image *img); -tga_result tga_convert_depth(tga_image *img, const uint8_t bits); -tga_result tga_swap_red_blue(tga_image *img); - -void tga_free_buffers(tga_image *img); - - - -#ifndef TGA_KEEP_MACROS /* useful for targa.c */ -# undef htole16 -# undef letoh16 -#endif - -#ifdef __cplusplus -} // extern C -#endif - -#endif /* !_TARGA_H_ */ -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ diff --git a/sdk/Windows/2019.2/FBX_SDK_Online_Documentation.html b/sdk/Windows/2019.2/FBX_SDK_Online_Documentation.html deleted file mode 100755 index 875cc59..0000000 --- a/sdk/Windows/2019.2/FBX_SDK_Online_Documentation.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/sdk/Windows/2019.2/Fbx_launch.ico b/sdk/Windows/2019.2/Fbx_launch.ico deleted file mode 100755 index 2f42b9b..0000000 Binary files a/sdk/Windows/2019.2/Fbx_launch.ico and /dev/null differ diff --git a/sdk/Windows/2019.2/License.rtf b/sdk/Windows/2019.2/License.rtf deleted file mode 100755 index 06070a8..0000000 --- a/sdk/Windows/2019.2/License.rtf +++ /dev/null @@ -1,1128 +0,0 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1041\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} -{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} -{\f39\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbmajor\f31501\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} -{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbminor\f31505\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f50\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f51\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} -{\f53\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f54\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f55\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f56\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f57\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f58\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f152\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f150\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f151\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f153\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f154\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\f157\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f432\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f430\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;} -{\f431\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f433\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f434\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f437\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;} -{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fdbmajor\f31520\fbidi \fmodern\fcharset0\fprq1 MS Gothic Western{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31518\fbidi \fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fdbmajor\f31519\fbidi \fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31521\fbidi \fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fdbmajor\f31522\fbidi \fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31525\fbidi \fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};} -{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} -{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} -{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31560\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31558\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31559\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31561\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31562\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};} -{\fdbminor\f31565\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} -{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} -{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; -\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red31\green73\blue125;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 -\ltrch\fcs0 \fs22\lang1033\langfe1041\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1041\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 \snext11 \ssemihidden \sunhideused -Normal Table;}}{\*\rsidtbl \rsid4142109\rsid5905377}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Roberto Regalino}{\creatim\yr2017\mo1\dy30\hr11\min42} -{\revtim\yr2017\mo1\dy30\hr11\min43}{\version2}{\edmins1}{\nofpages20}{\nofwords14481}{\nofchars82543}{\nofcharsws96831}{\vern57441}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} -\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect -\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 -\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot5905377 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qr \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1041\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1041 { -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf2\insrsid4142109 -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk -\par \hich\af1\dbch\af31505\loch\f1 LICENSE AND SERVICES AGREEMENT -\par \hich\af1\dbch\af31505\loch\f1 Autodesk}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 FBX}{ -\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid5905377 \hich\af1\dbch\af31505\loch\f1 SDK 2019}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 -\par -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 READ CAREFULLY:}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 AUTODESK LICENSES THE SOFTWARE AND OTHER LICENSED MATERIALS ONLY ON THE CONDITION THAT LICENSEE ACCEPTS ALL OF THE TERMS CONTAINED OR REFERENCED IN THIS AGREEMENT. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 By selecting the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism designed to acknowledge agreement to the terms of an electronic copy of this Agreement, or by installing, downloading, accessing, or otherwise copying or using all or any portion of the Autod -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -sk Materials, (i) you accept this Agreement on behalf of the entity for which you are authorized to act (e.g., an employer) and acknowledge that such entity is legally bound by this Agreement (and you agree to act in a manner consistent with this Agreemen -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -) or, if there is no such entity for which you are authorized to act, you accept this Agreement on behalf of yourself as an individual and acknowledge that you are legally bound by this Agreement, and (ii) you represent and warrant that you have the right -,\hich\af1\dbch\af31505\loch\f1 - power and authority to act on behalf of and bind such entity (if any) or yourself. You may not accept this Agreement on behalf of another entity unless you are an employee or other agent of such other entity with the right, power and authority to act on -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 behalf of such other entity. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 -If Licensee is unwilling to accept this Agreement, or you do not have the right, power and authority to act on behalf of and bind such entity or yourself as an individual (if there is no such entity), (a) DO NOT SELECT THE \'93\loch\f1 I A -\hich\af1\dbch\af31505\loch\f1 \hich\f1 CCEPT\'94\loch\f1 - BUTTON OR OTHERWISE CLICK ON ANY BUTTON OR OTHER MECHANISM DESIGNED TO ACKNOWLEDGE AGREEMENT, AND DO NOT INSTALL, DOWNLOAD, ACCESS, OR OTHERWISE COPY OR USE ALL OR ANY PORTION OF THE AUTODESK MATERIALS; AND (b) WITHIN THIRTY (30) DAYS FROM THE DATE -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -OF ACQUIRING THE AUTODESK MATERIALS, LICENSEE MAY RETURN THE AUTODESK MATERIALS (INCLUDING ANY COPIES) TO THE ENTITY FROM WHICH THEY WERE ACQUIRED FOR A REFUND OF THE APPLICABLE LICENSE FEES PAID BY THE LICENSEE. -\par \hich\af1\dbch\af31505\loch\f1 \hich\f1 The words \'93\loch\f1 \hich\f1 Autodesk", \'93\loch\f1 \hich\f1 Agreement\'94\loch\f1 \hich\f1 and \'93\loch\f1 Li\hich\af1\dbch\af31505\loch\f1 \hich\f1 censee\'94\loch\f1 - and other capitalized terms used in this Agreement are defined terms. The definitions can be found in Exhibit A (if the terms are not defined in the main body of the Agreement). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Grant}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Subject to and conditioned on Licensee\loch\af1\dbch\af31505\hich\f1 \rquote \loch\f1 -s continuous compliance with this Agreement, Autodesk grants Licensee a nonexclusive, nonsublicensable, nontransferable, limited license to Install and Access the Licensed SDK and User Documentation, in each case solely (a) in the Territory, (b) }{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 within th\hich\af1\dbch\af31505\loch\f1 e scope of the License Type and Permitted }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Number}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 specified in the applicable License Identification, and (c) in accordance with the other terms of this Agreement, to: - -\par }\pard \ltrpar\ql \li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.1\~\~\~\~\~\~ (a)\~\~\~\~ -use the SDK for development, research, internal, educational, or comme\hich\af1\dbch\af31505\loch\f1 rcial purposes: -\par }\pard \ltrpar\ql \fi1440\li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -(i) to create a software product with the capability to read and/or write and/or translate Licensee files, which software product links to the Library (\'93\loch\f1 \hich\f1 Developed Software\'94\loch\f1 ); and/or -\par \hich\af1\dbch\af31505\loch\f1 (ii) to modify the Sample Code(s) solely to create an obje\hich\af1\dbch\af31505\loch\f1 \hich\f1 ct code version(s) (\'93\loch\f1 \hich\f1 Modified Code(s)\'94\loch\f1 ); and/or -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (b)\~\~\~\~\~ -reproduce the Library to link to the Developed Software. -\par }\pard \ltrpar\ql \li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.2\~\~\~\~\~\~(a)\~\~\~\~\~ -incorporate the executable version of the Developed Software into; and/or -\par }\pard \ltrpar\ql \fi720\li720\ri0\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (b)\~\~\~\~\~\hich\af1\dbch\af31505\loch\f1 -incorporate the Modified Code(s) into; and/or -\par \hich\af1\dbch\af31505\loch\f1 (c)\~\~\~\~\~link the Library, in binary code form to; -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 software products developed by Licensee (\'93\loch\f1 -\hich\f1 Licensee Product(s)\'94\loch\f1 ) for Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs. -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.3\~\~\~reproduce, distribute and sublicense free of cha -\hich\af1\dbch\af31505\loch\f1 \hich\f1 rge or for a fee Licensee Product(s) provided that Licensee must sublicense the Software, the Developed Software, the Library, the Sample Code(s) and the Modified Code(s) \'93\loch\f1 \hich\f1 as is\'94\loch\f1 -, without warranty of any kind. -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Various License Types are described in Exhibit -\hich\af1\dbch\af31505\loch\f1 B. }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -In any case where the License Identification does not specify a License Type or Permitted Number or Territory, or there is no License Identification, the License Type will, by default, be the Stand-alone (Individual) License and the Territory will be -\hich\af1\dbch\af31505\loch\f1 worldwide, subject to the Export Control requirements herein. -\par }\pard \ltrpar\ql \fi720\li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.4\~\~\~\~\~\~ - Licensee shall reproduce and apply any copyright or other proprietary rights notices included on or embedded in the Software, or any part thereof, to any copies of the Software or an\hich\af1\dbch\af31505\loch\f1 -y part thereof, or to the Developed Software, in any form.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid4142109 -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.1.5\~\~\~\~\~\~ - Licensee shall place the following statement in the copyright area of either: (i) the end-user License and/or terms of use for the Developed Software; or (ii) the \hich\f1 \lquote \loch\f1 About Box\hich\f1 \rquote \loch\f1 or similar -\hich\af1\dbch\af31505\loch\f1 - notice page of the Developed Software; and Licensee shall also include the following statement in the copyright area of either: (a) the on-line documentation regarding the Developed Software; or (b) any other document related to Developed Software that c -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 ntains copyright information:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid4142109 -\par }\pard \ltrpar\ql \li720\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 \hich\f1 This software contains Autodesk\'ae\loch\f1 -\hich\f1 FBX\'ae\loch\f1 code developed }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 \hich\af1\dbch\af31505\loch\f1 by Autodesk, Inc. Copyright 2018}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 \hich\f1 Autodesk, Inc. All rights, reserved. Such code is provided \'93\loch\f1 \hich\f1 as is\'94\loch\f1 and Autodesk, Inc. disclaims any and all warranties, whether express or \hich\af1\dbch\af31505\loch\f1 -implied, including without limitation the implied warranties of merchantability, fitness for a particular purpose or non-infringement of third party rights. In no event shall Autodesk, Inc. be liable for any direct, indirect, incidental, special, exemplar -\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 -, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort -\hich\af1\dbch\af31505\loch\f1 (\hich\af1\dbch\af31505\loch\f1 \hich\f1 including negligence or otherwise) arising in any way out of such code.\'94}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Upgrades and Previous Versions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Upgrades}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If Autodesk or a Reseller provides Licensee with an Upgrade to other Licensed Materials previously licensed to License\hich\af1\dbch\af31505\loch\f1 \hich\f1 -e, the Licensed Materials previously licensed to Licensee and any other Autodesk Materials relating thereto will thereafter be deemed to be a \'93\loch\f1 \hich\f1 Previous Version.\'94\loch\f1 - Except as set forth in Section 1.2.2 (Exception for Relationship Program Licensees), the lic\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nse grant and other rights with respect to any Previous Version will terminate one hundred twenty (120) days after Installation of the Upgrade. Within such one hundred twenty (120) day period, except as set forth in Section 1.2.2 (Exception for Relations -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 -ip Program Licensees), (a) Licensee must cease all use of any Previous Version and Uninstall all copies of the Previous Version, and (b) upon expiration of such period, such Previous Version will no longer constitute Licensed Materials but rather will be -\hich\af1\dbch\af31505\loch\f1 d\hich\af1\dbch\af31505\loch\f1 eemed to be Excluded Materials and Licensee will no longer have a license for any such Previous Version. At Autodesk\hich\f1 \rquote \loch\f1 -s request, Licensee agrees to destroy or return to Autodesk or the Reseller from which they were acquired all copies of the Previous Vers\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -on. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of any Previous Version have been Uninstalled and, if so requested by Autodesk, destroyed or returned to Autodesk or the Reseller from which they were acquired -. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exception for Relationship Program Licensees}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The termination of rights as to Previous Versions described in Section 1.2.1 (Effect of Upgrades) may not apply to Licensee if and to the extent (a) Licensee participates in a Relationship Program and t\hich\af1\dbch\af31505\loch\f1 -he Relationship Program Terms authorize Licensee to retain such Previous Versions or (b) otherwise authorized in writing by Autodesk. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The Licensed Materials (or portions thereof) may be subject to terms (e.g., terms accompanying such Licensed Materials or made available in connection with ordering, installing, downloading, accessing, using or copying such Licensed Materials) that are -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 in addition to or different from the terms set forth in this Agreement, and Licensee agrees to comply with such terms. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Other Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If Autodesk provides or makes available to Licensee any additional materials associated with the Licensed Materials\hich\af1\dbch\af31505\loch\f1 -, including any corrections, patches, service packs, updates or upgrades to, or new versions of, the Licensed Materials (including Upgrades) or any Supplemental Materials or User Documentation for the Licensed Materials, (a) such additional materials may -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -nclude or be subject to other terms in addition to or different from the terms set forth in this Agreement (including, without limitation, additional or different fees, license terms, or restrictions on use), and Licensee agrees to comply with such terms, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -or (b) if there are no other terms for such additional materials, they will (except as otherwise provided by Section 1.2 (Upgrades and Previous Versions)) be subject to the same terms (including, without limitation, the licenses, applicable License Type a -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -d Permitted Number, and other terms of this Agreement) as the Licensed Materials to which such additional materials apply. In no event will the foregoing result in any rights with respect to Excluded Materials. -\par \hich\af1\dbch\af31505\loch\f1 1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Authorized Users}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee may permit t\hich\af1\dbch\af31505\loch\f1 he Licensed Materials to be Installed and/or Accessed only by Licensee\hich\f1 \rquote \loch\f1 -s Personnel (except as otherwise designated in the applicable License Type), and any such Installation or Access will be subject to any other requirements imposed by this Agreement and\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -the applicable License Type and Permitted Number. Licensee will be responsible for compliance with this Agreement by Licensee\hich\f1 \rquote \loch\f1 -s Personnel and any other persons who may have Access to the Autodesk Materials through Licensee (whether or not such Access is \hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -uthorized by Autodesk or within the scope of the applicable License Type and Permitted Number). -\par \hich\af1\dbch\af31505\loch\f1 1.6\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Third-Party Licensed Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . The Autodesk Materials may contain or be accompanied by third-party software, data or other materials that are subject to a\hich\af1\dbch\af31505\loch\f1 \hich\f1 -nd provided in accordance with terms that are in addition to or different from the terms set forth in this Agreement. Such terms may be included or referenced in or with such third-party software, data or other materials (e.g., in the \'93\loch\f1 -\hich\f1 About box\'94\loch\f1 ) or a w\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 b page specified by Autodesk (the URL for which may be obtained on Autodesk\hich\f1 \rquote \loch\f1 -s website or on request to Autodesk). Licensee agrees to comply with such terms. In addition, Licensee will take sole responsibility for obtaining and complying with any license\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 - that may be necessary to use third-party software, data or other materials that Licensee uses or obtains for use in conjunction with the Licensed Materials. Licensee acknowledges and agrees that Autodesk has no responsibility for, and makes no represent -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 tions or warranties regarding, such third-party software, data or other materials or Licensee\hich\f1 \rquote \loch\f1 s use of such third-party software, data or other materials. -\par \hich\af1\dbch\af31505\loch\f1 1.7\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relationship Programs}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk may offer to Licensee, and (if so) Licensee may participate in o\hich\af1\dbch\af31505\loch\f1 -ne (1) or more Relationship Programs applicable to the Licensed Materials licensed to Licensee under this Agreement (and such Relationship Programs may include rights in addition to or different from those set forth in this Agreement). Any Relationship P -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ograms are subject to Autodesk\hich\f1 \rquote \loch\f1 -s terms therefor, which terms are set forth in the applicable Relationship Program Terms. Licensee agrees that if it requests, accepts, or makes use of any Relationship Program, Licensee will be bound by such terms, as they\hich\af1\dbch\af31505\loch\f1 - \hich\af1\dbch\af31505\loch\f1 -may be modified from time to time in accordance with the applicable Relationship Program Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such ter -\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 s. Licensee acknowledges that Autodesk may require a further acceptance of such terms as a condition to participation in a Relationship Program. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.8\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk may provide, and Licensee may elect to receive or benefit from, certain Services from \hich\af1\dbch\af31505\loch\f1 time to time. Any Services are subject to Autodesk\hich\f1 \rquote \loch\f1 -s terms therefor, which terms are set forth in the applicable Services Terms. Licensee agrees that if it requests, accepts, or makes use of any Services, Licensee will be bound by such terms, as they ma\hich\af1\dbch\af31505\loch\f1 y -\hich\af1\dbch\af31505\loch\f1 - be modified from time to time in accordance with the applicable Services Terms (and such terms, as so modified from time to time, are a part of and incorporated by reference into this Agreement), and Licensee agrees to comply with such terms. Licensee a -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 knowledges that Autodesk may require a further acceptance of such terms as a condition to providing Services. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.9\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Archival Copy}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Licensee\hich\f1 \rquote \loch\f1 -s license under Section 1.1 (License Grant) includes the right to make a single archival copy of the Licensed Materia\hich\af1\dbch\af31505\loch\f1 -ls in the Territory, provided that (a) the single-copy limitation will not apply to copies made as an incidental part of a routine backup of Licensee\hich\f1 \rquote \loch\f1 -s entire computer system on which the Licensed Materials are Installed in accordance with this Agreement,\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -where such backup includes the making of copies of substantially all other software on such computer system and (b) any archival copy may be Accessed or Installed (other than on a backup storage medium from which the Licensed Materials cannot be Accessed) -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -only when and for so long as the primary copy of the Licensed Materials is inaccessible and inoperable. Copies of the Licensed Materials that are Installed and are in excess of the Permitted Number at any time while the primary copy of the Licensed Mater -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 als is also Accessible are not "archival copies" as permitted under this Section 1.9 (Archival Copy). -\par \hich\af1\dbch\af31505\loch\f1 1.10\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Nature of Licenses}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that when Licensee acquires a license of Licensed Materials, (including through a Relationship \hich\af1\dbch\af31505\loch\f1 Program or Services), Licensee\hich\f1 \rquote \loch\f1 -s acquisition is neither contingent on the delivery of any future features or functionality nor subject to any public or other comments (oral, written or otherwise) made by Autodesk regarding future features or functionality. -\par \hich\af1\dbch\af31505\loch\f1 1.11\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Feedback}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 . -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee hereby grants Autodesk, under all of Licensee\hich\f1 \rquote \loch\f1 -s intellectual property and proprietary rights, the following worldwide, exclusive, transferable, perpetual, irrevocable, royalty-free, fully paid-up rights: (1) to make, have made, use\hich\af1\dbch\af31505\loch\f1 -, copy, modify, and create derivative works of the Feedback as part of or in connection with any Autodesk product, technology, service, content, material, specification or documentation (including without limitation in connection with the marketing or sal -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 - thereof); (2) to publicly perform or display, import, broadcast, transmit, distribute, license, offer to sell and sell, rent, lease or lend copies of the Feedback (and derivative works thereof and improvements thereon); and (3) to sublicense to third par -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ies the foregoing rights, including the right to sublicense to further third parties}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\insrsid4142109 .}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Feedback}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 shall mean all suggestions, comments, input, ideas, reports, information or know-how (whether in oral or written form) provided by Licensee to Autodesk or an \hich\af1\dbch\af31505\loch\f1 -Autodesk affiliate in connection with Licensee\hich\f1 \rquote \loch\f1 s evaluation of or use of the Licensed Materials. Feedback does not include any artwork or sample content created by Licensee using the Licensed Materials.}{\rtlch\fcs1 \af0\afs18 -\ltrch\fcs0 \f0\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Limitations; Prohibitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitations\hich\af1\dbch\af31505\loch\f1 and Exclusions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 .}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No License Granted; Unauthorized Activities}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The parties acknowledge and agree that, notwithstanding anything to the contrary in this Agreement, no license is granted (whether expressly, by implication or otherwise) under this Agree\hich\af1\dbch\af31505\loch\f1 -ment (and this Agreement expressly excludes any right) (a) to Excluded Materials, (b) to any Autodesk Materials that Licensee did not acquire lawfully or that Licensee acquired in violation of or in a manner inconsistent with this Agreement, (c) for Insta -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -lation of or Access to the Licensed Materials beyond the applicable license term (whether a fixed term or Relationship Program period or term) or outside the scope of the applicable License Type or Permitted Number, (d) for Installation of the Licensed Ma -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 erials on any Computer other than a Computer owned or leased, and controlled}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\uldb\cf2\insrsid4142109 ,}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 by Li\hich\af1\dbch\af31505\loch\f1 -censee, unless otherwise authorized in writing by Autodesk, (e) to distribute, rent, loan, lease, sell, sublicense, transfer or otherwise provide all or any portion of the Autodesk Materials to any person or entity except as expressly set forth in this Ag -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -eement or as expressly authorized in writing by Autodesk, (f) to provide or make available any features or functionality of the Autodesk Materials to any person or entity (other than to and for Licensee itself for the purpose specified in the applicable L -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -cense Type), whether or not over a network and whether or not on a hosted basis, (g) except as otherwise expressly provided with respect to a specific License Type, to Install or Access or allow the Installation of or Access to the Autodesk Materials over -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -the Internet or other non-local network, including, without limitation, use in connection with a wide area network (WAN), virtual private network (VPN), virtualization, Web hosting, time-sharing, service bureau, software as a service, cloud or other servi -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -e or technology, (h) to remove, alter or obscure any proprietary notices, labels or marks in the Autodesk Materials, (i) to decompile, disassemble or otherwise reverse engineer the Autodesk Materials, or (j) to translate, adapt, arrange, or create derivat -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 ve works based on, or otherwise modify the Autodesk Materials for any purpose. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensed Materials as a Single Product}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The Licensed Materials are licensed to Licensee as a single product and the applicable components may not be separated for Install\hich\af1\dbch\af31505\loch\f1 -ation or Access (and all such components must be Installed and Accessed on the same Computer except as authorized in writing by Autodesk). -\par \hich\af1\dbch\af31505\loch\f1 2.1.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Territory}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Except as otherwise authorized in writing by Autodesk, the licenses granted in this Agreement are g\hich\af1\dbch\af31505\loch\f1 ranted only for the Territory. Nothing in this Agreement permits Licensee (including, without limitation, Licensee -\hich\f1 \rquote \loch\f1 s Personnel, if any) to Install or Access the Licensed Materials outside of the Territory. -\par \hich\af1\dbch\af31505\loch\f1 2.1.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Unauthorized Use}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee will \hich\af1\dbch\af31505\loch\f1 \hich\f1 -not engage in, and will not permit or assist any third party to engage in any of the uses or activities prohibited (or any uses or activities inconsistent with the limitations described) in this Section 2.1 (Limitations and Exclusions) (collectively, \'93 -\loch\f1 Una\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 \hich\f1 thorized Uses\'94\loch\f1 ). Any such Unauthorized Use, and any Installation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 of or Access to the Licensed Materials provided under this Agreement, outside of the scope of the applicable license grants (including, without limitation, outside the applicable License Typ\hich\af1\dbch\af31505\loch\f1 -e and/or Permitted Number) or otherwise not in accordance with this Agreement, constitute or result in infringement of Autodesk\hich\f1 \rquote \loch\f1 -s intellectual property rights as well as a breach of this Agreement. Licensee will notify Autodesk promptly of any such Unaut\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 orized Uses or other unauthorized Installation or Access. -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang4105\langfe1041\langnp4105\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\lang4105\langfe1041\langnp4105\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Use of Open Source Software by Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang4105\langfe1041\langnp4105\insrsid4142109 .\~\hich\af1\dbch\af31505\loch\f1 - If Licensee uses any third party software (including free or Open Source Software), whether or not in conjunction with the Software, Licensee shall en\hich\af1\dbch\af31505\loch\f1 -sure that its use does not: (i) create, or purport to create, obligations of Autodesk or any of its affiliates with respect to the Software; (ii) grant, or purport to grant, to any third party any rights to or immunities under Autodesk\hich\f1 \rquote -\loch\f1 s or any of its aff\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 liates intellectual property rights; or (iii) cause the Software to be subject to any licensing terms other than those set forth in this Agreement.}{\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Circumvention}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2.1\tab -Licensee may not (i) utilize any equipment, device, software, or other means to (\hich\af1\dbch\af31505\loch\f1 -or designed to) circumvent or remove any form of technical protection used by Autodesk in connection with the Autodesk Materials, or (ii) Install or Access the Autodesk Materials with any product code, authorization code, serial number, or other copy-prot -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ction device not supplied by Autodesk directly or through a Reseller. Without limitation of the generality of the foregoing, Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove the Autodesk Li -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ense Manager or any tool or technical protection measure provided or made available by Autodesk for managing, monitoring or controlling Installation of or Access to Autodesk Materials. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.2.2\tab \hich\af1\dbch\af31505\loch\f1 -Licensee may not utilize any equipment, device, software, or other means to (or designed to) circumvent or remove any usage restrictions, or to enable functionality disabled by Autodesk, in connection with the Excluded Materials. Licensee may not bypass -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -r delete any functionality or technical limitations of the Autodesk Materials that (or that are designed to) prevent or inhibit the unauthorized copying of, Installation or Access to the Excluded Materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 3.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 All Rights Reserved}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk and its licensors\hich\af1\dbch\af31505\loch\f1 - retain title to and ownership of, and all other rights with respect to, the Autodesk Materials and all copies thereof, including, without limitation, any related copyrights, trademarks, trade secrets, patents, and other intellectual property rights. Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee has only the limited licenses granted with respect to the Licensed Materials expressly set forth in this Agreement, and Licensee has no other rights, implied or otherwise. Licensee acknowledges and agrees that the Autodesk Materials are licensed, no -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - sold, and that rights to Install and Access the Licensed Materials are acquired only under the license from Autodesk. The structure and organization of Software included in the Autodesk Materials, any source code or similar materials relating to such So -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 -tware, any API Information and Development Materials (both as described in Section 1.11 (APIs)), and any other Licensed Materials identified as confidential or proprietary are valuable trade secrets of, and confidential and proprietary information of, Aut -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 desk and its suppliers, and (a) may not be distributed, disclosed or otherwise provided to third parties, and (b) may be used only internally and only in conjunction with and for Licensee -\hich\f1 \rquote \loch\f1 s own authorized internal use of the Licensed Materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 4.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Privac\hich\af1\dbch\af31505\loch\f1 y; Use of Information; Connectivity}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 4.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Privacy and Use of Information}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that Licensee (and third parties acting on Licensee\hich\f1 \rquote \loch\f1 s behalf) may provide, and Autodesk and its Resellers (and third parties acting on behalf of Autod\hich\af1\dbch\af31505\loch\f1 -esk and its Resellers) may obtain, certain information and data with respect to Licensee (including, without limitation, personal information) and Licensee\hich\f1 \rquote \loch\f1 -s business in connection with this Agreement, including, without limitation, information and data p\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ovided to or obtained by Autodesk and its Resellers (or third parties acting on behalf of Autodesk and its Resellers) through the Customer Information Form and otherwise, in connection with ordering, registration, activation, updating, validating entitlem -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nt to, auditing, monitoring Installation of and Access to Autodesk Materials, Relationship Programs and Services and managing the relationship with Licensee. Licensee hereby consents to Autodesk maintaining, using, storing and disclosing such information -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 and data (including, without limitation, personal information, if any) in conformity with Autodesk\hich\f1 \rquote \loch\f1 -s policies on privacy and data protection, as such policies may be updated from time to time, including without limitation Autodesk\hich\f1 \rquote \loch\f1 s Privacy Statement, as \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -urrently located at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://usa.autodesk.com/privacy/"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5a00000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0070007200690076006100630079002f000000795881f43b1d7f48af2c825dc4852763 -00000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/privacy/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Without limitation of the generality of the foregoing, Licensee acknowledges and agrees that: (a) Autodesk may from time to time prompt Licensee (and thir\hich\af1\dbch\af31505\loch\f1 -d parties acting on Licensee\hich\f1 \rquote \loch\f1 s behalf) to provide express agreement to the terms of Autodesk\hich\f1 \rquote \loch\f1 -s Privacy Statement and/or express agreement to specific uses of information and data (including, without limitation, personal information); (b) Autodesk may prov\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -de information and data, including, without limitation, information and data about Licensee\hich\f1 \rquote \loch\f1 s use of Autodesk Materials, Relationship Programs, and Licensee\hich\f1 \rquote \loch\f1 -s support requests, to Autodesk subsidiaries and affiliates, Resellers and other third parties in \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -onnection with the provision, maintenance, administration or usage of Licensed Materials, Relationship Programs or Services or in connection with enforcement of any agreements relating to Licensed Materials, Relationship Programs or Services; and (c) Auto -\hich\af1\dbch\af31505\loch\f1 d\hich\af1\dbch\af31505\loch\f1 -esk may make cross-border transfers of such information and data, including to jurisdictions with privacy or data protection laws that are less protective of Licensee than the jurisdiction in which Licensee is domiciled. Licensee acknowledges and agrees -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 hat such policies may be changed from time to time by Autodesk and that, effective upon posting on Autodesk\hich\f1 \rquote \loch\f1 -s website or other written notice from Autodesk, Licensee will be subject to such changes. -\par \hich\af1\dbch\af31505\loch\f1 4.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Connectivity}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Certain Licensed Materials may facil\hich\af1\dbch\af31505\loch\f1 itate or require Licensee\hich\f1 \rquote \loch\f1 -s access to and use of content and services that are hosted on websites maintained by Autodesk or by third parties. In some cases, such content and services may appear to be a feature or function within, or extension of, the Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 nsed Materials on Licensee\hich\f1 \rquote \loch\f1 s Computer even though hosted on such websites. Accessing such content or services and use of Licensed Materials may cause Licensee -\hich\f1 \rquote \loch\f1 s Computer, without additional notice, to connect automatically to the Internet (transitorily, \hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -ntermittently or on a regular basis) and to communicate with an Autodesk or third-party website\hich\f1 \emdash \loch\f1 -for example, for purposes of providing Licensee with additional information, features and functionality or to validate that the Licensed Materials and/or conte\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -t or services are being used as permitted under this Agreement or other applicable terms. Such connectivity to Autodesk websites is governed by Autodesk\hich\f1 \rquote \loch\f1 -s policies on privacy and data protection described in this Section 4 (Privacy; Use of Information; C\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -nnectivity). Such connectivity to websites of third parties is governed by the terms (including the disclaimers and notices) found on such sites or otherwise associated with the third-party content or services. Autodesk does not control, endorse, or acc -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -pt responsibility for any such third-party content or services, and any dealings between Licensee and any third party in connection with such content or services, including, without limitation, such third party\hich\f1 \rquote \loch\f1 -s privacy policies, use of personal informat\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -on, delivery of and payment for goods and services, and any other terms associated with such dealings, are solely between Licensee and such third party. Autodesk may at any time, for any reason, modify or discontinue the availability of any third-party c -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 ntent or services. Access to and use of certain content and services (whether of Autodesk or third parties) may require assent to separate terms and/or payment of additional fees. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limited Warranty and Disclaimers }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limited Warranty}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Autodesk warrant\hich\af1\dbch\af31505\loch\f1 \hich\f1 -s that, as of the date on which the Licensed Materials are delivered to Licensee and for ninety (90) days thereafter or if the license term is shorter, such shorter period (\'93\loch\f1 \hich\f1 Warranty Period\'94\loch\f1 -), the Licensed Materials will provide the general features and f\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 nctions described in the User Documentation portion of the Licensed Materials. Autodesk's entire liability and Licensee -\hich\f1 \rquote \loch\f1 \hich\f1 s exclusive remedy during the Warranty Period (\'93\loch\f1 \hich\f1 Limited Warranty\'94\loch\f1 ) will be, with the exception of any statutory warranty or remedy tha\hich\af1\dbch\af31505\loch\f1 t -\hich\af1\dbch\af31505\loch\f1 - cannot be excluded or limited under law, at Autodesk's option, (i) to attempt to correct or work around errors, if any, or (ii) to refund the license fees, if any, paid by Licensee and terminate this Agreement or the license specific to such Licensed Mat -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 rials. Such refund is subject to the return, during the Warranty Period, of the Autodesk Materials, with a copy of Licensee\hich\f1 \rquote \loch\f1 s License Identification, to Licensee -\hich\f1 \rquote \loch\f1 s local Autodesk office or the Reseller from which Licensee acquired the Autodesk Materials.\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 - THE LIMITED WARRANTY SET FORTH IN THIS SECTION GIVES LICENSEE SPECIFIC LEGAL RIGHTS. LICENSEE MAY HAVE ADDITIONAL LEGAL RIGHTS UNDER LAW WHICH VARY FROM JURISDICTION TO JURISDICTION. AUTODESK DOES NOT SEEK TO LIMIT LICENSEE\hich\f1 \rquote \loch\f1 -S WARRANTY RIGHTS TO ANY EXT\hich\af1\dbch\af31505\loch\f1 E\hich\af1\dbch\af31505\loch\f1 NT NOT PERMITTED BY LAW. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 5.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Disclaimer}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. EXCEPT FOR THE EXPRESS LIMITED WARRANTY PROVIDED IN SECTION 5.1 (LIMITED WARRANTY), AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, AUTODESK AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, NO WARRANTIES, REPR\hich\af1\dbch\af31505\loch\f1 -ESENTATIONS, OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED (INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT, OR WARRANTIES OTHERWISE IMPLIED BY STATUTE OR FROM A COURSE OF DEAL -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -NG OR USAGE OF TRADE) WITH RESPECT TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES (PURSUANT TO A RELATIONSHIP PROGRAM OR OTHERWISE). ANY STATEMENTS OR REPRESENTATIONS ABOUT THE AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES AND THEI -\hich\af1\dbch\af31505\loch\f1 R\hich\af1\dbch\af31505\loch\f1 - FEATURES OR FUNCTIONALITY IN THE LICENSED MATERIALS OR ANY COMMUNICATION WITH LICENSEE ARE FOR INFORMATION PURPOSES ONLY, AND DO NOT CONSTITUTE A WARRANTY, REPRESENTATION, OR CONDITION. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT: (a) THA -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 - THE OPERATION OR OUTPUT OF THE LICENSED MATERIALS OR SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, SECURE, ACCURATE, RELIABLE, OR COMPLETE, WHETHER OR NOT UNDER A RELATIONSHIP PROGRAM OR SUPPORT BY AUTODESK OR ANY THIRD PARTY; (b) THAT ERRORS WILL BE CORRE -\hich\af1\dbch\af31505\loch\f1 C\hich\af1\dbch\af31505\loch\f1 TED BY AUTODESK OR ANY THIRD PARTY; OR (c) THAT AUTODESK OR ANY THIRD PARTY WILL RESOLVE ANY PARTICULAR SUPPORT REQUEST OR THAT SUCH RESOLUTION WILL MEET LICENSEE\hich\f1 \rquote \loch\f1 -S REQUIREMENTS OR EXPECTATIONS. NOTHING IN THE FOREGOING RESTRICTS THE EFFECT OF WARRANTIES\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -OR CONDITIONS WHICH MAY BE IMPLIED BY LAW WHICH CANNOT BE EXCLUDED, RESTRICTED OR MODIFIED NOTWITHSTANDING A CONTRACTUAL RESTRICTION TO THE CONTRARY.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \caps\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 - WITHOUT LIMITING THE FOREGOING, Autodesk }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 AND ITS SUPPLIERS MAKE, AND LICENSEE RECEIVES, }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \caps\f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 no warranties that\hich\af1\dbch\af31505\loch\f1 -: (I) future versions of the SDK, Library and/or Sample Code(s), if any, will contain features similar to or the same as the SDK, Library and/or Sample Code(s), respectively or will be compatible with the SDK, Library and/or Sample Code(s), respectively; -\hich\af1\dbch\af31505\loch\f1 (\hich\af1\dbch\af31505\loch\f1 II) the Software or the SDK, Library and/or Sample Code(s) will meet LICENSEE requirements; or (iii) operation of the SDK, Library or Sample Code(s) will be uninterrupted or error-free.}{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Warnings}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Functionality Limitations}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . The Licensed Materials and\hich\af1\dbch\af31505\loch\f1 - Services (except for Licensed Materials designed for non-commercial use, such as Autodesk Materials designed to be used for household or other consumer purposes or licensed only for purposes of educational or individual learning) are commercial professio -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 al tools intended to be used by trained professionals only. Particularly in the case of commercial professional use, the Licensed Materials and Services are not a substitute for Licensee -\hich\f1 \rquote \loch\f1 s professional judgment or independent testing. The Licensed Mater\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -als and Services are intended only to assist Licensee with its design, analysis, simulation, estimation, testing and/or other activities and are not a substitute for Licensee\hich\f1 \rquote \loch\f1 -s own independent design, analysis, simulation, estimation, testing, and/or othe\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - activities, including those with respect to product stress, safety and utility. Due to the large variety of potential applications for the Licensed Materials and Services, the Licensed Materials and Services have not been tested in all situations under -\hich\af1\dbch\af31505\loch\f1 w\hich\af1\dbch\af31505\loch\f1 -hich they may be used. Autodesk will not be liable in any manner whatsoever for the results obtained through use of the Licensed Materials or Services. Persons using the Licensed Materials or Services are responsible for the supervision, management, and -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -control of the Licensed Materials and Services and the results of using the Licensed Materials and Services. This responsibility includes, without limitation, the determination of appropriate uses for the Licensed Materials and Services and the selection -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -of the Licensed Materials, Services and other computer programs and materials to help achieve intended results. Persons using the Licensed Materials or Services are also responsible for establishing the adequacy of independent procedures for testing the -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -eliability, accuracy, completeness, and other characteristics of any output of the Licensed Materials or Services, including, without limitation, all items designed with the assistance of the Licensed Materials or Services. Licensee further acknowledges -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 nd agrees that the Licensed Materials form part of Licensee\hich\f1 \rquote \loch\f1 -s total unique hardware and software environment to deliver specific functionality, and that the Licensed Materials and Services provided by Autodesk may not achieve the results Licensee desires \hich\af1\dbch\af31505\loch\f1 w -\hich\af1\dbch\af31505\loch\f1 ithin Licensee\hich\f1 \rquote \loch\f1 s design, analysis, simulation, estimation, and/or testing constraints. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Activation Codes and Security}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par \hich\af1\dbch\af31505\loch\f1 6.2.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Activation Code Required for Installation/Access and Continued Use}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Installation of and Access to the Licensed Materials requir\hich\af1\dbch\af31505\loch\f1 -e, and the continued use thereof may from time to time require, activation codes issued by Autodesk. Registration may be required before an activation code is issued by Autodesk. Licensee will provide Autodesk and its Reseller with any information requi -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ed for such registration and agrees that any information provided to Autodesk or its Reseller will be accurate and current. Licensee will also maintain and update Licensee\hich\f1 \rquote -\loch\f1 s registration information, on an ongoing basis, through customer data registratio\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 - processes, including without limitation the Customer Information Form, which may be provided by Autodesk. Licensee acknowledges and agrees that Autodesk may use such information in accordance with its Privacy Statement (as described or referenced in Sec -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ion 4 (Privacy; Use of Information; Connectivity)). -\par \hich\af1\dbch\af31505\loch\f1 6.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Disabling Access}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. LICENSEE ACKNOWLEDGES AND AGREES THAT INSTALLATION OF AND ACCESS TO LICENSED MATERIALS MAY BE DISABLED BY THE ACTIVATION, SECURITY, AND TECHNICAL PROTECTION MECHANISMS IF LICENSEE TRIES TO TRANSFER ALL OR A PART OF THE LICENSED MATERIALS TO ANOTHER COM -\hich\af1\dbch\af31505\loch\f1 P\hich\af1\dbch\af31505\loch\f1 -UTER, IF LICENSEE TAMPERS WITH THE TECHNICAL PROTECTION MECHANISMS OR DATE-SETTING MECHANISMS ON A COMPUTER OR IN THE LICENSED MATERIALS, IF LICENSEE USES THE LICENSED MATERIALS PAST AN APPLICABLE RELATIONSHIP PROGRAM PERIOD OR FIXED TERM, OR IF LICENSEE -\hich\af1\dbch\af31505\loch\f1 U\hich\af1\dbch\af31505\loch\f1 NDERTAKES CERTAIN OTHER ACTIONS THAT AFFECT THE SECURITY MODE OR UNDER OTHER CIRCUMSTANCES AND THAT, IN ANY SUCH EVENT, LICENSEE\hich\f1 \rquote \loch\f1 S ACCESS TO LICENSEE\hich\f1 \rquote -\loch\f1 S WORK PRODUCT AND OTHER DATA MAY BE AFFECTED. MORE INFORMATION IS CONTAINED IN THE APPLICABLE LICENSED \hich\af1\dbch\af31505\loch\f1 M\hich\af1\dbch\af31505\loch\f1 ATERIALS OR AVAILABLE FROM AUTODESK ON REQUEST. -\par \hich\af1\dbch\af31505\loch\f1 6.2.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Activation Codes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that receipt of an activation code (whether or not provided to Licensee in error) will not constitute evidence of or affect the scope of Lic\hich\af1\dbch\af31505\loch\f1 ensee\hich\f1 \rquote \loch\f1 -s license rights. Those rights will be only as set forth in this Agreement and the applicable License Identification. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 6.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Affected Data}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Work product and other data created with Licensed Materials made available under certain License Types, includi\hich\af1\dbch\af31505\loch\f1 -ng licenses that limit the permitted purpose to educational purposes or personal learning purposes, may contain certain notices and limitations that make the work product and other data usable only in certain circumstances (e.g., only in the education fie -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -d). In addition, if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created, then such other work product or data may also be affected by these notices and limitations. -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Autodesk will have no responsibility or liability whatsoever if Licensee combines or links work product or other data created with such Licensed Materials with work product or other data otherwise created. In addition, Licensee will not }{\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 remove, }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 alter or o\hich\af1\dbch\af31505\loch\f1 bscure}{\rtlch\fcs1 \af1\afs18 -\ltrch\fcs0 \f1\fs18\cf1\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 any such notices or limitations.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitations of Liability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Limitation on Type and Amount of Liability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. IN NO EVENT WILL AUTODESK OR ITS SUPPLIERS HAVE ANY LIABILITY (DIRECTLY OR INDIRECTLY) FOR ANY INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL\hich\af1\dbch\af31505\loch\f1 - OR PUNITIVE DAMAGES; FOR LOSS OF PROFITS, USE, REVENUE, OR DATA; OR FOR BUSINESS INTERRUPTION (REGARDLESS OF THE LEGAL THEORY FOR SEEKING SUCH DAMAGES OR OTHER LIABILITY). IN ADDITION, THE LIABILITY OF AUTODESK AND ITS SUPPLIERS ARISING OUT OF OR RELATI -\hich\af1\dbch\af31505\loch\f1 N\hich\af1\dbch\af31505\loch\f1 -G TO ANY AUTODESK MATERIALS, RELATIONSHIP PROGRAMS OR SERVICES WILL NOT EXCEED THE AMOUNT PAID OR PAYABLE BY LICENSEE FOR SUCH AUTODESK MATERIALS, RELATIONSHIP PROGRAMS, OR SERVICES, RESPECTIVELY. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 7.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Application of and Basis for Limitations}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . THE LIMITA\hich\af1\dbch\af31505\loch\f1 -TIONS OF LIABILITY IN THIS SECTION 7 (LIMITATIONS OF LIABILITY) WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW TO ANY DAMAGES OR OTHER LIABILITY, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT ( -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -NCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE, EVEN IF AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LIABILITY AND REGARDLESS OF WHETHER THE LIMITED REMEDIES AVAILABLE HEREUNDER FAIL OF THEIR ESSENTIAL PURPOSE. ALSO, LICENSEE AGREES THAT -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 -HE LICENSE, RELATIONSHIP PROGRAMS AND SERVICES FEES AND OTHER FEES CHARGED BY AUTODESK AND PAID BY LICENSEE ARE BASED ON AND REFLECTIVE OF THE ALLOCATION OF RISK CONTEMPLATED BY THIS SECTION 7 (LIMITATIONS OF LIABILITY) AND THAT THE LIABILITY LIMITATIONS -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 N THIS SECTION 7 (LIMITATIONS OF LIABILITY) ARE AN ESSENTIAL ELEMENT OF THE AGREEMENT BETWEEN THE PARTIES. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Term and Termination}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Term; Termination or Suspension}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Each license under this Agreement, with respect to each specific set of Licensed Materials covered by this Agreement, will become effective as of the latest to occur of: (a) this Agreement becoming effective, (b) payment by Licensee of the applicable f -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -es, excluding licenses (such as evaluation licenses) where no fees are required, (c) delivery of the specific Licensed Materials, and (d) in the case of Autodesk Materials provided in connection with a Relationship Program, upon commencement of the applic -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 ble Relationship Program period or fixed term. Each of Autodesk or Licensee may terminate this Agreement, Licensee\hich\f1 \rquote \loch\f1 s license as to Licensed Materials, Licensee -\hich\f1 \rquote \loch\f1 s Relationship Program, and/or the provision of Services relating to the Licensed Materials if \hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he other party is in breach of this Agreement and fails to cure such breach within ten (10) days after written notice of the breach; however, if Licensee is in breach of Section 1 (License) or Section 2 (License Limitations; Prohibitions), Autodesk may te -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 minate this Agreement, Licensee\hich\f1 \rquote \loch\f1 s license as to Licensed Materials, Licensee\hich\f1 \rquote \loch\f1 -s Relationship Program, and/or the provision of Services relating to the Licensed Materials immediately upon written notice of the breach. In addition, Autodesk may, as an alter\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ative to termination, suspend Licensee\hich\f1 \rquote \loch\f1 s license as to the Licensed Materials, Licensee\hich\f1 \rquote \loch\f1 -s Relationship Program, the provision of Services relating to the Licensed Materials, and/or other Autodesk obligations or Licensee rights under this Agreement (or und\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -r other terms, if any, relating to materials associated with the Licensed Materials), if Licensee fails to make a payment to Autodesk or a Reseller or otherwise fails to comply with the provisions of this Agreement or other terms relating to any such lice -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -se, Relationship Program, Services, or other associated materials. Autodesk may also terminate this Agreement if Licensee becomes subject to bankruptcy proceedings, becomes insolvent, or makes an arrangement with Licensee\hich\f1 \rquote \loch\f1 -s creditors. This Agreement wil\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 terminate automatically without further notice or action by Autodesk if Licensee goes into liquidation. -\par \hich\af1\dbch\af31505\loch\f1 Licensee acknowledges and agrees that Autodesk may assign or sub-contract any of its rights or obligations under this Agreement. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 8.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Effect of Termin\hich\af1\dbch\af31505\loch\f1 ation of Agreement or License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Upon termination or expiration of this Agreement, the licenses granted hereunder will terminate. Upon termination or expiration of any license granted to Licensee, Licensee must cease all use of Autodesk Materials to which -\hich\af1\dbch\af31505\loch\f1 such license applies, any Relationship Program (including, without limitation, associated services), and any Services and Uninstall all copies of the Autodesk Materials. At Autodesk\hich\f1 \rquote \loch\f1 -s request, Licensee agrees to destroy or return to Autodesk or the Resel\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 -er from which they were acquired all Autodesk Materials. Autodesk reserves the right to require Licensee to show satisfactory proof that all copies of the Autodesk Materials have been Uninstalled and, if so requested by Autodesk, destroyed or returned to -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 Autodesk or the Reseller from which they were acquired. If Licensee\hich\f1 \rquote \loch\f1 s Relationship Program is terminated or expires, but this Agreement and Licensee\hich\f1 \rquote -\loch\f1 s license to the Licensed Materials remains in effect, any rights of Licensee based on the Relationship P\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ogram (including, without limitation, rights with respect to Previous Versions) will terminate, and (unless otherwise authorized by the Relationship Program Terms) Licensee must comply with the obligations of Section 1.2.1 (Effect of Upgrades) with respec -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 to (including the obligations to cease use of, Uninstall and destroy or return) all copies of such Previous Versions. -\par \hich\af1\dbch\af31505\loch\f1 8.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Survival}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Sections 1.3 (Additional Terms), 1.4 (Other Materials), 1.5 (Authorized Users), 1.6 (Third-Party Licensed Materials), 1.11\hich\af1\dbch\af31505\loch\f1 - (APIs), 2.1.1 (No License Granted;Unauthorized Activities), 2.1.4 (Effect of Unauthorized Use), 2.2 (Circumvention), 3 (All Rights Reserved), 4 (Privacy; Use of Information; Connectivity), 5.2 (Disclaimer), 6 (Warnings), 7 (Limitations of Liability), 8 ( -\hich\af1\dbch\af31505\loch\f1 T\hich\af1\dbch\af31505\loch\f1 erm and Termination), and 9 (General Provisions) and Exhibit A will survive any termination or expiration of this Agreement.}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 - -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\keepn\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.\tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 General Provisions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Notices}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Notices in connection with this Agreement by either party will be in writing and will be sent b -\hich\af1\dbch\af31505\loch\f1 -y electronic mail, postal service, or a delivery service (such as UPS, FedEx or DHL), except that Licensee may not provide notice to Autodesk of an Autodesk breach or provide notice of termination of this Agreement by electronic mail. Notices from Autode -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 -k to Licensee will be effective (a) in the case of notices by email, one (1) day after sending to the email address provided to Autodesk, or (b) in the case of notices by mail or delivery service, five (5) days after sending by regular post or delivery se -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 vice to the address provided to Autodesk. Licensee hereby consents to service of process being effected on Licensee by registered mail sent to the address set forth on Licensee\hich\f1 -\rquote \loch\f1 s Customer Information Form (or, if no Customer Information Form has been pro\hich\af1\dbch\af31505\loch\f1 v\hich\af1\dbch\af31505\loch\f1 ided, Licensee\hich\f1 \rquote \loch\f1 -s last address known by Autodesk) if so permitted by applicable law. Notices from Licensee to Autodesk will be effective (a) in the case of notices by email, one (1) day after sending to (and receipt by Autodesk at) CopyrightAgent@autodesk. -\hich\af1\dbch\af31505\loch\f1 -com, or (b) in the case of notices by mail or delivery service, when received by Autodesk at Autodesk, Inc., 111 McInnis Parkway, San Rafael, California 94903, USA, Attention: Copyright Agent. If Licensee participates in a Relationship Program, either pa -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ty may also provide notice as set forth in the Relationship Program Terms. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Governing Law and Jurisdiction}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. This Agreement will be governed by and construed in accordance with the laws of (a) Switzerland if Licensee acquired the Autodesk Materials in a\hich\af1\dbch\af31505\loch\f1 - country in Europe, Africa or the Middle East, (b) Singapore if Licensee acquired the Autodesk Materials in a country in Asia, Oceania or the Asia-Pacific region, or (c) the State of California (and, to the extent controlling, the federal laws of the Unit -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -d States) if Licensee acquired the Autodesk Materials in a country in the Americas (including the Caribbean) or any other country not specified in this Section 9.2 (Governing Law and Jurisdiction). The laws of such jurisdictions shall govern without refe -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ence to the conflicts-of-laws rules thereof. The UN Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transaction Act shall not apply to (and are excluded from the laws governing) this Agreement. In additio -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -, each party agrees that any claim, action or dispute arising under or relating to this Agreement will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the Superior Court of the State of California, County of Ma -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -in, or the United States District Court for the Northern District of California in San Francisco, except that if Licensee has acquired the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, any such claim or dispute will be brought -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -xclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Switzerland, or (b) a country in Asia, Oceania or the Asia-Pacific region, any such claim or dispute will be brought exclusively in (and the parties will be sub -\hich\af1\dbch\af31505\loch\f1 j\hich\af1\dbch\af31505\loch\f1 -ect to the exclusive jurisdiction of) the courts of Singapore. Nothing in the foregoing will prevent Autodesk from bringing an action for infringement of intellectual property rights in any country where such infringement is alleged to occur. -\par \hich\af1\dbch\af31505\loch\f1 9.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No Assig\hich\af1\dbch\af31505\loch\f1 nment; Insolvency}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 -. Licensee may not assign this Agreement or any rights hereunder (whether by purchase of stock or assets, merger, change of control, operation of law, or otherwise) without Autodesk's prior written consent, which may be withheld in Autode -\hich\af1\dbch\af31505\loch\f1 -sk's sole and absolute discretion, and any unauthorized purported assignment by Licensee will be void. In the context of any bankruptcy or similar proceeding, Licensee acknowledges and agrees this Agreement is and shall be treated as an executory contrac -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - that may not be assumed and/or assigned without Autodesk's prior written consent, which consent may be withheld in Autodesk's sole and absolute discretion whether pursuant to Section 365(c)(1) of Title 11 of the United States Code or any other applicable -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -law respecting the treatment of executory contracts within bankruptcy. Any assignment (regardless of how or on what basis the assignment may occur) will be conditioned on compliance with the following: at least thirty (30) days before assigning or agreein -\hich\af1\dbch\af31505\loch\f1 g\hich\af1\dbch\af31505\loch\f1 - to any assignment of rights under this Agreement (including transferring any copies of or right to use the Software), (a) Licensee must provide written notice to Autodesk, Uninstall all copies of the Software, and (without limitation of the generality of -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Section 9.7 (Audits)) allow Autodesk or its designee to inspect the records, systems and facilities of (or operated for) Licensee and its subsidiaries and affiliates to verify (by any means available to Autodesk, whether remotely or on premises) that all -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -opies of the Software have been Uninstalled, (b) the proposed assignee must agree to comply (and Licensee must ensure that the assignee will comply) with all of the obligations of this Agreement with respect to such Software, which agreement must provide -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 hat Autodesk is a third-party beneficiary of the assignee\hich\f1 \rquote \loch\f1 -s agreement, and the assignee must provide a copy of the agreement to Autodesk, and (c) Licensee and proposed assignee must comply with all other transfer procedures identified by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 9.4\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Auto\hich\af1\dbch\af31505\loch\f1 desk Subsidiaries and Affiliates}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that Autodesk may arrange to have its subsidiaries and affiliates engage in activities in connection with this Agreement, including, without limitation, delivering Autodesk Materials and p\hich\af1\dbch\af31505\loch\f1 -roviding Relationship Programs and Services, provided that Autodesk (and not such subsidiaries and affiliates) will remain subject to the obligations of Autodesk under this Agreement. Licensee also agrees that Autodesk\hich\f1 \rquote \loch\f1 -s subsidiaries and affiliates may e\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 force (including taking actions for breach of) this Agreement. -\par \hich\af1\dbch\af31505\loch\f1 9.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions to Prohibitions; Severability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.5.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions to Prohibitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. The prohibitions contained in this Agreement will not apply where and to the extent applicable law does not all\hich\af1\dbch\af31505\loch\f1 -ow such prohibitions to be enforced. Licensee may have other rights under the laws of the state or country within the Territory where the Licensed Materials are acquired, and this Agreement does not change Licensee\hich\f1 \rquote \loch\f1 -s rights under the laws of such state o\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - country if and to the extent the laws of such state or country do not permit this Agreement to do so. Licensee will bear the burden of proof to demonstrate that applicable law does not allow (i) the enforcement of such prohibitions; or (ii) this Agreeme -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 t to change particular rights in a state or country (and that Licensee has not exceeded the bounds of the unenforceable prohibitions and unchangeable rights). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.5.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Severability}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . If and to the extent any provision of this Agreement is held illegal, invalid -\hich\af1\dbch\af31505\loch\f1 -, or unenforceable in whole or in part under applicable law, such provision or such portion thereof will be ineffective as to the jurisdiction in which it is illegal, invalid, or unenforceable to the extent of its illegality, invalidity, or unenforceabili -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -y and will be deemed modified to the extent necessary to conform to applicable law so as to give the maximum effect to the intent of the parties. The illegality, invalidity, or unenforceability of such provision in that jurisdiction will not in any way a -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 fect the legality, validity, or enforceability of such provision or any other provision of this Agreement in any other jurisdiction. -\par \hich\af1\dbch\af31505\loch\f1 9.6\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 No Waiver}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. No term or provision of this Agreement will be considered waived, and no breach excused, unless such waiver\hich\af1\dbch\af31505\loch\f1 - is in writing signed on behalf of the party against which the waiver is asserted. No waiver (whether express or implied) will constitute consent to, waiver of, or excuse of any other, different, or subsequent breach. -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.7\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Audits}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Licensee agrees that Aut\hich\af1\dbch\af31505\loch\f1 -odesk has the right to require an audit (electronic or otherwise) of the Autodesk Materials and the Installation thereof and Access thereto. As part of any such audit, Autodesk or its authorized representative will have the right, on fifteen (15) days -\hich\f1 \rquote \loch\f1 p\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ior notice to Licensee, to inspect Licensee\hich\f1 \rquote \loch\f1 -s records, systems and facilities, including machine IDs, serial numbers and related information, to verify that the use of any and all Autodesk Materials is in conformance with this Agreement. Licensee will pr\hich\af1\dbch\af31505\loch\f1 o -\hich\af1\dbch\af31505\loch\f1 vide full cooperation to enable any such audit. If Autodesk determines that Licensee\hich\f1 \rquote \loch\f1 -s use is not in conformity with the Agreement, Licensee will obtain immediately and pay for valid license(s) to bring Licensee\hich\f1 \rquote \loch\f1 s use into compliance with this Agreement \hich\af1\dbch\af31505\loch\f1 a -\hich\af1\dbch\af31505\loch\f1 -nd other applicable terms and pay the reasonable costs of the audit. In addition to such payment rights, Autodesk reserves the right to seek any other remedies available at law or in equity, whether under this Agreement or otherwise. -\par \hich\af1\dbch\af31505\loch\f1 9.8\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Language}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . The En -\hich\af1\dbch\af31505\loch\f1 -glish language version of this Agreement is legally binding in case of any inconsistencies between the English version and any translations. If Licensee purchased the license for the Licensed Materials in Canada, Licensee agrees to the following: The par -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ies hereto confirm that it is their wish that this Agreement, as well as other documents relating hereto, including notices, have been and shall be written in the English language only. }{ -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\lang3084\langfe1041\langnp3084\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 Les parties ci-dessus confirment leur d\'e9\loch\f1 sir que cet accord ainsi que t\hich\af1\dbch\af31505\loch\f1 \hich\f1 -ous les documents, y compris tous avis qui s'y rattachent, soient r\'e9\loch\f1 \hich\f1 dig\'e9\loch\f1 s en langue anglaise. -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.9\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Construction}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . Ambiguities in this Agreement will not be construed against the drafter. -\par \hich\af1\dbch\af31505\loch\f1 9.10\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Force Majeure}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Autodesk will not be liable for any loss, damage \hich\af1\dbch\af31505\loch\f1 or penalty resulting from delays or failures in performance resulting from acts of God, supplier delay or other causes beyond Autodesk's reasonable control. -\par \hich\af1\dbch\af31505\loch\f1 9.11\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 U.S. Government Rights}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. For U.S. Government procurements, all Autodesk Materials are deemed t\hich\af1\dbch\af31505\loch\f1 \hich\f1 -o be commercial computer software as defined in FAR 12.212 and subject to restricted rights as defined in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights" and DFARS 227.7202, \'93\loch\f1 -Rights in Commercial Computer Software or Commercial Co\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 \hich\f1 puter Software Documentation\'94\loch\f1 -, as applicable, and any successor regulations. Any use, modification, reproduction release, performance, display or disclosure of the Autodesk Materials by the U.S. Government shall be solely in accordance with license rights -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 and restrictions described herein. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.12\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Export Control}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. Licensee acknowledges and agrees that the Autodesk Materials and Services (including any data submitted by Licensee in connection with a Service and any Licensee-specific output generated by a Servic\hich\af1\dbch\af31505\loch\f1 -e) are subject to compliance with United States and other applicable country export control and trade sanctions laws, rules and regulations, including, without limitation the regulations promulgated by the U.S. Department of Commerce and the U.S. Departme -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 t of the Treasury (collectively, "Export Control Laws"). Licensee represents, warrants and covenants that neither Licensee nor Licensee\hich\f1 \rquote \loch\f1 -s Personnel (i) are a citizen or resident of, or located within, a nation that is subject to U.S. trade sanctions or o\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -her significant trade restrictions (including, without limitation, Cuba, Iran, Sudan, Syria and North Korea), (ii) are identified on any of the U.S. government restricted party lists (including, without limitation, the U.S. Treasury Department's List of S -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 ecially Designated Nationals and Blocked Persons, the U.S. Department of Commerce\hich\f1 \rquote \loch\f1 s Denied Party List, Entity List and Unverified List and the U.S. Department of State -\hich\f1 \rquote \loch\f1 s proliferation-related lists), (iii) will, unless otherwise authorized under the Expor\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 - Control Laws, use Autodesk Materials or Services in any restricted end use, including, without limitation, design, analysis, simulation, estimation, testing, or other activities related to nuclear, chemical/biological weapons, rocket systems or unmanned -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -ir vehicles applications, or (iv) will use the Autodesk Materials or Services to disclose, transfer, download, export, or re-export, directly or indirectly, any Licensee-specific output generated by the Autodesk Materials or Services, Licensee content, th -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 -rd party content, or any other content or material to any country, entity, or party that is ineligible to receive such items under the Export Control Laws or other laws or regulations to which Licensee may be subject. Licensee understands that the requir -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ments and restrictions of the Export Control Laws as applicable to Licensee may vary depending on the Autodesk Materials or Services provided under this Agreement and may change over time. Licensee shall be solely responsible for (i) determining the prec -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 se controls applicable to the Autodesk Materials or Services, and (ii) complying with the Export Control Laws and monitoring any modifications to them. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 9.13\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Entire Agreement}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . This Agreement and any other terms referenced in this Agreement (such as the Rel -\hich\af1\dbch\af31505\loch\f1 -ationship Program Terms and the Services Terms) constitute the entire agreement between the parties (and merge and supersede any prior or contemporaneous agreements, discussions, communications, agreements, representations, warranties, advertising or unde -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -standings) with respect to the subject matter hereof, except that particular Autodesk Materials may be subject to additional or different terms associated with such Autodesk Materials. The parties acknowledge that, in entering into this Agreement, they a -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -e not relying on any agreements, discussions, communications, agreements, representations, warranties, advertising or understandings other than as expressly set forth in this Agreement. Licensee acknowledges and agrees that Autodesk may add to or change -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he Relationship Program Terms and the Services Terms from time to time, provided that Autodesk will provide written notice of the additions or changes (and may allow Licensee not to renew, may permit Licensee to terminate, and may offer other options with -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -respect to Relationship Programs or Services) before the additions or changes are effective as to Licensee. In the event of a conflict between this Agreement and any other terms of Autodesk (including, without limitation, the Relationship Program Terms, -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -he Services Terms, or such additional or different terms), the other terms will apply. Terms stipulated by Licensee in any communication by Licensee which purport to vary this Agreement or such other terms will be void and of no effect unless agreed in a -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -writing signed by an authorized representative of Autodesk. Any other modifications to this Agreement will also be invalid unless agreed to in a writing signed by an authorized representative of Autodesk. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\tx1080\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.\tab \tab }{\rtlch\fcs1 \ab\af1\afs18 -\ltrch\fcs0 \b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms.}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -This Section 10 (Additional Terms) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Maya; (ii) Autodesk Softimage; (iii) Autodesk 3ds Max; and (iv) Autodesk 3ds Max Design. -\par \hich\af1\dbch\af31505\loch\f1 10.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Rendering}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.1.1\tab With regar\hich\af1\dbch\af31505\loch\f1 -d to the Rendering Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the Rendering Software to be Installed or Accessed on a Networked Basis, solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs, specificall\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 - to render files created with the Software. However, if the Rendering Software is mental ray, and the Software is provided with a finite number of mental ray rendering nodes, then with regard to mental ray the foregoing is restricted to that number of me -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 tal ray rendering nodes. -\par \hich\af1\dbch\af31505\loch\f1 10.1.2\tab -With regard to the mental ray Batch Software (defined below), in addition to any other license granted in this Agreement, Licensee may allow the mental ray Batch Software to be Installed or Accessed on a Networked Basis, sol\hich\af1\dbch\af31505\loch\f1 -ely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs, and used (i) specifically to render files created with the Software; or (ii) by the Rendering Software specifically to render files created with the Software. The total number of CPUs used by the mental ray Batc -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 Software cannot exceed the number specified in the License Identification. -\par \hich\af1\dbch\af31505\loch\f1 10.1.3\tab With regard to the mental ray Standalone (defined below), Licensee may allow the mental ray Standalone to be Installed or Accessed, on a Networked Basis, solely on Computing\hich\af1\dbch\af31505\loch\f1 - Device(s) (defined below) solely for Licensee\hich\f1 \rquote \loch\f1 \hich\f1 -s Internal Business Needs specifically to render files created with the Software. With regard to mental ray Standalone, any reference in the Agreement to Computer is hereby deleted and \'93\loch\f1 \hich\f1 Computing Device(s)\'94\loch\f1 -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 ubstituted therefor. -\par \hich\af1\dbch\af31505\loch\f1 10.1.4\tab -With regard to the mental ray Satellite (defined below) for each of Autodesk 3ds Max, Autodesk Maya and Autodesk Softimage Software each mental ray Satellite executable(s) may run on one (1) or more host no more than four (4) cl -\hich\af1\dbch\af31505\loch\f1 \hich\f1 ient Computing Devices. With regard to mental ray Satellite, any reference in the Agreement to Computer is hereby deleted and \'93\loch\f1 \hich\f1 Computing Device(s)\'94\loch\f1 substituted therefor. -\par \hich\af1\dbch\af31505\loch\f1 10.1.5\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (1)\tab \hich\f1 \'93\loch\f1 \hich\f1 mental ray Standalone\'94 -\loch\f1 means the mental ray Standalone client\hich\af1\dbch\af31505\loch\f1 /server executable, including the mental ray standard shader libraries and utility programs, used specifically for rendering files created with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (2)\tab \hich\f1 \'93\loch\f1 \hich\f1 Rendering Software\'94\loch\f1 means a subset of the Software used specifically for rendering files crea\hich\af1\dbch\af31505\loch\f1 ted with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (3)\tab \hich\f1 \'93\loch\f1 \hich\f1 mental ray Batch Software\'94\loch\f1 - means a subset of the Software used: (i) specifically for rendering files created with the Software or (ii) by the Rendering Software specifically for rendering files created with the Software. -\par \hich\af1\dbch\af31505\loch\f1 (4)\tab \hich\f1 \'93\loch\f1 me\hich\af1\dbch\af31505\loch\f1 \hich\f1 ntal ray Satellite\'94\loch\f1 - means the mental ray Satellite server executable, including the mental ray standard shader libraries. mental ray Satellite is functionally equivalent to the mental ray Standalone server executable, used specifically for rendering file -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 created with the Software except it is not able to read and write files in the complete mi2 format. -\par \hich\af1\dbch\af31505\loch\f1 (5)\tab \hich\f1 \'93\loch\f1 \hich\f1 Computing Device\'94\loch\f1 means (i) a single electronic assembly with a maximum of: (a) four (4) CPUs (regardless of the number of cores in each CPU) each CPU -\hich\af1\dbch\af31505\loch\f1 - having one or more microprocessors, (b) four (4) discrete GPU-based computing boards; or (ii) a software implementation of the single electronic assembly, (a so-called 'virtual machine') described in (i) above, which single electronic assembly accepts i -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 formation in digital or similar form and manipulates the information for a specific result based on a sequence of instructions. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Exceptions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par \hich\af1\dbch\af31505\loch\f1 10.2.1\tab This Section 10.2 (Exceptions) applies to the Autodesk Media & Entertainment 3D entertainment Software\hich\af1\dbch\af31505\loch\f1 - that may be included within the Licensed Materials. Notwithstanding the provisions set forth in Section 2.1.1 (No License Granted; Unauthorized Activities) if: (i) the Redistributable Component (defined below) operates with the Software and with Licensee -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -Application; and (ii) the Redistributable Component is linked to Licensee Application; then Licensee may reproduce and distribute the Redistributable Component and Licensee Application together, subject to Licensee\hich\f1 \rquote \loch\f1 -s strict adherence to all of the followi\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 g terms and conditions: -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (a)\tab -the class identifications for any classes of objects Licensee created shall be different from and clearly distinguishable from the class identifications used by Autodesk; -\par \hich\af1\dbch\af31505\loch\f1 (b)\tab modified Sample (defined below) code and any resultin\hich\af1\dbch\af31505\loch\f1 g binary files in Licensee Application are identified as developed by Licensee, and not by Autodesk; -\par \hich\af1\dbch\af31505\loch\f1 (c)\tab Licensee Application has Licensee\hich\f1 \rquote \loch\f1 s copyright notice; -\par \hich\af1\dbch\af31505\loch\f1 (d)\tab any Modification (defined below), and resulting binary files, shall include the copyright not\hich\af1\dbch\af31505\loch\f1 -ices of Autodesk, Inc. as well as the following statement: "This software contains copyrighted code owned by Autodesk, Inc. but has been modified and is not endorsed by Autodesk, Inc." The language of the copyright notice and the statement shall be in th -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 same language as the Software language; -\par \hich\af1\dbch\af31505\loch\f1 (e)\tab distribution is strictly for not-for-profit purposes; -\par \hich\af1\dbch\af31505\loch\f1 (f)\tab distribution is either in binary form or text form; -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (g)\tab \hich\af1\dbch\af31505\loch\f1 -distribution is subject to a standard form of click-through end-user license agreement which license agreement, among other things: (1) protects Autodesk's interests consistent with the terms of this Agreement; and (2) prohibits the redistribution of the -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 Redistributable Component; -\par \hich\af1\dbch\af31505\loch\f1 (h)\tab -if the Redistributable Component operates with the Autodesk 3ds Max Software and/or Autodesk 3ds Max Design Software and with Licensee Application then prior to reproduction and distribution of the Redistributable Component a -\hich\af1\dbch\af31505\loch\f1 nd Licensee Application all MIDI files have been excluded from the Redistributable Component and Licensee Application; and -\par \hich\af1\dbch\af31505\loch\f1 (i)\tab Licensee agrees to defend, indemnify and hold harmless Autodesk and its subsidiaries and affiliates from and against any and all\hich\af1\dbch\af31505\loch\f1 - damages, costs, losses, liabilities, expenses and settlement amounts incurred in connection with any suit, claim or action by any third party alleging that the Redistributable Component and/or Licensee Application infringes or misappropriates any patent, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -copyrights, moral rights, trademark, trade secret and design rights, whether registered or unregistered, and including any application for registration of any of the foregoing and all rights or forms of protections of a similar nature having equivalent or -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 similar effect to any of these, which may subsist anywhere in the world, of such third party. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.2.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 . -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (1)\tab \hich\af1\dbch\af31505\loch\f1 -"Licensee Application" means, with regard to the Software, a Modification made by Licensee for designing, developing, and testing an application program made by Licensee. -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (2)\tab -"Modification" means any: (i) addition to the substance of a Sample or any additi\hich\af1\dbch\af31505\loch\f1 -on to the substance of the contents of a file containing a Sample; (ii) any deletion from the structure of a Sample, or any deletion from the structure of the contents of a file containing a Sample; and/or (iii) any new file that contains any part of a Sa -\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 ple; all of which, in Autodesk\hich\f1 \rquote \loch\f1 s sole discretion, ensures that the Sample is not the primary source of value. -\par \hich\af1\dbch\af31505\loch\f1 (3)\tab "Redistributable Component" means the Sample(s) and/or a Modification. -\par \hich\af1\dbch\af31505\loch\f1 (4)\tab "Sample(s)" means sample source code, or individual animations, sti\hich\af1\dbch\af31505\loch\f1 -ll images, and/or audio files contained in the Software, and located in the samples directory, the examples subdirectory, samples files or any similar type directory or file. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.3\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms; Certain Softimage Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . This Section 10.3 (Additiona -\hich\af1\dbch\af31505\loch\f1 l Terms; Certain Softimage Materials) applies to the following Software that may be included within the Licensed Materials: (i) Autodesk Softimage Mod Tool software; and (ii) Autodesk Softimage Mod Tool Pro software. -\par \hich\af1\dbch\af31505\loch\f1 10.3.1\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Softimage Mod Tool Soft\hich\af1\dbch\af31505\loch\f1 ware}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . In the event the Software is Autodesk Softimage Mod Tool Software then the applicable Exhibit B License Type is B. 4. (}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Educational Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 ). -\par \hich\af1\dbch\af31505\loch\f1 10.3.2\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Softimage Mod Tool Pro Software}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . In the event the Software is Auto\hich\af1\dbch\af31505\loch\f1 desk Softimage Mod Tool Pro Software, then the applicable Exhibit B License Type is B. 1. (Stand-alone (Individual) License), however, Licensee\hich\f1 -\rquote \loch\f1 s Internal Business Needs are limited to the design, development and testing of an application program designed\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 to function with the Software for Licensee\hich\f1 \rquote -\loch\f1 s internal use in producing multimedia content in conjunction with Licensee\hich\f1 \rquote \loch\f1 s valid XNA}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\super\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'ae}{\rtlch\fcs1 \af1\afs18 -\ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Creators Club Online Premium Membership. -\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.\tab \tab }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Additional Terms: Quantity Take Off}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -This Section 11 (Additional Terms; Quantity Take Off) applies to the Quantity Take Off Software that may be included within the Licensed Materials (\'93\loch\f1 \hich\f1 QTO Software\'94\loch\f1 ): -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.1\tab -The QTO Software is based in part on the work of the Independent JPEG Group. -\par \hich\af1\dbch\af31505\loch\f1 11.2\tab Port\hich\af1\dbch\af31505\loch\f1 \hich\f1 ions of the QTO Software include Crystal Reports Runtime Software (\'93\loch\f1 \hich\f1 Runtime Software\'94\loch\f1 \hich\f1 -) licensed from Business Objects Software Ltd (\'93\loch\f1 \hich\f1 Business Objects\'94\loch\f1 ). Licensee\hich\f1 \rquote \loch\f1 s use of the Runtime Software is subject to the following terms: -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx1080\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (a)\tab Licensee agrees not to al -\hich\af1\dbch\af31505\loch\f1 ter disassemble, decompile, translate, adapt or reverse-engineer the Runtime Software or the report file (.RPT) format; -\par \hich\af1\dbch\af31505\loch\f1 (b)\tab Licensee agrees not to distribute the Runtime Software with any general-purpose report writing, data analysis or report delivery pr\hich\af1\dbch\af31505\loch\f1 -oduct or any other product that performs the same or similar functions as Business Objects\hich\f1 \rquote \loch\f1 product offerings; -\par \hich\af1\dbch\af31505\loch\f1 (c)\tab Licensee agrees not to use the Runtime Software to create for distribution a product that is generally competitive with Business Objects' pr\hich\af1\dbch\af31505\loch\f1 oduct offerings; -\par \hich\af1\dbch\af31505\loch\f1 (d)\tab -Licensee agrees not to use the Runtime Software to create for distribution a product that converts the report file (.RPT) format to an alternative report file format used by any general-purpose report writing, data analysis or report -\hich\af1\dbch\af31505\loch\f1 delivery product that is not the property of Business Objects; and -\par \hich\af1\dbch\af31505\loch\f1 (e)\tab Licensee agrees not to use the Crystal Reports Software on a rental or timesharing basis or to operate a service bureau facility for the benefit of third-parties. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 11.3\tab BUSINESS OBJECTS\hich\af1\dbch\af31505\loch\f1 - AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. BUSINESS OBJECTS AND ITS SUPPLIERS SHALL HAVE NO L -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 ABILITY WHATSOEVER UNDER THIS AGREEMENT OR IN CONNECTION WITH THE CRYSTAL REPORTS SOFTWARE. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx360\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 12.\tab -Autodesk download technology may use the Akamai NetSession Interface, which may utilize a limited amount of your upload bandwidth and PC resources to connect yo\hich\af1\dbch\af31505\loch\f1 -u to a peered network and improve speed and reliability of Web content. The Akamai NetSession Interface is secure client-side networking technology that harnesses the power of your computer to deliver software and media available on the Akamai network. Yo -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 -r Akamai NetSession Interface works collectively with other Akamai NetSession Interfaces, along with thousands of Akamai edge servers, and runs as a networking service utilizing a limited amount of your computer's available resources. More information abo -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 t the Akamai NetSession Interface is available here: }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://www.akamai.com/client"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5200000068007400740070003a002f002f007700770077002e0061006b0061006d00610069002e0063006f006d002f0063006c00690065006e0074000000795881f43b1d7f48af2c825dc485276300000000a5ab0000} -}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.akamai.com/client}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . By clicking "Accept" and using the Autodesk download technology, you accept the Akamai License Agreement }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf17\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 (} -{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://www.ak\hich\af1\dbch\af31505\loch\f1 amai.com/eula"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4e00000068007400740070003a002f002f007700770077002e0061006b0061006d00610069002e0063006f006d002f00650075006c0061000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}} -}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.akamai.com/eula}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf17\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 )}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 in addition to the Autodesk License and Service Agreement.}{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 -\b\f1\fs18\kerning28\insrsid4142109 -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\kerning28\insrsid4142109 -\par \hich\af1\dbch\af31505\loch\f1 Exhibit A -\par }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\ul\kerning28\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Definitions -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Access}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 \hich\f1 or \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 Accessible}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, with respect to a computer program or other materials, (a) to use or execute the computer prog -\hich\af1\dbch\af31505\loch\f1 ram or other materials or (b) to use or otherwise benefit from the features or functionality of the computer program or other materials. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Agreement}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means this License and Services Agreement, including all exhibits and schedules thereto, as the License \hich\af1\dbch\af31505\loch\f1 and Services Agreement may be amended from time to time in accordance with the terms thereof. -\par \hich\af1\dbch\af31505\loch\f1 3.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Authorized User}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means any individual person who Installs or Accesses, or is authorized to Install or Access, any of the Licensed Materials. -\par \hich\af1\dbch\af31505\loch\f1 4.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 mea\hich\af1\dbch\af31505\loch\f1 \hich\f1 ns Autodesk, Inc., a Delaware corporation, except that if, Licensee acquires a license to the Autodesk Materials in (a) a country in Europe, Africa or the Middle East, \'93\loch\f1 \hich\f1 Autodesk\'94 -\loch\f1 \hich\f1 means Autodesk Development S\'e0\loch\f1 rl or (b) a country in Asia, Oceania or the Asi\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 \hich\f1 -Pacific region, \'93\loch\f1 \hich\f1 Autodesk\'94\loch\f1 - means Autodesk Asia Pte Ltd. -\par \hich\af1\dbch\af31505\loch\f1 5.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk License Manager}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the tool known as Autodesk License Manager or any future Autodesk tool for managing, monitoring or controlling Installation of or Access to Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 6.\tab \loch\af1\dbch\af31505\hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Autodesk Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means any materials distributed or made available by Autodesk, directly or indirectly, including Software, Supplemental Materials, User Documentation and Excluded Materials (whether or not licensed to Licensee). -\par \hich\af1\dbch\af31505\loch\f1 7.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Computer}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (i)\hich\af1\dbch\af31505\loch\f1 - a single electronic device, with one or more central processing units (CPUs), that accepts information in digital or similar form and manipulates the information for a specific result based on a sequence of instructions, or (ii) a software implementation -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 of such a device (or so-called virtual machine). -\par \hich\af1\dbch\af31505\loch\f1 8.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Customer Information Form}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a form completed by or on behalf of Licensee and submitted to Autodesk or a Reseller, directly or indirectly, in connection with Licensee\hich\f1 \rquote \loch\f1 s order for a license of Autodes -\hich\af1\dbch\af31505\loch\f1 k Materials, Relationship Program or Services. -\par \hich\af1\dbch\af31505\loch\f1 9.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a Licensee who is also (a) a Qualified Educational Institution, (b) Faculty, (c) Student or (d) Other Authorized Educational Licensee. An Educational Licensee may be required t -\hich\af1\dbch\af31505\loch\f1 o show proof of eligibility if requested by Autodesk. Autodesk, in its sole discretion, retains the right to determine the eligibility of an Educational Licensee. -\par \hich\af1\dbch\af31505\loch\f1 10. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) in the case of a Qualified Educational Institution, F\hich\af1\dbch\af31505\loch\f1 -aculty or Other Authorized Educational Licensees, purposes directly related to learning, teaching, training, research and development that are part of the instructional functions performed by a Qualified Educational Institution or Other Authorized Educati -\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 \hich\f1 nal Licensee and (ii) in the case of Students, purposes related to learning, training, research or development. \'93\loch\f1 \hich\f1 Educational Purposes\'94\loch\f1 - does not include commercial, professional or any other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 11.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Evaluation Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means purposes of \hich\af1\dbch\af31505\loch\f1 -evaluation and demonstration of the capabilities of the Software or Supplemental Materials but excludes competitive analysis and any commercial, professional, or other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 12.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Excluded Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\hich\af1\dbch\af31505\loch\f1 - means any materials, including Software, Supplemental Materials or User Documentation (and including, without limitation, any computer programs, modules or components of a computer program, functionality or features of a computer program, explanatory pri -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ted or electronic materials, content or other materials, if any), that may be provided or become available to Licensee, by any means, or that are on any media delivered to Licensee, for which (a) Licensee does not have a License Identification, or (b) Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee has not paid (and continued to pay) the applicable fees. Licensee acknowledges that Excluded Materials are included on media or via download for convenience of the licensing mechanism used by Autodesk, and inclusion does not in any way authorize, ex -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 ressly or impliedly, a right to use such Excluded Materials. -\par \hich\af1\dbch\af31505\loch\f1 13.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Faculty}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means an individual person who is an employee or independent contractor working for a Qualified Educational Institution. -\par \hich\af1\dbch\af31505\loch\f1 14.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Install}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 \hich\f1 and \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Installation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 - means, with respect to a co\hich\af1\dbch\af31505\loch\f1 mputer program or other materials, to copy the program or other materials onto a hard disk or other storage medium. -\par \hich\af1\dbch\af31505\loch\f1 15.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Identification}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means one or more designations by Autodesk that set forth the License Type (among other things) for Licensee\hich\f1 \rquote \loch\f1 s \hich\af1\dbch\af31505\loch\f1 \hich\f1 -license of the Licensed Materials. The License Identification may be (a) located (i) in the Licensed Materials (e.g., in an \'93\loch\f1 \hich\f1 About\'94\loch\f1 - box, license information dialog box, or text file of Software), (ii) on or with Autodesk packaging, or (iii) in a written \hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -onfirmation or other notice issued to Licensee by Autodesk and transmitted via email, facsimile, physical delivery, or otherwise, or (b) obtained from Autodesk on request. For clarification, License Identification does not include a designation, confirma -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 ion, packaging or other document provided by a Reseller or other third party. -\par \hich\af1\dbch\af31505\loch\f1 16.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Type}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a type of license specified by Autodesk for Autodesk Materials, including the types set forth in Exhibit B. License Type includes the terms specified by\hich\af1\dbch\af31505\loch\f1 - Autodesk for each type of license, including the applicable terms set forth in Exhibit B. License Type is determined by Autodesk and may be specified in the applicable License Identification. -\par \hich\af1\dbch\af31505\loch\f1 17.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensed Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means Software, Supplemental Material\hich\af1\dbch\af31505\loch\f1 \hich\f1 s and User Documentation (a) downloaded by clicking on the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism associated with this Agreement or by otherwise indicating assent to this Agreement, (b) delivered prepackaged with this Agreement, or (c) otherwise a\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -companied by this Agreement, provided that (i) in the case of Software, the Software is identified in an applicable License Identification, and (ii) Licensee has paid (and continues to pay) the applicable fees. Licensed Materials also includes Supplement -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -l Materials and User Documentation that Autodesk provides or makes available to Licensee for use with Software licensed under this Agreement if there are no separate terms for such materials specified by Autodesk. Licensed Materials includes, without lim -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 tation, any error corrections, patches, service packs, updates and upgrades to, and new versions of, the Licensed Materials that Autodesk provides or makes available to Licensee under Licensee -\hich\f1 \rquote \loch\f1 s then-current license. Licensee acknowledges that availabili\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -y of Upgrades and new versions may be subject to additional fees and the Relationship Program Terms. In addition, Licensed Materials includes, without limitation, any Previous Versions and other Autodesk Materials that Licensee receives or retains pursua -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -t to the Relationship Program Terms, but only for so long as and to the extent expressly authorized by the Relationship Program Terms. Notwithstanding the foregoing (or any other provision of this Agreement), Licensed Materials in all cases excludes Excl -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 ded Materials. -\par \hich\af1\dbch\af31505\loch\f1 18.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (a) the company or other legal entity on behalf of which Autodesk Materials are acquired, if the Autodesk Materials are acquired on behalf of such an entity (e.g., by an employee, independent contractor, or other authori -\hich\af1\dbch\af31505\loch\f1 \hich\f1 zed representative), or (b) if there is no such entity, the individual who accepts this Agreement (e.g., by selecting the \'93\loch\f1 \hich\f1 I accept\'94\loch\f1 - button or other button or mechanism associated with this Agreement or otherwise indicating assent to this Agreement, or by\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -installing, downloading, accessing, or otherwise copying or using all or any portion of the Autodesk Materials). For clarification, \'93\loch\f1 \hich\f1 Licensee\'94\loch\f1 - refers only to a single, specifically identified legal entity or individual, and does not include any subsidiar\hich\af1\dbch\af31505\loch\f1 y\hich\af1\dbch\af31505\loch\f1 - or affiliate of any such legal entity or individual or any other related person. -\par \hich\af1\dbch\af31505\loch\f1 19.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, in reference to Licensed Materials, the use of such Licensed Materials (and the features and functionality thereof) by License\hich\af1\dbch\af31505\loch\f1 e\hich\f1 \rquote -\loch\f1 s own Personnel to meet the internal requirements of Licensee\hich\f1 \rquote \loch\f1 -s business in the ordinary course of such business, provided that Internal Business Needs will in no event include providing or making available such Licensed Materials (or the features or fu\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 -ctionality thereof) to any third party. -\par \hich\af1\dbch\af31505\loch\f1 20.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Networked Basis}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means a computing environment that includes a Computer acting as a file server which allows the Licensed Materials Installed on such Computer to be uploaded and Installed to, and operated, viewe\hich\af1\dbch\af31505\loch\f1 -d or otherwise Accessed from, other Computers through a local area network connection or through a VPN connection subject to compliance with the VPN Requirements. -\par \hich\af1\dbch\af31505\loch\f1 21.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Open Source}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means any software code that: (a) contains, or is derived in any manner, (i\hich\af1\dbch\af31505\loch\f1 -n whole or in part), from any software that is distributed as free software, open source software, shareware (e.g., Linux), or similar licensing or distribution models; and (b) is subject to any agreement with terms requiring that using, copying, modifyin -\hich\af1\dbch\af31505\loch\f1 g\hich\af1\dbch\af31505\loch\f1 - or redistributing the software requires that such software and/or the derivative works of such software be: (i) disclosed and/or distributed in source code form; (ii) be licensed for the purpose of making derivative works; and/or (iii) be redistributed f -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 ee of charge; including, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models similar to, GNU -\hich\f1 \rquote \loch\f1 s General Public License (GPL) or Lesser/Library GPL (LGPL). -\par \hich\af1\dbch\af31505\loch\f1 22.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 O\hich\af1\dbch\af31505\loch\f1 ther Authorized Educational Licensee}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means a Licensee described at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://www.autodesk.com/educationterms"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e006100750074006f006400650073006b002e0063006f006d002f0065006400750063006100740069006f006e007400650072006d0073000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.autodesk.com/educationterms}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 23.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Permitted Number}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means a maximum number\hich\af1\dbch\af31505\loch\f1 - (e.g., number of authorized users, number of concurrent users, number of computers, sessions, etc.) applicable to a license of the Licensed Materials and to the License Type associated with such license. Such number is determined by Autodesk and may be -\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 pecified in the applicable License Identification. -\par \hich\af1\dbch\af31505\loch\f1 24.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personal Learning Purposes}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) personal learning as a Student or (ii) in the case of a non-Student, personal learning, excluding (a) in-person or online classroom learning in any degree-grantin\hich\af1\dbch\af31505\loch\f1 -g or certificate granting program, and (b) learning related to any commercial, professional or other for-profit purposes. -\par \hich\af1\dbch\af31505\loch\f1 25.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personnel}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means (a) Licensee\hich\f1 \rquote \loch\f1 s individual employees and (b) individual persons who are independent contractors working on Licens\hich\af1\dbch\af31505\loch\f1 ee\hich\f1 \rquote \loch\f1 -s premises and who Install and Access the Licensed Materials only on and through Computers owned or leased and controlled by Licensee. -\par \hich\af1\dbch\af31505\loch\f1 26.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Previous Versions}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means, as to any then-current release of Licensed Materials, a prior release of the Licensed M\hich\af1\dbch\af31505\loch\f1 -aterials as to which such then-current release is a successor or substitute (as determined by Autodesk). -\par \hich\af1\dbch\af31505\loch\f1 27.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Qualified Educational Institution}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means an educational institution which has been accredited by an authorized governmental agency within its appl\hich\af1\dbch\af31505\loch\f1 -icable local, state, provincial, federal, or national government and has the primary purpose of teaching its enrolled students. Examples, without limitation, of entities that are included and excluded from this definition are described at } -{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http:/\hich\af1\dbch\af31505\loch\f1 /www.autodesk.com/educationterms"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 -{\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e006100750074006f006400650073006b002e0063006f006d002f0065006400750063006100740069006f006e007400650072006d0073000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://www.autodesk.com/educationterms}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 . -\par \hich\af1\dbch\af31505\loch\f1 28.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relationship Program}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) Subscription or (ii) a rental program offered generally by Autodesk pursuant to which Autodesk makes available Licensed Materials. -\par \hich\af1\dbch\af31505\loch\f1 29. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Relat\hich\af1\dbch\af31505\loch\f1 ionship Program Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the terms for a Relationship Program set forth at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/support-terms-and-conditions"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90bc400000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f0073007500700070006f00720074002d007400650072006d0073002d0061006e0064002d0063006f006e0064006900740069006f006e0073000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 -\af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/support-terms-and-condi\hich\af1\dbch\af31505\loch\f1 tions}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { -\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 or any successor or supplemental web page of Autodesk (the URL for which may be obtained on Autodesk\hich\f1 \rquote \loch\f1 s website or on request). -\par \hich\af1\dbch\af31505\loch\f1 30. \tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Reseller}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a distributor or reseller authorized directly or indirectly by Autodesk to distribute authentic Au\hich\af1\dbch\af31505\loch\f1 todesk Materials to Licensee. -\par \hich\af1\dbch\af31505\loch\f1 31.\tab \hich\f1 \'94}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means services (including the results of services) provided or made available by Autodesk, including, without limitation, support services, storage, simulation and testing services, training and other benefits, \hich\af1\dbch\af31505\loch\f1 -but excluding services provided or made available as part of a Relationship Program. -\par \hich\af1\dbch\af31505\loch\f1 32.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Services Terms}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 means the terms for Services set forth at a location where a user may order or register for, or that is displayed in connection with ordering or regis\hich\af1\dbch\af31505\loch\f1 -tering for, such Services (e.g., a web page) or, if there are no such terms, at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-service"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90bac00000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f007400650072006d0073002d006f0066002d0073006500720076006900630065000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\cf2\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-service}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 (if the Servic\hich\af1\dbch\af31505\loch\f1 es are web services) or }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -HYPERLINK "http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-use"}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid5905377 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90ba400000068007400740070003a002f002f007500730061002e006100750074006f006400650073006b002e0063006f006d002f0063006f006d00700061006e0079002f006c006500670061006c002d006e006f007400 -69006300650073002d00740072006100640065006d00610072006b0073002f007400650072006d0073002d006f0066002d007500730065000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\cf2\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 http://usa.autodesk.com/company/legal-notices-trademarks/terms-of-use}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 - for all other Services) or any successor or supplemental web pages of Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 33.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Software}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 \hich\f1 means the Autodesk FBX SDK computer program, or a module or component of a computer program, including the software development kit (\'93\loch\f1 \hich\f1 SDK\'94\loch\f1 \hich\f1 ) distributed or made available by Autodesk. The term -\'93\loch\f1 \hich\f1 Software\'94\hich\af1\dbch\af31505\loch\f1 may also refer to functions and features of a computer program. -\par \hich\af1\dbch\af31505\loch\f1 34.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Stand-alone Basis}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means (i) the Licensed Materials are Installed on a single Computer and (ii) the Licensed Materials cannot be Installed on, or operated, viewed or otherwise Accessed f\hich\af1\dbch\af31505\loch\f1 -rom or through any other Computer (e.g., through a network connection of any kind). -\par \hich\af1\dbch\af31505\loch\f1 35.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Student}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means an individual person enrolled as a student at a Qualified Educational Institution. -\par \hich\af1\dbch\af31505\loch\f1 36.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Subscription}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 is the program offered generally by Autodesk unde\hich\af1\dbch\af31505\loch\f1 -r which Autodesk provides (among other things) updates and upgrades to, new versions of, and certain other support, services and training relating to Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 37.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Supplemental Materials}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means materials, other than Software and related User Doc\hich\af1\dbch\af31505\loch\f1 -umentation, that are distributed or made available by Autodesk for use with Software. Supplemental Materials include, without limitation, (a) content, such as sample drawings and designs, modules for drawings and designs, and representations of elements -\hich\af1\dbch\af31505\loch\f1 u\hich\af1\dbch\af31505\loch\f1 -sed in drawings and designs (e.g., buildings, parts of buildings, fixtures, furniture, bridges, roads, characters, backgrounds, settings and animations), (b) background materials, such as building codes and descriptions of building practices, (c) tools fo -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 - rendering the output of the Software, such as fonts, and (d) Development Materials, application programming interfaces (APIs), and other similar developer materials (including API Information). -\par \hich\af1\dbch\af31505\loch\f1 37\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Territory}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 (a) means the country, countries or jurisdicti\hich\af1\dbch\af31505\loch\f1 -on(s) specified in the License Identification, or (b) if there is no such License Identification, or no country or jurisdiction is specified in the License Identification, means the country in which Licensee acquires a license to the Autodesk Materials. -\hich\af1\dbch\af31505\loch\f1 I\hich\af1\dbch\af31505\loch\f1 -f the License Identification specifies, or Licensee acquires the Autodesk Materials in, a member country of the European Union or the European Free Trade Association, Territory means all the countries of the European Union and the European Free Trade Asso -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 iation. -\par \hich\af1\dbch\af31505\loch\f1 38.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Uninstall}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means to remove or disable a copy of Autodesk Materials from a hard drive or other storage medium through any means or otherwise to destroy or make unusable a copy of the Autodesk Materials. -\par \hich\af1\dbch\af31505\loch\f1 39.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Upgrade}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 \'94 -\loch\f1 means a full commercial ver\hich\af1\dbch\af31505\loch\f1 -sion of Licensed Materials (a) which is a successor to or substitute for a qualifying prior release (and may incorporate error corrections, patches, service packs and updates and upgrades to, and may enhance or add to the features or functionality of, the -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -prior release) or different release of Licensed Materials, (b) is provided to a Licensee who has previously licensed the applicable qualifying prior or different release from Autodesk and (c) for which Autodesk generally charges a separate fee or makes av -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -ilable solely to customers under a Relationship Program. Whether Autodesk Materials are an Upgrade may be specified in the applicable License Identification. Whether Autodesk Materials are an Upgrade and whether Licensee has met the qualifications to li -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ense particular Autodesk Materials as an Upgrade are determined by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 40.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 User Documentation}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 means the explanatory or instructional materials for Software or Supplemental Materials (including materials regarding use of the Software or Supplemental\hich\af1\dbch\af31505\loch\f1 - Materials), whether in printed or electronic form, that Autodesk or a Reseller incorporates in the Software or Supplemental Materials (or the packaging for the Software or Supplemental Materials) or otherwise provides to its customers when or after such -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 ustomers license, acquire or Install the Software or Supplemental Materials. -\par \hich\af1\dbch\af31505\loch\f1 41.\tab \hich\f1 \'93}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 VPN Requirements}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \loch\af1\dbch\af31505\hich\f1 -\'94\loch\f1 \hich\f1 means (i) the Licensed Materials are Accessed through a secure virtual private network (\'93\loch\f1 \hich\f1 VPN\'94\loch\f1 ); (ii) the maximum number of concurrent users Accessing the Li\hich\af1\dbch\af31505\loch\f1 -censed Materials (on a Networked Basis or through the VPN) does not exceed the Permitted Number at any time; (iii) all copies of the Licensed Materials are Installed and Accessed exclusively in conjunction with the technical protection device (if any) sup -\hich\af1\dbch\af31505\loch\f1 p\hich\af1\dbch\af31505\loch\f1 lied with the Licensed Materials; and (iv) the VPN connection is secure and complies with current industry standard encryption and protection mechanisms. -\par }\pard \ltrpar\qc \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\insrsid4142109 -\par -\par \hich\af1\dbch\af31505\loch\f1 Exhibit B -\par }{\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \b\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 License Types -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 1.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -. If the License Identification identifies the License Type as a \'93\loch\f1 \hich\f1 Stand-alone License\'94\loch\f1 \hich\f1 or as an \'93\loch\f1 -Individual License," Licensee may Install a single primary copy of the specific release of the Licensed Materials designated in the applicable License Identi\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 -ication on one (1) Computer, on a Stand-alone Basis, and permit Access to such primary copy of the Licensed Materials solely by Licensee\hich\f1 \rquote \loch\f1 s Personnel, and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs. Licensee may also Install a single additional copy of\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -such Licensed Materials on one (1) additional Computer, on a Stand-alone Basis; provided that (i) such additional copy of the Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an ind -\hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 vidual) or an employee of Licensee; (iii) such person Accesses the additional copy solely to perform work while away from that person\hich\f1 \rquote \loch\f1 -s usual work location and solely for Licensee\hich\f1 \rquote \loch\f1 s Internal Business Needs; and (iv) the primary and additional copies are n\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -t Accessed at the same time. Stand-alone (Individual) License is for a perpetual term, except as otherwise provided in this Agreement. -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 2.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Multi-seat Stand-alone License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 . If the License Identification identifies the License Type as a -\'93\loch\f1 Multi-seat Stand-alo\hich\af1\dbch\af31505\loch\f1 -ne License," Licensee may Install primary copies of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, on a Stand-alone Basis, and permit Access to such copies of -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 he Licensed Materials solely by Licensee\hich\f1 \rquote \loch\f1 s Personnel, and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs. Licensee may also Install additional copies of such Licensed Materials on additional Computers in an amount up to the Permitted Number of Computers, \hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -n a Stand-alone Basis; provided that (i) each additional copy of such Licensed Materials is Accessed solely by the same person as the primary copy; (ii) such person is Licensee (if Licensee is an individual) or an employee of Licensee; (iii) such person A -\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 cesses the additional copy solely to perform work while away from that person\hich\f1 \rquote \loch\f1 s usual work location and solely for Licensee\hich\f1 \rquote \loch\f1 -s Internal Business Needs; and (iv) the primary and additional copies are not Accessed at the same time. Multi-seat Stand-alone Li\hich\af1\dbch\af31505\loch\f1 c\hich\af1\dbch\af31505\loch\f1 -ense is for a perpetual term, except as otherwise provided in this Agreement. -\par \hich\af1\dbch\af31505\loch\f1 3.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 \hich\f1 -. If the License Identification identifies the License Type for the Licensed Materials as a \'93\loch\f1 Network License," Licensee may Install copies of the specific rele\hich\af1\dbch\af31505\loch\f1 -ase of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials on multiple Computers, on a Networked Basis, solely by Licensee\hich\f1 \rquote \loch\f1 -s Personnel, solely for Licensee\hich\f1 \rquote \loch\f1 s Internal Busine\hich\af1\dbch\af31505\loch\f1 s\hich\af1\dbch\af31505\loch\f1 -s Needs, only so long as the maximum number of concurrent Authorized Users does not exceed the Permitted Number of Authorized Users or other limits imposed by the Autodesk License Manager (if any). Licensee may, at Licensee\hich\f1 \rquote \loch\f1 -s option, also Install the Lic\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsed Materials on a Hot Backup Server; provided that Licensee may Access the Licensed Materials on the Hot Backup Server only during the time period when, and solely for as long as, the primary Installed copy of the Licensed Materials is inoperable and on -\hich\af1\dbch\af31505\loch\f1 l\hich\af1\dbch\af31505\loch\f1 \hich\f1 y subject to the same terms and conditions as are applicable to the primary Installed copy. A \'93\loch\f1 \hich\f1 Hot Backup Server\'94\loch\f1 - means a file server Computer that has a second copy of the Software and Supplemental Materials Installed but that is not permitted to be Acc\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -ssible except when the primary Installed copy of the Software and Supplemental Materials are inoperable and only for so long as such primary Installed copy is inoperable. A Network License is for a perpetual term, except as otherwise provided in this Agr -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 ement. -\par \hich\af1\dbch\af31505\loch\f1 4.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Stand-alone (Individual) License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 .\~ -\hich\af1\dbch\af31505\loch\f1 \hich\f1 If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Stand-alone (Individual) License,\'94\loch\f1 - an Educational Licensee may Install a copy of the specific release of the Licensed Mate\hich\af1\dbch\af31505\loch\f1 -rials designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by a -\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 Educational Licensee solely for Educational Purposes.\~ - An Educational Stand-alone (Individual) License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Instal\hich\af1\dbch\af31505\loch\f1 l -\hich\af1\dbch\af31505\loch\f1 ation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 5.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Multi-seat Stand-alone License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 \hich\f1 . If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Multi-seat Stand-alone License,\'94\loch\f1 an Educational Licensee may Install copie -\hich\af1\dbch\af31505\loch\f1 -s of the specific release of the Licensed Materials designated in the applicable License Identification on up to the Permitted Number of Computers, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes. An Educational Multi-seat Stand-alone License is for a fixed term specified in the applicable License Identification or, if no suc -\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 term is specified, the term is thirty-six (36) months from Installation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 6.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Educational Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If the License Identification identifies the License Type as an \'93\loch\f1 \hich\f1 Educational Network License,\'94\loch\f1 an E\hich\af1\dbch\af31505\loch\f1 -ducational Licensee may Install copies of the specific release of the Licensed Materials designated in the applicable License Identification on a single file server Computer, subject to certain functional limitations described in Section 6.3 (Affected Dat -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -), and Access such Licensed Materials on multiple Computers on a Networked Basis, and permit Access to such copies of the Licensed Materials solely by Educational Licensees solely for Educational Purposes, only so long as the maximum number of concurrent -\hich\af1\dbch\af31505\loch\f1 A\hich\af1\dbch\af31505\loch\f1 -uthorized Users does not exceed the Permitted Number of Authorized Users. An Educational Network License is for a fixed term specified in the applicable License Identification or, if no such term is specified, the term is thirty-six (36) months from Inst -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 llation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 7.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Personal Learning License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If the License Identification identifies the License Type as a \'93\loch\f1 \hich\f1 Personal Learning License\'94\loch\f1 , Licensee may Install a copy of the specific release of the Licensed Materi\hich\af1\dbch\af31505\loch\f1 -als designated in the applicable License Identification on one (1) Computer, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials solely by Lic -\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 -nsee, as an individual, solely for Personal Learning Purposes and only at and from locations that are not labs or classrooms and are not operated for commercial, professional or for-profit purposes. A Personal Learning License Stand-alone is for a fixed -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 erm specified in the applicable License Identification. If no such term is specified, the term is thirteen (13) months from Installation. -\par \hich\af1\dbch\af31505\loch\f1 8.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Evaluation/Demonstration/Trial}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -\hich\f1 . If Autodesk identifies the License Type as a \'93\loch\f1 \hich\f1 demonstration\'94\loch\f1 \hich\f1 , \'93\loch\f1 \hich\f1 evaluation\'94\loch\f1 \hich\f1 , \'93\loch\f1 tria\hich\af1\dbch\af31505\loch\f1 \hich\f1 l,\'94\loch\f1 \hich\f1 -\'93\loch\f1 \hich\f1 not for resale\'94\loch\f1 \hich\f1 or \'93\loch\f1 \hich\f1 NFR\'94\loch\f1 \hich\f1 version (each, an \'93\loch\f1 \hich\f1 Evaluation License\'94\loch\f1 -) in the applicable License Identification, Licensee may Install a copy of the specific release of the Licensed Materials designated in the applicable License Identification on one (1) Co\hich\af1\dbch\af31505\loch\f1 m\hich\af1\dbch\af31505\loch\f1 -puter, subject to certain functional limitations described in Section 6.3 (Affected Data), on a Stand-alone Basis, and permit Access to such copy of the Licensed Materials, solely by Licensee\hich\f1 \rquote \loch\f1 -s Personnel, solely for Evaluation Purposes, only so long as th\hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 maximum number of concurrent Authorized Users does not exceed one (1), and only from Licensee\hich\f1 \rquote \loch\f1 -s work location. An Evaluation License is for a fixed term specified in the applicable License Identification, or if no such term is specified, the term is thi\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -ty (30) days from Installation or as otherwise authorized in writing by Autodesk. -\par \hich\af1\dbch\af31505\loch\f1 9.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Fixed Term/Limited Duration/Rental License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\hich\af1\dbch\af31505\loch\f1 . If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration \hich\af1\dbch\af31505\loch\f1 or as having a fixed term or as a rental license, Licensee -\hich\f1 \rquote \loch\f1 s right to Install and Access the Licensed Materials will continue only for the period, duration or term specified in the License Identification. Such Installation and Access will be in accordanc\hich\af1\dbch\af31505\loch\f1 e -\hich\af1\dbch\af31505\loch\f1 - with and subject to the applicable License Type and Permitted Number. If Autodesk identifies a license in the applicable License Identification as being for a specified period or limited duration, or as having a fixed term, or a rental license but no pe -\hich\af1\dbch\af31505\loch\f1 r\hich\af1\dbch\af31505\loch\f1 -iod, duration or term is specified in the License Identification, the period, duration or term will be ninety (90) days from Installation (or the period specified in Sections B.6 (Educational Network License), B.7 (Personal Learning License) or B.8 (Evalu -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 tion/Demonstration/Trial) of this Exhibit B with respect to the licenses described in those sections). -\par }\pard \ltrpar\ql \li0\ri0\sa120\sl276\slmult1\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 10.\tab }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 -\f1\fs18\ul\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 Session Specific Network License}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 \hich\af1\dbch\af31505\loch\f1 -. If the License Identification identifies the License Type as a "Session Specific Network License", Licensee may in\hich\af1\dbch\af31505\loch\f1 -stall one (1) copy of the specific release of the Licensed Materials designated in the applicable License Identification on a Computer and permit Access to such Licensed Materials from multiple Computers through a Supported Virtualization Application, on -\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 - Networked Basis, solely by Licensee's Personnel, solely for Licensee's Internal Business needs, only so long as the maximum number of concurrent Sessions does not exceed the Permitted Number or other limits imposed by the Autodesk License Manager tool (i -\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 \hich\f1 any). For purposes of this Session Specific Network License, (a) a \'93\loch\f1 \hich\f1 Session\'94\loch\f1 \hich\f1 - is defined as a single interactive information exchange between two Computers that are connected through a Supported Virtualization Application, and (b) \'93\loch\f1 Supported Virtualizati\hich\af1\dbch\af31505\loch\f1 o\hich\af1\dbch\af31505\loch\f1 -\hich\f1 n Application(s)\'94\loch\f1 - are those third party virtualization applications or methods that are specifically identified as supported by Autodesk in the User Documentation for the Licensed Materials. With respect to the applicable Supported Virtualization Applica -\hich\af1\dbch\af31505\loch\f1 t\hich\af1\dbch\af31505\loch\f1 -ion, Licensee agrees to activate any available session tracking mechanism, not disable any such session tracking mechanism and to retain all records generated by such session tracking mechanism. A Session Specific Network License is for a perpetual term, -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 except as otherwise provided in this Agreement. -\par -\par -\par -\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\insrsid4142109 -\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a -9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad -5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 -b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 -0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 -a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f -c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 -0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 -a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 -6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b -4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b -4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100aa5225dfc60600008b1a0000160000007468656d652f7468656d652f -7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb -43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f -f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44 -f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14 -7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917dda7 -dfaab7dafe02ab81d2438bef76b55d2e1a78cd7f798373d3973f03af40a97f6f03dfed06104503af4029dedfc07b5eb51478065e81527c65035f2d34db5ed5c0 -2b5048497cb8812ef89572b05c6d061933ba6785d77daf5b2d2d9caf50500d5975c929c62c16db6a2d42f758d2058004522448ec88f9148fd110aa3840940c12 -e2ec93490885374531e3305c2815ba8532fc973f4f1da988a01d8c346bc90b98f08d21c9c7e1c3844c45c3fd18bcba1ae4cdcb1fdfbc7cee9c3c7a71f2e89793 -c78f4f1efd9c3a32acf6503cd1ad5e7fffc5df4f3f75fe7afeddeb275fd9f15cc7fffed367bffdfaa51d082b5d85e0d5d7cffe78f1ecd5379ffff9c3130bbc99 -a0810eef930873e73a3e766eb10816a6426032c783e4ed2cfa2122ba45339e701423398bc57f478406fafa1c5164c1b5b019c13b09488c0d787576cf20dc0b93 -9920168fd7c2c8001e30465b2cb146e19a9c4b0b737f164fec9327331d770ba123dbdc018a8dfc766653d05662731984d8a07993a258a0098eb170e4357688b1 -6575770931e27a408609e36c2c9cbbc46921620d499f0c8c6a5a19ed9108f232b711847c1bb139b8e3b418b5adba8d8f4c24dc15885ac8f73135c27815cd048a -6c2efb28a27ac0f791086d247bf364a8e33a5c40a6279832a733c29cdb6c6e24b05e2de9d7405eec693fa0f3c84426821cda7cee23c674649b1d06218aa6366c -8fc4a18efd881f428922e7261336f80133ef10790e7940f1d674df21d848f7e96a701b9455a7b42a107965965872791533a37e7b733a4658490d08bfa1e71189 -4f15f73559f7ff5b5907217df5ed53cbaa2eaaa0371362bda3f6d6647c1b6e5dbc03968cc8c5d7ee369ac53731dc2e9b0decbd74bf976ef77f2fdddbeee7772f -d82b8d06f9965bc574abae36eed1d67dfb9850da13738af7b9daba73e84ca32e0c4a3bf5cc8ab3e7b8690887f24e86090cdc2441cac64998f88488b017a229ec -ef8bae7432e10bd713ee4c19876dbf1ab6fa96783a8b0ed8287d5c2d16e5a3692a1e1c89d578c1cfc6e15143a4e84a75f50896b9576c27ea51794940dabe0d09 -6d329344d942a2ba1c9441520fe610340b09b5b277c2a26e615193ee97a9da6001d4b2acc0d6c9810d57c3f53d30012378a242148f649ed2542fb3ab92f92e33 -bd2d984605c03e625901ab4cd725d7adcb93ab4b4bed0c99364868e566925091513d8c87688417d52947cf42e36d735d5fa5d4a02743a1e683d25ad1a8d6fe8d -c579730d76ebda40635d2968ec1c37dc4ad9879219a269c31dc3633f1c4653a81d2eb7bc884ee0ddd95024e90d7f1e6599265cb4110fd3802bd149d520220227 -0e2551c395cbcfd24063a5218a5bb104827061c9d541562e1a3948ba99643c1ee3a1d0d3ae8dc848a7a7a0f0a95658af2af3f383a5259b41ba7be1e8d819d059 -720b4189f9d5a20ce0887078fb534ca33922f03a3313b255fdad35a685eceaef13550da5e3884e43b4e828ba98a77025e5191d7596c5403b5bac1902aa8564d1 -080713d960f5a01add34eb1a2987ad5df7742319394d34573dd35015d935ed2a66ccb06c036bb13c5f93d7582d430c9aa677f854bad725b7bed4bab57d42d625 -20e059fc2c5df70c0d41a3b69acca026196fcab0d4ecc5a8d93b960b3c85da599a84a6fa95a5dbb5b8653dc23a1d0c9eabf383dd7ad5c2d078b9af549156df3d -f44f136c700fc4a30d2f81675470954af8f09020d810f5d49e24950db845ee8bc5ad0147ce2c210df741c16f7a41c90f72859adfc97965af90abf9cd72aee9fb -e562c72f16daadd243682c228c8a7efacda50bafa2e87cf1e5458d6f7c7d89966fdb2e0d599467eaeb4a5e11575f5f8aa5ed5f5f1c02a2f3a052ead6cbf55625 -572f37bb39afddaae5ea41a5956b57826abbdb0efc5abdfbd0758e14d86b9603afd2a9e52ac520c8799582a45fabe7aa5ea9d4f4aacd5ac76b3e5c6c6360e5a9 -7c2c6201e155bc76ff010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f -7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be -9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980 -ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5b -babac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e -745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f -2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f74 -68656d654d616e616765722e786d6c504b01022d0014000600080000002100aa5225dfc60600008b1a00001600000000000000000000000000d6020000746865 -6d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cb0a00000000} -{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d -617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 -6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 -656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} -{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; -\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; -\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; -\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; -\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; -\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; -\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; -\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; -\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; -\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; -\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; -\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; -\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; -\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; -\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; -\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; -\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; -\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; -\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; -\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; -\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; -\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; -\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; -\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; -\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; -\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; -\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; -\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; -\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; -\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 -4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 -d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000003013 -e2fa177bd201feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/sdk/Windows/2019.2/include/fbxsdk.h b/sdk/Windows/2019.2/include/fbxsdk.h deleted file mode 100755 index 4b142a9..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk.h +++ /dev/null @@ -1,277 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk.h -#ifndef _FBXSDK_H_ -#define _FBXSDK_H_ - -/** - * \mainpage FBX SDK Reference - *

- * \section welcome Welcome to the FBX SDK Reference - * The FBX SDK Reference contains reference information on every header file, - * namespace, class, method, enum, typedef, variable, and other C++ elements - * that comprise the FBX software development kit (SDK). - *

- * The FBX SDK Reference is organized into the following sections: - *

  • Class List: an alphabetical list of FBX SDK classes - *
  • Class Hierarchy: a textual representation of the FBX SDK class structure - *
  • Graphical Class Hierarchy: a graphical representation of the FBX SDK class structure - *
  • File List: an alphabetical list of all documented header files
- *

- * \section otherdocumentation Other Documentation - * Apart from this reference guide, an FBX SDK Programming Guide and many FBX - * SDK examples are also provided. - *

- * \section aboutFBXSDK About the FBX SDK - * The FBX SDK is a C++ software development kit (SDK) that lets you import - * and export 3D scenes using the Autodesk FBX file format. The FBX SDK - * reads FBX files created with FiLMBOX version 2.5 and later and writes FBX - * files compatible with MotionBuilder version 6.0 and up. - */ - -#pragma pack(push, 8) //FBXSDK is compiled with default value (8) - -#include - -#ifndef FBXSDK_NAMESPACE_USING - #define FBXSDK_NAMESPACE_USING 1 -#endif - -//--------------------------------------------------------------------------------------- -//Core Base Includes -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Math Includes -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Core Sync Includes -#ifndef FBXSDK_ENV_WINSTORE - #include - #include - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ - -//--------------------------------------------------------------------------------------- -//Core Includes -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include -#include -#include -#include -#include -#include -#include -#ifndef FBXSDK_ENV_WINSTORE - #include - #include -#endif /* !FBXSDK_ENV_WINSTORE */ -#include - -//--------------------------------------------------------------------------------------- -//File I/O Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Animation Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Constraint Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Geometry Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Scene Shading Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Utilities Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -#if defined(FBXSDK_NAMESPACE) && (FBXSDK_NAMESPACE_USING == 1) - using namespace FBXSDK_NAMESPACE; -#endif - -#pragma pack(pop) - -#endif /* _FBXSDK_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxalloc.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxalloc.h deleted file mode 100755 index 403e9be..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxalloc.h +++ /dev/null @@ -1,420 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxalloc.h - * Allocation functions definition. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * The Microsoft Windows implementation in debug mode allows to specify where the - * allocations happen by providing the standard block type, file name and line number. - */ -#ifndef _FBXSDK_CORE_ARCH_ALLOC_H_ -#define _FBXSDK_CORE_ARCH_ALLOC_H_ - -#include - -#if defined(_DEBUG) && defined(FBXSDK_ENV_WIN) - #include -#endif - -#if defined(FBXSDK_ENV_MAC) - #include -#else - #include -#endif - -#include - -#if defined(FBXSDK_CPU_32) && !defined(FBXSDK_ENV_IOS) - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)8U) -#else - #define FBXSDK_MEMORY_ALIGNMENT ((size_t)16U) -#endif - -#define FBXSDK_MEMORY_COPY(dst, src, size) {memcpy(dst,src,size);} - -typedef void* (*FbxMallocProc)(size_t); //! Function pointer signature used to replace "malloc" -typedef void* (*FbxCallocProc)(size_t, size_t); //! Function pointer signature used to replace "calloc" -typedef void* (*FbxReallocProc)(void*, size_t); //! Function pointer signature used to replace "realloc" -typedef void (*FbxFreeProc)(void*); //! Function pointer signature used to replace "free" - -/** Set the global memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate memory in the system. */ -FBXSDK_DLL void FbxSetMallocHandler(FbxMallocProc pHandler); - -/** Set the global zero'd memory allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to allocate zero'd memory in the system. */ -FBXSDK_DLL void FbxSetCallocHandler(FbxCallocProc pHandler); - -/** Set the global memory re-allocation function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to re-allocate memory in the system. */ -FBXSDK_DLL void FbxSetReallocHandler(FbxReallocProc pHandler); - -/** Set the global memory freeing function used internally by the FBX SDK. -* \param pHandler Function pointer that implements the necessary procedure to free memory in the system. */ -FBXSDK_DLL void FbxSetFreeHandler(FbxFreeProc pHandler); - -/** Get the global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetMallocHandler(); - -/** Get the global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetCallocHandler(); - -/** Get the global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetReallocHandler(); - -/** Get the global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetFreeHandler(); - -/** Get the default global memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal malloc */ -FBXSDK_DLL FbxMallocProc FbxGetDefaultMallocHandler(); - -/** Get the default global zero'd memory allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal calloc */ -FBXSDK_DLL FbxCallocProc FbxGetDefaultCallocHandler(); - -/** Get the default global memory re-allocation function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal realloc */ -FBXSDK_DLL FbxReallocProc FbxGetDefaultReallocHandler(); - -/** Get the default global memory freeing function used internally by the FBX SDK. -* \return pHandler Function pointer on FBX's internal free */ -FBXSDK_DLL FbxFreeProc FbxGetDefaultFreeHandler(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FBXSDK_DLL size_t FbxAllocSize(size_t pNbItems, size_t pItemSize); - FBXSDK_DLL void* FbxMalloc(size_t pSize); - FBXSDK_DLL void* FbxCalloc(size_t pCount, size_t pSize); - FBXSDK_DLL void* FbxRealloc(void* pData, size_t pSize); - FBXSDK_DLL void FbxFree(void* pData); - FBXSDK_DLL char* FbxStrDup(const char* pString); - FBXSDK_DLL wchar_t* FbxStrDupWC(const wchar_t* pString); - - //These versions of allocators use the default system mallocs, and on Windows we also pass the debugging parameters. - //If you define FBXSDK_ALLOC_DEBUG in your project, the FBX SDK will use these debug versions everywhere. - FBXSDK_DLL void* FbxMallocDebug(size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxCallocDebug(size_t pCount, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void* FbxReallocDebug(void* pData, size_t pSize, int pBlock, const char* pFile, int pLine); - FBXSDK_DLL void FbxFreeDebug(void* pData, int pBlock); - - //When FBXSDK_ALLOC_DEBUG is defined, redirect allocation calls to the debug version. - #if defined(FBXSDK_ALLOC_DEBUG) - #define FbxMalloc(s) FbxMallocDebug(s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxCalloc(c, s) FbxCallocDebug(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxRealloc(p, s) FbxReallocDebug(p, s, _NORMAL_BLOCK, __FILE__, __LINE__) - #define FbxFree(p) FbxFreeDebug(p, _NORMAL_BLOCK) - #endif -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -//! Deletion policy for pointer template classes that uses the delete operator. -template class FbxDeletionPolicyDefault -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - delete *pPtr; - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxDelete() function. -template void FbxDelete(T* p); -template void FbxDelete(const T* p); -template class FbxDeletionPolicyDelete -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** mPtr) - { - if( *mPtr ) - { - FbxDelete(*mPtr); - *mPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the FbxFree() function. -template class FbxDeletionPolicyFree -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - FbxFree(*pPtr); - *pPtr = NULL; - } - } -}; - -//! Deletion policy for pointer template classes that uses the Destroy() function. -template class FbxDeletionPolicyObject -{ -public: - //! Destruction policy implementation. - static inline void DeleteIt(Type** pPtr) - { - if( *pPtr ) - { - (*pPtr)->Destroy(); - *pPtr = NULL; - } - } -}; - -/** FbxAutoPtr mimics the \c auto_ptr class template implementation available in the C++ Standard Library. The \c auto_ptr template -* class describes an object that stores a pointer to a single allocated object of type Type* that ensures that the object to which -* it points gets destroyed automatically when control leaves a scope. */ -template > class FbxAutoPtr -{ -public: - //! Construct from a pointer. - explicit FbxAutoPtr(Type* pPtr=0) : mPtr(pPtr){} - - //! Destructor. - ~FbxAutoPtr() { Policy::DeleteIt(&mPtr); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - //! Reset the scoped pointer by swapping with another pointer. - inline void Reset(Type* pPtr=0) - { - FBX_ASSERT(pPtr == 0 || pPtr != mPtr); //Catch self-reset errors - FbxAutoPtr(pPtr).Swap(*this); - } - - //! Swap with another pointer. - inline void Swap(FbxAutoPtr& pOther) - { - Type* TmpPtr = pOther.mPtr; - pOther.mPtr = mPtr; - mPtr = TmpPtr; - } - - //! Release the pointer, so that it won't perform deletion in its destruction. - inline Type* Release() - { - Type* TmpPtr = mPtr; - mPtr = NULL; - return TmpPtr; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAutoPtr(const FbxAutoPtr&); - FbxAutoPtr& operator=(const FbxAutoPtr&); - - Type* mPtr; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxAutoFreePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoFreePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxAutoDeletePtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDeletePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxAutoDestroyPtr : public FbxAutoPtr > -{ -public: - //! Construct from a pointer. - explicit FbxAutoDestroyPtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} -}; - - -/** FbxSharedPtr class describes an object that stores a pointer to a single allocated object of type -* Type* that ensures that the object to which it points gets destroyed automatically when the control -* leaves a scope and the reference count is 0. */ -class RefCount -{ -public: - RefCount() { Init(); }; - ~RefCount() { Init(); }; - - void Init() { count = 0; } - void IncRef() { count++; } - int DecRef() { count--; if (count < 0) count = 0; return count; } - -private: - int count; -}; - -template > class FbxSharedPtr -{ -public: - // Default constructor. - FbxSharedPtr() : - mPtr(0), - mRef(0) - {} - - //! Construct from a pointer. - explicit FbxSharedPtr(Type* pPtr) : - mPtr(pPtr), - mRef(0) - { - if (pPtr != 0) - { - mRef = (RefCount*)FbxMalloc(sizeof(RefCount)); - mRef->Init(); - mRef->IncRef(); - } - } - - //! Copy constructor - FbxSharedPtr(const FbxSharedPtr& pSPtr) : - mPtr(pSPtr.mPtr), - mRef(pSPtr.mRef) - { - if (pSPtr.mPtr != 0 && mRef != 0) - mRef->IncRef(); - } - - // Assignment operator - FbxSharedPtr& operator=(const FbxSharedPtr& pSPtr) - { - if (this != &pSPtr) // avoid self assignment - { - Reset(); - - if (pSPtr.mPtr) - { - mPtr = pSPtr.mPtr; - mRef = pSPtr.mRef; - FBX_ASSERT(mRef != NULL); - mRef->IncRef(); - } - } - return *this; - } - - //! Destructor. - ~FbxSharedPtr() { Destroy(); } - - void Destroy() { Reset(); } - - //! Retrieve the pointer it holds. - inline Type* Get() const { return mPtr; } - - //! Member access operator. - inline Type* operator->() const { return mPtr; } - - //! Convert to a Type pointer. - inline operator Type* () const { return mPtr; } - - //! Dereference operator. - inline Type& operator*() const { return *mPtr; } - - //! Logical not operator. - inline bool operator!() const { return mPtr == 0; } - - //! Convert to boolean value. - inline operator bool () const { return mPtr != 0; } - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void Reset() - { - if (mRef) - { - FBX_ASSERT(mPtr != 0); - if (mRef->DecRef() == 0) - { - Policy::DeleteIt(&mPtr); - FbxFree(mRef); - mRef = NULL; - } - } - } - - Type* mPtr; - RefCount* mRef; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. -template class FbxSharedFreePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedFreePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. -template class FbxSharedDeletePtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDeletePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - -//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. -template class FbxSharedDestroyPtr : public FbxSharedPtr > -{ -public: - //! Construct from a pointer. - explicit FbxSharedDestroyPtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} -}; - - - -#include - -#endif /* _FBXSDK_CORE_ARCH_ALLOC_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxarch.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxarch.h deleted file mode 100755 index 66aa03b..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxarch.h +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxarch.h - * Architecture definition. - * - * List of available preprocessor defines that can appear on various systems: - * - * Operating System Environment: - * FBXSDK_ENV_WIN (Windows) - * FBXSDK_ENV_WINSTORE (Windows Store App) - * FBXSDK_ENV_MAC (MacOSX) - * FBXSDK_ENV_IOS (iOS) - * FBXSDK_ENV_LINUX (Linux) - * - * Architecture: - * FBXSDK_ARCH_IX86 (Intel x86) - * FBXSDK_ARCH_AMD64 (AMD64) - * FBXSDK_ARCH_ARM (Advanced RISC Machine) - * - * Processor: - * FBXSDK_CPU_32 (32bit processor) - * FBXSDK_CPU_64 (64bit processor) - * - * Compiler: - * FBXSDK_COMPILER_MSC (Microsoft Compiler) - * FBXSDK_COMPILER_GNU (GNU Compiler) - * FBXSDK_COMPILER_INTEL (Intel Compiler) - * FBXSDK_COMPILER_CLANG (Clang Compiler) - * - * These definitions are based on the information found here: - * http://predef.sourceforge.net/index.php - * - */ -#ifndef _FBXSDK_CORE_ARCH_ARCH_H_ -#define _FBXSDK_CORE_ARCH_ARCH_H_ - -#if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------ - - #define FBXSDK_ENV_WIN 1 - - #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) - #define FBXSDK_ENV_WINSTORE 1 - #endif - - #if defined(_M_X64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(_M_IX86) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(_M_ARM) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #else - #error Unsupported architecture! - #endif - - #if defined(_MSC_VER) - #define FBXSDK_COMPILER_MSC 1 - #elif defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(__ICL) - #define FBXSDK_COMPILER_INTEL 1 - #else - #error Unsupported compiler! - #endif - -#elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X --------------------------- - - #include "TargetConditionals.h" - - #define FBXSDK_ENV_MAC 1 - - #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - #define FBXSDK_ENV_IOS 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(__arm64__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #endif - - #if defined(__clang__) - #define FBXSDK_COMPILER_CLANG 1 - #endif - - #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG) - #error Unsupported compiler! - #endif - -#elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux --------------------------------- - - #define FBXSDK_ENV_LINUX 1 - - #if defined(EMSCRIPTEN) - #define FBXSDK_ENV_EMSCRIPTEN 1 - #endif - - #if defined(ANDROID) - #define FBXSDK_ENV_ANDROID 1 - #endif - - #if defined(__i386__) - #define FBXSDK_ARCH_IX86 1 - #define FBXSDK_CPU_32 1 - #elif defined(__x86_64__) || defined(__x86_64) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #elif defined(__arm__) - #define FBXSDK_ARCH_ARM 1 - #define FBXSDK_CPU_32 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_ARCH_AMD64 1 - #define FBXSDK_CPU_64 1 - #else - #error Unsupported architecture! - #endif - - #if defined(__GNUC__) - #define FBXSDK_COMPILER_GNU 1 - #elif defined(EMSCRIPTEN) - #define FBXSDK_COMPILER_EMSCRIPTEN 1 - #else - #error Unsupported compiler! - #endif - #else - #error Unsupported platform! -#endif - -//--------------------------------------------------------------------------------------- -//Compiler Specifics -#if defined(FBXSDK_SHARED) - #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL) - #define FBXSDK_DLLIMPORT __declspec(dllimport) - #define FBXSDK_DLLEXPORT __declspec(dllexport) - #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4) - #define FBXSDK_DLLIMPORT __attribute__((visibility("default"))) - #define FBXSDK_DLLEXPORT __attribute__((visibility("default"))) - #else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT - #endif -#else - #define FBXSDK_DLLIMPORT - #define FBXSDK_DLLEXPORT -#endif - -#ifndef FBXSDK_DLL - #define FBXSDK_DLL FBXSDK_DLLIMPORT -#endif - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' - #if _MSC_VER >= 1300 // 7.1 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN) - #define FBX_DEPRECATED __attribute__((deprecated)) -#elif defined(FBXSDK_COMPILER_INTEL) - #if __INTEL_COMPILER >= 810 - #define FBX_DEPRECATED __declspec(deprecated) - #else - #define FBX_DEPRECATED - #endif -#else - #error Unsupported compiler! -#endif - -#ifdef FBXSDK_COMPILER_CLANG - #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p))) -#else - #define FBX_UNUSED(p) (void)(p) -#endif - -//--------------------------------------------------------------------------------------- -//Platform Standardization -#ifndef NULL - #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) - #define NULL (__null) - #else - #if defined(__cplusplus) - #define NULL 0 - #else - #define NULL ((void*)0) - #endif - #endif -#endif - -#if !defined(_MAX_PATH) - #define _MAX_PATH 260 -#endif - -#if defined(FBXSDK_ENV_WIN) - #define snprintf _snprintf //for stdio.h platform compatibility -#endif - -#if !defined(FBXSDK_COMPILER_MSC) - #ifndef strcmpi - #define strcmpi strcasecmp - #endif - #ifndef stricmp - #define stricmp strcasecmp - #endif - #ifndef strncmpi - #define strncmpi strncasecmp - #endif - #ifndef strnicmp - #define strnicmp strncasecmp - #endif -#endif - -#endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxdebug.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxdebug.h deleted file mode 100755 index 78039cd..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxdebug.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxdebug.h - * Debugging macros and functions. - * - * All macros and functions are removed in release builds. To enable asserts, a debug build is required as well - * as the environment variable "FBXSDK_ASSERT" set to 1 is also required. By default, assertions will pop-up - * a window. It is possible to disable the pop-up on the Windows platform by calling the following code: - * \code - * _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG); - * \endcode - */ -#ifndef _FBXSDK_CORE_ARCH_DEBUG_H_ -#define _FBXSDK_CORE_ARCH_DEBUG_H_ - -#include - -#include - -/** If this environment variable is set to 1, the FBX SDK will assert in debug builds */ -#define FBXSDK_ASSERT_ENVSTR "FBXSDK_ASSERT" - -/** The assertion procedure signature. If a different assertion procedure must be provided, it should have this signature. -* \param pFileName The file name where the assertion occurred. -* \param pFunctionName The function name where the assertion occurred. -* \param pLineNumber The line number in the file where the assertion occurred. -* \param pMessage The message to display when the assertion occurs. */ -typedef void (*FbxAssertProc)(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, const char* pMessage); - -/** Change the procedure used when assertion occurs. -* \param pAssertProc The procedure to be called when assertions occurs. */ -FBXSDK_DLL void FbxAssertSetProc(FbxAssertProc pAssertProc); - -//! Change the procedure back to the default one. -FBXSDK_DLL void FbxAssertSetDefaultProc(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -FBXSDK_DLL void _FbxAssert(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, bool pFormat, const char* pMessage, ...); -FBXSDK_DLL void _FbxTrace(const char* pMessage, ...); - -#ifdef _DEBUG - template struct FbxStaticAssertType; - template<> struct FbxStaticAssertType {enum{value=1};}; - template<> struct FbxStaticAssertType {enum{value=-1};}; - #define FBX_ASSERT(Condition) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,false,#Condition);}} - #define FBX_ASSERT_MSG(Condition, Message, ...) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__);}} - #define FBX_ASSERT_NOW(Message, ...) _FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__); - #define FBX_ASSERT_RETURN(Condition) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return;}} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return Value;}} - #define FBX_ASSERT_STATIC(Condition) typedef char FbxBuildBreakIfFalse[FbxStaticAssertType<(bool)(Condition)>::value]; - #define FBX_TRACE(Message, ...) {_FbxTrace(Message,##__VA_ARGS__);} -#else - #define FBX_ASSERT(Condition) ((void)0) - #define FBX_ASSERT_MSG(Condition, Message, ...) ((void)0) - #define FBX_ASSERT_NOW(Message, ...) ((void)0) - #define FBX_ASSERT_RETURN(Condition) if(!(Condition)){return;} - #define FBX_ASSERT_RETURN_VALUE(Condition, Value) if(!(Condition)){return Value;} - #define FBX_ASSERT_STATIC(Condition) - #define FBX_TRACE(Message, ...) ((void)0) -#endif - -template struct FbxIncompatibleWithArray{ enum {value = 0}; }; - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T)\ - struct FbxIncompatibleWithArray< T >{\ - union {\ - T t();\ - } catcherr;\ - enum {value = 1};} - -#define FBXSDK_INCOMPATIBLE_WITH_ARRAY(T)\ - template<> FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T) - -#define FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T) ((bool) FbxIncompatibleWithArray::value) - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_ARCH_DEBUG_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxnew.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxnew.h deleted file mode 100755 index 2634acf..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxnew.h +++ /dev/null @@ -1,511 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxnew.h - * New operator override templates. - * - * Instead of overloading the operator new in the FBX SDK, we provide a set of templates - * that are used internally to create objects. This mechanic allows the FBX SDK to call - * a different memory allocator. - * \see FbxSetMallocHandler FbxSetCallocHandler FbxSetReallocHandler FbxSetFreeHandler FbxSetMSizeHandler - */ -#ifndef _FBXSDK_CORE_ARCH_NEW_H_ -#define _FBXSDK_CORE_ARCH_NEW_H_ - -#include - -#include - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning(push) - #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized -#endif - -#include - -//Type traits for primitive types -template struct FbxSimpleType { enum {value = 0}; }; -template struct FbxSimpleType { enum {value = 1}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; -template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; - -#define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType{ union {T t;} catcherr; enum {value = 1};} - -FBXSDK_DEFINE_SIMPLE_TYPE(bool); -FBXSDK_DEFINE_SIMPLE_TYPE(char); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned char); -FBXSDK_DEFINE_SIMPLE_TYPE(short); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short); -FBXSDK_DEFINE_SIMPLE_TYPE(int); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned int); -FBXSDK_DEFINE_SIMPLE_TYPE(long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long); -FBXSDK_DEFINE_SIMPLE_TYPE(float); -FBXSDK_DEFINE_SIMPLE_TYPE(double); -FBXSDK_DEFINE_SIMPLE_TYPE(long double); -FBXSDK_DEFINE_SIMPLE_TYPE(long long); -FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long); - -#define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType::value) - -template T* FbxNew() -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(); -} - -template T* FbxNew(T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(const T1& p1) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1); -} - -template T* FbxNew(T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(const T1& p1, const T2& p2) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1, p2, p3, p4); -} - -template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8); -} - -template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9) -{ - T* p = (T*)FbxMalloc(sizeof(T)); - return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9); -} - -template void FbxDelete(T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(p); - } -} - -template void FbxDelete(const T* p) -{ - if( p ) - { - ((T*)p)->~T(); - FbxFree(const_cast(p)); - } -} - -template T* FbxNewArray(const int n) -{ - size_t lSize = FbxAllocSize((size_t)n, sizeof(T)); - if( FBXSDK_IS_SIMPLE_TYPE(T) ) - { - return (T*)FbxMalloc(lSize); - } - else - { - void* pTmp = FbxMalloc(lSize + sizeof(int)); - T* p = (T*)((int*)pTmp+1); - *((int*)pTmp) = n; - for( int i = 0; i < n; ++i ) - { - new((T*)p+i)T; //in-place new, not allocating memory so it is safe. - } - return p; - } -} - -template void FbxDeleteArray(T* p) -{ - if( p ) - { - if( !FBXSDK_IS_SIMPLE_TYPE(T) ) - { - for( int i = 0; i < ((int*)p)[-1]; ++i ) - { - ((T*)p)[i].~T(); - } - FbxFree((int*)p-1); - } - else - { - FbxFree((void*)p); - } - } -} - -#define FBXSDK_FRIEND_NEW()\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew();\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\ - \ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\ - template\ - friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\ - template\ - friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p); - -#ifdef FBXSDK_COMPILER_MSC - #pragma warning(pop) -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_NEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h deleted file mode 100755 index f6bc29c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxstdcompliant.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxstdcompliant.h -* Macros to properly support the CRT secure functions. */ -#ifndef _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ -#define _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ - -#include - -#include - -#if defined(FBXSDK_ENV_WIN) - #define FBXSDK_printf printf_s - #define FBXSDK_fprintf fprintf_s - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf_s(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf_s(dst, dstsize, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); } - #define FBXSDK_stricmp(dst, src) _stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) _strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy_s(dst, size, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy_s(dst, size, src, count) - #define FBXSDK_strcat(dst, size, src) strcat_s(dst, size, src) - #define FBXSDK_strtok(str, delim, ctx) strtok_s(str, delim, ctx) - #define FBXSDK_wcscpy(dst, size, src) wcscpy_s(dst, size, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, size, src) -#if !defined(FBXSDK_ENV_WINSTORE) - #define FBXSDK_getpid _getpid - #define FBXSDK_getcwd _getcwd -#else - inline int FBXSDK_getpid(){ return 0; } - inline char* FBXSDK_getcwd(char*,int){ return NULL; } -#endif - #define FBXSDK_localtime(ptm, time) { struct tm tms; ptm = &tms; localtime_s(ptm, time); } - #define FBXSDK_gmtime(ptm, time) { struct tm tms; ptm = &tms; gmtime_s(ptm, time); } - #define FBXSDK_fopen(fp, name, mode) fopen_s(&fp, name, mode) - -#elif defined(FBXSDK_ENV_MAC) || defined(FBXSDK_ENV_LINUX) - #define FBXSDK_printf printf - #define FBXSDK_fprintf fprintf - inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf(dst, format, vl); va_end(vl); return ret; } - inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf(dst, dstsize, format, vl); va_end(vl); return ret; } - inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf(dst, format, vl); } - inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf(dst, dstsize, format, vl); } - #define FBXSDK_stricmp(dst, src) stricmp(dst, src) - #define FBXSDK_strnicmp(dst, src, count) strnicmp(dst, src, count) - #define FBXSDK_strcpy(dst, size, src) strcpy(dst, src) - #define FBXSDK_strncpy(dst, size, src, count) strncpy(dst, src, count) - #define FBXSDK_strcat(dst, size, src) strcat(dst, src) - #define FBXSDK_strtok(str, delim, ctx) strtok(str, delim) - #define FBXSDK_wcscpy(dst, size, src) wcscpy(dst, src) - #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, src) - #define FBXSDK_getpid getpid - #define FBXSDK_getcwd getcwd - #define FBXSDK_localtime(tm, time) tm=localtime(time) - #define FBXSDK_gmtime(tm, time) tm=gmtime(time) - #define FBXSDK_fopen(fp, name, mode) fp=fopen(name, mode) - -#else - #error Unsupported platform! -#endif - -#define FBXSDK_strdup FbxStrDup - -//The scanf family functions cannot easily be used in both secure and non-secure versions because -//Microsoft's secure version expects the size of the string/char* arguments following their address. -//On Unix machines the scanf family functions do not have this behavior and trying to use the same -//calls would result in compiler errors because the arguments would not match the format string. -//Using the following macros in the code will simply desable the warning at compile time. -#if defined(FBXSDK_COMPILER_MSC) && (_MSC_VER >= 1300) - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN\ - {\ - __pragma(warning(push))\ - __pragma(warning(disable : 4996))\ - } - - #define FBXSDK_CRT_SECURE_NO_WARNING_END\ - {\ - __pragma(warning(pop))\ - } -#else - #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - #define FBXSDK_CRT_SECURE_NO_WARNING_END -#endif - -#include - -#endif /* _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxtypes.h b/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxtypes.h deleted file mode 100755 index fcf2114..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/arch/fbxtypes.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxtypes.h - * Basic types definition. - * - * Standard basic types used across the FBX SDK. There is also platform independent - * definitions that guarantee size across operating systems. The FBXSDK_SYSTEM_IS_LP64 - * define is set to 1 when the operating system defines the "long" C++ type as 64-bit. - */ -#ifndef _FBXSDK_CORE_ARCH_TYPES_H_ -#define _FBXSDK_CORE_ARCH_TYPES_H_ - -#include - -//Note: On MacOSX and Linux 64-bit, long is defined as 64-bits while on Windows -//it is still a 32-bits for backward compatibility. We stick with Windows standard. -#if defined(FBXSDK_CPU_64) && !defined(FBXSDK_ENV_WIN) - #define FBXSDK_SYSTEM_IS_LP64 1 -#endif - -#include - -class FbxObject; - -typedef bool FbxBool; -typedef signed char FbxChar; -typedef unsigned char FbxUChar; -typedef signed short FbxShort; -typedef unsigned short FbxUShort; -typedef signed int FbxInt; -typedef unsigned int FbxUInt; -typedef float FbxFloat; -typedef double FbxDouble; - -typedef FbxBool* FbxBoolPtr; -typedef FbxChar* FbxCharPtr; -typedef FbxUChar* FbxUCharPtr; -typedef FbxShort* FbxShortPtr; -typedef FbxUShort* FbxUShortPtr; -typedef FbxInt* FbxIntPtr; -typedef FbxUInt* FbxUIntPtr; -typedef FbxFloat* FbxFloatPtr; -typedef FbxDouble* FbxDoublePtr; - -typedef FbxInt FbxEnum; -typedef FbxObject* FbxReference; - -//------------------------------------------------------------------------------------- -//Architecture independent defines (guarantee size) -#if defined(FBXSDK_COMPILER_MSC) - #define FBXSDK_LONGLONG(x) (x##i64) - #define FBXSDK_ULONGLONG(x) (x##Ui64) - - typedef signed __int8 FbxInt8; - typedef unsigned __int8 FbxUInt8; - typedef signed __int16 FbxInt16; - typedef unsigned __int16 FbxUInt16; - typedef signed __int32 FbxInt32; - typedef unsigned __int32 FbxUInt32; - typedef signed __int64 FbxInt64; - typedef unsigned __int64 FbxUInt64; -#else - #define FBXSDK_LONGLONG(x) (x##LL) - #define FBXSDK_ULONGLONG(x) (x##ULL) - - typedef signed char FbxInt8; - typedef unsigned char FbxUInt8; - typedef signed short FbxInt16; - typedef unsigned short FbxUInt16; - typedef signed int FbxInt32; - typedef unsigned int FbxUInt32; - typedef signed long long FbxInt64; - typedef unsigned long long FbxUInt64; -#endif - -#ifdef FBXSDK_SYSTEM_IS_LP64 - typedef signed int FbxLong; - typedef unsigned int FbxULong; -#else - typedef signed long FbxLong; - typedef unsigned long FbxULong; -#endif -typedef FbxInt64 FbxLongLong; -typedef FbxUInt64 FbxULongLong; - -typedef FbxLong* FbxLongPtr; -typedef FbxULong* FbxULongPtr; -typedef FbxLongLong* FbxLongLongPtr; -typedef FbxULongLong* FbxULongLongPtr; - - -#if defined(FBXSDK_ENV_EMSCRIPTEN) - typedef FbxInt32 __int32_t; - typedef FbxUInt32 __uint32_t; - typedef FbxInt64 __int64_t; - typedef FbxUInt64 __uint64_t; -#endif - -//------------------------------------------------------------------------------------- -//Minimum and Maximum values for types -#define FBXSDK_CHAR_MIN -128 -#define FBXSDK_CHAR_MAX 127 -#define FBXSDK_UCHAR_MIN 0 -#define FBXSDK_UCHAR_MAX 255 -#define FBXSDK_SHORT_MIN -32768 -#define FBXSDK_SHORT_MAX 32767 -#define FBXSDK_USHORT_MIN 0 -#define FBXSDK_USHORT_MAX 65535 -#define FBXSDK_INT_MIN 0x80000000 -#define FBXSDK_INT_MAX 0x7fffffff -#define FBXSDK_UINT_MIN 0 -#define FBXSDK_UINT_MAX 0xffffffff -#define FBXSDK_LONG_MIN FBXSDK_INT_MIN -#define FBXSDK_LONG_MAX FBXSDK_INT_MAX -#define FBXSDK_ULONG_MIN FBXSDK_UINT_MIN -#define FBXSDK_ULONG_MAX FBXSDK_UINT_MAX -#define FBXSDK_LONGLONG_MIN FBXSDK_LONGLONG(0x8000000000000000) -#define FBXSDK_LONGLONG_MAX FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_ULONGLONG_MIN FBXSDK_ULONGLONG(0) -#define FBXSDK_ULONGLONG_MAX FBXSDK_ULONGLONG(0xffffffffffffffff) -#define FBXSDK_FLOAT_MIN FLT_MIN -#define FBXSDK_FLOAT_MAX FLT_MAX -#define FBXSDK_FLOAT_EPSILON FLT_EPSILON -#define FBXSDK_DOUBLE_MIN DBL_MIN -#define FBXSDK_DOUBLE_MAX DBL_MAX -#define FBXSDK_DOUBLE_EPSILON DBL_EPSILON -#define FBXSDK_TOLERANCE (1.0e-6) - -//------------------------------------------------------------------------------------- -//Handle and atomic definition (size change depending of architecture) -#if defined(FBXSDK_CPU_32) - typedef FbxUInt32 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_UINT_MIN - #define FBXSDK_REF_MAX FBXSDK_UINT_MAX - - typedef FbxLong FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONG_MAX -#elif defined(FBXSDK_CPU_64) - typedef FbxUInt64 FbxHandle; - #define FBXSDK_REF_MIN FBXSDK_ULONGLONG_MIN - #define FBXSDK_REF_MAX FBXSDK_ULONGLONG_MAX - - typedef FbxInt64 FbxAtomic; - #define FBXSDK_ATOMIC_MIN FBXSDK_LONGLONG_MIN - #define FBXSDK_ATOMIC_MAX FBXSDK_LONGLONG_MAX -#else - #error Unsupported architecture! -#endif - -//------------------------------------------------------------------------------------- -//Various utility functions for fbxsdk basic types -inline FbxChar FbxMin(const FbxChar){ return FBXSDK_CHAR_MIN; } -inline FbxUChar FbxMin(const FbxUChar){ return FBXSDK_UCHAR_MIN; } -inline FbxShort FbxMin(const FbxShort){ return FBXSDK_SHORT_MIN; } -inline FbxUShort FbxMin(const FbxUShort){ return FBXSDK_USHORT_MIN; } -inline FbxInt FbxMin(const FbxInt){ return FBXSDK_INT_MIN; } -inline FbxUInt FbxMin(const FbxUInt){ return FBXSDK_UINT_MIN; } -inline FbxLongLong FbxMin(const FbxLongLong){ return FBXSDK_LONGLONG_MIN; } -inline FbxULongLong FbxMin(const FbxULongLong){ return FBXSDK_ULONGLONG_MIN; } -inline FbxFloat FbxMin(const FbxFloat){ return FBXSDK_FLOAT_MIN; } -inline FbxDouble FbxMin(const FbxDouble){ return FBXSDK_DOUBLE_MIN; } - -inline FbxChar FbxMax(const FbxChar){ return FBXSDK_CHAR_MAX; } -inline FbxUChar FbxMax(const FbxUChar){ return FBXSDK_UCHAR_MAX; } -inline FbxShort FbxMax(const FbxShort){ return FBXSDK_SHORT_MAX; } -inline FbxUShort FbxMax(const FbxUShort){ return FBXSDK_USHORT_MAX; } -inline FbxInt FbxMax(const FbxInt){ return FBXSDK_INT_MAX; } -inline FbxUInt FbxMax(const FbxUInt){ return FBXSDK_UINT_MAX; } -inline FbxLongLong FbxMax(const FbxLongLong){ return FBXSDK_LONGLONG_MAX; } -inline FbxULongLong FbxMax(const FbxULongLong){ return FBXSDK_ULONGLONG_MAX; } -inline FbxFloat FbxMax(const FbxFloat){ return FBXSDK_FLOAT_MAX; } -inline FbxDouble FbxMax(const FbxDouble){ return FBXSDK_DOUBLE_MAX; } - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxLong FbxMin(const FbxLong){ return FBXSDK_LONG_MIN; } - inline FbxULong FbxMin(const FbxULong){ return FBXSDK_ULONG_MIN; } - inline FbxLong FbxMax(const FbxLong){ return FBXSDK_LONG_MAX; } - inline FbxULong FbxMax(const FbxULong){ return FBXSDK_ULONG_MAX; } -#endif - -template inline T FbxMin(const T){}; -template inline T FbxMax(const T){}; - -template inline T FbxMin(const T x, const T y){ return (x < y) ? x : y; } -template inline T FbxMax(const T x, const T y){ return (x > y) ? x : y; } - -//------------------------------------------------------------------------------------- -//Vector Template Types -template class FBXSDK_DLL FbxVectorTemplate2 -{ -public: - inline FbxVectorTemplate2(){ *this = T(0); } - inline explicit FbxVectorTemplate2(T pValue){ *this = pValue; } - inline FbxVectorTemplate2(T pData0, T pData1){ mData[0] = pData0; mData[1] = pData1; } - inline ~FbxVectorTemplate2(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline FbxVectorTemplate2& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; return *this; } - inline FbxVectorTemplate2& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline bool operator==(const FbxVectorTemplate2& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1])); } - inline bool operator!=(const FbxVectorTemplate2& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[2]; -}; - -template class FBXSDK_DLL FbxVectorTemplate3 -{ -public: - inline FbxVectorTemplate3(){ *this = T(0); } - inline explicit FbxVectorTemplate3(T pValue){ *this = pValue; } - inline FbxVectorTemplate3(T pData0, T pData1, T pData2){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; } - inline ~FbxVectorTemplate3(){} - inline T& operator[](int pIndex) { return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate2& () const { return *((FbxVectorTemplate2*)this); } - inline FbxVectorTemplate3& operator=(T const &pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } - inline FbxVectorTemplate3& operator=(const FbxVectorTemplate3& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; return *this; } - inline bool operator==(const FbxVectorTemplate3& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2])); } - inline bool operator!=(const FbxVectorTemplate3& pVector) const { return !operator==(pVector); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[3]; -}; - -template class FBXSDK_DLL FbxVectorTemplate4 -{ -public: - inline FbxVectorTemplate4(){ *this = T(0); } - inline explicit FbxVectorTemplate4(T pValue){ *this = pValue; } - inline FbxVectorTemplate4(T pData0, T pData1, T pData2, T pData3){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3; } - inline ~FbxVectorTemplate4(){} - inline T& operator[](int pIndex){ return mData[pIndex]; } - inline const T& operator[](int pIndex) const { return mData[pIndex]; } - inline operator FbxVectorTemplate3& () const { return *((FbxVectorTemplate3*)this); } - inline FbxVectorTemplate4& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate3& pValue){ mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; } - inline FbxVectorTemplate4& operator=(const FbxVectorTemplate4& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; mData[3] = pVector.mData[3]; return *this; } - inline bool operator==(const FbxVectorTemplate4& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2]) && (mData[3] == pVector.mData[3])); } - inline bool operator!=(const FbxVectorTemplate4& pVector) const { return !operator==( pVector ); } - inline T* Buffer(){ return mData; } - inline const T* Buffer() const { return mData; } - T mData[4]; -}; - -typedef FbxVectorTemplate2 FbxDouble2; -typedef FbxVectorTemplate3 FbxDouble3; -typedef FbxVectorTemplate4 FbxDouble4; -typedef FbxVectorTemplate4 FbxDouble4x4; - -#include - -#endif /* _FBXSDK_CORE_ARCH_TYPES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxarray.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxarray.h deleted file mode 100755 index 9c222d7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxarray.h +++ /dev/null @@ -1,489 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxarray.h -#ifndef _FBXSDK_CORE_BASE_ARRAY_H_ -#define _FBXSDK_CORE_BASE_ARRAY_H_ - -#include - -#include - -/** Class for array of basic elements such as pointers and basic types. This class will not -* call constructor and destructor for elements, thus it is not suitable for object references. -* Memory allocations are always done in a single contiguous memory region. */ -template class FbxArray -{ -public: - //! Element compare function pointer definition - typedef int (*CompareFunc)(const void*, const void*); - - //! Constructor. - FbxArray() : mSize(0), mCapacity(0), mArray(NULL){} - - //! Reserve constructor. - FbxArray(const int pCapacity) : mSize(0), mCapacity(0), mArray(NULL){ if( pCapacity > 0 ) Reserve(pCapacity); } - - //! Copy constructor. - FbxArray(const FbxArray& pArray) : mSize(0), mCapacity(0), mArray(NULL){ *this = pArray; } - - /** Destructor. - * \remark The destructor for each element will not be called. */ - ~FbxArray(){ Clear(); } - - /** Insert an element at the given position, growing the array if capacity is not sufficient. - * \param pIndex Position where to insert the element. Must be a positive value. - * \param pElement Element to insert in the array. - * \param pCompact If \c true and capacity is exceeded, grow capacity by one, otherwise double capacity (default). - * \return -1 if insert failed, otherwise the position of the inserted element in the array. - * \remark If the given index is greater than Size(), the element is appended at the end. Use compact mode only if you need to save memory. */ - inline int InsertAt(const int pIndex, const T& pElement, bool pCompact=false) - { - FBX_ASSERT_RETURN_VALUE(pIndex >= 0, -1); - int lIndex = FbxMin(pIndex, mSize); - if( mSize >= mCapacity ) - { - T lElement = pElement; //Copy element because we might move memory - int lNewCapacity = FbxMax(pCompact ? mCapacity + 1 : mCapacity * 2, 1); //We always double capacity when not compacting - T* lArray = Allocate(lNewCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, -1); - mArray = lArray; - mCapacity = lNewCapacity; - return InsertAt(pIndex, lElement); //Insert copied element because reference might be moved - } - - if( lIndex < mSize ) //Move elements to leave a space open to insert the new element - { - //If pElement is inside memmove range, copy element and insert copy instead - if( (&pElement >= &mArray[lIndex]) && (&pElement < &mArray[mSize]) ) - { - T lElement = pElement; - return InsertAt(pIndex, lElement); - } - memmove(&mArray[lIndex + 1], &mArray[lIndex], (mSize - lIndex) * sizeof(T)); - } - - memcpy(&mArray[lIndex], &pElement, sizeof(T)); - mSize++; - - return lIndex; - } - - /** Append an element at the end of the array, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int Add(const T& pElement) - { - return InsertAt(mSize, pElement); - } - - /** Append an element at the end of array, if not already present, doubling the array if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddUnique(const T& pElement) - { - int lIndex = Find(pElement); - return ( lIndex == -1 ) ? Add(pElement) : lIndex; - } - - /** Append an element at the end of the array, growing the array by one element if capacity is not sufficient. - * \param pElement Element to append to the array. - * \return -1 if add failed, otherwise the position of the added element in the array. */ - inline int AddCompact(const T& pElement) - { - return InsertAt(mSize, pElement, true); - } - - /** Retrieve the number of element contained in the array. To increase the capacity without increasing the size, please use Reserve(). - * \return The number of element in the array. - * \remark The size of the array cannot exceed its capacity. */ - inline int Size() const { return mSize; } - - /** Retrieve the current allocated memory capacity of the array. - * \return The capacity of the array in number of element. - * \remark The capacity will always be greater or equal to its size. */ - inline int Capacity() const { return mCapacity; } - - /** Retrieve a reference of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return A reference to the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T& operator[](const int pIndex) const - { - #ifdef _DEBUG - FBX_ASSERT_MSG(pIndex >= 0, "Index is out of range!"); - if( pIndex >= mSize ) - { - if( pIndex < mCapacity ) - { - FBX_ASSERT_NOW("Index is out of range, but not outside of capacity! Call SetAt() to use reserved memory."); - } - else FBX_ASSERT_NOW("Index is out of range!"); - } - #endif - return (T&)mArray[pIndex]; - } - - /** Retrieve a copy of the element at given index position in the array. - * \param pIndex Position of element in the array. - * \return The value of the element at the specified position in the array. - * \remark No error will be thrown if the index is out of bounds. */ - inline T GetAt(const int pIndex) const - { - return operator[](pIndex); - } - - /** Retrieve a copy of the first element. - * \return Copy of the first element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetFirst() const - { - return GetAt(0); - } - - /** Retrieve a copy of the last element. - * \return Copy of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T GetLast() const - { - return GetAt(mSize-1); - } - - /** Find first matching element, from first to last. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int Find(const T& pElement, const int pStartIndex=0) const - { - FBX_ASSERT_RETURN_VALUE(pStartIndex >= 0, -1); - for( int i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Find first matching element, from last to first. - * \param pElement The element to be compared to each of the elements. - * \param pStartIndex The position to start searching from. - * \return Position of first matching element or -1 if there is no matching element. */ - inline int FindReverse(const T& pElement, const int pStartIndex=FBXSDK_INT_MAX) const - { - for( int i = FbxMin(pStartIndex, mSize-1); i >= 0; --i ) - { - if( operator[](i) == pElement ) return i; - } - return -1; - } - - /** Request for allocation of additional memory without inserting new elements. After the memory has been reserved, please use SetAt() to initialize elements. - * \param pCapacity The number of additional element memory allocation requested. - * \return \c true if the memory allocation succeeded or if the capacity is unchanged, \c false otherwise. - * \remark If the requested capacity is less than or equal to the current capacity, this call has no effect. In either case, Size() is unchanged. */ - inline bool Reserve(const int pCapacity) - { - FBX_ASSERT_RETURN_VALUE(pCapacity > 0, false); - if( pCapacity > mCapacity ) - { - T* lArray = Allocate(pCapacity); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - mCapacity = pCapacity; - - //Initialize new memory to zero - memset(&mArray[mSize], 0, (mCapacity - mSize) * sizeof(T)); - } - return true; - } - - /** Set the element at given position in the array. - * \param pIndex Position of element in the array. - * \param pElement The new element. - * \remark If the index is outside range, and outside capacity, this call has no effect. However, if index is - * within capacity range, element count is increased such that Size() will become pIndex + 1. */ - inline void SetAt(const int pIndex, const T& pElement) - { - FBX_ASSERT_RETURN(pIndex >= 0 && pIndex < mCapacity); - if( pIndex >= mSize ) mSize = pIndex + 1; - if( mArray ) memcpy(&mArray[pIndex], &pElement, sizeof(T)); - } - - /** Set the value of the first element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetFirst(const T& pElement) - { - SetAt(0, pElement); - } - - /** Set the value of the last element. - * \param pElement The new value of the last element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline void SetLast(const T& pElement) - { - SetAt(mSize-1, pElement); - } - - /** Remove an element at the given position in the array. - * \param pIndex Position of the element to remove. - * \return Removed element. - * \remark No error will be thrown if the index is out of bounds. */ - inline T RemoveAt(const int pIndex) - { - T lElement = GetAt(pIndex); - if( pIndex + 1 < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + 1], (mSize - pIndex - 1) * sizeof(T)); - } - mSize--; - return lElement; - } - - /** Remove the first element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveFirst() - { - return RemoveAt(0); - } - - /** Remove the last element in the array. - * \return Removed element. - * \remark The array should have at least one element and no error will be thrown if the array is empty. */ - inline T RemoveLast() - { - return RemoveAt(mSize-1); - } - - /** Remove first matching element in the array. - * \param pElement Element to be removed. - * \return \c true if a matching element is found and removed, \c false otherwise. */ - inline bool RemoveIt(const T& pElement) - { - int Index = Find(pElement); - if( Index >= 0 ) - { - RemoveAt(Index); - return true; - } - return false; - } - - /** Remove a range of elements at the given position in the array. - * \param pIndex Begin position of the elements to remove. - * \param pCount The count of elements to remove. - * \return \c true if successful, otherwise \c false. */ - inline void RemoveRange(const int pIndex, const int pCount) - { - FBX_ASSERT_RETURN(pIndex >= 0); - FBX_ASSERT_RETURN(pCount >= 0); - if( pIndex + pCount < mSize ) - { - memmove(&mArray[pIndex], &mArray[pIndex + pCount], (mSize - pIndex - pCount) * sizeof(T)); - } - mSize -= pCount; - } - - /** Inserts or erases elements at the end such that Size() becomes pSize, increasing capacity if needed. Please use SetAt() to initialize any new elements. - * \param pSize The new count of elements to set the array to. Must be greater or equal to zero. - * \return \c true if the memory (re)allocation succeeded, \c false otherwise. - * \remark If the requested element count is less than or equal to the current count, elements are freed from memory. Otherwise, the array grows and elements are unchanged. */ - inline bool Resize(const int pSize) - { - if( pSize == mSize && mSize == mCapacity ) return true; - - if( pSize == 0 ) - { - Clear(); - return true; - } - - FBX_ASSERT_RETURN_VALUE(pSize > 0, false); - if( pSize != mCapacity ) - { - T* lArray = Allocate(pSize); - FBX_ASSERT_RETURN_VALUE(lArray, false); - mArray = lArray; - } - - if( pSize > mCapacity ) //Initialize new memory to zero - { - memset(&mArray[mSize], 0, (pSize - mSize) * sizeof(T)); - } - - mSize = pSize; - mCapacity = pSize; - return true; - } - - /** Increase size of array by the specified size. - * \param pSize The size to add to the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Grow(const int pSize) - { - return Resize(mSize + pSize); - } - - /** Reduce size of array by the specified size. - * \param pSize The size to remove from the array size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Shrink(const int pSize) - { - return Resize(mSize - pSize); - } - - /** Compact the array so that its capacity is the same as its size. - * \return \c true if operation succeeded, \c false otherwise. */ - inline bool Compact() - { - return Resize(mSize); - } - - /** Reset the number of element to zero and free the memory allocated. - * \remark This only free the memory allocated by the array, and doesn't call the destructor of each element. */ - inline void Clear() - { - if( mArray != NULL ) - { - mSize = 0; - mCapacity = 0; - FbxFree(mArray); - mArray = NULL; - } - } - - /** Sort the array using the specified compare function pointer - * \param pCompareFunc The compare function to use to sort elements. */ - inline void Sort(CompareFunc pCompareFunc) - { - qsort(mArray, mSize, sizeof(T), pCompareFunc); - } - - //! Get pointer to internal array of elements. - inline T* GetArray() const { return mArray ? (T*)mArray : NULL; } - - //! Cast operator. - inline operator T* (){ return mArray ? (T*)mArray : NULL; } - - /** Append another array at the end of this array. - * \param pOther The other array to append to this array. */ - inline void AddArray(const FbxArray& pOther) - { - if( Grow(pOther.mSize) ) - { - memcpy(&mArray[mSize - pOther.mSize], pOther.mArray, pOther.mSize * sizeof(T)); - } - } - - /** Append the elements of another array at the end of this array if they are not present. - * \param pOther Another array. */ - inline void AddArrayNoDuplicate(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - AddUnique(pOther[i]); - } - } - - /** Remove the elements of another array from this array is they are present. - * \param pOther Another array. */ - inline void RemoveArray(const FbxArray& pOther) - { - for( int i = 0, c = pOther.mSize; i < c; ++i ) - { - RemoveIt(pOther[i]); - } - } - - /** Operator to copy elements of an array. - * \return this array containing a copy of pOther elements. */ - inline FbxArray& operator=(const FbxArray& pOther) - { - if( this != &pOther ) - { - if( Resize(pOther.mSize) ) - { - memcpy(mArray, pOther.mArray, pOther.mSize * sizeof(T)); - } - } - return *this; - } - - /** Operator to compare elements of an array. - * \return \c true if the two arrays are equal, otherwise \c false. */ - inline bool operator==(const FbxArray& pOther) const - { - if( this == &pOther ) return true; - if( mSize != pOther.mSize ) return false; - return memcmp(mArray, pOther.mArray, sizeof(T) * mSize) == 0; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline int GetCount() const { return mSize; } - -private: - inline T* Allocate(const int pCapacity) - { - return (T*)FbxRealloc(mArray, FbxAllocSize(pCapacity, sizeof(T))); - } - - int mSize; - int mCapacity; - T* mArray; - -#if defined(FBXSDK_COMPILER_MSC) - //Previously class FbxArray is for pointers. Somehow, it's used to store other types. Here's a compile-time checking for known incompatible classes. - //If it happens you find new incompatible ones, declare them with macro FBXSDK_INCOMPATIBLE_WITH_ARRAY. Also see file fbxstring.h. - FBX_ASSERT_STATIC(FBXSDK_IS_SIMPLE_TYPE(T) || __is_enum(T) || (__has_trivial_constructor(T)&&__has_trivial_destructor(T)) || !FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T)); -#endif - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Call FbxFree on each element of the array, and then clear it. -template inline void FbxArrayFree(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxFree(pArray[i]); - } - pArray.Clear(); -} - -//! Call FbxDelete on each element of the array, and then clear it. -template inline void FbxArrayDelete(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - FbxDelete(pArray[i]); - } - pArray.Clear(); -} - -//! Call Destroy on each element of the array, and then clear it. -template inline void FbxArrayDestroy(FbxArray& pArray) -{ - for( int i = 0, c = pArray.Size(); i < c; ++i ) - { - (pArray[i])->Destroy(); - } - pArray.Clear(); -} - -//! Make sure to break build if someone try to make FbxArray>, which is not supported. -template FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(FbxArray); - -#include - -#endif /* _FBXSDK_CORE_BASE_ARRAY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxbitset.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxbitset.h deleted file mode 100755 index cf5c8a5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxbitset.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbitset.h -#ifndef _FBXSDK_CORE_BASE_BITSET_H_ -#define _FBXSDK_CORE_BASE_BITSET_H_ - -#include - -#include - -/** An automatic growing array of bit. - * - * The bit array will automatically grow when specifying bit indexes that are greater - * than the array size when calling SetBit or UnsetBit. Indexes can vary from 0 to - * FBXSDK_UINT_MAX-1. When an invalid index is returned from any functions, FBXSDK_UINT_MAX - * is returned. The bit array is not thread safe. - */ -class FBXSDK_DLL FbxBitSet -{ -public: - /** Constructor. - * \param pInitialSize Initial bit array size in bit count (not in byte count!). - */ - FbxBitSet(const FbxUInt pInitialSize=0); - - //! Destructor. - virtual ~FbxBitSet(); - - /** Set the bit at the specified bit index to true regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void SetBit(const FbxUInt pBitIndex); - - /** Set all the bits to the specified value regardless of their current value. - * \param pValue The boolean value to set to all bits. - */ - void SetAllBits(const bool pValue); - - /** Set the bit at the specified bit index to false regardless of its current value. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - */ - void UnsetBit(const FbxUInt pBitIndex); - - /** Get the bit boolean value at the specified bit index. - * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return True if the bit is set, false otherwise. - */ - bool GetBit(const FbxUInt pBitIndex) const; - - /** Get the bit index of the first bit that is currently set. - * \return The bit index of the first set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetFirstSetBitIndex() const; - - /** Get the bit index of the last bit that is currently set. - * \return The bit index of the last set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetLastSetBitIndex() const; - - /** Get the bit index of the next set bit after the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the next set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetNextSetBitIndex(const FbxUInt pBitIndex) const; - - /** Get the bit index of the previous set bit before the specified bit index. - * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. - * \return The bit index of the previous set bit, FBXSDK_UINT_MAX if none found. - */ - FbxUInt GetPreviousSetBitIndex(const FbxUInt pBitIndex) const; - -private: - void Grow(const FbxUInt pNewSize); - - void* mData; - FbxUInt mSize; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_BITSET_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcharptrset.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcharptrset.h deleted file mode 100755 index c697e44..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcharptrset.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharptrset.h -#ifndef _FBXSDK_CORE_BASE_CHARPTRSET_H_ -#define _FBXSDK_CORE_BASE_CHARPTRSET_H_ - -#include - -#include - -/** This class contains the data structure support for char pointer set. - */ -class FBXSDK_DLL FbxCharPtrSet -{ -public: - /** Class constructor - * \param pItemPerBlock Number of item per block. Default is 20. */ - FbxCharPtrSet(int pItemPerBlock=20); - - //! Class destructor - ~FbxCharPtrSet(); - - /** Add a new item. - * \param pReference char pointer reference to the item. - * \param pItem FbxHandle to the item. */ - void Add(const char* pReference, FbxHandle pItem); - - /** Removes an item. - * \param pReference char reference to the item. - * \return true if successful. */ - bool Remove(const char* pReference); - - /** Get an item's reference. - * \param pReference char reference to the item. - * \param PIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle Get(const char* pReference, int* PIndex=NULL); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle& operator[](int pIndex); - - /** Get an item's reference from index. - * \param pIndex index to the item. - * \param pReference char reference to the item. - * \return FbxHandle to the item, NULL if fails. */ - FbxHandle GetFromIndex(int pIndex, const char** pReference=NULL); - - /** Removes an item by index. - * \param pIndex index to the item. */ - void RemoveFromIndex(int pIndex); - - /** Get the number of item in the array. - * \return the number of element in the set. */ - inline int GetCount() const { return mCharPtrSetCount; } - - //! Sorts the array. - void Sort(); - - //! Clears the array. - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct CharPtrSet; - - inline void SetCaseSensitive(bool pIsCaseSensitive){ mIsCaseSensitive = pIsCaseSensitive; } - -private: - CharPtrSet* FindEqual(const char* pReference) const; - - CharPtrSet* mCharPtrSetArray; - int mCharPtrSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; - bool mIsCaseSensitive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CHARPTRSET_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h deleted file mode 100755 index 4863312..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxcontainerallocators.h +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainerallocators.h -#ifndef _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ -#define _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ - -#include - -#include - -/** An allocator class for use as a template parameter to one of the - * container class (FbxMap, FbxSet, FbxDynamicArray...) must implement these. - */ -class FBXSDK_DLL FbxBaseAllocator -{ -public: - /** The class constructor. - * \param pRecordSize the size of one record held by the container. - * \remarks The parameter pRecordSize is not necessarily the same - * size as of the value type, since the - * container may wrap the value into a private class. - */ - FbxBaseAllocator(const size_t pRecordSize) : - mRecordSize(pRecordSize) - { - } - - /** This tells the allocator that we are about to call AllocateRecords - * one or many times to allocate pRecordCount records. - * \param pRecordCount - * \remarks This gives the allocator a chance to do whatever it deems necessary - * to optimize subsequent allocations, for example, by preallocating a - * sufficiently large pool of memory. - */ - void Reserve(const size_t /*pRecordCount*/) - { - // By default, ignore all preallocating requests. - } - - /** Returns a pointer to a uninitialized continuous block of memory - * able to hold pRecordCount * pRecordSize bytes. - * \param pRecordCount - * \remarks pRecordSize was defined in the Constructor description, above. - */ - void* AllocateRecords(const size_t pRecordCount=1) - { - return FbxMalloc(FbxAllocSize(pRecordCount, mRecordSize)); - } - - /** Frees a block of memory returned by AllocateRecords. - * \param pRecord - */ - void FreeMemory(void* pRecord) - { - FbxFree(pRecord); - } - - /** \return the size of each record allocated. - */ - size_t GetRecordSize() const - { - return mRecordSize; - } - -private: - size_t mRecordSize; -}; - -/** This allocator only frees the allocated memory when it is deleted. - * This is a good allocator for building dictionaries, where we only - * add things to a container, but never remove them. - */ -class FbxHungryAllocator -{ -public: - FbxHungryAllocator(size_t pRecordSize) : - mRecordSize(pRecordSize), - mRecordPoolSize(0), - mData(NULL) - { - } - - FbxHungryAllocator(const FbxHungryAllocator& pOther) : - mRecordSize(pOther.mRecordSize), - mRecordPoolSize(pOther.mRecordPoolSize), - mData(NULL) - { - } - - ~FbxHungryAllocator() - { - MemoryBlock* lCurrent = mData; - MemoryBlock* lNext = lCurrent ? lCurrent->mNextBlock : 0; - while (lCurrent) - { - FbxDelete(lCurrent); - lCurrent = lNext; - lNext = lCurrent ? lCurrent->mNextBlock : 0; - } - } - - void Reserve(const size_t pRecordCount) - { - MemoryBlock* lMem = FbxNew< MemoryBlock >(pRecordCount* mRecordSize); - lMem->mNextBlock = mData; - mData = lMem; - mRecordPoolSize += pRecordCount; - } - - void* AllocateRecords(const size_t pRecordCount = 1) - { - MemoryBlock* lBlock = mData; - void* lRecord = NULL; - - while( (lBlock != NULL) && ((lRecord = lBlock->GetChunk(pRecordCount * mRecordSize)) == NULL) ) - { - lBlock = lBlock->mNextBlock; - } - - if( lRecord == NULL ) - { - size_t lNumRecordToAllocate = mRecordPoolSize / 8 == 0 ? 2 : mRecordPoolSize / 8; - if( lNumRecordToAllocate < pRecordCount ) - { - lNumRecordToAllocate = pRecordCount; - } - Reserve(lNumRecordToAllocate); - lRecord = AllocateRecords(pRecordCount); - } - return lRecord; - } - - void FreeMemory(void* /*pRecord*/) - { - // "Hungry": release memory only when the allocator is destroyed. - } - - size_t GetRecordSize() const - { - return mRecordSize; - } - - FbxHungryAllocator& operator=(const FbxHungryAllocator& pOther) - { - if( this != &pOther ) - { - // The next call to AllocateRecords() may skip over currently reserved - // records if the size changes drastically, but otherwise GetChunk() - // is size-oblivious. - if( mRecordSize < pOther.mRecordSize ) - { - mRecordPoolSize = 0; - } - - mRecordSize = pOther.mRecordSize; - } - return(*this); - } - -private: - class MemoryBlock - { - public: - MemoryBlock(size_t pSize) : - mNextBlock(NULL), - mData(NULL), - mFreeData(NULL), - mEnd(NULL) - { - mData = FbxMalloc(pSize); - mFreeData = mData; - mEnd = reinterpret_cast(mData) + pSize; - } - - ~MemoryBlock() - { - FbxFree(mData); - } - - void* GetChunk(const size_t pSize) - { - if( reinterpret_cast(mFreeData) + pSize < mEnd ) - { - void* lChunk = mFreeData; - mFreeData = reinterpret_cast(mFreeData) + pSize; - return lChunk; - } - return NULL; - } - - MemoryBlock* mNextBlock; - void* mData; - void* mFreeData; - void* mEnd; - }; - - size_t mRecordSize; - size_t mRecordPoolSize; - MemoryBlock* mData; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h deleted file mode 100755 index e04a01c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxdynamicarray.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdynamicarray.h -#ifndef _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ -#define _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ - -#include - -#include - -#include - -/** Template class for dynamic array holding objects. - * \nosubgrouping - * \see FbxStaticArray - */ -template class FbxDynamicArray -{ -public: - //! Default constructor. - FbxDynamicArray() : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - } - - /** Constructor. - * \param pInitialSize initial capacity of this array */ - FbxDynamicArray(const size_t pInitialSize) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pInitialSize); - } - - /** Copy constructor. - * \remarks The copy constructor of \c Type will be - * invoked in order to copy the value of elements to the - * new array. - */ - FbxDynamicArray(const FbxDynamicArray& pArray) : - mArray(NULL), - mCapacity(0), - mSize(0), - mAllocator(sizeof(Type)) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - } - - //! Destructor. - ~FbxDynamicArray() - { - for( size_t i = 0; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mAllocator.FreeMemory(mArray); - } - - //! Gets the current capacity of the array. - size_t Capacity() const - { - return mCapacity; - } - - //! Gets the size of the array. - size_t Size() const - { - return mSize; - } - - /** Assures that sufficient memory is allocated to hold n objects in the array, and increases the capacity if necessary. - * \param pCount Number of objects to reserve */ - void Reserve(const size_t pCount) - { - if( pCount > mCapacity ) - { - //We don't use mAllocator.PreAllocate, because we want our array to be continuous in memory. - Type* lNewArray = (Type*)mAllocator.AllocateRecords(pCount); - MoveArray(lNewArray, mArray, mSize); - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mCapacity = pCount; - } - } - - /** Appends n objects at the end of the array. - * \param pItem object to append - * \param pNCopies number of copies to append */ - void PushBack(const Type& pItem, const size_t pNCopies = 1) - { - if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - Reserve(lNewSize); - } - FBX_ASSERT(mSize + pNCopies <= mCapacity); - Fill(mArray + mSize, pItem, pNCopies); - mSize += pNCopies; - } - - /** Inserts n objects at the specified position. - * \param pIndex position index - * \param pItem object to insert - * \param pNCopies number of copies to append */ - void Insert(const size_t pIndex, const Type& pItem, const size_t pNCopies=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - Type lValue = pItem; // in case pItem is in array - if( pNCopies == 0 ) - { - } - else if( pIndex >= mSize ) - { - PushBack(pItem, pNCopies); - } - else if( mSize + pNCopies > mCapacity ) - { - size_t lNewSize = mCapacity + mCapacity / 2; //not enough room, grow by 50% - if( mSize + pNCopies > lNewSize ) - { - lNewSize = mSize + pNCopies; - } - - Type* lNewArray = (Type*)mAllocator.AllocateRecords(lNewSize); - MoveArray(lNewArray, mArray, pIndex); // copy prefix - Fill(lNewArray + pIndex, pItem, pNCopies); // copy values - MoveArray(lNewArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); // copy suffix - mAllocator.FreeMemory(mArray); - mArray = lNewArray; - mSize += pNCopies; - mCapacity = lNewSize; - } - else - { - // copy suffix backwards - MoveArrayBackwards(mArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); - Fill(mArray + pIndex, pItem, pNCopies); // copy values - mSize += pNCopies; - } - } - - /** Removes n objects at the end. - * \param pNElements number of objects to remove */ - void PopBack(size_t pNElements=1) - { - FBX_ASSERT(pNElements <= mSize); - for( size_t i = mSize - pNElements; i < mSize; ++i ) - { - mArray[i].~Type(); - } - mSize -= pNElements; - } - - /** Removes n objects at the specified position. - * \param pIndex position index - * \param pNElements number of objects to remove */ - void Remove(const size_t pIndex, size_t pNElements=1) - { - FBX_ASSERT(pIndex >= 0); - FBX_ASSERT(pIndex <= mSize); - FBX_ASSERT(pIndex + pNElements <= mSize); - if( pIndex + pNElements >= mSize ) - { - PopBack(pNElements); - } - else - { - for( size_t i = pIndex; i < pIndex + pNElements; ++i ) - { - mArray[i].~Type(); - } - MoveOverlappingArray(&mArray[pIndex], &mArray[pIndex + pNElements], mSize - pIndex - pNElements); - mSize -= pNElements; - } - } - - /** Gets nth object in the array. - * \param pIndex position index */ - Type& operator[](const size_t pIndex) - { - return mArray[pIndex]; - } - - /** Gets nth object in the array. - * \param pIndex position index */ - const Type& operator[](const size_t pIndex) const - { - return mArray[pIndex]; - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - Type& First() - { - return operator[](0); - } - - /** Retrieve the first item in the array. - * \return The first item in the array. */ - const Type& First() const - { - return operator[](0); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - Type& Last() - { - return operator[](mSize-1); - } - - /** Retrieve the last item in the array. - * \return The last item in the array. */ - const Type& Last() const - { - return operator[](mSize-1); - } - - /** Find first matching element, from first to last. - * \param pItem The item to try to find in the array. - * \param pStartIndex The index to start searching from. - * \return Index of the first matching item, otherwise returns -1 (equivalent of SIZE_MAX for size_t). */ - size_t Find(const Type& pItem, const size_t pStartIndex=0) const - { - for( size_t i = pStartIndex; i < mSize; ++i ) - { - if( operator[](i) == pItem ) return i; - } - return -1; - } - - /** Assignment operator. - * \remarks The copy constructor of \c Type will be invoked in order to copy the value of elements to the new array. */ - FbxDynamicArray& operator=(const FbxDynamicArray& pArray) - { - Reserve(pArray.mCapacity); - CopyArray(mArray, pArray.mArray, pArray.mSize); - mSize = pArray.mSize; - return *this; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - static void CopyArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - } - - static void MoveArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - } - - for( int i = 0; i < int(pCount); i++ ) - { - pSrc[i].~Type(); - } - } - - static void MoveOverlappingArray(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe - pSrc[i].~Type(); - } - } - - static void MoveArrayBackwards(Type* pDest, const Type* pSrc, size_t pCount) - { - for( int i = 0; i < int(pCount); ++i ) - { - new(&(pDest[pCount-1-i])) Type(pSrc[pCount-1-i]); //in-place new won't allocate memory, so it is safe - pSrc[pCount-1-i].~Type(); - } - } - - static void Fill(Type* pDest, const Type& pItem, size_t pCount) - { - for( int i = 0; i < int(pCount); i++ ) - { - new(&(pDest[i])) Type(pItem); //in-place new won't allocate memory, so it is safe - } - } - - Type* mArray; - size_t mCapacity; - size_t mSize; - Allocator mAllocator; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfile.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfile.h deleted file mode 100755 index 1a149b8..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfile.h +++ /dev/null @@ -1,257 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfile.h -#ifndef _FBXSDK_CORE_BASE_FILE_H_ -#define _FBXSDK_CORE_BASE_FILE_H_ - -#include - -#include - -#include - -class FbxStream; - -/** - Class for interfacing with files, providing a similar interface for files independant of the OS or filesystem. -*/ -class FBXSDK_DLL FbxFile -{ -public: - enum EMode {eNone, eReadOnly, eReadWrite, eCreateWriteOnly, eCreateReadWrite, eCreateAppend}; - enum ESeekPos {eBegin, eCurrent, eEnd}; - - FbxFile(); - virtual ~FbxFile(); - - /** Opens a file on disk using the specified read/write mode. - * \param pFileName_UTF8 Filename in UTF8 (compatible with ASCII) - * \param pMode Mode in which to open the file, e.g. eReadOnly, eCreateReadWrite, etc. - * \param pBinary Whether the file is to be opened in binary or text mode. - * \return True if opening is successful. - */ - virtual bool Open(const char* pFileName_UTF8, const EMode pMode=eCreateReadWrite, const bool pBinary=true); - - /** Opens a file from a data stream using the specified read/write mode. - * \param pStream Stream instance with which the file will be read/written - * \param pStreamData User-defined data to pass as a parameter to the stream's Open() method. - * \param pMode Deprecated/Unused. - * \return True if opening is successful. - */ - virtual bool Open(FbxStream* pStream, void* pStreamData, const char* pMode); - - /** Closes a file, freeing its handle. - * \return True if closing is successful. - */ - virtual bool Close(); - - /** Seek to a specific position in the file, starting from either beginning, current position or end - * \param pOffset Offset to seek to (advance the file position cursor) starting from pSeekPos - * \param pSeekPos Starting position from which to seek to. Beginning, current position or end. - */ - virtual void Seek(const FbxInt64 pOffset, const ESeekPos pSeekPos=eBegin); - - /** Returns the position at which the file cursor currently is. For example, will be ==0 for beginning and ==FileSize for end. - * \return The position at which the file cursor currently is. - */ - virtual FbxInt64 Tell() const; - - /** Read a part of the file into a buffer - * \param pDstBuf Pre-allocated buffer in which to read data - * \param pSize Size of the data chunk to be read in bytes - * \return Number of bytes read. - */ - virtual size_t Read(void* pDstBuf, const size_t pSize); - - /** Read a part of the file as a string into a buffer - * \param pDstBuf Pre-allocated buffer in which to read the string - * \param pDstSize Size of the data chunk to be read in characters - * \param pStopAtFirstWhiteSpace If true, will stop reading at first white space, otherwise it will stop at the first line feed (\n) - * \return Pointer on the data read. Equivalent to parameter pDstBuf - */ - virtual char* ReadString(char* pDstBuf, const size_t pDstSize, bool pStopAtFirstWhiteSpace=false); - - /** Write a buffer to an opened file - * \param pSrcBuf Pre-allocated buffer from which to write data - * \param pSize Size of the data chunk to be written in bytes - * \return Number of bytes written. - */ - virtual size_t Write(const void* pSrcBuf, const size_t pSize); - - /** Write a formatted string to an opened file - * \param pFormat Pre-allocated format buffer from which to write data - * \param ... Variable number of arguments describing the values in the previous parameter. - * \return True if data was successfully written - */ - virtual bool WriteFormat(const char* pFormat, ...); - - /** Modify the size of a file. Null characters ('\0') are appended if the file is extended. - * If the file is truncated, all data from the end of the shortened file to the original length of the file is lost. - * Please note that this function considers the current file cursor as the beginning of the file. - * It is therefore required to use Seek(0) prior to calling it if we want the size specified by the - * pSize parameter to be absolute. - * \param pSize New desired file size - * \return True if file was successfully truncated - */ - virtual bool Truncate(const FbxInt64 pSize); - - /** Checks whether the current file cursor position is at the end of file. - * \return True if the cursor is at the end of file, false otherwise. - */ - virtual bool EndOfFile() const; - - /** Gets the size of the currently opened file. - * \return File size - */ - virtual FbxInt64 GetSize(); - - /** Unused function in this default implementation. Must be implemented by memory files. - * \param pMemPtr Unused - * \param pSize Unused - */ - virtual void GetMemoryFileInfo(void** pMemPtr, size_t pSize); - - /** Checks whether the file is currently opened. - * \return True if file is opened, false otherwise - */ - bool IsOpen() const; - - /** Checks whether the file is currently opened with a user-provided streaming interface instead of just the file name - * \return True if file has been opened with a stream interface, false otherwise - */ - bool IsStream() const; - - /** Returns the full file path name, as provided when opening it. - * \return File full path - */ - const char* GetFilePathName() const; - - /** Returns the mode with which the file was opened, when calling the Open() method. - * \return Mode with which the file was opened - */ - EMode GetFileMode() const; - - /** Returns last encountered error when performing any operation on the file. - * \return Last error code - */ - int GetLastError(); - - /** Resets the current error code and the end of file indicator of the opened file - */ - void ClearError(); - -protected: - FILE* mFilePtr; - FbxStream* mStreamPtr; - bool mIsOpen; - bool mIsStream; - EMode mMode; - FbxString mFileName; -}; - -class FBXSDK_DLL FbxFileUtils -{ -public: - /** Delete a file from disk. - * \param pFileName_UTF8 The file to be deleted. - * \return True if delete is successful. - */ - static bool Delete(const char* pFileName_UTF8); - - /** Rename a file on disk. - * \param pFileName_UTF8 The file to be renamed. - * \param pNewName_UTF8 The new file name upon rename. - * \return True if rename is successful. - */ - static bool Rename(const char* pFileName_UTF8, const char* pNewName_UTF8); - - /** Copy one file's content to another file (if the destination file not exist, it will be created). - * \param pDestination_UTF8 The destination file path - * \param pSource_UTF8 The source file path - * \return Return true if copy is successfully. - */ - static bool Copy(const char* pDestination_UTF8, const char* pSource_UTF8); - - //! Get given file's size. - static FbxInt64 Size(const char* pFilePath_UTF8); - - /** Find if the specified file exist. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file exist. - */ - static bool Exist(const char* pFilePath_UTF8); - - /** Find if the specified file is in read-only mode. - * \param pFilePath_UTF8 The file path to test against. - * \return Returns true if the file is in read-only mode. - */ - static bool IsReadOnly(const char* pFilePath_UTF8); - - // We return a KLong that in fact is a cast of a time_t. - //! Get given file's last date. - static FbxLong GetLastDate(const char* pPath_UTF8); - - //! Set the given file's last date as the given date. - static bool SetLastDate(const char* pPath_UTF8, FbxLong pTime); - - /** Get some content of a file. - * \param pStr The content get from file. - * \param pSize The size of content. - * \param pStream The opened stream of file. - */ - static char* FGets(char* pStr, int pSize, FILE* pStream); -}; - -template inline const T FbxSwab(const T x) -{ - switch( sizeof(x) ) - { - case 2: - { - FbxUInt8 t[2]; - t[0] = ((FbxUInt8*)&x)[1]; - t[1] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 4: - { - FbxUInt8 t[4]; - t[0] = ((FbxUInt8*)&x)[3]; - t[1] = ((FbxUInt8*)&x)[2]; - t[2] = ((FbxUInt8*)&x)[1]; - t[3] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - case 8: - { - FbxUInt8 t[8]; - t[0] = ((FbxUInt8*)&x)[7]; - t[1] = ((FbxUInt8*)&x)[6]; - t[2] = ((FbxUInt8*)&x)[5]; - t[3] = ((FbxUInt8*)&x)[4]; - t[4] = ((FbxUInt8*)&x)[3]; - t[5] = ((FbxUInt8*)&x)[2]; - t[6] = ((FbxUInt8*)&x)[1]; - t[7] = ((FbxUInt8*)&x)[0]; - return *(T*)&t; - } - - default: - return x; - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_FILE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfolder.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfolder.h deleted file mode 100755 index 4ce9170..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxfolder.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfolder.h -#ifndef _FBXSDK_CORE_BASE_FOLDER_H_ -#define _FBXSDK_CORE_BASE_FOLDER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -#include - -/** Class for iterating into file system folders and the items contained. */ -class FBXSDK_DLL FbxFolder -{ -public: - //! The different entry type that can be found in folders. - enum EEntryType - { - eRegularEntry, //!< Regular entry, such as file. - eFolderEntry //!< Folder entry that potentially contain more files. - }; - - /** Open the specified folder for browsing its content. - * \param pFolderPath_UTF8 The folder path to open. - * \return True if the folder path was successfully open, false otherwise. */ - bool Open(const char* pFolderPath_UTF8); - - /** Get the next item in the folder. - * \return True if another item was found after the current one. */ - bool Next(); - - /** Get the type of the current entry in the folder. - * \return The entry type. */ - EEntryType GetEntryType() const; - - /** Retrieve the name of the current entry in the folder. - * \return The name of the current entry. */ - FbxString GetEntryName() const; - - /** Retrieve the extension name of the current entry. - * \return The extension name of the current entry. */ - char* GetEntryExtension() const; - - /** Close the folder when done browsing its content. */ - void Close(); - - /** Find out if the folder was successfully opened the last time Open was called. - * \return True if the folder is currently open. */ - bool IsOpen() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFolder(); - ~FbxFolder(); - -private: - struct FolderImpl; - FolderImpl* mImpl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_BASE_FOLDER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxhashmap.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxhashmap.h deleted file mode 100755 index 825cbf6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxhashmap.h +++ /dev/null @@ -1,411 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhashmap.h -#ifndef _FBXSDK_CORE_BASE_HASHMAP_H_ -#define _FBXSDK_CORE_BASE_HASHMAP_H_ - -#include - -#include -#include - -#include - -template class FbxNoOpDestruct { public: static inline void DoIt(T&) {} }; -template class FbxPtrDestruct { public: static inline void DoIt(T& v) { FbxDelete(v); v = NULL; } }; - -//True if equal, false otherwise -template class FbxDefaultComparator{ public: static inline bool CompareIt( const T& t1, const T& t2 ) { return t1 == t2; } }; - -/** \brief This object represents a standard hash map. You must provide the typename of KEY and VALUE as well - as the typename of the class that contains the hash function to use to hash values. The hash class must - overload operator() and be built like this. - \code - class SimpleHash - { - public: - inline unsigned int operator() ( const int pKey ) const - { - return pKey; - } - }; - \endcode - * \nosubgrouping - */ -template< typename KEY, typename VALUE, typename HASH, class Destruct = FbxNoOpDestruct, class Comparator = FbxDefaultComparator > -class FbxHashMap -{ -public: - typedef KEY KeyType; - typedef VALUE ValueType; - typedef HASH HashFunctorType; - -private: - - class ListItem - { - public: - ListItem* mNext; - ValueType mValue; - KeyType mKey; - - ListItem() - : - mNext(NULL) - { - } - - ~ListItem() - { - Destruct::DoIt(mValue); - } - }; - -public: - /** - Iterate through every element in a hash map. - */ - class Iterator - { - public: - - typedef ListItem ListItemType; - typedef FbxPair< KeyType, ValueType > KeyValuePair; - - /** - Copy constructor - */ - Iterator( const Iterator& pOther ) - : - mMap( pOther.mMap ), - mBucketIndex( pOther.mBucketIndex ), - mCurrentItem( pOther.mCurrentItem ) - { - - } - - /** - Destructor - */ - ~Iterator(){}; - - /** - Used to dereference an iterator and give it a behavior more similar to a pointer. - \return The KeyValuePair currently referenced by the iterator - */ - KeyValuePair operator*() const - { - KeyValuePair lItem; - - if( mCurrentItem ) - { - lItem.mFirst = mCurrentItem->mKey; - lItem.mSecond = mCurrentItem->mValue; - return lItem; - } - - FBX_ASSERT_NOW("Accessing out of bounds iterator"); - - return lItem; - } - - /** - Advances the iterator to the next keyvaluepair in the hashmap. It does not wrap around so - advancing after reaching the last element will not point back to the first one. - */ - void Next() - { - if( !mCurrentItem ) - return; - - if( mCurrentItem->mNext ) - { - mCurrentItem = mCurrentItem->mNext; - return; - } - else - { - mBucketIndex++; - for( ; mBucketIndex < mMap->mBuckets.GetCount(); ++mBucketIndex ) - { - if( mMap->mBuckets[ mBucketIndex ] ) - { - mCurrentItem = mMap->mBuckets[ mBucketIndex ]; - return; - } - } - - if( mBucketIndex >= mMap->mBuckets.GetCount() ) - { - *this = mMap->End(); - return; - } - } - } - - /** - Check equivalence between two iterators. There are 3 conditions for equivalence between 2 iterators: - 1) Item being referenced by the iterator must be equivalent - 2) They must point at the same index - 3) They must point on the same map - \return true if both iterators are equal, false otherwise - */ - bool operator==( const Iterator& pOther ) const - { - return mCurrentItem == pOther.mCurrentItem && - mBucketIndex == pOther.mBucketIndex && - mMap == pOther.mMap; - } - - /** - Check inequivalence between 2 iterators. Please see operator== for more information. - \return true if both iterators are NOT equal, false if they are - */ - bool operator!=( const Iterator& pOther ) const - { - return !(*this == pOther); - } - - /** - Assign the current iterator to the one on the right hand side of the operator. After assignment they will - reference the same object, at the same index, in the same map. - \return The new iterator - */ - Iterator& operator=( const Iterator& pOther ) - { - this->mBucketIndex = pOther.mBucketIndex; - this->mMap = pOther.mMap; - this->mCurrentItem = pOther.mCurrentItem; - return *this; - } - - private: - const FbxHashMap* mMap; - - int mBucketIndex; - ListItemType* mCurrentItem; - - Iterator(const FbxHashMap* pMap, int pBucketIndex, ListItemType* pCurrentItem) - : - mMap( pMap ), - mBucketIndex(pBucketIndex), - mCurrentItem(pCurrentItem) - { - - } - - friend class FbxHashMap; - }; - - /** - Construct a FbxHashMap with an user-defined maximum number of elements. - \param pBucketSize Initial maximum number of elements. - */ - FbxHashMap( int pBucketSize ) - { - mBuckets.Resize( pBucketSize ); - } - - /** - Construct a FbxHashMap with the default maximum number of elements (30) - */ - FbxHashMap() - { - mBuckets.Resize(30); - } - - /** - Clear all elements in the hash map before destroying itself - */ - ~FbxHashMap() - { - Clear(); - mBuckets.Clear(); - } - - /** - Calls operator delete on all elements of the hashmap, de-allocating all memory and destroying them - */ - void Clear() - { - for( int i = 0; i < mBuckets.GetCount(); ++i) - { - if( mBuckets[i] ) - { - ListItem* lNext = mBuckets[i]->mNext; - while( lNext ) - { - ListItem* lNextNext = lNext->mNext; - FbxDelete(lNext); - lNext = lNextNext; - } - - FbxDelete(mBuckets[i]); - mBuckets[i] = NULL; - } - } - } - - /** - Find an element in the hashmap. If no element exist with the specified key, returns an iterator pointing on the - end of the map (not an actual KeyValuePair). - \param pKey The value of the key corresponding to the element - \return An Iterator referencing that element - */ - const Iterator Find( const KeyType& pKey ) const - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - /** - Remove an element in the hashmap. - \param pKey The key value of the element to remove - \return The value of the element that was just deleted. If the element does not exist, a value created with its default constructor will be returned - */ - VALUE Remove( const KEY& pKey ) - { - unsigned int lIndex = mHashFunctor(pKey); - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets.GetAt(lIndex); - ListItem* lLastItem = NULL; - - while( lItem ) - { - if( lItem->mKey == pKey ) - { - if( lLastItem ) - lLastItem->mNext = lItem->mNext; - - if( mBuckets.GetAt(lIndex) == lItem ) - mBuckets.SetAt(lIndex, lItem->mNext ); - - VALUE lValue = lItem->mValue; - FbxDelete(lItem); - - return lValue; - } - - lLastItem = lItem; - lItem = lItem->mNext; - } - - return VALUE(); - } - - /** Add or retrieve a KeyValuePair from the Hashmap. If there is already an entry in the map for an element - with key value specified in parameter, the value will be returned. Otherwise, a new entry will be created - with this key value and the default value for ValueType will be returned. It can be modified using the - assignment operator - \param pKey The key for which to retrieve/add a value. - \return Value of the element referenced by the key specified in parameter. - */ - ValueType& operator[]( const KeyType& pKey ) - { - unsigned int lIndex = 0; - Iterator lIt = InternalFind( pKey, lIndex); - if( lIt != End() ) - { - return lIt.mCurrentItem->mValue; - } - - lIndex = lIndex % mBuckets.GetCount(); - ListItem* lItem = FbxNew< ListItem >(); - lItem->mNext = NULL; - lItem->mKey = pKey; - - if( !mBuckets.GetAt(lIndex) ) - { - mBuckets.SetAt(lIndex, lItem); - } - else - { - lItem->mNext = mBuckets.GetAt(lIndex); - mBuckets.SetAt(lIndex, lItem); - } - - return lItem->mValue; - } - - /** Returns an iterator pointing on the first non-null element in the map - \return An iterator pointing on the first non-null element in the map. - */ - Iterator Start() const - { - for( int i = 0; i < mBuckets.GetCount(); ++i ) - { - if( mBuckets[i] ) - { - Iterator lIt( this, i, mBuckets[i] ); - return lIt; - } - } - - return End(); - } - - /** Returns an iterator pointing on the last element in the map. This is not an actual KeyValuePair but - * but an iterator pointing on a null element. - \return Iterator pointing on a null value at the end of the map - */ - Iterator End() const - { - Iterator lIt( this, 0, NULL ); - return lIt; - } - -private: - - // Avoid calculating the hashvalue twice - const Iterator InternalFind( const KeyType& pKey, unsigned int& pOutCalculatedIndex ) const - { - pOutCalculatedIndex = mHashFunctor(pKey); - unsigned int lIndex = pOutCalculatedIndex % mBuckets.GetCount(); - ListItem* lItem = mBuckets[lIndex]; - while( lItem ) - { - if( Comparator::CompareIt( lItem->mKey, pKey ) ) - { - Iterator lIt( this, lIndex, lItem ); - return lIt; - } - lItem = lItem->mNext; - } - - return End(); - } - - - // not implemented yet! - FbxHashMap( const FbxHashMap& pOther ) {}; - - FbxArray mBuckets; - HashFunctorType mHashFunctor; - - friend class Iterator; -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_HASHMAP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h deleted file mode 100755 index b4f3e93..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxintrusivelist.h +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxintrusivelist.h -#ifndef _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ -#define _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#define FBXSDK_INTRUSIVE_LIST_NODE(Class, NodeCount)\ - public: inline FbxListNode& GetListNode(int index = 0){ return this->mNode[index]; }\ - private: FbxListNode mNode[NodeCount]; - -template class FbxListNode -{ - typedef FbxListNode NodeT; - -public: - explicit FbxListNode(T* pData = 0):mNext(0),mPrev(0),mData(pData){} - ~FbxListNode(){ Disconnect(); } - - void Disconnect() - { - if ( mPrev != 0 ) - mPrev->mNext = mNext; - - if ( mNext != 0 ) - mNext->mPrev = mPrev; - - mPrev = mNext = 0; - } - - NodeT* mNext; - NodeT* mPrev; - T* mData; -}; - -//----------------------------------------------------------------- -// template arg T: Type listed -// arg NodeIndex: If an object listed has multiple list node, which -// index corresponds to the right node -template class FbxIntrusiveList -{ -public: - typedef T allocator_type; - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T* pointer; - typedef const T* const_pointer; - - typedef FbxListNode NodeT; - - // Construction / Destruction - FbxIntrusiveList():mHead(0) - { - mHead.mNext = mHead.mPrev = &mHead; - } - ~FbxIntrusiveList() - { - while(!Empty()) - Begin().Get()->Disconnect(); // LINUXNote: should be Erase(Begin()); but there's an issue with gcc 4.2 - }; - - // true if the list's size is 0. - bool Empty() const - { - return ((mHead.mNext==&mHead)&&(mHead.mPrev==&mHead)); - } - - // Back Insertion Sequence Inserts a new element at the end. - void PushBack(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = &mHead; - pNode->mPrev = mHead.mPrev; - - pNode->mPrev->mNext = pNode; - mHead.mPrev = pNode; - } - } - - void PushFront(T& pElement) - { - NodeT* pNode = &pElement.GetListNode(NodeIndex); - pNode->mData = &pElement; - - if (Empty()) - { - pNode->mNext = &mHead; - pNode->mPrev = &mHead; - mHead.mNext = pNode; - mHead.mPrev = pNode; - } - else - { - pNode->mNext = mHead.mNext; - pNode->mPrev = &mHead; - - pNode->mNext->mPrev = pNode; - mHead.mNext = pNode; - } - } - - void PopFront() - { - iterator begin = Begin(); - Erase(begin); - } - - void PopBack() - { - Erase(--(End())); - } - -public: - class IntrusiveListIterator - { - public: - explicit IntrusiveListIterator(NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListIterator operator++(int) - { - IntrusiveListIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListIterator operator--(int) - { - IntrusiveListIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListIterator& operator=(const IntrusiveListIterator &other){mPtr = other.mPtr; return *this;} - - reference operator*() const { return *(mPtr->mData); } - pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListIterator& other)const{ return !(*this == other); } - - inline NodeT* Get()const { return mPtr; } - - private: - NodeT* mPtr; - }; - - class IntrusiveListConstIterator - { - public: - explicit IntrusiveListConstIterator(const NodeT* ptr=0):mPtr(ptr){} - - // pre-increment - IntrusiveListConstIterator& operator++() - { - mPtr = mPtr->mNext;return (*this); - } - // post-increment - const IntrusiveListConstIterator operator++(int) - { - IntrusiveListConstIterator temp = *this; - ++*this; - return (temp); - } - // pre-decrement - IntrusiveListConstIterator& operator--() - { - mPtr = mPtr->mPrev;return *this; - } - // post-decrement - const IntrusiveListConstIterator operator--(int) - { - IntrusiveListConstIterator temp = *this; - --*this; - return (temp); - } - IntrusiveListConstIterator& operator=(const IntrusiveListConstIterator &other){mPtr = other.mPtr; return *this;} - - const_reference operator*() const { return *(mPtr->mData); } - const_pointer operator->() const { return (&**this); } - bool operator==(const IntrusiveListConstIterator& other)const{ return mPtr==other.mPtr; } - bool operator!=(const IntrusiveListConstIterator& other)const{ return !(*this == other); } - - inline const NodeT* Get()const { return mPtr; } - - private: - mutable const NodeT* mPtr; - }; - - // --- Iterator definitions --- - typedef IntrusiveListIterator iterator; - typedef IntrusiveListConstIterator const_iterator; - - // iterator support - inline iterator Begin() { return iterator(mHead.mNext); } - inline const_iterator Begin() const { return const_iterator(mHead.mNext); } - inline iterator End() { return iterator(&mHead); } - inline const_iterator End() const { return const_iterator(&mHead); } - - // Because there is no real use, for the reverse iterators, - // they have not been implemented. - - reference Front(){return (*Begin());} - const_reference Front() const { return (*Begin()); } - reference Back(){ return (*(--End())); } - const_reference Back() const{ return (*(--End())); } - - iterator& Erase(iterator& it) - { - it.Get()->Disconnect(); - return (++it); - } -private: - NodeT mHead; - - // Not copyable - FbxIntrusiveList(const FbxIntrusiveList&); - FbxIntrusiveList& operator=(const FbxIntrusiveList& Right){return (*this);} -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmap.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmap.h deleted file mode 100755 index b111e05..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmap.h +++ /dev/null @@ -1,408 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmap.h -#ifndef _FBXSDK_CORE_BASE_MAP_H_ -#define _FBXSDK_CORE_BASE_MAP_H_ - -#include - -#include -#include - -#include - -class FbxObject; - -/** Default compare functor for FbxMap and FbxSet, which assumes operator < is defined. -Here is examples of different compare class implementations: -With Key = int -\code -class IntCompare -{ - inline int operator()(int pKeyA, int pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = Class -\code -class ClassCompare -{ - inline int operator()(const Class& pKeyA, const Class& pKeyB) const - { - return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); - } -}; -\endcode -With Key = char* -\code -class StrCompare -{ - inline int operator()(const char* pKeyA, const char* pKeyB) const - { - return strcmp(pKeyA, pKeyB); - } -}; -\endcode -*/ -template struct FbxLessCompare -{ - inline int operator()(const Type& pLeft, const Type& pRight) const - { - return (pLeft < pRight) ? -1 : ((pRight < pLeft) ? 1 : 0); - } -}; - -/** This class implements an efficient map based on key comparison, which stores key-value pairs. -It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxMap -{ -protected: - //! This class defines the key-value pairs used by the map. - class KeyValuePair : private FbxPair - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Key KeyType; - typedef const Key ConstKeyType; - typedef Type ValueType; - typedef const Type ConstValueType; - - KeyValuePair(const Key& pFirst, const Type& pSecond) : FbxPair(pFirst, pSecond){} - ConstKeyType& GetKey() const { return this->mFirst; } - KeyType& GetKey(){ return this->mFirst; } - ConstValueType& GetValue() const { return this->mSecond; } - ValueType& GetValue(){ return this->mSecond; } - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the map. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef Key KeyType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of key-value pairs it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a key-value pair. - * \param pKey The key. - * \param pValue The value. - * \return If the key is already present in the map, returns the existing pair and false; else returns the pointer to the new key-value and true. */ - inline FbxPair Insert(const KeyType& pKey, const ValueType& pValue) - { - return mTree.Insert(KeyValuePair(pKey, pValue)); - } - - /** Delete a key-value pair. - * \param pKey The key. - * \return \c true if success, \c false if key is not found. */ - inline bool Remove(const KeyType& pKey) - { - return mTree.Remove(pKey); - } - - //! Clear the map. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the map is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the map. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the map. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the map. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if the key is not found. */ - inline const RecordType* Find(const KeyType& pKey) const - { - return mTree.Find(pKey); - } - - /** Query a key. - * \param pKey The key. - * \return A key-value pair if success, NULL if it's not found. */ - inline RecordType* Find(const KeyType& pKey) - { - return mTree.Find(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - return mTree.UpperBound(pKey); - } - - /** Find the key-value pair with the smallest key greater than a specified key. - * \param pKey The key. - * \return The found key-value pair. */ - inline RecordType* UpperBound(const KeyType& pKey) - { - return mTree.UpperBound(pKey); - } - - /** Retrieve the reference of the value in the key-value pairs in map. - * \param pKey The key. - * \return The reference of the value. - * \remark If the key is not found, a new key-value pair will be inserted. */ - inline ValueType& operator[](const KeyType& pKey) - { - RecordType* lRecord = Find(pKey); - - if( !lRecord ) - { - lRecord = Insert(pKey, ValueType()).mFirst; - } - - return lRecord->GetValue(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the minimum key in map. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the key-value pair which is the maximum key in map. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxMap(){} - inline FbxMap(const FbxMap& pMap) : mTree(pMap.mTree){} - inline ~FbxMap(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A simple map class representing a dictionary-like data structure. -* \nosubgrouping */ -template class FbxSimpleMap -{ -public: - typedef typename FbxMap::RecordType* Iterator; - - /** Add a key-value pair as an element. - * \param pKey The new key. - * \param pValue The new value. */ - inline void Add(const Key& pKey, const Type& pValue) - { - mMap.Insert(pKey, pValue); - } - - /** Find an element with a given key. - * \param pKey The given key. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Key& pKey) const - { - return (Iterator)mMap.Find(pKey); - } - - /** Find an element with a given value. - * \param pValue The given value. - * \return The iterator pointing to the found element or NULL if fails. */ - inline Iterator Find(const Type& pValue) const - { - Iterator lIterator = GetFirst(); - while( lIterator ) - { - if( lIterator->GetValue() == pValue ) - { - return lIterator; - } - lIterator = GetNext(lIterator); - } - return 0; - } - - /** Remove an element from the map. - * \param pIterator The given element. */ - inline void Remove(Iterator pIterator) - { - if( pIterator ) mMap.Remove(pIterator->GetKey()); - } - - /** Get the first element. - * \return The the heading element. */ - inline Iterator GetFirst() const - { - return (Iterator)mMap.Minimum(); - } - - /** Get the next element of a given element. - * \param pIterator The given element. - * \return The next element. */ - inline Iterator GetNext(Iterator pIterator) const - { - return (Iterator)pIterator ? pIterator->Successor() : 0; - } - - //! Remove all of the elements. - inline void Clear() - { - mMap.Clear(); - } - - /** Reserve the space for given number elements. - * \param pSize The given number. */ - inline void Reserve(int pSize) - { - mMap.Reserve(pSize); - } - - /** Query the count of elements in the map. - * \return The count of elements. */ - inline int GetCount() const - { - return mMap.GetSize(); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSimpleMap(){} - -private: - FbxMap mMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** This class template declare a simple FbxObject map. -* \nosubgrouping */ -template class FbxObjectMap : public FbxSimpleMap -{ -public: - //! Constructor - inline FbxObjectMap(){} - - /** Get the object contained in an element. - * \param pIterator The given element. - * \return The object. - */ - inline FbxObject* Get(typename FbxSimpleMap::Iterator pIterator) - { - return pIterator ? pIterator->GetValue() : 0; - } -}; - -/** A class that maps strings to objects with a basic string comparator. -* \nosubgrouping */ -class FbxObjectStringMap : public FbxObjectMap -{ -public: - //! Constructor - inline FbxObjectStringMap(){} -}; - -//! Call FbxFree on each element of the map, and then clear it. -template inline void FbxMapFree(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxFree(i->GetValue()); - } - pMap.Clear(); -} - -//! Call FbxDelete on each element of the map, and then clear it. -template inline void FbxMapDelete(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - FbxDelete(i->GetValue()); - } - pMap.Clear(); -} - -//! Call Destroy on each element of the map, and then clear it. -template inline void FbxMapDestroy(FbxMap& pMap) -{ - for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) - { - i->GetValue()->Destroy(); - } - pMap.Clear(); -} - -template class FbxSimpleMap; -template class FbxObjectMap; - -#include - -#endif /* _FBXSDK_CORE_BASE_MAP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmemorypool.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmemorypool.h deleted file mode 100755 index fa80ddc..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmemorypool.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmemorypool.h -#ifndef _FBXSDK_CORE_BASE_MEMORY_H_ -#define _FBXSDK_CORE_BASE_MEMORY_H_ - -#include - -#include - -#include - -/** \brief Class to create a simple fixed-size-blocks memory pool to allocate memory dynamically. */ -class FBXSDK_DLL FbxMemoryPool -{ -public: - /** Memory pool constructor. - * \param pBlockSize The size of one memory block. - * \param pBlockCount The count of block that should be pre-allocated. - * \param pResizable Whether memory pool can grow if no block are availalbe upon calling Allocate. - * \param pConcurrent Whether the pool supports concurrent allocation and release operations. - * \remark All memory blocks must be released before the memory pool is destroyed, otherwise a memory leak will occur. */ - FbxMemoryPool(size_t pBlockSize, FbxInt64 pBlockCount=0, bool pResizable=true, bool pConcurrent=true); - - /** Memory pool destructor. Upon destruction, all memory blocks of the pool will be de-allocated. */ - ~FbxMemoryPool(); - - /** Free memory of all memory blocks from this memory pool, also effectively resetting the block count to zero. - * \remark The block size and alignment/resize/concurrent support will remain unchanged. */ - void Reset(); - - /** Allocate or lock a memory block for usage. - * \return An memory block pointer that can be NULL if the memory pool cannot grow in size and no blocks are available. */ - void* Allocate(); - - /** Dispose or unlock a memory block. - * \param pMemBlock A pointer to the memory block to release. This will not free the block's memory, instead simply putting it back in the available stack. */ - void Release(void* pMemBlock); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void* Pop(); - - FbxInt64 mMaxBlockCount; - FbxAtomic mFreeBlockCount; - void* mFreeBlocksStack; - size_t mBlockSize; - bool mResizable; - bool mSupportConcurrentAccess; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MEMORY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmultimap.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmultimap.h deleted file mode 100755 index ed92885..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxmultimap.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmultimap.h -#ifndef _FBXSDK_CORE_BASE_MULTIMAP_H_ -#define _FBXSDK_CORE_BASE_MULTIMAP_H_ - -#include - -#include - -/** Class to manipulate a map that can contain multiple times the same key. -* \nosubgrouping */ -class FBXSDK_DLL FbxMultiMap -{ -public: - struct Pair - { - FbxHandle mKey; - FbxHandle mItem; - }; - - /** If can't find the matching item,append a item at the end of the array. - * If find the matching item ,insert the new item before the matching item. - * \param pKey The value of Key in new item, also is the character for matching. - * \param pItem The value of Item in new item. - * \return If add successfully return true,otherwise return false. - */ - bool Add(FbxHandle pKey, FbxHandle pItem); - - /** Remove the first matching item, whose reference is the same as given. - * \param pKey The given reference. - * \return If remove successfully return true,otherwise return false. - */ - bool Remove(FbxHandle pKey); - - /** Remove all the matching item, whose item is the same as given. - * \param pItem The given item. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveItem(FbxHandle pItem); - - /** Set first matching item with the given parameter. - * \param pKey The character for matching. - * \param pItem The value of Item that the matching item will be set. - * \return If set successfully return true,otherwise return false. - */ - bool SetItem(FbxHandle pKey, FbxHandle pItem); - - /** Get first matching item with the given parameter. - * \param pKey The character for matching. - * \param pIndex The pointer to the index of the matching item. - * \return The value of Item in the matching item. - * \remarks If there are multiple elements that match the character, the index returned is unspecified. - */ - FbxHandle Get(FbxHandle pKey, int* pIndex=NULL); - - //! Delete the array. - void Clear(); - - /** Get the item of the given index. - * \param pIndex The index for matching. - * \param pKey The pointer to the Key of the matching item. - * \return The value of Item in the matching item. - */ - FbxHandle GetFromIndex(int pIndex, FbxHandle* pKey=NULL); - - /** Remove the item of the given index - * \param pIndex The given index. - * \return If remove successfully return true,otherwise return false. - */ - bool RemoveFromIndex(int pIndex); - - /** Get number of items in the array. - * \return The number of items in the array. */ - int GetCount() const { return mSetCount; } - - /** Swap the value of Key and Item in every item of array, and sort the new array with the value of Key. */ - void Swap(); - - /** Sort the array according the value of Key in each item. */ - void Sort(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiMap(int pItemPerBlock=20); - FbxMultiMap(const FbxMultiMap& pOther); - ~FbxMultiMap(); - - FbxMultiMap& operator=(const FbxMultiMap&); - -private: - Pair* FindEqual(FbxHandle pKey) const; - - Pair* mSetArray; - int mSetCount; - int mBlockCount; - int mItemPerBlock; - bool mIsChanged; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_MULTIMAP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxpair.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxpair.h deleted file mode 100755 index d1659df..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxpair.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpair.h -#ifndef _FBXSDK_CORE_BASE_PAIR_H_ -#define _FBXSDK_CORE_BASE_PAIR_H_ - -#include - -#include - -/** This class template holds a pair of objects. -* \nosubgrouping */ -template class FbxPair -{ -public: - //! Constructor. - inline FbxPair() : mFirst(), mSecond() {} - - /** Constructor. - * \param pFirst The first object. - * \param pSecond The second object. */ - inline FbxPair(const First& pFirst, const Second& pSecond) : mFirst(pFirst), mSecond(pSecond) {} - - /** Assignment operator. - * \param pOther The pair to be copied. */ - inline FbxPair& operator=(const FbxPair& pOther) - { - mFirst = pOther.mFirst; - mSecond = pOther.mSecond; - return *this; - } - - /** Comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator==(const FbxPair& pOther) - { - return mFirst == pOther.mFirst && mSecond == pOther.mSecond; - } - - /** Inverse comparison operator. - * \param pOther The pair to be compared. */ - inline bool operator!=(const FbxPair& pOther) - { - return !operator==(pOther); - } - - First mFirst; //!< The first object in the pair. - Second mSecond; //!< The second object in the pair. -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_PAIR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxredblacktree.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxredblacktree.h deleted file mode 100755 index dc8ea84..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxredblacktree.h +++ /dev/null @@ -1,1398 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxredblacktree.h -#ifndef _FBXSDK_CORE_BASE_REDBLACKTREE_H_ -#define _FBXSDK_CORE_BASE_REDBLACKTREE_H_ - -#include - -#include -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxRedBlackConstIterator; - -template class FbxRedBlackIterator -{ -public: - FbxRedBlackIterator() : mRecord(0) {} - FbxRedBlackIterator(RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackIterator& operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackIterator operator++(int) - { - FbxRedBlackIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackIterator& operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackIterator operator--(int) - { - FbxRedBlackIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - RecordType* mRecord; - - friend class FbxRedBlackConstIterator; -}; - -template class FbxRedBlackConstIterator -{ -public: - FbxRedBlackConstIterator() : mRecord(0) {} - FbxRedBlackConstIterator(const RecordType* pRecord) : mRecord(pRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} - FbxRedBlackConstIterator(const FbxRedBlackConstIterator& pV) : mRecord(pV.mRecord) {} - - FbxRedBlackConstIterator & operator++() - { - FBX_ASSERT( mRecord != NULL ); - mRecord = mRecord->Successor(); - return *this; - } - - const FbxRedBlackConstIterator operator++(int) - { - FbxRedBlackConstIterator t(*this); - operator++(); - return t; - } - - FbxRedBlackConstIterator& operator+=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Successor(); - } - return *this; - } - - FbxRedBlackConstIterator & operator--() - { - FBX_ASSERT( mRecord ); - mRecord = mRecord->Predecessor(); - return *this; - } - - const FbxRedBlackConstIterator operator--(int) - { - FbxRedBlackConstIterator t(*this); - operator--(); - return t; - } - - FbxRedBlackConstIterator& operator-=(int pCount) - { - FBX_ASSERT( mRecord != NULL ); - for( int i = 0; i < pCount; ++i ) - { - if( !mRecord ) break; - mRecord = mRecord->Predecessor(); - } - return *this; - } - - const RecordType& operator*() const - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType& operator*() - { - FBX_ASSERT( mRecord ); - - return *mRecord; - } - - const RecordType* operator->() const - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - const RecordType* operator->() - { - FBX_ASSERT( mRecord ); - - return mRecord; - } - - inline bool operator==(const FbxRedBlackConstIterator& pOther) const - { - return mRecord == pOther.mRecord; - } - - inline bool operator !=(const FbxRedBlackConstIterator& pOther) const - { - return mRecord != pOther.mRecord; - } - -protected: - const RecordType* mRecord; - - friend class FbxRedBlackIterator; -}; - -//! Implements an efficient ordered data storage. -template class FbxRedBlackTree -{ -public: - typedef Type DataType; - typedef typename Type::KeyType KeyType; - typedef typename Type::ConstKeyType ConstKeyType; - typedef typename Type::ValueType ValueType; - typedef typename Type::ConstValueType ConstValueType; - typedef Allocator AllocatorType; - - /** - This class represents a node in the tree. It contains the key, - the value, and internal tree management data. - */ - class RecordType - { - public: - inline ConstKeyType& GetKey() const { return mData.GetKey(); } - inline ConstValueType& GetValue() const { return mData.GetValue(); } - inline ValueType& GetValue() { return mData.GetValue(); } - - inline const RecordType* Minimum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline RecordType* Minimum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - - return lParent; - } - - inline const RecordType* Maximum() const - { - const RecordType* lParent = 0; - const RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline RecordType* Maximum() - { - RecordType* lParent = 0; - RecordType* lNode = this; - while (lNode != 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - - return lParent; - } - - inline const RecordType* Predecessor() const - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mLefttChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Predecessor() - { - if (mLeftChild) - { - return mLeftChild->Maximum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mLeftChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline const RecordType* Successor() const - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - const RecordType* lParent = mParent; - const RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline RecordType* Successor() - { - if (mRightChild) - { - return mRightChild->Minimum(); - } - else - { - RecordType* lParent = mParent; - RecordType* lNode = this; - - while (lParent && lParent->mRightChild == lNode) - { - lNode = lParent; - lParent = lParent->mParent; - } - - return lParent; - } - } - - inline int GetBlackDepth() { return mBlackDepth; } - - private: - enum ETreeType {eRed, eBlack}; - - inline RecordType(const DataType& pData) - : mData(pData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(eRed) - , mBlackDepth(0) - { - } - - inline RecordType(const RecordType& pRecordType) - : mData(pRecordType.mData) - , mParent(0) - , mLeftChild(0) - , mRightChild(0) - , mColor(pRecordType.mColor) - , mBlackDepth(pRecordType.mBlackDepth) - { - } - - DataType mData; - - friend class FbxRedBlackTree; - - RecordType* mParent; - RecordType* mLeftChild; - RecordType* mRightChild; - unsigned int mColor:2; - unsigned int mBlackDepth:30; - }; - -public: - typedef FbxRedBlackConstIterator ConstIteratorType; - typedef FbxRedBlackIterator IteratorType; - - inline FbxRedBlackTree() : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) {} - inline FbxRedBlackTree(const FbxRedBlackTree& pTree) : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) { operator=(pTree); } - inline ~FbxRedBlackTree() { Clear(); } - - /** Deep copy pTree in this. - * \param pTree The tree to copy in this tree. */ - inline FbxRedBlackTree& operator=(const FbxRedBlackTree& pTree) - { - if( this != &pTree ) - { - Clear(); - - mAllocator = pTree.mAllocator; - - if( pTree.mRoot ) - { - void* lBuffer = mAllocator.AllocateRecords(); - mRoot = new(lBuffer) RecordType(*(pTree.mRoot)); //in-place new won't allocate memory, so it is safe - mRoot->mLeftChild = DuplicateSubTree(pTree.mRoot->mLeftChild); - mRoot->mRightChild = DuplicateSubTree(pTree.mRoot->mRightChild); - - if (mRoot->mLeftChild) - { - mRoot->mLeftChild->mParent = mRoot; - } - - if (mRoot->mRightChild) - { - mRoot->mRightChild->mParent = mRoot; - } - } - else - { - FBX_ASSERT( pTree.mSize == 0 ); - FBX_ASSERT( mRoot == 0 ); - } - - mSize = pTree.mSize; - } - - return *this; - } - - inline bool operator==(const FbxRedBlackTree& pTree) const - { - // Check a few quick shortcuts - if( this == &pTree ) - return true; - - if( GetSize() != pTree.GetSize() ) - return false; - - // Iterator through all nodes; if we reach the end of both iterators at the same - // time then we have two iterators that match. - ConstIteratorType End; - ConstIteratorType Iter1(Minimum()); - ConstIteratorType Iter2(pTree.Minimum()); - - while( (Iter1 != End) && (Iter2 != End) && - (Iter1->GetKey() == Iter2->GetKey()) && - (Iter1->GetValue() == Iter2->GetValue()) ) - { - ++Iter1; - ++Iter2; - } - - return Iter1 == End && Iter2 == End; - } - - /** Ask Allocator to reserve space to hold pRecordCount elements. - * \param pRecordCount - */ - inline void Reserve(unsigned int pRecordCount) - { - mAllocator.Reserve(pRecordCount); - } - - /** Get the number of elements in the tree. Takes O(1) time. - * \return The number of elements in the tree. - */ - inline int GetSize() const { return mSize; } - - inline bool Empty() const { return mSize == 0; } - - /** Insert a new element in the tree. Takes O(log n) time. - * \param pData The element to insert. - * \return If pData.GetKey() is already present in the tree, returns the - * existing record and false; else returns the new record and true. - */ - inline FbxPair Insert(const DataType& pData) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lParent = 0; - RecordType* lNode = mRoot; - while (lNode != 0) - { - const KeyType& lNodeKey = lNode->GetKey(); - const KeyType& lDataKey = pData.GetKey(); - - if (lCompareKeys(lNodeKey, lDataKey) < 0) - { - lParent = lNode; - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNodeKey, lDataKey) > 0) - { - lParent = lNode; - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode == 0) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNode = new(lBuffer) RecordType(pData); //in-place new won't allocate memory, so it is safe - mSize++; - - FBX_ASSERT(lNode == lBuffer); - - if (lParent) - { - if (lCompareKeys(lParent->GetKey(), pData.GetKey()) < 0) - { - FBX_ASSERT(lParent->mRightChild == 0); - lParent->mRightChild = lNode; - lNode->mParent = lParent; - } - else - { - FBX_ASSERT(lParent->mLeftChild == 0); - lParent->mLeftChild = lNode; - lNode->mParent = lParent; - } - } - else - { - mRoot = lNode; - } - - // Fix red black tree property - FixNodesAfterInsertion(lNode); - - lResult = true; - } - - return FbxPair(lNode, lResult); - } - - /** Remove an element identified by a key from the tree. Takes O(log n) time. - * \param pKey The key identifying the element to remove. - */ - inline bool Remove(const KeyType& pKey) - { - Compare lCompareKeys; - bool lResult = false; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - if (lNode) - { - RemoveNode(lNode); - mSize--; - lNode->~RecordType(); - mAllocator.FreeMemory(lNode); - - lResult = true; - } - - return lResult; - } - - /** Remove all elements from the tree. Takes O(n) time. Recursive. - */ - inline void Clear() - { - if (mRoot) - { - ClearSubTree(mRoot->mLeftChild); - ClearSubTree(mRoot->mRightChild); - mRoot->~RecordType(); - mAllocator.FreeMemory(mRoot); - mRoot = 0; - mSize = 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Minimum() const - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the smallest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Minimum() - { - if (0 != mRoot) - { - return mRoot->Minimum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline const RecordType* Maximum() const - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the largest element in the tree. - * Takes O(log n) time. - */ - inline RecordType* Maximum() - { - if (0 != mRoot) - { - return mRoot->Maximum(); - } - else - { - return 0; - } - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* Find(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with key pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* Find(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) < 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lNode = lNode->mLeftChild; - } - else - { - break; - } - } - - return lNode; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline const RecordType* UpperBound(const KeyType& pKey) const - { - Compare lCompareKeys; - const RecordType* lNode = mRoot; - const RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - - /** Find the key-value pair with the smallest key greater than pKey. - * Takes O(log n) time. - * \param pKey The key to look for. - */ - inline RecordType* UpperBound(const KeyType& pKey) - { - Compare lCompareKeys; - RecordType* lNode = mRoot; - RecordType* lCandidate = 0; - while (lNode != 0) - { - if (lCompareKeys(lNode->GetKey(), pKey) <= 0) - { - lNode = lNode->mRightChild; - } - else if (lCompareKeys(lNode->GetKey(), pKey) > 0) - { - lCandidate = lNode; - lNode = lNode->mLeftChild; - } - } - - return lCandidate; - } - -protected: - RecordType* mRoot; - int mSize; - - AllocatorType mAllocator; - - inline RecordType* DuplicateSubTree(const RecordType* pNode) - { - RecordType* lNewSubTree = 0; - - if (pNode) - { - void* lBuffer = mAllocator.AllocateRecords(); - lNewSubTree = new(lBuffer) RecordType(*pNode); //in-place new won't allocate memory, so it is safe - lNewSubTree->mLeftChild = DuplicateSubTree(pNode->mLeftChild); - lNewSubTree->mRightChild = DuplicateSubTree(pNode->mRightChild); - - if (lNewSubTree->mLeftChild) - { - lNewSubTree->mLeftChild->mParent = lNewSubTree; - } - - if (lNewSubTree->mRightChild) - { - lNewSubTree->mRightChild->mParent = lNewSubTree; - } - } - - return lNewSubTree; - } - - inline void FixNodesAfterInsertion(RecordType* pNode) - { - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (lNode->mParent == 0) - { - lNode->mColor = RecordType::eBlack; - } - else if (lNode->mParent->mColor == RecordType::eRed) - { - RecordType* lUncle = 0; - if (lNode->mParent == lNode->mParent->mParent->mLeftChild) - { - lUncle = lNode->mParent->mParent->mRightChild; - } - else if (lNode->mParent == lNode->mParent->mParent->mRightChild) - { - lUncle = lNode->mParent->mParent->mLeftChild; - } - - // since lNode->mParent is red, lNode->mParent->mParent exists - - if (lUncle && lUncle->mColor == RecordType::eRed) - { - lNode->mParent->mColor = RecordType::eBlack; - lUncle->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - lNode = lNode->mParent->mParent; - - lDone = false; - } - else - { - if ((lNode == lNode->mParent->mRightChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - LeftRotate(lNode->mParent); - lNode = lNode->mLeftChild; - } - else if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mRightChild)) - { - RightRotate(lNode->mParent); - lNode = lNode->mRightChild; - } - - lNode->mParent->mColor = RecordType::eBlack; - lNode->mParent->mParent->mColor = RecordType::eRed; - if ((lNode == lNode->mParent->mLeftChild) && - (lNode->mParent == lNode->mParent->mParent->mLeftChild)) - { - RightRotate(lNode->mParent->mParent); - } - else - { - LeftRotate(lNode->mParent->mParent); - } - } - } - } - - mRoot->mColor = RecordType::eBlack; - } - - inline void LeftRotate(RecordType* pNode) - { - FBX_ASSERT_RETURN(pNode); - - RecordType* lNode = pNode->mRightChild; - FBX_ASSERT_RETURN(lNode); - - #ifdef _DEBUG - RecordType* A = pNode->mLeftChild; - RecordType* B = lNode->mLeftChild; - RecordType* C = lNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mRightChild = lNode->mLeftChild; - if (pNode->mRightChild) - { - pNode->mRightChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mLeftChild) - { - pNode->mParent->mLeftChild = lNode; - } - else - { - pNode->mParent->mRightChild = lNode; - } - pNode->mParent = lNode; - lNode->mLeftChild = pNode; - - FBX_ASSERT(pNode->mLeftChild == A); - FBX_ASSERT(pNode->mRightChild == B); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(lNode->mLeftChild == pNode); - FBX_ASSERT(lNode->mRightChild == C); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(A == 0 || A->mParent == pNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == lNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RightRotate(RecordType* pNode) - { - RecordType* lNode = pNode->mLeftChild; - - #ifdef _DEBUG - RecordType* A = lNode->mLeftChild; - RecordType* B = lNode->mRightChild; - RecordType* C = pNode->mRightChild; - RecordType* Z = pNode->mParent; - #endif - - pNode->mLeftChild = lNode->mRightChild; - if (pNode->mLeftChild) - { - pNode->mLeftChild->mParent = pNode; - } - - lNode->mParent = pNode->mParent; - if (pNode->mParent == 0) - { - FBX_ASSERT(mRoot == pNode); - mRoot = lNode; - } - else if (pNode == pNode->mParent->mRightChild) - { - pNode->mParent->mRightChild = lNode; - } - else - { - pNode->mParent->mLeftChild = lNode; - } - pNode->mParent = lNode; - lNode->mRightChild = pNode; - - FBX_ASSERT(lNode->mLeftChild == A); - FBX_ASSERT(lNode->mRightChild == pNode); - FBX_ASSERT(lNode->mParent == Z); - - FBX_ASSERT(pNode->mLeftChild == B); - FBX_ASSERT(pNode->mRightChild == C); - FBX_ASSERT(pNode->mParent == lNode); - - FBX_ASSERT(A == 0 || A->mParent == lNode); - FBX_ASSERT(B == 0 || B->mParent == pNode); - FBX_ASSERT(C == 0 || C->mParent == pNode); - FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); - } - - inline void RemoveNode(RecordType* pNode) - { - if (pNode->mLeftChild == 0) - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = 0; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = 0; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mParent, 0); - } - } - else - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mRightChild; - pNode->mRightChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mRightChild; - pNode->mRightChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mRightChild->mParent, pNode->mRightChild); - } - } - } - else - { - if (pNode->mRightChild == 0) - { - if (pNode->mParent) - { - if (pNode->mParent->mLeftChild == pNode) - { - pNode->mParent->mLeftChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else if (pNode->mParent->mRightChild == pNode) - { - pNode->mParent->mRightChild = pNode->mLeftChild; - pNode->mLeftChild->mParent = pNode->mParent; - } - else - { - FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); - } - } - else - { - FBX_ASSERT(mRoot == pNode); - mRoot = pNode->mLeftChild; - pNode->mLeftChild->mParent = 0; - } - - if (pNode->mColor == RecordType::eBlack) - { - FixNodesAfterRemoval(pNode->mLeftChild->mParent, pNode->mLeftChild); - } - } - else - { - RecordType* lMinRightNode = pNode->mRightChild->Minimum(); - RemoveNode(lMinRightNode); - - lMinRightNode->mColor = pNode->mColor; - ReplaceNode(pNode, lMinRightNode); - } - } - - pNode->mParent = 0; - pNode->mLeftChild = 0; - pNode->mRightChild = 0; - } - - inline void ReplaceNode(RecordType* pNodeToReplace, RecordType* pReplacement) - { - pReplacement->mParent = pNodeToReplace->mParent; - if (pNodeToReplace->mParent) - { - if (pNodeToReplace->mParent->mLeftChild == pNodeToReplace) - { - pNodeToReplace->mParent->mLeftChild = pReplacement; - } - else if (pNodeToReplace->mParent->mRightChild == pNodeToReplace) - { - pNodeToReplace->mParent->mRightChild = pReplacement; - } - } - else - { - FBX_ASSERT(mRoot == pNodeToReplace); - mRoot = pReplacement; - } - - pReplacement->mLeftChild = pNodeToReplace->mLeftChild; - if (pReplacement->mLeftChild) - { - pReplacement->mLeftChild->mParent = pReplacement; - } - - pReplacement->mRightChild = pNodeToReplace->mRightChild; - if (pReplacement->mRightChild) - { - pReplacement->mRightChild->mParent = pReplacement; - } - } - - inline RecordType* Sibling(const RecordType* pParent, const RecordType* pNode) const - { - if (pParent) - { - if (pParent->mLeftChild == pNode) - { - return pParent->mRightChild; - } - else if (pParent->mRightChild == pNode) - { - return pParent->mLeftChild; - } - } - - return 0; - } - - inline bool IsBlack(const RecordType* pNode) - { - return ((pNode == 0) || (pNode->mColor == RecordType::eBlack)); - } - - inline void FixNodesAfterRemoval(RecordType* pParent, RecordType* pNode) - { - RecordType* lParent = pParent; - RecordType* lNode = pNode; - bool lDone = false; - - while (!lDone) - { - lDone = true; - - if (!IsBlack(lNode)) - { - lNode->mColor = RecordType::eBlack; - } - else if (lParent != NULL) - { - RecordType* lSibling = Sibling(lParent, lNode); - - if (!IsBlack(lSibling)) - { - lParent->mColor = RecordType::eRed; - lSibling->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - LeftRotate(lParent); - } - else - { - RightRotate(lParent); - } - - // update sibling: it may have change after rotation - // parent was not affected by this rotation - lSibling = Sibling(lParent, lNode); - } - - /* check this for null sibling */ - if (lSibling && - IsBlack(lParent) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lNode = lParent; - lParent = lParent->mParent; - lDone = false; - } - else - { - if (!IsBlack(lParent) && - IsBlack(lSibling) && - ((lSibling == 0) || IsBlack(lSibling->mLeftChild)) && - ((lSibling == 0) || IsBlack(lSibling->mRightChild))) - { - if (lSibling) - { - lSibling->mColor = RecordType::eRed; - } - lParent->mColor = RecordType::eBlack; - } - else if( lSibling != 0 ) - { - if ((lNode == lParent->mLeftChild) && - IsBlack(lSibling) && - !IsBlack(lSibling->mLeftChild) && - IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mLeftChild->mColor = RecordType::eBlack; - RightRotate(lSibling); - } - else if ((lNode == lParent->mRightChild) && - IsBlack(lSibling) && - IsBlack(lSibling->mLeftChild) && - !IsBlack(lSibling->mRightChild)) - { - lSibling->mColor = RecordType::eRed; - lSibling->mRightChild->mColor = RecordType::eBlack; - LeftRotate(lSibling); - } - - // update sibling: it may have change after rotation - lSibling = Sibling(lParent, lNode); - FBX_ASSERT(lSibling != 0 && lParent != 0); // lSibling is now - // the former red - // child of the - // former sibling - - if( lSibling != 0 && lParent != 0 ) - { - lSibling->mColor = lParent->mColor; - lParent->mColor = RecordType::eBlack; - if (lNode == lParent->mLeftChild) - { - if (lSibling->mRightChild) - { - lSibling->mRightChild->mColor = RecordType::eBlack; - } - LeftRotate(lParent); - } - else - { - if (lSibling->mLeftChild) - { - lSibling->mLeftChild->mColor = RecordType::eBlack; - } - RightRotate(lParent); - } - } - } - } - } - } - - if (mRoot) - { - mRoot->mColor = RecordType::eBlack; - } - } - - inline void ClearSubTree(RecordType* pNode) - { - if (pNode) - { - ClearSubTree(pNode->mLeftChild); - ClearSubTree(pNode->mRightChild); - pNode->~RecordType(); - mAllocator.FreeMemory(pNode); - } - } - - inline int GetSubTreeSize(RecordType* pNode) const - { - if (pNode) - { - return GetSubTreeSize(pNode->mLeftChild) + GetSubTreeSize(pNode->mRightChild) + 1; - } - else - { - return 0; - } - } - -#if 0 - inline void IsSane() - { - FBX_ASSERT((mRoot == 0) || (mRoot->mColor == RecordType::eBlack)); - FBX_ASSERT(((mRoot == 0) && (mSize == 0)) || (mRoot != 0) && (mSize != 0)); - IsSubTreeSane(mRoot); - - ComputeBlackDepth(mRoot, 0); - - RecordType* lNode = mRoot; - unsigned int lLeafBlackDepth = 0; - while (lNode) - { - if (lNode->mLeftChild == 0) - { - lLeafBlackDepth = lNode->mBlackDepth + ((lNode->mColor == RecordType::eBlack) ? 1 : 0); - } - - lNode = lNode->mLeftChild; - } - - CheckLeavesBlackDepth(mRoot, lLeafBlackDepth); - } - - inline void IsSubTreeSane(const RecordType* pNode) const - { - Compare lCompareKeys; - - if (pNode) - { - FBX_ASSERT(pNode != pNode->mParent); - FBX_ASSERT(pNode != pNode->mLeftChild); - FBX_ASSERT(pNode != pNode->mRightChild); - - // Check for two consecutive red nodes - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mLeftChild == NULL) || - (pNode->mLeftChild->mColor == RecordType::eBlack)); - - FBX_ASSERT((pNode->mColor == RecordType::eBlack) || - (pNode->mRightChild == NULL) || - (pNode->mRightChild->mColor == RecordType::eBlack)); - - // Check key ordering - FBX_ASSERT((pNode->mLeftChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mLeftChild->GetKey()) > 0)); - - FBX_ASSERT((pNode->mRightChild == 0 || - lCompareKeys(pNode->GetKey(), pNode->mRightChild->GetKey()) < 0)); - - IsSubTreeSane(pNode->mLeftChild); - IsSubTreeSane(pNode->mRightChild); - } - } - - inline void ComputeBlackDepth(RecordType* pNode, unsigned int pDepth) - { - if( pNode ) - { - pNode->mBlackDepth = pDepth; - if( pNode->mColor == RecordType::eBlack ) - { - pDepth++; - } - ComputeBlackDepth(pNode->mLeftChild, pDepth); - ComputeBlackDepth(pNode->mRightChild, pDepth); - } - } - - inline void CheckLeavesBlackDepth(RecordType* pNode, unsigned int pBlackDepth) - { - if( pNode ) - { - if( pNode->mLeftChild == 0 || pNode->mRightChild == 0 ) - { - FBX_ASSERT((pNode->mBlackDepth + ((pNode->mColor == RecordType::eBlack) ? 1 : 0)) == pBlackDepth); - } - CheckLeavesBlackDepth(pNode->mLeftChild, pBlackDepth); - CheckLeavesBlackDepth(pNode->mRightChild, pBlackDepth); - } - } -#endif -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /*_FBXSDK_CORE_BASE_REDBLACKTREE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxset.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxset.h deleted file mode 100755 index 02fca35..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxset.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxset.h -#ifndef _FBXSDK_CORE_BASE_SET_H_ -#define _FBXSDK_CORE_BASE_SET_H_ - -#include - -#include -#include - -#include - -/** This class implements an efficient set based on value comparison, which stores values. -* It executes insertion, deletion and query operations in O(log(n)) time. */ -template , typename Allocator=FbxBaseAllocator> class FbxSet -{ -protected: - //! This class defines the value type used by the set. - class Value - { - /***************************************************************************************************************************** - ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** - *****************************************************************************************************************************/ - #ifndef DOXYGEN_SHOULD_SKIP_THIS - public: - typedef const Type KeyType; - typedef const Type ConstKeyType; - typedef const Type ValueType; - typedef const Type ConstValueType; - - inline Value(const Type& pValue) : mValue(pValue){} - inline KeyType& GetKey() const { return mValue; } - inline ConstKeyType& GetKey(){ return mValue; } - inline ValueType& GetValue() const { return mValue; } - inline ConstValueType& GetValue(){ return mValue; } - - protected: - ValueType mValue; - - private: - Value& operator=(const Value&); - #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - }; - - //! Declaration of the storage type used by the set. - typedef FbxRedBlackTree StorageType; - -public: - typedef Type ValueType; - typedef typename StorageType::RecordType RecordType; - typedef typename StorageType::IteratorType Iterator; - typedef typename StorageType::ConstIteratorType ConstIterator; - - /** Preallocate memory. - * \param pRecordCount The number of elements. - */ - inline void Reserve(unsigned int pRecordCount) - { - mTree.Reserve(pRecordCount); - } - - //! Retrieve the number of values it holds. - inline int GetSize() const - { - return mTree.GetSize(); - } - - /** Insert a value. - * \param pValue The value. - * \return If the value is already present in the map, returns the existing value and false; else returns the pointer to the new value and true. */ - inline FbxPair Insert(const ValueType& pValue) - { - return mTree.Insert(Value(pValue)); - } - - /** Delete a value. - * \param pValue The value. - * \return \c true if success, \c false if value is not found. */ - inline int Remove(const ValueType& pValue) - { - return mTree.Remove(pValue); - } - - //! Clear the set. - inline void Clear() - { - mTree.Clear(); - } - - //! Query whether the set is empty. - inline bool Empty() const - { - return mTree.Empty(); - } - - //! Retrieve the begin iterator of the set. - Iterator Begin() - { - return Iterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - Iterator End() - { - return Iterator(); - } - - //! Retrieve the begin iterator of the set. - ConstIterator Begin() const - { - return ConstIterator(Minimum()); - } - - //! Retrieve the end iterator of the set. - ConstIterator End() const - { - return ConstIterator(); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline const RecordType* Find(const ValueType& pValue) const - { - return mTree.Find(pValue); - } - - /** Find a given value in the set. - * \param pValue The value to find. - * \return The value in the set, or NULL if the value is not found in the set. */ - inline RecordType* Find(const ValueType& pValue) - { - return mTree.Find(pValue); - } - - //! Retrieve the minimum value in the set. - inline const RecordType* Minimum() const - { - return mTree.Minimum(); - } - - //! Retrieve the minimum value in the set. - inline RecordType* Minimum() - { - return mTree.Minimum(); - } - - //! Retrieve the maximum value in the set. - inline const RecordType* Maximum() const - { - return mTree.Maximum(); - } - - //! Retrieve the maximum value in the set. - inline RecordType* Maximum() - { - return mTree.Maximum(); - } - - //! Equality operator. - inline bool operator==(const FbxSet& pOther) const - { - return (this == &pOther) || (mTree == pOther.mTree); - } - - //! Inequality operator. - inline bool operator != (const FbxSet& pOther) const - { - return !(*this == pOther); - } - - /** Intersect with another set. - * \param pOther The other set. - * \return The intersection set of the two sets. */ - inline FbxSet Intersect(const FbxSet& pOther) const - { - FbxSet lReturn; - ConstIterator lBegin = Begin(); - for (; lBegin != End(); ++lBegin) - { - if (pOther.Find(lBegin->GetValue()) != NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - - /** Unite with another set. - * \param pOther The other set. - * \return The union set of the two sets (no duplicated items). */ - inline FbxSet Union(const FbxSet& pOther) const - { - FbxSet lReturn(*this); - ConstIterator lBegin = pOther.Begin(); - for (; lBegin != End(); ++lBegin) - { - if (Find(lBegin->GetValue()) == NULL) - lReturn.Insert(lBegin->GetValue()); - } - return lReturn; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxSet(){} - inline FbxSet(const FbxSet& pSet) : mTree(pSet.mTree){} - inline ~FbxSet(){ Clear(); } - -private: - StorageType mTree; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_SET_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstatus.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstatus.h deleted file mode 100755 index 3efc7b7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstatus.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatus.h -#ifndef _FBXSDK_CORE_BASE_STATUS_H_ -#define _FBXSDK_CORE_BASE_STATUS_H_ - -#include - -#include - -#include - -/** This class facilitates the testing/reporting of errors. It encapsulates the - * status code and the internal FBXSDK error code as returned by the API functions. - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatus -{ -public: - - - //! Available status codes. - enum EStatusCode { - eSuccess = 0, //!< Operation was successful - eFailure, //!< Operation failed - eInsufficientMemory, //!< Operation failed due to insufficient memory - eInvalidParameter, //!< An invalid parameter was provided - eIndexOutOfRange, //!< Index value outside the valid range - ePasswordError, //!< Operation on FBX file password failed - eInvalidFileVersion, //!< File version not supported (anymore or yet) - eInvalidFile, //!< Operation on the file access failed - eSceneCheckFail //!< Scene validation failure - }; - - //! Default constructor. - FbxStatus(); - - FbxStatus(EStatusCode pCode); - FbxStatus(const FbxStatus& rhs); - - FbxStatus& operator=(const FbxStatus& rhs); - - /** Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if all the members of \e rhs are equal to this instance members and \c False otherwise. - */ - bool operator==(const FbxStatus& rhs) const { return (mCode == rhs.mCode); } - /** Equivalence operator. - * \param pCode Status code to compare. - * \return \c True if the code member of this instance equals \e pCode and \c False otherwise. - */ - bool operator==(const EStatusCode pCode) const { return (mCode == pCode); } - /** Non-Equivalence operator. - * \param rhs Status object to compare. - * \return \c True if at least one member of \e rhs is not equal to this instance member and \c True otherwise. - */ - bool operator!=(const FbxStatus& rhs) const { return (mCode != rhs.mCode); } - /** Non-Equivalence operator. - * \param rhs Status code to compare. - * \return \c True if the code member of this instance equals \e rhs and \c False otherwise. - */ - bool operator!=(const EStatusCode rhs) const { return (mCode != rhs); } - - /** The conversion operator that converts a FbxStatus object to bool. - * The result it returns will be \c True if the FbxStatus does not contain - * an error, and \c False if it does. - */ - operator bool() const { return mCode==eSuccess; } - - /** Determines whether there is an error. - * \return \c True if an error occured and \c False if the operation was sucessful. - */ - bool Error() const { return !this->operator bool(); } - - //! Clear error code and message from the instance. After this call, it will behave as if it contained eSuccess. - void Clear(); - - //! Retrieve the type of error that occurred, as specified in the enumeration. - EStatusCode GetCode() const { return mCode; } - - /** Change the current code of the instance. - * \param rhs New code value. - */ - void SetCode(const EStatusCode rhs); - - /** Change the current code of the instance. - * \param rhs New code value. - * \param pErrorMsg Optional error description string. This string can have formatting characters - * The function will use the vsnprintf function to assemble the final string - * using an internal buffer of 4096 characters. - */ - void SetCode(const EStatusCode rhs, const char* pErrorMsg, ...); - - //! Get the error message string corresponding to the current code. - const char* GetErrorString() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -private: - EStatusCode mCode; - FbxString mErrorString; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS */ -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STATUS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstring.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstring.h deleted file mode 100755 index 1bf38ba..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstring.h +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstring.h -#ifndef _FBXSDK_CORE_BASE_STRING_H_ -#define _FBXSDK_CORE_BASE_STRING_H_ - -#include - -#include - -/** Convert string from UTF8 to wide-char -* \param pInUTF8 Input string -* \param pOutWideChar output string -* \param pOutWideCharSize size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxUTF8ToWC(const char* pInUTF8, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - -/** Convert string from wide-char to UTF8 -* \param pInWideChar input string -* \param pOutUTF8 output string -* \param pOutUTF8Size size of the allocated output string buffer -* \remark Output buffer should be release by caller */ -FBXSDK_DLL void FbxWCToUTF8(const wchar_t* pInWideChar, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - -#if defined(FBXSDK_ENV_WIN) - /** Convert string from wide-char to ANSI - * \param pInWideChar input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxWCToAnsi(const wchar_t* pInWideChar, char*& pOutANSI, size_t* pOutANSISize=NULL); - - /** Convert string from ANSI to wide-char - * \param pInANSI input string - * \param pOutWideChar output string - * \param pOutWideCharSize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToWC(const char* pInANSI, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); - - /** Convert string from ANSI to UTF8 - * \param pInANSI input string - * \param outUTF8 output string - * \param pOutUTF8Size size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxAnsiToUTF8(const char* pInANSI, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); - - /** Convert string from UTF8 to ANSI - * \param pInUTF8 input string - * \param pOutANSI output string - * \param pOutANSISize size of the allocated output string buffer - * \remark Output buffer should be release by caller */ - FBXSDK_DLL void FbxUTF8ToAnsi(const char* pInUTF8, char*& pOutANSI, size_t* pOutANSISize=NULL); -#endif - -/** Utility class to manipulate strings. -* \nosubgrouping */ -class FBXSDK_DLL FbxString -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxString(); - - /** Copy constructor. - * \param pString The FbxString to be copied. */ - FbxString(const FbxString& pString); - - /** String constructor. - * \param pString The string used to construct FbxString. */ - FbxString(const char* pString); - - /** Character constructor. - * \param pChar The character used to construct FbxString. - * \param pNbRepeat The number of times to repeat the character. Default value is 1 */ - FbxString(char pChar, size_t pNbRepeat=1); - - /** String constructor with maximum length. - * \param pCharPtr The string used to construct FbxString. - * \param pLength Maximum length. */ - FbxString(const char* pCharPtr, size_t pLength); - - /** Integer constructor. - * \param pValue The int value used to construct FbxString. */ - FbxString(const int pValue); - - /** Float constructor. - * \param pValue The float value used to construct FbxString. */ - FbxString(const float pValue); - - /** Double constructor. - * \param pValue The double value used to construct FbxString. */ - FbxString(const double pValue); - - //! Destructor. - ~FbxString(); - //@} - - /** - * \name Buffer Access and Validation - */ - //@{ - //! Get string length like "C" strlen(). - size_t GetLen() const; - - //! Get string length like "C" strlen(). - size_t Size() const; - - //! Return \c true if string length equal zero. - bool IsEmpty() const; - - //! Discard the content of the string. - FbxString& Clear(); - - /** Access by reference. - * \param pIndex The index. - * \return The reference of the char at pIndex. */ - char& operator[](int pIndex); - - /** Access by copy. - * \param pIndex The index. - * \return The char at pIndex. */ - char operator[](int pIndex) const; - - //! Non-const buffer access. - char* Buffer(); - - //! Const buffer access. - const char* Buffer()const; - //@} - - /** - * \name String Operations - */ - //@{ - /** FbxString assignment operator. - * \param pString The FbxString to be assigned. */ - const FbxString& operator=(const FbxString& pString); - - /** Character assignment operator. - * \param pChar The character to be assigned. */ - const FbxString& operator=(char pChar); - - /** String assignment operator. - * \param pString The string to be assigned. */ - const FbxString& operator=(const char* pString); - - /** Int assignment operator. - * \param pValue The int value to be assigned. */ - const FbxString& operator=(int pValue); - - /** Float assignment operator. - * \param pValue The float value to be assigned. */ - const FbxString& operator=(float pValue); - - /** Double assignment operator. - * \param pValue The double value to be assigned. */ - const FbxString& operator=(double pValue); - - /** FbxString append. - * \param pString The FbxString to be appended. */ - const FbxString& operator+=(const FbxString& pString); - - /** Character append. - * \param pChar The character to be appended. */ - const FbxString& operator+=(char pChar); - - /** String append. - * \param pString The string to be appended. */ - const FbxString& operator+=(const char* pString); - - /** Integer append. - * \param pValue The int value to be appended. */ - const FbxString& operator+=(int pValue); - - /** Float append. - * \param pValue The float value to be appended. */ - const FbxString& operator+=(float pValue); - - /** Double append. - * \param pValue The double value to be appended. */ - const FbxString& operator+=(double pValue); - - /** Equality operator. - * \param pString The FbxString to be compared. */ - bool operator== (const FbxString& pString) const; - - /** Inequality operator. - * \param pString The FbxString to be compared. */ - bool operator!= (const FbxString& pString) const; - - /** Inferior to operator. - * \param pString The FbxString to be compared. */ - bool operator< (const FbxString& pString) const; - - /** Inferior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator<= (const FbxString& pString) const; - - /** Superior or equal to operator. - * \param pString The FbxString to be compared. */ - bool operator>= (const FbxString& pString) const; - - /** Superior to operator. - * \param pString The FbxString to be compared. */ - bool operator> (const FbxString& pString) const; - - /** Equality operator. - * \param pString The string to be compared. */ - bool operator== (const char* pString) const; - - /** Inequality operator. - * \param pString The string to be compared. */ - bool operator!= (const char* pString) const; - - /** Inferior to operator. - * \param pString The string to be compared. */ - bool operator< (const char* pString) const; - - /** Inferior or equal to operator. - * \param pString The string to be compared. */ - bool operator<= (const char* pString) const; - - /** Superior or equal to operator. - * \param pString The string to be compared. */ - bool operator>= (const char* pString) const; - - /** Superior to operator. - * \param pString The string to be compared. */ - bool operator> (const char* pString) const; - - /** FbxString concatenation. - * \param pString1 FbxString 1 to be concatenated to FbxString 2. - * \param pString2 FbxString 2 to be concatenated to FbxString 1 */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - - /** Character concatenation. - * \param pString FbxString to be concatenated to Character. - * \param pChar Character to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - - /** Character concatenation. - * \param pChar Character to be concatenated to FbxString - * \param pString FbxString to be concatenated to Character. */ - friend FBXSDK_DLL FbxString operator+(char pChar, const FbxString& pString); - - /** String concatenation. - * \param pString1 FbxString to be concatenated to String. - * \param pString2 String to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - - /** String concatenation. - * \param pString1 String to be concatenated to FbxString - * \param pString2 FbxString to be concatenated to String. */ - friend FBXSDK_DLL FbxString operator+(const char* pString1, const FbxString& pString2); - - /** Integer concatenation. - * \param pString FbxString to be concatenated to Integer. - * \param pValue Integer to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - - /** Integer concatenation. - * \param pValue Integer to be concatenated to FbxString - * \param pString FbxString to be concatenated to Integer. */ - friend FBXSDK_DLL FbxString operator+(int pValue, const FbxString& pString); - - /** Float concatenation. - * \param pString FbxString to be concatenated to Float. - * \param pValue Float to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - - /** Float concatenation. - * \param pValue Float to be concatenated to FbxString - * \param pString FbxString to be concatenated to Float. */ - friend FBXSDK_DLL FbxString operator+( float pValue, const FbxString& pString); - - /** Double concatenation. - * \param pString FbxString to be concatenated to Double. - * \param pValue Double to be concatenated to FbxString */ - friend FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - - //! Cast operator. - operator const char*() const; - - /** String assignment function with maximum length. - * \param pString The string to be assigned. - * \param pLength The maximum length of string to be assigned. */ - const FbxString& Copy(const char* pString, size_t pLength); - - /** Append as "C" strncat(). - * \param pString The string to be appended. - * \param pLength The length of chars to be appended. */ - const FbxString& Append(const char* pString, size_t pLength); - - /** Compare as "C" strcmp(). - * \param pString The string to be compared. */ - int Compare(const char* pString) const; - - /** Compare as "C" stricmp(). - * \param pString The string to be compared. */ - int CompareNoCase(const char* pString) const; - - /** Swap the contents of two strings. - * \param pString The FbxString to be swapped. */ - void Swap(FbxString& pString); - - //! Uppercase conversion. - FbxString Upper() const; - - //! Lowercase conversion. - FbxString Lower() const; - //@} - - /** - * \name Substring Extraction - */ - //@{ - /** Extract middle string for a given length. - * \param pFirst The start index of FbxString to be extracted. - * \param pCount The length of sub-string to be extracted. */ - FbxString Mid(size_t pFirst, size_t pCount) const; - - /** Extract middle string up to the end. - * \param pFirst The start index of FbxString to be extracted. */ - FbxString Mid(size_t pFirst) const; - - /** Extract left string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Left(size_t pCount) const; - - /** Extract right string. - * \param pCount The length of sub-string to be extracted. */ - FbxString Right(size_t pCount) const; - //@} - - /** - * \name Padding - */ - //@{ - /** \enum EPaddingType Padding types. - * - \e eRight - * - \e eLeft - * - \e eBoth */ - enum EPaddingType {eRight, eLeft, eBoth}; - - /** Add padding characters. - * \param pPadding The padding type. - * \param pLen The length limit of FbxString after padding. - * \param pCar The character to be padded. */ - FbxString Pad(EPaddingType pPadding, size_t pLen, char pCar=' ') const; - - /** Remove padding characters. - * \param pPadding The padding type. - * \param pCar The character to be padded. - * \remark If pCar == '\0' the function will remove all the characters that are tested by isspace(). */ - FbxString UnPad(EPaddingType pPadding, char pCar='\0') const; - //@} - - /** - * \name Search - */ - //@{ - /** Look for a single character match, like "C" strchr(). - * \param pChar The character to look for. - * \param pStartPosition Start position to look for. - * \return Index or -1 if not found. */ - int Find(char pChar, size_t pStartPosition=0) const; - - /** Look for a substring match, like "C" strstr(). - * \param pStrSub The substring to look for. - * \param pStartPosition Start position to look for. - * \return Starting index or -1 if not found. */ - int Find(const char* pStrSub, size_t pStartPosition=0) const; - - /** Look for the last occurrence of character in string, like "C" strrchr(). - * \param pChar The character to look for. - * \return Index or -1 if not found. */ - int ReverseFind(char pChar) const; - - /** Look for a single character match, like "C" strpbrk(). - * \param pStrCharSet The character set. - * \param pStartPosition The start position. - * \return Index or -1 if not found. */ - int FindOneOf(const char* pStrCharSet, size_t pStartPosition=0) const; - - /** Replace a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \param pStartPosition The start position. - * \return \c true if substring found and replaced. */ - bool FindAndReplace(const char* pFind, const char* pReplaceBy, size_t pStartPosition=0); - - /** Replace all occurrence of a substring. - * \param pFind The substring to look for. - * \param pReplaceBy The string to replace by. - * \return \c true if something got replaced. */ - bool ReplaceAll(const char* pFind, const char* pReplaceBy); - - /** Replace all occurrence of character to find by replacement character. - * \param pFind The character to look for. - * \param pReplaceBy The character to replace by. - * \return \c true if character found and replaced. */ - bool ReplaceAll(char pFind, char pReplaceBy); - //@} - - /** - * \name Token Extraction - */ - //@{ - /** Get number of tokens. - * \param pSpans The span - * \return The number of tokens. */ - int GetTokenCount(const char* pSpans) const; - - /** Get token at given index. - * \param pTokenIndex The token index. - * \param pSpans The span */ - FbxString GetToken(int pTokenIndex, const char* pSpans) const; - //@} - -private: - // Lengths/sizes in characters. - // Note: an extra character is always allocated. - char* mData; // Actual string (zero terminated). - - FbxString(size_t pSrc1Len, const char* pSrc1Data, size_t pSrc2Len, const char* pSrc2Data); // Previously ConcatCopy - void Init(); - - //! Invalidate string. - void Invalidate(); - - void FreeBuffer(); - void FreeBuffer(char *&pOldData); - - bool AllocCopy(FbxString& pDest, size_t pCopyLen, size_t pCopyIndex) const; - bool AllocBuffer(size_t pLen); - bool AllocBuffer(size_t pLen, char*& pOldData); - - bool AssignCopy(size_t pSrcLen, const char* pSrcData); - bool ConcatInPlace(size_t pSrcLen, const char* pSrcData); - - bool IsIn(char pChar, const char* pString) const; - bool InternalFindAndReplace(const char* pFind, const char* pReplaceBy, size_t& pStartPosition); -}; - -FBXSDK_INCOMPATIBLE_WITH_ARRAY(FbxString); - -//! FbxString concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); - -//! Character concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); - -//! String concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); - -//! Integer concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); - -//! Float concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); - -//! Double concatenation. -FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); - -//! Functor to compare FbxString -struct FbxStringCompare { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.Compare(pKeyB); } }; - -//! Functor to compare FbxString without case sensitivity -struct FbxStringCompareNoCase { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.CompareNoCase(pKeyB); } }; - -//! Functor to compare "C" strings -struct FbxCharPtrCompare { inline int operator()(const char* pKeyA, const char* pKeyB) const { return strcmp(pKeyA, pKeyB); } }; - -//! Functor to compare "C" strings without case sensitivity -struct FbxCharPtrCompareNoCase { inline int operator()(const char* pKeyA, const char* pKeyB) const { return FBXSDK_stricmp(pKeyA, pKeyB); } }; - -/** Remove the given char in the given string. -* \param pString The given string. -* \param pToRemove The given char that ought to be removed. -* \remarks Strings used in this function are case-sensitive. */ -inline void FbxRemoveChar(FbxString& pString, char pToRemove) -{ - int lPos = pString.ReverseFind(pToRemove); - while( lPos >= 0 ) - { - pString = pString.Left(lPos) + pString.Mid(lPos + 1); - lPos = pString.ReverseFind(pToRemove); - } -} - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstringlist.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstringlist.h deleted file mode 100755 index 3d3000a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxstringlist.h +++ /dev/null @@ -1,368 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstringlist.h -#ifndef _FBXSDK_CORE_BASE_STRING_LIST_H_ -#define _FBXSDK_CORE_BASE_STRING_LIST_H_ - -#include - -#include -#include - -#include - -//! Wraps a string (FbxString) and a pointer (FbxHandle). -class FbxStringListItem -{ -public: - FbxStringListItem(){ mReference = 0; } - FbxStringListItem(const char* pString, FbxHandle pRef=0){ mString = pString; mReference = pRef; } - - FbxString mString; - FbxHandle mReference; -}; - -inline int FbxCompareStringListSort(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem**)E1)->mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareStringListFindEqual(const void* E1, const void* E2) -{ - return FBXSDK_stricmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -inline int FbxCompareCaseSensitiveStringList(const void *E1,const void *E2) -{ - return strcmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); -} - -//! Base class of FbxStringList. -template class FbxStringListT -{ -protected: - FbxArray mList; - -public: - /** - * \name Operation With The Array - */ - //@{ - - /** Append a item at the end of the array. - * \return Index of appended pointer. - */ - int AddItem( Type* pItem ) { return mList.Add( pItem ); } - - /** Insert a item in the array. - * \param pIndex Position where to insert the item. - * \param pItem Item to insert. - * \return Position of the inserted item in the array. - * \remarks If the given index is out of range, the pointer is appended at the end of the array. - */ - int InsertItemAt( int pIndex, Type* pItem ) { return mList.InsertAt( pIndex, pItem ); } - - //! Access item at given index. - Type* GetItemAt( int pIndex ) const { return mList[pIndex]; } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no matching element. - */ - int FindItem( Type* pItem ) const { return mList.Find( pItem ); } - //}@ - -public : - /** - * \name Constructor and Destructor - */ - //@{ - - //! Default constructor. - FbxStringListT() - { - } - - //! Destructor. - virtual ~FbxStringListT() { Clear(); } - //}@ - - //!Remove the item at the end of the array and delete the associated object. - void RemoveLast() { RemoveAt( mList.GetCount()-1 ); } - - /** Get number of items in the array. - * \return The number of items in the array. - */ - inline int GetCount() const { return mList.GetCount(); } - - //! Access the string in the item at given index. - FbxString& operator[](int pIndex) { return mList[pIndex]->mString; } - - //! Access the value of reference in the item at given index. - FbxHandle GetReferenceAt(int pIndex) const { return mList[pIndex]->mReference; } - - //! Set the value of reference at given index. - void SetReferenceAt(int pIndex, FbxHandle pRef) { mList[pIndex]->mReference = pRef; } - - //! Access the pointer of string at given index. - char* GetStringAt(int pIndex) const { if (pIndexmString.Buffer(); else return NULL; } - - //! Set string at given index. - virtual bool SetStringAt(int pIndex, const char* pString) - { - if (pIndexmString = pString; - return true; - } else return false; - } - - /** Find first matching item. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int Find( Type& pItem ) const - { - for (int Count=0; CountmReference==pReference) { - return Count; - } - } - return -1; - } - - /** Find first matching item in array whose string address is the same as given pointer. - * \return Index of first matching item found or -1 if there is no - * matching element. - */ - int FindIndex( const char* pString ) const - { - for (int lCount=0; lCountmString==pString) { - return lCount; - } - } - return -1; - } - - /** Access the value of reference of the first matching item in array - * whose string address is the same as given pointer. - * \return The value of reference of the first matching item found or NULL if there is no - * matching element. - */ - FbxHandle FindReference(const char* pString ) const - { - int lIndex = FindIndex( pString ); - if (lIndex!=-1) { - return mList[lIndex]->mReference; - } - return 0; // NULL - } - - //! Remove first matching item. - bool Remove ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item in array whose string address is the same as given pointer. - bool Remove (const char* pString ) - { - int lIndex = FindIndex( pString ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Remove first matching item. - bool RemoveIt ( Type& pItem ) - { - int lIndex = Find( pItem ); - if (lIndex>=0) { - RemoveAt( lIndex ); - return true; - } - return false; - } - - //! Sort the array by the string of every item,not case sensitive. - void Sort( ) - { - qsort( &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListSort ); - } - - /** Find first matching item which has the same string as given parameter,not case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindEqual(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListFindEqual ); - } - else - { - return NULL ; - } - } - - /** Find first matching item which has the same string as given parameter, case sensitive. - * \return the pointer of matching item found or NULL if there is no - * matching element. - * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) - */ - void* FindCaseSensitive(const char* pString) const - { - FbxStringListItem Key(pString); - - if (mList.GetCount() != 0) - { - return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*), FbxCompareCaseSensitiveStringList); - } - else - { - return NULL ; - } - - } - - - //! Add a new item at the end of array. - int Add( const char* pString, FbxHandle pItem=0 ) - { - return InsertAt( mList.GetCount(),pString,pItem ); - } - - virtual int InsertAt( int pIndex, const char* pString, FbxHandle pItem=0 ) - { - return mList.InsertAt( pIndex,FbxNew< Type >( pString,(FbxHandle)pItem )); - } - - /** Remove the item at the given position in the array and delete the associated object. - * \param pIndex Position of the item to remove. - * \remarks If the index is not valid, nothing is performed. Otherwise, - * the item is removed from the array and the items are shifted to fill the - * empty slot. - */ - virtual void RemoveAt(int pIndex) - { - FbxDelete(mList.RemoveAt(pIndex)); - } - - //! Delete the array. - virtual void Clear() - { - FbxArrayDelete(mList); - } - - /** Get the string of all the item. - * \return The text of string, each item's string separated by '~'. - */ - virtual void GetText(FbxString& pText) const - { - int lCount; - for (lCount=0; lCountmString; - if (lCount -{ -public: - /** - * \name Constructors - */ - //@{ - //! Default constructor. - FbxStringList(); - - //! Copy constructor. - FbxStringList( const FbxStringList& pOriginal ); - //@} - - /** - * \name Assignment Operators - */ - //@{ - //! FbxStringList assignment function. - void CopyFrom( const FbxStringList* pOriginal ); - - //! FbxStringList assignment operator. - FbxStringList& operator=(const FbxStringList& pOriginal); - //@} -}; - -#include - -#endif /* _FBXSDK_CORE_BASE_STRING_LIST_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtime.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtime.h deleted file mode 100755 index 07b5533..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtime.h +++ /dev/null @@ -1,648 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtime.h -#ifndef _FBXSDK_CORE_BASE_TIME_H_ -#define _FBXSDK_CORE_BASE_TIME_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_TIME_INFINITE FbxTime(FBXSDK_TC_INFINITY) -#define FBXSDK_TIME_MINUS_INFINITE FbxTime(FBXSDK_TC_MINFINITY) -#define FBXSDK_TIME_ZERO FbxTime(FBXSDK_TC_ZERO) -#define FBXSDK_TIME_EPSILON FbxTime(FBXSDK_TC_EPSILON) -#define FBXSDK_TIME_ONE_SECOND FbxTime(FBXSDK_TC_SECOND) -#define FBXSDK_TIME_ONE_MINUTE FbxTime(FBXSDK_TC_MINUTE) -#define FBXSDK_TIME_ONE_HOUR FbxTime(FBXSDK_TC_HOUR) -#define FBXSDK_TIME_ASSERT_EPSILON 0.5 -#define FBXSDK_TIME_FORWARD 1 -#define FBXSDK_TIME_BACKWARD -1 - -class FbxTimeModeObject; - -/** Class to encapsulate time units. - * \nosubgrouping - * FbxTime can measure time in hour, minute, second, frame, field, residual and also combination of these units. - * It is recommended to use FbxTime for all time related operations. For example, currently it is used in FbxGlobalSettings, - * FbxGlobalTimeSettings, FbxCache, all curve filters and all animation-related classes, etc. - * FbxTime is just used to represent a moment, to represent a period of time, FbxTimeSpan should be used. - * \see FbxTimeSpan - */ -class FBXSDK_DLL FbxTime -{ -public: - /** Long long constructor. - * \param pTime Initial value defined as a 64bit integer. - */ - FbxTime(const FbxLongLong pTime=0){ mTime = pTime; } - - /** - * \name Time Modes and Protocols - */ - //@{ - /** Time modes. - * \remarks - * EMode \c eNTSCDropFrame is used for broadcasting operations where - * clock time must be (almost) in sync with time code. To bring back color - * NTSC time code with clock time, this mode drops 2 frames per minute - * except for every 10 minutes (00, 10, 20, 30, 40, 50). 108 frames are - * dropped per hour. Over 24 hours the error is 2 frames and 1/4 of a - * frame. A time-code of 01:00:03:18 equals a clock time of 01:00:00:00 - * - * \par - * EMode \c eNTSCFullFrame represents a time address and therefore is NOT - * IN SYNC with clock time. A time code of 01:00:00:00 equals a clock time - * of 01:00:03:18. - * - * - \e eDefaultMode - * - \e eFrames120 120 frames/s - * - \e eFrames100 100 frames/s - * - \e eFrames60 60 frames/s - * - \e eFrames50 50 frames/s - * - \e eFrames48 48 frame/s - * - \e eFrames30 30 frames/s (black and white NTSC) - * - \e eFrames30Drop 30 frames/s (use when display in frame is selected, equivalent to NTSC drop) - * - \e eNTSCDropFrame ~29.97 frames/s drop color NTSC - * - \e eNTSCFullFrame ~29.97 frames/s color NTSC - * - \e ePAL 25 frames/s PAL/SECAM - * - \e eFrames24 24 frames/s Film/Cinema - * - \e eFrames1000 1000 milli/s (use for date time) - * - \e eFilmFullFrame ~23.976 frames/s - * - \e eCustom Custom frame rate value - * - \e eFrames96 96 frames/s - * - \e eFrames72 72 frames/s - * - \e eFrames59dot94 ~59.94 frames/s - * - \e eModesCount Number of time modes - */ - enum EMode - { - eDefaultMode, - eFrames120, - eFrames100, - eFrames60, - eFrames50, - eFrames48, - eFrames30, - eFrames30Drop, - eNTSCDropFrame, - eNTSCFullFrame, - ePAL, - eFrames24, - eFrames1000, - eFilmFullFrame, - eCustom, - eFrames96, - eFrames72, - eFrames59dot94, - eModesCount - }; - - /** Time protocols enumaration - * - \e eSMPTE SMPTE EProtocol - * - \e eFrameCount Frame count - * - \e eDefaultProtocol Default protocol (initialized to eFRAMES) - */ - enum EProtocol {eSMPTE, eFrameCount, eDefaultProtocol}; - - /** Set default time mode. - * \param pTimeMode Time mode identifier. - * \param pFrameRate Custom framerate, only have effect in case of pTimeMode = FbxTime::eCustom - * \remarks It is meaningless to set default time mode to \c eDefaultMode. - */ - static void SetGlobalTimeMode(EMode pTimeMode, double pFrameRate=0.0); - - /** Get default time mode. - * \return Currently set time mode identifier. - * \remarks Default time mode initial value is eFrames30. - */ - static EMode GetGlobalTimeMode(); - - /** Set default time protocol. - * \param pTimeProtocol Time protocol identifier. - * \remarks It is meaningless to set default time protocol to \c eDefaultProtocol. - */ - static void SetGlobalTimeProtocol(EProtocol pTimeProtocol); - - /** Get default time protocol. - * \return Currently set time protocol identifier. - * \remarks Default time protocol initial value is eSMPTE. - */ - static EProtocol GetGlobalTimeProtocol(); - - /** Get frame rate associated with time mode, in frames per second. - * \param pTimeMode Time mode identifier. - * \return Frame rate value. - */ - static double GetFrameRate(EMode pTimeMode); - - /** Get time mode associated with frame rate. - * \param pFrameRate The frame rate value. - * \param pPrecision The tolerance value. - * \return The corresponding time mode identifier or \c eDefaultMode if no time - * mode associated to the given frame rate is found. - */ - static EMode ConvertFrameRateToTimeMode(double pFrameRate, double pPrecision=0.00000001); - //@} - - /** - * \name Time Conversion - */ - //@{ - /** Set time in internal format. - * \param pTime Time value to set. - */ - inline void Set(FbxLongLong pTime){ mTime = pTime; } - - /** Get time in internal format. - * \return Time value. - */ - inline FbxLongLong Get() const { return mTime; } - - /** Set time in milliseconds. - * \param pMilliSeconds Time value to set. - */ - inline void SetMilliSeconds(FbxLongLong pMilliSeconds){ mTime = pMilliSeconds * FBXSDK_TC_MILLISECOND; } - - /** Get time in milliseconds. - * \return Time value. - */ - inline FbxLongLong GetMilliSeconds() const { return mTime / FBXSDK_TC_MILLISECOND; } - - /** Set time in seconds. - * \param pTime Time value to set. - */ - void SetSecondDouble(double pTime); - - /** Get time in seconds. - * \return Time value. - */ - double GetSecondDouble() const; - - /** Set time in hour/minute/second/frame/field format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame and pField are summed together. - * For example, it is possible to set the time to 83 seconds in the following - * ways: SetTime(0,1,23) or SetTime(0,0,83). - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame=0, int pField=0, EMode pTimeMode=eDefaultMode); - - /** Set time in hour/minute/second/frame/field/residual format. - * \param pHour The hours value. - * \param pMinute The minutes value. - * \param pSecond The seconds value. - * \param pFrame The frames values. - * \param pField The field value. - * \param pResidual The hundredths of frame value. - * \param pTimeMode Time mode identifier. - * \remarks Parameters pHour, pMinute, pSecond, pFrame, pField and pResidual - * are summed together, just like above. - * pResidual represents hundredths of frame, and won't necessarily - * correspond to an exact internal value. - * - * \remarks The time mode can't have a default value, because - * otherwise SetTime(int, int, int, int, int, int) - * would be ambiguous. Please specify DEFAULT_MODE. - */ - void SetTime(int pHour, int pMinute, int pSecond, int pFrame, int pField, int pResidual, EMode pTimeMode); - - /** Get time in hour/minute/second/frame/field/residual format. - * \param pHour The returned hours value. - * \param pMinute The returned minutes value. - * \param pSecond The returned seconds value. - * \param pFrame The returned frames values. - * \param pField The returned field value. - * \param pResidual The returned hundredths of frame value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - * \return \c true if the pTimeMode parameter is a valid identifier and thus the extraction - * succeeded. If the function returns \c false, all the values are set to 0. - */ - bool GetTime(int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField, int& pResidual, EMode pTimeMode=eDefaultMode) const; - - /** Snaps a time value to the time value associated with the nearest frame. - * \param pRound If \c true the return value is rounded to the nearest integer. - * \return The snapped time value. - */ - FbxTime GetFramedTime(bool pRound=true) const; - - /** Set time in frame format. - * \param pFrames The number of frames. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFrame(FbxLongLong pFrames, EMode pTimeMode=eDefaultMode); - - /** Set time in frame format, including fractions. - * \param pFrames The number of frames in decimal value. - * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. - */ - void SetFramePrecise(FbxDouble pFrames, EMode pTimeMode=eDefaultMode); - - /** Get number of hours in time. - * \return Hours value. - */ - int GetHourCount() const; - - /** Get number of minutes in time. - * \return Minutes value. - */ - int GetMinuteCount() const; - - /** Get number of seconds in time. - * \return Seconds value. - */ - int GetSecondCount() const; - - /** Get number of frames in time. - * \param pTimeMode Time mode identifier. - * \return Integer value representing the frame count. - */ - FbxLongLong GetFrameCount(EMode pTimeMode=eDefaultMode) const; - - /** Get precise number of frames in time, including fractions. - * \param pTimeMode Time mode identifier. - * \return Decimal value representing the frame count, including fractions. - */ - FbxDouble GetFrameCountPrecise(EMode pTimeMode=eDefaultMode) const; - - /** Get number of fields in time. - * \param pTimeMode Time mode identifier. - * \return Fields value. - */ - FbxLongLong GetFieldCount(EMode pTimeMode=eDefaultMode) const; - - /** Get residual time exceeding last full field. - * \param pTimeMode Time mode identifier. - * \return Residual value. - */ - int GetResidual(EMode pTimeMode=eDefaultMode) const; - - /** Test for Drop Frame mode - * \param pTimeMode Time mode identifier. - * \return True if the pTimeMode is a Drop Frame mode. - */ - static bool IsDropFrame(EMode pTimeMode=eDefaultMode); - - /** Separator char between second and frame. - * \param pTimeMode Time mode identifier. - * \return ';' is returned if pTimeMode is a DropFrame mode otherwise ':'. - */ - char GetFrameSeparator(EMode pTimeMode=eDefaultMode) const; - - /** Get time in a human readable format. - * \param pTimeString An array large enough to contain a minimum of 19 characters. - * \param pTimeStringSize Size of the pTimeString buffer used with secure functions. - * \param pInfo The amount of information if time protocol is \c eSMPTE: - *

  • 1 means hours only - *
  • 2 means hours and minutes - *
  • 3 means hours, minutes and seconds - *
  • 4 means hours, minutes, seconds and frames - *
  • 5 means hours, minutes, seconds, frames and field - *
  • 6 means hours, minutes, seconds, frames, field and residual value
- * \param pTimeMode Requested time mode. - * \param pTimeFormat Requested time protocol. - * \return pTimeString parameter filled with a time value or set to a empty string - * if parameter pInfo is not valid. - */ - char* GetTimeString(char* pTimeString, const FbxUShort& pTimeStringSize, int pInfo=5, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - enum EElement {eHours, eMinutes, eSeconds, eFrames, eField, eResidual}; - - /** Get the time in a human readable format. - * \param pStart The starting element type used to format the time string. - * \param pEnd The last element type used to format the time string. - * \param pTimeMode The time mode requested. - * \param pTimeFormat The time format requested. - * \return The human readable time string. */ - FbxString GetTimeString(EElement pStart=eHours, EElement pEnd=eResidual, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; - - /** Set time in a human readable format. - * \param pTime An array of a maximum of 18 characters. - * If time protocol is \c eSMPTE, pTimeString must be formatted this way: - * "[hours:]minutes[:seconds[.frames[.fields]]]". Hours, minutes, seconds, - * frames and fields are parsed as integers and brackets indicate optional - * parts. - * If time protocol is \c eFRAME, pTimeString must be formatted this way: - * "frames". Frames is parsed as a 64 bits integer. - * \param pTimeMode Given time mode. - * \param pTimeFormat Given time protocol. - * \return True if the set time string succeed, otherwise return false. - */ - bool SetTimeString(const char* pTime, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol); - //@} - - /** - * \name Time Operators - */ - //@{ - /** Equality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if equal, \c false otherwise. - */ - inline bool operator==(const FbxTime& pTime) const { return mTime == pTime.mTime; } - - /** Inequality operator. - * \param pTime The FbxTime to be compared. - * \return \c true if unequal, \c false otherwise. - */ - inline bool operator!=(const FbxTime& pTime) const { return mTime != pTime.mTime; } - - /** Superior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator>=(const FbxTime& pTime) const { return mTime >= pTime.mTime; } - - /** Inferior or equal to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior or equal to the passed FbxTime, \c false otherwise. - */ - inline bool operator<=(const FbxTime& pTime) const { return mTime <= pTime.mTime; } - - /** Superior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is superior to the passed FbxTime, \c false otherwise. - */ - inline bool operator>(const FbxTime& pTime) const { return mTime > pTime.mTime; } - - /** Inferior to operator. - * \param pTime The FbxTime to be compared. - * \return \c true if this FbxTime is inferior to the passed FbxTime, \c false otherwise. - */ - inline bool operator<(const FbxTime& pTime) const { return mTime < pTime.mTime; } - - /** Assignment operator. - * \param pTime The FbxTime to be assigned. - */ - inline FbxTime& operator=(const FbxTime& pTime) { mTime = pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return This FbxTime after addition. - */ - inline FbxTime& operator+=(const FbxTime& pTime) { mTime += pTime.mTime; return *this; } - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return This FbxTime after subtraction. - */ - inline FbxTime& operator-=(const FbxTime& pTime) { mTime -= pTime.mTime; return *this; } - - /** Addition operator. - * \param pTime The FbxTime to be added. - * \return A temporary FbxTime after addition. - */ - FbxTime operator+(const FbxTime& pTime) const; - - /** Subtraction operator. - * \param pTime The FbxTime to be subtracted. - * \return A temporary FbxTime after subtraction. - */ - FbxTime operator-(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param Mult Multiply this FbxTime by int Mult. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const int Mult) const; - - /** Division operator. - * \param pTime Divide this FbxTime by pTime. - * \return A temporary FbxTime after division. - */ - FbxTime operator/(const FbxTime& pTime) const; - - /** Multiplication operator. - * \param pTime Multiply this FbxTime by pTime. - * \return A temporary FbxTime after multiplication. - */ - FbxTime operator*(const FbxTime& pTime) const; -/* - //! Increment time of one unit of the internal format (prefix form). - inline FbxTime& operator++() { mTime += 1; return (*this); } - - //! Increment time of one unit of the internal format (postfix form). - inline const FbxTime operator++(int) { FbxTime lOld = *this; ++(*this); return lOld; } - - //! Decrement time of one unit of the internal format (prefix form). - inline FbxTime& operator--() { mTime -= 1; return (*this); } - - //! Decrement time of one unit of the internal format (postfix form). - inline const FbxTime operator--(int) { FbxTime lOld = *this; --(*this); return lOld; }*/ - //@} - - /** One frame value for a specified time mode. - * \param pTimeMode Time mode identifier. - * \return the time code of a one frame. - */ - static FbxLongLong GetOneFrameValue(EMode pTimeMode=eDefaultMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Keep compatibility with old fbx format - enum EOldMode - { - eOLD_DEFAULT_MODE, //Default mode set using FbxTime::SetGlobalTimeMode(EMode pTimeMode) - eOLD_CINEMA, //24 frameOLD_s/s - eOLD_PAL, //25 frameOLD_s/s PAL/SECAM - eOLD_FRAMES30, //30 frameOLD_s/s BLACK & WHITE NTSC - eOLD_NTSC_DROP_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES50, //50 frameOLD_s/s - eOLD_FRAMES60, //60 frameOLD_s/s - eOLD_FRAMES100, //100 frameOLD_s/s - eOLD_FRAMES120, //120 frameOLD_s/s - eOLD_NTSC_FULL_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC - eOLD_FRAMES30_DROP, //30 frameOLD_s/s - eOLD_FRAMES1000 //1000 frameOLD_s/s - }; - -private: - FbxLongLong mTime; //In 1 / 46,186,158,000 Seconds - - static EMode gsGlobalTimeMode; - static EProtocol gsGlobalTimeProtocol; - static FbxTimeModeObject* gsTimeObject; - - void InternalSetTime(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField, EMode pTimeMode); - - friend FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); - friend FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); - friend FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); - friend FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate); - friend FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FbxTime in seconds constructor. - * \param pTime - */ -FBXSDK_DLL inline FbxTime FbxTimeSeconds(const FbxDouble& pTime=0.0) -{ - FbxTime lTime; - lTime.SetSecondDouble(pTime); - return lTime; -} - -/** Class to encapsulate time intervals. - * \nosubgrouping - * \see FbxTime - */ -class FBXSDK_DLL FbxTimeSpan -{ -public: - //! Constructor. - FbxTimeSpan() {} - - /** Constructor. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - FbxTimeSpan(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start and stop time. - * \param pStart Beginning of the time interval. - * \param pStop Ending of the time interval. - */ - inline void Set(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } - - /** Set start time. - * \param pStart Beginning of the time interval. - */ - inline void SetStart(FbxTime pStart){ mStart = pStart; } - - /** Set stop time. - * \param pStop Ending of the time interval. - */ - inline void SetStop(FbxTime pStop){ mStop = pStop; } - - /** Get start time. - * \return Beginning of time interval. - */ - inline FbxTime GetStart() const { return mStart; } - - /** Get stop time. - * \return Ending of time interval. - */ - inline FbxTime GetStop() const { return mStop; } - - /** Get time interval in absolute value. - * \return Time interval. - */ - inline FbxTime GetDuration() const { if( mStop > mStart ) return mStop - mStart; else return mStart - mStop; } - - /** Get time interval. - * \return Signed time interval. - */ - inline FbxTime GetSignedDuration() const { return mStop - mStart; } - - /** Get direction of the time interval. - * \return \c FBXSDK_TIME_FORWARD if time interval is forward, \c FBXSDK_TIME_BACKWARD if backward. - */ - inline int GetDirection() const { if( mStop >= mStart ) return FBXSDK_TIME_FORWARD; else return FBXSDK_TIME_BACKWARD; } - - /** Return \c true if the time is inside the timespan. - * \param pTime Judge whether pTime is inside the timespan. - * \return \c True if is, \c false otherwise. - */ - bool IsInside(FbxTime pTime) const; - - /** Return the intersection of the two time spans. - * \param pTime - * \return The intersection of pTime and this FbxTimeSpan. - */ - FbxTimeSpan Intersect(const FbxTimeSpan& pTime) const; - - /** Inequality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxTimeSpan& pTime) const; - - /** Equality operator. - * \param pTime FbxTimeSpan compared with this one. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxTimeSpan& pTime) const; - - /** Unite with another FbxTimeSpan - * \param pSpan The FbxTimeSpan - * \param pDirection FBXSDK_TIME_FORWARD or FBXSDK_TIME_BACKWARD - * \remarks This function assumes both of the FbxTimeSpan objects are in the same direction. - * Use FBXSDK_TIME_FORWARD when start < stop in both timespan - * Use FBXSDK_TIME_BACKWARD when start > stop in both timespan - */ - void UnionAssignment(const FbxTimeSpan& pSpan, int pDirection=FBXSDK_TIME_FORWARD); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mStart; - FbxTime mStop; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxLocalTime -{ -public: - FbxLocalTime(); - - int mYear; - int mMonth; - int mDay; - int mHour; - int mMinute; - int mSecond; - int mMillisecond; -}; - -FBXSDK_DLL void FbxGetCurrentLocalTime(FbxLocalTime& pLocalTime); - -FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); -FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); -FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); -FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate=0.0); -FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); - -// Use those functions to keep the compatibility with old time mode since we added new time mode. -FBXSDK_DLL FbxTime::EOldMode FbxGetOldTimeModeCorrespondance(FbxTime::EMode pMode); -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromOldValue(FbxTime::EOldMode pOldMode); - -// We now store the framerate instead of the time mode. -FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromFrameRate(char* pFrameRate); -FBXSDK_DLL void FbxGetControlStringList(char* pControlString, FbxTime::EProtocol pTimeFormat); -FBXSDK_DLL const char* FbxGetGlobalFrameRateString(FbxTime::EMode pTimeMode); -FBXSDK_DLL const char* FbxGetGlobalTimeModeString(FbxTime::EMode pTimeMode); -FBXSDK_DLL double FbxGetFrameRate(FbxTime::EMode pTimeMode); - -// Time format -FBXSDK_DLL FbxTime::EProtocol FbxSelectionToTimeFormat(int pSelection); -FBXSDK_DLL FbxTime::EMode FbxSelectionToTimeMode(int pSelection); -FBXSDK_DLL int FbxTimeToSelection(FbxTime::EMode pTimeMode=FbxTime::eDefaultMode, int pTimeFormat=FbxTime::eDefaultProtocol); -FBXSDK_DLL const char* FbxGetTimeModeName(FbxTime::EMode pTimeMode); -FBXSDK_DLL int FbxGetFrameRateStringListIndex(FbxTime::EMode pTimeMode); -FBXSDK_DLL bool FbxIsValidCustomFrameRate(double pFramerate); -FBXSDK_DLL bool FbxGetNearestCustomFrameRate(double pFramerate, double& pNearestRate); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIME_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtimecode.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtimecode.h deleted file mode 100755 index ec27dbf..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxtimecode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtimecode.h -#ifndef _FBXSDK_CORE_BASE_TIMECODE_H_ -#define _FBXSDK_CORE_BASE_TIMECODE_H_ - -#include - -#include - -#define FBXSDK_TC_ZERO FBXSDK_LONGLONG(0) -#define FBXSDK_TC_EPSILON FBXSDK_LONGLONG(1) -#define FBXSDK_TC_MINFINITY FBXSDK_LONGLONG(-0x7fffffffffffffff) -#define FBXSDK_TC_INFINITY FBXSDK_LONGLONG(0x7fffffffffffffff) -#define FBXSDK_TC_FIX_DEN FBXSDK_LONGLONG(100000000) - -#define FBXSDK_TC_MILLISECOND FBXSDK_LONGLONG(46186158) -#define FBXSDK_TC_SECOND FbxLongLong(FBXSDK_TC_MILLISECOND*1000) -#define FBXSDK_TC_MINUTE FbxLongLong(FBXSDK_TC_SECOND*60) -#define FBXSDK_TC_HOUR FbxLongLong(FBXSDK_TC_MINUTE*60) -#define FBXSDK_TC_DAY FbxLongLong(FBXSDK_TC_HOUR*24) - -// Frame @ 30 Hz -#define FBXSDK_TC_NTSC_FIELD FbxLongLong(FBXSDK_TC_SECOND/30/2) -#define FBXSDK_TC_NTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30) - -// Frame @ 29.9700299700 Hz -#define FBXSDK_TC_MNTSC_FIELD FbxLongLong(FBXSDK_TC_MNTSC_FRAME/2) -#define FBXSDK_TC_MNTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30*1001/1000) -#define FBXSDK_TC_MNTSC_2_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*2) -#define FBXSDK_TC_MNTSC_30_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) -#define FBXSDK_TC_MNTSC_1798_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1798) // leap minute -#define FBXSDK_TC_MNTSC_1800_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1800) // ~1 minute -#define FBXSDK_TC_MNTSC_17982_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*17982) // ~10 minutes -#define FBXSDK_TC_MNTSC_107892_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*107892) // ~1 hour -#define FBXSDK_TC_MNTSC_108000_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*108000) - -// For 29.9700299700 non-drop, btw : same values as with 23.976 -#define FBXSDK_TC_MNTSC_1_SECOND FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) // 1 frame * 30 -#define FBXSDK_TC_MNTSC_1_MINUTE FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*60) // 1 minute (1800 frames) -#define FBXSDK_TC_MNTSC_1_HOUR FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MNTSC_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*30/1001) -#define FBXSDK_TC_MNTSC_DEN FBXSDK_TC_FIX_DEN - -// Frame @ 25 Hz -#define FBXSDK_TC_PAL_FIELD FbxLongLong(FBXSDK_TC_SECOND/25/2) -#define FBXSDK_TC_PAL_FRAME FbxLongLong(FBXSDK_TC_SECOND/25) - -// Frame @ 24 Hz -#define FBXSDK_TC_FILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24) - -// Frame @ 23.9760239760 Hz -#define FBXSDK_TC_MFILM_FIELD FbxLongLong(FBXSDK_TC_MFILM_FRAME/2) -#define FBXSDK_TC_MFILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24*1001/1000) -#define FBXSDK_TC_MFILM_1_SECOND FbxLongLong(FBXSDK_TC_MFILM_FRAME*24) // 1 frame * 24 -#define FBXSDK_TC_MFILM_1_MINUTE FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*60) // 1 minute (1440 frames) -#define FBXSDK_TC_MFILM_1_HOUR FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*3600) // 1 hour - -#define FBXSDK_TC_MFILM_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*24/1001) -#define FBXSDK_TC_MFILM_DEN FBXSDK_TC_FIX_DEN - -////////////////////////////////////////////////////////////////////////////////////////// - -#define FBXSDK_TC_REM(quot, num, den) ((quot) = (num) / (den), (quot) * (den)) -#define FBXSDK_TC_HOUR_REM(quot, num, den) ((quot) = ((num - (-FbxLongLong(num < 0) & (den - 1))) / (den)), (quot) * (den)) - -FBXSDK_DLL FbxLongLong FbxTCSeconds(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCMinutes(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCHours(FbxLongLong pTime); -FBXSDK_DLL FbxLongLong FbxTCSetRate(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCGetRate(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, FbxLongLong pPeriod); -FBXSDK_DLL FbxLongLong FbxTCSetNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSCnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSCnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC_2Xnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC_2Xnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetMNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetMNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetPAL(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetPAL(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); -FBXSDK_DLL FbxLongLong FbxTCSetFILM(int pHour, int pMinute, int pSecond, FbxLongLong pFrame); -FBXSDK_DLL FbxLongLong FbxTCGetFILM(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame); -FBXSDK_DLL FbxLongLong FbxTCSetFILMND(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); -FBXSDK_DLL FbxLongLong FbxTCGetFILMND(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); - -#include - -#endif /* _FBXSDK_CORE_BASE_TIMECODE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxutils.h b/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxutils.h deleted file mode 100755 index 465a331..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/base/fbxutils.h +++ /dev/null @@ -1,172 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxutils.h -#ifndef _FBXSDK_CORE_BASE_UTILITIES_H_ -#define _FBXSDK_CORE_BASE_UTILITIES_H_ - -#include - -#include -#include - -#include - -#ifndef FBXSDK_ENV_WINSTORE - /** Retrieve the environment variable value. - * \return A new string containing the environment variable value. */ - FBXSDK_DLL FbxString FbxGetEnv(const char* pEnvVar); - - /** Get the application directory - * \return The application directory. */ - FBXSDK_DLL FbxString FbxGetApplicationDirectory(); -#endif - -/** Retrieve the system temporary folder path name. -* \return A new string containing the system temporary folder path name. */ -FBXSDK_DLL FbxString FbxGetSystemTempPath(); - -/** Override the system temporary folder path name. - * \param pPathUTF8 The system temporary folder to use for override. - * \return True if the system temporary folder path has been set and False otherwise. - * \remark The system temporary folder is limited to _MAX_PATH characters. Trying to set - * a longer value will fail and the current system temporary folder path is left unchanged. - */ -FBXSDK_DLL bool FbxSetSystemTempPath(const char* pPathUTF8); - -/** Retrieve the working directory of the system in UTF8 format. -* \return A string that contain the current working directory of the system. */ -FBXSDK_DLL FbxString FbxGetCurrentWorkPath(); - -/** Change the working directory of the system. */ -FBXSDK_DLL void FbxSetCurrentWorkPath(const char* pPath_UTF8); - -class FBXSDK_DLL FbxPathUtils -{ -public: - /** Bind together a root path with a file path. - * \param pRootPath The root path that will get binded to the file path. - * \param pFilePath The file path to bind to the root path. - * \param pCleanPath If true, the resulting path will be cleaned via FbxPathUtils::Clean(). - * \return Both paths binded together forming a new file path. - * \remark If the file path is already a full valid path, pFilePath is returned. - */ - static FbxString Bind(const char* pRootPath, const char* pFilePath, bool pCleanPath=true); - - /** Extract the folder name from the given file path. - * \param pFilePath The given file path. - * \return The folder name. If there isn't any '\\' or '/' in the given file path, it will return pFilePath. - */ - static FbxString GetFolderName(const char* pFilePath); - - /** Extract file name from the given file path. - * \param pFilePath The given file path. - * \param pWithExtension Decide the file name with extension or without extension. - * If it is true, return the file name with extension; - * if it is false, return the file name without extension. - */ - static FbxString GetFileName(const char* pFilePath, bool pWithExtension=true); - - /** Extract the file extension in the given file path. - * \param pFilePath The file path to extract the extension. - * \return The file extension without the '.' character. - * \remark Return empty string if the file path doesn't contain a valid extension. - */ - static FbxString GetExtensionName(const char* pFilePath); - - /** Change or append a file extension to the specified file path. - * \param pFilePath The file path to change the file extension - * \param pExtension The extension to change or append to the file path. - * \return The file path with the file extension changed/added. - * \remark If the file path doesn't end with a valid file name, pFilePath is returned. - */ - static FbxString ChangeExtension(const char* pFilePath, const char* pExtension); - - //! Test if the given path is relative path, if it is return true. - static bool IsRelative(const char* pPath); - - /** Get the given new path's relative path to the given root path. - * \param pRootPath The given root path - * \param pNewPath The given new path. If it is only file name, the default directory is work directory. - * \return The relative path. - * \remarks If the given two paths have the same drive, the function will turn '\\' in the relative path to '/'. - */ - static FbxString GetRelativePath(const char* pRootPath, const char* pNewPath); - - //! Get the given new path's relative path to the given root path. - static FbxString GetRelativeFilePath(const char* pRootPath, const char* pNewFilePath); - - /** Get the full path of given path (if the given path is relative path, - * it will take current directory as default root path.) - */ - static FbxString Resolve(const char* pRelPath); - - //! Clean the redundant and useless denotations in given path name. - static FbxString Clean(const char* pPath); - - /** Generate full safe file path name you can use to create new file. - * \param pFolder The folder where the file name should be attempted to be created. - * \param pPrefix The prefix of generated file name. - * \return A valid file path that can safely be used to create a new file. - */ - static FbxString GenerateFileName(const char* pFolder, const char* pPrefix); - - /** Verify if the specified folder path exist. - * \param pFolderPathUTF8 The folder path to test its existance. - * \return True if the folder path exist, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Exist(const char* pFolderPathUTF8); - - /** Create the specified folder path if it doesn't exist. - * \param pFolderPathUTF8 The folder path to create, in UTF8 encoding. - * \return True if folder path already exist, or if it was successfully created, false otherwise. - * \remark This function will create multiple folders if needed, and it also work for relative paths. */ - static bool Create(const char* pFolderPathUTF8); - - /** Delete the specified folder path and all its content recursively. - * \param pFolderPathUTF8 The folder path to delete, in UTF8 encoding. - * \return True if folder path was successfully deleted, false otherwise. - * \remark This function work for relative paths. It will search from the current work path. */ - static bool Delete(const char* pFolderPathUTF8); - -#ifndef FBXSDK_ENV_WINSTORE - /** Verify if the folder contains items or not. - * \param pFolderPath_UTF8 The folder path to test if it contains items. - * \return True if the folder contain any kind of entry type. */ - static bool IsEmpty(const char* pFolderPath_UTF8); -#endif -}; - -/** Global accessor to an FbxStatus object. -* This object is not used internally by the FBX SDK. It is provided for convenience and its usage is shown in the custom reader/writers samples. */ -class FBXSDK_DLL FbxStatusGlobal -{ -public: - static FbxStatus& GetRef() - { - if( !mStatusPtr ) - { - mStatusPtr = FbxNew(); - } - return *mStatusPtr; - } - -private: - FbxStatusGlobal(){ mStatusPtr = NULL; } - ~FbxStatusGlobal(){ FbxDelete(mStatusPtr); } - static FbxStatusGlobal sgFbxStatusGlobal; - static FbxStatus* mStatusPtr; -}; - - -#include - -#endif /* _FBXSDK_CORE_BASE_UTILITIES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxclassid.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxclassid.h deleted file mode 100755 index cf92892..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxclassid.h +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclassid.h -#ifndef _FBXSDK_CORE_CLASSID_H_ -#define _FBXSDK_CORE_CLASSID_H_ - -#include - -#include - -class FbxClassIdInfo; -class FbxObject; -class FbxPropertyHandle; -class FbxManager; - -//! The function pointer type for object constructor functions. -typedef FbxObject* (*FbxObjectCreateProc)(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - -/** Internal class used to differentiate objects during run-time. Essentially, each class has an unique ClassId, that the -* system can request in order to test if the class match the description. This class implement the necessary tools to be able -* to perform hierarchic class testing. This means that a class B that inherits from the class A will answer yes to a "Is A" -* query of type A or B, but will answer no to a class C that can still inherit from A. All class must inherit from FbxObject -* before they can have their own ClassId. When using the standard macros to create new types of objects in the FBX SDK, a -* static ClassId will automatically be generated for that new class. -* -* When objects are exported to an FBX file, their class type is maintained using 3 sort of strings. They are the Object Type -* string, the Object Sub Type string and the Object Type Prefix. There is no good or bad way to choose the value of these -* identifiers, but it is preferable to use meaningful values to keep the ASCII version of FBX readable and easy to understand. -* \see FbxObject */ -class FBXSDK_DLL FbxClassId -{ -public: - //! Constructor. - FbxClassId(); - - /** Advanced constructor were we can specify the general parameters for this ClassId. - * \param pClassName The name of the class represented. - * \param pParentClassId The parent ClassId of this class. - * \param pConstructor A function pointer to a construction method for this ClassId. - * \param pFBXType The FBX file Object Type string associated to this class. - * \param pFBXSubType The FBX file Object Sub Type string associated to this class. */ - FbxClassId(const char* pClassName, const FbxClassId& pParentClassId, FbxObjectCreateProc pConstructor=0, const char* pFBXType=NULL, const char* pFBXSubType=NULL); - - //! Destructor. - void Destroy(); - - /** Retrieve the class name. - * \return The class identification string name. */ - const char* GetName() const; - - /** Retrieve the parent ClassId. - * \return The parent ClassId. */ - FbxClassId GetParent() const; - - /** Create an instance of this class. - * \param pManager The FBX SDK Manager to be used to instantiate this object. This allow the object to use the same memory manager as the provided manager. - * \param pName The name to assign to this new object instance. - * \param pFrom An object to clone if it matches the same ClassId. This is an optional parameter. - * \return The newly created instance of this class. */ - FbxObject* Create(FbxManager& pManager, const char* pName, const FbxObject* pFrom); - - /** Override the function pointer method to construct this object. - * \param pConstructor A newly defined function pointer to a construction method to replace the existing one. - * \return True if the operation was successful. */ - bool Override(FbxObjectCreateProc pConstructor); - - /** Test if this class is a hierarchical children of the specified class type. This is the standard method to differentiate object classes. - * \param pId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool Is(const FbxClassId& pId) const; - - /** Equivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is exactly the same, \c false otherwise. - * \remark This function only perform direct equality test, and doesn't test hierarchic children. */ - bool operator==(const FbxClassId& pClassId) const; - - /** Inequivalence operator. - * \param pClassId The class type to test against self. - * \return \c true if the ClassId is not the same, \c false otherwise. - * \remark This function only perform direct inequality test, and doesn't test hierarchic children. */ - bool operator!=(const FbxClassId& pClassId) const; - - /** Retrieve the FBX file Object Type string associated to this class. - * \param pAskParent If \c true, retrieve the parent ClassId, but only if self ClassId is not valid. - * \return The FBX file Object Type string associated to this class. */ - const char* GetFbxFileTypeName(bool pAskParent=false) const; - - /** Retrieve the FBX file Object Sub Type string associated to this class. - * \return The FBX file Object Sub Type string associated to this class. */ - const char* GetFbxFileSubTypeName() const; - - /** Find out if self ClassId is valid or not. - * \return \c true if self ClassId is valid, \c false otherwise. */ - inline bool IsValid() const { return mClassInfo ? true : false; } - - /** Set the Object Type Prefix string associated to this class. This will change the "ObjectTypePrefix::" found in front - * of object name in the FBX file. This is useful to differentiate objects by their name without using the Object Type or - * Sub Type strings in the file. - * \param pObjectTypePrefix The Object Type prefix string. */ - void SetObjectTypePrefix(const char* pObjectTypePrefix); - - /** Retrieve the Object Type Prefix string associated to this class. - * \return The Object Type Prefix string. */ - const char* GetObjectTypePrefix(); - - /** Retrieve the root property handle of this class. This is useful to access the default property hierarchy for this - * class. This allow users to retrieve information such as the default value for all properties of this class. - * \return The root property handle for this class. */ - FbxPropertyHandle* GetRootClassDefaultPropertyHandle(); - - /** Increase the instance reference count for this class type. - * \return the new count of reference to this class after increment. */ - int ClassInstanceIncRef(); - - /** Decrease the instance reference count for this class type. - * \return the new count of reference to this class after decrement. */ - int ClassInstanceDecRef(); - - /** Retrieve the instance reference count for this class type. - * \return The reference count of this class type. */ - int GetInstanceRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - inline FbxClassIdInfo* GetClassIdInfo() { return mClassInfo; } - inline const FbxClassIdInfo* GetClassIdInfo() const { return mClassInfo; } - -private: - FbxClassId(FbxClassIdInfo* mClassInfo); - - bool SetFbxFileTypeName(const char* pName); - bool SetFbxFileSubTypeName(const char* pName); - - FbxClassIdInfo* mClassInfo; - - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxClassId -struct FbxClassIdCompare -{ - inline int operator()(const FbxClassId& pKeyA, const FbxClassId& pKeyB) const - { - const FbxClassIdInfo* lKeyA = pKeyA.GetClassIdInfo(); - const FbxClassIdInfo* lKeyB = pKeyB.GetClassIdInfo(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -#include - -#endif /* _FBXSDK_CORE_CLASSID_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxconnectionpoint.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxconnectionpoint.h deleted file mode 100755 index 6185af7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxconnectionpoint.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconnectionpoint.h -#ifndef _FBXSDK_CORE_CONNECTION_POINT_H_ -#define _FBXSDK_CORE_CONNECTION_POINT_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxConnection -{ -public: - enum EType - { - eNone = 0, - // System or user - eSystem = 1 << 0, - eUser = 1 << 1, - eSystemOrUser = eUser | eSystem, - // Type of Link - eReference = 1 << 2, - eContains = 1 << 3, - eData = 1 << 4, - eLinkType = eReference | eContains | eData, - eDefault = eUser | eReference, - eUnidirectional = 1 << 7 - }; -}; - -class FbxConnectionPointFilter; - -class FBXSDK_DLL FbxConnectionPoint -{ -public: - enum EDirection - { - eDirSrc = 1 << 0, // Contains sources - eDirDst = 1 << 1, // Contains destinations - eDirUni = 1 << 2, // Connection is not 2 ways - eDirBoth = eDirSrc | eDirDst, - eDirMask = eDirSrc | eDirDst | eDirUni - }; - - enum EType - { - eStandard = 0, - eSubConnection = 1 << 3, // Connect is a sub Connect of another - eTypeMask = eSubConnection - }; - - enum EAttribute - { - eDefault = 0, - eCache = 1 << 4, - eAttributeMask = eCache - }; - - enum EAllocFlag - { - eNotAllocated = 0, - eAllocated = 1 << 5, - eAllocFlagMask = eAllocated - }; - - enum ECleanedFlag - { - eNotCleaned = 0, - eCleaned = 1 << 6, - eCleanedFlagMask = eCleaned - }; - - enum EEvent - { - eSrcConnectRequest, - eDstConnectRequest, - eSrcConnect, - eDstConnect, - eSrcConnected, - eDstConnected, - eSrcDisconnect, - eDstDisconnect, - eSrcDisconnected, - eDstDisconnected, - eSrcReplaceBegin, - eSrcReplaceEnd, - eDstReplaceBegin, - eDstReplaceEnd, - eSrcReorder, - eSrcReordered - }; - - // Constructor/Destructor - FbxConnectionPoint(void* pData=0); - virtual ~FbxConnectionPoint(); - - void SetFilter(FbxConnectionPointFilter* pConnectFilter, EType pType=eStandard); - void InternalClear(); - - //! Clear the ConnectList without any regards to what is connected - void WipeConnectionList(); - void Destroy(); - void SubConnectRemoveAll(); - - inline FbxConnectionPoint* GetSubOwnerConnect(){ return GetConnectType() == eSubConnection ? mOwner : NULL; } - inline FbxConnectionPointFilter* GetFilter(){ return mFilter; } - - virtual bool IsInReplace(FbxConnectionPoint* p1, FbxConnectionPoint* p2); - - inline void SetConnectType(EType pType){ mFlags = (mFlags & ~eTypeMask) | pType; } - inline EType GetConnectType(){ return EType(mFlags & eTypeMask); } - inline void SetDirection(int pDirections){ mFlags = (mFlags & ~eDirMask) | pDirections; } - inline EDirection GetDirection(){ return EDirection(mFlags & eDirMask); } - inline void SetAttribute(int pAttributes){ mFlags = (mFlags & ~eAttributeMask) | pAttributes; } - inline EAttribute GetAttribute(){ return EAttribute(mFlags & eAttributeMask); } - inline void SetAllocatedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eAllocated : mFlags & ~eAllocFlagMask; } - inline bool GetAllocatedFlag(){ return ( mFlags & eAllocFlagMask ) ? true : false; } - inline void SetCleanedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eCleaned : mFlags & ~eCleanedFlagMask; } - inline bool GetCleanedFlag(){ return ( mFlags & eCleanedFlagMask ) ? true : false; } - - bool IsValidSrc(FbxConnectionPoint* pConnect); - bool IsValidDst(FbxConnectionPoint* pConnect); - bool IsValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool IsValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); - bool RequestValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - bool RequestValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); - - bool ConnectSrc(FbxConnectionPoint* pSrc,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDst(FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectSrcAt(int pDst_SrcIndex, FbxConnectionPoint* pSrc, FbxConnection::EType pConnectionType=FbxConnection::eNone); - bool ConnectDstAt(int pSrc_DstIndex, FbxConnectionPoint* pDst, FbxConnection::EType pConnectionType=FbxConnection::eNone); - static bool ConnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType); - static bool ConnectAt(FbxConnectionPoint* pSrc, int pSrc_DstIndex, FbxConnectionPoint* pDst, int pDst_SrcIndex, FbxConnection::EType pConnectionType); - - bool DisconnectDst(FbxConnectionPoint* pSrc); - bool DisconnectSrc(FbxConnectionPoint* pSrc); - void DisconnectAllSrc(); - void DisconnectAllDst(); - static bool DisconnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst); - bool DisconnectDstAt(int pIndex); - bool DisconnectSrcAt(int pIndex); - - bool ReplaceInDst(FbxConnectionPoint* pDstOld, FbxConnectionPoint* pDstNew, int pIndexInNew); - bool ReplaceInSrc(FbxConnectionPoint* pSrcOld, FbxConnectionPoint* pSrcNew, int pIndexInNew); - bool ReplaceDstAt(int pIndex, FbxConnectionPoint* pDst); - bool ReplaceSrcAt(int pIndex, FbxConnectionPoint* pSrc); - bool SwapSrc(int pIndexA, int pIndexB); - - /** Change the position of a source Connect. - * \param pIndex Position of the Connect to move. - * \param pAtIndex Position where to move the Connect. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at position pAtIndex. - */ - bool MoveSrcAt(int pIndex, int pAtIndex); - - /** Change the position of a source Connect. - * \param pSrc Connect to move. - * \param pAtSrc Connect at which position to move. - * \return \c True if the Connect was moved. - * \remarks After the move, the Connect will be precisely at the position where pAtSrc was before the move. - */ - bool MoveSrcAt(FbxConnectionPoint* pSrc, FbxConnectionPoint* pAtSrc); - - // Access services - bool IsConnectedSrc(FbxConnectionPoint*); - bool IsConnectedDst(FbxConnectionPoint*); - inline bool IsConnected(FbxConnectionPoint* pConnect) { return IsConnectedSrc(pConnect) || IsConnectedDst(pConnect); } - - inline int GetSrcCount() const { return mConnectionList.GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex) const { return mConnectionList.GetSrc(pIndex);} - inline FbxConnection::EType GetSrcType(int pIndex) const { return mConnectionList.GetSrcType(pIndex);} - inline int GetDstCount() const { return mConnectionList.GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex) const { return mConnectionList.GetDst(pIndex);} - inline FbxConnection::EType GetDstType(int pIndex) const { return mConnectionList.GetDstType(pIndex);} - - inline int FindSrc(FbxConnectionPoint* pConnect){ return mConnectionList.FindSrc(pConnect); } - inline int FindDst(FbxConnectionPoint* pConnect){ return mConnectionList.FindDst(pConnect); } - - // Filtered versions - inline int GetSrcCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcCount() : GetSrcCount(); } - inline FbxConnectionPoint* GetSrc(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrc(pIndex) : GetSrc(pIndex); } - inline FbxConnection::EType GetSrcType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcType(pIndex) : GetSrcType(pIndex); } - inline int GetDstCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstCount() : GetDstCount(); } - inline FbxConnectionPoint* GetDst(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDst(pIndex): GetDst(pIndex); } - inline FbxConnection::EType GetDstType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstType(pIndex) : GetDstType(pIndex); } - - void* GetData(){ return mData; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class ConnectionList - { - public: - ConnectionList(); - ~ConnectionList(); - - void Clear(); - - void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddSrc(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveSrcAt(int pIndex); - int FindSrc(FbxConnectionPoint* pConnect) const; - int GetSrcCount() const; - FbxConnectionPoint* GetSrc(int pIndex) const; - FbxConnection::EType GetSrcType(int pIndex) const; - - void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void AddDst(FbxConnectionPoint* pConnect, FbxConnection::EType pType); - void RemoveDstAt(int pIndex); - int FindDst(FbxConnectionPoint* pConnect) const; - int GetDstCount() const; - FbxConnectionPoint* GetDst(int pIndex) const; - FbxConnection::EType GetDstType(int pIndex) const; - - protected: - struct Connection { - Connection(FbxConnectionPoint* pPoint, FbxConnection::EType pType) : mPoint(pPoint), mType(pType){} - FbxConnectionPoint* mPoint; FbxConnection::EType mType; - }; - FbxArray mSrcList; - FbxArray mDstList; - }; - - void SubConnectAdd(FbxConnectionPoint* pConnect); - void SubConnectRemove(FbxConnectionPoint* pConnect); - FbxConnectionPoint* SubConnectFind(FbxConnectionPointFilter* pFilter); - FbxConnectionPoint* SubConnectGetOrCreate(FbxConnectionPointFilter* pFilter); - void SubConnectFill(FbxConnectionPoint* pConnect); - - virtual bool ConnectNotify(EEvent pAction, FbxConnectionPoint* pThis, int pIndex, FbxConnectionPoint* pConnect=NULL, FbxConnection::EType pConnectionType=FbxConnection::eNone, FbxConnectionPoint* pNewConnect=NULL); - virtual void ConnectCleanUp(FbxConnectionPoint* pThis); - - int FindSrcIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - int FindDstIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); - - bool InternalMoveSrcBefore(int pIndex, int pBeforeIndex); - -private: - inline void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertSrcAt(pIndex, pConnect, pConnectionType); } - inline void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertDstAt(pIndex, pConnect, pConnectionType); } - inline void RemoveSrcAt(int pIndex){ mConnectionList.RemoveSrcAt(pIndex); } - inline void RemoveDstAt(int pIndex){ mConnectionList.RemoveDstAt(pIndex); } - - static bool InternalConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool UserConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); - static bool EmitReplaceNotify(FbxConnectionPoint* pDstOwner, FbxConnectionPoint* pSrcOwner, FbxConnectionPoint* pDst, FbxConnectionPoint* pSrc, EEvent pConnectAction, FbxConnectionPoint* pNew); - - virtual bool SetOwnerConnect(FbxConnectionPoint* pConnect); - inline FbxConnectionPoint* GetOwnerConnect(){ return mOwner; } - bool ConnectOwnedConnect(FbxConnectionPoint* pConnect); - bool DisconnectOwnedConnect(FbxConnectionPoint* pConnect); - - void* mData; - int mFlags; - FbxConnectionPoint* mOwner; - ConnectionList mConnectionList; - FbxArray mSubConnectList; - FbxArray mSubConnectCreatedList; - FbxConnectionPointFilter* mFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Class to manage Connect Filter */ -class FBXSDK_DLL FbxConnectionPointFilter -{ -public: - virtual ~FbxConnectionPointFilter() {}; - - //! Return reference ConnectionPoint filter. - virtual FbxConnectionPointFilter* Ref(); - - //! Cancel reference - virtual void Unref(); - - //! Get unique filter ID - virtual FbxInt GetUniqueId() const { return 0; } - - /** Judge if the given Connection Point is valid - * \param pConnect The given Connection Point. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValid(FbxConnectionPoint* pConnect) const; - - /** Judge if the given Connection Point is a valid connection - * \param pConnect The given Connection Point. - * \param pType Connection type. - * \return \c True if valid, \c false if not valid. */ - virtual bool IsValidConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pType) const; - - /** Judge if it is equal with the given ConnectionPoint filter. - * \param pConnectFilter The given ConnectionPoint filter. - * \return \c True if equal, \c false if unequal. */ - virtual bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; -}; - -#include - -#endif /* _FBXSDK_CORE_CONNECTION_POINT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxdatatypes.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxdatatypes.h deleted file mode 100755 index 0222b14..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxdatatypes.h +++ /dev/null @@ -1,267 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdatatypes.h -#ifndef _FBXSDK_CORE_DATA_TYPES_H_ -#define _FBXSDK_CORE_DATA_TYPES_H_ - -#include - -#include -#include - -#include - -/** FBX SDK data type class - * \nosubgrouping - */ -class FBXSDK_DLL FbxDataType -{ -public: - static FbxDataType Create(const char* pName, const EFbxType pType); - static FbxDataType Create(const char* pName, const FbxDataType& pDataType); - - /** - *\name Constructor and Destructor. - */ - //@{ - //! Constructor. - FbxDataType(); - - /** Copy constructor. - * \param pDataType Another FbxDataType object copied to this one. - */ - FbxDataType(const FbxDataType& pDataType); - - //! Destroy this datatype. - void Destroy(); - - /** Constructor. - * \param pTypeInfoHandle Type information handle - */ - FbxDataType(const FbxPropertyHandle& pTypeInfoHandle); - - //! Destructor. - ~FbxDataType(); - //@} - - /** Assignment operator - * \param pDataType Datatype whose value is assigned to this datatype. - * \return This datatype - */ - inline FbxDataType& operator=(const FbxDataType& pDataType){ mTypeInfoHandle=pDataType.mTypeInfoHandle; return *this; } - - /** - * \name boolean operation - */ - //@{ - /** Equality operator - * \param pDataType Datatype to compare to. - * \return \c true if equal,\c false otherwise. - */ - inline bool operator==(const FbxDataType& pDataType) const { return mTypeInfoHandle==pDataType.mTypeInfoHandle; } - - /** Non-equality operator - * \param pDataType Datatype to compare to. - * \return \c true if unequal,\c false otherwise. - */ - inline bool operator!=(const FbxDataType& pDataType) const { return mTypeInfoHandle!=pDataType.mTypeInfoHandle; } - //@} - - /** Test whether this datatype is a valid datatype. - * \return \c true if valid, \c false otherwise. - */ - inline bool Valid() const { return mTypeInfoHandle.Valid(); } - - /** Test if this datatype is the specified datatype. - * \param pDataType Datatype to compare to. - * \return \c true if this datatype is the specified datatype, \c false otherwise. - */ - inline bool Is(const FbxDataType& pDataType) const { return mTypeInfoHandle.Is(pDataType.mTypeInfoHandle); } - - /** Retrieve this data type. - * \return This data type. - */ - EFbxType GetType() const; - - /** Retrieve data type name. - * \return Data type name. - */ - const char* GetName() const; - - /** Retrieve the information handle of this data type. - * \return Information handle of this data type. - */ - inline const FbxPropertyHandle& GetTypeInfoHandle() const { return mTypeInfoHandle; } - -private: - FbxPropertyHandle mTypeInfoHandle; - friend class FbxManager; -}; - -/** Retrieve data type from type enumeration index - * \param pType The type enumeration index - * \return The corresponding data type - */ -FBXSDK_DLL const FbxDataType& FbxGetDataTypeFromEnum(const EFbxType pType); - -/** Retrieve data type name string used by I/O operations - * \param pDataType The data type instance to retrieve its I/O name string - * \return The data type name string - * \remark This function is only used during I/O operations. It is not equal - * to the actual data type name. - */ -FBXSDK_DLL const char* FbxGetDataTypeNameForIO(const FbxDataType& pDataType); - -//! \name Basic Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxBoolDT; - extern FBXSDK_DLL FbxDataType FbxCharDT; - extern FBXSDK_DLL FbxDataType FbxUCharDT; - extern FBXSDK_DLL FbxDataType FbxShortDT; - extern FBXSDK_DLL FbxDataType FbxUShortDT; - extern FBXSDK_DLL FbxDataType FbxIntDT; - extern FBXSDK_DLL FbxDataType FbxUIntDT; - extern FBXSDK_DLL FbxDataType FbxLongLongDT; - extern FBXSDK_DLL FbxDataType FbxULongLongDT; - extern FBXSDK_DLL FbxDataType FbxFloatDT; - extern FBXSDK_DLL FbxDataType FbxHalfFloatDT; - extern FBXSDK_DLL FbxDataType FbxDoubleDT; - extern FBXSDK_DLL FbxDataType FbxDouble2DT; - extern FBXSDK_DLL FbxDataType FbxDouble3DT; - extern FBXSDK_DLL FbxDataType FbxDouble4DT; - extern FBXSDK_DLL FbxDataType FbxDouble4x4DT; - extern FBXSDK_DLL FbxDataType FbxEnumDT; - extern FBXSDK_DLL FbxDataType FbxStringDT; - extern FBXSDK_DLL FbxDataType FbxTimeDT; - extern FBXSDK_DLL FbxDataType FbxReferenceDT; - extern FBXSDK_DLL FbxDataType FbxBlobDT; - extern FBXSDK_DLL FbxDataType FbxDistanceDT; - extern FBXSDK_DLL FbxDataType FbxDateTimeDT; -//@} - -//! \name Extended Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxColor3DT; - extern FBXSDK_DLL FbxDataType FbxColor4DT; - extern FBXSDK_DLL FbxDataType FbxCompoundDT; - extern FBXSDK_DLL FbxDataType FbxReferenceObjectDT; - extern FBXSDK_DLL FbxDataType FbxReferencePropertyDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityDT; - extern FBXSDK_DLL FbxDataType FbxVisibilityInheritanceDT; - extern FBXSDK_DLL FbxDataType FbxUrlDT; - extern FBXSDK_DLL FbxDataType FbxXRefUrlDT; -//@} - -//! \name Transform Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxTranslationDT; - extern FBXSDK_DLL FbxDataType FbxRotationDT; - extern FBXSDK_DLL FbxDataType FbxScalingDT; - extern FBXSDK_DLL FbxDataType FbxQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxLocalTranslationDT; - extern FBXSDK_DLL FbxDataType FbxLocalRotationDT; - extern FBXSDK_DLL FbxDataType FbxLocalScalingDT; - extern FBXSDK_DLL FbxDataType FbxLocalQuaternionDT; - extern FBXSDK_DLL FbxDataType FbxTransformMatrixDT; - extern FBXSDK_DLL FbxDataType FbxTranslationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxRotationMatrixDT; - extern FBXSDK_DLL FbxDataType FbxScalingMatrixDT; -//@} - -//! \name Material Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveDT; - extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientDT; - extern FBXSDK_DLL FbxDataType FbxMaterialAmbientFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialBumpDT; - extern FBXSDK_DLL FbxDataType FbxMaterialNormalMapDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparentColorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialTransparencyFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularDT; - extern FBXSDK_DLL FbxDataType FbxMaterialSpecularFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialShininessDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionDT; - extern FBXSDK_DLL FbxDataType FbxMaterialReflectionFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialVectorDisplacementDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonFactorDT; - extern FBXSDK_DLL FbxDataType FbxMaterialCommonTextureDT; -//@} - -//! \name Layer Element Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxLayerElementUndefinedDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementNormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementBinormalDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTangentDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementMaterialDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementTextureDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementPolygonGroupDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUVDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVertexColorDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementSmoothingDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementCreaseDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementHoleDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementUserDataDT; - extern FBXSDK_DLL FbxDataType FbxLayerElementVisibilityDT; -//@} - -//! \name I/O Specialized Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxAliasDT; - extern FBXSDK_DLL FbxDataType FbxPresetsDT; - extern FBXSDK_DLL FbxDataType FbxStatisticsDT; - extern FBXSDK_DLL FbxDataType FbxTextLineDT; - extern FBXSDK_DLL FbxDataType FbxUnitsDT; - extern FBXSDK_DLL FbxDataType FbxWarningDT; - extern FBXSDK_DLL FbxDataType FbxWebDT; -//@} - -//! \name External Support Data Types -//@{ - extern FBXSDK_DLL FbxDataType FbxActionDT; - extern FBXSDK_DLL FbxDataType FbxCameraIndexDT; - extern FBXSDK_DLL FbxDataType FbxCharPtrDT; - extern FBXSDK_DLL FbxDataType FbxConeAngleDT; - extern FBXSDK_DLL FbxDataType FbxEventDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewXDT; - extern FBXSDK_DLL FbxDataType FbxFieldOfViewYDT; - extern FBXSDK_DLL FbxDataType FbxFogDT; - extern FBXSDK_DLL FbxDataType FbxHSBDT; - extern FBXSDK_DLL FbxDataType FbxIKReachTranslationDT; - extern FBXSDK_DLL FbxDataType FbxIKReachRotationDT; - extern FBXSDK_DLL FbxDataType FbxIntensityDT; - extern FBXSDK_DLL FbxDataType FbxLookAtDT; - extern FBXSDK_DLL FbxDataType FbxOcclusionDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterXDT; - extern FBXSDK_DLL FbxDataType FbxOpticalCenterYDT; - extern FBXSDK_DLL FbxDataType FbxOrientationDT; - extern FBXSDK_DLL FbxDataType FbxRealDT; - extern FBXSDK_DLL FbxDataType FbxRollDT; - extern FBXSDK_DLL FbxDataType FbxScalingUVDT; - extern FBXSDK_DLL FbxDataType FbxShapeDT; - extern FBXSDK_DLL FbxDataType FbxStringListDT; - extern FBXSDK_DLL FbxDataType FbxTextureRotationDT; - extern FBXSDK_DLL FbxDataType FbxTimeCodeDT; - extern FBXSDK_DLL FbxDataType FbxTimeWarpDT; - extern FBXSDK_DLL FbxDataType FbxTranslationUVDT; - extern FBXSDK_DLL FbxDataType FbxWeightDT; -//@} - -#include - -#endif /* _FBXSDK_CORE_DATA_TYPES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxemitter.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxemitter.h deleted file mode 100755 index fa73431..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxemitter.h +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxemitter.h -#ifndef _FBXSDK_CORE_EMITTER_H_ -#define _FBXSDK_CORE_EMITTER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Base class to emit event with the specified event type. -* The event type could be a specific class which derived from FbxEvent. Please read FbxEmitter::Emit() for more details. -* Event emitter contains a list of event handlers. -* FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. -* Before using emitter to emit an event, one or more event handlers must be added to the handlers list of current emitter. -* In other words, it's "bind event handlers to emitter". -* There are two ways to bind event handlers to emitter. -* \li 1. If you already got an event handler and would like to bind it to current emitter, please call FbxEmitter::AddListener(). -* \li 2. Or you can create an event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the specified emitter. -* It's similar to unbind or remove an even handler. For more details, -* \see FbxEmitter::RemoveListener() -* \see FbxListener::Unbind() -* \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventHandler FbxEvent FbxEventBase -*/ -class FBXSDK_DLL FbxEmitter -{ -public: - /** Add the specified event handler to current emitter list. - * \param pHandler The event handler will be added to the handlers list of current emitter. */ - void AddListener(FbxEventHandler& pHandler); - - /** Remove the specified event handler from current emitter list. - * \param pHandler The event handler will be removed from the handlers list of current emitter. */ - void RemoveListener(FbxEventHandler& pHandler); - - /** Emit an event with the specified the event type. One the event is emitted, the listener to this event will receive a signal. - * \param pEvent Specify the event type to emit. Could be a specific class which derived from FbxEvent, such as FbxObjectPropertyChanged. - * \see FbxEventBase FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport - * \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary */ - template void Emit(const EventType& pEvent) const - { - if( !mData ) return; - EventHandlerList::iterator itBegin = mData->mEventHandlerList.Begin(); - EventHandlerList::iterator itEnd = mData->mEventHandlerList.End(); - for( EventHandlerList::iterator it = itBegin; it != itEnd; ++it ) - { - if ((*it).GetHandlerEventType() == pEvent.GetTypeId()) - { - (*it).FunctionCall(pEvent); - } - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEmitter(); - ~FbxEmitter(); - -protected: - typedef FbxIntrusiveList EventHandlerList; - struct EventData { EventHandlerList mEventHandlerList; }; - EventData* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_EMITTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxevent.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxevent.h deleted file mode 100755 index 4acba03..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxevent.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxevent.h -#ifndef _FBXSDK_CORE_EVENT_H_ -#define _FBXSDK_CORE_EVENT_H_ - -#include - -#include - -#include - -/** FBX SDK event base class. - * An event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. - * You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return - * it to you with the right information in it. FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. - * Meanwhile, plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * The derived class of FbxEventBase contains a type ID to distinguish different types of events. - * FBX object can emit different types of FBX events at different conditions. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * For example, if a certain property of a FBX object is changed, the FBX object(emitter) can emit an event which type is FbxObjectPropertyChanged. - * The plug-in(listener) who are listening to FbxObjectPropertyChanged, will receive a signal and take action to process the event data. - * \nosubgrouping - * \see FbxEvent FbxEventHandler FbxListener FbxEmitter - */ -class FBXSDK_DLL FbxEventBase -{ - public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor - virtual ~FbxEventBase(); - //@} - - /** Retrieve the event type ID - * \return type id - */ - virtual int GetTypeId() const = 0; - - /** Force events to give us a name - * \return event name - */ - virtual const char* GetEventName() const = 0; - - protected: - static int GetStaticTypeId(const char*); -}; - -// Force events to declare a name by using an abstract method, and force them to use -// the proper name by making the call from FbxEvent<> go through the private static -// method. -#define FBXSDK_EVENT_DECLARE(Class) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: static const char* FbxEventName() { return #Class; } \ - friend class FbxEvent; \ - -// -// Similar to above, but to be used when you've got an event template, and the -// type is something know to FBX -// -#define FBXSDK_EVENT_TYPE_DECLARE(Class, FBXType) \ - public: virtual const char* GetEventName() const { return FbxEventName(); } \ - private: \ - static const char* FbxEventName() { \ - static FbxString lEventName = FbxString(#Class) + FbxString("<") + \ - FbxGetDataTypeFromEnum(FbxTypeOf(FBXType())).GetName() + ">"; \ - \ - return lEventName.Buffer(); \ - } \ - friend class FbxEvent< Class >; - - - -//This is for templates classes that will uses non fbxtypes in their templates -//We force the the creation of an UNIQUE string for each types so that we can -//retrieve the event within multiple DLLs - -//to be able to use this, the char EventName[] = "uniqueEventName"; must be declared -//globally. - -#define FBXSDK_EVENT_TEMPLATE_HEADER(ClassName, TemplateName)\ -template < class TemplateName, const char* T > \ -class ClassName: public FbxEvent< ClassName >\ -{\ - public: virtual const char* GetEventName() const {return FbxEventName();}\ - private: static const char* FbxEventName() {\ - static FbxString lEventName = (FbxString(#ClassName) +"<"+ FbxString(T) +">");\ - return lEventName.Buffer();\ - }\ - friend class FbxEvent< ClassName >; - - -//This is the footer macro, to put at the end to close the template class -//created by FBXSDK_EVENT_TEMPLATE_HEADER -#define FBXSDK_EVENT_TEMPLATE_FOOTER()\ -}; - -/** FBX event class, derived from FbxEventBase, and it contains a type ID for event. -* It's a template class. You can derive your own types of even. Such as: -* \code class FbxEventCustom : public FbxEvent \endcode -* \see FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport -* \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary -* \nosubgrouping -* \remarks A FBX event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. -* An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \see FbxEventBase FbxEventHandler FbxListener FbxEmitter -*/ -//--------------------------------------------------- -// T : We use the curiously recurring template pattern -// to initialize the typeId of each event type -template class FbxEvent : public FbxEventBase -{ -public: - //!Destructor - virtual ~FbxEvent(){} - - /** Update the type ID of current event with the given type ID. - * \param pTypeId the new type ID. - */ - static void ForceTypeId(int pTypeId) - { - // This is to handle specific cases where the type ID must be hard coded - // It is useful for shared event across DLL. We can then guarantee that - // The ID of a certain type will always have the same ID - smTypeId = pTypeId; - } - - /** Retrieve the event type ID - * \note This may be called from multiple threads. - * \return type id - */ - virtual int GetTypeId() const - { - return GetStaticTypeId(); - } - - /** Retrieve the event type ID - * \return type id - */ - static int GetStaticTypeId() - { - if( !smTypeId ) - { - if( !smTypeId ) - { - // If this does not compile, you need to add - // FBXSDK_EVENT_DECLARE(YourEventClassName) to your class declaration - smTypeId = FbxEventBase::GetStaticTypeId(T::FbxEventName()); - } - } - - return smTypeId; - } - -private: - //! The type ID of event - static int smTypeId; -}; - -// Static members implementation -template int FbxEvent::smTypeId = 0; - -#include - -#endif /* _FBXSDK_CORE_EVENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxeventhandler.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxeventhandler.h deleted file mode 100755 index e93018d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxeventhandler.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxeventhandler.h -#ifndef _FBXSDK_CORE_EVENT_HANDLER_H_ -#define _FBXSDK_CORE_EVENT_HANDLER_H_ - -#include - -#include -#include - -#include - -class FbxListener; - -/** Event handler class contains a listener and a callback function. -* Event handler is used to bind emitter and listener together. Its callback function can process event data. -* To generate a valid event handler, you can create an event emitter and event listener first and then call FbxListener::Bind(). -* It will create an event handler automatically and bind the handler to the listener and the created emitter. -* After that, the emitter and listener are bound together via event handler. -* \remarks An object(emitter) can emit a certain type of event, the object(listener) who are listening to that type of event, -* will receive a signal and take action to process the event data. -* \par The whole process of event is: -* \li 1. Create an emitter and a listener, then bind them together via the same event handler. -* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. -* \li 3. Once an event is emitted, the listener to this event will receive a signal. -* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. -* \note The event data is process by the callback function of event handler. -* \nosubgrouping -* \see FbxListener FbxEventBase FbxEvent FbxEmitter -*/ -class FbxEventHandler -{ -public: - //! Event handler base type. - enum EType - { - eListener, //!< Listener event handler type. - eEmitter, //!< Emitter event handler type. - eCount //!< Count of different event handler types. - }; - - /** Get event type of current handler. - * \return The type ID of event. */ - virtual int GetHandlerEventType()=0; - - /** Call function that process event data. - * \param pEvent specify the event type. pEvent could be a specific class which derived from FbxEventBase. - * \see FbxEventBase */ - virtual void FunctionCall(const FbxEventBase& pEvent)=0; - - /** Get listener of current handler. - * \return A pointer to the listener object. */ - virtual FbxListener* GetListener()=0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxEventHandler(){} - virtual ~FbxEventHandler(){} - - FBXSDK_INTRUSIVE_LIST_NODE(FbxEventHandler, eCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template class FbxMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*); - -public: - FbxMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxConstMemberFuncEventHandler : public FbxEventHandler -{ - typedef void (ListenerType::*CallbackFnc)(const EventType*) const; - -public: - FbxConstMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - ListenerType* mListener; - CallbackFnc mFunction; -}; - -template class FbxFuncEventHandler : public FbxEventHandler -{ - typedef void (*CallbackFnc)(const EventType*, FbxListener*); - -public: - FbxFuncEventHandler(FbxListener* pListener, CallbackFnc pFunction) : mListener(pListener), mFunction(pFunction){} - virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } - virtual void FunctionCall(const FbxEventBase& pEvent){ (*mFunction)(reinterpret_cast(&pEvent), mListener); } - virtual FbxListener* GetListener(){ return mListener; } - -private: - FbxListener* mListener; - CallbackFnc mFunction; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_EVENT_HANDLER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxlistener.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxlistener.h deleted file mode 100755 index 57c0630..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxlistener.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlistener.h -#ifndef _FBXSDK_CORE_LISTENER_H_ -#define _FBXSDK_CORE_LISTENER_H_ - -#include - -#include -#include -#include - -#include - -/**FBX SDK listener class. Once an event is emitted by an emitter, a listener should be created to listen to the event. - * The listener could receive a signal and take action to process the event data. - * \note The data will be process by the callback function of FbxListener::Bind(). - * Plug-in could be used as listener, since FbxPlugin is derived from FbxListener. - * To emit event, you could create an emitter and a listener, and then bind them together via event handler. - * To listen to an event which is emitted by an emitter, you should bind current listener to the emitter by calling FbxListener::Bind(). - * Event listener contains a list of event handlers. - * \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, - * will receive a signal and take action to process the event data. - * \par The whole process of event is: - * \li 1. Create an emitter and a listener, then bind them together via the same event handler. - * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. - * \li 3. Once an event is emitted, the listener to this event will receive a signal. - * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. - * \note The event data is process by the callback function of event handler. - * \see FbxEmitter FbxEventHandler FbxEvent FbxEventBase - */ -class FBXSDK_DLL FbxListener -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //!Destructor. - ~FbxListener(); - //!Constructor. - FbxListener(){} - //@} - - //////////////////////////////////////////////////////////////////////////////////////// - /** - * \name Bind and unbind methods - */ - //@{ - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)) - { - FbxMemberFuncEventHandler* eventHandler = - FbxNew< FbxMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)const) - { - FbxConstMemberFuncEventHandler* eventHandler = - FbxNew< FbxConstMemberFuncEventHandler >(static_cast(this),pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Bind current listener and the specified emitter together via an automatically created event handler. - * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. - * After that, the listener can listen to the event which is emitted by the specified emitter. - * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. - * \param pFunc The callback function to process event date. - * \return The automatically created event handler. - */ - template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (*pFunc)(const EventType*,FbxListener*)) - { - FbxFuncEventHandler* eventHandler = - FbxNew< FbxFuncEventHandler >(this, pFunc); - pEmitter.AddListener(*eventHandler); - mEventHandler.PushBack(*eventHandler); - return eventHandler; - } - - /**Unbind an event handler. The specified event handler will be removed from the handlers list of current listener. - * \param aBindId The event handler to unbind. - */ - void Unbind(const FbxEventHandler* aBindId); - //@} - -private: - typedef FbxIntrusiveList EventHandlerList; - EventHandlerList mEventHandler; -}; - -#include - -#endif /* _FBXSDK_CORE_LISTENER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxloadingstrategy.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxloadingstrategy.h deleted file mode 100755 index 295311a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxloadingstrategy.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxloadingstrategy.h -#ifndef _FBXSDK_CORE_LOADING_STRATEGY_H_ -#define _FBXSDK_CORE_LOADING_STRATEGY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * Abstract class used to implemented some plug-in loading strategy. - * A loading strategy dictate how some plug-ins will be loaded for instance. - * We could have a simple strategy that loads only a single dll on PC. - * We could also implement a strategy that load multiple dlls from a directory. - */ -class FBXSDK_DLL FbxLoadingStrategy : public FbxPluginContainer -{ -public: - /** Result state of loading plug-in. - */ - enum EState - { - eAllLoaded, //!< Plug-ins are loaded. - eNoneLoaded, //!< No plug-ins are loaded. - eAllFailed, //!< Plug-ins failed to load. - eSomeFailed //!< Not all found plug-ins are loaded. - }; - - /** - *\name Public interface - */ - //@{ - /** Execute the operation of loading the plug-in(s). The way it is executed is determined by the specific implementations. - * \param pData Plug in data that can be access inside the plug-ins. - * \return The state of the loading action. - */ - EState Load(FbxPluginData& pData); - - /** Execute the operation of unloading the plug-in(s). The way it is executed is determined by the specific implementations. - */ - void Unload(); - //@} - -protected: - /** - *\name User implementation - */ - //@{ - /** Called by the Load method, it contains the specific user implementation strategy to load the desired plug-in(s). - * \param pData Plug in data that can be access inside the plug-ins. - * \return If the plugin loading is successful return \c true, otherwise return \c false - */ - virtual bool SpecificLoad(FbxPluginData& pData) = 0; - - /** Called by the Unload method, it contains the specific user implementation strategy to unload the desired plug-in(s). - */ - virtual void SpecificUnload(FbxPluginData& pData) = 0; - //@} - - //! Whether the plugin is loaded or not. - EState mPluginsLoadedState; - -private: - FbxPluginData mData; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_LOADING_STRATEGY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxmanager.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxmanager.h deleted file mode 100755 index 4b11db7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxmanager.h +++ /dev/null @@ -1,555 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanager.h -#ifndef _FBXSDK_CORE_MANAGER_H_ -#define _FBXSDK_CORE_MANAGER_H_ - -#include - -#include - -#include - -class FbxIOSettings; -class FbxIOPluginRegistry; -class FbxAnimEvaluator; -class FbxSceneReference; -class FbxUserNotification; -class FbxMessageEmitter; -class FbxLocalizationManager; -class FbxXRefManager; -class FbxManager_internal; - -#ifndef FBXSDK_ENV_WINSTORE - class FbxPlugin; -#endif - -/** SDK object manager. - * The SDK manager is in charge of: - * \li scene element allocation, for example, FbxScene::Create(pSdkManager, ""). - * \li scene element deallocation, call FbxManager::Destroy() to deallocates all object created by the SDK manager. - * \li scene element search and access, please see \ref GlobalObjectManagement section. - * - * It is possible to override memory allocation functions throughout the FBX SDK by - * providing system memory allocation functions using the handler set functions below. - * It must be done before the first FbxManager creation. - * - * FbxSetMallocHandler(); - * FbxSetCallocHandler(); - * FbxSetReallocHandler(); - * FbxSetFreeHandler(); - * - * Upon destruction, all objects allocated by the SDK manager and not explicitly destroyed are destroyed as well. - * A derived class can be defined to allocate and deallocate specialized scene elements. - * \remarks You could create more than one SDK manager. However, it's better to NOT share the same object among different managers. - * \nosubgrouping - */ -class FBXSDK_DLL FbxManager -{ -public: - /** - * \name FBX SDK Manager Creation/Destruction - */ - //@{ - /** SDK manager allocation method. - * \return A pointer to the SDK manager or \c NULL if this is an - * evaluation copy of the FBX SDK and it is expired. - */ - static FbxManager* Create(); - - /** Destructor. - * Deallocates all object previously created by the SDK manager. - */ - virtual void Destroy(); - //@} - - /** - * \name Versions Queries - */ - //@{ - /** Get FBX SDK version string. - * \param pFull If true, the complete version string including revision number and release date will be returned, - * otherwise only the version numbering is returned. - */ - static const char* GetVersion(bool pFull=true); - - /** Get the current default FBX file format version number for this version of the FBX SDK. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - */ - static void GetFileFormatVersion(int& pMajor, int& pMinor, int& pRevision); - //@} - - - /** - * \name Object Registration, Definition and Management - */ - //@{ - /** Class registration. - * \param pName The class name. For example, "FbxMesh" for FbxMesh class. - * \param T1 FBX type of the specified class. - * \param T2 FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterFbxClass("FbxCamera", FBX_TYPE(FbxCamera), FBX_TYPE(FbxNodeAttribute)); \endcode - */ - template inline FbxClassId RegisterFbxClass(const char* pName, const T1* /*T1*/, const T2* /*T2*/, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0) - { - T1::ClassId = Internal_RegisterFbxClass(pName, T2::ClassId, (FbxObjectCreateProc)T1::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - return T1::ClassId; - } - - /** Runtime class registration. - * \param pName The class name. For example, "FbxUIWidgetBoolean". - * \param T FBX type of parent class. - * \param pFbxFileTypeName The type name of the class in FBX file. - * \param pFbxFileSubTypeName The sub type name of the class in FBX file. - * \return The class Id of the newly register class. - * Such as: - * \code RegisterRuntimeFbxClass( "FbxUIWidgetBoolean", FBX_TYPE(FbxUIWidgetDefinition), NULL, "FbxUIWidgetBoolean"); \endcode - */ - template inline FbxClassId RegisterRuntimeFbxClass(const char* pName, const T* /*T*/, const char* pFbxFileTypeName=0,const char* pFbxFileSubTypeName=0) - { - return Internal_RegisterFbxClass(pName, T::ClassId, (FbxObjectCreateProc)T::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); - } - - /** Runtime class unregistration. - * \param pName The class name. - */ - inline void UnregisterRuntimeFbxClass(const char* pName) - { - FbxClassId lClassId = FindClass(pName); - if( !(lClassId == FbxClassId()) ) - { - Internal_UnregisterFbxClass(lClassId); - } - } - - /** Override class. - * \param pFBX_TYPE_Class FBX type of class. - * \param pFBX_TYPE_OverridenClass FBX type of overridden class. - * \return The class Id - */ - template inline FbxClassId OverrideFbxClass(const T1* pFBX_TYPE_Class, const T2* pFBX_TYPE_OverridenClass) - { - T1::ClassId = Internal_OverrideFbxClass(T2::ClassId,(FbxObjectCreateProc)T1::Allocate ); - return T1::ClassId; - } - - /** Create a new object of the specified ClassId. - * \param pClassId The ClassId of the object to be created. - * \param pName The name given to the newly created object. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean - * the new object will become a source to the container, connection-wise. - * \param pCloneFrom A valid object pointer to use as the reference for cloning the object upon construction. - * \return If not null, a new instance of the specified class. - * \remark This function will return NULL if the ClassId used is invalid. New ClassId can be registered using - * the function RegisterFbxClass(). - */ - FbxObject* CreateNewObjectFromClassId(FbxClassId pClassId, const char* pName, FbxObject* pContainer=NULL, const FbxObject* pCloneFrom=NULL); - - /** Find class by the specified name. - * \param pClassName Class Name to find. - */ - FbxClassId FindClass(const char* pClassName) const; - - /** Find file class. - * \param pFbxFileTypeName Specify the type name in FBX file to find. - * \param pFbxFileSubTypeName Specify by The sub type name in FBX file to find. - */ - FbxClassId FindFbxFileClass(const char* pFbxFileTypeName, const char* pFbxFileSubTypeName) const; - - /** Class unregistration. - * \param pFBX_TYPE_Class FBX type of unregistered class. - */ - template inline void UnregisterFbxClass(const T*) - { - Internal_UnregisterFbxClass(T::ClassId); - T::ClassId = FbxClassId(); - } - //@} - - /** - * \name Data Type Management - */ - //@{ - /** Register a new data type to the manager - * \param pName The type name. - * \param pType The data type. - * \return The newly created FbxDataType - */ - FbxDataType CreateDataType(const char* pName, const EFbxType pType); - - /** List the data types - * \return the number of registered datatypes - */ - int GetDataTypeCount() const; - - /** Find a data types at pIndex. - * \param pIndex The data type index. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataType(const int pIndex) const; - - /** Find a data type from the type name. - * \param pDataType The type name. - * \return the found datatype. return null if not found - */ - FbxDataType& GetDataTypeFromName(const char* pDataType) const; - //@} - - /** - * \name User Notification Object - */ - //@{ - /** Access to the unique UserNotification object. - * \return The pointer to the user notification or \c NULL \c if the object - * has not been allocated. - */ - FbxUserNotification* GetUserNotification() const; - - /** Set the user notification - * \param pUN - */ - void SetUserNotification(FbxUserNotification* pUN); - //@} - - /** - * \name IOSettings Object - */ - //@{ - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings* GetIOSettings() const; - - /** Set the IOSettings pointer - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings* pIOSettings); - //@} - - - /** - * \name Message Emitter (for Message Logging) - */ - //@{ - /** Access to the unique FbxMessageEmitter object. - * \return The pointer to the message emitter. - */ - FbxMessageEmitter& GetMessageEmitter(); - /** Sets to the unique FbxMessageEmitter object. - * \param pMessageEmitter the emitter to use, passing NULL will reset to the default emitter. - * The object will be deleted when the SDK manager is destroyed, thus ownership is transfered. - */ - bool SetMessageEmitter(FbxMessageEmitter* pMessageEmitter); - //@} - - - /** - * \name Localization Hierarchy - */ - //@{ - /** Add a localization object to the known localization providers. - * \param pLocManager the localization object to register. - */ - void AddLocalization(FbxLocalizationManager* pLocManager); - - /** Remove a localization object from the known localization providers. - * \param pLocManager the localization object to remove. - */ - void RemoveLocalization(FbxLocalizationManager* pLocManager); - - /** Select the current locale for localization. - * \param pLocale the locale name, for example "fr" or "en-US". - */ - bool SetLocale(const char* pLocale); - - /** Localization helper function. Calls each registered localization manager - * until one can localizes the text. - * \param pID the identifier for the text to localize. - * \param pDefault the default text. Uses pID if NULL. - * \return the potentially localized text. May return the parameter passed in. - */ - const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name XRef Manager - */ - //@{ - /** Retrieve the manager responsible for managing object XRef resolution. - * \return The XRef manager for this SDK manager. - */ - FbxXRefManager& GetXRefManager(); - //@} - - /** - * \name Library Management - */ - //@{ - /** Retrieve the main object Libraries - * \return The Root library - */ - FbxLibrary* GetRootLibrary() const; - FbxLibrary* GetSystemLibraries() const; - FbxLibrary* GetUserLibraries() const; - //@} - - /** - * \name Plug-in Registry Object - */ - //@{ - /** Access to the unique FbxIOPluginRegistry object. - * \return The pointer to the user FbxIOPluginRegistry - */ - FbxIOPluginRegistry* GetIOPluginRegistry() const; - //@} - - /** - * \name Fbx Generic Plugins Management - */ - //@{ - #ifndef FBXSDK_ENV_WINSTORE - /** Load plug-ins directory - * \param pFilename The directory path. - * \param pExtensions The plug in extension. - * \return \c True - */ - bool LoadPluginsDirectory(const char* pFilename, const char* pExtensions=NULL); - - /** Load plug-in - * \param pFilename The file name - * \return \c True - */ - bool LoadPlugin(const char* pFilename); - - /** Unload all plug-ins - */ - bool UnloadPlugins(); - - /** Emit plugins event. - * \param pEvent The event to be emitted. - */ - bool EmitPluginsEvent(const FbxEventBase& pEvent); - - //!Get plugins. - FbxArray GetPlugins() const; - - /** get plugins count - * \return The number of plugins. - */ - int GetPluginCount() const; - - /** Find plug in. - * \param pName The plug in name. - * \param pVersion The plug in version. - * \return The plugin, \c null if not found. - */ - FbxPlugin* FindPlugin(const char* pName, const char* pVersion) const; - #endif /* !FBXSDK_ENV_WINSTORE */ - //@} - - - /** - * \name IO Settings - */ - //@{ - // Add IOSettings in hierarchy from different modules - - /** Fill IO Settings for registered readers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings& pIOS); - - /** Fill IO Settings for registered writers. - * \param pIOS The properties hierarchies to fill. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings& pIOS); - - /** Fill common IO Settings - * \param pIOS The properties hierarchies to fill. - * \param pImport If \c true, import properties are set, otherwise export properties are set. - */ - void FillCommonIOSettings(FbxIOSettings& pIOS, bool pImport); - //@} - - /** - * \name Global Object Management - */ - //@{ - /** Register object with the manager. - * \internal - * \param pObject The object to be registered. - * \anchor GlobalObjectManagement - */ - void RegisterObject(FbxObject* pObject); - - /** Unregister object with the manager. - * \internal - * \param pObject The object to be unregistered. - */ - void UnregisterObject(FbxObject* pObject); - - /** Register a list of objects with the manager. - * \internal - * \param pArray The list of object to be registered. - */ - void RegisterObjects(const FbxArray& pArray); - - /** Unregister a list of objects with the manager. - * \internal - * \param pArray The list of object to be unregistered. - */ - void UnregisterObjects(const FbxArray& pArray); - - /** Increment the scene destroying counter. - * \remarks Call this function before the destroying list is changed. - */ - void IncreaseDestroyingSceneFlag(); - /** Shrink the object list and decrements the scene destroying counter. - * \remarks Call this function after the destroying is changed. - * Use IncreasDestroyingSceneFlag() and DecreaseDestroyingSceneFlag() in pairs. - */ - void DecreaseDestroyingSceneFlag(); - /** - * \name Reference Management - */ - //@{ - /** Get number of references. - * \return Number of references. - */ - int GetReferenceCount() const; - - /** Get reference at given index. - * \param pIndex Position in the list of references. - * \return Pointer to the reference or \c NULL if index is out of bounds. - */ - FbxSceneReference* GetReference(int pIndex) const; - - /** Add a reference. - * \param pReference The reference to be added. - * \return If the reference is correctly added to the scene, return \c true otherwise, if the reference is - * already there, returns \c false. - */ - int AddReference(FbxSceneReference* pReference); - - /** Remove the specified reference from reference list. - * \param pReference The reference to be removed. - * \return If the reference was successfully removed, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool RemoveReference(FbxSceneReference* pReference); - - /** Clear the specified reference from the SDK manager. - * \param pReference The reference to be removed. - * \return If the reference was successfully cleared from the SDK manager, return \c true otherwise, if the - * reference could not be found returns \c false. - */ - bool ClearReference(FbxSceneReference* pReference); - //@} - - /** Add a prefix to a name. - * \param pPrefix The prefix to be added to the \c pName. This - * string must contain the "::" characters in order to be considered - * as a prefix. - * \param pName The name to be prefix. - * \return The prefixed string - * \remarks If a prefix already exists, it is removed before - * adding \c pPrefix. - */ - static FbxString PrefixName(const char* pPrefix, const char* pName); - - /** Get the count of document available in this manager - * \return The count of document owned by this manager. - */ - int GetDocumentCount(); - - /** Get the document at pIndex in the manager's list. - * \param pIndex The index of the document to retrieve. - * \return The document at the specified index. Will return NULL if index is invalid. - */ - FbxDocument* GetDocument(int pIndex); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxManager* GetDefaultManager(); - void CreateMissingBindPoses(FbxScene* pScene); - int GetBindPoseCount(FbxScene *pScene) const; - int GetFbxClassCount() const; - FbxClassId GetNextFbxClass(FbxClassId pClassId /* invalid id: first one */) const; - -protected: - FbxManager(); - virtual ~FbxManager(); - - void Clear(); - void ClassInit(); - void ClassRelease(); - void DataTypeInit(); - void DataTypeRelease(); - -private: - bool CanAutoDestroySrcObject(FbxObject* pObject, FbxObject* pSrcObject, bool pRecursive) const; - - void Create_Common_Import_IOSettings_Groups(FbxIOSettings& pIOS); - void Create_Common_Export_IOSettings_Groups(FbxIOSettings& pIOS); - void Add_Common_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_Export_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Import_IOSettings(FbxIOSettings& pIOS); - void Add_Common_RW_Export_IOSettings(FbxIOSettings& pIOS); - - FbxClassId Internal_RegisterFbxClass(const char* pClassName, FbxClassId pParentClassId, FbxObjectCreateProc=0, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0); - bool Internal_RegisterFbxClass(FbxClassId pClassId); - FbxClassId Internal_OverrideFbxClass(FbxClassId pClassId, FbxObjectCreateProc=0); - void Internal_UnregisterFbxClass(FbxClassId pClassId); - - void RemoveObjectsOfType(const FbxClassId& pClassId); - - FbxAnimEvaluator* GetDefaultAnimationEvaluator(); - - FbxArray mObjects; - FbxArray mDocuments; - - FbxIOSettings* mIOSettings; - FbxIOPluginRegistry* mRegistry; - FbxUserNotification* mUserNotification; - FbxMessageEmitter* mMessageEmitter; - FbxArray mLocalizationManagerArray; - FbxArray mSceneReferenceArray; - FbxAnimEvaluator* mDefaultAnimationEvaluator; - - FbxArray mDestroyingObjects; - FbxArray mDestroyingDocuments; - int mIsDestroyingScene; - - FbxManager_internal* mInternal; - static FbxManager* smDefaultManager; - - FBXSDK_FRIEND_NEW(); - friend class FbxObject; - friend class FbxProperty; //For GetDefaultAnimationEvaluator() - friend class FbxNode; //For GetDefaultAnimationEvaluator() - friend class FbxScene; //For GetDefaultAnimationEvaluator() - friend class FbxAnimEvaluator; //For GetDefaultAnimationEvaluator() -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MANAGER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxmodule.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxmodule.h deleted file mode 100755 index c1d767a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxmodule.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmodule.h -#ifndef _FBXSDK_CORE_MODULE_H_ -#define _FBXSDK_CORE_MODULE_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -typedef void* FbxModule; - -/** Loads the specified module into the address space of the calling process. - * \param pFilePath The full file path name of the module to load. - * \return The module handle if it successfully loaded, otherwise NULL. - * \remark The specified module may cause other modules to be loaded. - */ -FBXSDK_DLL FbxModule FbxModuleLoad(const char* pFilePath); - -/** Retrieves the address of an exported function or variable from the specified module. - * \param pModuleHandle A valid module handle. - * \param pProcName The procedure name to search. - * \return The procedure handle if valid, otherwise NULL. - */ -FBXSDK_DLL void* FbxModuleGetProc(FbxModule pModuleHandle, const char* pProcName); - -/** Frees the loaded module and, if necessary, decrements its reference count. - * \param pModuleHandle A valid module handle. - * \return \c true on success, \c false otherwise. - * \remark When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid. - */ -FBXSDK_DLL bool FbxModuleFree(FbxModule pModuleHandle); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_MODULE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxobject.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxobject.h deleted file mode 100755 index f736bb7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxobject.h +++ /dev/null @@ -1,1557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobject.h -#ifndef _FBXSDK_CORE_OBJECT_H_ -#define _FBXSDK_CORE_OBJECT_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxDocument; -class FbxImplementation; -class FbxImplementationFilter; -class FbxLibrary; -class FbxMessage; -class FbxPeripheral; -class FbxUserDataRecord; -class FbxConnectEvent; - -//! \internal Macro used to declare ClassId mechanics. -#define FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ -private:\ - Class(const Class&);\ - Class& operator=(const Class&);\ -protected:\ - virtual ~Class(){};\ -public:\ - static FbxClassId ClassId;\ - virtual FbxClassId GetClassId() Const_Override { return ClassId; }\ - friend class FBXSDK_NAMESPACE::FbxManager;\ - typedef Parent ParentClass;\ - static Class* Create(FbxManager* pManager, const char* pName);\ - -//! \internal Macro used to declare the FbxObject class. -#define FBXSDK_FBXOBJECT_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_CLASS_DECLARE(Class, Parent, Const_Override)\ - FBXSDK_FRIEND_NEW()\ - static Class* Create(FbxObject* pContainer, const char* pName);\ -protected:\ - static Class* Allocate(FbxManager* pManager, const char* pName, const Class* pFrom);\ - -//! Macro used to declare a new class derived from FbxObject. -#define FBXSDK_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_FBXOBJECT_DECLARE(Class, Parent, const override)\ -protected:\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to declare a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_DECLARE(Class, Parent)\ - FBXSDK_CLASS_DECLARE(Class, Parent, const override)\ -protected:\ - static FbxObjectCreateProc Allocate;\ - Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ -private: /* end of object declaration, put back private */\ - -//! Macro used to implement a new class derived from FbxObject. -#define FBXSDK_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - Class* Class::Create(FbxObject* pContainer, const char* pName)\ - {\ - FBX_ASSERT_RETURN_VALUE(pContainer && pContainer->GetFbxManager(), NULL);\ - return (Class*)pContainer->GetFbxManager()->CreateNewObjectFromClassId(Class::ClassId, pName, pContainer);\ - }\ - Class* Class::Allocate(FbxManager* pManager, const char* pName, const Class* pFrom)\ - {\ - Class* lNewObject = FbxNew(*pManager, pName);\ - lNewObject->Construct(pFrom);\ - lNewObject->SetObjectFlags(FbxObject::eInitialized, true);\ - return lNewObject;\ - }\ - -//! Macro used to implement a new abstract class derived from FbxObject. -#define FBXSDK_ABSTRACT_OBJECT_IMPLEMENT(Class)\ - FbxClassId Class::ClassId;\ - FbxObjectCreateProc Class::Allocate = 0;\ - Class* Class::Create(FbxManager* pManager, const char* pName)\ - {\ - return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ - }\ - -/** The base class of most FBX objects. Provides the benefits of connectivity, identity, run-time typing, - * properties, naming, copying, cloning, selection, and automated file IO. Most of - * the FBX SDK API deals with FbxObject pointers when it comes to manipulate objects in its simplest form. - * - * The ClassID mechanism replaces the dynamic_cast mechanism for efficient run-time type information. - * - * The FbxObject provides methods for managing the connections between objects. - * Using connections, objects can be related to each other to form hierarchies or structures. All of - * the FBX scene's object relations are expressed as connections between objects. Those connections can - * be altered as needed to reflect most kind of setups encountered in this world. For example, - * connections can be used to express parenting between transform nodes. Connections are not strict in - * the sense that we allow any type of objects to connect to any other type of objects. The meaning of - * the connection is purely semantic. As of yet, we do not provide the functionality to validate if - * the connections made by the users are allowed or not. - * - * FbxObject provide a property (FbxProperty) mechanism to describe characteristics of - * objects in a scene. Properties may be either static or dynamic. Static properties are defined in the class direction - * and can be accessed directly by their name on the object exposing them without - * the need for a search in the property list of the object. Dynamic properties can be added during run-time, - * while the program is running. Objects can have an unlimited amount of properties. - * Properties can be listed at run-time, allowing for a flexible support of custom data - * on objects, since they might be considered by the FBX file readers/writers depending on the flags set. - * - * Here is an example of a new empty minimal class template for FBX objects: - * \code - * //Declaration - * class MyClass : public FbxObject - * { - * FBXSDK_OBJECT_DECLARE(MyClass, FbxObject); //Be careful! The second parameter to this macro must be the parent class name! - * - * public: - * //Declare methods and properties here... - * }; - * \endcode - * \code - * //Implementation - * FBXSDK_OBJECT_IMPLEMENT(MyClass); - * \endcode - * Before the new class can be used, it needs to be registered to the manager with the following method: - * \code - * MyFbxManager->RegisterFbxClass("MyClassName", FBX_TYPE(MyClass), FBX_TYPE(FbxObject)); //Be careful! The 3rd parameter must be the parent class! If the parent class change, it must be updated here too! - * \endcode - * Then to create or delete instances of your new class, the following methods must be used: - * \code - * //Creating a new instance - * MyClass* MyObject = MyClass::Create(MyFbxManager, "Object Name"); - * - * //Deleting this instance - * MyObject->Destroy(); - * MyObject = NULL; - * \endcode - * \see FbxProperty - */ -class FBXSDK_DLL FbxObject : public FbxEmitter -{ - FBXSDK_FBXOBJECT_DECLARE(FbxObject, FbxEmitter, const); - -public: - //! \name General Object Management - //@{ - /** Templated test if this class is a hierarchical children of the specified class type. - * \return \c true if the object is a hierarchical children of the type specified. - * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - template inline bool Is() const { return GetClassId().Is(T::ClassId); } - - /** Retrieve the FbxManager this object belongs to. - * \return A pointer to the manager that this object belongs to. */ - FbxManager* GetFbxManager() const; - - /** Returns a const pointer to the document that contains this object. - * \return A const pointer to the document that contains this object or \c NULL if the object does not belong to any document. */ - FbxDocument* GetDocument() const; - - /** Returns a const pointer to the root document that contains this object. - * \return A const pointer to the root document that contains this object or \c NULL if the object does not belong to any document. - * \remarks It returns this pointer if this object is a document object and does not belong to any document. That means this object is the root document. */ - FbxDocument* GetRootDocument() const; - - /** Returns a const pointer to the scene that contains this object. - * \return A pointer to the scene that contains this object or \c NULL if the object does not belong to any scene. */ - FbxScene* GetScene() const; - - /** Unregister and delete this object from memory. This will also breaks all connections as well as removing all the instance of all the properties of this object with the object's class. - * \param pRecursive If true, all children (source) objects will also be unregistered and deleted. */ - void Destroy(bool pRecursive=false); - - /** Reset all the properties of this object to their default values. */ - void ResetProperties(); - //@} - - //! \name Object Flags Management - //@{ - //! Flags available to control objects. - enum EObjectFlag - { - eNone = 0, //!< No flags. - eInitialized = 1 << 0, //!< Automatically set when FbxObject::Construct() is completed. - eSystem = 1 << 1, //!< When set, object is deleted upon FbxManager destroy only. Use carefully! - eSavable = 1 << 2, //!< If set, object is stored in FBX file upon export. All objects are savable by default. - eSelected = 1 << 3, //!< Used by the selection mechanic to specify a selected object. - eHidden = 1 << 4, //!< Used for interface representation; if set, the object should not be visible. - eContentLoaded = 1 << 5, //!< Used by load-on-demand mechanic to specify if an object has its content loaded. - eDontLocalize = 1 << 6, //!< Used by asset builder; Do not localize this object - eCopyCalledByClone = 1 << 16 //!< Used internally. If set, modify the Copy behavior of the object - }; - - /** Set the state of object flags. - * \param pFlags Bit flags which value is going to be changed. - * \param pValue If \c true, bit flags will be set, otherwise bits will be un-set. */ - void SetObjectFlags(EObjectFlag pFlags, bool pValue); - - /** Get the state of object flags. - * \param pFlags Bit flags to query. - * \return \c true if the specified bit flags are all set. */ - bool GetObjectFlags(EObjectFlag pFlags) const; - - /** Override all object flags at once. - * \param pFlags The bit flags to set all the object flags to. - * \remark This function will override all flags; unspecified bit flags will be un-set. */ - void SetAllObjectFlags(FbxUInt pFlags); - - /** Get all object flags at once. - * \return All bit flags at once. */ - FbxUInt GetAllObjectFlags() const; - //@} - - //! \name Copying, Cloning and Referencing - //@{ - /** Copy an object content into this object. - * \param pObject The source object to copy data from. - * \return Returns the destination object being modified by the source. - * \remark This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied. */ - virtual FbxObject& Copy(const FbxObject& pObject); - - //! Types of clones that can be created for FbxObject. - enum ECloneType - { - eDeepClone, //!< A deep copy of the object. Changes to either the original or clone properties do not propagate to each other. - eReferenceClone //!< Changes to original object properties propagate to clone. Changes to clone properties do not propagate to original. - }; - - /** Creates a clone of this object. - * By default, the connections are NOT cloned. If the desired effect is to clone the connections as well, you must clone using the FbxCloneManager - * (refer to this class documentation for further details). - * - * \param pCloneType The type of clone to be created. By default, the clone type is eDeepClone. - * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean the new object - * will become a source to the container, connection-wise. - * \param pSet See remark section. - * \return The new clone, or NULL (if the specified clone type is not supported). - * \remark When doing either a "deep" or "reference" clone type, the clone will always get its properties values set from - * the source object properties values. - * \remark Since this is a virtual function, some classes might do additional tasks. - * \remark The \e pSet argument is not used in the default implementation of this method. Specialized implementations should - * cast this pointer to FbxCloneManager::CloneSet to have access to the cloned objects so far. Typically, this - * pointer is set by the clone manager. - */ - virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; - - /** Checks if this object is a reference clone of another object. - * \return \c True if this object is a clone of another object, \c false otherwise */ - bool IsAReferenceTo() const; - - /** If this object is a reference clone, returns the original object (from which the clone originates). - * \return The original object, or NULL (if this object is not a reference clone). */ - FbxObject* GetReferenceTo() const; - - /** Checks if any objects are reference cloned from this object. - * \return \c True if there are objects reference cloned from this object, \c false otherwise. */ - bool IsReferencedBy() const; - - /** Returns the number of objects that are reference clones of this object. - * \return The number of objects that are reference clones of this object. */ - int GetReferencedByCount() const; - - /** Returns a reference clone of this object at the specified index. - * \param pIndex The specified index, valid values are [0, GetReferencedByCount()) - * \return The reference clone, or NULL (if pIndex is out of range). */ - FbxObject* GetReferencedBy(int pIndex) const; - //@} - - /** - * \name Object Name Management - */ - //@{ - /** Sets the name of this object. - * \param pName The object name as a \c NULL terminated string. - */ - void SetName(const char* pName); - - /** Returns the full name of this object. - * \return The full name as a \c NULL terminated string. - */ - const char* GetName() const; - - /** Returns the name of the object without the namespace qualifier. - * \return The object name without the namespace qualifier. - */ - FbxString GetNameWithoutNameSpacePrefix() const; - - /** Returns the name of the object with the namespace qualifier. - * \return The object name with the namespace qualifier. - */ - FbxString GetNameWithNameSpacePrefix() const; - - /** Sets the initial name of the object. - * \param pName The object's initial name as a \c NULL terminated string. - */ - void SetInitialName(const char* pName); - - /** Returns the initial name of the object. - * \return The object's initial name as a \c NULL terminated string. - */ - const char* GetInitialName() const; - - /** Returns the namespace of the object. - * \return The object's namespace as a \c NULL terminated string. - */ - FbxString GetNameSpaceOnly(); - - /** Sets the namespace of the object. - * \param pNameSpace The object's namespace as a \c NULL terminated string. - */ - void SetNameSpace(FbxString pNameSpace); - - /** Returns an array of all the namespaces for this object - * \param identifier The identifier of the namespaces. - * \return The array of all namespaces. - */ - FbxArray GetNameSpaceArray(char identifier); - - /** Returns only the name (no namespace or prefix) of the object. - * \return The name only as a \c NULL terminated string. - */ - FbxString GetNameOnly() const; - - /** Returns the namespace qualifier. - * \return The namespace qualifier. - */ - FbxString GetNameSpacePrefix() const; - - /** Removes the prefix of pName - * \param pName Whose prefix is removed. - * \return A temporary string without prefix. - */ - static FbxString RemovePrefix(const char* pName); - - /** Strips the prefix of pName - * \param lName Whose prefix is stripped. - * \return lName stripped of its prefix. - */ - static FbxString StripPrefix(FbxString& lName); - - /** Strips the prefix of pName - * \param pName Whose prefix is stripped. - * \return A temporary string stripped of its prefix. - */ - static FbxString StripPrefix(const char* pName); - - //!Returns the unique ID of this object. - const FbxUInt64& GetUniqueID() const; - //@} - - /** - * \name Selection management - */ - //@{ - /** Returns if this object is currently in a selected state. - * \return \c True if this object is selected, \c false otherwise. - */ - virtual bool GetSelected(); - - /** Sets whether this object is currently selected. - * \param pSelected The selection flag. - */ - virtual void SetSelected(bool pSelected); - //@} - - /** - * \name User data - */ - //@{ - /** Sets the data pointer for an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - void SetUserDataPtr(const FbxUInt64& pUserID, void* pUserData); - - /** Returns the data pointer of an user data record whose ID is pUserID. - * \param pUserID The ID of the user data record. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - void* GetUserDataPtr(const FbxUInt64& pUserID) const; - - /** Sets the data pointer for the user data record whose ID is the object ID. - * \param pUserData The data pointer of the user data record. - * \remarks An user data record is composed of an ID and a data pointer. - * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. - */ - inline void SetUserDataPtr(void* pUserData){ SetUserDataPtr(GetUniqueID(), pUserData); } - - /** Returns the data pointer of the user data record whose ID is the object ID. - * \return The data pointer of the user data record, \c NULL if the user data record is not found. - */ - inline void* GetUserDataPtr() const { return GetUserDataPtr(GetUniqueID()); } - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this object to a source object. - * \param pObject The source object to which this object connects. - * \param pType The connection type between this object and the source object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectSrcObject(pObject,pType); } - - /** Judges whether this object connects with the source object. - * \param pObject The source object. - * \return \c True if this object connects with the source object, \c false otherwise. - */ - inline bool IsConnectedSrcObject(const FbxObject* pObject) const { return RootProperty.IsConnectedSrcObject(pObject); } - - /** Disconnects this object from a source object. - * \param pObject The source object from which this object will be disconnected. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcObject(FbxObject* pObject){ return RootProperty.DisconnectSrcObject(pObject); } - - /** Disconnects this object from all source objects. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(); } - - /** Disconnects this object from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(pCriteria); } - - /** Returns the number of source objects with which this object connects. - * \return The number of source objects with which this object connects. - */ - inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(); } - - /** Returns the number of source objects that satisfy the given criteria with which this object connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this object connects. - */ - inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(pCriteria); } - - /** Returns the source object with which this object connects at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(int pIndex=0) const { return RootProperty.GetSrcObject(pIndex); } - - /** Returns the source object that satisfies the criteria at the specified index with which this object connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetSrcObject(pCriteria,pIndex); } - - /** Searches the source object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pName,pStartIndex); } - - /** Searches the source object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - inline FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all source objects of the specified class type. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all source objects that are of the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this object connects. - * \return The number of source objects of the specified class type with which this object connects. */ - template inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of source objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. */ - template inline T* GetSrcObject(int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that is of the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name that is the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this object to one destination object. - * \param pObject The destination object with which this object connects. - * \param pType The connection type between this object and the destination object. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectDstObject(pObject,pType); } - - /** Judges whether this object connects with the destination object. - * \param pObject The destination object. - * \return \c True if this object connects with the destination object, \c false otherwise. - */ - inline bool IsConnectedDstObject(const FbxObject* pObject) const { return RootProperty.IsConnectedDstObject(pObject); } - - /** Disconnects this object from the destination object. - * \param pObject The destination object from which this object disconnects. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstObject(FbxObject* pObject) { return RootProperty.DisconnectDstObject(pObject); } - - /** Disconnects this object from all destination objects. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(); } - - /** Disconnects this object from all destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all destination objects successfully, \c false otherwise. - */ - inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(pCriteria); } - - /** Returns the number of destination objects with which this object connects. - * \return The number of destination objects with which this object connects. - */ - inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(); } - - /** Returns the number of destination objects with which this object connects that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects with which this object connects that satisfy the given criteria. - */ - inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(pCriteria); } - - /** Returns the destination object at the specified index with which this object connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(int pIndex=0) const { return RootProperty.GetDstObject(pIndex); } - - /** Returns the destination object with which this object connects that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies the given criteria at the specified index, NULL if not found. - */ - inline FbxObject* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetDstObject(pCriteria,pIndex); } - - /** Searches the destination object with the specified name, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pName,pStartIndex); } - - /** Searches the destination object with the specified name which satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - inline FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pCriteria,pName,pStartIndex); } - - /** Disconnects this object from all destination objects of the specified class type. - * \return \c true if it disconnects all destination objects of the specified class type successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this object from all destination objects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return \c true if it disconnects all destination objects successfully, \c false otherwise. */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this object connects. - * \return The number of destination objects of the specified class type with which this object connects. */ - template inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects with which this object connects that are the specified class type and that satisfy the given criteria. - * \param pCriteria The given criteria. - * \return The number of destination objects that are the specified class type and that satisfy the given criteria. */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object with which this object connects that is the specified class type at the specified index. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. */ - template inline T* GetDstObject(int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object with which this object connects that is the specified class type and that satisfies the given criteria at the specified index. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that is the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting at the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name Property Management - */ - //@{ - /** Returns the first property of this object. - * \return The first property of this object. - */ - inline FbxProperty GetFirstProperty() const - { - return RootProperty.GetFirstDescendent(); - } - - /** Returns the next property of this object that follows the specified property. - * \param pProperty The specified property. - * \return The next property of this object that follows pProperty. - */ - inline FbxProperty GetNextProperty(const FbxProperty& pProperty) const - { - return RootProperty.GetNextDescendent(pProperty); - } - - /** Searches a property by name. - * \param pName The property name. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pCaseSensitive ); - } - - /** Searches a property by name and data type. - * \param pName The property name. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindProperty(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.Find(pName, pDataType, pCaseSensitive ); - } - - /** Searches a property by full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pCaseSensitive ); - } - - /** Searches a property by full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether or not the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindPropertyHierarchical(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const - { - return RootProperty.FindHierarchical(pName, pDataType, pCaseSensitive ); - } - - /** Returns the class root property. - * \return The class root property if it exists, else an invalid FbxProperty. See FbxProperty::IsValid(). - * \remarks Class FbxObject and its sub-classes all have a class root property. This class root property contains basic information about the class type, such as the class name. - */ - FbxProperty GetClassRootProperty(); - - /** Connects this object to a source property. - * \param pProperty The source property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.ConnectSrcProperty(pProperty); } - - /** Determines whether this object connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this object connects with the specified source property, \c false otherwise. - */ - inline bool IsConnectedSrcProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedSrcProperty(pProperty); } - - /** Disconnects this object from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectSrcProperty(pProperty); } - - /** Returns the number of source properties with which this object connects. - * \return The number of source properties with which this object connects. - */ - inline int GetSrcPropertyCount() const { return RootProperty.GetSrcPropertyCount(); } - - /** Returns the source property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - inline FbxProperty GetSrcProperty(int pIndex=0) const { return RootProperty.GetSrcProperty(pIndex); } - - /** Searches a source property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - inline FbxProperty FindSrcProperty(const char* pName,int pStartIndex=0) const { return RootProperty.FindSrcProperty(pName,pStartIndex); } - - /** Connects this object to a destination property. - * \param pProperty The destination property with which this object connects. - * \return \c True on success, \c false otherwise. - */ - inline bool ConnectDstProperty(const FbxProperty& pProperty) { return RootProperty.ConnectDstProperty(pProperty); } - - /** Determines if this object connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this object connects with the specified destination property, \c false otherwise. - */ - inline bool IsConnectedDstProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedDstProperty(pProperty); } - - /** Disconnects this object from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - inline bool DisconnectDstProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectDstProperty(pProperty); } - - /** Returns the number of destination properties with which this object connects. - * \return The number of destination properties with which this object connects. - */ - inline int GetDstPropertyCount() const { return RootProperty.GetDstPropertyCount(); } - - /** Returns the destination property at the specified index with which this object connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - inline FbxProperty GetDstProperty(int pIndex=0) const { return RootProperty.GetDstProperty(pIndex); } - - /** Searches a destination property with which this object connects that has a specific name, starting at the specified index. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - inline FbxProperty FindDstProperty(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstProperty(pName,pStartIndex); } - //@} - - /** - * \name Off-Loading Management - * \remarks You can modify the unloaded state flag using the SetObjectFlags() - * method. The ContentIsUnloaded() method below (implemented in this class) - * is simply a synonym of GetObjectFlags(eCONTENT_UNLOADED_FLAG) - */ - //@{ - /** Unloads this object's content using the offload peripheral that is currently set in the document - * then flushes it from memory. - * \return 2 if the object's content is already unloaded or 1 if - * this object's content has been successfully unloaded to the current - * peripheral. - * - * \remarks If the content is locked more than once, or the peripheral cannot handle - * this object's unloading, or if an error occurs, this method returns 0 and does not flush the content. - */ - int ContentUnload(); - - /** Loads this object's content using the offload peripheral that is currently set in the document. - * \return 1 if this object's content has been successfully loaded from the current - * peripheral, 2 if the content is already loaded, and 0 if an error occurs or - * the object's content is locked. - * \remarks On a successful Load attempt, the object content is locked. - */ - int ContentLoad(); - - /** Judges if this object's content is loaded. - * \return \c True if this object's content is loaded, \c false otherwise. - * \remarks An object that has not been filled yet must be considered - * unloaded. - */ - bool ContentIsLoaded() const; - - /** Decreases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentDecrementLockCount(); - - /** Increases the content lock count of an object. If the content lock count of an object - * is greater than 0, the content of the object is considered locked. - */ - void ContentIncrementLockCount(); - - /** Judges if this object's content is locked. The content is considered locked if the content lock count - * is greater than 0 - * \return \c True if this object's content is locked, \c false otherwise. - * \remarks A locked state prevents the object content from being unloaded from memory but - * does not block the loading. - */ - bool ContentIsLocked() const; - - /** Writes the content of the object to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - virtual bool ContentWriteTo(FbxStream& pStream) const; - - /** Reads the content of the object from the given stream. - * \param pStream The source stream. - * \return \c True if the object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - virtual bool ContentReadFrom(const FbxStream& pStream); - //@} - - /** - * \name Logging. - */ - //@{ - /** Emits a message in all available message emitters in the document or SDK manager. - * \param pMessage The message to emit. - * \remarks The ownership of the message is transferred, don't delete it. - */ - void EmitMessage(FbxMessage* pMessage) const; - //@} - - /** - * \name Localization helper. - */ - //@{ - /** Localization helper function, it calls the implementation of FBX SDK manager. - * Sub-classes that manage their own localization could over-ride this function. - * \param pID The identifier of the text to be localized. - * \param pDefault The default text. Uses pID as the default text if pDefault is NULL. - * \return The localized text or the default text if the text can't be localized, . - */ - virtual const char* Localize(const char* pID, const char* pDefault=NULL) const; - //@} - - /** - * \name Application Implementation Management - */ - //@{ - /** Returns a handle on the parent library of this object. - * \return The parent library of this object, or \c NULL if the parent library doesn't exist. - */ - FbxLibrary* GetParentLibrary() const; - - /** Adds an implementation. - * \param pImplementation The implementation to be added. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has not already been added to this node. - */ - bool AddImplementation(FbxImplementation* pImplementation); - - /** Removes an implementation. - * \param pImplementation The implementation to be removed. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - */ - bool RemoveImplementation(FbxImplementation* pImplementation); - - /** Determines if this shading node has a default implementation. - * \return \c True if this shading node has a default implementation, \c false otherwise. - */ - bool HasDefaultImplementation(void) const; - - /** Returns the default implementation of this shading node. - * \return The default implementation of this shading node. - */ - FbxImplementation* GetDefaultImplementation(void) const; - - /** Sets the default implementation of this shading node. - * \param pImplementation The implementation to be set. - * \return \c True on success, \c false otherwise. - * \remarks To succeed this function must be called with an implementation that has already been added to this node. - * Only the implementation which has already been added can be set as the default implementation. - */ - bool SetDefaultImplementation(FbxImplementation* pImplementation); - - /** Returns the number of implementations that satisfy a given criteria. - * \param pCriteria The given criteria. - * \returns The number of implementations. - */ - int GetImplementationCount(const FbxImplementationFilter* pCriteria=NULL) const; - - /** Returns the implementation at the specified index that satisfies the given criteria. - * \param pIndex The specified index. - * \param pCriteria The given criteria. - * \return The implementation at the specified index, NULL if not found. - */ - FbxImplementation* GetImplementation(int pIndex, const FbxImplementationFilter* pCriteria=NULL) const; - //@} - - /** - * \name Object Storage && Retrieval - */ - //@{ - /** Returns the URL of this object. - * \return The URL of this object. - * \remarks The URL indicates where the object is stored. - */ - virtual FbxString GetUrl() const; - - /** Sets the URL of this object. - * \param pUrl The URL to be set. - * \return \c True on success, \c false otherwise. - * \remarks The URL indicates where the object is stored. - */ - virtual bool SetUrl(const char* pUrl); - //@} - - /** \name Run-time ClassId Management */ - //@{ - /** Set the run-time ClassId for this class. In most contexts, users do not have to change the run-time ClassId, they are automatically generated when registered a new class during run-time. - * \param pClassId The ClassId to set as the run-time ClassId for this object. */ - void SetRuntimeClassId(const FbxClassId& pClassId); - - /** Retrieve the run-time ClassId for this object. - * \return The run-time ClassId for this object. */ - FbxClassId GetRuntimeClassId() const; - - /** Test if this class is a hierarchical children of the specified class type. This test will be performed on the run-time class registered with the FBX SDK Manager rather than the static ClassId generated at compile time. - * \param pClassId The class type to test against self. - * \return True if the object is a hierarchical children of the type specified. - * \remarks This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ - bool IsRuntime(const FbxClassId& pClassId) const; - - /** Find out if the ClassId was registered during run-time rather than at compile time. - * \return True if the run-time ClassId is inequal to the ClassId. */ - bool IsRuntimePlug() const; - //@} - - /** Compact the memory used by this object. - * \remark Note that this function might not result in saved memory because it depends if the sub-class implements it, or if any memory can actually be saved. */ - virtual void Compact(); - - //! The root property that holds all children property for this object - FbxProperty RootProperty; - -protected: - /** Optional constructor override, automatically called by default constructor. - * \param pFrom If not null, the function must take it into account like a copy constructor. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Construct(pFrom) at the beginning. */ - virtual void Construct(const FbxObject* pFrom); - - /** Optional property constructor override, automatically called by default constructor. - * \param pForceSet If the property value must be set regardless of default value. - * \remark If your object have properties, they must be initialized in this function. */ - virtual void ConstructProperties(bool pForceSet); - - /** Optional destructor override, automatically called by default destructor. - * \param pRecursive If true, children objects should be destroyed as well. - * \remark In case it is decided to override this function, do not forget to call ParentClass::Destruct(pResursive) at the end. */ - virtual void Destruct(bool pRecursive); - - /** Clears this object's content from memory. This method must be overridden in the derived classes. - * \remark This method is called by ContentUnload() if the object content's unloading is successful. */ - virtual void ContentClear(); - - /** Retrieves the peripheral of that object. - * \return The current peripheral for that object - * \remark A peripheral manipulates the content of an object. For instance, a peripheral can load the connections of an object on demand. */ - virtual FbxPeripheral* GetPeripheral(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - virtual bool Compare(FbxObject* pOtherObject); - - //Basic comparison operator implementation. It simply compare property values between source and target. - //NOTE: If a property cannot be found on one of the object, the comparison fails (return false). - //Different classid will fail comparison as well as different property count. Reference properties are not compared. - bool operator==(const FbxObject& pObject); - bool operator!=(const FbxObject& pObject); - - virtual void SetDocument(FbxDocument* pDocument); - - inline FbxPropertyHandle& GetPropertyHandle() { return RootProperty.mPropertyHandle; } - - //Important note: If this function is not implemented, the pFileSubTypeName string used when registering your - //class via FbxManager::RegisterFbxClass will be used instead. This makes it useless to re-implement this - //function if you do not intend to return a different string for the same class. - virtual const char* GetTypeName() const; - virtual FbxStringList GetTypeFlags() const; - - // This function will go as deep as possible to clear the Connection list without sending - // notifications to the connections to give them the chance to Disconnect themselves. - // This is a bypass of the intended workflow and should be used with care. - void WipeAllConnections(); - - //Used as global flag to modify the behavior of FbxObject::Destruct() during a ForceKill() on the scene. This is for internal use. - static void SetWipeMode(bool pState); - static bool GetWipeMode(); - -protected: - FbxObject(FbxManager& pManager, const char* pName); - - enum EPropertyNotifyType - { - ePropertySetRequest, - ePropertySet, - ePropertyGet - }; - - virtual bool ConnectNotify(const FbxConnectEvent& pEvent); - virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); - bool Copyable(const FbxObject& pObject); - -private: - void CopyPropertiesFrom(const FbxObject& pFrom); - void SetClassRootProperty(FbxProperty& lProperty); - int GetFlatPropertyCount() const; - - FbxNameHandler mName; - FbxClassId mRuntimeClassId; - FbxUserDataRecord* mUserData; - FbxManager* mManager; - FbxImplementation* mDefaultImplementation; - FbxUInt64 mUniqueID; - FbxInt32 mObjectFlags; - FbxInt32 mContentLockCount; - FbxInt32 mUserDataCount; - static bool mWipeMode; - - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A utility class for iterating over the properties (FbxProperty) of any FbxObject. -* \nosubgrouping -*/ -template class FbxIterator -{ -public: - /** Constructor. - *\param pObject The object whose properties are going to be iterated. - */ - FbxIterator(const FbxObject* pObject) : mObject(pObject) {} - - /** Get the first property of the object. - * \return The first property of the object. - */ - inline const FbxProperty& GetFirst() { mProperty = mObject->GetFirstProperty(); return mProperty; } - - /** Get next property of the object. - * \return The next property of the object. - */ - inline const FbxProperty& GetNext() { mProperty = mObject->GetNextProperty(mProperty); return mProperty; } - -private: - FbxProperty mProperty; - const FbxObject* mObject; -}; - -/** A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorSrcBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } - - FbxProperty mProperty; //! The property to iterate. If iterate an object, this is the root property of the object. - FbxClassId mClassId; //! The class ID specifies the type of the source objects to be retrieved. - int mSize; //! The number of source objects whose type is specified by mClassId. - int mIndex; //! Iterate index. -}; - -/** - * A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorSrcBase with template. - * \nosubgrouping - */ -template class FbxIteratorSrc : protected FbxIteratorSrcBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxObject* pObject) : FbxIteratorSrcBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate source objects that connect to it. - */ - inline FbxIteratorSrc(FbxProperty& pProperty) : FbxIteratorSrcBase(pProperty,Type::ClassId) {} - - /** - * Get the first source object that connects to the property or object. - * \return The first source object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorSrcBase::GetFirst(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorSrcBase::GetNext(); } - - /** - * Get next source object that connects to the property or object. - * \return The next source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorSrcBase::GetSafeNext(); } - - /** - * Get the last source object that connects to the property or object. - * \return The last source object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorSrcBase::GetLast(); } - - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorSrcBase::GetPrevious(); } - - /** - * Get previous source object that connects to the property or object. - * \return The previous source object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last source object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorSrcBase::GetSafePrevious(); } -}; - -/** A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). -* \nosubgrouping -*/ -class FbxIteratorDstBase -{ -protected: - /** The property to iterate. If iterate an object, this is the root property of the object. */ - FbxProperty mProperty; - /** The class ID specifies the type of the destination objects to be retrieved. */ - FbxClassId mClassId; - /** The number of destination objects whose type is specified by mClassId. */ - int mSize; - /** Iterate index. */ - int mIndex; - -public: - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - * \param pClassId The class ID specifies the type of the destination objects. - */ - inline FbxIteratorDstBase(FbxProperty& pProperty,FbxClassId pClassId) : - mProperty(pProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate source objects that connect to it. - * \param pClassId The class ID specifies the type of the source objects. - */ - inline FbxIteratorDstBase(FbxObject* pObject,FbxClassId pClassId) : - mProperty(pObject->RootProperty), - mClassId(pClassId), - mSize(0), - mIndex(-1) - { - ResetToBegin(); - } - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline FbxObject* GetFirst() - { - ResetToBegin(); - return GetNext(); - } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline FbxObject* GetNext() - { - mIndex++; - return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; - return GetPrevious(); - } - -protected: - /** - * Reset the iterate index to the beginning. - */ - inline void ResetToBegin() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = -1; - } - - /** - * Reset the iterate index to the end. - */ - inline void ResetToEnd() - { - mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); - mIndex = mSize; - } -}; - -/** - * A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). - * The class is a wrapper of FbxIteratorDstBase with template. - * \nosubgrouping - */ -template class FbxIteratorDst : protected FbxIteratorDstBase -{ -public: - /** - * Constructor. - * \param pObject FBX object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxObject* pObject) : FbxIteratorDstBase(pObject,Type::ClassId) {} - - /** - * Constructor. - * \param pProperty Property object. The iterator will iterate destination objects that connect to it. - */ - inline FbxIteratorDst(FbxProperty& pProperty) : FbxIteratorDstBase(pProperty,Type::ClassId) {} - - /** - * Get the first destination object that connects to the property or object. - * \return The first destination object. - */ - inline Type* GetFirst() { return (Type*)FbxIteratorDstBase::GetFirst(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - */ - inline Type* GetNext() { return (Type*)FbxIteratorDstBase::GetNext(); } - - /** - * Get next destination object that connects to the property or object. - * \return The next destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - */ - inline Type* GetSafeNext() { return (Type*)FbxIteratorDstBase::GetSafeNext(); } - - /** - * Get the last destination object that connects to the property or object. - * \return The last destination object. - */ - inline Type* GetLast() { return (Type*)FbxIteratorDstBase::GetLast(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - */ - inline Type* GetPrevious() { return (Type*)FbxIteratorDstBase::GetPrevious(); } - - /** - * Get previous destination object that connects to the property or object. - * \return The previous destination object. If there are no more objects, return NULL. - * \remark This method makes sure the iterate index is not out of bounds. - * If the iterate index is out of bounds, the last destination object is returned. - */ - inline Type* GetSafePrevious() { return (Type*)FbxIteratorDstBase::GetSafePrevious(); } -}; - -/** Convert the class type parameter into a C class parameter for other function inputs. - * Usage example: - * \code - * //Assuming MyCamera is a valid FbxCamera object - * bool AreCamerasObject = MyCamera->Is(); //Should return true :) - * \endcode - */ -#define FBX_TYPE(class) ((const class*)0) - -/** Safe casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline T* FbxCast(FbxObject* pObject) -{ - return pObject && pObject->Is() ? (T*)pObject : 0; -} - -/** Safe const casting of FBX SDK objects into other FBX SDK class types. This cast will perform - * the complete test to make sure the object inherits from the requested class type. This is - * the equivalent of a dynamic_cast but much faster. - * \param pObject The object to try to cast into T type. - * \return A non-null pointer if the cast was successful. - */ -template inline const T* FbxCast(const FbxObject* pObject) -{ - return pObject && pObject->Is() ? (const T*)pObject : 0; -} - -//! Macro used to iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject). -#define FbxForEach(Iterator, Object) for((Object)=(Iterator).GetFirst();(Object)!=0;(Object)=(Iterator).GetNext()) - -//! Macro used to reversely iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject) -#define FbxForEachReverse(Iterator, Object) for(Object=(Iterator).GetLast();(Object)!=0;Object=(Iterator).GetPrevious()) - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxConnectEvent -{ -public: - enum EType - { - eConnectRequest, - eConnect, - eConnected, - eDisconnectRequest, - eDisconnect, - eDisconnected - }; - - enum EDirection - { - eSource, - eDestination - }; - - inline FbxConnectEvent(EType pType,EDirection pDir,FbxProperty *pSrc,FbxProperty *pDst) : - mType(pType), - mDirection(pDir), - mSrc(pSrc), - mDst(pDst) - { - } - inline EType GetType() const { return mType; } - inline EDirection GetDirection() const { return mDirection; } - inline FbxProperty& GetSrc() const { return *mSrc; } - inline FbxProperty& GetDst() const { return *mDst; } - template inline T* GetSrcIfObject() const { return mSrc->IsRoot() ? FbxCast(mSrc->GetFbxObject()) : (T*)0; } - template inline T* GetDstIfObject() const { return mDst->IsRoot() ? FbxCast(mDst->GetFbxObject()) : (T*)0; } - -private: - EType mType; - EDirection mDirection; - FbxProperty* mSrc; - FbxProperty* mDst; -}; - -class FbxObjectPropertyChanged : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxObjectPropertyChanged); - -public: - FbxObjectPropertyChanged(FbxProperty pProp) : mProp(pProp) {} - FbxProperty mProp; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_OBJECT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxperipheral.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxperipheral.h deleted file mode 100755 index 94cf09f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxperipheral.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxperipheral.h -#ifndef _FBXSDK_CORE_PERIPHERAL_H_ -#define _FBXSDK_CORE_PERIPHERAL_H_ - -#include - -#include - -class FbxObject; - -/** FbxPeripheral is an interface to load/unload content of FbxObject from memory to -somewhere you defined, for example, to a temporary file on disk . -* \nosubgrouping -* You need to inherited your own peripheral class from this class and overload -* the functions to control what information of a FbxObject you want to load/unload, -* and where you are going to load/unload these information to. -* For example, you can ask an object to dump itself on disk to free some memory and vice-versa -* when you want to load/unload this object from your scene flexibly. -*/ -class FBXSDK_DLL FbxPeripheral -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - //!Constructor. - FbxPeripheral(); - - //!Destructor. - virtual ~FbxPeripheral(); - //@} - - /** Reset the peripheral to its initial state. - */ - virtual void Reset() = 0; - - /** Unload the content of pObject. - * \param pObject Object whose content is to be offloaded into - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool UnloadContentOf(FbxObject* pObject) = 0; - - /** Load the content of pObject. - * \param pObject Object whose content is to be loaded from - * the peripheral storage area. - * \return \c true if the object content has been successfully transferred. - * \c false otherwise. - */ - virtual bool LoadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can unload the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content and - * has enough space in its storage area.\c false otherwise. - */ - virtual bool CanUnloadContentOf(FbxObject* pObject) = 0; - - /** Check if this peripheral can load the given object content. - * \param pObject Object whose content has to be transferred. - * \return \c true if the peripheral can handle this object content. - * \c false otherwise. - */ - virtual bool CanLoadContentOf(FbxObject* pObject) = 0; - - /** Initialize the connections of an object - * \param pObject Object on which the request for connection is done. - */ - virtual void InitializeConnectionsOf(FbxObject* pObject) = 0; - - /** Uninitialize the connections of an object - * \param pObject Object on which the request for disconnection is done. - */ - virtual void UninitializeConnectionsOf(FbxObject* pObject) = 0; -}; - -// predefined offload peripherals -extern FBXSDK_DLL FbxPeripheral* NULL_PERIPHERAL; -extern FBXSDK_DLL FbxPeripheral* TMPFILE_PERIPHERAL; -#include - -#endif /* _FBXSDK_CORE_PERIPHERAL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugin.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugin.h deleted file mode 100755 index 6e98983..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugin.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugin.h -#ifndef _FBXSDK_CORE_PLUGIN_H_ -#define _FBXSDK_CORE_PLUGIN_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include -#include - -#include - -class FbxManager; -class FbxPluginContainer; - -//! Plug-in declaration macro that must to be used when defining new FbxPlugin objects. -#define FBXSDK_PLUGIN_DECLARE(Plugin)\ - FBXSDK_FRIEND_NEW();\ -public:\ - static Plugin * Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle);\ - void Destroy(); - -//! Plug-in implementation macro that must be used when implementing new FbxPlugin objects. -#define FBXSDK_PLUGIN_IMPLEMENT(Plugin)\ - Plugin* Plugin::Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle){ return FbxNew(pDefinition, pModuleHandle); }\ - void Plugin::Destroy(){ FbxDelete(this); } - -/** Structure used by plug-ins for identification purposes. - * \note To avoid confusions in the system, it is recommended to choose an appropriate unique identifier string name when - * defining your plug-in, as well as incrementing the version string to a correct value whenever something changes in the - * implementation of the plug-in. Both of these string are used when comparing plug-ins for searches, as well as - * identification in FBX files. - */ -struct FBXSDK_DLL FbxPluginDef -{ - //! Constructor - FbxPluginDef() : - mName("Unknown Name"), - mVersion("Unknown Version") - { - } - - FbxString mName; //!< The identifier name string of the plug-in. If the name is already used by another plug-in, the plug-in will still register. - FbxString mVersion; //!< The version string of the plug-in. -}; - -/** Data used to communicate information between an application and the plug-in. - */ -struct FBXSDK_DLL FbxPluginData -{ - //! Constructor - FbxPluginData() : - mQueryEmitter(NULL), - mSDKManager(NULL), - mPluginContainer(NULL) - { - } - - //! Copy Constructor - explicit FbxPluginData(const FbxPluginData& pOther) : - mQueryEmitter(pOther.mQueryEmitter), - mSDKManager(pOther.mSDKManager), - mPluginContainer(pOther.mPluginContainer) - { - } - - FbxEmitter* mQueryEmitter; //!< The emitter on which the plug-in can listen to receive events. - FbxManager* mSDKManager; //!< The FBX SDK Manager on which the plug-in was instanced. - FbxPluginContainer* mPluginContainer; //!< The container which will have the ownership of the plug-in. -}; - -/** The base class to inherit from when creating new plug-ins for the FBX SDK. Plug-ins for the FBX SDK are extremely flexible - * allowing a wide-range of possibilities. For example, one can write his own plug-in to add new readers/writers to the current list - * of supported I/O formats, or add new dynamic classes to instantiate custom objects that can later be stored in FBX files. We also use the same - * interface for plug-ins written using the FBX Extension SDK, which allow additional callbacks for other various Autodesk products - * enabling greater interoperability with multiple various SDKs. - * - * Here is typical implementation of an FBX SDK plug-in that doesn't do anything else than just registering itself: - * \code - * class MyPlugin : public FbxPlugin - * { - * FBXSDK_PLUGIN_DECLARE(MyPlugin); //This macro is mandatory for any plug-in definition - * - * protected: - * explicit MyPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle) : FbxPlugin(pDefinition, pModuleHandle) - * { - * } - * - * //Abstract functions that *must* be implemented - * virtual bool SpecificInitialize() - * { - * //For example, here we could register as many new I/O readers/writers as we would like, or classes, etc. - * return true; - * } - * - * virtual bool SpecificTerminate() - * { - * //Here we would have to unregister whatever we registered to the FBX SDK - * return true; - * } - * }; - * - * FBXSDK_PLUGIN_IMPLEMENT(MyPlugin); //This macro is mandatory for any plug-in implementation - * - * //Standard C export needed for any new FBX SDK plug-in - * extern "C" - * { - * static MyPlugin* sMyPluginInstance = NULL; //The module is owner of the plug-in - * - * //This function will be called when an application will request the plug-in - * #ifdef FBXSDK_ENV_WIN - * __declspec(dllexport) void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #else - * void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) - * #endif - * { - * if( sPlugin == NULL ) - * { - * //Create the plug-in definition which contains the information about the plug-in - * FbxPluginDef sPluginDef; - * sPluginDef.mName = "My Plugin"; - * sPluginDef.mVersion = "1.0"; - * - * //Create an instance of the plug-in - * sMyPluginInstance = MyPlugin::Create(sPluginDef, pLibHandle); - * - * //Register the plug-in with the FBX SDK - * pContainer.Register(*sPlugin); - * } - * } - * } - * \endcode - * \see FbxPluginDef, FbxPluginData - */ -class FBXSDK_DLL FbxPlugin : public FbxListener -{ - FBXSDK_INTRUSIVE_LIST_NODE(FbxPlugin, 1); - -public: - /** Abstract function called once at the end of the plug-in construction. At that moment, plug-in data have been properly initialized. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificInitialize()=0; - - /** Abstract function called once at the beginning of the plug-in destruction. At that moment, plug-in data is fully available. - * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. - */ - virtual bool SpecificTerminate()=0; - - /** Virtual function called once when the FBX SDK is about to write an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be written in the FBX file. - */ - virtual void WriteBegin(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to write plug-in's parameters. Users can re-implement it in their plug-in if they need - * to store properties in the FBX file for their own usage. The object in parameter is used to store those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to store properties about the plug-in. - */ - virtual void WriteParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK wrote an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered, but the changes will not appear in the FBX file. - * If not re-implemented, this function does nothing. - * \param pScene The scene that was written in the FBX file. - */ - virtual void WriteEnd(FbxScene& pScene); - - /** Virtual function called once when the FBX SDK is about to read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that is about to be read in the FBX file. - */ - virtual void ReadBegin(FbxScene& pScene); - - /** Virtual function called once after the FBX SDK reads the plug-in's parameters. Users can re-implement it in their plug-in if they need - * to retrieve properties for their own usage. The object in parameter is used to retrieve those properties. - * If not re-implemented, this function does nothing. - * \param pParams An abstract object that can be used as a property container, to allow the plug-in to read properties about the plug-in. - */ - virtual void ReadParameters(FbxObject& pParams); - - /** Virtual function called once after the FBX SDK read an FBX file. Users can re-implement it in their plug-in if they need - * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. - * \param pScene The scene that was read in the FBX file. - */ - virtual void ReadEnd(FbxScene& pScene); - - /** Accessor to the plug-in definition structure that contains basic information on the plug-in like its name or version. This is - * the only method available to differentiate plug-ins. - * \return The definition structure for this plug-in. - */ - const FbxPluginDef& GetDefinition() const; - - /** Retrieve the module address pointer for this plug-in. With this module instance handle, for example someone can query procedures addresses, - * allowing more complex interactions, as well as other operating system module specific functions. - */ - FbxModule GetModuleHdl(); - -protected: - /** Use the Create() and Destroy() methods declared and implemented in the FBXSDK_PLUGIN_DECLARE and FBXSDK_PLUGIN_IMPLEMENT macros to construct and destroy FbxPlugin objects. - * \param pDefinition The definition associated with this plug-in. Each plug-in must have its own definition to differentiate it with other plug-ins. - * \param pModuleHandle A pointer to the plug-in module address. - */ - explicit FbxPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle); - - /** Accessor to the plug-in private data. - * \return The data for the current plug-in. - */ - FbxPluginData& GetData(); - - /** Const accessor to the plug-in private data. - * \return The const data for the current plug-in. - */ - const FbxPluginData& GetData() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -public: - inline FbxObject& GetPluginSettings() { return *mPluginSettings; } - inline const FbxObject& GetPluginSettings() const { return *mPluginSettings; } - template inline FbxEventHandler* Bind(void (ListernerType::*pFunc)(const EventType*)) - { - return FbxListener::Bind(*(GetData().mQueryEmitter), pFunc ); - } - virtual void Destroy() = 0; - -protected: - virtual ~FbxPlugin(); - -private: - bool Initialize(const FbxPluginData& pData); - bool Terminate(); - - bool mInitialized; - FbxPluginData mData; - FbxPluginDef mDefinition; - FbxModule mModuleHandle; - FbxObject* mPluginSettings; - - friend class FbxLoadingStrategy; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugincontainer.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugincontainer.h deleted file mode 100755 index b04a73d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxplugincontainer.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxplugincontainer.h -#ifndef _FBXSDK_CORE_PLUGIN_CONTAINER_H_ -#define _FBXSDK_CORE_PLUGIN_CONTAINER_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** Manages registration and ownership of FBX SDK plug-ins (FbxPlugin). - * The FBX SDK will provide a pointer to FbxPluginContainer as an argument - * to the FBXPluginRegistration() function exported from a plug-in's DLL. - * A plug-in must register itself explicitly with the FbxPluginContainer - * by calling FbxPluginContainer::Register() after it is constructed. - * For an example of this process see the code example in the FbxPlugin - * class documentation. - * \see FbxPlugin - */ -class FBXSDK_DLL FbxPluginContainer : public FbxEmitter -{ -public: - //! Definition of a plug-in list. - typedef FbxIntrusiveList PluginList; - - /** The registration function that must be called when the module containing the plug-in is loaded. - * \param pPlugin The plug-in to register. - */ - void Register(FbxPlugin& pPlugin); - - /** The unregistration function that must be called when the module containing the plug-in is unloaded. - * \param pPlugin The plug-in to unregister. - */ - void Unregister(FbxPlugin& pPlugin); - - /** Const accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - const PluginList& GetPlugins() const; - - /** Accessor to the list of plug-ins owned by the container. - * \return A list of plug-in registered to this container. - */ - PluginList& GetPlugins(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual ~FbxPluginContainer(); - PluginList mPlugins; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_PLUGIN_CONTAINER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxproperty.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxproperty.h deleted file mode 100755 index 800dad4..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxproperty.h +++ /dev/null @@ -1,1240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproperty.h -#ifndef _FBXSDK_CORE_PROPERTY_H_ -#define _FBXSDK_CORE_PROPERTY_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxObject; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; -class FbxAnimEvaluator; - -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval = false); - -/** \brief Class to hold user properties. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProperty -{ -public: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Creates a runtime property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, parent property checks if it has a child property already with pName, if \c false, the new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pCompoundProperty already has a child property with pName. - */ - static FbxProperty Create(const FbxProperty& pCompoundProperty, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a runtime property on the specified object. - * \param pObject The object on which the property will be created. - * \param pDataType The data type of this property. - * \param pName The property name. - * \param pLabel The label of this property. - * \param pCheckForDup If \c true, pObject checks whether it already has a property with pName, if \c false, a new property is created. - * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pObject already has a child property with pName. - */ - static FbxProperty Create(FbxObject* pObject, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); - - /** Creates a dynamic property from another property on the specified property. - * \param pCompoundProperty The parent property of this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, parent property checks if it already has a child property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(const FbxProperty& pCompoundProperty, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Creates a dynamic property from another property on the specified object. - * \param pObject The object that contains this property. - * \param pFromProperty The property copied by this property. - * \param pCheckForDup If \c true, pObject checks if it already has a property that has the name of pFromProperty, if \c false, a new property is created. - * \remark Only the property name, label, min/max, enums and flags are copied. - */ - static FbxProperty CreateFrom(FbxObject* pObject, FbxProperty& pFromProperty, bool pCheckForDup=true); - - /** Destroys a dynamic property. - */ - void Destroy(); - - /** Destroys a dynamic property and its children - * \remarks Destroy all children of current property, and current property will also be destroyed. - */ - void DestroyRecursively(); - - /** Destroys children of a dynamic property. - * \remarks Destroy all children of current property, and current property will not be destroyed. - */ - void DestroyChildren(); - - /** Static property constructor. - */ - FbxProperty(); - - /** Copy constructor for properties. - * \param pProperty The property copied to this one. - */ - FbxProperty(const FbxProperty& pProperty); - - /** Copy constructor for properties. - * \param pPropertyHandle The property handle copied to this property handle. - */ - FbxProperty(const FbxPropertyHandle& pPropertyHandle); - - /** Static property destructor. - */ - ~FbxProperty(); - //@} - - /** - * \name Property Identification. - */ - //@{ - /** Returns the property data type. - * \return The property data type. - */ - FbxDataType GetPropertyDataType() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - FbxString GetName() const; - - /** Returns the internal name of the property. - * \return Property internal name string. - */ - const char* GetNameAsCStr() const; - - /** Returns the hierarchical name of the property. - * \return Property hierarchical name string. - */ - FbxString GetHierarchicalName() const; - - /** Returns the property label. - * \param pReturnNameIfEmpty If \c true, lets this method return the internal name if the label is empty. - * \return The property label if set, or the property internal name if the pReturnNameIfEmpty - * flag is set to \c true and the label has not been defined. - * \remarks Some applications may ignore the label field and work uniquely with the - * internal name. Therefore, it should not be taken for granted that a label exists. Also, remember - * that the label does not get saved in the FBX file. It only exists while the property object is - * in memory. - */ - FbxString GetLabel(bool pReturnNameIfEmpty=true) const; - - - /** Sets a label for the property. - * \param pLabel Label string. - */ - void SetLabel(const FbxString& pLabel); - - /** Returns the object that contains the property. - * \return The property object owner (or null if the property is an orphan). - */ - FbxObject* GetFbxObject() const; - //@} - - /** - * \name User data - */ - //@{ - /** Sets the user tag. - * \param pTag The user tag to be set. - */ - void SetUserTag(int pTag); - - //! Gets the user tag. - int GetUserTag(); - - /** Sets the user data pointer. - * \param pUserData The user data pointer. - */ - void SetUserDataPtr(void* pUserData); - - /** Gets the user data pointer. - * \return The user data pointer. - */ - void* GetUserDataPtr(); - //@} - - /** - * \name Property Flags. - */ - //@{ - /** Changes the property attribute. - * \param pFlag Property attribute identifier. - * \param pValue New state of pFlag. - */ - void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue); - - /** Returns the state of the property attribute. - * \param pFlag Property attribute identifier. - * \return The state of the property attribute(pFlag). - */ - bool GetFlag(FbxPropertyFlags::EFlags pFlag) const; - - /** Returns the state of all of the property attributes. - * \return The state of the property attributes(pFlags). - */ - FbxPropertyFlags::EFlags GetFlags() const; - - /** Returns the inheritance type of the given flag, similar to GetValueInheritType(). - * \param pFlag The flag to be queried. - * \return The inheritance type of the specific flag. - */ - FbxPropertyFlags::EInheritType GetFlagInheritType( FbxPropertyFlags::EFlags pFlag ) const; - - /** Sets the inheritance type for the specific flag, similar to SetValueInheritType(). - * \param pFlag The flag to be set. - * \param pType The inheritance type to be set. - * \return \c True on success, \c false otherwise. - */ - bool SetFlagInheritType( FbxPropertyFlags::EFlags pFlag, FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property flag has been modified from its default value. - * \param pFlag The flag to be queried. - * \return \c True if the value of this property has changed, \c false otherwise - */ - bool ModifiedFlag( FbxPropertyFlags::EFlags pFlag ) const; - //@} - - /** - * \name Assignment and comparison operators - */ - //@{ - /** Assignment operator. - * \param pProperty The property assigned to this property. - * \return This property. - */ - FbxProperty& operator= (const FbxProperty& pProperty); - - /** Equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if equal, \c false otherwise. - */ - bool operator== (const FbxProperty& pProperty) const; - - /** Non-equivalence operator. - * \param pProperty The property compared to this property. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!= (const FbxProperty& pProperty) const; - - /** Lesser operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxProperty& pProperty) const; - - /** Greater operator, used to sort property in map. - * \param pProperty The property compared to this property. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxProperty& pProperty) const; - - /** Equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue doesn't equal zero, or this property is invalid and pValue equals zero, \c false otherwise. - */ - inline bool operator== (int pValue) const { return (pValue == 0) ? !IsValid() : IsValid(); } - - /** Non-equivalence operator. - * \param pValue The value compared to this property. - * \return \c True if this property is valid and pValue equals zero, or this property is invalid and pValue doesn't equal zero, \c false otherwise. - */ - inline bool operator!= (int pValue) const { return (pValue != 0) ? !IsValid() : IsValid(); } - - /** Compares this property's value to another property's value. - * \param pProperty The property whose value is compared with this property's value. - * \return \c True if equal, \c false otherwise. - */ - bool CompareValue(const FbxProperty& pProperty) const; - //@} - - /** Copies the value of a property. - * \param pProperty The property from which to derive the value. - * \return \c True if value has been copied successfully, \c false otherwise. - */ - bool CopyValue(const FbxProperty& pProperty); - - /** - * \name Value management. - */ - //@{ - /** Gets the value of the property. - * \tparam T The data type of the value. - * \return The property value. - */ - template inline T Get() const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Sets the value of the property. - * \param pValue The new value - * \return \c True if type is compatible and the value is set successfully, \c false otherwise. - */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** Judges the property's validity. - * \return \c True if this property is valid, \c false otherwise. - */ - bool IsValid() const; - - /** Checks if the specified property's value has changed from its default value. - * \param pProperty Property that is tested. - * \return \c True if the property value is still the default, \c false otherwise. - * \remarks If the inheritance type of pProperty's value is eOverride, pProperty's value should - * have been modified, so pProperty doesn't have the default value. - * If the inheritance type of pProperty's value is eInherit, that means pProperty's value inherits - * the referenced object's property value, so pProperty has the default value. - */ - static bool HasDefaultValue(FbxProperty& pProperty); - - /** Queries the inheritance type of the property. - * Use this method to determine if this property's value is overridden from the default - * value, or from the referenced object, if this object is a clone. - * \return The inheritance type of the property. - */ - FbxPropertyFlags::EInheritType GetValueInheritType() const; - - /** Sets the inheritance type of the property. - * Use the method to explicitly override the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * You can also use this to explicitly inherit the default value of the property, - * or the referenced object's property value, if this object is a clone. - * - * \param pType The new inheritance type. - * \return \c True on success, \c false otherwise. - */ - bool SetValueInheritType( FbxPropertyFlags::EInheritType pType ); - - /** Checks if the property's value has been modified from its default value. - * \return \c True if the value of the property has changed, \c false otherwise. - * \remarks If the inheritance type of the property's value is eOverride, the property's value should - * have been modified, it returns \c true. - * If the inheritance type of the property's value is eInherit, that means the property's value inherits - * the referenced object's property value, so the property's value is not modified and it returns \c false. - */ - bool Modified() const; - //@} - - /** - * \name Property Limits. - * Property limits are provided for convenience if some applications desire to - * bound the range of possible values for a given type property. FBX will never - * apply these limits internally, however it will store and retrieve the limits values - * from files, and will assure that they are persistent in memory - * while the property exists. - * - * Notes: - * - The limit value is truncated to the property data type. - * - * - These limits are meaningless for the boolean type. It is the responsibility of the - * calling application to implement the necessary instructions to limit the property of boolean type. - * - * - The SetMinLimit/SetMaxLimit methods will do nothing if SupportSetLimitsAsDoube() returns false. - */ - //@{ - /** Returns whether setting limits as a double number on this property type is allowed. - * \return \c True if allowed, \c false otherwise. - */ - bool SupportSetLimitAsDouble() const; - - /** Sets a minimum property value limit. - * \param pMin Minimum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMinLimit(double pMin); - - /** Returns whether a minimum limit exists, if it returns false, - * calling GetMinLimit() produces undefined behavior. - * \return \c True when a minimum limit exists, \c false otherwise. - */ - bool HasMinLimit() const; - - /** Returns the minimum property value limit. - * \return The minimum value limit. - */ - double GetMinLimit() const; - - /** Returns whether a maximum limit exists, if it returns false, - * calling GetMaxLimit() produces undefined behavior. - * \return \c True when a maximum limit exists, \c false otherwise. - */ - bool HasMaxLimit() const; - - /** Sets a maximum property value limit. - * \param pMax Maximum value allowed. - * \return \c True if the limit has been set, \c false otherwise. - */ - bool SetMaxLimit(double pMax); - - /** Returns the maximum property value. - * \return The maximum value limit. - */ - double GetMaxLimit() const; - - /** Sets the minimum and maximum value limit of the property. - * \param pMin Minimum value allowed. - * \param pMax Maximum value allowed. - \return \c True if both the min and max limit have been set, \c false otherwise. - */ - bool SetLimits(double pMin, double pMax); - //@} - - /** - * \name Enum and property list - */ - //@{ - /** Adds a string value at the end of the enumeration list. - * \param pStringValue The string value to be added. - * \return The index in the list where the string is added or -1 if the action failed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to add a value that is already - * in the enumeration list will fail. - * Empty strings are not allowed. - */ - int AddEnumValue(const char* pStringValue); - - /** Inserts a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value to be inserted. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to insert a value that is already - * in the enumeration list will fail. - * pIndex must be in the range [0, ListValueGetCount()]. - * Empty strings are not allowed. - */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Returns the number of elements in the enumeration list. - * \return The number of elements in the enumeration list. - * \remarks This function returns 0 if the property type is not eFbxEnum or eFbxEnumM. - */ - int GetEnumCount() const; - - /** Sets a string value at the specific index. - * \param pIndex Zero bound index. - * \param pStringValue The string value at the specific index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - * \remarks If the property is of type eFbxEnum, trying to set a value that is already - * in the enumeration list will fail. - * The function assigns the string value to the specific index. - * A string value must exist at the specific index in order to be changed. - * Empty strings are not allowed. - */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Removes the string value at the specified index. - * \param pIndex Index of the string value to be removed. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnuM. - */ - void RemoveEnumValue(int pIndex); - - /** Returns a string value at the specified index - * \param pIndex Zero bound index. - * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. - */ - const char* GetEnumValue(int pIndex) const; - //@} - - /** - * \name Hierarchical properties - */ - //@{ - /** Judges if this property is the root property. - * \return \c True when this property is a root property, \c false otherwise. - */ - inline bool IsRoot() const { return mPropertyHandle.IsRoot(); } - - /** Judges whether this property is a child of the specified property. - * \param pParent The specified property. - * \return \c True when this property is a child of the specified property, \c false otherwise. - */ - inline bool IsChildOf(const FbxProperty& pParent) const { return mPropertyHandle.IsChildOf(pParent.mPropertyHandle); } - - /** Judges whether this property is a descendant of the specified property. - * \param pAncestor The specified property. - * \return \c True when this property is a descendant of the specified property, \c false otherwise. - */ - inline bool IsDescendentOf(const FbxProperty& pAncestor) const { return mPropertyHandle.IsDescendentOf(pAncestor.mPropertyHandle); } - - /** Returns the parent property of this property. - * \return The parent of this property. - */ - inline FbxProperty GetParent() const { return FbxProperty(mPropertyHandle.GetParent()); } - - /** Returns the first child of this property. - * \return The first child of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetChild() const { return FbxProperty(mPropertyHandle.GetChild()); } - - /** Returns the sibling of this property. - * \return The sibling of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetSibling() const { return FbxProperty(mPropertyHandle.GetSibling()); } - - /** Returns the first property that is a descendant of this property. - * \return The first descendant of this property, if there is none, an invalid property is returned. - */ - inline FbxProperty GetFirstDescendent() const { return FbxProperty(mPropertyHandle.GetFirstDescendent()); } - - /** Returns the property that follows pProperty that is a descendant of this property. - * \param pProperty The last found descendant. - * \return The property that follows pProperty, if there is none, an invalid property is returned. - */ - inline FbxProperty GetNextDescendent(const FbxProperty& pProperty) const { return FbxProperty(mPropertyHandle.GetNextDescendent(pProperty.mPropertyHandle)); } - - /** Searches a property using its name. - * \param pName The name of the property as a \c NULL terminated string. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pCaseSensitive)); } - - /** Searches a property using its name and data type. - * \param pName The name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive Whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty Find (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - - /** Searches a property using its full name. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pCaseSensitive)); } - - /** Searches a property using its full name and data type. - * \param pName The full name of the property as a \c NULL terminated string. - * \param pDataType The data type of the property. - * \param pCaseSensitive whether the name is case-sensitive. - * \return A valid FbxProperty if the property is found, else - * an invalid FbxProperty. See FbxProperty::IsValid() - */ - inline FbxProperty FindHierarchical (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } - //@} - - /** - * \name Optimizations - */ - //@{ - //! Internal function for building a property name map. - inline void BeginCreateOrFindProperty(){ mPropertyHandle.BeginCreateOrFindProperty(); } - - //! Internal function for clearing the property name map. - inline void EndCreateOrFindProperty(){ mPropertyHandle.EndCreateOrFindProperty(); } - - //!This is an internal class that you can use to build and clear the name map of properties. You can use the name map to speed up searching for property names. - class FbxPropertyNameCache - { - public: - /** Constructor, the name map is created in the constructor. - * \param prop Property for building and clearing the name map. - */ - FbxPropertyNameCache(const FbxProperty& prop) : mProp(const_cast(prop)){ mProp.BeginCreateOrFindProperty(); } - - //! Destructor, the name map is destroyed in destructor. - ~FbxPropertyNameCache(){ mProp.EndCreateOrFindProperty(); } - - private: - FbxProperty& mProp; - FbxPropertyNameCache& operator=(const FbxPropertyNameCache& pOther){ mProp = pOther.mProp; mProp.BeginCreateOrFindProperty(); return *this; } - }; - //@} - - /** - * \name Animation Curve Management - */ - //@{ - /** Retrieve the proper animation evaluator to use for this property. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Find out if the property is animated: has a curve node with curves. - * \param pAnimLayer The animation layer to test for curve presence. Set to NULL if you want to use the default animation layer of the default animation stack. - * \return \c true if the property is animated. */ - bool IsAnimated(FbxAnimLayer* pAnimLayer=NULL) const; - - /** Evaluate the value of a property if it has animation and return the result as the template type. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ - template T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - FbxPropertyValue& EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); - - /** Creates a FbxAnimCurveNode on the specified layer. - * \param pAnimLayer The animation layer the FbxAnimCurveNode object is attached to. - * \return Pointer to the created FbxAnimCurveNode. - * \remarks This function check the property FbxPropertyFlags::eAnimatable flag and fails to execute if it is not set. - * \remarks If created, the FbxAnimCurveNode is automatically connected to the property and the animation layer. - * \remarks The created FbxAnimCurveNode does not automatically allocate anim curves. - * \remarks On the successful execution of this function, the property eAnimated flag is set to \c true. */ - FbxAnimCurveNode* CreateCurveNode(FbxAnimLayer* pAnimLayer); - - /** Get the property's animation curve node on the default animation stack and base layer. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(bool pCreate=false); - - /** Get the property's animation curve node on the specified animation stack, using its base layer. - * \param pAnimStack The animation stack to use to get or create the property's animation curve node. - * \c NULL can be passed to automatically specify the default animation stack. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimStack* pAnimStack, bool pCreate=false); - - /** Get the property's animation curve node on the specified animation layer. - * \param pAnimLayer The animation layer to use to get or create the property's animation curve node. Cannot be NULL. - * \param pCreate If \c true, create the animation curve node and return it if none were found. - * \return The animation curve node of this property, if found or created, otherwise NULL. - * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ - FbxAnimCurveNode* GetCurveNode(FbxAnimLayer* pAnimLayer, bool pCreate=false); - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), NULL, pCreate); - } - - /** Get the FbxAnimCurve from the specified animation layer. - * This function expects to find a FbxAnimCurveNode object with the same name as the property and it - * attempts to retrieve the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ - inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pChannel, bool pCreate=false) - { - return GetCurve(pAnimLayer, GetName(), pChannel, pCreate); - } - - /** Get the FbxAnimCurve of the specified channel from the specified animation layer. - * This function looks for the FbxAnimCurveNode named pName and the channel pChannel. It - * will retrieves the FbxAnimCurve from it. - * \param pAnimLayer The searched animation layer. - * \param pName Name of the curve node. It is an error to leave this field empty. - * \param pChannel Name of the channel we are looking for the animation curve. If NULL - * use the first defined channel. - * \param pCreate Create a FbxAnimCurve if not found. - * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. - * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and - * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. - * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. - * \remark If pChannel is NULL, this function is the equivalent of GetCurve(FbxAnimLayer*, bool). */ - FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pName, const char* pChannel, bool pCreate); - //@} - - /** - * \name General Object Connection and Relationship Management - */ - //@{ - /** Connects this property to one source object. - * \param pObject The source object to which this property connects. - * \param pType The connection type between the property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the source object. - * \param pObject The source object. - * \return \c True if this property connects with the source object, \c false otherwise. - */ - bool IsConnectedSrcObject(const FbxObject* pObject) const; - - /** Disconnects this property from one source object. - * \param pObject The source object from which this property will be disconnected. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcObject(FbxObject* pObject); - - /** Disconnects this property from all the source objects. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(); - - /** Disconnects this property from all source objects that satisfy a given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the source objects successfully, \c false otherwise. - */ - bool DisconnectAllSrcObject(const FbxCriteria& pCriteria); - - /** Returns the number of source objects with which this property connects. - * \return The number of source objects with which this property connects. - */ - int GetSrcObjectCount() const; - - /** Returns the number of source objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of source objects that satisfy the given criteria with which this property connects. - */ - int GetSrcObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the source object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The source object at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const int pIndex=0) const; - - /** Returns the source object that satisfies the criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object that satisfies the given criteria at the specified index, NULL if not found. - */ - FbxObject* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the source object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the source object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all source objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all source objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all source objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of source objects of a specific class type with which this property connects. - * \tparam T The specified class type. - * \return The number of source objects of the specified class type with which this property connects. - */ - template inline int GetSrcObjectCount() const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of source objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of source objects which are of the specified class type and satisfy the given criteria. - */ - template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the source object of the specified class type at the specified index. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The source object of a specified class type at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the source object which is of the specified class type and satisfies the given criteria at the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The source object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the source object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the source object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - - /** Connects this property to one destination object. - * \param pObject The destination object with which this property connects. - * \param pType The connection type between this property and the object. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); - - /** Judges whether this property connects with the destination object. - * \param pObject The destination object. - * \return \c True if this property connects with the destination object, \c false otherwise. - */ - bool IsConnectedDstObject(const FbxObject* pObject) const; - - /** Disconnects this property from the destination object. - * \param pObject The destination object from which this property disconnects from. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstObject(FbxObject* pObject); - - /** Disconnects this property from all the destination objects. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(); - - /** Disconnects this property from all the destination objects that satisfy given criteria. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - bool DisconnectAllDstObject(const FbxCriteria& pCriteria); - - /** Returns the number of destination objects with which this property connects. - * \return The number of destination objects with which this property connects. - */ - int GetDstObjectCount() const; - - /** Returns the number of destination objects that satisfy the given criteria with which this property connects. - * \param pCriteria The given criteria. - * \return The number of destination objects that satisfy given criteria with which this property connects. - */ - int GetDstObjectCount(const FbxCriteria& pCriteria) const; - - /** Returns the destination object at the specified index with which this property connects. - * \param pIndex The specified index whose default value is 0. - * \return The destination object at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const int pIndex=0) const; - - /** Returns the destination object that satisfies given criteria at the specified index with which this property connects. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object that satisfies given criteria at the specified index, NULL if not found. - */ - FbxObject* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const; - - /** Searches the destination object with the specified name, starting with the specified index. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const char* pName, const int pStartIndex=0) const; - - /** Searches the destination object with the specified name which satisfies the given criteria, starting with the specified index. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The destination object with the name, NULL if not found. - */ - FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; - - /** Disconnects this property from all the destination objects of the specified class type. - * \tparam T The specified class type. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } - - /** Disconnects this property from all the destination objects which are of the specified class type and satisfy the given criteria. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. - */ - template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the number of destination objects of the specified class type with which this property connects. - * \tparam T The specified class type. - * \return The number of destination objects of the specified class type with which this property connects. - */ - template inline int GetDstObjectCount() const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } - - /** Returns the number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \return The number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. - */ - template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } - - /** Returns the destination object of the specified class type at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pIndex The specified index whose default value is 0. - * \return The destination object of the specified class type at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } - - /** Returns the destination object which is of the specified class type and satisfies the given criteria at the specified index with which this property connects. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pIndex The specified index whose default value is 0. - * \return The destination object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. - */ - template inline T* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } - - /** Searches the destination object with the specified name which is of the specified class type, starting with the specified index. - * \tparam T The specified class type. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } - - /** Searches the destination object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. - * \tparam T The specified class type. - * \param pCriteria The given criteria. - * \param pName The object name. - * \param pStartIndex The start index. - * \return The source object with the name, NULL if not found. - */ - template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } - //@} - - /** - * \name General Property Connection and Relationship Management - */ - //@{ - // Properties - /** Connects this property to a source property. - * \param pProperty The source property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectSrcProperty(const FbxProperty& pProperty); - - /** Judges whether this property connects with the specified source property. - * \param pProperty The specified source property. - * \return \c True if this property connects with the specified source property, \c false otherwise. - */ - bool IsConnectedSrcProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified source property. - * \param pProperty The specified source property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectSrcProperty(const FbxProperty& pProperty); - - /** Returns the number of source properties with which this property connects. - * \return The number of source properties with which this property connects. - */ - int GetSrcPropertyCount() const; - - /** Connects this property to a destination property. - * \param pProperty The destination property with which this property connects. - * \return \c True on success, \c false otherwise. - */ - bool ConnectDstProperty(const FbxProperty& pProperty); - - /** Judges if this property connects with the specified destination property. - * \param pProperty The specified destination property. - * \return \c True if this property connects with the specified destination property, \c false otherwise. - */ - bool IsConnectedDstProperty(const FbxProperty& pProperty); - - /** Disconnects this property from the specified destination property. - * \param pProperty The specified destination property. - * \return \c True on success, \c false otherwise. - */ - bool DisconnectDstProperty(const FbxProperty& pProperty); - - /** Returns the number of destination properties with which this property connects. - * \return The number of destination properties with which this property connects. - */ - int GetDstPropertyCount() const; - - //!Clears the connection cache of this property, this cache is used to store the connections that satisfy the given criteria. - void ClearConnectCache(); - - /** Returns the source property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The source property at the specified index. - */ - FbxProperty GetSrcProperty(const int pIndex=0) const; - - /** Searches the source property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The source property with the specified name. - */ - FbxProperty FindSrcProperty(const char* pName, const int pStartIndex=0) const; - - /** Returns the destination property at the specified index with which this property connects. - * \param pIndex The specified index. - * \return The destination property at the specified index. - */ - FbxProperty GetDstProperty(const int pIndex=0) const; - - /** Searches the destination property with the specified name, starting with the specified index with which this property connects. - * \param pName The specified property name. - * \param pStartIndex The start index. - * \return The destination property with the specified name. - */ - FbxProperty FindDstProperty(const char* pName, const int pStartIndex=0) const; - //@} - - //! Hierarchical separator of properties. - static const char* sHierarchicalSeparator; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxProperty(FbxObject* pObject, const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - FbxProperty(const FbxProperty& pParent, const char* pName, const FbxDataType& pDataType, const char* pLabel); - - bool Set(const void* pValue, const EFbxType& pValueType, bool pCheckForValueEquality=true); - bool Get(void* pValue, const EFbxType& pValueType) const; - - bool NotifySetRequest(); - bool NotifySet(); - bool NotifyGet() const; - -private: - inline void* Get() const { FBX_ASSERT_NOW("Cannot get property value as void!"); return NULL; } - inline bool Set(const void* &){ FBX_ASSERT_NOW("Cannot set property value as void!"); return false; } - - bool ConnectSrc(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectSrc(const FbxProperty& pProperty); - bool DisconnectAllSrc(); - bool DisconnectAllSrc(const FbxCriteria& pCriteria); - bool IsConnectedSrc(const FbxProperty& pProperty) const; - int GetSrcCount() const; - int GetSrcCount(const FbxCriteria& pCriteria) const; - FbxProperty GetSrc(int pIndex=0) const; - FbxProperty GetSrc(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindSrc(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - bool ConnectDst(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); - bool DisconnectDst(const FbxProperty& pProperty); - bool DisconnectAllDst(); - bool DisconnectAllDst(const FbxCriteria& pCriteria); - bool IsConnectedDst(const FbxProperty& pProperty) const; - int GetDstCount() const; - int GetDstCount(const FbxCriteria& pCriteria) const; - FbxProperty GetDst(int pIndex=0) const; - FbxProperty GetDst(const FbxCriteria& pCriteria, int pIndex=0) const; - FbxProperty FindDst(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; - - mutable FbxPropertyHandle mPropertyHandle; - - friend class FbxObject; - friend class FbxIOSettings; - friend class FbxBindingOperator; - friend class FbxAnimEvalClassic; - friend void FbxMarkObject(FbxObject* pObject, FbxMap& pObjectDstDisconnectCount, FbxSet& pObjectsToDeleted, FbxArray& pObjectToDeletedInSequence); - friend void FbxCleanUpConnectionsAtDestructionBoundary(FbxScene* pObject, FbxArray& pObjectToDeletedInSequence); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief This template class is used to contain user properties of specific data types. -* \nosubgrouping -*/ -template class FbxPropertyT : public FbxProperty -{ -public: - /** - * \name Static initialization. - */ - //@{ - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pValue The value of the property. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(pValue)), pValue, pForceSet, pFlags); - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pObject The object that contains this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - /** Creates a property and initializes it using a specific value and flag. - * \param pCompound The parent property of this property. - * \param pName The name of the property. - * \param pDataType The property data type. - * \param pValue The property value. - * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals to the default value. - * \param pFlags The property flag. - */ - FbxProperty& StaticInit(FbxProperty pCompound, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pCompound, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - //@} - - /** \name Value Management */ - //@{ - /** Assignment function - * \param pValue The value assigned to this property. - * \return This property. */ - FbxPropertyT& Set(const T& pValue){ FbxProperty::Set(&pValue, FbxTypeOf(pValue)); return *this; } - - /** Retrieve function - * \return The value of the property. */ - T Get() const { T lValue; FbxProperty::Get(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Assignment operator - * \param pValue The value of type T assigned to this property. - * \return This property. */ - FbxPropertyT& operator=(const T& pValue){ return Set(pValue); } - - /** Type cast operator - * \return The value of the property of type T. */ - operator T() const { return Get(); } - //@} - - /** \name Animation Evaluation */ - //@{ - /** Evaluate the value of a property if it has animation and return the result. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. */ - T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false) - { - return EvaluatePropertyValue(*this, pTime, pForceEval); - } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -template <> class FbxPropertyT : public FbxProperty -{ -public: - FbxPropertyT() : FbxProperty(){} - FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} - ~FbxPropertyT(){} - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(eFbxReference), pValue, pForceSet, pFlags); - } - - const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) - { - bool lWasFound = false; - *this = Create(pObject, pDataType, pName, "", true, &lWasFound); - if( pForceSet || !lWasFound ) - { - ModifyFlag(pFlags, true); // modify the flags before we set the value - Set(pValue); // since we will trigger callbacks in there! - } - ModifyFlag(FbxPropertyFlags::eStatic, true); - return *this; - } - - FbxReference Get() const - { - FbxProperty::NotifyGet(); - return GetSrcObject(); - } - - FbxPropertyT& Set(const FbxReference& pValue) - { - if( FbxProperty::NotifySetRequest() ) - { - DisconnectAllSrcObject(); - if( ConnectSrcObject(pValue) ) - { - FbxProperty::SetValueInheritType(FbxPropertyFlags::eOverride); - FbxProperty::NotifySet(); - } - } - return *this; - } - - operator FbxReference() const - { - return Get(); - } - - FbxPropertyT& operator=(const FbxReference& pValue) - { - return Set(pValue); - } -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertydef.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertydef.h deleted file mode 100755 index 71788c0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertydef.h +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertydef.h -#ifndef _FBXSDK_CORE_PROPERTY_DEFINITION_H_ -#define _FBXSDK_CORE_PROPERTY_DEFINITION_H_ - -#include - -#include - -#include - -#define FBXSDK_PROPERTY_ID_NULL -1 -#define FBXSDK_PROPERTY_ID_ROOT 0 - -class FbxPropertyPage; - -class FBXSDK_DLL FbxPropertyFlags -{ -public: - //! Property inherit types - enum EInheritType - { - eOverride, //!< Property override this flag from its reference property. - eInherit, //!< Property inherit this flag from its reference property. - eDeleted //!< Property has been deleted, so inheritance is invalid. - }; - - //! Property flags that affect their behaviors - enum EFlags - { - eNone = 0, //!< No flag. - eStatic = 1 << 0, //!< Property is defined in the class declaration, so it wasn't created dynamically. - eAnimatable = 1 << 1, //!< Property can be animated, thus is can have am animation curve node connected. - eAnimated = 1 << 2, //!< Property is animated, so it also has an animation curve node connected. - eImported = 1 << 3, //!< Property has been created during import process when reading FBX file. - eUserDefined = 1 << 4, //!< Property has been defined by user, not by the FBX SDK. - eHidden = 1 << 5, //!< Property should not be displayed on user interface. - eNotSavable = 1 << 6, //!< Property value must not be exported when writing FBX files. - - eLockedMember0 = 1 << 7, //!< This property has its member #0 locked. - eLockedMember1 = 1 << 8, //!< This property has its member #1 locked. - eLockedMember2 = 1 << 9, //!< This property has its member #2 locked. - eLockedMember3 = 1 << 10, //!< This property has its member #3 locked. - eLockedAll = eLockedMember0 | eLockedMember1 | eLockedMember2 | eLockedMember3, - eMutedMember0 = 1 << 11, //!< This property has its member #0 muted. - eMutedMember1 = 1 << 12, //!< This property has its member #1 muted. - eMutedMember2 = 1 << 13, //!< This property has its member #2 muted. - eMutedMember3 = 1 << 14, //!< This property has its member #3 muted. - eMutedAll = eMutedMember0 | eMutedMember1 | eMutedMember2 | eMutedMember3, - - //Private flags - eUIDisabled = 1 << 15, //!< Private flag for dynamic UI in FBX plug-ins. - eUIGroup = 1 << 16, //!< Private flag for dynamic UI in FBX plug-ins. - eUIBoolGroup = 1 << 17, //!< Private flag for dynamic UI in FBX plug-ins. - eUIExpanded = 1 << 18, //!< Private flag for dynamic UI in FBX plug-ins. - eUINoCaption = 1 << 19, //!< Private flag for dynamic UI in FBX plug-ins. - eUIPanel = 1 << 20, //!< Private flag for dynamic UI in FBX plug-ins. - eUILeftLabel = 1 << 21, //!< Private flag for dynamic UI in FBX plug-ins. - eUIHidden = 1 << 22, //!< Private flag for dynamic UI in FBX plug-ins. - - eCtrlFlags = eStatic | eAnimatable | eAnimated | eImported | eUserDefined | eHidden | eNotSavable | eLockedAll | eMutedAll, - eUIFlags = eUIDisabled | eUIGroup | eUIBoolGroup | eUIExpanded | eUINoCaption | eUIPanel | eUILeftLabel | eUIHidden, - eAllFlags = eCtrlFlags | eUIFlags, - - eFlagCount = 23, - }; - - bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetFlags() const; - FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const; - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const; - - bool SetMask(FbxPropertyFlags::EFlags pFlags); - bool UnsetMask(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags::EFlags GetMask() const; - - bool Equal(const FbxPropertyFlags& pOther, FbxPropertyFlags::EFlags pFlags) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyFlags(); - explicit FbxPropertyFlags(FbxPropertyFlags::EFlags pFlags); - FbxPropertyFlags Clone(FbxPropertyPage* pPage); - - static const int sLockedMembersMax = 4; //Maximum number of property sub-member that can be locked. - static const int sLockedMembersBitOffset = 7; //Number of bits to shift to get to the first locked member flag. - static const int sMutedMembersMax = 4; //Maximum number of property sub-member that can be muted. - static const int sMutedMembersBitOffset = 11; //Number of bits to shift to get to the first muted member flag. - -private: - FbxUInt32 mFlagData, mMaskData; - - FBX_ASSERT_STATIC(sizeof(FbxUInt32) * 8 >= FbxPropertyFlags::eFlagCount); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPropertyValue -{ -public: - static FbxPropertyValue* Create(void* pData, EFbxType pType); - void Destroy(); - FbxPropertyValue* Clone(FbxPropertyPage*); - - bool Get(void* pValue, EFbxType pValueType); - bool Set(const void* pValue, EFbxType pValueType); - size_t GetSizeOf() const; - size_t GetComponentCount() const; - - void IncRef(); - void DecRef(); - int GetRef(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPropertyValue(); - -private: - FbxPropertyValue(void* pValue, EFbxType pType); - ~FbxPropertyValue(); - - int mRef; - EFbxType mType; - void* mValue; - - FBXSDK_FRIEND_NEW(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_DEFINITION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertyhandle.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertyhandle.h deleted file mode 100755 index d5bee92..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertyhandle.h +++ /dev/null @@ -1,576 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyhandle.h -#ifndef _FBXSDK_CORE_PROPERTY_HANDLE_H_ -#define _FBXSDK_CORE_PROPERTY_HANDLE_H_ - -#include - -#include -#include -#include - -#include - -class FbxPropertyPage; -class FbxPropertyHandle; -class FbxConnectionPointFilter; - -//! \brief Class to manage property handle. -class FBXSDK_DLL FbxPropertyHandle -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - //! Create an instance - static FbxPropertyHandle Create(); - - /** Create an instance with given instance. - * \param pInstanceOf The given instance. */ - static FbxPropertyHandle Create(const FbxPropertyHandle& pInstanceOf); - - /** Create an instance with given name and type. - * \param pName Property name. - * \param pType Property type. */ - static FbxPropertyHandle Create(const char* pName, EFbxType pType=eFbxUndefined); - - /** Create an instance with given name and type info. - * \param pName - * \param pTypeInfo */ - static FbxPropertyHandle Create(const char* pName, FbxPropertyHandle pTypeInfo); - - /** If this property is root property, delete the property page, otherwise delete the property. - * \return If succeed, return true. */ - bool Destroy(); - - //! Default constructor. - FbxPropertyHandle(); - - /** Copy constructor. - * \param pAddress FbxPropertyHandle copied to this one. */ - FbxPropertyHandle(const FbxPropertyHandle& pAddress); - - //! Destructor - ~FbxPropertyHandle(); - - /** Character constructor. - * \param pPage - * \param pId */ - FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT); - //@} - - /** - * \name Assignment and basic info - */ - //@{ - /** FbxPropertyHandle assignment operator. - * \param pHandle FbxPropertyHandle assigned to this one. */ - FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle); - - /** Equality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool operator==(const FbxPropertyHandle& pHandle) const; - - /** Inequality operator. - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if unequal, \c false otherwise. */ - bool operator!=(const FbxPropertyHandle& pHandle) const; - - /** Lesser operator, used to sort property handle in map. - * \param pHandle The property handle compared to this property handle. - * \return \c true if less, \c false otherwise. */ - bool operator< (const FbxPropertyHandle& pHandle) const; - - /** Greater operator, used to sort property handle in map. - * \param pProperty The property handle compared to this property handle. - * \return \c true if greater, \c false otherwise. */ - bool operator> (const FbxPropertyHandle& pHandle) const; - - /** Compare type info together - * \param pHandle FbxPropertyHandle compared with this one. - * \return \c True if equal, \c false otherwise. */ - bool Is(const FbxPropertyHandle& pHandle) const; - - //! Judge validity - bool Valid() const; - - //! Get the property name - const char* GetName() const; - - //! Get the property label - const char* GetLabel() const; - - /** Set a label to the property - * \param pLabel The given label string - * \return \c true if successful. */ - bool SetLabel(const char* pLabel); - - //! Get the property type - EFbxType GetType() const; - - //! Get the property type info - FbxPropertyHandle GetTypeInfo() const; - - //! Get the property attribute state - FbxPropertyFlags::EFlags GetFlags() const; - - /** Gets the inheritance type for the given flag. - * \param pFlags The flag to query - * \param pCheckReferences Decide whether check instance. If it is true, check instance. - * \return The inheritance type */ - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckReferences) const; - - /** According the given parameter Change the attributes of the property. - * \param pFlags The given flags used as mask. - * \param pValue If pValue is true, set mask with given flags, otherwise unset mask with given flags. - * \return If succeed, return true. */ - bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); - - /**Sets the inheritance type for the given flag - * \param pFlags The flag to set - * \param pType The inheritance type to set - * \return If succeed, return true. */ - bool SetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, FbxPropertyFlags::EInheritType pType); - - //! Get the property user data. - void* GetUserData() const; - - /** Set user data to the property - * \param pUserData The given user data - * \return If succeed, return true. */ - bool SetUserData(const void* pUserData); - - //! Get the property user tag - int GetUserTag() const; - - /** Set user tag to the property - * \param pUserData The given user tag - * \return If succeed, return true. */ - bool SetUserTag(int pUserData); - //@} - - /** - * \name Enum management - */ - //@{ - /** Add new value at the end of the enum list in the property. - * \param pStringValue The given new value - * \return The index of the value. */ - int AddEnumValue(const char* pStringValue); - - /** Insert new value at the given index of the enum list in property. - * \param pIndex The given index - * \param pStringValue The given new value */ - void InsertEnumValue(int pIndex, const char* pStringValue); - - /** Get the enum count of enum list in property - * \return The enum count of enum list in property */ - int GetEnumCount(); - - /** Set value at the given index of the enum list in the property. - * \param pIndex The given index - * \param pStringValue The given new value used to instead the old value. */ - void SetEnumValue(int pIndex, const char* pStringValue); - - /** Remove the value at the index of the enum list in the property. - * \param pIndex The given index */ - void RemoveEnumValue(int pIndex); - - /** Get the value at the index of enum list in the property. - * \param pIndex The given index - * \return The value at the given index */ - char* GetEnumValue(int pIndex); - //@} - - /** - * \name Child and Struct management - */ - //@{ - //! Create the map for find property in the property page - void BeginCreateOrFindProperty(); - - //! Clear the map which created for find property. - void EndCreateOrFindProperty(); - - /** Judge if the property is the root property. - * \return Return true if this property is root property. */ - inline bool IsRoot() const { return ( mPage && mId == 0 ) ? true : false; } - - /** Judge if the property is the child property of the given parent property. - * \param pParent The given parent property handle - * \return Return true if this property is child of given property. */ - bool IsChildOf(const FbxPropertyHandle& pParent) const; - - /** Judge if the property is descendent property of the given property. - * \param pParent The given parent property handle - * \return Return true if this property is descendant of given property. */ - bool IsDescendentOf(const FbxPropertyHandle& pParent) const; - - /** Set parent property handle.No matter what enters,the result is always false. - * \param pOther - * \return False */ - bool SetParent(const FbxPropertyHandle& pOther ); - - /** Add a property to the property page. - * \param pName The name of property. - * \param pTypeInfo The added property's type info. - * \return The handle of the new added property */ - FbxPropertyHandle Add(const char* pName, const FbxPropertyHandle& pTypeInfo); - - /** Get parent property - * \return If the parent property exists, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetParent() const; - - /** Get child property - * \return If the child property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetChild() const; - - /** Get sibling property - * \return If the sibling property is exist, return the property handle,otherwise return -1. */ - FbxPropertyHandle GetSibling() const; - - /** Get first descendent property - * \return If the descendent property is exist, return the first descendent property handle,otherwise return -1. */ - FbxPropertyHandle GetFirstDescendent() const; - - /** Get first descendent property which after the given property - * \param pHandle The given property handle - * \return If the descendent property can be found after the given property, - * return the first found property handle,otherwise return -1. */ - FbxPropertyHandle GetNextDescendent(const FbxPropertyHandle& pHandle) const; - - /** Find the property with given name - * \param pName The given property name - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, bool pCaseSensitive) const; - - /** Find the property with given name and type info. - * \param pName The given property name - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const; - - /** Separate the given name by children separator string and then find the property.The step is - * strip the first part of the name and search, if the property can be found, strip the second part - * of the name and continue search, until no property be found,then return the last found property. - * \param pName The given property name - * \param pChildrenSeparator The given children separator string - * \param pTypeInfo The given property type info - * \param pCaseSensitive Decide if the given property name is case sensitive - * \return Return a property handle which be created with the found property. */ - FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; - //@} - - /** - * \name Connection management - */ - //@{ - /** Connect source property. - * \param pSrc The given source property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get source properties' count. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source count of the sub connection point. - * Otherwise, return the src count of this property. - * \return The count of source properties */ - int GetSrcCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get source property with the given index. - * \param pFilter The filter used to get sub connection point. If it is not zero, return the source property of the sub connection point. - * Otherwise, return the source property of this property. - * \param pIndex The given index - * \return The source property handle. */ - FbxPropertyHandle GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect source property. - * \param pSrc The given source property - * \return If disconnect successfully, return true, otherwise return false. */ - bool DisconnectSrc(const FbxPropertyHandle& pSrc); - - /** Judge if it is connected with the given source property. - * \param pSrc The given source property - * \return If it is connected, return true, otherwise return false. */ - bool IsConnectedSrc(const FbxPropertyHandle& pSrc); - - /** Connect destination property. - * \param pDst The given destination property - * \param pType The given property type - * \return If connect successfully, return true,otherwise, return false. */ - bool ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault); - - /** Get destination properties' count. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination count of the sub connection point. - * Otherwise, return the destination count of this property. - * \return The count of destination properties */ - int GetDstCount(FbxConnectionPointFilter* pFilter=0) const; - - /** Get destination property with the given index. - * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination property of the sub connection point. - * Otherwise, return the destination property of this property. - * \param pIndex The given index - * \return The destination property handle. */ - FbxPropertyHandle GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; - - /** Disconnect destination property. - * \param pDst The given destination property - * \return If disconnect successfully, return true,otherwise, return false. */ - bool DisconnectDst(const FbxPropertyHandle& pDst); - - /** Judge if it is connected with the given destination property. - * \param pDst The given destination property - * \return If it is connected, return true,otherwise, return false. */ - bool IsConnectedDst(const FbxPropertyHandle& pDst); - - //! Clear connect cache - void ClearConnectCache(); - - //! Clear all connect without sending any notification (Internal use ONLY) - void WipeAllConnections(); - //@} - - /** \name Limits Functions - * Minimum and maximum value limits can be associated with properties, but FBX - * will not verify that these limits are respected. FBX however will store and - * retrieve limits from files, and will assure that they are persistent in memory - * while the property handle object exists. - * - * Soft minimums and maximums values are specifying a second set of limits that can be - * used for UI objects such as sliders. FBX will handle them the same way it does - * with the normal limits. */ - //@{ - /** Judge if this property has a minimum value. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool HasMin() const; - - /** Get the minimum value and value type of this property. - * \param pValue The minimum value of this property. - * \param pValueType The value type of this property. - * \return If the minimum value exist, return true,otherwise, return false. */ - bool GetMin(void* pValue, EFbxType pValueType) const; - - /** Set the minimum value and value type for this property. - * \param pValue The given minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. - */ - template inline bool SetMin(const T& pValue){ return SetMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The minimum value of this property */ - template inline T GetMin(const T* pFBX_TYPE) const { T lValue; GetMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft minimum value. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool HasSoftMin() const; - - /** Get the soft minimum value and value type of this property. - * \param pValue The soft minimum value of this property. - * \param pValueType The value type of this property. - * \return If the soft minimum value exist, return true,otherwise, return false. */ - bool GetSoftMin(void* pValue, EFbxType pValueType) const; - - /** Set the soft minimum value and value type for this property. - * \param pValue The given soft minimum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMin(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft minimum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMin(const T& pValue){ return SetSoftMin(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft minimum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft minimum value of this property */ - template inline T GetSoftMin(const T* pFBX_TYPE) const { T lValue; GetSoftMin(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has maximum value. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool HasMax() const; - - /** Get the maximum value and value type of this property. - * \param pValue The maximum value of this property. - * \param pValueType The value type of this property. - * \return If the maximum value exist, return true,otherwise, return false. */ - bool GetMax(void* pValue, EFbxType pValueType) const; - - /** Set the maximum value and value type for this property. - * \param pValue The given maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetMax(const T& pValue){ return SetMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The maximum value of this property */ - template inline T GetMax(const T* pFBX_TYPE) const { T lValue; GetMax(&lValue, FbxTypeOf(lValue)); return lValue; } - - /** Judge if this property has soft maximum value. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool HasSoftMax() const; - - /** Get the soft maximum value and value type of this property. - * \param pValue The soft maximum value of this property. - * \param pValueType The value type of this property. - * \return If the soft maximum value exist, return true,otherwise, return false. */ - bool GetSoftMax(void* pValue, EFbxType pValueType) const; - - /** Set the soft maximum value and value type for this property. - * \param pValue The given soft maximum value . - * \param pValueType The given value type . - * \return If it be set successfully, return true,otherwise, return false. */ - bool SetSoftMax(const void* pValue, EFbxType pValueType); - - /** According the given value and its value type, set the soft maximum value and value type for this property. - * \param pValue The given value . - * \return If it be set successfully, return true,otherwise, return false. */ - template inline bool SetSoftMax(const T& pValue){ return SetSoftMax(&pValue, FbxTypeOf(pValue)); } - - /** Get the soft maximum value of this property. - * \param pFBX_TYPE Not used in this function. This is a dummy argument for - * the correct instantiation of the templated function. - * \return The soft maximum value of this property */ - template inline T GetSoftMax(const T* pFBX_TYPE) const { T lValue; GetSoftMax(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Value - */ - //@{ - /** Get value inherit type of this property. - * \param pCheckReferences If it is true,check instance of this property page,otherwise,only check this page. - * \return The value inherit type of this property */ - FbxPropertyFlags::EInheritType GetValueInheritType(bool pCheckReferences) const; - - /** Set value inherit type for this property . - * \param pType The given value inherit type. - * \return If set successfully, return true,otherwise, return false. */ - bool SetValueInheritType(FbxPropertyFlags::EInheritType pType); - - /** Get default value and value type of this property . - * \param pValue The gotten default value of this property. - * \param pValueType The gotten default value type of this property. - * \return If default value be gotten successfully, return true,otherwise, return false. */ - bool GetDefaultValue(void* pValue, EFbxType pValueType) const; - - /** Get value and value type of this property . - * \param pValue The gotten value of this property. - * \param pValueType The gotten value type of this property. - * \return If value be gotten successfully, return true,otherwise, return false. */ - bool Get(void* pValue, EFbxType pValueType) const; - - /** Set property value and value type for this property. - * \param pValue The given property value . - * \param pValueType The given property value type - * \param pCheckValueEquality If it is true, when the given value is equal with - * the property value, the property value will not be set. - * \return If the property value be set successfully, return true,otherwise, return false. */ - bool Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality); - - /** Set property value with the given value . - * \param pValue The given value . - * \return If set successfully, return true,otherwise, return false. */ - template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } - - /** get property value. - * \param pFBX_TYPE Not be used. - * \return The gotten property value. */ - template inline T Get(const T* pFBX_TYPE) const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } - //@} - - /** - * \name Page settings - */ - //@{ - /** Set the property page data pointer. - * \param pData The given page data pointer. */ - void SetPageDataPtr(void* pData); - - /** Get property page data pointer. - * \return The gotten property page data pointer. */ - void* GetPageDataPtr() const; - //@} - - /** - * \name Page Internal Entry Management - */ - //@{ - /** Push properties to parent instance. - * \return If push successful return true,otherwise,return false. */ - bool PushPropertiesToParentInstance(); - //@} - - /** - * \name Reference Management - */ - //@{ - /** Judge if this property page is a instance of other page. - * \return If this property page is a instance of other page, return true,otherwise,return false. */ - bool IsAReferenceTo(void) const; - - /** Get the property page which this property page make reference to - * \return The property page which this property page make reference to */ - void* GetReferenceTo(void) const; - - /** Judge if this property page is referenced by other pages. - * \return If this property page is referenced by other pages, return true,otherwise,return false. */ - bool IsReferencedBy(void) const; - - /** Get the count of property pages which make reference to this property page. - * \return The count of property pages which make reference to this property page. */ - int GetReferencedByCount(void) const; - - /** According the given index,get the property page which make reference to this property page. - * \param pIndex The given index - * \return The pointer to the property page which reference to this property page and be found by index. */ - void* GetReferencedBy(int pIndex) const; - //@} - -private: - FbxPropertyPage* mPage; - FbxInt mId; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertypage.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertypage.h deleted file mode 100755 index 190940e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertypage.h +++ /dev/null @@ -1,1747 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertypage.h -#ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_ -#define _FBXSDK_CORE_PROPERTY_PAGE_H_ - -#include - -#include -#include -#include -#include - -#include - -typedef FbxPair FbxNameMapKey; - -struct FbxNameMapCompare -{ - inline int operator()(const FbxNameMapKey& pKeyA, const FbxNameMapKey& pKeyB) const - { - if( pKeyA.mFirst < pKeyB.mFirst ) return -1; - else if( pKeyA.mFirst > pKeyB.mFirst ) return 1; - return strcmp(pKeyA.mSecond, pKeyB.mSecond); - } -}; - -class FBXSDK_DLL FbxPropertyInfo -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyInfo* Create(const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyInfo >(pName,pTypeInfo); } - static FbxPropertyInfo* Create(const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyInfo >(pName,pType); } - void Destroy() { FbxDelete(this); } - FbxPropertyInfo* Clone(FbxPropertyPage* /*pPage*/) - { - // @@@@@ Filter is missing - // @@@@@ Clone is incomplete - if (mTypeInfo) - { - return FbxNew< FbxPropertyInfo >(mName,mTypeInfo); - } - else - { - return FbxNew< FbxPropertyInfo >(mName,mType); - } - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - - // Labels and Types - - inline FbxStringSymbol GetName() const { return mName; } - EFbxType GetType() const; - FbxPropertyPage* GetTypeInfo() const { return mTypeInfo; } - - inline void SetLabel(const char* pLabel) { mLabel=pLabel; } - inline const char* GetLabel() const { return mLabel.IsEmpty() ? "" : ((const char*)mLabel); } - - inline void SetUserTag(int pUserTag) { mUserTag=pUserTag; } - inline int GetUserTag() const { return mUserTag; } - - inline void SetUserData(const void* pUserData) { mUserData=(void*)pUserData; } - inline void* GetUserData() const { return mUserData; } - - // Enum list - int AddEnumValue(const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - return mEnumList->Add((char*)pStringValue); - } - return -1; - } - - void InsertEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if( lCanAdd ) - mEnumList->InsertAt(pIndex,(char*)pStringValue); - } - } - - int GetEnumCount() - { - return mEnumList ? mEnumList->GetCount() : 0; - } - - void SetEnumValue(int pIndex, const char* pStringValue) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); - if (lCanAdd) - mEnumList->SetStringAt(pIndex,(char*)pStringValue); - } - } - - void RemoveEnumValue(int pIndex) - { - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - if (!mEnumList) - mEnumList.Reset(FbxNew< FbxStringList >()); - - mEnumList->RemoveAt(pIndex); - } - } - - char* GetEnumValue(int pIndex) - { - char* lValue = NULL; - EFbxType lType = GetType(); - if (lType == eFbxEnum || lType == eFbxEnumM) - { - lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0; - } - return lValue; - } - - - // Min and Max values - enum EValueIndex {eValueMin, eValueSoftMin, eValueMax, eValueSoftMax, eValueCount}; - - bool HasMinMax(EValueIndex pId) const - { - return mMinMaxValue[pId] != NULL; - } - - bool GetMinMax(EValueIndex pId, void* pValue, EFbxType pValueType) const - { - if (mMinMaxValue[pId]) { - return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType()); - } - return false; - } - - bool SetMinMax(EValueIndex pId, const void* pValue, EFbxType pValueType) - { - if (!mMinMaxValue[pId]) { - size_t lSize = FbxTypeSizeOf(GetType()); - if (lSize) { - mMinMaxValue[pId] = FbxMalloc(lSize); - } - } - if (mMinMaxValue[pId]) { - return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType); - } - return false; - } - -private: - FbxPropertyInfo(const char* pName, FbxPropertyPage* pTypeInfo) - : mRef(0) - , mName(pName) - , mType(eFbxUndefined) - , mTypeInfo(pTypeInfo) - , mUserTag(0) - , mUserData(0) - , mFilter(0) - { - for (int i=0; i mEnumList; -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (push) - #pragma warning (disable: 4355) -#endif - -class FBXSDK_DLL FbxPropertyConnect -{ -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyConnect* Create(FbxPropertyPage* pPage,FbxInt pId) { return FbxNew< FbxPropertyConnect >(pPage,pId); } - void Destroy() { FbxDelete(this); } - FbxPropertyConnect* Clone(FbxPropertyPage* pPage) - { - return FbxNew< FbxPropertyConnect >(pPage,mId); - } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } - inline int GetRef() { return mRef; } - -// Properties - FbxPropertyPage* GetPage() { return mPage; } - FbxInt GetPropertyId() { return mId; } - -// ClearConnectCache() -// ------------------------------------------------------ - inline void ClearConnectCache() - { - mConnectionPoint.SubConnectRemoveAll(); - } - - //! Clear all connect without sending any notification (Internal use ONLY) - inline void WipeAllConnections() - { - mConnectionPoint.WipeConnectionList(); - } - -// Properties - inline bool ConnectSrc(FbxPropertyConnect* pSrc, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectSrc(&pSrc->mConnectionPoint,pType); - } - inline bool DisconnectSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.DisconnectSrc(&pSrc->mConnectionPoint); - } - inline bool IsConnectedSrc(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline int GetSrcCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetSrcCount(pFilter); - } - inline FbxPropertyConnect* GetSrc(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetSrc(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - inline bool ConnectDst(FbxPropertyConnect* pDst, FbxConnection::EType pType) - { - return mConnectionPoint.ConnectDst(&pDst->mConnectionPoint,pType); - } - inline bool IsConnectedDst(FbxPropertyConnect* pSrc) - { - return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); - } - inline bool DisconnectDst(FbxPropertyConnect* pDst) - { - return mConnectionPoint.DisconnectDst(&pDst->mConnectionPoint); - } - inline int GetDstCount(FbxConnectionPointFilter* pFilter) - { - return mConnectionPoint.GetDstCount(pFilter); - } - inline FbxPropertyConnect* GetDst(FbxConnectionPointFilter* pFilter, int pIndex) - { - FbxConnectionPoint *lCP = mConnectionPoint.GetDst(pIndex,pFilter); - return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; - } - - int mRef; - FbxConnectionPoint mConnectionPoint; - FbxPropertyPage* mPage; - FbxInt mId; - -private: - FbxPropertyConnect(FbxPropertyPage* pPage,FbxInt pId) : - mRef(0), - mConnectionPoint(this), - mPage(pPage), - mId(pId) - { - } - - ~FbxPropertyConnect(){ if( FbxObject::GetWipeMode() ) mConnectionPoint.WipeConnectionList(); } -}; - -#if defined(FBXSDK_COMPILER_MSC) - #pragma warning (pop) -#endif - -class FBXSDK_DLL FbxPropertyEntry -{ -public: - static FbxPropertyEntry* Create(FbxInt pParentId, FbxPropertyInfo* pInfo, FbxPropertyValue* pValue, FbxPropertyConnect* pConnect){ return FbxNew(pParentId, pInfo, pValue, pConnect); } - - void Destroy() { FbxDelete(this); } - - inline FbxInt GetParentId(){ return mParentId; } - inline bool IsEmpty(){ return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ? false : true; } - - inline FbxPropertyInfo* Get(const FbxPropertyInfo* /*pType*/){ return mInfo; } - - void Set(FbxPropertyInfo* pInfo) - { - FbxPropertyInfo* lInfo = mInfo; - if( pInfo ) pInfo->IncRef(); - mInfo = pInfo; - if( lInfo ) lInfo->DecRef(); - } - - inline FbxPropertyValue* Get(const FbxPropertyValue* /*pType*/){ return mValue; } - - void Set(FbxPropertyValue* pValue) - { - FbxPropertyValue* lValue = mValue; - if( pValue ) pValue->IncRef(); - mValue = pValue; - if( lValue ) lValue->DecRef(); - } - - inline FbxPropertyConnect* Get(const FbxPropertyConnect* /*pType*/){ return mConnect; } - - void Set(FbxPropertyConnect* pConnect) - { - FbxPropertyConnect* lConnect = mConnect; - if( pConnect ) pConnect->IncRef(); - mConnect = pConnect; - if( lConnect ) lConnect->DecRef(); - } - - inline FbxPropertyFlags* Get(const FbxPropertyFlags* /*pType*/){ return &mFlags; } - inline void Set(FbxPropertyFlags pType){ mFlags = pType; } - inline void Set(FbxPropertyFlags* pType){ mFlags = pType ? *pType : FbxPropertyFlags(FbxPropertyFlags::eNone); } - -private: - FbxPropertyEntry(FbxInt pParentId,FbxPropertyInfo *pInfo,FbxPropertyValue *pValue,FbxPropertyConnect *pConnect) : - mInfo(pInfo), - mValue(pValue), - mConnect(pConnect), - mParentId(pParentId), - mFlags(FbxPropertyFlags::eNone) - { - if( mInfo ) mInfo->IncRef(); - if( mValue ) mValue->IncRef(); - if( mConnect ) mConnect->IncRef(); - } - - ~FbxPropertyEntry() - { - if( mInfo ) mInfo->DecRef(); - if( mValue ) mValue->DecRef(); - if( mConnect ) mConnect->DecRef(); - } - - FbxPropertyInfo* mInfo; - FbxPropertyValue* mValue; - FbxPropertyConnect* mConnect; - FbxInt mParentId; - FbxPropertyFlags mFlags; - - FBXSDK_FRIEND_NEW(); - friend class FbxPropertyPage; -}; - -class FBXSDK_DLL FbxPropertyIdGenerator -{ -public: - FbxPropertyIdGenerator() : mRef(0), mNextId(0) {} - - inline FbxInt GetNextId() const { return mNextId; } - inline FbxInt GetNextIdAndInc() { return mNextId++; } - - inline void IncRef() { mRef++; } - inline void DecRef() { mRef--; if( mRef == 0 ) FbxDelete(this); } - -private: - FbxInt mRef, mNextId; -}; - -class FBXSDK_DLL FbxPropertyPage -{ - -public: - FBXSDK_FRIEND_NEW(); - static FbxPropertyPage* Create (FbxPropertyPage* pInstanceOf=0) { return FbxNew< FbxPropertyPage >(pInstanceOf); } - static FbxPropertyPage* Create (const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyPage >(pName,pTypeInfo); } - static FbxPropertyPage* Create (const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyPage >(pName,pType); } - void Destroy() { FbxDelete(this); } - - template inline T* GetPropertyItem(const T* pItemType,FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - if (pFoundIn) *pFoundIn = 0; - if (lReferenceEntry) { - T* lItem = lReferenceEntry->Get( FBX_TYPE(T) ); - if (lItem) { - if (pFoundIn) *pFoundIn = lReferencePage; - return lItem; - } else { - return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ; - } - } - return 0; - } - - template inline T* ChangePropertyItemState(const T* pItemType, FbxInt pIndex, FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = NULL; - T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage); - if( pInheritType == FbxPropertyFlags::eOverride ) - { - if( lReferencePage == this ) - { - return lItem; - } - else if( lItem ) - { - FbxPropertyEntry* lEntry = ChangePropertyEntryState(pIndex, FbxPropertyFlags::eOverride); - lEntry->Set(lItem->Clone(this)); - return lEntry->Get(FBX_TYPE(T)); - } - } - else - { - // can't inherit entries that were created on our page. - bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) == NULL); - if( lOwnEntry && FbxPropertyFlags::eInherit == pInheritType) return 0; - - if( lItem && (lReferencePage == this) ) - { - FbxPropertyEntry* lEntry = GetPropertyEntry(pIndex); - lEntry->Set((T*)0); - if( lEntry->IsEmpty() ) - { - ChangePropertyEntryState(pIndex, FbxPropertyFlags::eInherit); - } - } - return 0; - } - return 0; - } - - template FbxPropertyPage* GetFirstPropertyItem(FbxInt pId, const T* pItem) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(T), pId, &lReferencePage); - if( lReferencePage && lReferencePage->mInstanceOf ) - { - FbxPropertyPage* lReferencePage2 = lReferencePage->mInstanceOf->GetFirstPropertyItem(pId, pItem); - return lReferencePage2 ? lReferencePage2 : lReferencePage; - } - return lReferencePage; - } - - const char* GetName(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetName()) : ""; - } - - const char* GetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? ((const char*)lPropertyInfo->GetLabel()) : ""; - } - - bool SetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const char* pLabel="") - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetLabel(pLabel); - return true; - } else { - return false; - } - } - - void* GetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserData() : 0; - } - - bool SetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const void* pUserData=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserData(pUserData); - return true; - } else { - return false; - } - } - - int GetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetUserTag() : 0; - } - - bool SetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,int pUserTag=0) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) { - lPropertyInfo->SetUserTag(pUserTag); - return true; - } else { - return false; - } - } - - EFbxType GetType(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetType() : eFbxUndefined; - } - - FbxInt GetParent(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyEntry* lPropertyEntry = GetPropertyEntry( pId ); - return lPropertyEntry ? lPropertyEntry->GetParentId() : FBXSDK_PROPERTY_ID_NULL; - } - - FbxPropertyPage* GetTypeInfo(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetTypeInfo() : 0; - } - FbxInt Add(FbxInt pParentId, const char* pName, EFbxType pType) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pType),FbxPropertyValue::Create(0,pType),0); - } - FbxInt Add(FbxInt pParentId, const char* pName, FbxPropertyPage* pTypeInfo) - { - return Add(pParentId,FbxPropertyInfo::Create(pName,pTypeInfo),FbxPropertyValue::Create(0,pTypeInfo->GetType()),0); - } - - inline bool Reparent( FbxInt /*pChildId*/, FbxInt /*pNewParentId*/ ) - { - // Not implemented. - /* - if( GetParent(pChildId) != pNewParentId && pChildId < mEntries.GetCount() ) - { - FbxPropertyEntry* lChildEntry = mEntries[pChildId]; - lChildEntry->mParentId = pNewParentId; - - //@@@@@ TODO: propagate to instances - - return true; - } - */ - return false; - } - - inline bool IsChildOf(FbxInt pId,FbxInt pParentId) const - { - return GetParent(pId)==pParentId; - - } - - inline bool IsDescendentOf(FbxInt pId,FbxInt pAncestorId) const - { - if (pAncestorId>0) { - FbxInt lParentId = GetParent(pId); - while (lParentId != FBXSDK_PROPERTY_ID_NULL ) { - if (lParentId==pAncestorId) { - return true; - } - lParentId = GetParent(lParentId); - } - return false; - } else { - return true; - } - - } - - //#define PROPERTY_PAGE_SANITY_CHECK // Debug purpose only. Never enable it in a production release. - - /** Retrieves the first child property id of a specified property id. - * \param pParentId The specified property id - * \return the first child property id - */ - FbxInt GetChild(FbxInt pParentId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pParentId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pParentId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != pParentId); - ret1 = lId; - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next sibling property id of a specified property id. - * \param pId The specified property id - * \return the next sibling property id - */ - FbxInt GetSibling(FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lReferenceParentId = GetParent(pId); - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != lReferenceParentId); - - ret1 = pId; - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the first descendent property id of a specified property id. - * \param pAnscestorId The specified property id - * \return the first descendent property id - */ - FbxInt GetFirstDescendent(FbxInt pAnscestorId=FBXSDK_PROPERTY_ID_ROOT) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pAnscestorId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lId = GetMinimumPropertyId(pAnscestorId); - FbxInt lParentId = GetParent(lId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (lIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(lId, pAnscestorId)) - { - ret1 = lId; - break; - } - } - } - - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - } - - /** Retrieves the next descendent property id of a specified property id, with given a descendent property id. - * \param pAnscestorId The specified property id - * \param pId The descendent property id - * \return the next descendent property id - */ - FbxInt GetNextDescendent(FbxInt pAnscestorId, FbxInt pId) const - { - #ifdef PROPERTY_PAGE_SANITY_CHECK - FbxInt pIdBackup = pId; - FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; - if (pId!=FBXSDK_PROPERTY_ID_NULL) { - FbxInt lParentId = GetParent(++pId); - const FbxInt lLastId = GetPropertyEntryCount(); - - while (pIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(pId, pAnscestorId) ) - { - ret1 = pId; - break; - } - } - - } - #ifdef PROPERTY_PAGE_SANITY_CHECK - FBX_ASSERT(ret0==ret1); - #endif - return ret1; - - } - - FbxInt FastFind (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive) - { - FbxInt lId = FBXSDK_PROPERTY_ID_NULL; - - bool lSlowQuery = true; - if( mNameMap.mSecond.GetSize() > 0 ) - { - lSlowQuery = false; - // try to use the map if we've got it - NameMap::RecordType* lIterator = mNameMap.mSecond.Find( FbxNameMapKey( pId, pName ) ); - if( !lIterator ) - { - lId = FBXSDK_PROPERTY_ID_NULL; - } - else - { - lId = lIterator->GetValue(); - if (lId != FBXSDK_PROPERTY_ID_NULL && pTypeInfo) - { - lSlowQuery = true; - - // Try to match types. - // If they are mismatched, fall back to the slow query, - // since we might have multiple property with the same name but different types - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if (lPropertyInfo) - { - FbxPropertyPage* lTypeInfo2 = lPropertyInfo->GetTypeInfo(); - if ( lTypeInfo2 && lTypeInfo2->Is(pTypeInfo) ) - { - lSlowQuery = false; - } - } - } - } - } - - if (!lSlowQuery) - return lId; - - // fall back if there's no map or we got one with a different type - - lId = GetChild(pId); - FbxStringSymbol lSearchSymbol( pName ); - while( lId != FBXSDK_PROPERTY_ID_NULL ) { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); - if ( (!pTypeInfo || lPropertyInfo->GetTypeInfo()->Is(pTypeInfo)) && - ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->GetName(),pName)==0) || - (pCaseSensitive && lPropertyInfo->GetName() == lSearchSymbol)) ) { - return lId; - } - lId = GetSibling(lId); - } - - return FBXSDK_PROPERTY_ID_NULL; - } - - FbxInt Find (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive, const char* pChildrenSeparators ) - { - if (pChildrenSeparators) - { - FbxInt lId; - size_t lFoundIndex = strcspn(pName,pChildrenSeparators); - - // Strip the first part of the name and search - if (lFoundIndexAddEnumValue(pStringValue) : - 1; - } - - void InsertEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->InsertEnumValue(pIndex,pStringValue); - } - - int GetEnumCount(FbxInt pId) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetEnumCount() : 0; - } - - void SetEnumValue(FbxInt pId, int pIndex, const char* pStringValue) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->SetEnumValue(pIndex,pStringValue); - } - - void RemoveEnumValue(FbxInt pId, int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - if (lPropertyInfo) lPropertyInfo->RemoveEnumValue(pIndex); - } - - char* GetEnumValue(FbxInt pId,int pIndex) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - return lPropertyInfo ? lPropertyInfo->GetEnumValue(pIndex) : (char*)""; - } - - // Connection - // --------------------------------- - void ClearConnectCache(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - if (lPropertyConnect) { - lPropertyConnect->ClearConnectCache(); - } - } - - void WipeAllConnections(FbxInt pId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - if (lPropertyConnect) { - lPropertyConnect->WipeAllConnections(); - } - } - - bool ConnectSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId, FbxConnection::EType pType) - { - FbxPropertyEntry* lDstEntry = ChangePropertyEntryState(pDstId,FbxPropertyFlags::eOverride); - FbxPropertyEntry* lSrcEntry = pSrcPage->ChangePropertyEntryState(pSrcId,FbxPropertyFlags::eOverride); - FbxPropertyConnect* lDstConnect= lDstEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - FbxPropertyConnect* lSrcConnect= lSrcEntry->Get( FBX_TYPE(FbxPropertyConnect) ); - - // Make sure we have a connection point on both sides of the connection - if (!lDstConnect) { - lDstConnect = FbxPropertyConnect::Create( this,pDstId ); - lDstEntry->Set( lDstConnect ); - } - if (!lSrcConnect) { - lSrcConnect = FbxPropertyConnect::Create( pSrcPage,pSrcId ); - lSrcEntry->Set( lSrcConnect ); - } - - // Must @@@@@@@ Propagate to inherited children - return lDstConnect->ConnectSrc(lSrcConnect,pType); - - } - - bool DisconnectSrc(FbxInt pDstId,FbxPropertyPage* pSrcPage,FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->DisconnectSrc(lSrcConnect); - } - return false; - } - - bool IsConnectedSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId) - { - FbxPropertyPage* lDstReferencePage = 0; - FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); - FbxPropertyPage* lSrcReferencePage = 0; - FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); - - // Make sure we have a connection point on both sides of the connection - if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { - // Must @@@@@@@ Remove unused connections - return lDstConnect->IsConnectedSrc(lSrcConnect); - } - return false; - } - - int GetSrcCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetSrcCount(pFilter) : 0; - } - - bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pSrcPage, FbxInt* pSrcId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lSrc = lPropertyConnect->GetSrc(pFilter,pIndex); - if (lSrc) - { - if (pSrcPage) *pSrcPage = lSrc->GetPage(); - if (pSrcId) *pSrcId = lSrc->GetPropertyId(); - return true; - } - } - return false; - } - - bool ConnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId, FbxConnection::EType pType) - { - return pDstPage->ConnectSrc(pDstId,this,pSrcId,pType); - } - - bool DisconnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->DisconnectSrc(pDstId,this,pSrcId); - } - - bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) - { - return pDstPage->IsConnectedSrc(pDstId,this,pSrcId); - } - - int GetDstCount(FbxInt pId, FbxConnectionPointFilter* pFilter) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are not considered propagated so - // make sure that we own the FbxPropertyConnect objects - return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetDstCount(pFilter) : 0; - } - - bool GetDst(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pDstPage, FbxInt* pDstId) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); - - // Connections are always overridden - // make sure that we own the FbxPropertyConnect Item - if (lPropertyConnect && lReferencePage==this) - { - FbxPropertyConnect* lDst = lPropertyConnect->GetDst(pFilter,pIndex); - if (lDst) - { - if (pDstPage) *pDstPage = lDst->GetPage(); - if (pDstId) *pDstId = lDst->GetPropertyId(); - return true; - } - } - return false; - } - - // Min and Max - // --------------------------------- - enum EValueIndex { eValueMin,eValueSoftMin,eValueMax,eValueSoftMax,eValueCount }; - - bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - - return lPropertyInfo ? lPropertyInfo->HasMinMax(pValueId) : false; - } - - bool GetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->GetMinMax(pValueId,pValue,pValueType) : false; - } - - bool SetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, const void* pValue, EFbxType pValueType) - { - FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); - // Don't make it writeable (Keep it shared) - return lPropertyInfo ? lPropertyInfo->SetMinMax(pValueId,pValue,pValueType) : false; - } - - // Value - // --------------------------------- - bool Get(FbxInt pId, void* pValue, EFbxType pValueType) - { - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId ); - return lPropertyValue ? lPropertyValue->Get(pValue,pValueType) : 0; - } - - bool Set(FbxInt pId, const void* pValue, EFbxType pValueType, bool pCheckValueEquality) - { - if( pCheckValueEquality ) - { - FbxPropertyPage* lReferencePage = NULL; - FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage ); - void* lCurrentValue = FbxTypeAllocate( pValueType ); - bool lValuesEqual = false; - bool lValueChanged = false; - if( lReferencePage && lReferencePage != this ) - { - // this page inherits, so check if we have to override the value. - if( lPropertyValue ) - { - lPropertyValue->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - } - } - else - { - FbxPropertyPage* lReferencePage2 = NULL; - FbxPropertyValue* lPropertyValue2 = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage2 ) : NULL; - if( lReferencePage2 && lPropertyValue2 ) - { - // this page is an override, but there is another page before us that overrides the value - lPropertyValue2->Get( lCurrentValue, pValueType ); - lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); - - if( lValuesEqual ) - { - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, FbxPropertyFlags::eInherit ); - lValueChanged = true; - } - - } - // else this page is the originator of the property, so no need to check, - } - - FbxTypeDeallocate(pValueType, lCurrentValue); - lCurrentValue = NULL; - - if( lValuesEqual ) - return lValueChanged; - } - - FbxPropertyValue* lPropertyValue = ChangePropertyItemState( FBX_TYPE(FbxPropertyValue),pId,FbxPropertyFlags::eOverride ); - return lPropertyValue ? lPropertyValue->Set(pValue,pValueType) : false; - } - - inline FbxPropertyFlags::EInheritType GetValueInherit(FbxInt pId, bool pCheckInstanceOf) const - { - FbxPropertyPage* lReferencePage = NULL; - GetPropertyItem(FBX_TYPE(FbxPropertyValue), pId, &lReferencePage); - - // check one level - if( !pCheckInstanceOf ) - { - return lReferencePage == this ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - else - { - if( lReferencePage == this ) return FbxPropertyFlags::eOverride; // this page is either an override, or the originator - else if( !lReferencePage->mInstanceOf ) return FbxPropertyFlags::eInherit; // the reference is the class root, so we must be inheriting - - // The reference page is not the class root, might be another override, or the originator. - FbxPropertyValue* lPropertyValue = lReferencePage->mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ); - - // if lReferencePage->mInstanceOf has the property value, - // lReferencePage is an override - // else - // its the originator, so this page inherits from it. - return lPropertyValue ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; - } - } - - inline bool SetValueInherit(FbxInt pId, FbxPropertyFlags::EInheritType pType) - { - // no support for this mode yet - if( FbxPropertyFlags::eDeleted == pType ) - return false; - - ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, pType ); - - // Above call doesn't return error codes, so just check that we match types. - return GetValueInherit(pId, false) == pType; - } - - inline bool GetDefaultValue(FbxInt pId, void* pValue, EFbxType pValueType) const - { - FbxPropertyPage* lReferencePage = GetFirstPropertyItem( pId, FBX_TYPE(FbxPropertyValue) ); - FbxPropertyValue* lPropertyValue = lReferencePage ? lReferencePage->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ) : NULL; - - return lPropertyValue ? lPropertyValue->Get( pValue, pValueType ) : false; - } - - - // useful set and get functions - template inline bool Set( FbxInt pId, const T& pValue ) { return Set( pId,&pValue,FbxTypeOf(pValue),true ); } - template inline T Get( FbxInt pId, const T* pFBX_TYPE) { T lValue; Get( pId,&lValue,FbxTypeOf(lValue) ); return lValue; } - - - void SetDataPtr(void* pDataPtr) { mDataPtr = pDataPtr; } - void* GetDataPtr() const { return mDataPtr; } - - // Instance and override management - // ------------------------------------------ - void PushPropertiesToParentInstance() - { - if (mInstanceOf) { - const int lCount = GetPropertyEntryCount(); - // push the existing properties into the parent - // ---------------------------------------------- - for( int i = 0; i < lCount; ++i ) - { - FbxPropertyEntry* lParentEntry = mInstanceOf->ChangePropertyEntryState( (FbxInt)i,FbxPropertyFlags::eOverride ); - FbxPropertyEntry* lEntry = GetPropertyEntry( (FbxInt)i ); - - if( !lParentEntry ) - { - lParentEntry = FbxPropertyEntry::Create( lEntry->GetParentId(), 0, 0, 0 ); - mInstanceOf->mEntryMap.Insert( i, lParentEntry ); - - //mInstanceOf->AddChild(i); - - } - - FBX_ASSERT( lParentEntry ); - - // Add it to the parent - // Don't touch the connections - // ----------------------------------------- - if (lParentEntry) { - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyInfo)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyValue)) ); - lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyFlags)) ); - } - - /* - else { - mInstanceOf->Add( - lEntry->GetParentId(), - lEntry->Get(FBX_TYPE(FbxPropertyInfo)), // The info - lEntry->Get(FBX_TYPE(FbxPropertyValue)), // The Value - 0, // The connections - false, - false - ); - } - */ - - // Empty the current entry - // Don't touch the connections - // ----------------------------------------- - ChangePropertyItemState(FBX_TYPE(FbxPropertyInfo), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyValue), i,FbxPropertyFlags::eInherit); - ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), i,FbxPropertyFlags::eInherit); - } - } - } - - inline const FbxPropertyPage* GetInstanceOf() const { return mInstanceOf; } - inline FbxPropertyPage* GetInstanceOf() { return mInstanceOf; } - - inline const FbxArray& GetInstances() const { return mInstances; } - inline FbxArray& GetInstances() { return mInstances; } - - - // Flags - // ------------------------------------------ - FbxPropertyFlags::EFlags GetFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - FbxPropertyFlags::EFlags lFlags = FbxPropertyFlags::eNone; - - if( lPropertyFlags ) - { - if( !mInstanceOf ) // no inheritance. - lFlags = lPropertyFlags->GetFlags(); - else - { - lFlags = mInstanceOf->GetFlags(pId); - lFlags = lPropertyFlags->GetMergedFlags(lFlags); - } - } - return lFlags; - } - - bool ModifyFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone,bool pValue=true,bool pCheckFlagEquality=true) - { - if( pCheckFlagEquality ) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lFlag = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( lFlag ) - { - if( lFoundIn == this ) - { - // set them in us. - lFlag->ModifyFlags( pFlags, pValue ); - - // we override this entry, check if we need to revert - FbxPropertyFlags* lInheritedFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lInheritedFlags && lInheritedFlags->Equal( *lFlag, pFlags ) ) - { - lFlag->UnsetMask( pFlags ); - - if( lFlag->GetMask() == 0 ) - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - } - else - { - // its not us. Just check if we need to set. - FbxPropertyFlags lNewValues( pFlags ); - if( lFlag->Equal( lNewValues, pFlags ) ) - return true; - } - } - } - - FbxPropertyFlags* lPropertyFlags = ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride); - return lPropertyFlags ? lPropertyFlags->ModifyFlags( pFlags, pValue ) : false; - } - - FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); - - if( !pCheckInstanceOf ) - return lFoundIn != this ? FbxPropertyFlags::eInherit : ( lPropertyFlags ? lPropertyFlags->GetFlagsInheritType(pFlags) : FbxPropertyFlags::eInherit ); - else - { - // This code basically counts the number of overrides for the - // given flags. The original entry is always considered an override. - // so if we see more than one, something overrode the original. - // and thus we are an override. - FbxPropertyPage* lRefPage = lFoundIn; - bool lFoundOverride = false; - while( lRefPage ) - { - lPropertyFlags = lRefPage->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ); - - if( !lPropertyFlags ) - break; // gone too far, break. - - if( lPropertyFlags->GetFlagsInheritType( pFlags ) == FbxPropertyFlags::eOverride ) - { - if( this == lRefPage || lFoundOverride ) - return FbxPropertyFlags::eOverride; // found two overrides or this page is the override. - else - lFoundOverride = true; // signal that we found the first override. - } - lRefPage = lRefPage->mInstanceOf; - } - - return FbxPropertyFlags::eInherit; - } - } - - bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) - { - FbxPropertyPage* lFoundIn = NULL; - FbxPropertyFlags* lPropertyFlags = NULL; - - if( FbxPropertyFlags::eOverride == pInheritType ) - { - lPropertyFlags = ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride ); - - // we should initialize our flag to the inherited value, if any. - FbxPropertyFlags* lParentFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; - if( lParentFlags && lPropertyFlags ) - { - FbxPropertyFlags::EFlags lParentValues = lParentFlags->GetFlags(); - lPropertyFlags->SetFlags( pFlags, lParentValues ); - return lPropertyFlags->SetMask( pFlags ); - } - - return false; - } - else if( FbxPropertyFlags::eInherit == pInheritType ) - { - lPropertyFlags = GetPropertyItem(FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn); - if( !lPropertyFlags ) return false; - if( lFoundIn != this ) return true; // not us - lPropertyFlags->UnsetMask( pFlags ); - if( lPropertyFlags->GetMask() == 0 ) // revert - ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); - - return true; - } - return false; - } - - inline void BeginCreateOrFindProperty() - { - if( 0 == mNameMap.mFirst ) - { - mNameMap.mSecond.Reserve(20); - - // push the existing properties into the map. Note: this includes the root property! - FbxInt lFoundId = FBXSDK_PROPERTY_ID_ROOT; - FbxPropertyEntry* lEntry = GetPropertyEntry(lFoundId); - while(lFoundId != FBXSDK_PROPERTY_ID_NULL) - { - FbxPropertyInfo* lInfo = lEntry->Get(FBX_TYPE(FbxPropertyInfo)); - //FBX_ASSERT( lInfo ); - if (lInfo) - { - mNameMap.mSecond.Insert(FbxNameMapKey(lEntry->GetParentId(), lInfo->GetName()), lFoundId); - } - lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry); - } - mNameMap.mFirst++; - } - } - - inline void EndCreateOrFindProperty() - { - if( mNameMap.mFirst > 0 ) - { - if( --(mNameMap.mFirst) == 0 ) - mNameMap.mSecond.Clear(); - } - } - -protected: - FbxPropertyPage(FbxPropertyPage* pInstanceOf=0) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - // instances don't need to create a root property - if( !pInstanceOf ) - { - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,"",eFbxUndefined); - } - - // Hook the instances - // ------------------------ - mInstanceOf = pInstanceOf; - if (mInstanceOf) { - mInstanceOf->mInstances.Add(this); - - mPropNextId = mInstanceOf->mPropNextId; - mPropNextId->IncRef(); - } - } - FbxPropertyPage(const char* pName, EFbxType pType) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pType); - } - FbxPropertyPage(const char* pName, FbxPropertyPage* pTypeInfo) - : mInstanceOf(0) - , mDataPtr(0) - , mPropNextId(0) - { - mEntryMap.Reserve(32); - mNameMap.mFirst = 0; - - mPropNextId = FbxNew< FbxPropertyIdGenerator >(); - mPropNextId->IncRef(); - - // First item is the root information - Add(FBXSDK_PROPERTY_ID_NULL,pName,pTypeInfo); - } - ~FbxPropertyPage() - { - // Propagate our property entries. - int i = 0, j = 0; - for( i = 0; i < mInstances.GetCount(); ++i ) - { - for( j = 0; j < GetPropertyEntryCount(); ++j ) - { - if( mInstances[i]->ChangePropertyEntryState((FbxInt)j, FbxPropertyFlags::eOverride) ) - { - // Clone the info and values. Don't clone the connections, - // since they aren't propagated. - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyInfo), (FbxInt)j, FbxPropertyFlags::eOverride ); - mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), (FbxInt)j, FbxPropertyFlags::eOverride ); - - // Since all entries have their own flags, just override the ones in the instance. - mInstances[i]->SetFlagsInheritType(FbxPropertyFlags::eOverride, FbxPropertyFlags::eAllFlags, (FbxInt)j ); - } - } - - // Instances become their own copies. - mInstances[i]->mInstanceOf = NULL; - } - - FbxMapDestroy(mEntryMap); - - if (mInstanceOf) { - int lIndex = mInstanceOf->mInstances.Find(this); - mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]); - mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1); - - //mInstanceOf->mInstances.RemoveIt(this); - } - - mPropNextId->DecRef(); - mPropNextId = NULL; - - mInstanceOf = NULL; - mInstances.Clear(); - } - - inline bool Is(FbxPropertyPage* pPage) - { - // @@@@@@@@@@@@@@@ Must complete for sub types - return this==pPage; - } - -// Internal entry management -private: - - /** Retrieves the smallest property id of which are larger than a specified one. - * \param pId The specified property id - * \param pIncrementIfNone Whether it returns FBXSDK_PROPERTY_ID_NULL or pId+1, if not found. - * \return The property id described above. - */ - FbxInt GetMinimumPropertyId(FbxInt pId, bool pIncrementIfNone = true) const - { - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - FbxInt lMin = FBXSDK_PROPERTY_ID_NULL; - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lMin = lElement->GetKey(); - } - - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyId(pId,false) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lMin == FBXSDK_PROPERTY_ID_NULL; - - if( lParentNull && lMinNull ) return pIncrementIfNone ? pId+1 : FBXSDK_PROPERTY_ID_NULL; - else if( lMinNull ) lMin = lParentMin; - else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin; - - return lMin; - } - - /** Retrieves the smallest property id of which are larger than a specified one, and retrieve its entry. - * \param pId The specified property id - * \param pEntry The returned property entry - * \return The property id described above. - */ - FbxInt GetMinimumPropertyIdAndEntry(FbxInt pId, FbxPropertyEntry** pEntry) const - { - FbxInt lFoundId = FBXSDK_PROPERTY_ID_NULL; - FbxPropertyEntry* lFoundEntry = NULL; - if( pId == FBXSDK_PROPERTY_ID_NULL ) - pId = FBXSDK_PROPERTY_ID_ROOT; - - const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); - if (NULL != lElement) - { - lFoundId = lElement->GetKey(); - lFoundEntry = lElement->GetValue(); - } - - FbxPropertyEntry* lParentEntry = NULL; - FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyIdAndEntry(pId, &lParentEntry) : FBXSDK_PROPERTY_ID_NULL; - - bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; - bool lMinNull = lFoundId == FBXSDK_PROPERTY_ID_NULL; - - if( lMinNull && !lParentNull ) - { - lFoundId = lParentMin; - lFoundEntry = lParentEntry; - } - else if( !lMinNull && !lParentNull ) - { - lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin; - lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry; - } - - if (pEntry) - *pEntry = lFoundEntry; - return lFoundId; - } - - int GetPropertyEntryCount() const - { - int lCount = 0; - const EntryMap::RecordType* lElement = mEntryMap.Maximum(); - - if (NULL != lElement) - { - lCount = lElement->GetKey() + 1; - } - - int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0; - return lParentCount > lCount ? lParentCount : lCount; - } - - FbxPropertyEntry* GetPropertyEntry(FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const - { - const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex); - if (NULL != lElement) - { - if( pFoundIn ) - { - *pFoundIn = const_cast(this); - } - return lElement->GetValue(); - } - - if( pFoundIn ) - { - *pFoundIn = 0; - } - - return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0; - } - - FbxPropertyEntry* ChangePropertyEntryState(FbxInt pIndex,FbxPropertyFlags::EInheritType pInheritType) - { - FbxPropertyPage* lReferencePage = 0; - FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); - - if (pInheritType==FbxPropertyFlags::eOverride) { - if (lReferencePage==this) { - return lReferenceEntry; - } else if (lReferenceEntry) { - // must create an entry - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(lReferenceEntry->GetParentId(),0,0,0); - mEntryMap.Insert( pIndex, lEntry ); - - return lEntry; - } - } else { - if (lReferenceEntry && (lReferencePage==this)) { - mEntryMap.Remove(pIndex); - lReferenceEntry->Destroy(); - } - } - return 0; - } - - FbxInt Add(FbxInt pParentId,FbxPropertyInfo* pInfo,FbxPropertyValue* pValue,FbxPropertyConnect* pConnect,bool pRecursive=true) - { - FbxInt lId = mPropNextId->GetNextIdAndInc(); - FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(pParentId,pInfo,pValue,pConnect); - - // entries created through Add() are not overrides of another entry. - // Thus, set all of their flags by default. - FbxPropertyFlags* lFlags = lEntry->Get( FBX_TYPE(FbxPropertyFlags) ); - if( lFlags ) lFlags->ModifyFlags( FbxPropertyFlags::eAllFlags, false ); - - mEntryMap.Insert( lId, lEntry ); - - // We only add to the map if this Add is called after BeginCreateOrFindProperty() - // in which case the size is always > 0 because it includes the root property - if( mNameMap.mSecond.GetSize() > 0 ) - mNameMap.mSecond.Insert( FbxNameMapKey( pParentId, pInfo->GetName()), lId ); - - // If the entry has multiple children(Struct Datatype) - // Recurse for the entries and create an entry in this structure - if (pRecursive) { - FbxPropertyPage* lTypeInfo = pInfo->GetTypeInfo(); - if (lTypeInfo) { - FbxInt lChildId; - lChildId = lTypeInfo->GetChild(); - while (lChildId!=FBXSDK_PROPERTY_ID_NULL) { - FbxPropertyInfo* lPropertyInfo = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyInfo),lChildId ); - FbxPropertyValue* lPropertyValue = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyValue),lChildId ); - FbxPropertyConnect* lPropertyConnect = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),lChildId ); - - Add ( lId, lPropertyInfo ? lPropertyInfo->Clone(this) : 0 , lPropertyValue ? lPropertyValue->Clone(this) : 0, - lPropertyConnect ? lPropertyConnect->Clone(this) : 0 ); - lChildId = lTypeInfo->GetSibling(lChildId ); - } - } - } - return lId; - } - - // Property management - typedef FbxMap, FbxHungryAllocator> EntryMap; - EntryMap mEntryMap; - - // instance management - FbxPropertyPage* mInstanceOf; - FbxArray mInstances; - - void* mDataPtr; - - // speed up structure - typedef FbxMap NameMap; - typedef FbxPair NameLookupPair; - NameLookupPair mNameMap; - - FbxPropertyIdGenerator* mPropNextId; - - friend class FbxPropertyHandle; -}; - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_PAGE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertytypes.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertytypes.h deleted file mode 100755 index da3e952..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxpropertytypes.h +++ /dev/null @@ -1,1178 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertytypes.h -#ifndef _FBXSDK_CORE_PROPERTY_TYPES_H_ -#define _FBXSDK_CORE_PROPERTY_TYPES_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -//! Type identifier constants -enum EFbxType -{ - eFbxUndefined, //!< Unidentified. - eFbxChar, //!< 8 bit signed integer. - eFbxUChar, //!< 8 bit unsigned integer. - eFbxShort, //!< 16 bit signed integer. - eFbxUShort, //!< 16 bit unsigned integer. - eFbxUInt, //!< 32 bit unsigned integer. - eFbxLongLong, //!< 64 bit signed integer. - eFbxULongLong, //!< 64 bit unsigned integer. - eFbxHalfFloat, //!< 16 bit floating point. - eFbxBool, //!< Boolean. - eFbxInt, //!< 32 bit signed integer. - eFbxFloat, //!< Floating point value. - eFbxDouble, //!< Double width floating point value. - eFbxDouble2, //!< Vector of two double values. - eFbxDouble3, //!< Vector of three double values. - eFbxDouble4, //!< Vector of four double values. - eFbxDouble4x4, //!< Four vectors of four double values. - eFbxEnum = 17, //!< Enumeration. - eFbxEnumM =-17, //!< Enumeration allowing duplicated items. - eFbxString = 18, //!< String. - eFbxTime, //!< Time value. - eFbxReference, //!< Reference to object or property. - eFbxBlob, //!< Binary data block type. - eFbxDistance, //!< Distance. - eFbxDateTime, //!< Date and time. - eFbxTypeCount = 24 //!< Indicates the number of type identifiers constants. -}; - -/** Class to represent colors in RGBA format using doubles. - * \nosubgrouping - */ -class FBXSDK_DLL FbxColor -{ -public: - //! Constructor. - FbxColor(); - - /** Constructor. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - FbxColor(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - FbxColor(const FbxDouble3& pRGB, const double pAlpha=1.0); - FbxColor(const FbxDouble4& pRGBA); - - //! Destructor. - ~FbxColor(); - - /** Re-initialize the color object with their new values. - * \param pRed The Red component value. - * \param pGreen The Green component value. - * \param pBlue The Blue component value. - * \param pAlpha The alpha value of the color. - */ - void Set(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); - - /** Indicate if all the members in the color objects are within their valid range. - * \return \c true if all the members are within their valid range. - */ - bool IsValid() const; - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - double& operator[](int pIndex); - - /** Accessors. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The pIndex parameter is not checked for values out of bounds. - */ - const double& operator[](int pIndex) const; - - /** - * \name Operators - */ - //@{ - /** Assignment operator. - * \param pColor FbxColor to be copied. - */ - FbxColor& operator=(const FbxColor& pColor); - FbxColor& operator=(const FbxDouble3& pColor); - FbxColor& operator=(const FbxDouble4& pColor); - - /** Equality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if equal, \c false if unequal. - */ - bool operator==(const FbxColor& pColor) const; - - /** Inequality operator. - * \param pColor FbxColor compared with this one. - * \return \c true if unequal, \c false if equal. - */ - bool operator!=(const FbxColor& pColor) const; - //@} - - /** - * name Public Members - */ - //@{ - //! Valid range is from 0.0 to 1.0. - double mRed; - - //! Valid range is from 0.0 to 1.0. - double mGreen; - - //! Valid range is from 0.0 to 1.0. - double mBlue; - - //! Valid range is from 0.0 to 1.0. - double mAlpha; - //@} -}; - -/** FBX SDK half-float class. - * Property used to store half-float (16 bit float) number. - * This class only holds the value in 2 byte buffer (unsigned short). There is - * no direct math manipulation of this type except for the conversion to/from - * float. On disk, this type is also saved as an unsigned short. - * \nosubgrouping - */ -class FBXSDK_DLL FbxHalfFloat -{ -public: - /** - *\name Constructors - */ - //@{ - FbxHalfFloat(); - FbxHalfFloat(float pVal); - FbxHalfFloat(const FbxHalfFloat& pVal); - //@} - - /** Assign operator - * \param pValue The half-float to be assigned to this instance. - * \return This half-float. - */ - FbxHalfFloat& operator=(const FbxHalfFloat& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The half-float to be compared with this one. - * \return \c True, if the two values are equal, \c false otherwise. - */ - bool operator==(const FbxHalfFloat& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The half-float to be compared with this one - * \return \c True, if the two values are unequal, \c false otherwise. - */ - bool operator!=(const FbxHalfFloat& pRHS) const; - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve the value as a float. - */ - float value() const; - - /** Retrieve the value as it is stored. - */ - unsigned short internal_value() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef unsigned short half; - half mValue; - - // we want to extract the mantissa, exponent and sign from the float number. - // by the IEEE 754 binary standard, the float number is divided as: - // sign : 1 bit - // mantissa : 23 bits - // exponent : 8 bits - // exponent bias : 127 - // and the half-float is: - // sing : 1 bit - // mantissa : 10 bits - // exponent : 5 bits - // exponent bias : - - half FtoHF(float *f); - float HFtoF(half h) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** FBX SDK blob class. - * Uninitialized data of a specified size, to be filled by the user. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBlob -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. Set attributes to 0. - FbxBlob(); - - /** Constructor. Construct a buffer with uninitialized data of a specified size, to be filled by the user. - * \param pSize Buffer size. - */ - FbxBlob(int pSize); - - /** Copy constructor. - * \param pRHS The blob to be copied to this blob. - */ - FbxBlob(const FbxBlob& pRHS); - - /** Constructor. - * \param pData The data to be filled in the buffer. - * \param pSize Buffer size. - */ - FbxBlob(const void* pData, int pSize); - - //! Destructor - ~FbxBlob(); - //@} - - /** - * \name Assignment. - */ - //@{ - /** Share the buffer of the specified blob with this blob. - * \param pValue The blob whose buffer is shared with this blob. - * \return This blob. - */ - FbxBlob& operator=(const FbxBlob& pValue); - - /** Copy the data in the buffer. - * \param pData The buffer to be copied data from. - * \param pSize Buffer size. - */ - void Assign(const void* pData, int pSize); // Always makes a copy. - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are equal, \c false otherwise. - */ - bool operator==(const FbxBlob& pRHS) const; // Compare the contents. - - /** Inequality operator. - * \param pRHS The blob to be compared with this blob. - * \return \c True, if the two blobs are unequal, otherwise false. - */ - bool operator!=(const FbxBlob& pRHS) const; - //@} - - //!Make a copy if the reference count > 1 (i.e. if the buffer is shared). - void* Modify(); - - /** - * \name Access - */ - //@{ - - /** Retrieve the buffer pointer. - * \return The buffer pointer. - */ - const void * Access() const; - - /** Retrieve the buffer size - * \return The buffer size. - */ - int Size() const; - //@} - - //! Free the memory if this blob is the last one to hold it. - void Clear(); - -protected: - int* mRefCount; - void* mData; - int mSize; -}; - -/** FBX SDK date&time class. - * Property used to store date and time information; not related to a FbxTime, which is - * used for film-related operations. - * The date and time property does not make any provisions for UTC, GMT or local - * zones; this is entirely up to client code to know what they are dealing with. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDateTime -{ -public: - /** - *\name Constructors - */ - //@{ - //! Default constructor. Set attributes to 0. - FbxDateTime(); - - /** Constructor. - * \param pDay Day - * \param pMonth Month - * \param pYear Year - * \param pHour Hour - * \param pMin Minute - * \param pSec Second - * \param pMillisecond Millisecond - * \remark If one or more argument is invalid, the object is reset to 0. - */ - FbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond=0); - //@} - - /** - * \name Boolean operation - */ - //@{ - /** Equivalence operator. - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are equal, \c false otherwise. - */ - bool operator==(const FbxDateTime& pRHS) const; - - /** Non-equivalence operator - *\param pRHS The date&time to be compared with this date&time. - *\return \c True, if the two date&time are not equal, \c false otherwise. - */ - bool operator!=(const FbxDateTime& pRHS) const; - //@} - - //! Set the attributes to 0. - void Clear(); - - /** Validates each field is within a normal range (month is 1-12, etc). - * \return \c True, if each field is within a normal range, \c false otherwise. - */ - bool isValid() const; - - /** - * \name Access - */ - //@{ - /** Set the date. - * \param pDay Day to be set. - * \param pMonth Month to be set. - * \param pYear Year to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setDate(int pDay, int pMonth, int pYear); - - /** Set the time. - * \param pHour Hour to be set. - * \param pMin Minute to be set. - * \param pSec Second to be set. - * \param pMillisecond Millisecond to be set. - * \remark If one or more argument is invalid, the object is reset to 0. - */ - void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0); - //@} - - /** - * \name Operation with string - */ - //@{ - /** Get the string format from this date&time. - * \return The string format got from this date&time. - */ - FbxString toString() const; - - /** Get date&time from the string format. - * \return \c True, if get date&time from the string format successfully, \c false otherwise. - * \remarks ! This will only work with the format returned by toString(); if the format - * is not the same will return 'false' and the content of this object will - * remain unchanged. - */ - bool fromString(const char*); - //@} - - /** Get date&time from current date&time of GMT. - * \return The date&time equal to current date&time of GMT. - */ - static FbxDateTime currentDateTimeGMT(); - -private: - FbxShort mMillisecond; // 0-999 - FbxShort mYear; // No check - - FbxChar mMonth; // 1-12 - FbxChar mDay; // 1-31; no check with regards to the month - FbxChar mHour; // 0-23 - FbxChar mMinute; // 0-59 - FbxChar mSecond; // 0-59 -}; - -/** FBX SDK distance class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDistance -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxDistance(); - - /** Constructor with default values. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - */ - FbxDistance(float pValue, FbxSystemUnit pUnit); - - /** Constructor. - * \param pValue Value of distance using the measurement unit. - * \param pUnit Unit of measurement. - * \remarks This constructor will convert string to FbxSystemUnit. - */ - FbxDistance(float pValue, const char* pUnit); - - //! Destructor. - ~FbxDistance(); - //@} - - /** Assign operator - * \param pValue The distance to be assigned to this distance. - * \return This distance. - */ - FbxDistance& operator=(const FbxDistance& pValue); - - /** - * \name boolean operation - */ - //@{ - /** Equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are equal, \c false otherwise. - */ - bool operator==(const FbxDistance& pRHS) const; - - /** Non-equivalence operator. - * \param pRHS The distance to be compared with this distance. - * \return \c True, if the two distances are unequal, \c false otherwise. - */ - bool operator!=(const FbxDistance& pRHS) const; - //@} - - const FbxString unitName() const; - - /** - * \name Access - */ - //@{ - /** Retrieve the measurement unit - * \return The measure unit of the distance. - */ - const FbxSystemUnit unit() const; - - /** Retrieve the distance value - * \return The value of the distance in the defined measurement unit. - */ - float value() const; - //@} - - /** Get the value of distance when converting this measurement unit to inch. - * \return The value of distance when converting this measurement unit to inch. - */ - float internalValue() const; - - /** Get the value of distance when converting this measurement unit to the specified measurement unit. - * \param pUnit The measurement unit to be converted to. - * \return The value of distance when using the specified measurement unit. - */ - float valueAs(const FbxSystemUnit& pUnit) const; - -private: - float mValue; - FbxSystemUnit mUnit; -}; - -/** Retrieve a type enumeration memory footprint size -* \param pType The type enumeration -* \return The size of this type in memory */ -FBXSDK_DLL size_t FbxTypeSizeOf(const EFbxType pType); - -/** Retrieve a type enumeration component count -* \param pType The type enumeration -* \return The number of component used by this type */ -FBXSDK_DLL size_t FbxTypeComponentCount(const EFbxType pType); - -// Type management for properties -inline EFbxType FbxTypeOf(const FbxChar&){ return eFbxChar; } -inline EFbxType FbxTypeOf(const FbxUChar&){ return eFbxUChar; } -inline EFbxType FbxTypeOf(const FbxShort&){ return eFbxShort; } -inline EFbxType FbxTypeOf(const FbxUShort&){ return eFbxUShort; } -inline EFbxType FbxTypeOf(const FbxUInt&){ return eFbxUInt; } -inline EFbxType FbxTypeOf(const FbxLongLong&){ return eFbxLongLong; } -inline EFbxType FbxTypeOf(const FbxULongLong&){ return eFbxULongLong; } -inline EFbxType FbxTypeOf(const FbxHalfFloat&){ return eFbxHalfFloat; } -inline EFbxType FbxTypeOf(const FbxBool&){ return eFbxBool; } -inline EFbxType FbxTypeOf(const FbxInt&){ return eFbxInt; } -inline EFbxType FbxTypeOf(const FbxFloat&){ return eFbxFloat; } -inline EFbxType FbxTypeOf(const FbxDouble&){ return eFbxDouble; } -inline EFbxType FbxTypeOf(const FbxDouble2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxDouble3&){ return eFbxDouble3; } -inline EFbxType FbxTypeOf(const FbxDouble4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDouble4x4&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxVector2&){ return eFbxDouble2; } -inline EFbxType FbxTypeOf(const FbxVector4&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxQuaternion&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxAMatrix&){ return eFbxDouble4x4; } -inline EFbxType FbxTypeOf(const FbxString&){ return eFbxString; } -inline EFbxType FbxTypeOf(const FbxTime&){ return eFbxTime; } -inline EFbxType FbxTypeOf(const FbxReference&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxBlob&){ return eFbxBlob; } -inline EFbxType FbxTypeOf(const FbxColor&){ return eFbxDouble4; } -inline EFbxType FbxTypeOf(const FbxDistance&){ return eFbxDistance; } -inline EFbxType FbxTypeOf(const FbxDateTime&){ return eFbxDateTime; } - -template inline EFbxType FbxTypeOf(const T&){ FBX_ASSERT_NOW("Unknown type!"); return eFbxUndefined; } - -bool FBXSDK_DLL FbxTypeCopyStr(FbxDouble& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxBool& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUChar& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUShort& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxUInt& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxLongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxULongLong& pDst, const FbxString& pSrc); -bool FBXSDK_DLL FbxTypeCopyStr(FbxHalfFloat& pDst, const FbxString& pSrc); - -// Copy types and conversions -template inline bool FbxTypeCopy(T1&, const T2&){ FBX_ASSERT_NOW("Incompatible type assignment!" ); return false; } - -//! Same type conversion -inline bool FbxTypeCopy(FbxChar& pDst, const FbxChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxUChar& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUShort& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxLongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxULongLong& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxBool& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxInt& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxFloat& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble2& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4x4& pDst, const FbxDouble4x4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxString& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxTime& pDst, const FbxTime& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxReference& pDst, const FbxReference& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBlob& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDistance& pDst, const FbxDistance& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxDateTime& pSrc){ pDst = pSrc; return true; } - -//To FbxBool -inline bool FbxTypeCopy(FbxBool& pDst, const FbxChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxUInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxLongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxULongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxHalfFloat& /*pSrc */){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxFloat& pSrc){ pDst = pSrc == 0.f ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxDouble& pSrc){ pDst = pSrc == 0. ? false : true; return true; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxChar -inline bool FbxTypeCopy(FbxChar& pDst, const FbxUChar& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxBool& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxInt& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxFloat& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxDouble& pSrc){ pDst = (FbxChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUChar -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxChar& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxBool& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxInt& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxFloat& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxDouble& pSrc){ pDst = (FbxUChar)pSrc; return true; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxShort -inline bool FbxTypeCopy(FbxShort& pDst, const FbxChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxUChar& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxBool& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxInt& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxFloat& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxDouble& pSrc){ pDst = (FbxShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUShort -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxShort& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxBool& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxInt& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxFloat& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxDouble& pSrc){ pDst = (FbxUShort)pSrc; return true; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxInt -inline bool FbxTypeCopy(FbxInt& pDst, const FbxChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUChar& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUShort& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxUInt& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxULongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxBool& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxFloat& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxDouble& pSrc){ pDst = (FbxInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxUInt -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxULongLong& pSrc) { pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxBool& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxInt& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxFloat& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxDouble& pSrc){ pDst = (FbxUInt)pSrc; return true; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxLongLong -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxULongLong& pSrc) { pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxBool& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxLongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxULongLong -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxLongLong& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxBool& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxULongLong)pSrc; return true; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxHalfFloat -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxLongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxULongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxBool& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxFloat& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDouble& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDistance& pSrc){ FbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; } -inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxFloat -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc.value() ; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxBool& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDouble& pSrc){ pDst = (FbxFloat)pSrc; return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } -inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble2& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble3& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4x4& pSrc){ pDst = (FbxDouble)pSrc[0][0]; return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxTime& pSrc){ pDst = (FbxDouble)pSrc.GetSecondDouble(); return true; } -inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } - -//To FbxDouble2 -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } - -//To FbxDouble3 -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDouble4 -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxString -inline bool FbxTypeCopy(FbxString& pDst, const FbxChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUChar& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUShort& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxUInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxLongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxULongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxHalfFloat& pSrc){ pDst=FbxString((float)pSrc.value()); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBool& pSrc){ pDst=pSrc ? "true" : "false"; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxInt& pSrc){ pDst=FbxString((int)pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxFloat& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble& pSrc){ pDst=FbxString(pSrc); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble2& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble3& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2])+","+FbxString(pSrc[3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4x4& pSrc){ pDst=FbxString(pSrc[0][0])+","+FbxString(pSrc[0][1])+","+FbxString(pSrc[0][2])+","+FbxString(pSrc[0][3]); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxTime& pSrc){ char lTimeStr[128]; pSrc.GetTimeString(lTimeStr, FbxUShort(128)); pDst=lTimeStr; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxReference& /*pSrc*/){ pDst=""; return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxBlob& /*pSrc*/){ pDst=""; return true; } // Or convert to ASCII-85? -inline bool FbxTypeCopy(FbxString& pDst, const FbxDistance& pSrc){ pDst= FbxString(pSrc.value()) + " " +pSrc.unitName(); return true; } -inline bool FbxTypeCopy(FbxString& pDst, const FbxDateTime& pSrc){ pDst= pSrc.toString(); return true; } - -//To FbxBlob -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxLongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxULongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxHalfFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBool& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble2& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble3& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4x4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxString& pSrc) -{ - bool lCastable = pSrc.GetLen() == pSrc.GetLen(); - FBX_ASSERT( lCastable ); - if( lCastable ) - pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen()); - return lCastable; -} -inline bool FbxTypeCopy(FbxBlob& pDst, const FbxTime& pSrc){ FbxLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDistance -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxString& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } - -//To FbxDateTime -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxString& pSrc){ return pDst.fromString(pSrc); } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } -inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } - -template inline bool FbxTypeCopy(T& pDst, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -template inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const T& pSrc) -{ - switch( pDstType ) - { - case eFbxChar: return FbxTypeCopy(*(FbxChar*)pDst, pSrc); - case eFbxUChar: return FbxTypeCopy(*(FbxUChar*)pDst, pSrc); - case eFbxShort: return FbxTypeCopy(*(FbxShort*)pDst, pSrc); - case eFbxUShort: return FbxTypeCopy(*(FbxUShort*)pDst, pSrc); - case eFbxUInt: return FbxTypeCopy(*(FbxUInt*)pDst, pSrc); - case eFbxLongLong: return FbxTypeCopy(*(FbxLongLong*)pDst, pSrc); - case eFbxULongLong: return FbxTypeCopy(*(FbxULongLong*)pDst, pSrc); - case eFbxHalfFloat: return FbxTypeCopy(*(FbxHalfFloat*)pDst, pSrc); - case eFbxBool: return FbxTypeCopy(*(FbxBool*)pDst, pSrc); - case eFbxInt: return FbxTypeCopy(*(FbxInt*)pDst, pSrc); - case eFbxFloat: return FbxTypeCopy(*(FbxFloat*)pDst, pSrc); - case eFbxDouble: return FbxTypeCopy(*(FbxDouble*)pDst, pSrc); - case eFbxDouble2: return FbxTypeCopy(*(FbxDouble2*)pDst, pSrc); - case eFbxDouble3: return FbxTypeCopy(*(FbxDouble3*)pDst, pSrc); - case eFbxDouble4: return FbxTypeCopy(*(FbxDouble4*)pDst, pSrc); - case eFbxDouble4x4: return FbxTypeCopy(*(FbxDouble4x4*)pDst, pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(*(FbxEnum*)pDst, pSrc); - case eFbxString: return FbxTypeCopy(*(FbxString*)pDst, pSrc); - case eFbxTime: return FbxTypeCopy(*(FbxTime*)pDst, pSrc); - case eFbxBlob: return FbxTypeCopy(*(FbxBlob*)pDst, pSrc); - case eFbxDistance: return FbxTypeCopy(*(FbxDistance*)pDst, pSrc); - case eFbxDateTime: return FbxTypeCopy(*(FbxDateTime*)pDst, pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const void* pSrc, EFbxType pSrcType) -{ - switch( pSrcType ) - { - case eFbxChar: return FbxTypeCopy(pDst, pDstType, *(FbxChar*)pSrc); - case eFbxUChar: return FbxTypeCopy(pDst, pDstType, *(FbxUChar*)pSrc); - case eFbxShort: return FbxTypeCopy(pDst, pDstType, *(FbxShort*)pSrc); - case eFbxUShort: return FbxTypeCopy(pDst, pDstType, *(FbxUShort*)pSrc); - case eFbxUInt: return FbxTypeCopy(pDst, pDstType, *(FbxUInt*)pSrc); - case eFbxLongLong: return FbxTypeCopy(pDst, pDstType, *(FbxLongLong*)pSrc); - case eFbxULongLong: return FbxTypeCopy(pDst, pDstType, *(FbxULongLong*)pSrc); - case eFbxHalfFloat: return FbxTypeCopy(pDst, pDstType, *(FbxHalfFloat*)pSrc); - case eFbxBool: return FbxTypeCopy(pDst, pDstType, *(FbxBool*)pSrc); - case eFbxInt: return FbxTypeCopy(pDst, pDstType, *(FbxInt*)pSrc); - case eFbxFloat: return FbxTypeCopy(pDst, pDstType, *(FbxFloat*)pSrc); - case eFbxDouble: return FbxTypeCopy(pDst, pDstType, *(FbxDouble*)pSrc); - case eFbxDouble2: return FbxTypeCopy(pDst, pDstType, *(FbxDouble2*)pSrc); - case eFbxDouble3: return FbxTypeCopy(pDst, pDstType, *(FbxDouble3*)pSrc); - case eFbxDouble4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4*)pSrc); - case eFbxDouble4x4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4x4*)pSrc); - case eFbxEnumM: - case eFbxEnum: return FbxTypeCopy(pDst, pDstType, *(FbxEnum*)pSrc); - case eFbxString: return FbxTypeCopy(pDst, pDstType, *(FbxString*)pSrc); - case eFbxTime: return FbxTypeCopy(pDst, pDstType, *(FbxTime*)pSrc); - case eFbxBlob: return FbxTypeCopy(pDst, pDstType, *(FbxBlob*)pSrc); - case eFbxDistance: return FbxTypeCopy(pDst, pDstType, *(FbxDistance*)pSrc); - case eFbxDateTime: return FbxTypeCopy(pDst, pDstType, *(FbxDateTime*)pSrc); - - case eFbxReference: - FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); - break; - - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); - break; - } - return false; -} - -/** Creates a fbx primitive type and initializes its memory. - * \param pType The type of object to create. - * \return A pointer to the new primitive object. Note that the caller owns the returned object. - * The pointer returned is NULL if pType is eFbxUndefined or an unknown type. - */ -FBXSDK_DLL void* FbxTypeAllocate(const EFbxType pType); - -/** Destroys an fbx primitive type. If the return value is true - * the memory pointed to by pData has been deleted and should - * no longer be accessed. - * \param pType The type of object being deleted - * \param pData Pointer to the object being deleted. - * \return true if the object was destroyed, false otherwise. - */ -FBXSDK_DLL bool FbxTypeDeallocate(const EFbxType pType, void* pData); - -/** Compare two values of the same type - * \param pA first value - * \param pB second value - * \param pType The data type of both values - * \return \c true if equal, \c false otherwise - */ -FBXSDK_DLL bool FbxTypeCompare(const void* pA, const void* pB, const EFbxType pType); - -#include - -#endif /* _FBXSDK_CORE_PROPERTY_TYPES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxquery.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxquery.h deleted file mode 100755 index f643f03..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxquery.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquery.h -#ifndef _FBXSDK_CORE_QUERY_H_ -#define _FBXSDK_CORE_QUERY_H_ - -#include - -#include -#include -#include -#include - -#include - -#define FBXSDK_QUERY_UNIQUE_ID 0x14000000 - -class FbxProperty; - -/** Base class to manage query. A query contains a filter and reference ID, which will be used to search and retrieve objects. -* The derived query classes are used to create FbxCriteria. -* \nosubgrouping */ -class FBXSDK_DLL FbxQuery -{ -public: - //! Get unique filter Id - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID; } - - /** Judge if the given property is valid. - * \param pProperty The given property. - * \return \c true always, not implemented. */ - virtual bool IsValid(const FbxProperty& pProperty) const; - - /** This compares whether two FbxQuery are the same, NOT whether the query matches or not. It's strictly the equivalent of an operator==, but virtual. - * \param pOtherQuery The given FbxQuery */ - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - - //! Add one to ref count. - void Ref(); - - //! Minus one to ref count, if ref count is zero, delete this query object. - void Unref(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxQuery(); - virtual ~FbxQuery(); - -private: - class InternalFilter : public FbxConnectionPointFilter - { - public: - InternalFilter(FbxQuery* pQuery); - ~InternalFilter(); - - public: - FbxConnectionPointFilter* Ref(); - void Unref(); - FbxInt GetUniqueId() const { return mQuery->GetUniqueId(); } - bool IsValid(FbxConnectionPoint* pConnect) const; - bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; - - FbxQuery* mQuery; - }; - - InternalFilter mFilter; - int mRefCount; - - FBXSDK_FRIEND_NEW(); - friend class FbxProperty; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Defines a filtering criteria for a query of objects, connections and properties, so that only those satisfying the criteria are -* affected by the query. Some examples of kinds of criteria are object type, connection type, or property. Criteria can be combined -* using logical operators such as "and" and "or". -* \note -* Objects are basic elements in FBX. Each of them has a hierarchy type and some properties. Objects and properties can be connected -* through a connection to represent a relationship between them. (e.g. child-parent, container membership, reference, etc.,). In a -* query, you could select object or properties based on these criteria. -* Here are some examples: -* \code -* FbxObject* lObject = FbxObject::Create(lManager, "Object"); -* int lSrcLightCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(FbxLight::ClassId)); -* int lSrcDeformerCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectTypeStrict(FbxDeformer::ClassId)); -* int lSrcPropertyCount = lObject->RootProperty.GetSrcCount(FbxCriteria::IsProperty()); -* \endcode -* \see FbxQuery -* \see FbxProperty::GetSrcObjectCount(const FbxCriteria&) const -* \see FbxCollection::GetMemberCount(const FbxCriteria&) const -* \nosubgrouping */ -class FBXSDK_DLL FbxCriteria -{ -public: - /** Creates a new query criteria that only selects objects which have a specific - * class ID or derive from a class with a specific class ID. - * \param pClassId The base type class ID */ - static FbxCriteria ObjectType(const FbxClassId& pClassId); - - /** Creates a new query criteria that only selects objects which have a specific class ID. - * \param pClassId The type class ID */ - static FbxCriteria ObjectTypeStrict(const FbxClassId& pClassId); - - //! Creates a new query criteria that only selects properties. - static FbxCriteria IsProperty(); - - /** Gets a logical conjunction (and) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator&&(const FbxCriteria& pCriteria) const; - - /** Gets a logical disjunction (or) criteria from this and the specified criteria. - * \param pCriteria The specified criteria */ - FbxCriteria operator||(const FbxCriteria& pCriteria) const; - - //! Returns a negated version of the criteria. - FbxCriteria operator!() const; - - /** Retrieves the query. - * \return The query of this criteria */ - FbxQuery* GetQuery() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxCriteria(); - FbxCriteria(const FbxCriteria& pCriteria); - FbxCriteria(FbxQuery* pQuery); - ~FbxCriteria(); - - FbxCriteria& operator=(const FbxCriteria& pCriteria); - -private: - FbxQuery* mQuery; - - static void FreeGlobalCache(); - - FBXSDK_FRIEND_NEW(); - friend class FbxManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Functor to compare FbxCriteria -struct FbxCriteriaCompare -{ - inline int operator()(const FbxCriteria& pKeyA, const FbxCriteria& pKeyB) const - { - const FbxQuery* lKeyA = pKeyA.GetQuery(); - const FbxQuery* lKeyB = pKeyB.GetQuery(); - return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); - } -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FBXSDK_DLL FbxQueryOperator : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - enum EType {eAND, eOR}; - - static FbxQueryOperator* Create(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID+1; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperator(FbxQuery* pA, EType pOperator, FbxQuery* pB); - virtual ~FbxQueryOperator(); - -private: - FbxQuery *mA, *mB; - EType mOperator; -}; - -class FBXSDK_DLL FbxQueryOperatorUnary : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryOperatorUnary* Create(FbxQuery* pA); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+2; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryOperatorUnary(FbxQuery* pA); - virtual ~FbxQueryOperatorUnary(); - -private: - FbxQuery* mA; -}; - -class FBXSDK_DLL FbxQueryClassId : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryClassId* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+3; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryClassId(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsA : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsA* Create(const FbxClassId& pClassId); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+4; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsA(const FbxClassId& pClassId); - -private: - FbxClassId mClassId; -}; - -class FBXSDK_DLL FbxQueryIsProperty : public FbxQuery -{ -public: - FBXSDK_FRIEND_NEW(); - - static FbxQueryIsProperty* Create(); - virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+5; } - virtual bool IsValid(const FbxProperty& pProperty) const; - virtual bool IsEqual(FbxQuery* pOtherQuery) const; - -protected: - FbxQueryIsProperty(); -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_CORE_QUERY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxqueryevent.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxqueryevent.h deleted file mode 100755 index 47c5aaf..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxqueryevent.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxqueryevent.h -#ifndef _FBXSDK_CORE_QUERY_EVENT_H_ -#define _FBXSDK_CORE_QUERY_EVENT_H_ - -#include - -#include - -#include - -/** A query event is something that is emitted by an entity, with the goal of being filled by someone that listen to it. -* You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return -* it to you with the right information in it. A query event is emitted, and plug-in who are listening to that type of query, -* fill the data that can be accessed by the query emitter. -*/ -template class FbxQueryEvent : public FbxEvent > -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * \param pData The requested data. - */ - explicit FbxQueryEvent(QueryT* pData):mData(pData){} - - /** Accessor to a mutable reference to the data. Event are usually const and can't be modified by listener. - * This special type of event can have is content modified via this accessor. - * \return A mutable reference the requested data. - */ - QueryT& GetData()const { return *mData; } - //@} - -private: - mutable QueryT* mData; - -private: - virtual const char* GetEventName() const { FBX_ASSERT(false); return ""; } - static const char* FbxEventName() { FBX_ASSERT(false); return ""; } - friend class FbxEvent< FbxQueryEvent >; -}; - -#include - -#endif /* _FBXSDK_CORE_QUERY_EVENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h deleted file mode 100755 index 5ec9854..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingdirectory.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingdirectory.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -class FbxPluginHandle; - -//! A plug-in loading strategy that loads all DLLs with a specific extension from a specific directory. When this class is destroyed all of the plug-ins are unloaded. -class FBXSDK_DLL FbxScopedLoadingDirectory : public FbxLoadingStrategy -{ -public: - /** Constructor, which also load plug-ins in the folder specified. - * \param pDirectoryPath The directory path. - * \param pPluginExtension The plug-in extension. */ - FbxScopedLoadingDirectory(const char* pDirectoryPath, const char* pPluginExtension); - - /** Destructor. Unload plug-ins. */ - virtual ~FbxScopedLoadingDirectory(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxString mDirectoryPath; - FbxString mExtension; - - FbxArray mPluginHandles; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h deleted file mode 100755 index ead5d0f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxscopedloadingfilename.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscopedloadingfilename.h -#ifndef _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ -#define _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include -#include - -#include - -/** - * A plug-in loading strategy that loads a single DLL by specifying the file name in the constructor, and unloads the DLL in its destructor. - */ -class FBXSDK_DLL FbxScopedLoadingFileName : public FbxLoadingStrategy -{ -public: - /** - *\name Public interface - */ - //@{ - /** Constructor. - * Load plug-in. - * \param pPath The file path. - */ - explicit FbxScopedLoadingFileName(const char* pPath); - - /** Destructor. - * Unload plug-in. - */ - virtual ~FbxScopedLoadingFileName(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool SpecificLoad(FbxPluginData& pData); - virtual void SpecificUnload(FbxPluginData& pData); - - FbxModule mInstance; - FbxString mPath; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxstream.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxstream.h deleted file mode 100755 index ba2cbd0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxstream.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstream.h -#ifndef _FBXSDK_CORE_STREAM_H_ -#define _FBXSDK_CORE_STREAM_H_ - -#include - -#include - -#include - -/** Abstract class for implementing I/O operations through a stream of data. -* For instance, it can be used to read data from a memory source, thus making it possible to import files from memory. However, -* for the time being, the FbxStream class is only supported with FBX files. -*/ -class FBXSDK_DLL FbxStream -{ -public: - /** Current stream state. */ - enum EState - { - eClosed, //!< The stream is closed. - eOpen, //!< The stream is open. - eEmpty //!< The stream is empty. - }; - - /** Query the current state of the stream. */ - virtual EState GetState() = 0; - - /** Open the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Open(void* pStreamData) = 0; - - /** Close the stream. - * \return True if successful. - * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ - virtual bool Close() = 0; - - /** Empties the internal data of the stream. - * \return True if successful. */ - virtual bool Flush() = 0; - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. */ - virtual int Write(const void* /*pData*/, int /*pSize*/) = 0; - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. */ - virtual int Read(void* /*pData*/, int /*pSize*/) const = 0; - - /** Read a string from the stream. - * The default implementation is written in terms of Read() but does not cope with DOS line endings. - * Subclasses may need to override this if DOS line endings are to be supported. - * \param pBuffer Pointer to the memory block where the read bytes are stored. - * \param pMaxSize Maximum number of bytes to be read from the stream. - * \param pStopAtFirstWhiteSpace Stop reading when any whitespace is encountered. Otherwise read to end of line (like fgets()). - * \return pBuffer, if successful, else NULL. - * \remark The default implementation terminates the \e pBuffer with a null character and assumes there is enough room for it. - * For example, a call with \e pMaxSize = 1 will fill \e pBuffer with the null character only. */ - virtual char* ReadString(char* pBuffer, int pMaxSize, bool pStopAtFirstWhiteSpace=false); - - /** If not specified by KFbxImporter::Initialize(), the importer will ask - * the stream to select an appropriate reader ID to associate with the stream. - * FbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetReaderID() const = 0; - - /** If not specified by KFbxExporter::Initialize(), the exporter will ask - * the stream to select an appropriate writer ID to associate with the stream. - * KFbxIOPluginRegistry can be used to locate id by extension or description. - * Return -1 to allow FBX to select an appropriate default. */ - virtual int GetWriterID() const = 0; - - /** Adjust the current stream position. - * \param pSeekPos Pre-defined position where offset is added (FbxFile::eBegin, FbxFile::eCurrent:, FbxFile::eEnd) - * \param pOffset Number of bytes to offset from pSeekPos. */ - virtual void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos)=0; - - /** Get the current stream position. - * \return Current number of bytes from the beginning of the stream. */ - virtual long GetPosition() const = 0; - - /** Set the current stream position. - * \param pPosition Number of bytes from the beginning of the stream to seek to. */ - virtual void SetPosition(long pPosition)=0; - - /** Return 0 if no errors occurred. Otherwise, return 1 to indicate - * an error. This method will be invoked whenever FBX needs to verify - * that the last operation succeeded. */ - virtual int GetError() const = 0; - - /** Clear current error condition by setting the current error value to 0. */ - virtual void ClearError() = 0; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStream(){}; - virtual ~FbxStream(){}; - - int Write(const char* pData, int pSize){ return Write((void*)pData, pSize); } - int Write(const int* pData, int pSize){ return Write((void*)pData, pSize); } - int Read(char* pData, int pSize) const { return Read((void*)pData, pSize); } - int Read(int* pData, int pSize) const { return Read((void*)pData, pSize); } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_STREAM_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxsymbol.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxsymbol.h deleted file mode 100755 index e4aeaa0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxsymbol.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsymbol.h -#ifndef _FBXSDK_CORE_SYMBOL_H_ -#define _FBXSDK_CORE_SYMBOL_H_ - -#include - -#include -#include - -#include - -/** Defines a symbol string. A symbol string is a string that is unique and stored in a global symbol table. -* \nosubgrouping */ -class FBXSDK_DLL FbxSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - * \param pRealm The real value for this symbol. - */ - FbxSymbol(const char* pName, const char* pRealm); - - //! Destructor. - ~FbxSymbol(); - //@} - - /** - * \name Access function. - */ - //@{ - /** - * Get ID in global symbol table. - * \return Symbol ID in global symbol table. - */ - unsigned int GetID() const; - //@} - - /** - * \name Symbol comparison - */ - //@{ - /** Equality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator==(FbxSymbol const& pSymbol) const; - - /** Inequality operator. - * \param pSymbol The symbol to be compared. - */ - bool operator!=(FbxSymbol const& pSymbol) const; - //@} - -private: - unsigned int mID; -}; - -typedef FbxMap< FbxString, int, FbxStringCompare > FbxStringSymbolMap; - - -/** This class is to mark a string as symbol. - * String Symbol only has its name. - * /remarks Each symbol is unique. That means there are no symbols which have the same name. -* \nosubgrouping */ -class FBXSDK_DLL FbxStringSymbol -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - //! Default constructor. - FbxStringSymbol(); - - /** Constructor. - * Construct a symbol and add it to global symbol table. - * \param pName Symbol name. - */ - FbxStringSymbol(const char* pName); - - //! Copy constructor. - FbxStringSymbol(const FbxStringSymbol& pOther); - - //! Destructor. - ~FbxStringSymbol(); - //@} - - //! Cast operator to const char* type. - inline operator const char*() const { return mItem ? ((const char*) mItem->GetKey()) : NULL; } - - - /** Determine the symbol empty or not. - * \return \c true if empty. \c false otherwise. - */ - inline bool IsEmpty() const - { - return !mItem || mItem->GetKey().IsEmpty(); - } - - //! Static function to allocate global string symbol map. - static void AllocateGlobalStringSymbolMap(); - - //! Static function to deallocate global string symbol map. - static void FreeGlobalStringSymbolMap(); - - /** Assignment operator. - * \param pName The symbol value. - * \return The self after assignment. - */ - FbxStringSymbol& operator=(const char* pName); - -private: - FbxStringSymbolMap::RecordType* mItem; -}; - -#include - -#endif /* _FBXSDK_CORE_SYMBOL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxsystemunit.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxsystemunit.h deleted file mode 100755 index 2d2550e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxsystemunit.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsystemunit.h -#ifndef _FBXSDK_CORE_SYSTEM_UNIT_H_ -#define _FBXSDK_CORE_SYSTEM_UNIT_H_ - -#include - -#include -#include - -#include - -class FbxAMatrix; -class FbxScene; -class FbxNode; -class FbxAnimCurveNode; - -/** \brief This class describes the units of measurement used within a particular scene. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSystemUnit -{ -public: - - /** Struct to define various options that you can use to convert the system unit of a scene. - * The default values are: - * mConvertRrsNodes = true - * mConvertLimits = true - * mConvertClusters = true - * mConvertLightIntensity = true - * mConvertPhotometricLProperties = true - * mConvertCameraClipPlanes = true - * - * The default configuration have been tested to give the best conversion results in the majority of the case. - * \remark Changing any of these values will have a direct impact on the whole scene behavior. - */ - struct ConversionOptions - { - //! This flag indicates whether or not to convert the nodes that do not inherit their parent's scale. - bool mConvertRrsNodes; - - //! This flag indicates whether or not to convert limits. - bool mConvertLimits; - - //! This flag indicates whether or not to convert clusters. - bool mConvertClusters; - - //! This flag indicates whether or not to convert the light intensity property. - bool mConvertLightIntensity; - - //! This flag indicates whether or not to convert photometric lights properties. - bool mConvertPhotometricLProperties; - - //! This flag indicates whether or not to convert the cameras clip planes. - bool mConvertCameraClipPlanes; - }; - - FbxSystemUnit(); - - /** Constructor. - * \param pScaleFactor The equivalent number of centimeters in the new system unit. - * For example, an inch unit uses a scale factor of 2.54. - * \param pMultiplier A multiplier factor of pScaleFactor. - */ - FbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0); - - /** Destructor. - */ - ~FbxSystemUnit(); - - //! Predefined system unit for millimeters. - static const FbxSystemUnit mm; - - //! Predefined system unit for decimeters. - static const FbxSystemUnit dm; - - //! Predefined system unit for centimeters. - static const FbxSystemUnit cm; - - //! Predefined system unit for meters. - static const FbxSystemUnit m; - - //! Predefined system unit for kilometers. - static const FbxSystemUnit km; - - //! Predefined system unit for inches. - static const FbxSystemUnit Inch; - - //! Predefined system unit for feet. - static const FbxSystemUnit Foot; - - //! Predefined system unit for miles. - static const FbxSystemUnit Mile; - - //! Predefined system unit for yards. - static const FbxSystemUnit Yard; - - #define FBXSDK_SYSTEM_UNIT_PREDEF_COUNT 9 - - //! Points to a FbxSystemUnit array to store the predefined system units. The array size is FBXSDK_SYSTEM_UNIT_PREDEF_COUNT. - static const FbxSystemUnit *sPredefinedUnits; - - //! Stores the default conversion options. - static const ConversionOptions DefaultConversionOptions; - - /** Converts a scene from its system units to this system unit. - * \param pScene The scene to convert. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertScene( FbxScene* pScene, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts the child (or children) of the given node from the system unit to this system unit. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene to which the pRoot node belongs. It also does not adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The given node. - * \param pSrcUnit The source system unit. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. - */ - void ConvertChildren( FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Converts a scene from its system unit to this system unit, using the specified - * Fbx_Root node. This method is provided for backwards compatibility only - * and instead you should use ConvertScene( FbxScene* , const ConversionOptions& ) whenever possible. - * \param pScene The scene to convert. - * \param pFbxRoot The Fbx_Root node to use for conversion. - * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions - */ - void ConvertScene( FbxScene* pScene, FbxNode* pFbxRoot, const ConversionOptions& pOptions = DefaultConversionOptions ) const; - - /** Returns the system unit's scale factor, relative to centimeters. - * This factor scales system unit values to centimeters. If you want to scale values to centimeters, use this value. - * Ignore the "multiplier" (returned by GetMultiplier()) value. - * \return The the system unit's scale factor, relative to centimeters. - */ - double GetScaleFactor() const; - - /** Returns a unit label for the current scale factor. - * \param pAbbreviated If \c true, returns abbreviated string. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString(bool pAbbreviated = true) const; - - /** Returns a unit label for the current scale factor. - * The first letter of the label is in upper case and the label should be pluralized. - * \return The unit label for the current scale factor. - */ - FbxString GetScaleFactorAsString_Plurial() const; - - /** Returns the multiplier factor of the system unit. - */ - double GetMultiplier() const; - - /** Equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxSystemUnit& pOther) const; - - /** Non-equivalence operator. - * \param pOther Another system unit compared with this system unit. - * \return \c True if unequal, \c false otherwise. - */ - bool operator!=(const FbxSystemUnit& pOther) const; - - /** Assignment operation. - * \param pSystemUnit Unit system assigned to this one. - */ - FbxSystemUnit& operator=(const FbxSystemUnit& pSystemUnit); - - /** Returns the conversion factor from this system unit to the target system unit, excluding the multiplier factor. - * \param pTarget The target system unit. - */ - double GetConversionFactorTo( const FbxSystemUnit& pTarget ) const; - - /** Returns the conversion factor from the source system unit to this system unit, excluding the multiplier factor. - * \param pSource The source system unit. - */ - double GetConversionFactorFrom( const FbxSystemUnit& pSource ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ApplyMultiplier(FbxNode* pRoot, bool pSubChildrenOnly) const; - void ConvertSTProperties(FbxArray& pNodes, double pConversionFactor) const; - void ConvertSProperty(FbxArray& pNodes, double pConversionFactor) const; - void ConvertAnimCurveNode(FbxArray& pFCurves, double pConversionFactor) const; - double GetConversionFactor(double pTargetScaleFactor, double pSourceScaleFactor) const; - void AdjustPivots(FbxNode* pNode, double pConversionFactor, FbxAMatrix& pOriginalGlobalM ) const; - void AdjustLimits(FbxNode* pNode, double pConversionFactor) const; - void AdjustPoses(FbxScene* pScene, double pConversionFactor) const; - void AdjustCluster(FbxNode* pNode, double pConversionFactor) const; - void AdjustLightIntensity(FbxNode* pNode, const double pConversionFactor) const; - void AdjustPhotometricLightProperties(FbxNode* pNode, const double pConversionFactor) const; - void AdjustCameraClipPlanes(FbxNode* pNode, const double pConversionFactor) const; - void ConvertChildren(FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const ConversionOptions& pOptions) const; - - double mScaleFactor; - double mMultiplier; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_SYSTEM_UNIT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/fbxxref.h b/sdk/Windows/2019.2/include/fbxsdk/core/fbxxref.h deleted file mode 100755 index f9304c4..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/fbxxref.h +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxxref.h -#ifndef _FBXSDK_CORE_XREF_H_ -#define _FBXSDK_CORE_XREF_H_ - -#include - -#include -#include - -#include - -class FbxProperty; -class FbxDocument; -class FbxXRefManagerProject; - -/** This class manages external references to files. - * \nosubgrouping - */ -class FBXSDK_DLL FbxXRefManager -{ -public: - //! Default constructor. - FbxXRefManager(); - - //! Destructor. - virtual ~FbxXRefManager(); - - /** - * \name Predefined Project Types - */ - //@{ - - //! This project represents an URL for storing temporary files. - static const char* sTemporaryFileProject; - - //! This project represents an URL for configuration files. - static const char* sConfigurationProject; - - //! This project represents an URL for storing localization files (that is not part of the asset library). - static const char* sLocalizationProject; - - /** This project is used for creating the ".fbm" folders that are used for - * storing embedded resources in FBX files. - * - * When not set, or if the folder is not writable, the ".fbm" - * folder is created alongside the FBX file. - * - * If we cannot write in that folder, we look at the sTemporaryFileProject location. - * If no folder is set in the sTemporaryFileProject location, or it is not - * writable, the operating system's Temp folder becomes the location. - */ - static const char* sEmbeddedFileProject; - //@} - - /** - * \name XRef URL properties - */ - //@{ - /** Returns the number of URLs that are stored in a property. - * \param pProperty The property. - * \return The URL count. - */ - static int GetUrlCount(FbxProperty const &pProperty); - - /** Returns the number of URLs that are stored in a string. - * \param pUrl The string. - * \return The URL count. - */ - - static int GetUrlCount(FbxString const& pUrl); - - /** Checks whether the URL at the given index stored in the property is relative or not. - * \param pProperty The property. - * \param pIndex The URL index. - * \return \c True if the URL is relative, \c false if the URL is not relative. - */ - static bool IsRelativeUrl (FbxProperty const &pProperty,int pIndex); - - /** Returns the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \return The URL - */ - static FbxString GetUrl(FbxProperty const &pProperty,int pIndex); - - /** Tries to resolve the URL stored in the property at the given index. - * \param pProperty The property. - * \param pIndex The URL index. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (FbxProperty const &pProperty,int pIndex,FbxString & pResolvedPath) const; - - /** Tries to resolve the specified URL. - * \param pUrl The specified URL. - * \param pDoc The document whose ".fbm" folder is used to resolve the URL. - * \param pResolvedPath Filled with the resolved path. - * \return \c True if the URL is resolved, return \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl, FbxDocument* pDoc, FbxString& pResolvedPath) const; - //@} - - /** Looks for the first file that matches a specified "pattern", - * which is built as: - * - * if pOptExt is given: prefix*.ext - * If pOptExt is NULL: prefix* - * if pOptExt is "" or ".": prefix*. - * - * Returns the URL of the first matching files. This function cannot be - * used to resolve folders, only files. - * - * If a document is given, we start by looking at the document's ".fbm" folder. - * \param pPrefix The prefix of the pattern. - * \param pOptExt The extension of the pattern. - * \param pDoc The given document. - * \param pResolvedPath Filled with the first matching URL. - * \return \c True if one matching file is found, returns \c false if no matching file is found. - */ - bool GetFirstMatchingUrl(const char* pPrefix, const char* pOptExt, const FbxDocument* pDoc, FbxString& pResolvedPath) const; - - /** - * \name XRef Resolve URL and Projects - */ - //@{ - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pUrl); - - /** Adds an XRef Project. - * Note:Only one URL is associated with a project. Calling - * this on an existing project replaces the project's existing URL. - * \param pName The name of the project - * \param pExtension The extension of the project. - * \param pUrl The URL to be associated with the project. - * \return \c True if the project is added successfully, returns \c false if no project is added. - */ - bool AddXRefProject (const char *pName,const char *pExtension,const char *pUrl); - - /** Adds an XRef project based on the document's EmbeddedUrl - * property if set, if EmbeddedUrl is not set, based on its current URL property. - * \param pDoc The document used to name the project and to specify the URL. - * \return \c True if the project is added successfully, returns \c false if no project is added. - * \remarks The project name is set as the document name and the URL is set as EmbeddedUrl or URL of the document. - */ - bool AddXRefProject (FbxDocument* pDoc); - - /** Removes an XRef Projects. - * \param pName The name of the project to be removed. - * \return \c True if the project is removed successfully, returns \c false if the project with the name does not exist. - */ - bool RemoveXRefProject(const char *pName); - - /** Removes all XRef Projects. - * \return \c True always. - */ - bool RemoveAllXRefProjects(); - - /** Returns the number of XRef Projects. - * \return The number of XRef Projects. - */ - int GetXRefProjectCount() const; - - /** Returns the name of the XRef project at the specified index. - * \param pIndex The XRef project index. - * \return The XRef project name. - */ - const char *GetXRefProjectName(int pIndex) const; - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName); // FIXME: Should be const, will break AV. - - /** Returns the base URL for the given project. - * \param pName The name of the given project - * \return The base URL of the project or returns NULL if the project with the name is not found. - */ - const char* GetXRefProjectUrl(const char* pName) const; - - /** Returns the base URL for the given project. - * \param pIndex The index of the project. - * \return The base URL of the project or NULL if the index is out of bounds. - */ - const char* GetXRefProjectUrl(int pIndex) const; - - /** Checks if a project with the given name is defined in this manager. - * \param pName The name of the project. - * \return \c True if the project is defined in this manager, returns \c false if it isn't defined in this manager. - */ - inline bool HasXRefProject( const char* pName ) { return GetXRefProjectUrl(pName) != NULL; } - - /** Tries to resolve an relative URL - * \param pUrl The relative URL to be resolved. - * \param pResolvePath Filled with the resolved path. - * \return \c True if the URL is resolved, returns \c false if the URL is not resolved. - */ - bool GetResolvedUrl (const char* pUrl,FbxString & pResolvePath) const; - - //@} -private: - FbxArray mProjects; - - static bool UrlExist(const char* pUrl); -}; - -#include - -#endif /* _FBXSDK_CORE_XREF_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h deleted file mode 100755 index 0226327..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxaffinematrix.h +++ /dev/null @@ -1,340 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaffinematrix.h -#ifndef _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ -#define _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ - -#include - -#include - -#include - -/** FBX SDK affine matrix class. - * \nosubgrouping - * Matrices are defined using the Column Major scheme. When a FbxAMatrix represents a transformation (translation, rotation and scale), - * the last row of the matrix represents the translation part of the transformation. - * - * \remarks It is important to realize that an affine matrix must respect a certain structure. To be sure the structure is respected, - * use SetT, SetR, SetS, SetQ, SetTRS or SetTQS. If by mistake bad data is entered in this affine matrix, some functions such as - * Inverse() will yield wrong results. If a matrix is needed to hold values that aren't associate with an affine matrix, please use FbxMatrix instead. - */ -class FBXSDK_DLL FbxAMatrix : public FbxDouble4x4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxAMatrix(); - - /** Copy constructor. - * \param pOther FbxAMatrix copied to this one. - */ - FbxAMatrix(const FbxAMatrix& pOther); - - /** Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. - */ - FbxAMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - //! Destructor. - ~FbxAMatrix(); - //@} - - /** - * \name Access - */ - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Cell [ pX, pY ] value. - */ - double Get(int pY, int pX) const; - - /** Extract translation vector. - * \return Translation vector. - */ - FbxVector4 GetT() const; - - /** Extract rotation vector. - * \return Rotation vector. - * \remarks The returned rotation vector is in Euler angle and the rotation order is XYZ. - */ - FbxVector4 GetR() const; - - /** Extract quaternion vector. - * \return Quaternion vector. - */ - FbxQuaternion GetQ() const; - - /** Extract scale vector. - * \return Scale vector. - */ - FbxVector4 GetS() const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. - */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. - */ - FbxVector4 GetColumn(int pX) const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set matrix's translation. - * \param pT Translation vector. - */ - void SetT(const FbxVector4& pT); - - /** Set matrix's Euler rotation. - * \param pR X, Y and Z rotation values expressed as a vector. - * \remarks The rotation transform is constructed in rotation order XYZ. - */ - void SetR(const FbxVector4& pR); - - /** Set matrix's quaternion. - * \param pQ The new quaternion. - */ - void SetQ(const FbxQuaternion& pQ); - - /** Set matrix's scale. - * \param pS X, Y and Z scaling factors expressed as a vector. - */ - void SetS(const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Rotation vector. - * \param pS Scale vector. - */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion vector. - * \param pS Scale vector. - */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Assignment operator. - * \param pM FbxAMatrix assigned to this one. - */ - FbxAMatrix& operator=(const FbxAMatrix& pM); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return The scaled matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator*(double pValue) const; - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return The divided matrix. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will be set as (0,0,0,1); - */ - FbxAMatrix operator/(double pValue) const; - - /** Multiply matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the multiplication. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator*=(double pValue); - - /** Divide matrix by a scalar value. - * \param pValue Scalar value. - * \return \e this updated with the result of the division. - * \remarks The passed value is not checked. - * This operator operates on the first three rows and columns of the matrix. - * So only the rotation and scaling are scaled, not the translation part. - * After operation, the translation vector will keep original value. - */ - FbxAMatrix& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Multiply matrix by a translation vector. - * \param pVector4 Translation vector. - * \return t' = M * t - */ - FbxVector4 MultT(const FbxVector4& pVector4) const; - - /** Multiply matrix by an Euler rotation vector. - * \param pVector4 Euler Rotation vector. - * \return r' = M * r - */ - FbxVector4 MultR(const FbxVector4& pVector4) const; - - /** Multiply matrix by a quaternion. - * \param pQuaternion Rotation value. - * \return q' = M * q - */ - FbxQuaternion MultQ(const FbxQuaternion& pQuaternion) const; - - /** Multiply matrix by a scale vector. - * \param pVector4 Scaling vector. - * \return s' = M * s - */ - FbxVector4 MultS(const FbxVector4& pVector4) const; - //@} - - /** - * \name Matrix Operations - */ - //@{ - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. - */ - FbxAMatrix operator-() const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return this * pMatrix. - * \remarks Transformations are pre-multiplied. - * That means to scale, then rotate, and then translate a vector V, the transform should be T * R * S * V. \n - * Below is an example of code that shows how to construct rotation transform in XYZ rotation order. - * \code - * FbxAMatrix lRotateXM, lRotateYM, lRotateZM, lRotateXYZM, lRotateM; - * // Construct rotation matrix around X, Y and Z axises separately and then combine them. - * FbxVector4 lRotateX(10, 0, 0); - * FbxVector4 lRotateY(0, 10, 0); - * FbxVector4 lRotateZ(0, 0, 10); - * lRotateXM.SetR(lRotateX); - * lRotateYM.SetR(lRotateY); - * lRotateZM.SetR(lRotateZ); - * lRotateXYZM = lRotateZM * lRotateYM * lRotateXM; - * - * // Alternatively, we can use SetR() directly. - * // lRotateXYZM and lRotateM will be the same. - * FbxVector4 lRotateXYZ (10, 10, 10); - * lRotateM.SetR(lRotateXYZ); - * \endcode - * \note Please refer to the FBX SDK programmers guide for more details. - */ - FbxAMatrix operator*(const FbxAMatrix& pOther) const; - - /** Multiply two matrices together. - * \param pOther A Matrix. - * \return \e this updated with the result of the multiplication. - */ - FbxAMatrix& operator*=(const FbxAMatrix& pOther); - - /** Calculate the matrix inverse. - * \return The inverse matrix of \e this. - */ - FbxAMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return The transposed matrix of \e this. - */ - FbxAMatrix Transpose() const; - - /** Calculate a spherical linear interpolation matrix. - * \param pOther The other rotation matrix to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. - * \remark This matrix and other matrix should contain only rotations, otherwise result may be undefined. */ - FbxAMatrix Slerp(const FbxAMatrix& pOther, double pWeight) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxAMatrix& pOther) const; - - /** Non-equivalence operator. - * \param pOther The matrix to be compared to \e this. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxAMatrix& pOther) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the matrix in a double pointer. - operator double* (); - //! Cast the matrix in a const double pointer. - operator const double* () const; - //! Define 4*4 array as a new type - typedef const double(kDouble44)[4][4] ; - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - /** Find out if the matrix is equal to identity matrix. - * \return \c true if the matrix is equal to identity matrix, \c false otherwise. */ - bool IsIdentity(const double pThreshold=FBXSDK_TOLERANCE); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS); - void SetRow(int pY, const FbxVector4& pRow); - void SetTOnly(const FbxVector4& pT); - void SetROnly(const FbxVector4& pR); - void SetQOnly(const FbxQuaternion& pQ); - FbxVector4 GetROnly() const; - FbxQuaternion GetUnnormalizedQ() const; - - // pOrd is assumed to be an FbxEuler::EOrder (or its synonym EFbxRotationOrder) - void SetR(const FbxVector4& pV, const int pOrd); - FbxVector4 GetR(const int pOrd) const; - - void MultRM(const FbxVector4& pR); - void MultSM(const FbxVector4& pS); - bool IsRightHand() const; - double Determinant() const; - int Compare(const FbxAMatrix pM, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h deleted file mode 100755 index e8eb847..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxdualquaternion.h +++ /dev/null @@ -1,325 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdualquaternion.h -#ifndef _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK dual quaternion class to represent rigid transformation, which is combined by two quaternions. - * A transformation is said to be rigid if it preserves relative distances and angles. - * That means rotation and translation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxDualQuaternion -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxDualQuaternion(); - - /** Constructor. - * \param pV1 FbxQuaternion object. - * \param pV2 FbxQuaternion object. - */ - FbxDualQuaternion(const FbxQuaternion& pV1, const FbxQuaternion& pV2); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxDualQuaternion(const FbxDualQuaternion& pV); - - /** Constructor. - * \param pRotation The rotation the dual quaternion is going to represent. - * \param pTranslation The translation the dual quaternion is going to represent. - */ - FbxDualQuaternion(const FbxQuaternion& pRotation, const FbxVector4& pTranslation); - - /** Constructor. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - FbxDualQuaternion(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - //! Destructor. - ~FbxDualQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pDualQuaternion FbxDualQuaternion object assigned to this one. - */ - FbxDualQuaternion& operator=(const FbxDualQuaternion& pDualQuaternion); - - /** Set vector. - * \param pX1 The X component of the first quaternion. - * \param pY1 The Y component of the first quaternion. - * \param pZ1 The Z component of the first quaternion. - * \param pW1 The W component of the first quaternion. - * \param pX2 The X component of the second quaternion. - * \param pY2 The Y component of the second quaternion. - * \param pZ2 The Z component of the second quaternion. - * \param pW2 The W component of the second quaternion. - */ - void Set(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - FbxQuaternion& GetFirstQuaternion(); - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - FbxQuaternion& GetSecondQuaternion(); - - /** Get the first quaternion of the dual quaternion. - * \return The first quaternion of the dual quaternion. - */ - const FbxQuaternion& GetFirstQuaternion() const; - - /** Get the second quaternion of the dual quaternion. - * \return The second quaternion of the dual quaternion. - */ - const FbxQuaternion& GetSecondQuaternion() const; - - /** Get the rotation part from the dual quaternion. - * \return FbxQuaternion object to represent rotation. - */ - FbxQuaternion GetRotation() const; - - /** Get the translation part from the dual quaternion. - * \return FbxVector4 object to represent translation. - * \remarks A dual quaternion can represent rotation followed by translation, or translation followed by rotation. - * This method assumes that the rotation is expressed first, followed by translation, as is done by most DCC tools. - */ - FbxVector4 GetTranslation() const; - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of the vector, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this dual quaternion. - * \remarks The passed value is not checked. - */ - FbxDualQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A dual quaternion where each component is multiplied by -1. - */ - FbxDualQuaternion operator-() const; - - /** Add two vectors together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator+(const FbxDualQuaternion& pDualQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pDualQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator-(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise multiplication of two vectors. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxDualQuaternion& pDualQuaternion) const; - - /** Memberwise division of a dual quaternion with another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator/(const FbxDualQuaternion& pDualQuaternion) const; - - /** Add two quaternions together. - * \param pDualQuaternion Dual quaternion to add. - * \return The dual quaternion v' = this + pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator+=(const FbxDualQuaternion& pDualQuaternion); - - /** Subtract a dual quaternion from another vector. - * \param pDualQuaternion Dual quaternion to subtract. - * \return The dual quaternion v' = this - pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator-=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise multiplication of two quaternions. - * \param pDualQuaternion Multiplying dual quaternion. - * \return The dual quaternion v' = this * pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator*=(const FbxDualQuaternion& pDualQuaternion); - - /** Memberwise division of a dual quaternion by another dual quaternion. - * \param pDualQuaternion Dividing dual quaternion. - * \return The dual quaternion v' = this / pQuaternion, replacing this dual quaternion. - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion& operator/=(const FbxDualQuaternion& pDualQuaternion); - - /** Multiplication of a dual quaternion by a FbxVector4. - * \param pVector The FbxVector4 to multiply with. - * \return The dual quaternion v' = FbxDualQuaternion(mQ1, (mQ1 * pVector) + mQ2). - * \remarks The values in pDualQuaternion are not checked. - */ - FbxDualQuaternion operator*(const FbxVector4 pVector) const; - - /** Return dual quaternion product. - * \param pDualQuaternion Product dual quaternion. - * \return The dual quaternion that is the product of this and pDualQuaternion. - */ - FbxDualQuaternion Product(const FbxDualQuaternion& pDualQuaternion) const; - - /** Normalize the dual quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the dual quaternion's inverse. - * \return The inverse of this dual quaternion. - */ - void Inverse(); - - /** Deform a point by this dual quaternion. - * \return The inverse of this quaternion. - */ - FbxVector4 Deform(FbxVector4& pPoint); - //@} - - /** - * \name Conjugate Operations - * \brief Dual quaternion has three types of conjugate. - */ - //@{ - /** Conjugate both quaternions of this dual quaternion. - */ - void Conjugate(); - - /** Conjugate in dual space. - */ - void Dual(); - - /** Conjugate both quaternions of this dual quaternion in dual space. - */ - void DualConjugate(); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxDualQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxDualQuaternion & pV) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxQuaternion mQ1; - FbxQuaternion mQ2; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmath.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmath.h deleted file mode 100755 index 88092b4..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmath.h +++ /dev/null @@ -1,512 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmath.h -#ifndef _FBXSDK_CORE_MATH_H_ -#define _FBXSDK_CORE_MATH_H_ - -#include - -#include -#include -#include -#include - -//On Mac OS, cmath will include math.h and undef "isnan" -#if defined(FBXSDK_ENV_MAC) - #include - extern "C" int isnan (double); -#endif - -#include - -#if defined(FBXSDK_ENV_WIN) - #ifndef isnan - #define isnan _isnan - #endif - #ifndef finite - #define finite _finite - #endif -#endif - -//--------------------------------------------------------------------------------------- -//Common Constants -#define FBXSDK_PI 3.1415926535897932384626433832795028841971693993751 //!< PI mathematic constant -#define FBXSDK_PI_DIV_2 1.5707963267948966192313216916397514420985846996875 //!< PI divided by 2 -#define FBXSDK_PI_DIV_180 0.017453292519943295769236907684886127134428718885417 //!< PI divived by 180 -#define FBXSDK_180_DIV_PI 57.295779513082320876798154814105170332405472466565 //!< 180 divided by PI -#define FBXSDK_1_DIV_LN2 1.4426950408889634073599246810018921374266459541530 //!< 1 divided by LogN2 - -//--------------------------------------------------------------------------------------- -//Unit Convertion Ratio -#define FBXSDK_DEG_TO_RAD FBXSDK_PI_DIV_180 //!< Degree to Radian -#define FBXSDK_RAD_TO_DEG FBXSDK_180_DIV_PI //!< Radian to Degree -#define FBXSDK_IN_TO_CM 2.54 //!< Inch to Centimeter -#define FBXSDK_MM_TO_CM 0.1 //!< Millimeter to Centimeter -#define FBXSDK_CM_TO_IN 0.393700787 //!< Centimeter to Inch -#define FBXSDK_IN_TO_MM 25.4 //!< Inch to Millimeter -#define FBXSDK_MM_TO_IN 0.0393700787 //!< Millimeter to Inch -#define FBXSDK_FT_TO_M 0.3048 //!< Feet to Meter -#define FBXSDK_M_TO_FT 3.2808399 //!< Meter to Feet -#define FBXSDK_YD_TO_FT 3 //!< Yard to Feet -#define FBXSDK_FT_TO_YD 0.333333333 //!< Feet to Yard -#define FBXSDK_KM_TO_MILE 0.621371192 //!< Kilometer to Mile -#define FBXSDK_MILE_TO_KM 1.609344 //!< Mile to Kilometer -#define FBXSDK_YD_TO_M 0.9144 //!< Yard to Meter -#define FBXSDK_M_TO_YD 1.0936133 //!< Meter to Yard - -//--------------------------------------------------------------------------------------- -//Euler Definition -#define FBXSDK_EULER_DEGENERATE FbxEuler::DegenerateThreshold() //!< Euler degenerate threshold can be changed with a call to FbxEuler::SetDegenerateThreshold. - -class FBXSDK_DLL FbxEuler -{ -public: - enum EAxis {eAxisX=0, eAxisY=1, eAxisZ=2}; - - enum EOrder - { - eOrderXYZ, - eOrderXZY, - eOrderYZX, - eOrderYXZ, - eOrderZXY, - eOrderZYX, - eOrderSphericXYZ - }; - - static bool IsParityOdd(EOrder pOrder); - static bool IsRepeat(EOrder pOrder); - - static const int AxisTableSize; - static const int AxisTable[][3]; - - // Used to detect Euler gimbal locks when extracting the rotation vector from - // the FbxAMatrix. This value should only be changed when the user system stores - // single floating point values into the FbxAMatrix with a very low precision. - // In this case, the default threshold value would be too small for a proper detection - // and the extracted values can quickly become off target by a huge amount. - static void SetDegenerateThreshold(double pThreshold=16.0*FBXSDK_FLOAT_EPSILON); - static inline double DegenerateThreshold() { return FbxEuler::mDegenerateThreshold; } - -private: - static double mDegenerateThreshold; -}; - -/** Rotation order flags. - * Each rotate order produces a different end orientation. For example, if the rotation order for an object is set to XYZ, - * the object first rotates about its X-axis, then its Y-axis, and finally its Z-axis. - */ - -#define EFbxRotationOrder FbxEuler::EOrder -#define eEulerXYZ FbxEuler::eOrderXYZ -#define eEulerXZY FbxEuler::eOrderXZY -#define eEulerYZX FbxEuler::eOrderYZX -#define eEulerYXZ FbxEuler::eOrderYXZ -#define eEulerZXY FbxEuler::eOrderZXY -#define eEulerZYX FbxEuler::eOrderZYX -#define eSphericXYZ FbxEuler::eOrderSphericXYZ - - - -/** Quaternion interpolation modes. */ -enum EFbxQuatInterpMode -{ - eQuatInterpOff, //!< Do not evaluate using quaternion interpolation. - eQuatInterpClassic, //!< Legacy quaternion interpolation mode. - eQuatInterpSlerp, //!< Spherical linear interpolation. - eQuatInterpCubic, //!< Cubic interpolation. - eQuatInterpTangentDependent, //!< Mix between Slerp and cubic interpolation, depending on the specified tangents for each key. - eQuatInterpCount //!< Number of quaternion interpolation modes. Mark the end of this enum. -}; - -extern FBXSDK_DLL const FbxDouble FbxIdentityMatrix[4][4]; -extern FBXSDK_DLL const FbxVector4 FbxZeroVector4; - -inline float FbxFloor(const float x) -{ - return float(floor(x)); -} - -inline double FbxFloor(const double x) -{ - return floor(x); -} - -inline float FbxCeil(const float x) -{ - return float(ceil(x)); -} - -inline double FbxCeil(const double x) -{ - return ceil(x); -} - -template inline T FbxSign(const T x) -{ - return (x < 0) ? T(-1) : T(1); -} - -template inline T FbxRound(const T x) -{ - T y = FbxFloor(x); - return (x - y < T(0.5)) ? y : y + T(1); -} - -inline FbxUChar FbxAbs(const FbxUChar x) -{ - return x; -} - -inline FbxUShort FbxAbs(const FbxUShort x) -{ - return x; -} - -inline FbxUInt FbxAbs(const FbxUInt x) -{ - return x; -} - -#ifndef FBXSDK_SYSTEM_IS_LP64 - inline FbxULong FbxAbs(const FbxULong x) - { - return x; - } -#endif - -inline FbxULongLong FbxAbs(const FbxULongLong x) -{ - return x; -} - -inline FbxFloat FbxAbs(const FbxFloat x) -{ - return (FbxFloat)fabs(x); -} - -inline FbxDouble FbxAbs(const FbxDouble x) -{ - return fabs(x); -} - -template inline T FbxAbs(const T x) -{ - return (x >= 0) ? x : ((x > FbxMin(x)) ? -x : FbxMax(x)); -} - -template inline T FbxClamp(const T value, const T min, const T max) -{ - return (value < min) ? min : ((value > max) ? max : value); -} - -template inline bool FbxEqual(const T x, const T y, const T e=(T)FBXSDK_TOLERANCE) -{ - return FbxAbs(x - y) <= e; -} - -inline bool FbxEqual(const FbxDouble2& x, const FbxDouble2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxDouble3& x, const FbxDouble3& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) ); -} - -inline bool FbxEqual(const FbxDouble4& x, const FbxDouble4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxDouble4x4& x, const FbxDouble4x4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxVector2& x, const FbxVector2& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); -} - -inline bool FbxEqual(const FbxVector4& x, const FbxVector4& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); -} - -inline bool FbxEqual(const FbxMatrix& x, const FbxMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline bool FbxEqual(const FbxAMatrix& x, const FbxAMatrix& y, const double e=FBXSDK_TOLERANCE) -{ - return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); -} - -inline FbxDouble FbxMod(const FbxFloat x, FbxFloat& i) -{ - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x, FbxDouble& i) -{ - return modf(x, &i); -} - -inline FbxDouble FbxMod(const FbxFloat x) -{ - FbxFloat i; - return modff(x, &i); -} - -inline FbxDouble FbxMod(const FbxDouble x) -{ - FbxDouble i; - return modf(x, &i); -} - -template inline T FbxReciprocal(const T x) -{ - return T(1) / x; -} - -inline double FbxSqrt(const double x) -{ - return sqrt(x); -} - -inline float FbxSqrt(const float x) -{ - return sqrtf(x); -} - -template inline T FbxSqrt(const T x) -{ - if( x > 1 ) - { - T z, y = x >> 1; - do - { - z = y; - y = (y + (x / y)) >> 1; - } - while(y < z); - - return z; - } - else - { - return x; - } -} - -inline float FbxExp(const float x) -{ - return expf(x); -} - -inline double FbxExp(const double x) -{ - return exp(x); -} - -inline float FbxLog(const float x) -{ - return float(log(x)); -} - -inline double FbxLog(const double x) -{ - return log(x); -} - -template inline T FbxPow(const T x, const T y) -{ - return (T)FbxExp(y * FbxLog((double)x)); -} - -template inline T FbxLog2(const T x) -{ - return (T)(FbxLog(x) * FBXSDK_1_DIV_LN2); -} - -inline float FbxSin(const float x) -{ - return sinf(x); -} - -inline double FbxSin(const double x) -{ - return sin(x); -} - -inline float FbxCos(const float x) -{ - return cosf(x); -} - -inline double FbxCos(const double x) -{ - return cos(x); -} - -inline float FbxTan(const float x) -{ - return tanf(x); -} - -inline double FbxTan(const double x) -{ - return tan(x); -} - -// *y = cos(x), sin(x) -template inline T FbxSinCos(const T x, T* y) -{ - return *y = FbxCos(x), FbxSin(x); -} - -// *y = cos(x * pi/180), sin(x * pi/180) -template inline T FbxSinCosd(const T x, T* y) -{ - return FbxSinCos(T(x * FBXSDK_PI_DIV_180), y); -} - -inline float FbxASin(const float x) -{ - return asinf(x); -} - -inline double FbxASin(const double x) -{ - return asin(x); -} - -template inline T FbxASind(const T x) -{ - return (T)(FbxASin((double)x) * FBXSDK_180_DIV_PI); -} - -inline float FbxACos(const float x) -{ - return acosf(x); -} - -inline double FbxACos(const double x) -{ - return acos(x); -} - -template inline T FbxACosd(const T x) -{ - return (T)(FbxACos(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float x) -{ - return atanf(x); -} - -inline double FbxATan(const double x) -{ - return atan(x); -} - -template inline T FbxATand(const T x) -{ - return (T)(FbxATan(x) * FBXSDK_180_DIV_PI); -} - -inline float FbxATan(const float y, const float x) -{ - return atan2f(y, x); -} - -inline double FbxATan(const double y, const double x) -{ - return atan2(y, x); -} - -template inline T FbxATand(const T y, const T x) -{ - return (T)(FbxATan(y, x) * FBXSDK_180_DIV_PI); -} - -template inline T FbxNorm(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxNorm(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxNorm(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -template inline T FbxHypot(const T x, const T y) -{ - return FbxSqrt(x * x + y * y); -} - -template inline T FbxHypot(const T x, const T y, const T z) -{ - return FbxSqrt(x * x + y * y + z * z); -} - -template inline T FbxHypot(const T w, const T x, const T y, const T z) -{ - return FbxSqrt(w * w + x * x + y * y + z * z); -} - -inline FbxVector4 FbxRejection(const FbxVector4& a, const FbxVector4& b) -{ - return a - b * (a.DotProduct(b) / b.DotProduct(b)); -} - -template inline int FbxBitCount(const T x) -{ - int n = 0; - T c = x; - while( c ) - { - n += int(c & 1); - c = (c >> 1); - } - return n; -} - -template inline void FbxFixInfinite(T& x) -{ - if( x != x || x > FbxMax(x) || x < -FbxMax(x) ) - { - x = T(0); - } -} - -template inline T FbxExp(const T x); -template inline T FbxLog(const T x); -template inline T FbxSin(const T x); -template inline T FbxCos(const T x); -template inline T FbxASin(const T x); -template inline T FbxACos(const T x); -template inline T FbxATan(const T x); -template inline T FbxATan(const T y, const T x); - -#include - -#endif /* _FBXSDK_CORE_MATH_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmatrix.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmatrix.h deleted file mode 100755 index 7f75402..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxmatrix.h +++ /dev/null @@ -1,281 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmatrix.h -#ifndef _FBXSDK_CORE_MATH_MATRIX_H_ -#define _FBXSDK_CORE_MATH_MATRIX_H_ - -#include - -#include - -#include - -class FbxAMatrix; - -/** FBX SDK basic 4x4 double matrix class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMatrix : public FbxDouble4x4 -{ -public: - //! \name Constructors and Destructor - //@{ - //! Constructor (initialize to an identity matrix) - FbxMatrix(); - - /** Copy constructor. - * \param pM Another FbxMatrix object copied to this one. */ - FbxMatrix(const FbxMatrix& pM); - - /** Copy constructor for affine matrix. - * \param pM Affine matrix */ - FbxMatrix(const FbxAMatrix& pM); - - /** TRS Constructor. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** TQS Constructor. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - FbxMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** 16 double constructor. - * \param p00 Value at column 0 row 0. - * \param p10 Value at column 1 row 0. - * \param p20 Value at column 2 row 0. - * \param p30 Value at column 3 row 0. - * \param p01 Value at column 0 row 1. - * \param p11 Value at column 1 row 1. - * \param p21 Value at column 2 row 1. - * \param p31 Value at column 3 row 1. - * \param p02 Value at column 0 row 2. - * \param p12 Value at column 1 row 2. - * \param p22 Value at column 2 row 2. - * \param p32 Value at column 3 row 2. - * \param p03 Value at column 0 row 3. - * \param p13 Value at column 1 row 3. - * \param p23 Value at column 2 row 3. - * \param p33 Value at column 3 row 3. */ - FbxMatrix( const double p00, const double p10, const double p20, const double p30, - const double p01, const double p11, const double p21, const double p31, - const double p02, const double p12, const double p22, const double p32, - const double p03, const double p13, const double p23, const double p33); - - //! Destructor. - ~FbxMatrix(); - //@} - - //! \name Access - //@{ - /** Retrieve matrix element. - * \param pY Row index. - * \param pX Column index. - * \return Value at element [ pX, pY ] of the matrix. */ - double Get(int pY, int pX) const; - - /** Extract a row vector. - * \param pY Row index. - * \return The row vector. */ - FbxVector4 GetRow(int pY) const; - - /** Extract a column vector. - * \param pX Column index. - * \return The column vector. */ - FbxVector4 GetColumn(int pX) const; - - /** Set matrix element. - * \param pY Row index. - * \param pX Column index. - * \param pValue New component value. */ - void Set(int pY, int pX, double pValue); - - /** Set matrix. - * \param pT Translation vector. - * \param pR Euler rotation vector. - * \param pS Scale vector. */ - void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); - - /** Set matrix. - * \param pT Translation vector. - * \param pQ Quaternion. - * \param pS Scale vector. */ - void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); - - /** Set a matrix row. - * \param pY Row index. - * \param pRow Row vector. */ - void SetRow(int pY, const FbxVector4& pRow); - - /** Set a matrix column. - * \param pX Column index. - * \param pColumn Column vector. */ - void SetColumn(int pX, const FbxVector4& pColumn); - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxQuaternion& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - - /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. - * \param pTranslation Translation element. - * \param pRotation Rotation element. - * \param pShearing Shearing element. - * \param pScaling Scaling element. - * \param pSign Sign of determinant. */ - void GetElements(FbxVector4& pTranslation, FbxVector4& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; - //@} - - //! \name Operators - //@{ - /** Assignment operator. - * \param pMatrix Source matrix. */ - FbxMatrix& operator=(const FbxMatrix& pMatrix); - - /** Unary minus operator. - * \return A matrix where each element is multiplied by -1. */ - FbxMatrix operator-() const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix. */ - FbxMatrix operator+(const FbxMatrix& pMatrix) const; - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix. */ - FbxMatrix operator-(const FbxMatrix& pMatrix) const; - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix. */ - FbxMatrix operator*(const FbxMatrix& pMatrix) const; - - /** Add two matrices together. - * \param pMatrix A matrix. - * \return The result of this matrix + pMatrix, replacing this matrix. */ - FbxMatrix& operator+=(const FbxMatrix& pMatrix); - - /** Subtract a matrix from another matrix. - * \param pMatrix A matrix. - * \return The result of this matrix - pMatrix, replacing this matrix. */ - FbxMatrix& operator-=(const FbxMatrix& pMatrix); - - /** Multiply two matrices. - * \param pMatrix A matrix. - * \return The result of this matrix * pMatrix, replacing this matrix. */ - FbxMatrix& operator*=(const FbxMatrix& pMatrix); - - /** Equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxMatrix& pM) const; - - /** Equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ - bool operator==(const FbxAMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxMatrix& pM) const; - - /** Non-equivalence operator. - * \param pM The affine matrix to be compared against this matrix. - * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ - bool operator!=(const FbxAMatrix& pM) const; - //@} - - //! \name Casting - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - - //! Define 4*4 array as a new type. - typedef const double(kDouble44)[4][4] ; - - //! Cast the matrix in a reference to a 4*4 array. - inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } - //@} - - //! \name Math Operations - //@{ - /** Calculate the matrix inverse. - * \return The inverse matrix. */ - FbxMatrix Inverse() const; - - /** Calculate the matrix transpose. - * \return This matrix transposed. */ - FbxMatrix Transpose() const; - - //! Set matrix to identity. - void SetIdentity(); - - /** Set the matrix to a "Look To" left handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToLH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look To" right handed. - * \param pEyePosition The position of the eye. - * \param pEyeDirection The direction of the eye. - * \param pUpDirection The up direction of the eye. */ - void SetLookToRH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); - - /** Set the matrix to a "Look At" left handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtLH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Set the matrix values as a "Look At" right handed. - * \param pEyePosition The position of the eye. - * \param pLookAt The look at position of the eye focus. - * \param pUpDirection The up direction of the eye. */ - void SetLookAtRH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); - - /** Multiply this matrix by pVector, the w component is normalized to 1. - * \param pVector A vector. - * \return The result of this matrix * pVector. */ - FbxVector4 MultNormalize(const FbxVector4& pVector) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - int Compare(const FbxAMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; - - FbxMatrix operator*(double pValue) const; - FbxMatrix& operator*=(double pValue); - - double LUDecomposition(FbxVector4& pVector); - FbxMatrix LUMult(FbxMatrix pM, const FbxVector4& pVector) const; - double Determinant() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_MATRIX_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxquaternion.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxquaternion.h deleted file mode 100755 index 4ad799c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxquaternion.h +++ /dev/null @@ -1,333 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxquaternion.h -#ifndef _FBXSDK_CORE_MATH_QUATERNION_H_ -#define _FBXSDK_CORE_MATH_QUATERNION_H_ - -#include - -#include - -#include - -/** FBX SDK quaternion class. - * \nosubgrouping - * Quaternions form a four-dimensional normed division algebra over the real numbers. - * It is for calculations involving three-dimensional rotations. - */ -class FBXSDK_DLL FbxQuaternion : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - /** Constructor. - * Initialize to the multiplicative identity. - */ - FbxQuaternion(); - - /** Copy constructor. - * \param pV FbxQuaternion object copied to this one. - */ - FbxQuaternion(const FbxQuaternion& pV); - - /** Constructor. - * \param pX The X component. - * \param pY The Y component. - * \param pZ The Z component. - * \param pW The W component. - */ - FbxQuaternion(double pX, double pY, double pZ, double pW = 1.0); - - /** From axis degree constructor - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - FbxQuaternion(const FbxVector4& pAxis, double pDegree); - - //! Destructor. - ~FbxQuaternion(); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pQuaternion FbxQuaternion object assigned to this one. - */ - FbxQuaternion& operator=(const FbxQuaternion& pQuaternion); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double& operator[](int pIndex); - - /** Accessor. - * \param pIndex The index of the component to access. - * \return The const reference to the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - const double& operator[](int pIndex) const; - - /** Get a vector element. - * \param pIndex The index of the component to access. - * \return The value of the indexed component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - double GetAt(int pIndex) const; - - /** Set a vector element. - * \param pIndex The index of the component to set. - * \param pValue The new value to set the component. - * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. - */ - void SetAt(int pIndex, double pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW = 1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** The addition operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar value to be added. - * \return The sum of addition. - */ - FbxQuaternion operator+(double pValue) const; - - /** The subtraction operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion operator-(double pValue) const; - - /** Multiply all vector components by a value. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxQuaternion operator/(double pValue) const; - - /** The in place addition operator between the real part of this quaternion and a scalar value. - * \param pValue The value to be added. - * \return The sum of addition. - */ - FbxQuaternion& operator+=(double pValue); - - /** The subtraction operator between the real part of this quaternion and a scalar value. - * \param pValue The scalar subtrahend. - * \return The difference of subtraction. - */ - FbxQuaternion& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of dividing each component of the vector by pValue, replacing this quaternion. - * \remarks The passed value is not checked. - */ - FbxQuaternion& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return A quaternion where each component is multiplied by -1. - */ - FbxQuaternion operator-() const; - - /** Add two vectors together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator+(const FbxQuaternion& pQuaternion) const; - - /** Subtract a quaternion from another quaternion. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion operator-(const FbxQuaternion& pQuaternion) const; - - /** The quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion operator*(const FbxQuaternion& pOther) const; - - /** The quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion operator/(const FbxQuaternion& pOther) const; - - /** Add two quaternions together. - * \param pQuaternion Quaternion to add. - * \return The quaternion v' = this + pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator+=(const FbxQuaternion& pQuaternion); - - /** Subtract a quaternion from another vector. - * \param pQuaternion Quaternion to subtract. - * \return The quaternion v' = this - pQuaternion, replacing this quaternion. - * \remarks The values in pQuaternion are not checked. - */ - FbxQuaternion& operator-=(const FbxQuaternion& pQuaternion); - - /** The in place quaternion multiplication operator. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - * \remarks In general, quaternion multiplication does not commute. - */ - FbxQuaternion& operator*=(const FbxQuaternion& pOther); - - /** The in place quaternion division operator. - * \param pOther The divisor quaternion. - * \return The quotient quaternion. - * \remarks If the divisor has a zero length, return zero quaternion. - */ - FbxQuaternion& operator/=(const FbxQuaternion& pOther); - - /** Return quaternion product. - * \param pOther The quaternion to be multiplied with this quaternion. - * \return The product of two quaternions. - */ - FbxQuaternion Product(const FbxQuaternion& pOther) const; - - /** Return quaternion dot product. - * \param pQuaternion Dot product quaternion. - * \return The dot product of this quaternion and pQuaternion. - */ - double DotProduct(const FbxQuaternion& pQuaternion) const; - - /** Normalize the quaternion, length set to 1. - */ - void Normalize(); - - /** Calculate the quaternion conjugate. - * \return The conjugate of this quaternion. - */ - void Conjugate(); - - /** Calculate the length (norm) of the quaternion. - * \return The length of the quaternion. - */ - double Length(); - - /** Calculate the inverse of the quaternion. - * \return The inverse of this quaternion. - * \remarks If this quaternion has a zero length, retain the original value. - * \remarks If the quaternion is normalized, then its inverse is equal to its conjugate. - */ - void Inverse(); - - /** Set the quaternion rotation from an axis degree angle. - * \param pAxis The axis to rotate around. - * \param pDegree The amount of degree to rotate around the axis. */ - void SetAxisAngle(const FbxVector4& pAxis, double pDegree); - - /** Calculate a spherical linear interpolation quaternion. - * \param pOther The other quaternion to interpolate with. - * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. */ - FbxQuaternion Slerp(const FbxQuaternion& pOther, double pWeight) const; - - /** Create a Quaternion equivalent to the supplied Euler XYZ in spherical coordinate. - * \param pEuler The Euler XYZ angle (in degrees). - */ - void ComposeSphericalXYZ(const FbxVector4 pEuler); - - /** Create an Euler XYZ equivalent to the current quaternion. - * \return The Euler XYZ angle (in degrees) equivalent to the current quaternion in spherical coordinate. - */ - FbxVector4 DecomposeSphericalXYZ() const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pV The quaternion to be compared to this quaternion. - * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxQuaternion & pV) const; - - /** Non equivalence operator. - * \param pV The quaternion to be compared to \e this. - * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxQuaternion & pV) const; - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** - * \name Comparison methods - */ - //@{ - /** Comparison method. - * \param pQ2 Quaternion to compare with this - * \param pThreshold Epsilon for small number comparison - * \return 0 if quaternions are equal, non-zero value otherwise. - */ - int Compare(const FbxQuaternion &pQ2, const double pThreshold = FBXSDK_TOLERANCE) const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void GetQuaternionFromPositionToPosition(const FbxVector4 &pP0, const FbxVector4 &pP1); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_QUATERNION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxtransforms.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxtransforms.h deleted file mode 100755 index 444107c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxtransforms.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtransforms.h -#ifndef _FBXSDK_CORE_MATH_TRANSFORMS_H_ -#define _FBXSDK_CORE_MATH_TRANSFORMS_H_ - -#include - -#include -#include - -#include - -/** FbxLimits defines a limit range for one transform component, either translation, rotation or scaling. - * One transform component limit contains two part: a min value and a max value limit, which means - * that each value of the corresponding transform component cannot go beyond the range set by the - * min and max values. Although the members are identified as X, Y and Z (the W component is ignored) - * at this level, they are unitless values and will only have meaning within the context they are queried. - * - * For each limit, there is one flag to indicate if the limit is active or not. Before accessing the - * limit info, the caller need to query the flag first to make sure that the retrieved values will be - * meaningful. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLimits -{ -public: - //! Constructor - FbxLimits(); - - //! Assignment Operator - FbxLimits& operator=(const FbxLimits& pLimits); - - /** Retrieve the active state of this limit. - * \return True if the limit is active. - */ - bool GetActive() const; - - /** Set the active state of this limit. - * \param pActive If true, this limit will become globally active. - */ - void SetActive(const bool pActive); - - /** Get the active state of the minimum X component. - * \return True if the X component minimum limit is active. - */ - bool GetMinXActive() const; - - /** Get the active state of the minimum Y component. - * \return True if the Y component minimum limit is active. - */ - bool GetMinYActive() const; - - /** Get the active state of the minimum Z component. - * \return True if the Z component minimum limit is active. - */ - bool GetMinZActive() const; - - /** Get the active states of the three components of the minimum limit. - * \param pXActive \c True if the X component minimum limit is active. - * \param pYActive \c True if the Y component minimum limit is active. - * \param pZActive \c True if the Z component minimum limit is active. - */ - void GetMinActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the minimum limits. - * \return The current X, Y and Z values for the minimum limits. - */ - FbxDouble3 GetMin() const; - - /** Set the active state of the minimum X component. - * \param pActive If true, the X component minimum limit will be active. - */ - void SetMinXActive(bool pActive); - - /** Set the active state of the minimum Y component. - * \param pActive If true, the Y component minimum limit will be active. - */ - void SetMinYActive(bool pActive); - - /** Set the active state of the minimum Z component. - * \param pActive If true, the Z component minimum limit will be active. - */ - void SetMinZActive(bool pActive); - - /** Set the active states of the three components of the minimum limits. - * \param pXActive If true, the X component minimum limit will be active. - * \param pYActive If true, the Y component minimum limit will be active. - * \param pZActive If true, the Z component minimum limit will be active. - */ - void SetMinActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the minimum limits. - * \param pMin The X, Y and Z values for the minimum limits. - */ - void SetMin(const FbxDouble3& pMin); - - /** Get the active state of the maximum X component. - * \return True if the X component maximum limit is active. - */ - bool GetMaxXActive() const; - - /** Get the active state of the maximum Y component. - * \return True if the Y component maximum limit is active. - */ - bool GetMaxYActive() const; - - /** Get the active state of the maximum Z component. - * \return True if the Z component maximum limit is active. - */ - bool GetMaxZActive() const; - - /** Get the active states of the three components of the maximum limit. - * \param pXActive \c True if the X component maximum limit is active. - * \param pYActive \c True if the Y component maximum limit is active. - * \param pZActive \c True if the Z component maximum limit is active. - */ - void GetMaxActive(bool& pXActive, bool& pYActive, bool& pZActive) const; - - /** Get the maximum limits. - * \return The current X, Y and Z values for the maximum limits. - */ - FbxDouble3 GetMax() const; - - /** Set the active state of the maximum X component. - * \param pActive If true, the X component maximum limit will be active. - */ - void SetMaxXActive(bool pActive); - - /** Set the active state of the maximum Y component. - * \param pActive If true, the Y component maximum limit will be active. - */ - void SetMaxYActive(bool pActive); - - /** Set the active state of the maximum Z component. - * \param pActive If true, the Z component maximum limit will be active. - */ - void SetMaxZActive(bool pActive); - - /** Set the active states of the three components of the maximum limits. - * \param pXActive If true, the X component maximum limit will be active. - * \param pYActive If true, the Y component maximum limit will be active. - * \param pZActive If true, the Z component maximum limit will be active. - */ - void SetMaxActive(bool pXActive, bool pYActive, bool pZActive); - - /** Set the maximum limits. - * \param pMax The X, Y and Z values for the maximum limits. - */ - void SetMax(const FbxDouble3& pMax); - - /** Find if any of the minimum or maximum active state are set. - * \return If any component of the minimum or maximum active state are set, true is returned. - * \remarks The global active state will not count when resolving this. - */ - bool GetAnyMinMaxActive() const; - - /** Apply the active limits to the components of the vector provided. - * \return The new vector clamped by active limits. - */ - FbxDouble3 Apply(const FbxDouble3& pVector); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - enum EMask {eActive=1<<0, eMinX=1<<1, eMinY=1<<2, eMinZ=1<<3, eMaxX=1<<4, eMaxY=1<<5, eMaxZ=1<<6, eAll=eMinX|eMinY|eMinZ|eMaxX|eMaxY|eMaxZ}; - - FbxUInt8 mMask; - FbxDouble3 mMin; - FbxDouble3 mMax; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxRotationOrder -{ -public: - FbxRotationOrder(FbxEuler::EOrder pOrder=FbxEuler::eOrderXYZ); - - FbxEuler::EOrder GetOrder() const; - void SetOrder(FbxEuler::EOrder pOrder); - void V2M(FbxAMatrix& pRM, const FbxVector4& pV); - void M2V(FbxVector4& pV, const FbxAMatrix& pRM); - bool V2VRef(FbxVector4& pVOut, const FbxVector4& pVIn, const FbxVector4& pVRef); - -private: - FbxEuler::EOrder mOrder; -}; - -/** Handle transform behaviors such as pivots, limits and offets, etc. - */ -class FBXSDK_DLL FbxTransform -{ -public: - enum EInheritType {eInheritRrSs, eInheritRSrs, eInheritRrs}; - - FbxTransform(); - - EInheritType GetInheritType() const; - void SetInheritType(EInheritType pType); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - FbxRotationOrder& GetRotationOrder(); - bool HasROffset() const; - bool HasRPivot() const; - bool HasSOffset() const; - bool HasSPivot() const; - bool HasPreRM() const; - bool HasPostRM() const; - void SetROffset(const FbxVector4& pROffset); - void SetRPivot(const FbxVector4& pRPivot); - void SetSOffset(const FbxVector4& pSOffset); - void SetSPivot(const FbxVector4& pSPivot); - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - bool GetRotationSpaceForLimitOnly() const; - void SetRotationSpaceForLimitOnly(bool pRotationSpaceForLimitOnly); - - void DoF2LT(FbxVector4& pLT, const FbxVector4& pDoF, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void LT2DoF(FbxVector4& pDoF, const FbxVector4& pLT, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF, bool pForLimit=false); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM, bool pForLimit=false); - void LSM2GSM(FbxAMatrix& pGSM, const FbxAMatrix& pPGSM, const FbxAMatrix& pLSM, const FbxAMatrix& pLRM, const FbxVector4& pPLS); - void GTRSM2GX(FbxAMatrix& pGX, const FbxVector4& pGT, const FbxAMatrix& pGRM, const FbxAMatrix& pGSM); - -private: - void SumPivots(FbxVector4& pSum, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); - - class RotationSpace - { - public: - enum EMask {eHasNothing=0, eHasPreRotM=1<<0, eHasPostRotM=1<<1}; - - RotationSpace(); - - bool HasPreRM() const; - bool HasPostRM() const; - void GetPreRM(FbxAMatrix& pPreRM) const; - void GetPostRM(FbxAMatrix& pPostRM) const; - void SetPreRM(const FbxVector4& pPreR); - void SetPostRM(const FbxVector4& pPostR); - void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF); - void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM); - - FbxUInt8 mMask; - FbxAMatrix mPreRM; - FbxAMatrix mPostRM; - FbxRotationOrder mRotationOrder; - }; - - enum EMask {eHasNothing=0, eHasRotOffset=1<<0, eHasRotPivot=1<<1, eHasScaleOffset=1<<2, eHasScalePivot=1<<3}; - - FbxUInt8 mMask; - EInheritType mInheritType; - FbxVector4 mROffset; - FbxVector4 mRPivot; - FbxVector4 mSOffset; - FbxVector4 mSPivot; - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - bool mRotationSpaceForLimitOnly; - RotationSpace mRotationSpace; -}; - -FBXSDK_DLL bool FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef, const int* pOrder); -FBXSDK_DLL void FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef); - -#include - -#endif /* _FBXSDK_CORE_MATH_TRANSFORMS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector2.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector2.h deleted file mode 100755 index 6a953bc..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector2.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector2.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_2_H_ -#define _FBXSDK_CORE_MATH_VECTOR_2_H_ - -#include - -#include - -/** A two double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector2 : public FbxDouble2 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector2(); - - /** Copy constructor. - * \param pVector2 The vector copied to this one. - */ - FbxVector2(const FbxVector2& pVector2); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - */ - FbxVector2(double pX, double pY); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector2 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector2& operator=(const FbxVector2& pVector2); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - */ - void Set(double pX, double pY); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return A new vector with the result of adding pValue to each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return A new vector with the result of subtracting pValue from each component of this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return A new vector with the result of multiplying each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return A new vector with the result of dividing each component of this vector by pValue. - * \remarks The pValue parameter is not checked. - */ - FbxVector2 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return The result of adding pValue to each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return The result of subtracting pValue from each component of this vector, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return The result of multiplying each component of this vector by pValue, replacing this vector. - * \remarks The pValue parameter is not checked. - */ - FbxVector2& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector2 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator+(const FbxVector2& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator-(const FbxVector2& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator*(const FbxVector2& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The result of this vector / pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector2 operator/(const FbxVector2& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The result of this vector + pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator+=(const FbxVector2& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The result of this vector - pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator-=(const FbxVector2& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The result of this vector * pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator*=(const FbxVector2& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \remarks The values in pVector are not checked. - * \return The result of this vector / pVector, replacing this vector. - * \remarks The values in pVector are not checked. - */ - FbxVector2& operator/=(const FbxVector2& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - */ - double DotProduct(const FbxVector2& pVector) const; - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. - */ - bool operator==(const FbxVector2 & pVector) const; - - /** Non-equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. - */ - bool operator!=(const FbxVector2 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - */ - double Distance(const FbxVector2& pVector) const; - - //! Normalize the vector, length set to 1. - void Normalize(); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 2]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=2) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_2_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector4.h b/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector4.h deleted file mode 100755 index b4efe78..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/math/fbxvector4.h +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvector4.h -#ifndef _FBXSDK_CORE_MATH_VECTOR_4_H_ -#define _FBXSDK_CORE_MATH_VECTOR_4_H_ - -#include - -#include - -class FbxQuaternion; - -/** A four double mathematic vector class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVector4 : public FbxDouble4 -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Constructor. - FbxVector4(); - - /** Copy constructor. - * \param pVector4 The vector copied to this one. - */ - FbxVector4(const FbxVector4& pVector4); - - /** Constructor. - * \param pX X component. - * \param pY Y component. - * \param pZ Z component. - * \param pW W component. - */ - FbxVector4(double pX, double pY, double pZ, double pW=1.0); - - /** Constructor. - * \param pValue X,Y,Z,W components. - */ - FbxVector4(const double pValue[4]); - - /** Constructor. - * \param pValue X,Y,Z components. - * \remarks The fourth component of this object is assigned 1. - */ - FbxVector4(const FbxDouble3& pValue); - //@} - - /** - * \name Access - */ - //@{ - /** Assignment operation. - * \param pVector4 The vector assigned to this one. - * \return This vector after assignment. - */ - FbxVector4& operator=(const FbxVector4& pVector4); - - /** Assignment operation. - * \param pValue The pointer to an array whose elements are assigned to this vector. - * \return This vector after assignment. - */ - FbxVector4& operator=(const double* pValue); - - /** Assignment operation. - * \param pValue The vector with 3 elements assigned to this vector. - * \return This vector after assignment. - * \remarks The first three elements are assigned with pValue. The fourth element is set as 1.0 - */ - FbxVector4& operator=(const FbxDouble3& pValue); - - /** Set vector. - * \param pX The X component value. - * \param pY The Y component value. - * \param pZ The Z component value. - * \param pW The W component value. - */ - void Set(double pX, double pY, double pZ, double pW=1.0); - //@} - - /** - * \name Scalar Operations - */ - //@{ - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator+(double pValue) const; - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator-(double pValue) const; - - /** Multiply a value to all vector components. - * \param pValue The value multiplying each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator*(double pValue) const; - - /** Divide all vector components by a value. - * \param pValue The value dividing each component of the vector. - * \return New vector. - * \remarks The passed value is not checked. - */ - FbxVector4 operator/(double pValue) const; - - /** Add a value to all vector components. - * \param pValue The value to add to each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator+=(double pValue); - - /** Subtract a value from all vector components. - * \param pValue The value to subtract from each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator-=(double pValue); - - /** Multiply a value to all vector elements. - * \param pValue The value multiplying each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator*=(double pValue); - - /** Divide all vector elements by a value. - * \param pValue The value dividing each component of the vector. - * \return \e this updated with the operation result. - * \remarks The passed value is not checked. - */ - FbxVector4& operator/=(double pValue); - //@} - - /** - * \name Vector Operations - */ - //@{ - /** Unary minus operator. - * \return The vector that is the negation of \c this. - */ - FbxVector4 operator-() const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return The vector v' = this + pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator+(const FbxVector4& pVector) const; - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return The vector v' = this - pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator-(const FbxVector4& pVector) const; - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return The vector v' = this * pVector. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator*(const FbxVector4& pVector) const; - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return The vector v[i]' = this[i] / pVector[i]. - * \remarks The values in pVector are not checked. - */ - FbxVector4 operator/(const FbxVector4& pVector) const; - - /** Add two vectors together. - * \param pVector Vector to add. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator+=(const FbxVector4& pVector); - - /** Subtract a vector from another vector. - * \param pVector Vector to subtract. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator-=(const FbxVector4& pVector); - - /** Memberwise multiplication of two vectors. - * \param pVector Multiplying vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator*=(const FbxVector4& pVector); - - /** Memberwise division of a vector with another vector. - * \param pVector Dividing vector. - * \return \e this updated with the operation result. - * \remarks The values in pVector are not checked. - */ - FbxVector4& operator/=(const FbxVector4& pVector); - - /** Calculate the dot product of two vectors. - * \param pVector The second vector. - * \return The dot product value. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double DotProduct(const FbxVector4& pVector) const; - - /** Calculate the cross product of two vectors. - * \param pVector The second vector. - * \return The cross product vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - FbxVector4 CrossProduct(const FbxVector4& pVector) const; - - /** Calculate the Euler rotation required to align axis pAB-pA on pAB-pB. - * \param pAB The intersection of the 2 axis. - * \param pA A point on axis to be aligned. - * \param pB A point on reference axis. - * \param pAngles Resulting euler angles. - * \return \c true on success. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - static bool AxisAlignmentInEulerAngle(const FbxVector4& pAB, const FbxVector4& pA, const FbxVector4& pB, FbxVector4& pAngles); - //@} - - /** - * \name Boolean Operations - */ - //@{ - /** Equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. - */ - bool operator==(const FbxVector4 & pVector) const; - - /** Non equivalence operator. - * \param pVector The vector to be compared to \e this. - * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. - */ - bool operator!=(const FbxVector4 & pVector) const; - //@} - - /** - * \name Length - */ - //@{ - /** Get the vector's length. - * \return The mathematical length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double Length() const; - - /** Get the vector's length squared. - * \return The mathematical square length of the vector. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - double SquareLength() const; - - /** Find the distance between 2 vectors. - * \param pVector The second vector. - * \return The mathematical distance between the two vectors. - * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. - */ - double Distance(const FbxVector4& pVector) const; - - /** Normalize the vector, length set to 1. - * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. - */ - void Normalize(); - - - /** Set the Euler XYZ from a Quaternion. - *\param pQuat Quaternion from which Euler XYZ information is got. - */ - void SetXYZ(const FbxQuaternion pQuat); - //@} - - /** - * \name Casting - */ - //@{ - //! Cast the vector in a double pointer. - operator double* (); - - //! Cast the vector in a const double pointer. - operator const double* () const; - //@} - - /** Find out if the vector is equal to zero. - * \param pSize The number of element to test, starting at beginning. Value must range between [1, 4]. - * \return \c true if all elements of the vector are zero, \c false otherwise. */ - bool IsZero(int pSize=4) const; - - // Fix value like 1.#IND, 1.#INF, nan, and inf - void FixIncorrectValue(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - int Compare(const FbxVector4& pV, const double pThreshold=FBXSDK_TOLERANCE) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_CORE_MATH_VECTOR_4_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxatomic.h b/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxatomic.h deleted file mode 100755 index a98bc61..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxatomic.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxatomic.h -#ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_ -#define _FBXSDK_CORE_SYNC_ATOMIC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FBXSDK_DLL FbxAtomOp -{ -public: - static void Inc(volatile FbxAtomic* pPtr); - static void Dec(volatile FbxAtomic* pPtr); - static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap); - static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap); - static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr); - static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr); - static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); - static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxclock.h b/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxclock.h deleted file mode 100755 index 55ceaed..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxclock.h +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclock.h -#ifndef _FBXSDK_CORE_SYNC_CLOCK_H_ -#define _FBXSDK_CORE_SYNC_CLOCK_H_ - -#include - -#ifndef FBXSDK_ENV_WINSTORE - -#include - -/** Put the current thread to sleep. - * \param pMilliseconds The duration of the sleep in milli-seconds. - */ -FBXSDK_DLL void FbxSleep(int pMilliseconds); - -/** Retrieves the current value of the high-resolution performance counter. - * \return The current value of the high-resolution performance counter, in "counts". - * \remarks To convert "counts" into time, divide it by the frequency available from FbxGetHighResFrequency(). - */ -FBXSDK_DLL FbxLongLong FbxGetHighResCounter(); - -/** Retrieves the frequency of the high-resolution performance counter. - * \return The frequency of the high-resolution performance counter value, in "counts" per second. - * \remarks The first time this function is called, the frequency is queried from the system and then cached - * so that further requests are fast. This means it is guaranteed to not change during run-time. - */ -FBXSDK_DLL FbxLongLong FbxGetHighResFrequency(); - -#include - -#endif /* !FBXSDK_ENV_WINSTORE */ - -#endif /* _FBXSDK_CORE_SYNC_CLOCK_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxsync.h b/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxsync.h deleted file mode 100755 index 8859755..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxsync.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsync.h -#ifndef _FBXSDK_CORE_SYNC_H_ -#define _FBXSDK_CORE_SYNC_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include -#include - -#include - -class FbxMutexImpl; -class FbxSemaphoreImpl; -class FbxGateImpl; - -/** A spinlock is the fastest and most simple thread lock mechanism available. - * It is very efficient since it does not use any operating system calls; it is only a test and set on an atomic variable, - * thus it is the fastest thread lock available. Spinlocks are efficient if threads are only likely to be blocked for a - * short period of time, as they avoid overhead from operating system process re-scheduling or context switching. However, - * spinlocks become wasteful if held for longer durations, both preventing other threads from running and requiring - * re-scheduling. - * \note Spinlocks does not support recursive locking. A thread attempting to lock the same spinlock twice will wait - * indefinitely. - */ -class FBXSDK_DLL FbxSpinLock -{ -public: - FbxSpinLock(); - - /** Acquire the lock; thread will wait indefinitely until it is available. */ - void Acquire(); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. */ - void Release(); - -private: - FbxAtomic mSpinLock; -}; - -/** Mutually excluding thread lock mechanism. - * While the mutex is a much heavier implementation than a spinlock, it supports recursive locking; the same thread - * can safely lock the same mutex more than once without blocking. But it will have to be released as many times as - * it as been acquired before other threads can acquire the context. It is sometimes referred as a critical section. - * This is the heaviest thread lock implementation, but also the most secure. - */ -class FBXSDK_DLL FbxMutex -{ -public: - /** Constructor - * \param pInitialOwnership If pInitialOwnership is true, the lock will be initialized as being locked by the - * current thread. - */ - FbxMutex(bool pInitialOwnership=false); - virtual ~FbxMutex(); //!< Destructor - - /** Acquire the lock; thread will wait indefinitely until it is available. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - void Acquire(); - - /** Try acquiring the lock; thread will not wait if it is not available. - * \param pRetryCount The number of retries in case the lock is not available. - * \return True if the lock is acquired, false otherwise. - * \remarks The same thread can acquire the lock multiple times without blocking. - */ - bool TryAcquire(unsigned int pRetryCount); - - /** Release the lock; this will allow other threads to acquire the lock if they are waiting. - * \remarks Only the owner thread should call Release(), and it needs to be released as many times as it was - * acquired. - */ - void Release(); - -private: - FbxMutexImpl* mImpl; -}; - -/** Mutually excluding thread waiting mechanism with a counter. - * Semaphore are generally used in situations when the current thread needs to wait for other threads before - * proceeding to the next step. In other words, that thread waits a number of signals from other threads. This - * is the best mechanism to use to synchronize threads since it doesn't require an heavy critical section. - */ -class FBXSDK_DLL FbxSemaphore -{ -public: - FbxSemaphore(); //!< Constructor - virtual ~FbxSemaphore(); //!< Destructor - - /** Wait indefinitely until the semaphore as been signaled as many times as specified. - * \param pCount Number of signal to wait before this function returns. - * \return True if the wait exit without errors. - * \remarks If pCount is set to zero, this function returns immediately without waiting. - */ - bool Wait(unsigned int pCount=1); - - /** Signal the semaphore as many times as specified. - * \param pCount The number of signal to send to the semaphore. - * \return True if the semaphore was signaled without errors. - */ - bool Signal(unsigned int pCount=1); - -private: - FbxSemaphoreImpl* mImpl; -}; - -/** A gate thread locking mechanism is very similar to a semaphore, except that when it is opened, any - * further call to wait will not wait until it is closed. It is generally used to block multiple threads - * until one of them open the gate to release them all. - */ -class FBXSDK_DLL FbxGate -{ -public: - FbxGate(); //!< Constructor - virtual ~FbxGate(); //!< Destructor - - /** Open the gate to release all threads waiting. - * \remarks All waiting threads will unblock until the gate is closed. - */ - void Open(); - - /** Close the gate so that the next time a thread call Wait() it will be blocked. */ - void Close(); - - /** Check if the gate is open. - * \return True if the gate is open, otherwise false. - */ - bool IsOpen(); - - /** Wait indefinitely until the gate open. - * \return True if the wait completed without errors. - * \remarks If the gate is already open, this function returns immediately. - */ - bool Wait(); - -private: - FbxGateImpl* mImpl; -}; - -/** A simple stack of linked items that is multi-thread safe, protected by a spinlock. - */ -class FBXSDK_DLL FbxSyncStack -{ -public: - //! A single link item to be used to construct the stack - struct Item - { - Item* mNext; - inline Item(){ mNext = NULL; } - inline Item* Set(Item* pNext){ return mNext = pNext; } - inline Item* Next(){ return mNext; } - }; - - //! Constructor - FbxSyncStack(); - - /** Add an item on the top of the stack. - * \param pItem The item to add on top of the stack. - */ - void Push(Item* pItem); - - /** Remove the item on the top of the stack. - * \return Returns the item on top of the stack, otherwise NULL if stack empty. - */ - Item* Pop(); - -private: - FbxSpinLock mLock; - Item* mTop; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxthread.h b/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxthread.h deleted file mode 100755 index d3ff1da..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/core/sync/fbxthread.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthread.h -#ifndef _FBXSDK_CORE_SYNC_THREAD_H_ -#define _FBXSDK_CORE_SYNC_THREAD_H_ - -#include - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - -#include - -class FbxThreadImpl; - -//! Definition of a thread procedure function signature. -typedef void (*FbxThreadProc)(void*); - -/** This class implement a standard way to use threads across platforms. - */ -class FBXSDK_DLL FbxThread -{ -public: - enum EState {eUnknown, eRunning, eDead}; - enum EPriority {eNone, eIdle, eLowest, eLow, eNormal, eHigh, eHighest, eRealTime}; - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, bool pSuspend=false); - - /** Constructor - * \param pProc The procedure called upon thread startup. - * \param pArg The arguments passed to the procedure. - * \param pPriority The thread priority to set upon creation. - * \param pSuspend Start the thread suspended. - */ - FbxThread(FbxThreadProc pProc, void* pArg, EPriority pPriority, bool pSuspend=false); - - //! Destructor - virtual ~FbxThread(); - - /** Suspend the execution of the thread. - * \return Return true if the thread was successfully suspended, otherwise false. - * \remarks It should be used only if you can control where the thread will be suspended in its procedure, - * otherwise the state of the thread and its memory is unknown, since the code will stop anywhere. - */ - bool Suspend(); - - /** Resume the execution of the thread. - * \return Return true if the thread was successfully resumed, otherwise false. - */ - bool Resume(); - - /** Wait for the thread completion. - * \return True if the thread successfully returned from its procedure. - */ - bool Join(); - - /** Do not wait for the thread completion and terminate it. - * \return True if the thread successfully died. - */ - bool Kill(); - - /** Retrieve the priority of the thread. - * \return The thread's priority. - */ - EPriority GetPriority(); - - /** Set the thread priority. - * \param pPriority The priority to set to this thread. - * \return True if the thread priority was successfully changed. - */ - bool SetPriority(EPriority pPriority); - - /** Retrieve the thread current state. - * \return The state of the thread. - */ - EState GetState(); - -private: - FbxThreadImpl* mImpl; -}; - -#include - -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - -#endif /* _FBXSDK_CORE_SYNC_THREAD_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_def.h b/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_def.h deleted file mode 100755 index 562109c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_def.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_def.h - * FBX SDK environment definition. - * - * This file is the principal FBX SDK environment definition. It is used at the top of - * every header and source file so that every unit is using the same definitions. - */ -#ifndef _FBXSDK_DEFINITION_H_ -#define _FBXSDK_DEFINITION_H_ - -//--------------------------------------------------------------------------------------- -//System Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Define Version and Namespace -#include - -//--------------------------------------------------------------------------------------- -//Define Architecture -#include -#include -#include -#include -#include -#include - -//--------------------------------------------------------------------------------------- -//Useful Macros -#define FBX_SAFE_DELETE(p) {FbxDelete(p);(p)=NULL;} -#define FBX_SAFE_DELETE_ARRAY(a) {FbxDeleteArray(a);(a)=NULL;} -#define FBX_SAFE_DESTROY(p) if(p){(p)->Destroy();(p)=NULL;} -#define FBX_SAFE_FREE(p) if(p){FbxFree(p);(p)=NULL;} - -#endif /* _FBXSDK_DEFINITION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsbegin.h b/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsbegin.h deleted file mode 100755 index 1b6f45d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsbegin.h +++ /dev/null @@ -1,17 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsbegin.h -#include - -#if FBXSDK_DEFINE_NAMESPACE == 1 - namespace FBXSDK_NAMESPACE { -#endif diff --git a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsend.h b/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsend.h deleted file mode 100755 index 2983a7c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_nsend.h +++ /dev/null @@ -1,16 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsdk_nsend.h - -#if FBXSDK_DEFINE_NAMESPACE == 1 - } -#endif diff --git a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_version.h b/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_version.h deleted file mode 100755 index df16700..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fbxsdk_version.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2018 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/** \file fbxsdk_version.h - * FBX SDK version definition. - * - * This file defines the version string and numbers for this release of the FBX SDK. - * \note This file should never be included directly, please include fbxsdk_def.h - * instead. - */ -#ifndef _FBXSDK_VERSION_H_ -#define _FBXSDK_VERSION_H_ - -//FBX SDK version defines -#define FBXSDK_VERSION_MAJOR 2019 // - -#include - -#include - -#include - -/** Representing a COLLADA animation element. - */ -class AnimationElement : public ElementBase -{ -public: - typedef ElementBase base_type; - - AnimationElement(); - virtual ~AnimationElement(); - - /** Get the count of animation channels in the element. - * \return Return the channel count. - */ - int GetChannelCount() const; - - /** Initialize with the content of a COLLADA element. - * This method should be called before ToFBX. - */ - bool FromCOLLADA(xmlNode * pElement, const SourceElementMapType & pSourceElements); - - /** Initialize with an animation curve. - * This method should be called before ToCOLLADA. - * \param pCurve The specific animation curve. - * \param pUnitConversion The unit conversion for key value. - */ - bool FromFBX(const FbxAnimCurve * pCurve, double pUnitConversion = 1.0); - - /** Copy the channel with specific index to the FBX animation curve. - * \param pFBXCurve The destination FBX animation curve. - * \param pChannelIndex The index of the source channel. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxAnimCurve * pFBXCurve, int pChannelIndex, - double pUnitConversion = 1.0) const; - - /** Copy the matrix animation to the FBX node TRS properties. - * \param pFBXNode The destination FBX node. - * \param pAnimLayer The animation layer whose X, Y and Z curves will be set up. - * \param pUnitConversion The unit conversion from local element to global. - */ - bool ToFBX(FbxNode * pFBXNode, FbxAnimLayer * pAnimLayer, - double pUnitConversion = 1.0) const; - - /** Add the content to COLLADA animation library. - * \param pAnimationLibrary The COLLADA animation library element. - * \param pNodeID The ID of the element to who this curve is belong. - * \param pAttributeSID The ID the attribute to who this curve is belong. - */ - bool ToCOLLADA(xmlNode * pAnimationLibrary, const char * pNodeID, - const char * pAttributeSID); - -private: - int mKeyCount; - double * mInputArray; - double * mOutputArray; - int mOutputStride; - FbxString * mInterpolationArray; - int mInterpolationStride; - double * mInTangentArray; - int mInTangentStride; - double * mOutTangentArray; - int mOutTangentStride; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ANIMATION_ELEMENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h deleted file mode 100755 index cfa2d27..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h +++ /dev/null @@ -1,275 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaelement.h -#ifndef _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ -#define _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ - -#include - -#include - -// Utility functions to convert type to array tag used in COLLADA source element -template -inline const FbxString TypeToArrayTag() -{ - return COLLADA_FLOAT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_BOOL_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_INT_ARRAY_STRUCTURE; -} - -template <> -inline const FbxString TypeToArrayTag() -{ - return COLLADA_NAME_ARRAY_STRUCTURE; -} - -// Utility functions to convert type to parameter tag used in COLLADA source element -template -inline const FbxString TypeToParameterTag() -{ - return COLLADA_FLOAT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_BOOL_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_INT_TYPE; -} - -template <> -inline const FbxString TypeToParameterTag() -{ - return COLLADA_NAME_TYPE; -} - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of common COLLADA element. - */ -struct ElementContentAccessor -{ - ElementContentAccessor(); - ElementContentAccessor(xmlNode * pElement); - virtual ~ElementContentAccessor(); - - template - bool GetNext(TYPE * pData) - { - return FromString(pData, mPointer, &mPointer); - } - - template - int GetArray(TYPE * pArray, int pArraySize, - int pSourceUnitOffset = 0, int pSourceUnitValidCount = 1, int pSourceUnitSize = 1, - int pDestUnitOffset = 0, int pDestUnitValidCount = 1, int pDestUnitSize = 1, - TYPE pDefaultValue = TYPE()) - { - if (pArray) - { - return FromStringToArray(mPointer, pArray, pArraySize, - pSourceUnitOffset, pSourceUnitValidCount, pSourceUnitSize, - pDestUnitOffset, pDestUnitValidCount, pDestUnitSize, pDefaultValue); - } - return 0; - } - - xmlChar * mContent; - const char * mPointer; -}; - -//----------------------------------------------------------------------------// - -/** A struct for convenient access to the content of COLLADA source element. - */ -template -struct SourceElementContentAccessor : public ElementContentAccessor -{ - SourceElementContentAccessor(xmlNode * pSourceElement) - : mCount(0), mStride(1), mOffset(0) - { - bool lReadCount = true; - xmlNode* lTechniqueElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_TECHNIQUE_COMMON_ELEMENT); - if (lTechniqueElement) - { - xmlNode* lAccessorElement = DAE_FindChildElementByTag(lTechniqueElement, COLLADA_ACCESSOR_STRUCTURE); - if (lAccessorElement) - { - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_COUNT_PROPERTY, mCount); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_STRIDE_PROPERTY, mStride); - DAE_GetElementAttributeValue(lAccessorElement, COLLADA_OFFSET_PROPERTY, mOffset); - } - lReadCount = false; - } - - xmlNode * lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, TypeToArrayTag()); - // Some COLLADA exporters use IDREF_array instead of Name_array - if (!lDataArrayElement && TypeToArrayTag() == COLLADA_NAME_ARRAY_STRUCTURE) - lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_IDREF_ARRAY_STRUCTURE); - FBX_ASSERT(lDataArrayElement); - - if (lDataArrayElement && lReadCount) - DAE_GetElementAttributeValue(lDataArrayElement, COLLADA_COUNT_PROPERTY, mCount); - - mContent = xmlNodeGetContent(lDataArrayElement); - mPointer = (const char *)mContent; - } - - int mCount; - int mStride; - int mOffset; -}; - -//----------------------------------------------------------------------------// - -/** Representing a common COLLADA element. - */ -class ElementBase -{ -public: - enum - { - MATRIX_STRIDE = 16, - }; - - // The name of user property in FBX which is used to preserve the ID of COLLADA element - static const char* smID_PROPERTY_NAME; - - /** Constructor & Destructor. - */ - ElementBase(); - virtual ~ElementBase(); - - /** Access for XML element. - */ - void SetXMLElement(xmlNode * pElement) { mXMLElement = pElement; } - xmlNode * GetXMLElement() const { return mXMLElement; } - - /** Get the ID of the element. - * \return Return the ID string. - */ - const FbxString & GetID() const; - - /** Get the unit of the element, - * which takes effect in this element and its children elements. - * \return Return the unit. - */ - const FbxSystemUnit * GetUnit() const; - -private: - xmlNode * mXMLElement; - mutable FbxString * mID; - mutable FbxSystemUnit * mUnit; -}; - -/** Convert from ID to URL, just add a prefix "#". - * \param pID The ID string. - * \return Return the URL string. - */ -inline const FbxString URL(const FbxString & pID) -{ - return FbxString("#") + pID; -} - -/** Convert the array data to a source element under specific parent element. - * \param pParentElement The parent element. - * \param pID The ID of the new source element. - * \param pData The array data. - * \param pCount The length of the array. - * \param pStride The stride of each unit in the array. For example, when you - * export an array of FbxDouble3 of size 10, you convert it to a double array - * of size 30 with a stride 3 and call this method. - * \return The new source element. - */ -template -xmlNode * AddSourceElement(xmlNode * pParentElement, const char * pID, - const T * pData, int pCount, int pStride = 1) -{ - FBX_ASSERT(pParentElement && pData); - if (!pParentElement || !pData) - return NULL; - - xmlNode * lSourceElement = DAE_AddChildElement(pParentElement, COLLADA_SOURCE_STRUCTURE); - DAE_AddAttribute(lSourceElement, COLLADA_ID_PROPERTY, pID); - - FbxString lContent; - const int lDataCount = pCount * pStride; - for (int lIndex = 0; lIndex < lDataCount; ++lIndex) - { - lContent += ToString(pData[lIndex]); - if (lIndex != lDataCount - 1) - lContent += " "; - } - const FbxString lArrayID = FbxString(pID) + "-array"; - xmlNode * lArrayElement = DAE_AddChildElement(lSourceElement, TypeToArrayTag(), lContent); - DAE_AddAttribute(lArrayElement, COLLADA_ID_PROPERTY, lArrayID); - DAE_AddAttribute(lArrayElement, COLLADA_COUNT_PROPERTY, lDataCount); - - xmlNode * lTechniqueCommonElement = DAE_AddChildElement(lSourceElement, - COLLADA_TECHNIQUE_COMMON_ELEMENT); - xmlNode * lAccessElement = DAE_AddChildElement(lTechniqueCommonElement, - COLLADA_ACCESSOR_STRUCTURE); - DAE_AddAttribute(lAccessElement, COLLADA_SOURCE_PROPERTY, URL(lArrayID)); - DAE_AddAttribute(lAccessElement, COLLADA_COUNT_PROPERTY, pCount); - DAE_AddAttribute(lAccessElement, COLLADA_STRIDE_PROPERTY, pStride); - - for (int lStrideIndex = 0; lStrideIndex < pStride; ++lStrideIndex) - { - xmlNode * lParamElement = DAE_AddChildElement(lAccessElement, COLLADA_PARAMETER_STRUCTURE); - DAE_AddAttribute(lParamElement, COLLADA_TYPE_PROPERTY, TypeToParameterTag()); - } - - return lSourceElement; -} - -/** Populate the layer element with direct array and return index array for later use. - * \param pLayerElement The layer element to be populated. - * \param pSourceElement The source element containing the direct array data. - * \param pSize The count of double data of direct array element. - * \return Return the index array of the layer element. - */ -template FbxLayerElementArray * PopulateLayerElementDirectArray(FbxLayerElement * pLayerElement, xmlNode * pSourceElement, int pSize) -{ - SourceElementContentAccessor lSourceElementAccessor(pSourceElement); - - FbxLayerElementTemplate * lLayerElement = (FbxLayerElementTemplate *)pLayerElement; - lLayerElement->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lLayerElement->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayerElement->GetDirectArray().SetCount(lSourceElementAccessor.mCount); - - TYPE * lArray = NULL; - lArray = lLayerElement->GetDirectArray().GetLocked(lArray); - lSourceElementAccessor.GetArray((double *)lArray, lSourceElementAccessor.mCount*pSize, 0, pSize, - lSourceElementAccessor.mStride, 0, pSize, sizeof(TYPE)/sizeof(double), 1.0); - lLayerElement->GetDirectArray().Release(&lArray, lArray); - - return &(lLayerElement->GetIndexArray()); -} - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h deleted file mode 100755 index de6cf0f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladaiostream.h -#ifndef _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ -#define _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ - -#include - -#include - -//----------------------------------------------------------------------------// - -/** Convert part of the source string into destination type. - * \param pDest The destination with a specific type. - * \param pSourceBegin The begin of the source string. - * \param pSourceEnd Return the end of the part of the source string. - * \return Return \c true on success and \c false if else. - */ -template bool FromString(T * pDest, const char * pSourceBegin, const char ** pSourceEnd = NULL); -template <> bool FromString(int * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(double * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxString * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble2 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble3 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxDouble4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxVector4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); -template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); - - - -/** Parse the string into an array. - * The source string is made up with many groups and each group contains pSourceGroupSize units separated by spaces; - * The destination array is also made up with many groups and each unit contains pDestGroupSize units. - * The valid unit range in each source group is [pSourceUnitOffset, pSourceUnitOffset + pSourceValidUnitCount). - * The valid unit range in each destination unit is [pDestUnitOffset, pDestUnitOffset + pDestValidUnitCount). - * The units in invalid range of destination is set to a default value. - */ -template int FromStringToArray(const char * pString, TYPE * pArray, int pArraySize, int pSourceUnitOffset, int pSourceValidUnitCount, int pSourceGroupSize, int pDestUnitOffset, int pDestValidUnitCount, int pDestGroupSize, TYPE pDefaultValue = TYPE()) -{ - if (pString == 0 || pArray == 0) - return 0; - - FBX_ASSERT(pSourceUnitOffset >= 0 && pSourceUnitOffset < pSourceGroupSize); - FBX_ASSERT(pSourceValidUnitCount >= 0 && pSourceUnitOffset + pSourceValidUnitCount <= pSourceGroupSize); - FBX_ASSERT(pDestUnitOffset >= 0 && pDestUnitOffset < pDestGroupSize); - FBX_ASSERT(pDestValidUnitCount >= 0 && pDestUnitOffset + pDestValidUnitCount <= pDestGroupSize); - const char * lSource = pString; - TYPE * lDest = pArray; - - int lReadCount = 0; - int lSourceCounter = 0; - int lDestCounter = 0; - const int lSourceUnitValidEnd = pSourceUnitOffset + pSourceValidUnitCount; - const int lDestUnitGap = pDestGroupSize - pDestValidUnitCount - pDestUnitOffset; - while (lSource && *lSource) - { - TYPE lData; - const char * lSourceStart = lSource; - if (FromString(&lData, lSource, &lSource) && lSourceCounter >= pSourceUnitOffset && lSourceCounter < lSourceUnitValidEnd) - { - if (lReadCount >= pArraySize) - { - // we are trying to write past the allocated buffer - return 0; - } - - if (lDestCounter == 0) - { - for (int lIndex = 0; lIndex < pDestUnitOffset; ++lIndex) - *(lDest++) = pDefaultValue; - } - - *lDest++ = lData; - ++lReadCount; - ++lDestCounter; - if (lDestCounter == pDestValidUnitCount) - { - lDestCounter = 0; - for (int lIndex = 0; lIndex < lDestUnitGap; ++lIndex) - *lDest++ = pDefaultValue; - } - } - else - { - // we met a stop condition of FromString. In the normal case, lSource should now be "" or ' '. If not, - // the converted string is corrupted and we have to break the loop. We can detect this by checking - // if lSource pointer has moved. - if (lSource == lSourceStart) - { - break; - } - } - ++lSourceCounter; - if (lSourceCounter == pSourceGroupSize) - lSourceCounter = 0; - } - return lReadCount; -} - -//----------------------------------------------------------------------------// - -template -const FbxString ToString(const T & pValue) -{ - return FbxString(pValue); -} -template <> -const FbxString ToString(const FbxVector4 & pValue); -template <> -const FbxString ToString(const FbxAMatrix & pValue); - -//----------------------------------------------------------------------------// - -/** Decode percent encoded characters, returns an empty string if there's an error. - * For example, a string like "abc%20abc" is converted into "abc abc". - * \param pEncodedString The percent encoded string. - * \return The decoded string. - */ -const FbxString DecodePercentEncoding(const FbxString & pEncodedString); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h deleted file mode 100755 index 76f5c0c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladanamespace.h -#ifndef _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ -#define _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ - -#include - -#include - -#include - -/** Containing the valid parameter definition and modification in local scope. - */ -struct FbxColladaNamespace -{ -public: - /** Push the newparam and setparam elements found in this element. - * Call this method at the beginning of importing an element. - * \param pElement The specific element. - */ - void Push(xmlNode * pElement); - - /** Pop the newparam and setparam elements found in this element. - * Call this method at the end of importing an element. - */ - void Pop(); - - /** Find the specific newparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamDefinition(const char * pSID) const; - - /** Find the specific setparam element with given SID. - * \param pSID The given SID. - * \return Return the found element or NULL if fail. - */ - xmlNode * FindParamModification(const char * pSID) const; - - /** Get the count of all the setparam elements in local scope. - * \return The count. - */ - int GetParamModificationCount() const; - - /** Get the setparam element with given index. - * \param pIndex The given index. - * \return The element. - */ - xmlNode * GetParamModification(int pIndex) const; - -private: - FbxArray mParamDefinition; - FbxArray mParamDefinitionCount; - - FbxArray mParamModification; - FbxArray mParamModificationCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h deleted file mode 100755 index db735a5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h +++ /dev/null @@ -1,472 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladatokens.h -#ifndef _FBXSDK_FILEIO_COLLADA_TOKENS_H_ -#define _FBXSDK_FILEIO_COLLADA_TOKENS_H_ - -#define XML_STR (const xmlChar*) - -// In COLLADA, 1 means total control, while 100 means total control in FBX. -const int COLLADA_MORPH_WEIGHT_TO_FBX_RATIO = 100; - -#define COLLADA_VERSION_PROPERTY "version" -#define COLLADA_VERSION "1.4.1" -#define COLLADA_SCHEMA "http://www.collada.org/2005/11/COLLADASchema" - -// COLLADA 1.4 elements -#define COLLADA_LIBRARY_ANIMATION_ELEMENT "library_animations" -#define COLLADA_LIBRARY_ANIMATION_CLIP_ELEMENT "library_animation_clips" -#define COLLADA_LIBRARY_CAMERA_ELEMENT "library_cameras" -#define COLLADA_LIBRARY_CONTROLLER_ELEMENT "library_controllers" -#define COLLADA_LIBRARY_EFFECT_ELEMENT "library_effects" -#define COLLADA_LIBRARY_FFIELDS_ELEMENT "library_force_fields" -#define COLLADA_LIBRARY_GEOMETRY_ELEMENT "library_geometries" -#define COLLADA_LIBRARY_IMAGE_ELEMENT "library_images" -#define COLLADA_LIBRARY_LIGHT_ELEMENT "library_lights" -#define COLLADA_LIBRARY_MATERIAL_ELEMENT "library_materials" -#define COLLADA_LIBRARY_NODE_ELEMENT "library_nodes" -#define COLLADA_LIBRARY_PMATERIAL_ELEMENT "library_physics_materials" -#define COLLADA_LIBRARY_PMODEL_ELEMENT "library_physics_models" -#define COLLADA_LIBRARY_PSCENE_ELEMENT "library_physics_scenes" -#define COLLADA_LIBRARY_VSCENE_ELEMENT "library_visual_scenes" - -#define COLLADA_INSTANCE_ANIMATION_ELEMENT "instance_animation" -#define COLLADA_INSTANCE_CAMERA_ELEMENT "instance_camera" -#define COLLADA_INSTANCE_CONTROLLER_ELEMENT "instance_controller" -#define COLLADA_INSTANCE_EFFECT_ELEMENT "instance_effect" -#define COLLADA_INSTANCE_GEOMETRY_ELEMENT "instance_geometry" -#define COLLADA_INSTANCE_LIGHT_ELEMENT "instance_light" -#define COLLADA_INSTANCE_NODE_ELEMENT "instance_node" -#define COLLADA_INSTANCE_VSCENE_ELEMENT "instance_visual_scene" -#define COLLADA_INSTANCE_PSCENE_ELEMENT "instance_physics_scene" -#define COLLADA_INSTANCE_MATERIAL_ELEMENT "instance_material" - -#define COLLADA_ANIMCLIP_ELEMENT "animation_clip" -#define COLLADA_BINDMATERIAL_ELEMENT "bind_material" -#define COLLADA_EFFECT_ELEMENT "effect" -#define COLLADA_INITFROM_ELEMENT "init_from" -#define COLLADA_SAMPLER_ELEMENT "sampler" -#define COLLADA_SKELETON_ELEMENT "skeleton" -#define COLLADA_TARGETS_ELEMENT "targets" -#define COLLADA_TECHNIQUE_COMMON_ELEMENT "technique_common" -#define COLLADA_VSCENE_ELEMENT "visual_scene" -#define COLLADA_WEIGHTS_ELEMENT "vertex_weights" -#define COLLADA_VERTEXCOUNT_ELEMENT "vcount" - -#define COLLADA_FX_PROFILE_COMMON_ELEMENT "profile_COMMON" -#define COLLADA_FX_PROFILE_CG_ELEMENT "profile_CG" -#define COLLADA_FX_PROFILE_HLSL_ELEMENT "profile_HLSL" -#define COLLADA_FX_PROFILE_GLSL_ELEMENT "profile_GLSL" -#define COLLADA_FX_PROFILE_GLES_ELEMENT "profile_GLES" - -#define COLLADA_FXCMN_FLOAT_ELEMENT "float" -#define COLLADA_FXCMN_FLOAT4_ELEMENT "float4" -#define COLLADA_FXCMN_FLOAT4X4_ELEMENT "float4x4" -#define COLLADA_FXCMN_INCLUDE_ELEMENT "include" -#define COLLADA_FXCMN_SURFACE_ELEMENT "surface" -#define COLLADA_FXCMN_SAMPLER1D_ELEMENT "sampler1D" -#define COLLADA_FXCMN_SAMPLER2D_ELEMENT "sampler2D" -#define COLLADA_FXCMN_SAMPLER3D_ELEMENT "sampler3D" -#define COLLADA_FXCMN_SAMPLERCUBE_ELEMENT "samplerCUBE" -#define COLLADA_FXCMN_NEWPARAM_ELEMENT "newparam" -#define COLLADA_FXCMN_SETPARAM_ELEMENT "setparam" -#define COLLADA_FXCMN_STRING_ELEMENT "string" - -#define COLLADA_TECHNIQUE_STANDARD_PARAMETER "standard" - -#define COLLADA_FXSTD_CONSTANT_ELEMENT "constant" -#define COLLADA_FXSTD_LAMBERT_ELEMENT "lambert" -#define COLLADA_FXSTD_PHONG_ELEMENT "phong" -#define COLLADA_FXSTD_BLINN_ELEMENT "blinn" -#define COLLADA_FXSTD_COLOR_ELEMENT "color" -#define COLLADA_FXSTD_FLOAT_ELEMENT "float" -#define COLLADA_FXSTD_SAMPLER_ELEMENT "texture" -#define COLLADA_FXSTD_TEXTURE_ATTRIBUTE "texture" -#define COLLADA_FXSTD_TEXTURESET_ATTRIBUTE "texcoord" - -#define COLLADA_CONTROLLER_SKIN_ELEMENT "skin" -#define COLLADA_CONTROLLER_MORPH_ELEMENT "morph" - -#define COLLADA_CAMERA_PERSP_ELEMENT "perspective" -#define COLLADA_CAMERA_ORTHO_ELEMENT "orthographic" - -#define COLLADA_ASPECT_CAMERA_PARAMETER "aspect_ratio" -#define COLLADA_XFOV_CAMERA_PARAMETER "xfov" -#define COLLADA_YFOV_CAMERA_PARAMETER "yfov" -#define COLLADA_ZNEAR_CAMERA_PARAMETER "znear" -#define COLLADA_ZFAR_CAMERA_PARAMETER "zfar" -#define COLLADA_XMAG_CAMERA_PARAMETER "xmag" -#define COLLADA_YMAG_CAMERA_PARAMETER "ymag" -#define COLLADA_CAMERA_VERTICAL_APERTURE_PARAMETER "vertical_aperture" -#define COLLADA_CAMERA_HORIZONTAL_APERTURE_PARAMETER "horizontal_aperture" -#define COLLADA_CAMERA_LENS_SQUEEZE_PARAMETER "lens_squeeze" - -#define COLLADA_AMBIENT_MATERIAL_PARAMETER "ambient" -#define COLLADA_BUMP_MATERIAL_PARAMETER "bump" -#define COLLADA_DIFFUSE_MATERIAL_PARAMETER "diffuse" -#define COLLADA_EMISSION_MATERIAL_PARAMETER "emission" -#define COLLADA_TRANSPARENCY_MATERIAL_PARAMETER "transparency" -#define COLLADA_TRANSPARENT_MATERIAL_PARAMETER "transparent" -#define COLLADA_REFLECTIVE_MATERIAL_PARAMETER "reflective" -#define COLLADA_REFLECTIVITY_MATERIAL_PARAMETER "reflectivity" -#define COLLADA_SHININESS_MATERIAL_PARAMETER "shininess" -#define COLLADA_SPECULAR_MATERIAL_PARAMETER "specular" -#define COLLADA_INDEXOFREFRACTION_MATERIAL_PARAMETER "index_of_refraction" -#define COLLADA_OPAQUE_MODE_ATTRIBUTE "opaque" -#define COLLADA_OPAQUE_MODE_A_ONE "A_ONE" -#define COLLADA_OPAQUE_MODE_RGB_ONE "RGB_ONE" -#define COLLADA_OPAQUE_MODE_A_ZERO "A_ZERO" -#define COLLADA_OPAQUE_MODE_RGB_ZERO "RGB_ZERO" - -#define COLLADA_LIGHT_AMBIENT_ELEMENT "ambient" -#define COLLADA_LIGHT_POINT_ELEMENT "point" -#define COLLADA_LIGHT_DIRECTIONAL_ELEMENT "directional" -#define COLLADA_LIGHT_SPOT_ELEMENT "spot" - -#define COLLADA_COLOR_LIGHT_PARAMETER "color" -#define COLLADA_CONST_ATTENUATION_LIGHT_PARAMETER "constant_attenuation" -#define COLLADA_LIN_ATTENUATION_LIGHT_PARAMETER "linear_attenuation" -#define COLLADA_QUAD_ATTENUATION_LIGHT_PARAMETER "quadratic_attenuation" -#define COLLADA_FALLOFFEXPONENT_LIGHT_PARAMETER "falloff_exponent" -#define COLLADA_FALLOFFANGLE_LIGHT_PARAMETER "falloff_angle" - -#define COLLADA_BINDSHAPEMX_SKIN_PARAMETER "bind_shape_matrix" - -#define COLLADA_CONTRIBUTOR_ASSET_ELEMENT "contributor" -#define COLLADA_AUTHOR_ASSET_PARAMETER "author" -#define COLLADA_AUTHORINGTOOL_ASSET_PARAMETER "authoring_tool" -#define COLLADA_CREATED_ASSET_PARAMETER "created" -#define COLLADA_MODIFIED_ASSET_PARAMETER "modified" -#define COLLADA_REVISION_ASSET_PARAMETER "revision" -#define COLLADA_SOURCEDATA_ASSET_PARAMETER "source_data" -#define COLLADA_UNITS_ASSET_PARAMETER "unit" -#define COLLADA_UPAXIS_ASSET_PARAMETER "up_axis" - -#define COLLADA_SYMBOL_PROPERTY "symbol" - -// From Collada 1.3 -#define COLLADA_DOCUMENT_STRUCTURE "COLLADA" -#define COLLADA_ASSET_STRUCTURE "asset" -#define COLLADA_REVISION_STRUCTURE "revision" -#define COLLADA_AUTHORING_TOOL_STRUCTURE "authoring_tool" -#define COLLADA_CREATED_STRUCTURE "created" -#define COLLADA_MODIFIED_STRUCTURE "modified" -#define COLLADA_AUTHOR_STRUCTURE "author" -#define COLLADA_TITLE_STRUCTURE "title" -#define COLLADA_SUBJECT_STRUCTURE "subject" -#define COLLADA_KEYWORDS_STRUCTURE "keywords" -#define COLLADA_COMMENTS_STRUCTURE "comments" -#define COLLADA_UNIT_STRUCTURE "unit" -#define COLLADA_SOURCE_DATA_STRUCTURE "source_data" -#define COLLADA_UP_AXIS_STRUCTURE "up_axis" -#define COLLADA_LIBRARY_STRUCTURE "library" // Deprecated 1.4 -#define COLLADA_SCENE_STRUCTURE "scene" -#define COLLADA_NODE_STRUCTURE "node" -#define COLLADA_MATRIX_STRUCTURE "matrix" -#define COLLADA_TRANSFORM_STRUCTURE "transform" -#define COLLADA_TRANSLATE_STRUCTURE "translate" -#define COLLADA_TRANSLATION_STRUCTURE "translation" // For ColladaMax -#define COLLADA_TRANSLATE_ORIGIN "origin" //A fix for Poser(Bug 309548). Handle translate origin info exported from Poser. -#define COLLADA_TRANSLATE_LOCATION "location" //A fix for ? (Bug BARB-154). "location" is synonyn of "translate" ? -#define COLLADA_ROTATE_STRUCTURE "rotate" -#define COLLADA_SCALE_STRUCTURE "scale" -#define COLLADA_SKEW_STRUCTURE "skew" -#define COLLADA_ROTATE_X "rotateX" -#define COLLADA_ROTATE_Y "rotateY" -#define COLLADA_ROTATE_Z "rotateZ" -#define COLLADA_ROT_X "RotX" // For ColladaMax -#define COLLADA_ROT_Y "RotY" -#define COLLADA_ROT_Z "RotZ" -#define COLLADA_ROTATION_X "rotation_x" // For XSI -#define COLLADA_ROTATION_Y "rotation_y" -#define COLLADA_ROTATION_Z "rotation_z" -#define COLLADA_ROTATIONX "rotationX" // BARB-154 -#define COLLADA_ROTATIONY "rotationY" -#define COLLADA_ROTATIONZ "rotationZ" - -#define COLLADA_ROTATE_PIVOT "rotatePivot" // the next 6 subids are recognized by ColladaMaya -#define COLLADA_SCALE_PIVOT "scalePivot" -#define COLLADA_ROTATE_PIVOT_INVERSE "rotatePivotInverse" -#define COLLADA_SCALE_PIVOT_INVERSE "scalePivotInverse" -#define COLLADA_ROTATE_PIVOT_OFFSET "rotatePivotTranslation" -#define COLLADA_SCALE_PIVOT_OFFSET "scalePivotTranslation" -#define COLLADA_PRE_ROTATION_X "jointOrientX" // these 3 subids recognized by ColladaMaya -#define COLLADA_PRE_ROTATION_Y "jointOrientY" -#define COLLADA_PRE_ROTATION_Z "jointOrientZ" -#define COLLADA_POST_ROTATION_X "post-rotationX" // these 3 subids NOT recognized by ColladaMaya -#define COLLADA_POST_ROTATION_Y "post-rotationY" -#define COLLADA_POST_ROTATION_Z "post-rotationZ" -#define COLLADA_ROTATE_AXIS_X "rotateAxisX" // these 3 subids recognized by ColladaMaya -#define COLLADA_ROTATE_AXIS_Y "rotateAxisY" -#define COLLADA_ROTATE_AXIS_Z "rotateAxisZ" -#define COLLADA_LOOKAT_STRUCTURE "lookat" -#define COLLADA_PERSPECTIVE_STRUCTURE "perspective" -#define COLLADA_GEOMETRY_STRUCTURE "geometry" -#define COLLADA_MESH_STRUCTURE "mesh" -#define COLLADA_VERTICES_STRUCTURE "vertices" -#define COLLADA_POLYGONS_STRUCTURE "polygons" -#define COLLADA_POLYLIST_STRUCTURE "polylist" -#define COLLADA_TRIANGLES_STRUCTURE "triangles" -#define COLLADA_P_STRUCTURE "p" -#define COLLADA_ANIMATION_STRUCTURE "animation" -#define COLLADA_CONTROLLER_STRUCTURE "controller" -#define COLLADA_SKIN_STRUCTURE "skin" -#define COLLADA_COMBINER_STRUCTURE "combiner" -#define COLLADA_JOINTS_STRUCTURE "joints" -#define COLLADA_VALUE_STRUCTURE "v" -#define COLLADA_MATERIAL_STRUCTURE "material" -#define COLLADA_SHADER_STRUCTURE "shader" -#define COLLADA_PASS_STRUCTURE "pass" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_TEXTURE_STRUCTURE "texture" -#define COLLADA_IMAGE_STRUCTURE "image" -#define COLLADA_INPUT_STRUCTURE "input" -#define COLLADA_TECHNIQUE_STRUCTURE "technique" -#define COLLADA_SOURCE_STRUCTURE "source" -#define COLLADA_ACCESSOR_STRUCTURE "accessor" -#define COLLADA_EXTRA_STRUCTURE "extra" -#define COLLADA_BOUNDINGBOX_STRUCTURE "boundingbox" -#define COLLADA_MIN_STRUCTURE "min" -#define COLLADA_MAX_STRUCTURE "max" - -#define COLLADA_ARRAY_STRUCTURE "array" -#define COLLADA_FLOAT_ARRAY_STRUCTURE "float_array" -#define COLLADA_INT_ARRAY_STRUCTURE "int_array" -#define COLLADA_NAME_ARRAY_STRUCTURE "Name_array" -#define COLLADA_IDREF_ARRAY_STRUCTURE "IDREF_array" -#define COLLADA_BOOL_ARRAY_STRUCTURE "bool_array" - -#define COLLADA_SAMPLER_STRUCTURE "sampler" -#define COLLADA_CHANNEL_STRUCTURE "channel" -#define COLLADA_CAMERA_STRUCTURE "camera" -#define COLLADA_LIGHT_STRUCTURE "light" -#define COLLADA_OPTICS_STRUCTURE "optics" -#define COLLADA_PROGRAM_STRUCTURE "program" -#define COLLADA_PARAMETER_STRUCTURE "param" - -#define COLLADA_TYPE_PROPERTY "type" -#define COLLADA_ID_PROPERTY "id" -#define COLLADA_SUBID_PROPERTY "sid" -#define COLLADA_NAME_PROPERTY "name" -#define COLLADA_LAYER_PROPERTY "layer" -#define COLLADA_COUNT_PROPERTY "count" -#define COLLADA_STRIDE_PROPERTY "stride" -#define COLLADA_URL_PROPERTY "url" -#define COLLADA_SEMANTIC_PROPERTY "semantic" -#define COLLADA_SOURCE_PROPERTY "source" -#define COLLADA_TARGET_PROPERTY "target" -#define COLLADA_PROFILE_PROPERTY "profile" -#define COLLADA_MATERIAL_PROPERTY "material" -#define COLLADA_METER_PROPERTY "meter" -#define COLLADA_IDX_PROPERTY "idx" -#define COLLADA_SET_PROPERTY "set" -#define COLLADA_OFFSET_PROPERTY "offset" -#define COLLADA_FLOW_PROPERTY "flow" -#define COLLADA_FORMAT_PROPERTY "format" -#define COLLADA_HEIGHT_PROPERTY "height" -#define COLLADA_WIDTH_PROPERTY "width" -#define COLLADA_DEPTH_PROPERTY "depth" -#define COLLADA_REF_PROPERTY "ref" - -#define COLLADA_GEOMETRY_LIBRARY_TYPE "GEOMETRY" -#define COLLADA_CONTROLLER_LIBRARY_TYPE "CONTROLLER" -#define COLLADA_ANIMATION_LIBRARY_TYPE "ANIMATION" -#define COLLADA_MATERIAL_LIBRARY_TYPE "MATERIAL" -#define COLLADA_TEXTURE_LIBRARY_TYPE "TEXTURE" -#define COLLADA_IMAGE_LIBRARY_TYPE "IMAGE" -#define COLLADA_LIGHT_LIBRARY_TYPE "LIGHT" -#define COLLADA_CAMERA_LIBRARY_TYPE "CAMERA" - -#define COLLADA_LAMBERT_SHADER_TYPE "LAMBERT" -#define COLLADA_PHONG_SHADER_TYPE "PHONG" -#define COLLADA_CONSTANT_SHADER_TYPE "CONSTANT" - -#define COLLADA_NAME_TYPE "name" -#define COLLADA_IDREF_TYPE "IDREF" -#define COLLADA_FLOAT_TYPE "float" -#define COLLADA_BOOL_TYPE "bool" -#define COLLADA_INT_TYPE "int" -#define COLLADA_FLOAT3_TYPE "float3" -#define COLLADA_FLOAT4_TYPE "float4" -#define COLLADA_FUNCTION_TYPE "function" -#define COLLADA_MATRIX_TYPE "float4x4" -#define COLLADA_STRING_TYPE "string" - -#define COLLADA_JOINT_NODE_TYPE "JOINT" -#define COLLADA_NODE_NODE_TYPE "NODE" - -#define COLLADA_TEXTURE_SEMANTIC "TEXTURE" -#define COLLADA_IMAGE_SEMANTIC "IMAGE" -#define COLLADA_INPUT_SEMANTIC "INPUT" -#define COLLADA_OUTPUT_SEMANTIC "OUTPUT" -#define COLLADA_IN_TANGENT_SEMANTIC "IN_TANGENT" -#define COLLADA_OUT_TANGENT_SEMANTIC "OUT_TANGENT" -#define COLLADA_INTERPOLATION_SEMANTIC "INTERPOLATION" -#define COLLADA_JOINT_SEMANTIC "JOINT" -#define COLLADA_BIND_POSITION_SEMANTIC "BIND_SHAPE_POSITION" -#define COLLADA_BIND_NORMAL_SEMANTIC "BIND_SHAPE_NORMAL" -#define COLLADA_JOINT_AND_WEIGHT_SEMANTIC "JOINTS_AND_WEIGHTS" -#define COLLADA_BIND_MATRIX_SEMANTIC "INV_BIND_MATRIX" -#define COLLADA_JOINT_PARAMETER "JOINT" -#define COLLADA_WEIGHT_PARAMETER "WEIGHT" -#define COLLADA_MORPH_TARGET_SEMANTIC "MORPH_TARGET" -#define COLLADA_MORPH_WEIGHT_SEMANTIC "MORPH_WEIGHT" - -#define COLLADA_GENERIC_TECHNIQUE "COMMON" - -#define COLLADA_TIME_TARGET "TIME" - -#define COLLADA_VERTEX_INPUT "VERTEX" -#define COLLADA_POSITION_INPUT "POSITION" -#define COLLADA_NORMAL_INPUT "NORMAL" -#define COLLADA_COLOR_INPUT "COLOR" -#define COLLADA_MAPPING_INPUT "UV" -#define COLLADA_TEXCOORD_INPUT "TEXCOORD" -#define COLLADA_TEXTANGENT_INPUT "TEXTANGENT" -#define COLLADA_TEXBINORMAL_INPUT "TEXBINORMAL" - -#define COLLADA_LIGHT_INTENSITY_PARAMETER_14 "intensity" -#define COLLADA_LIGHT_PENUMBRA_ANGLE_PARAMETER_14 "penumbra_angle" -#define COLLADA_LIGHT_DROPOFF_PARAMETER "dropoff" - -#define COLLADA_CAMERA_YFOV_PARAMETER "YFOV" -#define COLLADA_CAMERA_ZNEAR_PARAMETER "ZNEAR" -#define COLLADA_CAMERA_ZFAR_PARAMETER "ZFAR" -#define COLLADA_CAMERA_ORTHO_BOTTOM_PARAMETER "BOTTOM" -#define COLLADA_CAMERA_ORTHO_TOP_PARAMETER "TOP" -#define COLLADA_CAMERA_ORTHO_LEFT_PARAMETER "LEFT" -#define COLLADA_CAMERA_ORTHO_RIGHT_PARAMETER "RIGHT" - -#define COLLADA_TEXTURE_WRAPU_PARAMETER "wrapU" -#define COLLADA_TEXTURE_WRAPV_PARAMETER "wrapV" -#define COLLADA_TEXTURE_MIRRORU_PARAMETER "mirrorU" -#define COLLADA_TEXTURE_MIRRORV_PARAMETER "mirrorV" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER "BLEND_MODE" -#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER_14 "blend_mode" -#define COLLADA_TEXTURE_REPEATU_PARAMETER "repeatU" -#define COLLADA_TEXTURE_REPEATV_PARAMETER "repeatV" - -#define COLLADA_CONSTANT_FUNCTION "CONSTANT" -#define COLLADA_LINEAR_FUNCTION "LINEAR" -#define COLLADA_QUADRATIC_FUNCTION "QUADRATIC" - -#define COLLADA_INTERPOLATION_TYPE_LINEAR "LINEAR" -#define COLLADA_INTERPOLATION_TYPE_BEZIER "BEZIER" -#define COLLADA_INTERPOLATION_TYPE_CARDINAL "CARDINAL" -#define COLLADA_INTERPOLATION_TYPE_HERMITE "HERMITE" -#define COLLADA_INTERPOLATION_TYPE_BSPLINE "BSPLINE" -#define COLLADA_INTERPOLATION_TYPE_STEP "STEP" - -#define COLLADA_X_UP "X_UP" -#define COLLADA_Y_UP "Y_UP" -#define COLLADA_Z_UP "Z_UP" - -#define COLLADA_IN_FLOW "IN" -#define COLLADA_OUT_FLOW "OUT" -#define COLLADA_INOUT_FLOW "INOUT" - -// Obsolete, but kept here for backward compatibility. -#define COLLADA_RGB_TYPE "ColorRGB" // use float3 instead -#define COLLADA_RGBA_TYPE "ColorRGBA" // use float4 instead -#define COLLADA_RGB_INPUT "COLORRGB" // beta MAX exporter has been known to generate them -#define COLLADA_RGBA_INPUT "COLORRGBA" // beta MAX exporter has been known to generate them - -// Physics extension. Currently in prototype phase. -#define COLLADA_PHYSICS_LIBRARY_TYPE "PHYSICS" -#define COLLADA_SHAPE_STRUCTURE "shape" -#define COLLADA_RIGID_BODY_STRUCTURE "rigidbody" -#define COLLADA_DYNAMIC_STRUCTURE "dynamic" -#define COLLADA_MASS_STRUCTURE "mass" -#define COLLADA_PHYSICS_MATERIAL_STRUCTURE "physics_material" -#define COLLADA_STATIC_FRICTION_ATTRIBUTE "STATIC_FRICTION" -#define COLLADA_DYNAMIC_FRICTION_ATTRIBUTE "DYNAMIC_FRICTION" -#define COLLADA_ELASTICITY_ATTRIBUTE "ELASTICITY" -#define COLLADA_BOX_STRUCTURE "box" -#define COLLADA_SPHERE_STRUCTURE "sphere" -#define COLLADA_CAPSULE_STRUCTURE "capsule" -#define COLLADA_CYLINDER_STRUCTURE "cylinder" -#define COLLADA_ELLIPSOID_STRUCTURE "ellipsoid" -#define COLLADA_SIZE_STRUCTURE "size" -#define COLLADA_RADIUS_STRUCTURE "radius" -#define COLLADA_PHYSICS_ENVIRONMENT_STRUCTURE "physics_environment" -#define COLLADA_ENVIRONMENT_ID "Environment" -#define COLLADA_TIMESTEP_ATTRIBUTE "TIMESTEP" -#define COLLADA_GRAVITY_ATTRIBUTE "gravity" -#define COLLADA_INITIAL_VELOCITY_STRUCTURE "initial_velocity" -#define COLLADA_INITIAL_ANGULAR_VELOCITY_STRUCTURE "initial_angular_velocity" -#define COLLADA_CONVEX_MESH_STRUCTURE "convex_mesh" -#define COLLADA_INERTIA_STRUCTURE "inertia" -#define COLLADA_DENSITY_STRUCTURE "density" -#define COLLADA_CENTER_OF_MASS_STRUCTURE "center_of_mass" -#define COLLADA_DYNAMICS_STRUCTURE "dynamics" -#define COLLADA_RIGID_CONSTRAINT_STRUCTURE "rigid_constraint" -#define COLLADA_BODY_PROPERTY "body" -#define COLLADA_ATTACHMENT_STRUCTURE "attachment" -#define COLLADA_ROT_LIMIT_MIN_STRUCTURE "rot_limit_min" -#define COLLADA_ROT_LIMIT_MAX_STRUCTURE "rot_limit_max" -#define COLLADA_TRANS_LIMIT_MIN_STRUCTURE "trans_limit_min" -#define COLLADA_TRANS_LIMIT_MAX_STRUCTURE "trans_limit_max" -#define COLLADA_ENABLED_STRUCTURE "enabled" -#define COLLADA_INTERPENETRATE_STRUCTURE "interpenetrate" -#define COLLADA_SPRING_STRUCTURE "spring" -#define COLLADA_STIFFNESS_STRUCTURE "stiffness" -#define COLLADA_DAMPING_STRUCTURE "damping" -#define COLLADA_REST_LENGTH_STRUCTURE "rest_length" -#define COLLADA_P0_STRUCTURE "p0" -#define COLLADA_P1_STRUCTURE "p1" -#define COLLADA_TRUE_KEYWORD "TRUE" -#define COLLADA_FALSE_KEYWORD "FALSE" - -#define COLLADA_LINES_STRUCTURE "lines" -#define COLLADA_LINESTRIP_STRUCTURE "linestrips" -#define COLLADA_TRIFANS_STRUCTURE "trifans" -#define COLLADA_TRISTRIPS_STRUCTURE "tristrips" - -// Extensions - -// Feeling Software ColladaMaya extensions -#define COLLADA_MAYA_PROFILE "MAYA" - -#define COLLADA_MAYA_LAYER_ELEMENT "layer" - -// Feeling Software ColladaMax extensions -#define COLLADA_MAX3D_PROFILE "MAX3D" - -#define COLLADA_MAX3D_FRAMERATE_ELEMENT "frame_rate" - -// Feeling Software FCollada extensions -#define COLLADA_FCOLLADA_PROFILE "FCOLLADA" - -#define COLLADA_FCOLLADA_STARTTIME_ELEMENT "start_time" -#define COLLADA_FCOLLADA_ENDTIME_ELEMENT "end_time" -#define COLLADA_FCOLLADA_VISIBILITY_ELEMENT "visibility" - -// XSI COLLADA extensions -#define COLLADA_XSI_PROFILE "XSI" - -#define COLLADA_XSI_VISIBILITY_ELEMENT "SI_Visibility" - -// FBX COLLADA extensions -#define COLLADA_FBX_PROFILE "FBX" - -#define COLLADA_FBX_TARGET_ELEMENT "target" - -// NVidia FXComposer extension -----------------------------------------------// - -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE "NVIDIA_FXCOMPOSER" - -#define COLLADA_NVIDIA_FXCOMPOSER_IMPORT_ELEMENT "import" -#define COLLADA_NVIDIA_FXCOMPOSER_URL_ATTRIBUTE "url" -#define COLLADA_NVIDIA_FXCOMPOSER_COMPILER_OPTIONS_ATTRIBUTE "compiler_options" -#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE_ATTRIBUTE "profile" - -#endif /* _FBXSDK_FILEIO_COLLADA_TOKENS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h deleted file mode 100755 index 8764bc7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxcolladautils.h +++ /dev/null @@ -1,394 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcolladautils.h -#ifndef _FBXSDK_FILEIO_COLLADA_UTILS_H_ -#define _FBXSDK_FILEIO_COLLADA_UTILS_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyCollada : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyCollada(); - virtual ~FbxRenamingStrategyCollada(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName = false); -}; - - -#ifndef INT_MAX - #define INT_MAX 0x7FFFFFFF -#endif - -#ifndef CENTIMETERS_TO_INCHES - #define CENTIMETERS_TO_INCHES 2.54f -#endif - -#ifndef RADIANS_TO_DEGREES - #define RADIANS_TO_DEGREES 57.295799f -#endif - -enum DAE_Flow { kCOLLADAFlowIn, kCOLLADAFlowOut, kCOLLADAFlowInOut }; - -const int MATRIX_STRIDE = 16; -const int VECTOR_STRIDE = 3; - -#define COLLADA_ID_PROPERTY_NAME "COLLADA_ID" - -class XmlNodeDeletionPolicy -{ -public: - static inline void DeleteIt(xmlNode ** ptr) - { - if (*ptr != NULL) - { - xmlFreeNode(*ptr); - *ptr = NULL; - } - } -}; - -typedef FbxAutoPtr XmlNodePtr; -typedef FbxMap< FbxString, xmlNode* > SourceElementMapType; -typedef FbxMap< FbxString, xmlNode* > SkinMapType; - -// Some information connecting COLLADA layer string, such as "NORMAL" or "UV", to FBX layer element type. -struct ColladaLayerTraits -{ - ColladaLayerTraits() - : mLayerType(FbxLayerElement::eUnknown), mLayerElementLength(0) {} - - ColladaLayerTraits(FbxLayerElement::EType pType, int pLength) - : mLayerType(pType), mLayerElementLength(pLength) {} - - // Type of FBX element layer - FbxLayerElement::EType mLayerType; - // Count of double of each element in FBX element layer - int mLayerElementLength; - - /** Construct traits according to COLLADA layer string. - * \param pLabel COLLADA layer string. - * \return Return created traits. - */ - static const ColladaLayerTraits GetLayerTraits(const FbxString & pLabel); -}; - -/** Emit error message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pErrorMessage The message to be presented. - */ -void DAE_AddNotificationError(const FbxManager * pSdkManger, const FbxString & pErrorMessage); - -/** Emit warning message. - * \param pSdkManger The SDK manager used to access user notification object. - * \param pWarningMessage The message to be presented. - */ -void DAE_AddNotificationWarning(const FbxManager * pSdkManger, const FbxString & pWarningMessage); - -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxStringList& arr); - -// Syntax modification - for COLLADA 1.4 -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& accessorParams, FbxArray& arr, bool isCommonProfile=true); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); -xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& arr, const char* type, bool isCommonProfile=true); - - -void DAE_ExportSourceArray(xmlNode* sourceNode, const char* id, FbxArray& arr); -void DAE_ExportSourceArray14(xmlNode* sourceNode, const char* id, FbxArray& arr); - -xmlNode* DAE_ExportAccessor(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); -xmlNode* DAE_ExportAccessor14(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); - -void DAE_AddXYZAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddFlow(xmlNode* node, DAE_Flow flow); -void DAE_AddXYZAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); -void DAE_AddSTAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); - -// AddParameter functions for COLLADA 1.3. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value, DAE_Flow flow); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value, DAE_Flow flow); - -// Overload functions without DAE_Flow, for COLLADA 1.4. -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxDouble3& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value); -xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value); -xmlNode* DAE_AddTechnique(xmlNode* parentXmlNode, const char* technique); -void DAE_AddInput(xmlNode* parentXmlNode, const char* semantic, const char* source, int idx = -1); -void DAE_AddInput14(xmlNode* parentXmlNode, const char* semantic, const char* source, int offset = -1, int set=-1); - -FbxString matrixToString(const FbxAMatrix& mx); - -typedef FbxArray CNodeList; - -/** Find children elements whose type is included in a list of type. - * \param pParentElement The parent element. - * \param pTypes The list of types. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const FbxSet& pTypes, CNodeList& pChildrenElements); - -/** Find children elements of a specific type. - * \param pParentElement The parent element. - * \param pType The type. - * \param pChildrenElements The found children elements. - */ -void findChildrenByType(xmlNode* pParentElement, const char * pType, CNodeList& pChildrenElements); - -xmlNode* getSourceAccessor(xmlNode* sourceNode); -xmlNode* getTechniqueNode(xmlNode* parent, const char * profile); - -// Conversions -inline double inchesToCentimeters(double val) { return FbxFloor(val / CENTIMETERS_TO_INCHES * 100000) / 100000; } -inline double centimetersToInches(double val) { return FbxFloor(val * CENTIMETERS_TO_INCHES * 100000) / 100000; } - -inline double degreesToRadians(double val) { return FbxFloor(val / RADIANS_TO_DEGREES * 100000) / 100000; } -inline double radiansToDegrees(double val) { return FbxFloor(val * RADIANS_TO_DEGREES * 100000) / 100000; } - -/** Find a child element with a given attribute value. - * \param pParentElement The parent element. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \param pDefaultAttributeValue The default value of the attribute used when the attribute is not found explicitly. - * \return Return NULL if no child element has the given attribute value. - */ -xmlNode* DAE_FindChildElementByAttribute(xmlNode* pParentElement, const char * pAttributeName, - const char * pAttributeValue, const char * pDefaultAttributeValue = ""); - -/** Find a child element with a given tag. - * \param pParentElement The parent element. - * \param pTag The value of the tag. - * \param pFindFrom Find from the next child after pFindFrom if pFindFrom is not NULL. - * \return Return NULL if no child element has the given tag. - */ -xmlNode* DAE_FindChildElementByTag(xmlNode* pParentElement, const char * pTag, xmlNode* pFindFrom = NULL); - -/** Get the content of a XML element. - * \param pElement The element whose content is returned. - * \param pData The returned data. - */ -template -void DAE_GetElementContent(xmlNode * pElement, TYPE & pData) -{ - if (pElement != NULL) - { - xmlChar* lContent = xmlNodeGetContent(pElement); - if (lContent) - { - FromString(&pData, (const char *)lContent); - xmlFree(lContent); - } - } -} - -/** Check whether this node is compatible to FBX transform structure. - * \param pNodeElement The specific node element. - * \return Return true if it is compatible. - */ -bool DAE_CheckCompatibility(xmlNode * pNodeElement); - -/** Get the tag of the specific element. - * \param pElement The specific element. - * \param pTag Return the tag of the element. - */ -void DAE_GetElementTag(xmlNode * pElement, FbxString & pTag); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \return The value of the attribute in the form of a string. If the attribute is not available, an empty string is returned. - */ -const FbxString DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName); - -/** Get the value of an attribute of an element. - * \param pElement The specific XML element. - * \param pAttributeName The name of the specific attribute. - * \param pData The returned data. - * \return Return \c true on success and \c false if no attribute has the given name. - */ -template -bool DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName, TYPE & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue = xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - FromString(&pData, (const char *)lPropertyValue); - xmlFree(lPropertyValue); - return true; - } - return false; -} - -// Special instantiation for string; -// Omit the whitespaces, just return the whole string -template <> -inline bool DAE_GetElementAttributeValue(xmlNode * pElement, - const char * pAttributeName, - FbxString & pData) -{ - if (!pElement || !pAttributeName) - return false; - - xmlChar* lPropertyValue =xmlGetProp(pElement, (const xmlChar *)pAttributeName); - if (lPropertyValue) - { - pData = (const char *)lPropertyValue; - xmlFree(lPropertyValue); - return true; - } - return false; -} - -/** Compare the value of specific attribute of specific element with given value. - * \param pElement The specific element. - * \param pAttributeName The name of the specific attribute. - * \param pValue The value to compare with. - * \return Return true if values equal. - */ -bool DAE_CompareAttributeValue(xmlNode * pElement, - const char * pAttributeName, - const char * pValue); - -/** Get the ID of another element from the url attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \param pExternalRef The external reference part of the url (before the #) - * \return The ID of another element if success, or an empty string if no url attributes are found. - */ -const FbxString DAE_GetIDFromUrlAttribute(xmlNode * pElement, FbxString& pExternalRef); - -/** Get the ID of another element from the source attribute of the given element. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no source attributes are found. - */ -const FbxString DAE_GetIDFromSourceAttribute(xmlNode * pElement); - -/** Get the ID of another element from the target attribute of the given element. - * Note that in target attribute, the URI identifier may or may not preceded with the pound sign. - * \param pElement The specific XML element in which the ID is looked for. - * \return The ID of another element if success, or an empty string if no target attributes are found. - */ -const FbxString DAE_GetIDFromTargetAttribute(xmlNode * pElement); - -/** Set the name of the object with a given name. If the name is empty, use the ID. - * \param pObject The object whose name is to be set. - * \param pName The name string. - * \param pID The ID string. - */ -void DAE_SetName(FbxObject * pObject, const FbxString & pName, const FbxString & pID); - -/** Get the COLLADA source element with a semantic meaning and a consumer element; - * The COLLADA input element declares the input connections to a data source that a consumer requires. - * A data source is a container of raw data that lacks semantic meaning so that the data can be reused within the - * document. To use the data, a consumer declares a connection to it with the desired semantic information. - * \param pConsumerElement A consumer element, like sampler element in animation system or joints element in controller system. - * \param pSemantic A semantic meaning, like "INPUT", "OUTPUT" or "INTERPOLATION" in animation system. - * \param pSourceElements The container of raw data. - * \return Return \c NULL is failed. - */ -xmlNode * DAE_GetSourceWithSemantic(xmlNode * pConsumerElement, const char * pSemantic, - const SourceElementMapType & pSourceElements); - -/** Add a child element with specific content. - * \param pParentElement The parent element. - * \param pTag The tag string of the new child element. - * \param pContent The content of the child element. - * \return The created child element. - */ -template -xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag, - const T & pContent) -{ - const FbxString lRepr = ToString(pContent); - return xmlNewChild(pParentElement, NULL, (xmlChar *)pTag, - (xmlChar *)lRepr.Buffer()); -} - -// Create a child element with empty content. -inline xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag) -{ - return DAE_AddChildElement(pParentElement, pTag, FbxString()); -} - -// Create a new element with empty content. -inline xmlNode * DAE_NewElement(const char * pTag) -{ - return xmlNewNode(NULL, reinterpret_cast(const_cast(pTag))); -} - -/** Add an attribute for a element. - * \param pElement The element where the attribute is added. - * \param pAttributeName The name of the attribute. - * \param pAttributeValue The value of the attribute. - * \return The created attribute. - */ -template -xmlAttr * DAE_AddAttribute(xmlNode * pElement, const FbxString & pAttributeName, - const T & pAttributeValue) -{ - const FbxString lRepr = ToString(pAttributeValue); - return xmlNewProp(pElement, (xmlChar *)pAttributeName.Buffer(), - (xmlChar *)lRepr.Buffer()); -} - -/** Import a COLLADA unit element into a FBX system unit. - * \param pUnitElement The COLLADA unit element. - * \return The created FBX system unit. - */ -const FbxSystemUnit DAE_ImportUnit(xmlNode * pUnitElement); - -/** If the specific node has animation on its local translation, increase every key by the offset. - * \param pNode The specific node. - * \param pOffset The specific offset value. - */ -void IncreaseLclTranslationAnimation(FbxNode * pNode, FbxDouble3 & pOffset); - -/** Search the elements with given tag, push the found results to the end of the given array. - * \param pBaseElement Search from this element. - * \param pTag The given tag. - * \param pResult The array to return the found results. - */ -void RecursiveSearchElement(xmlNode * pBaseElement, const char * pTag, FbxArray & pResult); - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_UTILS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h deleted file mode 100755 index 806f9ab..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h +++ /dev/null @@ -1,557 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreadercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_READER_H_ -#define _FBXSDK_FILEIO_COLLADA_READER_H_ - -#include - -#include -#include - -#include - - -/** Class to read a Collada file and import it to a FBX scene. - * - * Some terms about COLLADA (from the spec of the COLLADA). - * - * Element: An XML document consists primarily of elements. An element is a block of information that is - * bounded by tags at the beginning and end of the block. Elements can be nested, producing a hierarchical - * data set. - * - * Tag: Each XML element begins with a start tag and ends with an end tag. - * - * Attribute: An XML element can have zero or more attributes. Attributes are given within the start tag and - * follow the tag name. Each attribute is a name-value pair. The value portion of an attribute is always - * surrounded by quotation marks (" "). Attributes provide semantic information about the element on which - * they are bound. - * For example: - * \code - * - * \endcode - * - * URI Addressing: Refers to the id attribute of an element. Used in url, source or target attributes. - * In a url, source or target attribute, the URI fragment identifier is preceded with the pound sign ("#"). - * - * Markup and Content: The characters which make up an XML document are divided into markup and content. - * Markup and content may be distinguished by the application of simple syntactic rules. - * All strings which constitute markup either begin with the character "<" and end with a ">", - * or begin with the character "&" and end with a ";". - * Strings of characters which are not markup are content. - * \nosubgrouping - */ -class FbxReaderCollada : public FbxReader -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReaderCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxReaderCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is opened. - */ - virtual bool FileOpen(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Read Functions - */ - //@{ - - /** Get Collada import options settings. - * \param pParseFileAsNeeded whether parse file as needed, the default value is true. - * \return true - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true){ return true; } - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Read from Collada file and import it to the FBX document, according to the given options settings. - * \param pDocument FBX Document to import. - * \return true on success, false otherwise. - */ - virtual bool Read(FbxDocument* pDocument); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Import Functions - */ - //@{ - - /** Import Collada XML nodes tree to FBX scene. - * \param pScene The FBX scene object. - * \param pXmlNode The XML Node to import, it should be the root of Collada nodes tree. - * \return true on success, false otherwise. - */ - bool ReadCollada(FbxScene &pScene, xmlNode* pXmlNode); - - /** Import a Collada visual_scene element to the given FBX scene. - * \param pXmlNode The COLLADA visual_scene element. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualScene(xmlNode* pXmlNode, FbxScene * pScene); - - /** Import a Collada visual_scene MAX3D extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAX3D. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMax3DExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene FCOLLADA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneFCOLLADAExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import a Collada visual_scene MAYA extension to the given FBX scene. - * \param pXmlNode The COLLADA technique element with profile MAYA. - * \param pScene The FBX scene to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportVisualSceneMayaExtension(xmlNode * pTechniqueElement, FbxScene * pScene); - - /** Import Collada asset element. - * \param pXmlNode The XML Node, asset is read from pXmlNode and its children. - * \param pGlobalSettings The FBX global settings. - * \param pSceneInfo The FBX scene information object. - * \return Return true if asset is imported successfully. - * \remarks Imported asset has following contents: - * Axis System, system Unit, author, comments, title, subject, keywords, revision, etc. - */ - bool ImportAsset(xmlNode* pXmlNode, FbxGlobalSettings & pGlobalSettings, FbxDocumentInfo &pSceneInfo); - - /** Import a COLLADA node element. - * If the COLLADA node element contains only one node attribute (node attribute means instance_geometry, - * instance_camera, instance_light and instance_controller), node attribute will be attached directly under the node; - * If not, one child node will be created for each node attribute except the first one. - * \param pXmlNode The COLLADA node element. - * \return The created node and return \c NULL if failed. - */ - FbxNode * ImportNode(xmlNode* pXmlNode); - - /** Import a COLLADA node FCOLLADA extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FCOLLADA. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFCOLLADAExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node XSI extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile XSI. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeXSIExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA node FBX extension to the given FBX node. - * \param pXmlNode The COLLADA technique element with profile FBX. - * \param pNode The FBX node to contain the imported data. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportNodeFBXExtension(xmlNode* pTechniqueElement, FbxNode * pNode); - - /** Import a COLLADA geometry element. - * \param pGeometryID The COLLADA geometry ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \return The created geometry object and return \c NULL if failed. - * \remarks Except mesh, other types of geometry are not supported now. - */ - FbxGeometry * ImportGeometry(const FbxString & pGeometryID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA skin element. - * \param pSkinElement The COLLADA skin element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportSkin(xmlNode* pSkinElement); - - /** Import a COLLADA morph element or morphs recursively. - * \param pXmlNode The COLLADA morph element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportMorph(xmlNode * pMorphElement, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA controller element. - * \param pXmlNode The COLLADA controller ID. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. - * \return Return the pointer to the target geometry. - */ - FbxGeometry * ImportController(const FbxString & pControllerID, const FbxDynamicArray & pMaterialSequence); - - /** Import a COLLADA camera element. - * \param pXmlNode The COLLADA camera element. - * \return The created camera object and return \c NULL if failed. - * \remarks Camera parameters will also be imported, such as FOV, aspect ratio, etc. - */ - FbxCamera * ImportCamera(xmlNode* pXmlNode); - - /** Import a COLLADA light element. - * \param pXmlNode The COLLADA light element. - * \return The created light object and return \c NULL if failed. - * Following types of light are supported now: ambient light, directional light, point light, and spot light. - */ - FbxLight * ImportLight(xmlNode* pXmlNode); - - /** Import a COLLADA material element. - * \param pXmlNode The COLLADA material element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportMaterial(xmlNode* pXmlNode); - - /** Import a COLLADA effect element. - * \param pEffectElement The COLLADA effect element. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffect(xmlNode* pEffectElement); - - /** Import a COLLADA effect NVIDIA_FXCOMPOSER extension. - * \param pXmlNode The COLLADA technique element with profile - * NVIDIA_FXCOMPOSER. - * \return The created material object and return \c NULL if failed. - */ - FbxSurfaceMaterial * ImportEffectNVidiaExtension(xmlNode * pEffectElement); - - /** Import a COLLADA texture element. - * \param pXmlNode The COLLADA texture element. - * \return The created texture object and return \c NULL if failed. - * \remarks Following types of texture are supported now: ambient, diffuse, emission, reflective, specular, transparent. - */ - FbxFileTexture * ImportTexture(xmlNode* pXmlNode); - - /** Import a COLLADA image element. - * \param pXmlNode The COLLADA image element. - * \return The created texture object and return \c NULL if failed. - */ - FbxFileTexture * ImportImage(xmlNode* pXmlNode); - - /** Import a COLLADA mesh element. - * If this mesh element contains polygons, polygon list or triangles elements, a FBX mesh will be created. - * If it contains lines or line strips elements, a FBX line will be created. - * \param pXmlNode The COLLADA mesh element. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. - * \param pObjects List of all the created objects. If this mesh contains lines or line strips as well as - * the polymesh, the array will be filled with: [mesh, line, line strip] - * \return The created geometry object and return \c NULL if failed. - */ - FbxGeometry * ImportMesh(xmlNode* pXmlNode, const FbxDynamicArray & pMaterialSequence, FbxArray& pObjects); - - /** Import a COLLADA vertices element. - * \param pVerticesElement The COLLADA vertices element. - * \param pGeometry The FBX geometry object to store the vertices. - * \return true on success, false otherwise. - * \remarks Besides vertex, the vertex colors and normals are also imported. - */ - bool ImportVertices(xmlNode* pVerticesElement, FbxGeometry * pGeometry); - - /** Import polygons of Collada mesh node to FBX mesh node. - * \param pXmlNode Pointer to XML mesh Node. - * \param pMesh The FBX mesh object. - * \param pMaterialSequence A ordered sequence of material symbols connecting to the mesh. - * \return true on success, false otherwise. - * \remarks Vertex colors, normals, UVs, textures and materials which related to polygons, are also imported. - */ - bool ImportPolygons(xmlNode* pXmlNode, FbxMesh& pMesh, const FbxDynamicArray & pMaterialSequence); - - /** Import the transformation of Collada node to FBX node. - * \param pXmlNode Pointer to XML Node. - * \param pNode The FBX node. - * \return true on success, false otherwise. - * \remarks Transformation will cover matrix, translation, rotation, scale, skew, perspective, etc. - */ - bool ImportTransforms(xmlNode* pXmlNode, FbxNode* pNode); - - /** Import a COLLADA rotation element. - * \param pXmlNode The COLLADA rotation element. - * \param pRotationVector Vector4 value to return the rotation vector. - * \return Return the rotation axis index. - */ - int ImportRotationElement(xmlNode* pXmlNode, FbxVector4& pRotationVector); - - /** Extrapolate rotation order by the given int list. - * \param pNode The node whose rotation order is updated. - * \param pRotationOrder The int list representing the rotation order. - */ - void SetRotationOrder(FbxNode * pNode, const FbxArray & pRotationOrder); - - /** Import Collada look at node, and computed camera position, interest, up vector, etc. - * \param pXmlNode Pointer to XML look at Node. - * \param lCameraPosition Vector4 value to return camera position. - * \param lInterestPosition Vector4 value to return camera interest position. - * \param lUpVector Vector4 value to return camera up vector. - * \param lCameraTransformMatrix XMatrix value to return camera transform matrix. - * \return true on success, false otherwise. - * \remarks Computed camera parameters are saved in lCameraPosition, lInterestPosition, lUpVector, lCameraTransformMatrix. - */ - bool ImportLookAt(xmlNode* pXmlNode, FbxVector4& lCameraPosition, - FbxVector4& lInterestPosition, FbxVector4& lUpVector, - FbxAMatrix& lCameraTransformMatrix); - - //@} - - - /** - * \name Miscellaneous Functions - */ - //@{ - - /** Return false if we do not want to import a node with the given ID. - * \param lId The node ID. - * \return true for importable, false for in-importable. - * \remarks Do not import camera nodes with IDs (perspective, top, bottom, - * left, right, side, front or back), since they are global cameras already created in FBX. - */ - bool IsNodeExportable(FbxString lId); - - /** Check if the Collada version is 1.4.*. - * \param pVersionString The string representing the COLLADA version, like "1.4.1". - * \return \c true if the Collada version is 1.4.* or \c false otherwise. - */ - bool CheckColladaVersion(const FbxString & pVersionString); - - //@} - - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - //@} - - /** Import the whole scene from the root element of a COLLADA file. - * This is the main entry of COLLADA reader. - * \param pColladaNode The root element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportScene(xmlNode * pColladaNode); - - /** Preprocess the COLLADA scene. - * \param pColladaElement The root element of COLLADA scene. - */ - void Preprocess(xmlNode * pColladaElement); - - /** Build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - */ - void BuildUpLibraryMap(); - - /** Recursively build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. - * /param pElement The parent element which may contain target elements. - * /param pElementTag The tag of target elements. - */ - void BuildUpLibraryMap(xmlNode * pElement, const FbxString & pElementTag); - - /** Retrieve the material map from the bind_material element under an instance_geometry or instance_controller. - * And connected the created materials to the node. - * \param pNode The node to which the materials connect. - * \param pElement The COLLADA instance_goemetry or instance_controller element. - * \param pMaterialSequence The ordered material symbols which is used to create geometries. - * \return Return \c true on success and \c false otherwise. - */ - bool ConnectMaterialsToNode(FbxNode * pNode, xmlNode * pElement, FbxDynamicArray & pMaterialSequence); - - /** Import COLLADA transparent and transparency attributes in a COLLADA effect element. - * \param pElement A COLLADA Lambert, Phong, constant or Blinn element. - * \param pSurfaceMaterial A FBX surface material. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportTransparent(xmlNode * pElement, FbxSurfaceLambert * pSurfaceMaterial); - - // Some traits with a typed element. - struct LibraryTypeTraits - { - FbxString library_tag; - FbxString element_tag; - }; - - /** Get a typed element from the library element with a given ID. - * \param pTypeTraits The traits of type. - * \param pID The ID of the element. - * \return The FBX object. - */ - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, const FbxString & pID); - FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, xmlNode * pElement); - - /** Import the transform animation of a given node. - * \param pNode The node whose transform to be animated. - * \pAnimationChannelID The ID of animation element. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportMatrixAnimation(FbxNode * pNode, const FbxString & pAnimationChannelID); - - /** Import the animation of a given attribute. - * \param pProperty The property to be animated. - * \param pAnimationChannelID The ID of animation element. - * \param pChannelName The channel name if the property has multiple channels. - * \return Return \c true on success and \c false otherwise. - */ - bool ImportPropertyAnimation(FbxProperty & pProperty, const FbxString & pAnimationChannelID, const char * pChannelName = NULL); - - /** Get the animation layer to which the specific animation curve belongs. - * \param pAnimationID The ID of the animation curve. - * \return The animation layer. - */ - FbxAnimLayer * GetAnimLayer(const FbxString & pAnimationID); - - /** Import local unit conversion. - * \param pElement The specific element. - * \return Return the local unit conversion. - */ - double GetLocalUnitConversion(xmlNode * pElement); - - /** Set the value of the property. - * \param pPropertyElement The corresponding element. - * \param pProperty The specific property. - */ - void SetProperty(xmlNode* pPropertyElement, FbxProperty & pProperty); - - /** Create a property with given name and set the value. - * \param pObject The object as the parent of the property. - * \param pPropertyName The name of the property. - * \param pPropertyValueElement The element containing the value. - */ - void ImportPropertyValue(FbxObject * pObject, const char * pPropertyName, - xmlNode * pPropertyValueElement); - - FbxFile* mFileObject; - FbxString mFileName; - - // XML lib stuff - xmlDocPtr mXmlDoc; - - FbxAnimLayer* mAnimLayer; - FbxScene* mScene; - - // Save the global settings and document info in pre-reading - FbxGlobalSettings * mGlobalSettings; - FbxDocumentInfo * mDocumentInfo; - FbxArray mTakeInfo; - - xmlNode * mColladaElement; - - struct ColladaElementData - { - explicit ColladaElementData(xmlNode * pElement = NULL) - : mColladaElement(pElement), mFBXObject(NULL) {} - xmlNode * mColladaElement; - FbxObject * mFBXObject; - FbxArray mFBXObjects; - }; - typedef FbxMap ColladaElementMapType; - ColladaElementMapType mColladaElements; - - LibraryTypeTraits mEffectTypeTraits; - LibraryTypeTraits mMaterialTypeTraits; - LibraryTypeTraits mImageTypeTraits; - LibraryTypeTraits mGeometryTypeTraits; - LibraryTypeTraits mControllerTypeTraits; - LibraryTypeTraits mLightTypeTraits; - LibraryTypeTraits mCameraTypeTraits; - LibraryTypeTraits mNodeTypeTraits; - LibraryTypeTraits mAnimationTypeTraits; - - typedef FbxMap > AnimationMapType; - AnimationMapType mAnimationElements; - - SourceElementMapType mSourceElements; - - struct AnimationClipData - { - AnimationClipData(const FbxString & pID) : mID(pID), mAnimLayer(NULL) {} - AnimationClipData(const AnimationClipData& pOther){ *this = pOther; } - AnimationClipData& operator=(const AnimationClipData& pOther){ mID = pOther.mID; mAnimationElementIDs = pOther.mAnimationElementIDs; mAnimLayer = pOther.mAnimLayer; return *this; } - - FbxString mID; // ID of animation clip - FbxSet mAnimationElementIDs; // IDs of animation belong to this animation clip - FbxAnimLayer * mAnimLayer; // The corresponding animation layer - }; - FbxDynamicArray mAnimationClipData; - - // Map from skin ID to skin element. - SkinMapType mSkinElements; - - // There are two distinct namespaces for node ID & SID mapping. - // One with ID and the other with SID. - typedef FbxMap NodeMapType; - NodeMapType mIDNamespaceNodes; - NodeMapType mSIDNamespaceNodes; - - // Record the nodes which are to connect to its target node. - // Save the ID of the target node if a node has its target - typedef FbxMap TargetIDMapType; - TargetIDMapType mTargetIDs; - - FbxColladaNamespace mNamespace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_READER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h deleted file mode 100755 index 9d0d684..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h +++ /dev/null @@ -1,570 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwritercollada14.h -#ifndef _FBXSDK_FILEIO_COLLADA_WRITER_H_ -#define _FBXSDK_FILEIO_COLLADA_WRITER_H_ - -#include - -#include - -#include - -/** \brief Class to export FBX scene into a Collada file. -* \nosubgrouping -*/ -class FbxWriterCollada : public FbxWriter -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - - /** Constructor. - * \param pManager FBX SDK object Manager. - * \param pID Internal ID. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriterCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); - - //! Destructor. - virtual ~FbxWriterCollada(); - - //@} - - /** - * \name File Management - */ - //@{ - - /** Create and open file with the given name. - * \param pFileName the name of file. - * \return Return true if the specified file is created and opened. - */ - virtual bool FileCreate(char* pFileName); - - /** Close file. - * \return Return true if file is closed successfully, false otherwise. - */ - virtual bool FileClose(); - - /** Check if current file is open. - * \return Return true if file is open, false otherwise. - */ - virtual bool IsFileOpen(); - - //@} - - /** - * \name Write Functions - */ - //@{ - - /** Get Collada export options settings. - */ - virtual void GetWriteOptions(){} - - /** Export the FBX document to Collada file, according to the given options settings. - * \param pDocument FBX Document to export. - * \return true on success, false otherwise. - */ - virtual bool Write(FbxDocument* pDocument); - - /** Process FBX scene before exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - * \remarks This function is processing name clash, special transformation conversion etc. - */ - virtual bool PreprocessScene(FbxScene &pScene); - - /** Process FBX scene after exporting FBX scene to Collada file. - * \param pScene the FBX scene to precess. - * \return Return true if the given scene is processed successfully. - */ - virtual bool PostprocessScene(FbxScene &pScene); - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - /** - * \name Export Functions - */ - //@{ - - /** Export FBX scene info to Collada asset. - * \param pXmlNode the XML Node to export asset, asset nodes will be added as children to this XML node. - * \param pSceneInfo Pointer to the FBX scene information object. - * \return Return pointer to XML asset node. - * \remarks Asset here contains user-defined summary data, such as: - * contributor, author, authoring tool, created time, Axis System, etc. - */ - xmlNode* ExportAsset(xmlNode* pXmlNode, FbxDocumentInfo* pSceneInfo); - - /** Export FBX scene. - * \param pScene Pointer to the FBX scene object. - * \return The pointer to XML scene element. - */ - xmlNode * ExportScene(FbxScene* pScene); - - /** Export Libraries to the Collada document. - * \param pXmlNode Pointer to XML Node, it should be the asset node. - * \return Return true if all libraries are exported successfully. - * \remarks After the libraries are created, call this function to add libraries to the Collada document. - * Libraries are added as the siblings just after the given pXmlNode. - */ - bool ExportLibraries(xmlNode* pXmlNode); - - /** Export the given FBX node and its hierarchy to Collada XML nodes. - * \param pXmlNode Pointer to XML Node, created XML nodes hierarchy will be added as children to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode, - * this method is called recursively. - */ - xmlNode* ExportNodeRecursive(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export a Collada visual_scene MAX3D extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneMAX3DExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export a Collada visual_scene FCOLLADA extension for the given FBX scene. - * \param pExtraElement The parent COLLADA extra element. - * \param pScene The FBX scene to be exported. - */ - void ExportVisualSceneFCOLLADAExtension(xmlNode * pExtraElement, FbxScene * pScene); - - /** Export the given FBX node and its node attributes to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. - * \return Return pointer to the created XML node. - * \remarks The returned XML node is corresponding to the given FBX node, - * the returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNode(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export the given FBX node's default transformation. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if transformation is exported successfully. - * \remarks FBX node transformation info is exported to properties of pXmlNode and its children, - * according to the Collada transformation structures. - */ - bool ExportTransform(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Export FBX node attributes, create different libraries according to different node attribute type. - * \param pXmlNode Pointer to XML Node. - * \param pNode Pointer to FBX node. - * \return Return true if FBX node attributes is exported successfully, false otherwise. - * \remarks According to different FBX node attribute type, different libraries will be created, such as: - * light, camera, geometry. See more details in CreateMeshLibrary(FbxNode* pNode), CreateCameraLibrary(FbxNode* pNode), CreateLightLibrary(FbxNode* pNode). - */ - bool ExportNodeAttribute(xmlNode* pXmlNode, const FbxNode* pNode); - - /** Create geometry library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh, or FbxNodeAttribute::eNurbs, or FbxNodeAttribute::ePatch. - * \return Return pointer to XML mesh library node. - * \remarks The returned XML node will be added to the geometry library, - * the geometry library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateMeshLibrary(const FbxNode* pNode); - - /** Create camera library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML camera library node. - * \remarks The returned XML node will be added to the camera library, - * the camera library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateCameraLibrary(const FbxNode* pNode); - - /** Create light library for the given FBX node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML light library node. - * \remarks The returned XML node will be added to the light library, - * the light library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). - */ - xmlNode* CreateLightLibrary(const FbxNode* pNode); - - /** Export the given FBX mesh node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh. - * \return Return pointer to XML mesh node. - * \remarks Vertex, polygons of the mesh will be exported. - * Textures, materials, controllers, and shapes which linked to the mesh will also be exported. - */ - xmlNode* ExportMesh(const FbxNode* pNode); - - /** Export the given shape's geometry to Collada XML node. - * \param pMeshShape, Pointer to FBX mesh, corresponding to shape. - * \param pShapeId, a string to identify shape from internal shape meshes list. - * \return Return pointer to XML shape geometry node. - * \remarks The geometry of shape will be exported, materials of shape will not be exported. - */ - xmlNode* ExportShapeGeometry(FbxMesh* pMeshShape, FbxString pShapeId); - - /** Export the given mesh's vertex position to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, position info of all the vertices of this mesh will be exported. - * \param pMeshName Name of the XML node to export, usually it's the name of FBX mesh node. - * \param pInGeometry True if vertices are inside an ordinary geometry, false if vertices are in a binded geometry. - * \param pExportControlPoints True if pMesh is an ordinary geometry, false if pMesh is a binded geometry. - * \return Return pointer to XML vertex position node, the returned XML node will be added as child to the given pXmlNode. - * \remarks In an ordinary geometry, pExportControlPoints should be true, export the position of the control points; - * in a binded geometry, pExportControlPoints should be false, export the position of the transformed control points. - */ - //Note why internally set pExportControlPoints to true? - xmlNode* ExportVertexPositions(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pMeshName, bool pInGeometry, bool pExportControlPoints); - - /** Export all layer elements of the given mesh to Collada XML node. - * \param pXmlMesh Pointer to XML Node, created XML layer elements nodes will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, all layer elements of this mesh node will be exported. - * \param pName String which used to construct the names of XML layer elements nodes. - * \return Return the modified pXmlMesh. - * \remarks Layer elements including Normals, UVs, Vertex Colors are covered, - * polygon groups and other undefined layer elements are NOT supported. - */ - xmlNode* ExportLayerElements(xmlNode* pXmlMesh, FbxMesh* pMesh, FbxString pName); - - /** Export Normals of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML Normals node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, normals layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML normals nodes. - * \param pExt Extension string which used to construct the names of XML normals nodes. - * \param pLayerIndex Specify an index of layers to export, normals of other layers will NOT be exported. - * \return Return pointer to XML Normals node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportNormals(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, FbxString pExt, int pLayerIndex); - - /** Export UVs of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML UVs node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, UVs layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML UVs nodes. - * \param pLayerIndex Specify an index of layers to export, UVs of other layers will NOT be exported. - * \return Return pointer to XML UVs node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportUVs(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export VertexColors of specified layer of the given mesh to Collada XML node. - * \param pXmlNode Pointer to XML Node, created XML VertexColors node will be added as child to this XML node. - * \param pMesh Pointer to FBX mesh object, VertexColors layer element of this mesh node will be exported. - * \param pName String which used to construct the names of XML VertexColors nodes. - * \param pLayerIndex Specify an index of layers to export, VertexColors of other layers will NOT be exported. - * \return Return pointer to XML VertexColors node. - * \remarks The returned XML node will be added as child to the given pXmlNode. - */ - xmlNode* ExportVertexColors(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); - - /** Export the given mesh's vertex to Collada XML node. - * \param pXmlNode Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pName Name of the XML node to export, usually it's the name of FBX mesh node. - * \return Return pointer to the created XML vertex node. - */ - xmlNode* ExportVertices(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName); - - /** Export the given mesh's polygons to Collada XML node. - * \param pMeshElement Pointer to XML Node. - * \param pMesh Pointer to FBX mesh object. - * \param pMaterialName Specify the name of materials property. - * \param pMaterialIndexInNode Specify the material index in the FBXNode (will be ignored if there is only 1 material in the node) - * \param pName String which used to construct the names of created XML nodes. - * \param pShape true for shape node, false for general node, the default value is false; - * don't write out the materials if pShape is true. - * \return Return pointer to the created XML Polygons node. - */ - xmlNode* ExportPolygons(xmlNode* pMeshElement, FbxMesh* pMesh, FbxString pMaterialName, int pMaterialIndexInNode, FbxString pName, bool pShape = false); - - /** Export all the materials used by the given mesh. - * \param pMesh FBX mesh to export. - * \param pNbMat materials count of pMesh. - * \return true on success, false otherwise. - */ - bool ExportMeshMaterials(FbxMesh *pMesh, int pNbMat); - - /** Export the given material to the Material library. - * \param pMaterial Specify the surface material to export. - * \return Return pointer to the corresponding XML material node. - * \remarks If the given material is already in the materials library, return the XML node; - * otherwise, create and add XML material node to the Material library. - */ - xmlNode* ExportMaterial(FbxSurfaceMaterial *pMaterial); - - /** Export the given material to the Effect library. - * \param pMaterial Specify the surface material to export. - * \param pEffectId Specify the effect ID to export. - * \return Return pointer to the corresponding XML effect node. - * \remarks Material is an instance of an effect. - * If the given material is already in the Effect library, return the XML node; - * otherwise, create and add XML effect node to the Effect library. - * Collada Effect support: Ambient Color, Diffuse Color, Emissive Color, Specular Color, Shiness, Reflective / Reflectivity, - * Opacity / Transparency. - */ - xmlNode* ExportEffect(FbxSurfaceMaterial *pMaterial, FbxString pEffectId); - - /** Add the given texture as input to the given XML material node. - * \param pXmlMaterial Pointer to XML material node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \param pLayerElementType Specify the layer element type. - * \return true on success, false otherwise. - */ - //Note why return true when failed and popped waring? - bool AddMaterialTextureInput(xmlNode *pXmlMaterial, FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex, int pLayerElementType); - - /** Export the given texture to Collada XML node. - * \param pTexture FBX texture to export. - * \param pImageId A string to identify image from the image library. - * \param pLayerIndex Specify an index of layers to export. - * \return Return pointer to the created XML texture node. - */ - xmlNode* ExportTexture(FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex); - - /** Export all the textures used by the given mesh. - * \param pMesh FBX mesh to export. - * \return true on success, false otherwise. - * \remarks The materials will also be Exported if needed. - */ - bool ExportMeshTextures(FbxMesh *pMesh); - - /** Export the given FBX camera node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. - * \return Return pointer to XML node. - * \remarks Camera parameters and properties will be exported. - */ - xmlNode* ExportCamera(const FbxNode* pNode); - - /** Export the given FBX light node to Collada XML node. - * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. - * \return Return pointer to XML node. - * \remarks Light parameters and properties will be exported. - */ - xmlNode* ExportLight(const FbxNode* pNode); - - /** Export the global ambient to Collada XML light node. - */ - void ExportSceneAmbient(xmlNode * pVisualSceneElement); - - /** Export controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should be a binded skin. - * \return true on success. - * \remarks A morph controller will be exported by ExportControllerShape(). - */ - bool ExportController(FbxMesh *pMesh); - - /** Export morph controllers of the given mesh to Collada XML node. - * \param pMesh FBX mesh to export, it should has more than one shape. - * \return true on success. - * \remarks Morph controller is also called shape deformer. - */ - bool ExportControllerShape(FbxMesh *pMesh); - - /** . - * \param . - * \param . - * \return . - * \remarks . - */ - //Note : empty method now - xmlNode* ExportJointWeights(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pExt); - - /** Update mesh library with the shapes found, and add shapes as nodes in the scene. - * \param pXmlNode Pointer to XML Node, created shape node will be added as child to this XML node. - * \return true on success, false otherwise. - * \remarks This method will create a geometry node in geometry library for every shape as needed, - * XML shape nodes will also be created and added to scene. - */ - bool UpdateMeshLibraryWithShapes(xmlNode* pXmlNode); - - /** Export animations of the given node and its children, if they are animated. - * \param pNode FBX node to export, it should be animated. - * \return true on success, false otherwise. - * \remarks This method is called recursively, the animations of all the children of pXmlNode will also be exported. - */ - bool ExportAnimation(FbxNode* pNode); - - /** Export all the animation curves of the given node to Collada XML node. - * \param pNode FBX node to export, it should be animated. - * \param pAnimationNode Pointer to XML Node, created sub-animation nodes will be added as children to this XML node. - * \return true on success. - */ - bool ExportAnimationCurves(FbxNode* pNode, xmlNode* pAnimationNode); - - /** Export the texture into library_images. - * \param pTexture The texture whose file name to be exported. - * \return Return the ID of the create image element. - */ - const FbxString ExportImage(FbxFileTexture * pTexture); - - /** Export the given animation curve (FCurve) to Collada XML node. - * \param pAnimationNode Pointer to XML Node, created sub-animation node will be added as child to this XML node. - * \param pCurve Animation Curve to export. - * \param pChannelName The name of animation channel. - * \param pSubChannelName The name of animation sub-channel. - * \param pExportShape Shape animation flag, default value is false; When it's true, Id nomenclature is a bit different. - * \param pExportIntensity Intensity flag, default value is false; When it's true, FCurve values are divided by 100. - * \param pExportLib Library flag, default value is false; When it's true, Id nomenclature is a bit different. - * \return true on success. - * \remarks When pExportShape or pExportIntensity is true, FCurve values are divided by 100. - */ - bool ExportCurve(xmlNode* pAnimationNode, FbxAnimCurve* pCurve, - const char* pChannelName, const char* pSubChannelName, - bool pExportShape=false, bool pExportIntensity=false, bool pExportLib=false); - - /** Check whether the first three elements of the given vector are both zero. - * \param pV the FBX vector4 to check. - * \return Return true if one of the first three elements of pV is not zero, return false if all of the three elements are both zero. - * \remarks If the absolute value of element is less than a tolerance, the element will be considered as zero. - */ - bool NotZero(FbxVector4 pV); - - /** Check whether the first three elements of the given vector are both equal to the given value. - * \param pV the FBX vector4 to check. - * \param pValue the value to check. - * \return Return true if one of the first three elements of pV is NOT equal to pValue, return false if all of the three elements are both equal to pValue. - */ - bool NotValue(FbxVector4 pV, double pValue); - - /** Check whether the given value is zero. - * \param pD the value to check. - * \return Return true if pD is NOT zero, return false if pD is zero. - * \remarks If the absolute value of pD is less than a tolerance, pD is considered as zero. - */ - bool NotZero(double pD); - - /** Check whether the given node's translation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Translation X/Y/Z is animated, return false if both of Translation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsTranslationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Rotation X/Y/Z is animated, return false if both of Rotation X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode); - - /** Check whether the given node's rotation of specified axis is animated. - * \param pNode the FBX node to check. - * \param pAxis Specify index of rotation axis, 0 for Rotation X, 1 for Rotation Y, 2 for Rotation Z. - * \return Return true if the rotation of specified axis is animated, return false if it is not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsRotationAnimated(const FbxNode *pNode, int pAxis); - - /** Check whether the given node's scale is animated. - * \param pNode the FBX node to check. - * \return Return true if one of Scale X/Y/Z is animated, return false if both of Scale X/Y/Z are not animated. - * \remarks If there is no key on one property, this property is not animated. - */ - bool IsScaleAnimated(const FbxNode *pNode); - - /** Copy mesh parameters from pRefMesh to pNewMesh. - * \param lNewMesh New FBX mesh. - * \param lRefMesh Referenced FBX mesh. - * \remarks Vertices, polygons, layers will be copied. - */ - void CopyMesh(FbxMesh *lNewMesh, FbxMesh *lRefMesh); - - /** Convert camera focal length animation curve to camera field of view animation curve. - * \param pFOVCurve A curve that represents camera field of view. - * \param pFLCurve A curve that represents camera focal length animation. - * \param pCamera FBX camera to convert. - */ - void ConvertFocalLengthCurveToFOV(FbxAnimCurve *pFOVCurve, FbxAnimCurve *pFLCurve, FbxCamera *pCamera); - - /** Preprocess the given FBX node and its hierarchy. - * \param pNode Pointer to FBX node. - * \remarks To correctly export FBX scene to Collada, this method process FBX nodes, - * such as set pivot state for every FBX node, do special transformation conversion for FBX lights and cameras. - * This method is called recursively. - */ - void PreprocessNodeRecursive(FbxNode* pNode); - - /** Export the value of the specific property as a child element of an element. - * \param pProperty The property whose value to be exported. - * \param pParentElement The parent element of the created element. - */ - void ExportPropertyValue(const FbxProperty & pProperty, - xmlNode * pParentElement); - - //@} - - /** - * \name Error Management - */ - //@{ - - /** Add notification error info to notify users. - * \param pError String of error info. - */ - void AddNotificationError( FbxString pError ); - - /** Add notification warning info to notify users. - * \param pWarning String of warning info. - */ - void AddNotificationWarning( FbxString pWarning ); - - //@} - - FbxFile* mFileObject; - FbxString mFileName; - bool mStatus; - - // XML lib stuff - // - xmlDocPtr mXmlDoc; - - // Scene information - FbxScene* mScene; - - // AnimStack/Layer holding the animation - FbxAnimStack* mAnimStack; - FbxAnimLayer* mAnimLayer; - - // Libraries - // NB: CODE and PROGRAM libraries are unused, so they are not created. - xmlNode* mLibraryAnimation; - xmlNode* mLibraryCamera; - xmlNode* mLibraryController; - xmlNode* mLibraryGeometry; - xmlNode* mLibraryImage; - xmlNode* mLibraryLight; - xmlNode* mLibraryMaterial; - xmlNode* mLibraryEffect; - xmlNode* mLibraryTexture; - xmlNode* mLibraryVisualScene; - - // Shape information - FbxStringList *mShapeMeshesList; - - // export options - bool mTriangulate; - bool mSingleMatrix; - FbxTime mSamplingPeriod; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_COLLADA_WRITER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxio.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxio.h deleted file mode 100755 index 461b12a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxio.h +++ /dev/null @@ -1,1746 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxio.h -#ifndef _FBXSDK_FILEIO_FBX_IO_H_ -#define _FBXSDK_FILEIO_FBX_IO_H_ - -#include - -#include -#include -#include - -#include - -class FbxIO; -class FbxReader; -class FbxWriter; -class FbxFile; -class FbxStream; -class FbxXRefManager; - -/** - Defines the current FBX file version number in four digits. The first digit is the - major version number a the last three digits are the minor version number (e.g. 7100 = 7.1). - The following is the version history of FBX: - - \li Version 2000 - New KFCurve and embedded FBX, no FCurve/FCurve node storing. - No more .takf file like in earlier version, no history. - - \li Version 2001 - Version incremented to support FbxTime save in native (integer, not double) - format. - - \li Version 3000 - FiLMBOX 3.0 version, nothing changed in current class since version 2001. - FBX SDK 3.0 and 3.6 - - \li Version 3001 - FiLMBOX 3.0 encrypted version, only a trial. Encrypted files could only - be written in debug versions. Cannot switch to a higher version number now because any - file with a version number >= 3001 is read as encrypted. - Hence, this value now only gives file type. (3000 or less -> binary, 3001 or more -> encrypted) - FiLMBOX 3.2, FiLMBOX 3.5 and "Online" 3.51 have been released with version 3000. - - \li Version 4000 - MotionBuilder 4.0, new type in KFCurve tangents, supported in FiLMBOX 3.5 - but not by earlier versions. Version number is now stored in section footer. - Before September 3rd 2002, the version number was always 3000 in main section footer. - Now the main section footer has version number 4000. The minimum version number in footer of - an extension section is 4000. - - \li Version 4001 - ASCII Header is 4.1. MotionBuilder 4.01, to fix FCurveNode problem with - layer types in version 4000 the main section footer has version number 4001. - Now the footer for extension sections has version number 4001. - - \li Version 4050 - ASCII Header is 4.5. MotionBuilder 4.1 or 4.5 before - January 22nd 2003. This is because EvaluationProperties now have color. Now the main section footer - has version number 4050. - Now the footer for extension sections has version number 4050. - - \li Version 5000 - ASCII Header is not compatible anymore with MotionBuilder 4.0, 4.01 and 4.02 and FBX SDK 3.6 and 3.7 - MotionBuilder 4.03 and 4.1 or 4.5 from January 22nd 2003 - FBX SDK 3.6.1. New extended header to improve FBX file version management. Now the extended header and - the main section footer have version number 5000. Now the footer for extension sections has version number 5000. - - \li Version 5800 - This was a temporary version while waiting for version 6000 renders the previous versions - incompatible with MotionBuilder 6.0. For now, however, this format is needed to allow - some tools/plugins (For example Maya) to correctly detect that the file has some features that are not - completely backward compatible (For example: pivots defined with _pre/_post nodes which require a special - processing). By incrementing only the minor version we do not compromise the integrity of the - files. - - \li Version 6000 - Header version is now 6.0. - Extended header now contain a creation time stamp - that can be retrieve without parsing the main section of the file. - A creator tag (string) is now stored in the Extended header. This contain the originator (MB/FBXSDK) - of the file and the build number of the originator. - First release of the file format using the KProperties to store/retrieve information. - - \li Version 6100 - Added support for multiple attributes (mainly multiple geometry) at the node level. - The pointer to the node attribute have been replaced by a connection between the node and its attribute(s). - - \li Version 7000 - - First version of the 7.0 series; most likely very short-lived, developed for Protein, before ADP. - Supports reference cloning, external documents, blobs, unique IDs (per file), property templates. - So many changes that it was decided to break from 6.0 to keep Motion Builder intact. - - \li Version 7099 - Temporary version for FBX 2011 alpha releases. - - \li Version 7100 - Official file version for FBX 2011, add support for animation to FBX 7. - First version of FBX SDK with FBX 7 files as the default file format. - - \li Version 7200 - Added support for multiple blend shape deformers and In-Between blend-shapes on each geometry. - Moved shape(FbxShape) to its own section other than as a part of geometry section. - Add support to store blend shape deformer(FbxBlendShape), blend shape channel(FbxBlendShapeChannel), - Substance(FbxProceduralTexture) and Lines(FbxLine). - Add support to store 3 different smooth binding modes of FbxSkin, including classic linear, dual quaternion - and blended mode of previous two modes. - Added the CLAMP_PROGRESSIVE tangent mode. - The KFCurve::KeyAttrDataFloat data array now stores as integer values (ASCII mode) to to eliminate float to int precision errors. - FbxLayeredTexture now stores alphas for its sub textures. - - \li Version 7300 - Changed the way the CharacterPoses are written. - Changed light property name HotSpot and ConeAngle to InnerAngle and OuterAngle - - \li Version 7400 - Normals, tangents and binormals save the 4th component into a separate array - - \li Version 7500 - Added support for large files (>2GB). NOTE: This breaks forward compatibility (i.e. older products won't be able to open these files!!) - - */ - -//File version numbers -#define FBX_FILE_VERSION_2000 2000 //FBX 2.0 -#define FBX_FILE_VERSION_2001 2001 //FBX 2.01 -#define FBX_FILE_VERSION_3000 3000 //FBX 3.0 -#define FBX_FILE_VERSION_3001 3001 //FBX 3.01 -#define FBX_FILE_VERSION_4000 4000 //FBX 4.0 -#define FBX_FILE_VERSION_4001 4001 //FBX 4.01 -#define FBX_FILE_VERSION_4050 4050 //FBX 4.5 -#define FBX_FILE_VERSION_5000 5000 //FBX 5.0 -#define FBX_FILE_VERSION_5800 5800 //FBX 5.8 -#define FBX_FILE_VERSION_6000 6000 //FBX 6.0 -#define FBX_FILE_VERSION_6100 6100 //FBX 6.1 (guarantee compatibility with Autodesk 2010 products) -#define FBX_FILE_VERSION_7000 7000 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7099 7099 //Compatible with 7.1, and taken as such -#define FBX_FILE_VERSION_7100 7100 //FBX 7.1 (guarantee compatibility with Autodesk 2011 products) -#define FBX_FILE_VERSION_7200 7200 //FBX 7.2 (guarantee compatibility with Autodesk 2012 products) -#define FBX_FILE_VERSION_7300 7300 //FBX 7.3 (guarantee compatibility with Autodesk 2013 products) -#define FBX_FILE_VERSION_7400 7400 //FBX 7.4 (guarantee compatibility with Autodesk 2014/2015 products) -#define FBX_FILE_VERSION_7500 7500 //FBX 7.5 (guarantee compatibility with Autodesk 2016 products) - -//File version compatibility strings -#define FBX_53_MB55_COMPATIBLE "FBX53_MB55" -#define FBX_60_COMPATIBLE "FBX60_MB60" -#define FBX_2005_08_COMPATIBLE "FBX200508_MB70" -#define FBX_2006_02_COMPATIBLE "FBX200602_MB75" -#define FBX_2006_08_COMPATIBLE "FBX200608" -#define FBX_2006_11_COMPATIBLE "FBX200611" -#define FBX_2009_00_COMPATIBLE "FBX200900" -#define FBX_2009_00_V7_COMPATIBLE "FBX200900v7" -#define FBX_2010_00_COMPATIBLE "FBX201000" -#define FBX_2011_00_COMPATIBLE "FBX201100" -#define FBX_2012_00_COMPATIBLE "FBX201200" -#define FBX_2013_00_COMPATIBLE "FBX201300" -#define FBX_2014_00_COMPATIBLE "FBX201400" -#define FBX_2016_00_COMPATIBLE "FBX201600" -#define FBX_2018_00_COMPATIBLE "FBX201800" -#define FBX_2019_00_COMPATIBLE "FBX201900" - -//Default file version number used when writing new FBX files -#define FBX_DEFAULT_FILE_VERSION FBX_FILE_VERSION_7500 -#define FBX_DEFAULT_FILE_COMPATIBILITY FBX_2019_00_COMPATIBLE - -/** Convert the FBX file version string to an integral number for <= or >= tests purposes. - * \param pFileVersion File version string. - * Some examples: - * \code - * int version; - * version = FileVersionStrToInt(FBX2012_00_COMPATIBLE); // version = 201200 - * version = FileVersionStrToInt(FBX60_COMPATIBLE); // version = 6000 - * version = FileVersionStrToInt("FBX200900"); // version = 200900 - * version = FileVersionStrToInt("Toto"); // version = 0 - * version = FileVersionStrToInt(""); // version = -1 - * \endcode - * \returns the file version number or 0 if an unsupported string value is passed. - */ -FBXSDK_DLL int FbxFileVersionStrToInt(const char* pFileVersion); - -/** \internal Used internally by readers to evaluate what is the current section */ -enum -{ - FBX_NO_SECTION = -1, //!< indicate not in a valid section - FBX_MAIN_SECTION, //!< indicate currently in the main section - FBX_EXTENSION_SECTION_0 //!< indicate currently in the extention section 0 -}; - -/** Render and resolution information. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxIODefaultRenderResolution -{ -public: - /** If the resolution data is ready. */ - bool mIsOK; - /** camera name. */ - FbxString mCameraName; - /** resolution mode. ex: "Fixed Resolution","Fixed Ratio","Fixed Width","Fixed Height","Window Size"*/ - FbxString mResolutionMode; - /** resolution width. */ - double mResolutionW; - /** resolution height. */ - double mResolutionH; - - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIODefaultRenderResolution(); - //@} - - /** - * \name Member Access - */ - //@{ - //! Reset values to default. - void Reset(); - //@} -}; - -/** FBX header information used at beginning of the FBX file -* to get or set important values like the file format version number (mFileVersion). -* The file version number will be used to select a particular Reader or Writer. -* \nosubgrouping */ -class FBXSDK_DLL FbxIOFileHeaderInfo -{ -public: - /** - * \name Constructors and Destructor - */ - //@{ - //! Default constructor. - FbxIOFileHeaderInfo(); - - //! Destructor. - virtual ~FbxIOFileHeaderInfo(); - //@} - - /** - * \name Public Member - */ - //@{ - - //! Reset values to default. - virtual void Reset(); - - /** A derived class can override this function to read additional information from the file header. - * \return false in case of failure that should stop loading the file. - */ - virtual bool ReadExtendedHeaderInformation(FbxIO*); - //@} - - //! FbxIODefaultRenderResolution to handle default resolution values - FbxIODefaultRenderResolution mDefaultRenderResolution; - - //!Read only properties (not used for file write) - - //@{ - /** File version ex; 5000, 6000, 6100, 7000, 7099, 7100 - * the major part is the first digit, the minor part, 3 other digits - * ex: 7100 means version 7.1 - */ - int mFileVersion; - - /** Indicates whether a creation time stamp is preset */ - bool mCreationTimeStampPresent; - - /** Indicates whether the mCreationTimeStamp member variable contains the actual creation time of the file. */ - FbxLocalTime mCreationTimeStamp; - - /** Indicates who is the creator of the file - * Ex: "FBX SDK/FBX Plugins version 2011.2" - */ - FbxString mCreator; - - /** Indicates whether the file is created by a genuine Autodesk plug-in or not */ - bool mIOPlugin; - - /** The flag indicates that the header was created by a personal learning edition (PLE) of FBX. */ - bool mPLE; - //@} -}; - -/** FbxIO represents an FBX file. - * It is primarily used by FBX importers (FbxImporter) and exporter (FbxExporter) - * when reading or writing data from or to a disk or memory. - * Most users will not use the FbxIO class directly - * but will use an instance of either FbxImporter or FbxExporter - * to read or write FBX files. - * - * An FBX file may contain binary data or ASCII data. - * A good way to learn the internal structure of a FBX file - * is to open a FBX file saved in ASCII in a text editor. - * - * Ex: to read a FBX file content using FbxIO class directly - * \code - * // Create a FbxIO object with FbxIO::Create() - * // Open the file with ProjectOpen( ... ) a NULL pointer can be passed for (FbxReader)* param - * // ProjectOpen_xxx_Section() to open a particular section - * int nbSec = FieldGetCount(); // to get the number of fields of the current section opened - * for(int i=0; i < nbSec; i++) // read all fields - * { - * // check if the field is a block - * if(FieldReadIsBlock()){ } ... Read sub fields recursively ... may contain other blocks and fields - * else - * { - * FieldReadBegin(); // navigate on the field - * char fieldType = FieldReadGetType(); // get the data type - * - * // According to the Field data type, call the appropriate read functions - * - * if(fieldType == 'S') FieldReadS(...) to read a string - * else if(fieldType == 'B') FieldReadB(...) to read a bool - * else if(fieldType == 'I') FieldReadI(...) to read a int - * ... - * FieldReadEnd(); // navigate to next field - * } - * } - * - * ProjectCloseSection() // close the section opened - * // repeat for another section ... - * // finally close the Project - * ProjectClose(); // or delete the FbxIO object created. - * \endcode - */ -class FBXSDK_DLL FbxIO -{ -public: - - /** \internal Exception-safe way of setting/resetting the xref manager in a FbxIO object. - */ - struct FbxAutoResetXRefManager - { - FbxIO* mFbx; - const FbxXRefManager* mXRefManager; - - /** Default constructor */ - FbxAutoResetXRefManager(FbxIO* pFbx, FbxXRefManager& pXRefManager) - : mFbx(pFbx) - , mXRefManager(NULL) - { - if( mFbx ) - { - mXRefManager = mFbx->ProjectGetXRefManager(); - mFbx->ProjectSetXRefManager(&pXRefManager); - } - } - - /** Destructor */ - ~FbxAutoResetXRefManager() - { - if( mFbx ) - { - mFbx->ProjectSetXRefManager(mXRefManager); - } - } - }; - - enum BinaryType - { - BinaryNormal, //(pBinaryType, pStatus); } - - /** Default constructor */ - FbxIO(BinaryType pBinaryType, FbxStatus& pStatus); - - /** Destructor */ - virtual ~FbxIO(); - - /** - * \name Project Global - * The term "Project" here is an abstract name chosen to represent a group of data - * ex: a file, a stream, a memory buffer, etc. - */ - //@{ - - /** Open a project already in Memory - * \param pAddress - * \param pMaxLength - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(void* pAddress, FbxULong pMaxLength, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open a project. - * \param pStream - * \param pStreamData - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpen(FbxStream* pStream, void* pStreamData, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Open project file without necessarily an .fbx extension. - * \param pName - * \param pReader - * \param pCheckCRC - * \param pOpenMainSection - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenDirect(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project in Memory - * \param pAddress - * \param pSize - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(void* pAddress, FbxUInt pSize, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project. - * \param pStream - * \param pStreamData - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreate(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project without necessary an .fbx extension. - * \param pName - * \param pWriter - * \param pBinary - * \param pEncrypted - * \param pFileHeaderInfo - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateDirect(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - - /** Create a project, without writing out the header (yet) - * \param pName - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(const char* pName, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Create a project, without writing out the header (yet) - * \param pStream - * \param pStreamData - * \param pWriter - * \param pVersion - * \param pBinary - * \param pEncrypted - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateEmpty(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); - - /** Write FBX signature at the top of the file, prepare file for writing header information - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginFileHeader(); - - /** Open up the 'extended header' - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_BeginExtendedHeader(); - - /** Write the contents of the extended header - * \param pExtendedHeader - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_WriteExtendedHeader(const FbxIOFileHeaderInfo* pExtendedHeader); - - /** Close the extended header - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndExtendedHeader(); - - /** Close up the header, prepare file for payload write. - * \return \c true on success, \c false otherwise. - */ - bool ProjectWrite_EndFileHeader(); - - /** Close the project. - * \param pData - * \param pSize - * \return \c true on success, \c false otherwise. - */ - bool ProjectClose(void** pData=0, size_t* pSize=0); - - /** Provide the XRef Manager to use to create the .fbm folder. - * \remarks If NULL is used, the old behavior (using the .fbx's folder) is used instead. - */ - void ProjectSetXRefManager(const FbxXRefManager*); - - /** Get the XRef Manager to use. - * \return NULL if no XRef manager has been set. - */ - const FbxXRefManager* ProjectGetXRefManager() const; - - /** Select (and create) a folder to store embedded files (the .fbm - * file folder). Takes into account the settings from the XRef Manager. - * \param pXRefManager - * \param pCreatedFolder - * \param pUserDefinedFolder User defined "working folder" - * \return \c true on success, \c false otherwise. - * \remarks If this already been called successfully, uses the path - * previously created. - * - * Client application is responsible for cleaning up this folder. - * - * This will be automatically called if ProjectSetXRefManager() - * has been called before the .fbm folder needs to be created. - */ - bool ProjectCreateEmbeddedFolder(const FbxXRefManager& pXRefManager, FbxString& pCreatedFolder, const char* pUserDefinedFolder = NULL); - - /** On store event, use this function to tell if we are embedding. - * \param pValue - */ - void SetEmbedded(bool pValue); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractionFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractionFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Check if file is embedded or not. - * \return \c true if file is embedded, false otherwise. - */ - bool IsEmbedded() const; - - /** Check if file is binary or ASCII - * \return \c true if file is binary, false otherwise. - */ - bool IsBinary() const; - - /** Return if binary file is encrypted - * \return \c true if file is encrypted, false otherwise. - */ - bool IsEncrypted () const; - - /** Check CRC code. File must be open, binary and encrypted. - * \return \c true if CRC code is valid or file is not open, binary and encrypted. - */ - bool CheckCRC(); - - /** Return the file version number - * \return the file version number - */ - FbxUInt32 GetFileVersionNumber() const; - - /** Set the cache size for accelerated IO - * \param pCacheSize cache size to set (Kilo Byte) - */ - void CacheSize(FbxUInt32 pCacheSize); - - /** Return the current cache size - * \return the current cache size - */ - FbxUInt32 CacheSize() const; - - //@} - - /** - * \name FBX 7 Format specific functions. - - The FBX 7 format can compress internal arrays to make the file smaller. - The writer may decide not to compress all arrays, or it may even decide - not to compress anyway. Flags are written in the file to help the FBX7 reader - to know if a decompression is required, on a per-array basis. - The following functions address specific topics of the FBX 7 file format. - */ - //@{ - - //! \return Current state of the flag. - bool Fbx7Support() const; - - /** Set the flag state to tell the parser to handle FBX7 files. - * \param pSupport New flag state. - */ - void Fbx7Support(bool pSupport); - - //! \return Current State of the flag. - bool CompressArrays() const; - - /** Set the flag state. - * \param pCompress New flag state. - */ - void CompressArrays(bool pCompress); - - //! \return Current compression minimum size. - int CompressMinimumSize() const; - - /** Set the compression minimum size. - * \param pSize Threshold at which compression may embark. - */ - void CompressMinimumSize(int pSize); - - //! \return Current compression level. - int CompressLevel() const; - - /** Set the compression level. - * \param pLevel Value of the desired compression. - * \remarks The allowed range for pLevel is [0-9] where 0 equals no compression and - * 9 is as-much-as-we-can. - */ - void CompressLevel(int pLevel); - //@} - - /** - * \name Project related functions used to navigate on particular - * sections. - */ - //@{ - - /** Open the main section of a project. - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenMainSection(); - - /** Get the number of extension sections of a project. - * \return the number of extension sections of a project. - */ - int ProjectGetExtensionSectionCount() const; - - /** Open an extension section of a project. - * \param pExtensionSectionIndex - * \return \c true on success, \c false otherwise. - */ - bool ProjectOpenExtensionSection(int pExtensionSectionIndex); - - /** Create an extension section in a project, not allowed in ASCII and encrypted modes. - * \param pOverwriteLastExtensionSection - * \return \c true on success, \c false otherwise. - */ - bool ProjectCreateExtensionSection(bool pOverwriteLastExtensionSection = false); - - /** Close current section. - */ - void ProjectCloseSection(); - - /** Get current section. - * \return the current section. - */ - int ProjectGetCurrentSection() const; - - /** Get current section mode. - * \return the current section mode. - */ - int ProjectGetCurrentSectionMode() const; - - /** Get current section version. - * \return the current section version. - */ - int ProjectGetCurrentSectionVersion() const; - - /** Get the version number of a section. - * \param pSection - * \return the version number of a section. - * \remarks For main section it can be either 1000, 2000, 2001, 3000, 3001, 4000, 4001 or 4050. - * For the extension section it can be either 4000, 4001 or 4050. - * Returns 0 if section number does not exist. - */ - int ProjectGetSectionVersion(int pSection) const; - - /** Split a version number into major, minor and revision numbers. - * \param pVersion Version number to split. - * \param pMajor Integer to receive major version number. - * \param pMinor Integer to receive minor version number. - * \param pRevision Integer to receive revision version number. - */ - static void ProjectConvertVersionNumber(int pVersion, int& pMajor, int& pMinor, int& pRevision); - - /** Check the password protection flag. - * \return \c true if the current section has a password, \c false otherwise. - */ - bool IsPasswordProtected() const; - - /** Set password protection flag to \c false if the argument matches the password stored in the section. - * \param pPassword - * \return \c true if the argument matches the password stored in the section, \c false otherwise. - * \remarks This function only works in read mode. - */ - bool CheckPassword(const char* pPassword); - - /** Encrypt and store password in a section. - * \param pPassword - * \return \c true on success, \c false otherwise. - * \remarks This function only works in write mode and out of any enclosing block. - * \remarks This function must not be called more than once per section. - */ - bool WritePassword(const char* pPassword); - - //@} - - /** - * \name Directory related functions used to get or set file path information. - */ - //@{ - - /** Get project file name. - * \return project file name. - */ - const char* GetFilename() const; - - /** Get project data directory name. - * \param pAutoCreate - * \return project data directory name. - */ - FbxString GetDataDirectory(bool pAutoCreate = true); - - /** Get the current embedded folder used by this object. - * \param pCreate Whether create the media or not if no such folder is found - * \param pUserDefinedFolder User define working folder - * \return the current embedded folder used by this object. - * \remarks If ProjectCreateEmbeddedFolder has never been called this will - * return an empty string, unless we're explicitly asked to - * create it. - */ - FbxString GetMediaDirectory(bool pCreate = false, const char* pUserDefinedFolder = NULL); - - /** Get the full path of the directory to extract the template file. - * \param pTemplateName - * \param pCreate - * \return the full path of the directory to extract the template file. - */ - FbxString GetContainerTemplateDirectory(const char* pTemplateName, bool pCreate); - - /** Get the path relative to project directory. - * \param pPath - * \return the path relative to project directory. - */ - char* GetRelativePath(const char* pPath); - - /** Get the file path relative to project directory. - * \param pFilePath - * \return the file path relative to project directory. - */ - char* GetRelativeFilePath(const char* pFilePath); - - /** Get the full path of path relative to project directory. - * \param pRelativePath - * \return the full path of path relative to project directory. - */ - char* GetFullPath(const char* pRelativePath); - - /** Get the full file path of path relative to project directory. - * \param pRelativeFilePath - * \return the full file path of path relative to project directory. - */ - char* GetFullFilePath(const char* pRelativeFilePath); - - /** Get the temporary project name. - * \param pName - * \return the temporary project name. - */ - char* GetTmpProjectName(const char* pName) const; - - /** Swap from temporary project. - * \param pName - * \param pError - * \param pErrorSize - * \return \c true on success, \c false otherwise. - */ - bool SwapFromTmpProject(const char* pName, char* pError=NULL, int pErrorSize=0); - - //@} - - /** - * \name Read related functions used to get information of a field or a group of fields. - * Can be used to get the field content data or to navigate from field to field. - */ - //@{ - - /** Reset the field read position. - */ - void FieldReadResetPosition(); - - /** Get the number of fields. - * \return the number of fields. - */ - int FieldGetCount() const; - - /** Get the name of field indexed pFieldIndex. - * \param pFieldIndex - * \return the name of field indexed pFieldIndex. - */ - const char* FieldGetName(int pFieldIndex) const; - - /** Get number of instance field pFieldName has. - * \param pFieldName - * \return the number of instance field pFieldName has. - */ - int FieldGetInstanceCount(const char* pFieldName) const; - - /** Start to read field instance referred by field indexed pFieldIndex, instance indexed pInstance. - * \param pFieldIndex - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(int pFieldIndex, int pInstance); - - /** Start to read field pFieldName. - * \param pFieldName - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName); - - /** Start to read field instance referred field pFieldName, instance indexed pInstance. - * \param pFieldName - * \param pInstance - * \return \c true on success, \c false otherwise. - */ - bool FieldReadBegin(const char* pFieldName, int pInstance); - - //! Stop to read the current field. - void FieldReadEnd(); - - //! Return if current field is a block. - bool FieldReadIsBlock(); - - //! Start to read a field block. - bool FieldReadBlockBegin(); - - //! Stop to read a field block. - void FieldReadBlockEnd(); - - //! Return the number of read field. - int FieldReadGetCount() const; - - //! Return the number of field remaining to be read. - int FieldReadGetRemain() const; - - //! Return current field value type. - char FieldReadGetType() const; - - //! Return current field value as a char. - char FieldReadCH(); - - /** Return field pFieldName's value as a char. - * \param pFieldName - * \param pDefault - */ - char FieldReadCH(const char* pFieldName, char pDefault=0); - - //! Return current field value as a char pointer. - const char* FieldReadC(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadC(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as a string (a char pointer). - const char* FieldReadS(); - - /** Return field pFieldName's value as a char pointer. - * \param pFieldName - * \param pDefault - */ - const char* FieldReadS(const char* pFieldName, const char* pDefault=""); - - //! Return current field value as an bool. - bool FieldReadB(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - bool FieldReadB(const char* pFieldName, bool pDefault = false); - - //! Return current field value as an integer. - int FieldReadI(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */int FieldReadI(const char* pFieldName, int pDefault=0); - - //! Return current field value as an integer. - FbxLongLong FieldReadLL(); - - /** Return field pFieldName's value as an integer. - * \param pFieldName - * \param pDefault - */ - FbxLongLong FieldReadLL(const char* pFieldName, FbxLongLong pDefault=0); - - //! Return current field value as a float. - float FieldReadF(); - - /** Return field pFieldName's value as a float. - * \param pFieldName - * \param pDefault - */ - float FieldReadF(const char* pFieldName, float pDefault=0); - - //! Return current field value as a double. - double FieldReadD(); - - /** Return field pFieldName's value as a double. - * \param pFieldName - * \param pDefault - */ - double FieldReadD(const char* pFieldName, double pDefault=0); - - /** Return field pFieldName's value as a time value. - * \param pFieldName - */ - FbxTime FieldReadT(const char* pFieldName); - - //! Return field pFieldName's value as a time value. - FbxTime FieldReadT(); - - /** Return field pFieldName's value as a timespan value. - * \param pFieldName - */ - FbxTimeSpan FieldReadTS(const char* pFieldName); - - //! Return field pFieldName's value as a timespan value. - FbxTimeSpan FieldReadTS(); - - /** Return current field value as a n floats array. - * \param pValue - * \param pn - */ - void FieldReadFn(float* pValue, FbxUInt pn); - - /** Return current field value as a 3 floats array. - * \param pValue - */ - void FieldRead3F(float* pValue); - - /** Return current field value as a 4 floats array. - * \param pValue - */ - void FieldRead4F(float* pValue); - - /** Return field pFieldName's value as n floats array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadFn(const char* pFieldName, float* pValue, const float *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return field pFieldName's value as 3 floats array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4F(const char* pFieldName, float* pValue, const float* pDefault=NULL); - - /** Return current field value as a n doubles array. - * \param pValue - * \param pn - */ - void FieldReadDn(double* pValue, FbxUInt pn); - - /** Return current field value as a 3 doubles array. - * \param pValue - */ - void FieldRead3D(double* pValue); - - /** Return current field value as a 4 doubles array. - * \param pValue - */ - void FieldRead4D(double* pValue); - - /** Return field pFieldName's value as n doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - * \param pn - */ - void FieldReadDn(const char* pFieldName, double* pValue, const double *pDefault, FbxUInt pn); - - /** Return field pFieldName's value as 4 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead3D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return field pFieldName's value as 3 doubles array. - * \param pFieldName - * \param pValue - * \param pDefault - */ - void FieldRead4D(const char* pFieldName, double* pValue, const double* pDefault=NULL); - - /** Return current field value as raw data. - * \param pByteSize - */ - void* FieldReadR(int* pByteSize); - - /** Return field pFieldName's value as raw data. - * \param pFieldName - * \param pByteSize - */ - void* FieldReadR(const char* pFieldName,int* pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - //! Return field pFieldName's value as byte. - FbxChar FieldReadByte(); - - /** Return field pFieldName's value as a byte value. - * \param pFieldName - * \param pDefault - */ - FbxChar FieldReadByte(const char* pFieldName, FbxChar pDefault=0); - - //! Return field pFieldName's value as unsigned byte. - FbxUChar FieldReadUByte(); - - /** Return field pFieldName's value as an unsigned byte value. - * \param pFieldName - * \param pDefault - */ - FbxUChar FieldReadUByte(const char* pFieldName, FbxUChar pDefault=0); - - //! Return field pFieldName's value as short. - FbxShort FieldReadShort(); - - /** Return field pFieldName's value as a short value. - * \param pFieldName - * \param pDefault - */ - FbxShort FieldReadShort(const char* pFieldName, FbxShort pDefault=0); - - //! Return field pFieldName's value as unsigned short. - FbxUShort FieldReadUShort(); - - /** Return field pFieldName's value as an unsigned short value. - * \param pFieldName - * \param pDefault - */ - FbxUShort FieldReadUShort(const char* pFieldName, FbxUShort pDefault=0); - - //! Return field pFieldName's value as unsigned integer. - unsigned int FieldReadUI(); - - /** Return field pFieldName's value as an unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - unsigned int FieldReadUI(const char* pFieldName, unsigned int pDefault=0); - - //! Return field pFieldName's value as 64 bit unsigned integer. - FbxULongLong FieldReadULL(); - - /** Return field pFieldName's value as an 64 bit unsigned int as a value. - * \param pFieldName - * \param pDefault - */ - FbxULongLong FieldReadULL(const char* pFieldName, FbxULongLong pDefault=0); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArraySBytes( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArrayShort ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArrayUShort( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArrayUI ( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArrayULL ( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxChar* FieldReadArray(int &pCount, const FbxChar*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxShort* FieldReadArray(int &pCount, const FbxShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUShort* FieldReadArray(int &pCount, const FbxUShort*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const unsigned int* FieldReadArray(int &pCount, const unsigned int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxULongLong* FieldReadArray(int &pCount, const FbxULongLong*); - //@} - - /** Read field and copy it into a file. - * \param pFileName Embedded file full path+name. - *\param pRelativeFileName Relative path+name of the embedded file. - * \param pEmbeddedMediaDirectory Directory of the embedded media. - * \param pIsFileCreated Status of the extraction of the embedded data. Set to \c true if the embedded media is correctly extracted in the media directory. - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - virtual bool FieldReadEmbeddedFile (FbxString& pFileName, FbxString& pRelativeFileName, const char* pEmbeddedMediaDirectory = "", bool *pIsFileCreated=NULL); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArrayD( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArrayF( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArrayI( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong*FieldReadArrayLL(int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArrayB( int &pCount ); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArrayBytes( int &pCount ); - - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const int* FieldReadArray(int& pCount, const int*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const float* FieldReadArray(int& pCount, const float*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const double* FieldReadArray(int& pCount, const double*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxLongLong* FieldReadArray(int& pCount, const FbxLongLong*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const bool* FieldReadArray(int& pCount, const bool*); - /** Read the whole array and return the pointer to it. - * \param pCount Nb of items in the array. - */ - const FbxUChar* FieldReadArray(int& pCount, const FbxUChar*); - - //@} - - /** - * \name Write related functions used to write information of a field or a group of fields. - * Can be used to write the field content data or to navigate from field to field. - */ - //@{ - - /** Start to write a field called pFieldName. - * \param pFieldName - */ - void FieldWriteBegin(const char* pFieldName); - - //! Stop to write the current field. - void FieldWriteEnd(); - - //! Start to write a field block. - void FieldWriteBlockBegin(); - - /** Start to write an object reference field. - * \param pObjectType - * \param pName - * \param pSubType - */ - void FieldWriteObjectBegin(const char* pObjectType, const char* pName, const char* pSubType=NULL); - - //! Stop to write an object reference field. - void FieldWriteObjectEnd(); - - /** Start to write a field block in file pFileName. - * \param pFileName - * \remarks This function is disabled but kept accessible for the FBX SDK. - */ - void FieldWriteBlockBegin(const char* pFileName); - - //! Stop to write a block of field. - void FieldWriteBlockEnd (); - - /** Write field value as a char. - * \param pValue - */ - void FieldWriteCH(char pValue); - - /** Write field pFieldName field with a char as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteCH(const char* pFieldName, char pValue); - - /** Write field value as char pointer pValue. - * \param pValue - */ - void FieldWriteC(const char* pValue); - - /** Write field pFieldName with a char pointer as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteC(const char* pFieldName, const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const char* pValue); - - /** Write field value as FbxString pValue. - * \param pValue - */ - void FieldWriteS(const FbxString& pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const char* pValue); - - /** Write field pFieldName field with a FbxString as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteS(const char* pFieldName, const FbxString& pValue); - - /** Write field value as bool. - * \param pValue - */ - void FieldWriteB(bool pValue); - - /** Write field pFieldName field with a bool value. - * \param pFieldName - * \param pValue - */ - void FieldWriteB(const char* pFieldName, bool pValue); - - /** Write field value as integer. - * \param pValue - */ - void FieldWriteI(int pValue); - - /** Write field pFieldName field with an int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteI(const char* pFieldName, int pValue); - - /** Write field value as 64 bit integer. - * \param pValue - */ - void FieldWriteLL(FbxLongLong pValue); - - /** Write field pFieldName field with an 64 bit int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteLL(const char* pFieldName, FbxLongLong pValue); - - /** Write field value as float. - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(float pValue); - - /** Write field pFieldName field with a float as a value. - * \param pFieldName - * \param pValue - * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. - */ - void FieldWriteF(const char* pFieldName, float pValue); - - /** Write field value as double. - * \param pValue - */ - void FieldWriteD(double pValue); - - /** Write field pFieldName field with a double as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteD(const char* pFieldName, double pValue); - - /** Write field value as time value. - * \param pTime - */ - void FieldWriteT(FbxTime pTime); - - /** Write field pFieldName field with a time as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteT(const char* pFieldName,FbxTime pValue); - - /** Write field value as timespan value. - * \param pTimeSpan - */ - void FieldWriteTS(FbxTimeSpan pTimeSpan); - - /** Write field pFieldName field with a timespan as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteTS(const char* pFieldName,FbxTimeSpan pValue); - - /** Write field value as an array of n floats (nF vector). - * \param pValue - * \param pn - */ - void FieldWriteFn(const float* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n floats as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteFn(const char* pFieldName, const float* pValue, FbxUInt pn); - - /** Write field value as an array of 3 floats (3F vector). - * \param pValue - */ - void FieldWrite3F(const float* pValue); - - /** Write field pFieldName field with a array of 3 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of 4 floats (4F vector). - * \param pValue - */ - void FieldWrite4F(const float* pValue); - - /** Write field pFieldName field with a array of 4 floats as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4F(const char* pFieldName, const float* pValue); - - /** Write field value as an array of n doubles (nD vector). - * \param pValue - * \param pn - */ - void FieldWriteDn(const double* pValue, FbxUInt pn); - - /** Write field pFieldName field with a array of n doubles as a value. - * \param pFieldName - * \param pValue - * \param pn - */ - void FieldWriteDn(const char* pFieldName, const double* pValue, FbxUInt pn); - - /** Write field value as an array of 3 doubles (3D vector). - * \param pValue - */ - void FieldWrite3D(const double* pValue); - - /** Write field pFieldName field with a array of 3 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite3D(const char* pFieldName, const double* pValue); - - /** Write field value as an array of 4 doubles (4D vector). - * \param pValue - */ - void FieldWrite4D(const double* pValue); - - /** Write field pFieldName field with a array of 4 doubles as a value. - * \param pFieldName - * \param pValue - */ - void FieldWrite4D(const char* pFieldName, const double* pValue); - - // The maximum number of value entries is, in theory, 2**32. In practice it should be a lot less than that. - // pSize is the number of values to write from each pointer location, and stride is how much we - // advance to get to the next value; if the stride is zero, values are tighly packed together. - // So in total we'll write n * pSize items. - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayD( int n, const double* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayF( int n, const float* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayI( int n, const int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayLL(int n, const FbxLongLong* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayB( int n, const bool* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayBytes( int n, const FbxUChar* pValue, int pSize = 1, int pStride = 0 ); - - /** Write field value as a raw data. - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const void* pRawData, int pByteSize); - - /** Write field pFieldName field with raw data as a value. - * \param pFieldName - * \param pRawData - * \param pByteSize - */ - void FieldWriteR(const char* pFieldName, const void* pRawData, int pByteSize); - - /** - * \name FBX SDK 2009.3 and later - */ - //@{ - - /** Write field value as byte. - * \param pValue - */ - void FieldWriteByte(FbxChar pValue); - - /** Write field pFieldName field with a byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteByte(const char* pFieldName, FbxChar pValue); - - /** Write field value as unsigned byte. - * \param pValue - */ - void FieldWriteUByte(FbxUChar pValue); - - /** Write field pFieldName field with an unsigned byte value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUByte(const char* pFieldName, FbxUChar pValue); - - /** Write field value as short. - * \param pValue - */ - void FieldWriteShort(FbxShort pValue); - - /** Write field pFieldName field with a short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteShort(const char* pFieldName, FbxShort pValue); - - /** Write field value as unsigned short. - * \param pValue - */ - void FieldWriteUShort(FbxUShort pValue); - - /** Write field pFieldName field with an unsigned short value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUShort(const char* pFieldName, FbxUShort pValue); - - /** Write field value as an unsigned integer. - * \param pValue - */ - void FieldWriteUI(unsigned int pValue); - - /** Write field pFieldName field with an unsigned int as a value. - * \param pFieldName - * \param pValue - */ - void FieldWriteUI(const char* pFieldName, unsigned int pValue); - - /** Write field value as 64 bit unsigned integer. - * \param pValue - */ - void FieldWriteULL(FbxULongLong pValue); - - /** Write field pFieldName field with an 64 bit unsigned int as a value. - * \param pFieldName - * \param pValue - * \return void - */ - void FieldWriteULL(const char* pFieldName, FbxULongLong pValue); - - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArraySBytes( int n, const FbxChar* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayShort( int n, const FbxShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUShort( int n, const FbxUShort* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayUI( int n, const unsigned int* pValue, int pSize = 1, int pStride = 0 ); - /** Write array to file. - * \param n Nb of items in the array. - * \param pValue Pointer to the data. - * \param pSize Size of each item in the array. - * \param pStride Array stride. - */ - void FieldWriteArrayULL(int n, const FbxULongLong* pValue, int pSize = 1, int pStride = 0 ); - //@} - - /** ASCII files may limit how big you can write your raw data, forcing you to break it down into chunks. - * \return int - */ - int GetFieldRMaxChunkSize() const; - - /** Write object reference pName in the current field. - * \param pName - */ - void FieldWriteObjectReference(const char* pName); - - /** Write object reference pName in field pFieldName. - * \param pFieldName - * \param pName - */ - void FieldWriteObjectReference(const char* pFieldName, const char* pName); - - /** Write field with file content as a value. - * \param pFileName - * \param pRelativeFileName - * \remarks Only works when file is binary. This function is not related to flag mEmbedded. - * \return \c false if operation failed. - */ - bool FieldWriteEmbeddedFile (FbxString pFileName, FbxString pRelativeFileName); - - /** Write comments, only effective in ASCII mode. - * \param pFieldName - */ - void WriteComments(const char* pFieldName); - - //@} - -#ifdef _DEBUG - // Dump function for debugging purpose only - void StdoutDump(); -#endif - - /** Get if the embedded file is currently loaded - * \return true if loaded, false otherwise - * \remarks An embedded file is a file like a JPEG image used for texture or an AVI file for video. - * When files are embedded, the size of the FBX file can be very large since other files are embedded in it. - * FBX Version 6 and lower cannot embed files when saved in ASCII. - * FBX Version 7 and over can embed files even when saved in ASCII mode. - */ - bool GetHaveLoadedEmbededFile() const; - - /** Get the maximum byte count written - * \param pMemPtr The address of the memory file - * \param[out] pSize Stores the maximum byte count written - */ - void GetMemoryFileInfo(void** pMemPtr, size_t& pSize) const; - - /** Get a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - bool IsBeforeVersion6() const; - - /** Set a internal flag to manage pre FBX version 6 data format - * Used for backwards compatibility - */ - void SetIsBeforeVersion6(bool pIsBeforeVersion6); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProjectOpen (FbxFile * pFile, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); - FbxStatus& GetStatus() { return mStatus; } - -private: - // to resolve warning C4512: 'class' : assignment operator could not be generated - FbxIO& operator=(const FbxIO& pOther); - - FbxStatus& mStatus; - - struct InternalImpl; - struct InternalImpl32; - struct InternalImpl64; - InternalImpl* mImpl; - - //! Project Global - - void ProjectClear(); - void ProjectReset(); - - bool ProjectReadHeader(bool pCheckASCIIHeader, bool pCheckCRC, bool pOpenMainSection, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectReadExtendedHeader(FbxInt64& pExtendedHeaderEnd, FbxIOFileHeaderInfo* pFileHeaderInfo); - bool BinaryReadHeader(); - bool BinaryReadSectionPosition(); - bool ASCIIReadHeader(); - bool ASCIIReadSectionPosition(); - - bool ProjectWriteHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - bool ProjectWriteExtendedHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); - void BinaryWriteHeader(); - void ASCIIWriteHeader(); - - void ReadEncryptionKey(char* pEncryptionKey); - void WriteEncryptionKey(char* pEncryptionKey); - - //! Project Section - - bool ProjectClearSection(); - bool ProjectOpenSection(int pSection); - bool BinaryReadSectionHeader(); - FbxInt64 BinaryReadSectionFooter(unsigned char* pSourceCheck); - bool BinaryReadExtensionCode(FbxInt64 pFollowingSectionStart, FbxInt64& pSectionStart, FbxUInt32& pSectionVersion); - void BinaryReadSectionPassword(); - - bool ProjectWriteSectionHeader(); - void BinaryWriteSectionFooter(); - bool BinaryWriteExtensionCode(FbxInt64 pSectionStart, FbxUInt32 pSectionVersion); - - FbxString GetCreationTime() const; - void SetCreationTime(FbxString pCreationTime); - void CreateSourceCheck(unsigned char* lSourceCheck); - bool TestSourceCheck(unsigned char* pSourceCheck, unsigned char* pSourceCompany); - FbxString GetMangledCreationTime(); - void EncryptSourceCheck(unsigned char* pSourceCheck, unsigned char* pEncryptionData); - void DecryptSourceCheck(unsigned char* pSourceCheck, const unsigned char* pEncryptionData); - - void EncryptPasswordV1(FbxString pOriginalPassword, FbxString &pEncryptedPassword); - void DecryptPasswordV1(FbxString pEncryptedPassword, FbxString &pDecryptedPassword); - - //! Read - - void CheckValidityOfFieldName(const char* pFieldName); - void GetUnusedEmbeddedName(const FbxString& pDirectory, const FbxString& pName, FbxString& pResult, bool pCreateSubdirectory); - - //! Get project media directory name - FbxString GetDirectory(bool pAutoCreate, const char* pExtension); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_IO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h deleted file mode 100755 index 451ce87..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h +++ /dev/null @@ -1,256 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX5_H_ - -#include - -#include - -class FbxAnimLayer; -class Fbx5ObjectTypeInfo; - -FbxReader* CreateFBXReader(FbxManager& pManager, - FbxImporter& pImporter, - int pID, - FbxStatus& pStatus); -void GetInfoFBXReader(int* pCount, - const char* * pExtensions, - const char* * pDescriptions); - -class FbxReaderFbx5 : public FbxReader -{ -public: - FbxReaderFbx5(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - virtual ~FbxReaderFbx5(); - - virtual bool FileOpen(char* pFileName, bool pIgnoredArg); - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags){ return FbxReader::FileOpen(pFileName, pFlags); } - virtual bool FileOpen(char* pFileName); - virtual bool FileOpen(FbxFile * pFile); - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EImportMode; - - EImportMode GetImportMode(); - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - virtual bool Read(FbxScene& pScene, FbxIO* pFbx); - - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - virtual bool SupportsStreams() const { return true; } - -private: - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - void ReadOptionsInGenericSection(); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - bool WriteThumbnail(FbxThumbnail*); - FbxDocumentInfo* ReadSceneInfo(); - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - void WriteSceneInfo(FbxDocumentInfo*); - void SetIsBeforeVersion6WithMainSection(bool pOpenMainSection); - - bool ReadDefinitionSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObjectSection(FbxScene& pScene, FbxArray& pObjectContent); - bool ReadObject(FbxScene& pScene, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId); - bool ReadNode(); - //bool ReadGenericNode(FbxScene& pScene); - bool ReadAnimation(FbxScene& pScene); - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - FbxThumbnail* ReadThumbnail(); - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - bool ReadHierarchy(FbxNode& pRootNode); - bool ResolveHierarchy(FbxNode& pRootNode); - bool ResolveLinks(FbxNode& pRootNode, FbxNode& pCurrentNode); - bool ResolveTargets(FbxNode& pRootNode); - bool ResolveUpNodes(FbxNode& pRootNode); - bool ResolveCameraBackgrounds(FbxScene& pScene); - void RemoveDuplicateTextures(FbxScene& pScene); - void RemoveDuplicateMaterials(FbxScene& pScene); - - void ReadPose(FbxScene& pScene); - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - void ReadCameraSwitcher(FbxScene& pScene); - void ReorderCameraSwitcherIndices(FbxScene& pScene); - - void ReadGobo(FbxScene& pScene); - void ReadGoboSection(FbxScene& pScene); - void ReadGobo(FbxGobo& pGobo); - - void ReadCharacter(FbxScene& pScene); - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - void ReadFilterSet(FbxCharacter& pCharacter); - void ReadControlSet(FbxControlSet& pControlSet); - void ReadControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId); - void ReadControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId); - void ReadEffector(FbxControlSet& pControlSet); - void ReadEffectorAux(FbxControlSet& pControlSet); - - int ReadCharacterPose(FbxScene& pScene); - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); - - void ReadGlobalLightSettings(FbxScene& pScene); - void ReadShadowPlane(FbxScene& pScene); - void ReadAmbientColor(FbxScene& pScene); - void ReadFogOption(FbxScene& pScene); - - void ReadGlobalCameraAndTimeSettings(FbxScene& pScene); // for pre v6 files - void ReadGlobalTimeSettings(FbxScene& pScene); - - void ReadGlobalCameraSettings(FbxScene& pScene); - - bool ReadMedia(FbxScene& pScene, const char* pEmbeddedMediaDirectory = ""); - FbxString ReadMediaClip(const char* pEmbeddedMediaDirectory); - - bool ReadNode ( FbxNode& pNode ); - bool ReadGenericNode ( FbxGenericNode& pNode ); - bool ReadNodeChildrenName ( FbxNode& pNode ); - bool ReadNodeShading ( FbxNode& pNode ); - bool ReadNodeCullingType ( FbxNode& pNode ); - bool ReadNodeLimits ( FbxNode& pNode ); - bool ReadNodeTarget ( FbxNode& pNode ); - bool ReadNodeAttribute ( FbxNode& pNode ); - bool ReadNodePivots ( FbxNode& pNode ); - bool ReadNodeDefaultAttributes ( FbxNode& pNode ); - bool ReadNodeProperties ( FbxNode& pNode ); - bool ReadGeometry ( FbxGeometry& pGeometry ); - bool ReadGeometryMaterial ( FbxGeometry& pGeometry ); - bool ReadGeometryTexture ( FbxGeometry& pGeometry ); - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - bool ReadGeometryLayer ( FbxGeometry& pGeometry ); - bool ReadGeometryTextureLayer ( FbxGeometry& pGeometry, int pLayerIndex ); - - bool ReadNull ( FbxNull& pNull ); - - bool ReadMarker ( FbxMarker& pMarker ); - - bool ReadCamera ( FbxCamera& pCamera ); - bool ReadCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool ReadLight ( FbxLight& pLight ); - - bool ReadMesh ( FbxMesh& pMesh ); - bool ReadMeshVertices ( FbxMesh& pMesh ); - bool ReadMeshNormals ( FbxMesh& pMesh ); - bool ReadMeshAssignation ( FbxMesh& pMesh ); - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - bool ReadMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool ReadMeshMaterialsID ( FbxMesh& pMesh ); - bool ReadMeshTexturesID ( FbxMesh& pMesh ); - bool ReadMeshTextureType ( FbxMesh& pMesh ); - bool ReadMeshTextureUV ( FbxMesh& pMesh ); - bool ReadMeshTextureIndex ( FbxMesh& pMesh ); - bool ReadMeshVertexColors ( FbxMesh& pMesh ); - - - // Layer elements - bool ReadLayerElements (FbxGeometry& pGeometry); - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture); - bool ReadLayerElementsUV (FbxGeometry* pGeometry, FbxArray& pElementsUV); - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - bool ReadNurb ( FbxNurbs& pNurbs ); - - bool ReadPatch ( FbxPatch& pPatch ); - int ReadPatchType ( FbxPatch& pPatch ); - - bool ReadTexture(FbxFileTexture& pTexture); - bool ReadSurfaceMaterial(FbxSurfacePhong& pMaterial); - bool ReadLink(FbxCluster& pLink); - bool ReadSkin(FbxSkin& pSkin); - bool ReadCluster(FbxCluster& pCluster); - bool ReadShape(FbxShape& pShape, FbxGeometry& pGeometry); - bool ReadVideo(FbxVideo& pVideo); - bool ReadConstraint(FbxConstraint& pPosition); - - bool ReadUserProperties (FbxNode& pNode); - bool ReadProperties(FbxObject *pObject); - - // - // 6.0 Format specific - // - bool ReadConnectionSection(); - void ReadPoses(FbxScene& pScene); - - FbxString ConvertCameraName(FbxString pCameraName); - - bool GenerateParametricGeometryLayer(FbxGeometry& pGeometry); - void CorrectTextureLayers(FbxMesh& pMesh); - - void TransferAnimation(void* pRootCurveNode, FbxProperty& pRootProperty, bool pValueOnly = false); - void ReadAnimation(FbxIO& pFileObject, void* pCurveNode); - void ReadAnimation(FbxIO& pFileObject, FbxObject* pObj); - - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet); - void DestroyTimeWarps(FbxMultiMap& pTimeWarpSet); - - FbxNode* FindNode (char* pName); - int FindString(FbxString pString, FbxArray& pStringArray); - FbxString FindFile(FbxString pFullFilePath, FbxString pRelativeFilePath = ""); - - bool ReadPassword(FbxString pPassword); - - void ReadSceneGenericPersistenceSection(FbxScene& pScene); - - - - -private: - FbxReaderFbx5& operator=(FbxReaderFbx5 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - - FbxCharPtrSet mNodeArrayName; - FbxCharPtrSet mTargetArrayName; - FbxCharPtrSet mUpNodeArrayName; - FbxCharPtrSet mCameraBackgroundArrayName; - - FbxObjectStringMap mObjectMap; - FbxArray mTakeInfo; - FbxDocumentInfo * mSceneInfo; - FbxAnimLayer* mAnimLayer; - - // Temporary storage - FbxArray mTemporaryTextures; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX5_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h deleted file mode 100755 index f83cce9..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h +++ /dev/null @@ -1,1102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX6_H_ - -#include - -#include - -class FbxAnimStack; -class FbxAnimLayer; -class Fbx6ObjectTypeInfo; -class Fbx6TypeReadReferences; - - -/** \brief Helper class to merge Class root property templates. - * Add class id and object to the template and search object by - * class id. - */ -class Fbx6ClassTemplateMap -{ -public: - - /** Constructor - * - */ - Fbx6ClassTemplateMap(); - - /** Destructor - * - */ - ~Fbx6ClassTemplateMap(); - - // Fbx6ClassTemplateMap will own this template object. - - /** Add the template object to template map - * \param pId Class Id - * \param pTemplateObject template object - * \return if the object is successfully added return \c true, otherwise return \c false. - */ - bool AddClassId( FbxClassId pId, FbxObject* pTemplateObject ); - - /** Merge the properties of FbxObject with the object with the same class id - * \param pObject The FbxObject to merge - * \return if the object is merged return \c true, otherwise return \c false. - */ - bool MergeWithTemplate( FbxObject* pObject ) const; - - /** Delete all FbxObject in template map - * - */ - void Clear(); - -private: - typedef FbxMap< FbxClassId, FbxObject*, FbxClassIdCompare > MapType; - MapType mClassMap; - - /** Whether the property is modified - * \param lProp The property to check - * \return If the property has been modified return \c true, otherwise return \c false - */ - bool HasModifiedFlags(FbxProperty lProp) const; - inline FbxPropertyFlags::EFlags IndexToFlag( int i ) const { return static_cast(1 << i); } -}; - - - -/** \brief This class is the FBX v6 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx6 : public FbxReader -{ -public: - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx6(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx6(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with FbxFile handle - * \param pFile the FbxFile handle - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(FbxFile * pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Get current Import mode - * \return return the EImportMode value - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - - /** Read all the properties and flags - * \param pParams settings to assign properties and flags - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } - - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - - /** Read scene information - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(); - - /** Read scene information by type - * \param pType the type to read - * \return A pointer of document info. Return \c NULL if any error exist - */ - FbxDocumentInfo* ReadSceneInfo(FbxString& pType); - - /** Write scene information - * - */ - void WriteSceneInfo(FbxDocumentInfo*); - - /** Write thumbnail - * - */ - bool WriteThumbnail(FbxThumbnail*); - - /** - * \name FBX File sections - */ - //@{ - - /** Create generic object and connect with FbxIO document - * \param pDocument FbxDocument to connect with the generic object - * \param pObjectType type of generic object - * \param pObjectSubType Subtype of generic object - * \param pObjectName Name of generic object - * \param pFlags Object flag - * \return A pointer of the generic object. Return \c NULL if creation fails. - */ - FbxObject* CreateGenericObject(FbxDocument *pDocument, char* pObjectType, char* pObjectSubType, char* pObjectName, FbxObject::EObjectFlag pFlags=FbxObject::eSavable); - - /** Read description section and assign the document name - * \param pDocument Document to read - * \param pDocumentName Document name to assign - * \return if reading description section is successful return \c true, otherwise return \c false. - */ - bool ReadDescriptionSection(FbxDocument *pDocument, FbxString& pDocumentName); - - /** Read reference section and fill the external references - * \param pDocument Document to read - * \param pDocReferences External references to fill - * \return if reading reference section is successful return \c true, otherwise return \c false. - */ - bool ReadReferenceSection(FbxDocument *pDocument, Fbx6TypeReadReferences& pDocReferences); - - /** Read definition section and fill object type info array - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \return if reading definition section is successful return \c true, otherwise return \c false. - */ - bool ReadDefinitionSection(FbxDocument *pDocument, FbxArray& pObjectContent ); - - /** Read object section and fill object type info array and external reference - * \param pDocument Document to read - * \param pObjectContent Object type info array to fill - * \param pDocReferences External references to fill - * \return if reading object section is successful return \c true, otherwise return \c false. - */ - bool ReadObjectSection(FbxDocument *pDocument, FbxArray& pObjectContent, Fbx6TypeReadReferences& pDocReferences ); - - /** Read object information from document - * \param pDocument Document to read - * \param pObjectType Object type to assign - * \param pObjectSubType Object subtype to assign - * \param pObjectName Object Name - * \param pObjectUniqueId Object unique id - * \param pReferencedObject Reference object - * \param pDocReferences External reference - * \return if reading object is successful return \c true, otherwise return \c false. - */ - bool ReadObject(FbxDocument *pDocument, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject, Fbx6TypeReadReferences& pDocReferences); - - /** Read the connection section from document - * \param pDocument Document to read - * \return if reading connection section is successful return \c true, otherwise return \c false. - */ - bool ReadConnectionSection(FbxDocument *pDocument ); - //@} - - /** - * \name Takes and animation - */ - //@{ - - /** Read animation from document - * \param pDocument Document to read - * \return if reading animation is successful return \c true, otherwise return \c false. - */ - bool ReadDocumentAnimation(FbxDocument *pDocument); - - /** Read object animation from file object - * \param pFileObject File object handle - * \param pNode Fill this node with animation - * \param pAnimStack Animation stack to read from - * \param pExceptionFlag Exception flag - */ - void ReadObjectAnimation(FbxIO& pFileObject, FbxObject* pNode, FbxAnimStack& pAnimStack, int pExceptionFlag); - - /** Read property animation from file object - * \param pFileObject File object handle - * \param pProp Fill the property with animation - * \param pAnimStack Animation stack to read from - */ - void ReadPropertyAnimation(FbxIO& pFileObject, FbxProperty* pProp, FbxAnimStack& pAnimStack); - - /** Read take animation from fbx scene - * \param pScene Scene to read animation - * \param pTakeInfo Take info to read from - * \remarks This function will allocate the corresponding FbxAnimStack with the base animation layer. - */ - bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); - - /** Read node animation from file - * \param pFileObject File object to read - * \param pScene Scene to read animation - * \param pAnimStack The animation stack to read from - * \param pTakeInfo Take info to read from - */ - bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxAnimStack& pAnimStack, FbxTakeInfo* pTakeInfo); - - - /** Read layer information from file - * \param pFileObject File object to read - * \param pTakeInfo Take info to read from - */ - void ReadLayers(FbxIO& pFileObject, FbxTakeInfo* pTakeInfo); - - /** Read time warps from file - * \param pFileObject File object to read - * \param pTimeWarpSet Time warp set to fill - * \param pScene Scene holding the time warp curves. - */ - void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet, FbxScene& pScene); - - /** Read thumbnail - * \return A pointer of thumbnail. Return \c NULL if any error exist - */ - FbxThumbnail* ReadThumbnail(); - - /** Set time shift for node animation from take information - * \param pScene Scene to read - * \param pAnimStack The animation stack to modify - * \param pTimeOffsetType A value from the FbxTakeInfo::EImportOffsetType enumeration that indicates the time shift offset type - * \param pTimeOffset The time shift offset - * \return if time shifting is successful return \c true, otherwise return \c false. - */ - bool TimeShiftNodeAnimation(FbxScene& pScene, FbxAnimStack& pAnimStack, int pTimeOffsetType, FbxTime pTimeOffset); - //@} - - /** - * \name Camera switcher - */ - //@{ - - /** Read camera switcher from scene - * \param pScene Scene to read from - */ - void ReadCameraSwitcher(FbxScene& pScene); - - /** Fill camera switcher object with data - * \param pCameraSwitcher Camera switcher to fill - */ - bool ReadCameraSwitcher( FbxCameraSwitcher& pCameraSwitcher ); - - /** Reorder camera switcher indices in the scene - * \param pScene Scene to read from - */ - void ReorderCameraSwitcherIndices(FbxScene& pScene); - //@} - - /** - * \name Global parameters - */ - //@{ - - /** Read global light settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalLightSettings(FbxScene& pScene); - - /** Read global time settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalTimeSettings(FbxScene& pScene); - - /** Read global camera settings from scene - * \param pScene Scene to read from - */ - void ReadGlobalCameraSettings(FbxScene& pScene); - - /** Read shadow plane from scene - * \param pScene Scene to read from - */ - void ReadShadowPlane(FbxScene& pScene); - - /** Read ambient color from scene - * \param pScene Scene to read from - */ - void ReadAmbientColor(FbxScene& pScene); - - /** Read fog option from scene - * \param pScene Scene to read from - */ - void ReadFogOption(FbxScene& pScene); - //@} - - /** - * \name Character - */ - //@{ - - /** Read character information from file - * \param pCharacter Character object to fill - * \param pInputType Unused. - * \param pInputIndex Unused. - */ - void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); - - /** Read character link group information from file by group id - * \param pCharacter Character object to fill - * \param pCharacterGroupId Group id to read character link - */ - void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); - - /** Read character link information from file by node id - * \param pCharacter Character object to fill - * \param pCharacterNodeId Character node id - */ - void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); - - /** Read character link formation in rotation space - * \param pCharacterLink Character link object to fill - */ - void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - /** Read character pose from file - * \param pCharacterPose Character pose to fill - * \return if reading character pose is successful return \c true, otherwise return \c false. - */ - bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); // TBV - //@} - - /** - * \name Misc - */ - //@{ - /** Read pose object from scene - * \param pScene Scene to read from - * \param pPose Pose object - * \param pAsBindPose whether to treat the pose as BindPose - * \return if reading pose is successful return \c true, otherwise return \c false. - */ - bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); - - /** Read media data from document - * \param pDocument Document to read from - * \param pEmbeddedMediaDirectory the directory path storing the embedded media - * \return if reading media is successful return \c true, otherwise return \c false. - */ - bool ReadMedia(FbxDocument *pDocument, const char* pEmbeddedMediaDirectory = ""); - - /** Read global settings from file - * \param pGlobalSettings global settings object to fill - * \return if reading global settings is successful return \c true, otherwise return \c false. - */ - bool ReadGlobalSettings(FbxGlobalSettings& pGlobalSettings); - //@} - - /** - * \name Objects - */ - //@{ - - /** Read node data from file - * \param pNode Node object to fill data - * \param pObjectSubType Subtype of object - * \param pDocReferences External reference - * \return if reading node data is successful return \c true, otherwise return \c false. - */ - bool ReadNode ( FbxNode& pNode, FbxString& pObjectSubType, Fbx6TypeReadReferences& pDocReferences ); - - /** Read properties and flags for fbx container - * \param pContainer container to fill data - * \return if reading data to container is successful return \c true, otherwise return \c false. - */ - bool ReadContainer ( FbxContainer& pContainer ); - - /** Read properties and flags for fbx generic node - * \param pNode generic node to fill data - * \return if reading data to generic node is successful return \c true, otherwise return \c false. - */ - bool ReadGenericNode ( FbxGenericNode& pNode ); - - /** Read shading information of node - * \param pNode fbx node to fill shading information - * \return if reading shading information to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeShading ( FbxNode& pNode ); - - /** Read back-face culling type for node - * \param pNode fbx node - * \return if reading culling type to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeCullingType ( FbxNode& pNode ); // TBV, probablement passe tout en property - - /** Read target transform for node - * \param pNode fbx node - * \return if reading target transform to node is successful return \c true, otherwise return \c false. - */ - bool ReadNodeTarget ( FbxNode& pNode ); - - /** Read node attribute according to object subtype - * \param pNode fbx node - * \param pObjectSubType object subtype - * \param pCreatedAttribute set to true if attribute exists - * \param pDocReferences external reference to search - * \return if reading node attribute is successful return \c true, otherwise return \c false. - */ - bool ReadNodeAttribute ( FbxNode& pNode , FbxString& pObjectSubType, bool& pCreatedAttribute, Fbx6TypeReadReferences& pDocReferences); - - /** Read node attribute according to object subtype - * \param pObjectSubType object subtype - * \param pObjectName object name - * \param pObjectUniqueId unique id of object - * \param pReferencedObject pointer of reference object - * \return A pointer of node attribute. Return \c NULL if the attribute does not exist - */ - FbxNodeAttribute* ReadNodeAttribute( FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject); - - /** Read node properties , flags and update the - * node pivot and limits according to properties - * \param pNode FBX node - * \param pReadNodeAttributeProperties whether to - * \return if reading node properties is successful return \c true, otherwise return \c false. - */ - bool ReadNodeProperties ( FbxNode& pNode, bool pReadNodeAttributeProperties ); - - /** Read layered texture from file - * \param pTex Layered texture to fill - * \return if reading layered texture is successful return \c true, otherwise return \c false. - */ - bool ReadLayeredTexture ( FbxLayeredTexture& pTex ); - - /** Read FBX links for geometry - * \param pGeometry FBX geometry - * \return if reading geometry links is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryLinks ( FbxGeometry& pGeometry ); - - /** Read FBX shapes for geometry - * \param pGeometry FBX geometry - * \return if reading geometry shapes is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryShapes ( FbxGeometry& pGeometry ); - - /** Read the null node from file - * \param pNull Null node - * \return if reading null node is successful return \c true, otherwise return \c false. - */ - bool ReadNull ( FbxNull& pNull ); - - /** Read the marker node from file - * \param pMarker Marker node - * \return if reading marker node is successful return \c true, otherwise return \c false. - */ - bool ReadMarker ( FbxMarker& pMarker ); - - /** Read the camera node from file - * \param pCamera Camera node - * \return if reading camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCamera ( FbxCamera& pCamera ); - - /** Read the stereo camera node from file - * \param pCameraStereo Stereo camera node - * \return if reading stereo camera node is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereo ( FbxCameraStereo& pCameraStereo ); - - /** Read the precomp file from binary file - * \param pCameraStereo Stereo camera node - * \return if reading precomp file is successful return \c true, otherwise return \c false. - */ - bool ReadCameraStereoPrecomp (FbxCameraStereo& pCameraStereo); - - /** Read the light node from file - * \param pLight light node - * \return if reading light node is successful return \c true, otherwise return \c false. - */ - bool ReadLight ( FbxLight& pLight ); - - /** Read the binding table node from file. - * Create all the binding table entries and fill with embedded data - * \param pTable binding table - * \return if reading binding table is successful return \c true, otherwise return \c false. - */ - bool ReadBindingTable ( FbxBindingTable& pTable ); - - /** Read the binding operator from file - * \param pOperator binding operator - * \return if reading binding operator is successful return \c true, otherwise return \c false. - */ - bool ReadBindingOperator ( FbxBindingOperator& pOperator ); - - /** Read vertices, polygon indices, edges, layer elements, geometry links and shapes to mesh object - * \param pMesh fbx mesh - * \return if reading mesh object is successful return \c true, otherwise return \c false. - */ - bool ReadMesh ( FbxMesh& pMesh ); - - /** Read mesh smoothness factor from mesh - * \param pMesh fbx mesh - * \return if reading mesh smoothness is successful return \c true, otherwise return \c false. - */ - bool ReadMeshSmoothness ( FbxMesh& pMesh ); - - /** Read vertices of mesh object - * \param pMesh fbx mesh - * \return if reading mesh vertices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshVertices ( FbxMesh& pMesh ); - - /** Read polygon indices of mesh object - * \param pMesh fbx mesh - * \return if reading polygon indices is successful return \c true, otherwise return \c false. - */ - bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); - - /** Read edges of mesh object - * \param pMesh fbx mesh - * \return if reading mesh edges is successful return \c true, otherwise return \c false. - */ - bool ReadMeshEdges ( FbxMesh& pMesh ); - - //** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - //* \param pSubdiv fbx subdiv - //* \param pObjectName Object Name - //* \param pReferencedObject pointer of reference object - //* \return if reading subdiv object is successful return \c true, otherwise return \c false. - //*/ - //bool ReadSubdiv( FbxSubDiv& pSubdiv, FbxString& pObjectName, FbxObject* pReferencedObject); - - /** Read FBX subdiv, base mesh, finest mesh, current subdiv level... - * \param pSubdiv fbx subdiv - * \return if reading subdiv object is successful return \c true, otherwise return \c false. - */ - bool ReadSubdiv( FbxSubDiv& pSubdiv); - - /** Read properties and flags for fbx document - * \param pSubDocument fbx document - * \return if reading document information is successful return \c true, otherwise return \c false. - */ - bool ReadDocument ( FbxDocument& pSubDocument ); - - /** Read properties and flags for fbx collection - * \param pCollection fbx collection - * \return if reading fbx collection is successful return \c true, otherwise return \c false. - */ - bool ReadCollection ( FbxCollection& pCollection ); - - /** Read properties and flags for fbx selection set - * \param pSelectionSet fbx selection set - * \return if reading fbx selection set is successful return \c true, otherwise return \c false. - */ - bool ReadSelectionSet ( FbxSelectionSet& pSelectionSet); - - bool ReadSelectionNode (FbxSelectionNode& pSelectionNode); - - /** Read nurb data including surface types, nurb type, display type, steps, control points and UV. - * \param pNurbs Nurb object - * \return if reading nurb data is successful return \c true, otherwise return \c false. - */ - bool ReadNurb ( FbxNurbs& pNurbs ); - - /** Read nurb surface data including surface types, surface type, display type, steps, control points and UV vectors. - * \param pNurbs Nurb surface object - * \return if reading nurb surface data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsSurface ( FbxNurbsSurface& pNurbs ); - - /** Read patch data including patch type, dimension, display type, steps, UV cap and control points. - * \param pPatch Patch object - * \return if reading patch data is successful return \c true, otherwise return \c false. - */ - bool ReadPatch ( FbxPatch& pPatch ); - - /** Read patch type in string and return type in enum - * \param pPatch Patch object - * \return patch type in enum - */ - int ReadPatchType ( FbxPatch& pPatch ); - - - /** Read nurb curve data including types, dimension, rational-ness, control points and knots. - * \param pNurbsCurve Nurb curve - * \return if reading nurb curve data is successful return \c true, otherwise return \c false. - */ - bool ReadNurbsCurve ( FbxNurbsCurve& pNurbsCurve ); - - /** Read trim Nurb surface objects with properties - * \param pNurbs Trim nurb surface * \return if reading trim nurb surface is successful return \c true, otherwise return \c false. - */ - bool ReadTrimNurbsSurface ( FbxTrimNurbsSurface& pNurbs ); - - /** Read properties and flags of fbx boundary - * \param pBoundary Fbx boundary object - * \return if reading fbx boundary is successful return \c true, otherwise return \c false. - */ - bool ReadBoundary ( FbxBoundary& pBoundary ); - - /** Read shape object properties from file - * \param pShape Fbx Shape - * \param pGeometry Geometry contains the shape - * \return if reading shape object properties is successful return \c true, otherwise return \c false. - */ - bool ReadShape ( FbxShape& pShape, FbxGeometry& pGeometry); - - /** Read properties and flags of fbx implementation - * \param pImplementation Fbx implementation - * \return if reading fbx implementation is successful return \c true, otherwise return \c false. - */ - bool ReadImplementation ( FbxImplementation& pImplementation ); - - /** Read texture object data including name, UV transform, alpha and cropping. - * \param pTexture Fbx texture object - * \return if reading texture object is successful return \c true, otherwise return \c false. - */ - bool ReadFileTexture (FbxFileTexture& pTexture); - - /** Read surface material from file - * \param pName Material Name - * \param pMaterialType Material type - * \param pReferencedMaterial Reference material to clone from if it is not \c NULL - * \return A pointer of read surface material - */ - FbxSurfaceMaterial* ReadSurfaceMaterial(const char* pName, const char* pMaterialType, FbxSurfaceMaterial* pReferencedMaterial); - - /** Read video object from file - * \param pVideo Fbx video object - * \return if reading video object is successful return \c true, otherwise return \c false. - */ - bool ReadVideo (FbxVideo& pVideo); - - /** Read thumbnail object from file - * \param pThumbnail Fbx thumbnail - * \return if reading thumbnail is successful return \c true, otherwise return \c false. - */ - bool ReadThumbnail (FbxThumbnail& pThumbnail); - //@} - - - /** - * \name Layer elements - */ - //@{ - - /** Read all layer elements for geometry - * \param pGeometry geometry to fill - * \return if reading all layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElements (FbxGeometry& pGeometry); - - /** Read material layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsMaterial material layer element array - * \return if reading material layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); - - /** Read normal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsNormal normal layer element array - * \return if reading normal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); - - /** Read Tangent layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTangent Tangent layer element array - * \return if reading Tangent layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTangent (FbxGeometry* pGeometry, FbxArray& pElementsTangent); - - /** Read Binormal layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsBinormal Binormal layer element array - * \return if reading Binormal layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsBinormal (FbxGeometry* pGeometry, FbxArray& pElementsBinormal); - - /** Read vertex color layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexColor vertex color layer element array - * \return if reading vertex color layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); - - /** Read texture layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsTexture texture layer element array - * \param pTextureType the type of elements to read - * \return if reading texture layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture, FbxLayerElement::EType pTextureType); - - /** Read UV layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUV UV layer element array - * \param pTextureType the type of elements to read - * \return if reading UV layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsChannelUV (FbxGeometry* pGeometry, FbxArray& pElementsUV, FbxLayerElement::EType pTextureType); - - /** Read polygon group layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsPolygonGroup polygon group layer element array - * \return if reading polygon group layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); - - /** Read smoothing layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsSmoothing Smoothing group layer element array - * \return if reading smoothing layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsSmoothing (FbxGeometry* pGeometry, FbxArray& pElementsSmoothing); - - /** Read user data layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsUserData User data layer element array - * \return if reading user data layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsUserData (FbxGeometry* pGeometry, FbxArray& pElementsUserData); - - /** Read visibility layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVisibility visibility layer element array - * \return if reading visibility layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementsVisibility (FbxGeometry* pGeometry, FbxArray& pElementsVisibility); - - /** Read edge crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsEdgeCrease edge crease layer element array - * \return if reading edge crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementEdgeCrease (FbxGeometry*pGeometry, FbxArray& pElementsEdgeCrease); - - /** Read vertex crease layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsVertexCrease vertex crease layer element array - * \return if reading vertex crease layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementVertexCrease (FbxGeometry*pGeometry, FbxArray& pElementsVertexCrease); - - /** Read hole layer elements for geometry - * \param pGeometry geometry to fill - * \param pElementsHole hole layer element array - * \return if reading hole layer elements is successful return \c true, otherwise return \c false. - */ - bool ReadLayerElementHole (FbxGeometry*pGeometry, FbxArray& pElementsHole); - //@} - - /** - * \name Geometry weighted maps - */ - //@{ - - /** Read geometry weight map from file - * \param pGeometryWeightedMap geometry weighted - * \return if reading geometry weight map is successful return \c true, otherwise return \c false. - */ - bool ReadGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - //@} - - /** - * \name Deformers / Constraints - */ - //@{ - - /** Read link object from file - * \param pLink fbx link object - * \return if reading link object is successful return \c true, otherwise return \c false. - */ - bool ReadLink(FbxCluster& pLink); - - /** Read SDK skin from file - * \param pSkin SDK skin object - * \return if reading skin object is successful return \c true, otherwise return \c false. - */ - bool ReadSkin(FbxSkin& pSkin); - - /** Read properties and flags for vertex cache deformer from file - * \param pDeformer fbx vertex cache deformer - * \return if reading vertex cache deformer is successful return \c true, otherwise return \c false. - */ - bool ReadVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - - /** Read cluster object data from file - * \param pCluster fbx cluster object - * \return if reading cluster object is successful return \c true, otherwise return \c false. - */ - bool ReadCluster(FbxCluster& pCluster); - - /** Read constraint object from file - * \param pPosition fbx constraint object - * \return if reading constraint object is successful return \c true, otherwise return \c false. - */ - bool ReadConstraint(FbxConstraint& pPosition); - //@} - - // Cache - - /** Read fbx cache file - * \param pCache fbx cache - * \return if reading cache data is successful return \c true, otherwise return \c false. - */ - bool ReadCache(FbxCache& pCache); - - /** - * \name Post-processing / utility functions - */ - //@{ - - /** Make sure the Camera's background textures are properly connected - * \param pScene fbx scene - * \remarks This function only applies when it detects older file versions in - * which the background texture is connected directly to the object instead of - * the corresponding property. - */ - bool ResolveCameraBackgrounds(FbxScene& pScene); - - /** Remove duplicate textures in the same scene - * \param pScene fbx scene - */ - void RemoveDuplicateTextures(FbxScene& pScene); - - /** Replace textures in the geometry - * \param pTextureDuplicate texture array - * \param pTextureReplacement texture array to replace - * \param pGeometry geometry owns these textures - * \param pTextureType layer element type - */ - void ReplaceTextures(FbxArray const& pTextureDuplicate, - FbxArray const& pTextureReplacement, - FbxGeometry* pGeometry, FbxLayerElement::EType pTextureType); - - /** Remove duplicated materials in the same scene - * \param pScene FBX scene - */ - void RemoveDuplicateMaterials(FbxScene& pScene); - - /** convert camera name for naming convention - * \param pCameraName original camera name - * \return new name for the camera - */ - FbxString ConvertCameraName(FbxString pCameraName); - - /** Search string in a string array - * \param pString the string to search - * \param pStringArray string array - * \return return the index of the array if the string is found, otherwise return \c -1 - */ - int FindString(FbxString pString, FbxArray& pStringArray); - - /** Read password from string - * \param pPassword password in string - * \return if the password is valid return \c true, otherwise return \c false - */ - bool ReadPassword(FbxString pPassword); - - /** Publish properties - * \param pObject fbx object - */ - void PublishProperties(FbxObject& pObject); - - /** Read properties for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - */ - bool ReadProperties(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - - /** Read properties and flags for fbx object from file object - * \param pFbxObject fbx object - * \param pFbxFileObject fbx file object - * \param pReadNodeAttributeProperties whether to read properties for node attributes - * \return if reading properties and flags is successful return \c true, otherwise return \c false. - */ - bool ReadPropertiesAndFlags(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); - - /** Read flags for fbx object from file object - * \param pFbxObject object to set flags - * \param pFbxFileObject file to read - * \return if reading flags is successful return \c true, otherwise return \c false. - */ - bool ReadFlags(FbxObject *pFbxObject, FbxIO* pFbxFileObject); - - /** Rebuild trim regions indices from the boundary connections - * \param pScene Fbx scene - */ - void RebuildTrimRegions(FbxScene& pScene) const; - - /** Rebuild subdivision object from subdiv-mesh connections - * \param pScene Fbx scene - */ - void SetSubdivision(FbxScene& pScene) const; - - /** Convert shape deform property to DeformPercent property of FbxBlendShapeChannel - * \param pScene Fbx scene - */ - void ConvertShapeDeformProperty(FbxScene& pScene) const; - - /** Rebuild layered texture alphas from sub texture connections. - * \param pScene Fbx scene - */ - void RebuildLayeredTextureAlphas(FbxScene& pScene) const; - - //---------------- in progress ------------------------------- - void ReadOptionsInMainSection(); - void ReadTakeOptions(); - bool ReadOptionsInExtensionSection(int& pSectionIndex); - bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); - //--------------- end in progress ---------------------------- - - /** Read global settings, axis system, system unit from main section of file - * - */ - void ReadGlobalSettingsInMainSection(); - - /** Read statistic data from definition section - * - */ - void ReadDefinitionSectionForStats(); - //@} - -private: - - FbxReaderFbx6& operator=(FbxReaderFbx6 const&) { return *this; } - - FbxIO* mFileObject; - FbxImporter& mImporter; - FbxCharPtrSet mNodeArrayName; - FbxObjectStringMap mObjectMap; - - bool mParseGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnit; - FbxTime::EMode mFrameRate; - - bool mRetrieveStats; - FbxStatistics* mDefinitionsStatistics; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxAnimLayer* mAnimLayer; - FbxMultiMap mNickToKFCurveNodeTimeWarpsSet; - FbxMultiMap* mNickToAnimCurveTimeWarpsSet; - - Fbx6ClassTemplateMap mClassTemplateMap; - FbxProgress* mProgress; - bool mProgressPause; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX6_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h deleted file mode 100755 index 2eca3c2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreaderfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_READER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_READER_FBX7_H_ - -#include - -#include - -struct FbxReaderFbx7_Impl; - -/** \brief This class is the FBX v7 reader. -* The reader provide you the ability to read the global settings, objects and animation information from file. -* -*/ -class FbxReaderFbx7 : public FbxReader -{ -public: - /** \enum EImportMode File import mode. - * - */ - typedef enum - { - eASCII, /**< Plain text mode */ - eBINARY, /**< Binary mode */ - eENCRYPTED /**< Encrypted mode */ - } EImportMode; - - /** Constructor - * \param pManager the FbxManager Object - * \param pImporter the FbxImporter to import the SDK objects - * \param pID id for current reader - * \param pStatus the FbxStatus object to hold error codes - */ - FbxReaderFbx7(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); - - /** Destructor - * - */ - virtual ~FbxReaderFbx7(); - - /** Open file with certain EFileOpenSpecialFlags - * \param pFileName name of the File to open - * \param pFlags the EFileOpenSpecialFlags to open with - * \return if the file is open successfully return true, otherwise return false - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); - - /** Open file with default flag - * \param pFileName name of the File to open - * \return if the file is open successfully return \c true, otherwise return \c false - */ - virtual bool FileOpen(char* pFileName); - - /** Open file with default flag - */ - virtual bool FileOpen(FbxFile* pFile); - - /** Open file from stream - */ - virtual bool FileOpen(FbxStream * pStream, void* pStreamData); - - /** Close the file stream - * \return if the file is closed successfully return \c true, otherwise return \c false - */ - virtual bool FileClose(); - - /** Check whether the file stream is open. - * \return if the file stream is open return \c true, otherwise return \c false. - */ - virtual bool IsFileOpen(); - - /** Get current Import mode - * - */ - EImportMode GetImportMode(); - - /** Get file version - * \param pMajor Major version - * \param pMinor Minor version - * \param pRevision Revision version - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get axis system information from file - * \param pAxisSystem axis system in file - * \param pSystemUnits system unit in file - * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. - */ - virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); - - /** Get the statistics from file - * \param pStats statistics in file - * \return if fetching statistics is successfully return \c true, otherwise return \c false. - */ - virtual bool GetStatistics(FbxStatistics* pStats); - - /** Get the file stream options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \return if fetching statistics is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument); - - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - */ - virtual void PluginReadParameters(FbxObject& pParams); - - /** Get the file options - * \param pFbx file object to read options - * \param pParseFileAsNeeded Whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); - - /** Read file with stream options - * \param pDocument FbxDocument to store the file data - * \param pFbx file object to read from - * \return if reading the file is successful return \c true, otherwise return \c false. - */ - virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); - - /** Returns the scene info from the file. - * \return The pointer to file scene info defined by this reader. - */ - virtual FbxDocumentInfo* GetSceneInfo(); - - /** Returns the pointer to the list of TakeInfo from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(); - - /** Pass a progress handler to the reader - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxReaderFbx7(const FbxReaderFbx7&); - FbxReaderFbx7& operator=(FbxReaderFbx7 const&); - -private: - FbxReaderFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_READER_FBX7_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h deleted file mode 100755 index abbd73f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx5.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ - -#include - -#include - -//Writable versions for this file type. -//Sync the functions PreProcessScene and PostProcessScene with these elements of this list. - -class FbxWriterFbx5 : public FbxWriter -{ -public: - FbxWriterFbx5(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx5(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - - virtual bool SupportsStreams() const { return true; } - -private: - bool WriteAnimation(FbxScene& pScene); - bool WriteAnimation(FbxNode& pRootNode, FbxAnimLayer* pAnimLayer); - void WriteTakeNode(KFCurveNode* pCurveNode, bool pRescaleShininess); - bool WriteTakeNode(FbxObject& pObj, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pRescaleShininess = false); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - void WriteSceneInfo(FbxDocumentInfo*); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - bool WriteNode(FbxNode* pNode); - - bool WriteCameraSwitcher(FbxScene& pScene); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - void WriteCharacter(FbxScene& pScene); - void WriteCharacter(FbxScene& pScene, int pCharacterIndex); - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene, bool pBackwardCompatible); - void WriteFilterSet(FbxCharacter& pCharacter); - void WriteControlSet(FbxControlSet& pControlSet, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); - void WriteControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId, FbxScene& pScene); - void WriteEffector(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - void WriteEffectorAux(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WritePose(FbxScene& pScene); - void WritePose(FbxPose& pPose); - - void WriteConstraint(FbxScene& pScene); - - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraAndTimeSettings(FbxScene& pScene); - - bool WriteMedia(FbxScene& pScene, bool pMediaEmbedded, int& pMediaCount); - bool WriteMediaClip(FbxString& pFileName, bool pEmbeddedMedia); - void WriteDefaultMedia(); - - bool WriteNode (FbxNode& pNode); - bool WriteNodeBegin (FbxNode& pNode); - bool WriteNodeParameters (FbxNode& pNode); - bool WriteNodeVersion (FbxNode& pNode); - bool WriteNodeShading (FbxNode& pNode); - bool WriteNodeAnimationSettings (FbxNode& pNode); - bool WriteNodeCullingType (FbxNode& pNode); - bool WriteNodeLimits (FbxNode& pNode); - bool WriteNodeProperties (FbxNode& pNode); - bool WriteNodeTarget (FbxNode& pNode); - bool WriteNodeAnimatedProperties(FbxNode& pNode); - bool WriteNodeAttribute (FbxNode& pNode); - bool WriteNodeDefaultAttributes (FbxNode& pNode); - bool WriteNodeChildrenList (FbxNode& pNode); - bool WriteNodeEnd (FbxNode& pNode); - - bool WriteNull ( FbxNull* pNull ); - - bool WriteMarker ( FbxNode& pNode ); - - bool WriteCamera ( FbxCamera& pCamera, bool pIsProducerCamera = false ); - - bool WriteCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); - - bool WriteLight ( FbxLight& pLight ); - - bool WriteGeometry ( FbxGeometry& pGeometry ); - bool WriteGeometryLayer ( FbxGeometry& pGeometry ); - bool WriteGeometryTextureLayer ( FbxGeometry& pGeometry, int pIndex ); - - bool WriteMesh ( FbxMesh& pMesh ); - bool WriteMeshVertices ( FbxMesh& pMesh ); - bool WriteMeshNormals ( FbxMesh& pMesh ); - bool WriteMeshMaterial ( FbxMesh& pMesh ); - bool WriteMeshTexture ( FbxMesh& pMesh ); - bool WriteMeshGeometryUVInfo ( FbxMesh& pMesh ); - bool WriteMeshPolyVertexIndex ( FbxMesh& pMesh ); - bool WriteMeshPolyGroupIndex ( FbxMesh& pMesh ); - bool WriteMeshVertexColors ( FbxMesh& pMesh ); - - bool WriteNurb ( FbxNurbs& pNurbs ); - - bool WritePatch ( FbxPatch& pPatch ); - bool WritePatchType ( FbxPatch& pPatch, int pType ); - - bool WriteSkeleton ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonRoot ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimb ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonLimbNode ( FbxSkeleton& pSkeleton ); - bool WriteSkeletonEffector ( FbxSkeleton& pSkeleton ); - - bool WriteOpticalReference ( FbxOpticalReference& pOpticalReference ); - - bool WriteTexture(FbxFileTexture& pTexture); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - bool WriteLink(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - - bool WriteProperties(FbxObject* pObject); - - int FindString(FbxString pString, FbxArray& pStringArray); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - void ConvertShapeNamesToV5Format(FbxNode& pNode); - void RevertShapeNamesToV6Format (FbxNode& pNode); - - void WritePassword(); - - void FindAnimatedChannels(FbxScene& pScene); - void ClearAnimatedChannels(); - - void WriteSceneGenericPersistenceSection(FbxScene& pScene); - - void ForceKFCurveNodesOnTRS(FbxNode* pNode); - void SetPivotStateRecursive(FbxNode* pNode); - -private: - FbxWriterFbx5& operator=(const FbxWriterFbx5&) { return *this; } - - FbxIO* mFileObject; - FbxExporter& mExporter; - - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h deleted file mode 100755 index fa2f99c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx6.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ - -#include - -#include - -class Fbx6TypeDefinition; -class Fbx6TypeWriteReferences; -class Fbx6TypeObjectHierarchy; - -typedef FbxArray TakeInfoArray; - -class FbxWriterFbx6 : public FbxWriter -{ -public: - FbxWriterFbx6(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx6(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - typedef enum {eASCII, eBINARY, eENCRYPTED} EExportMode; - - void SetExportMode(EExportMode pMode); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene& pScene); - virtual bool PostprocessScene(FbxScene& pScene); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void SetProgressHandler(FbxProgress *pProgress); - - virtual bool SupportsStreams() const { return true; } - -private: - /*************************** new writer ***************************/ - void ConvertShapePropertyToOldStyle(FbxScene& pScene); - void ConvertShapePropertyToNewStyle(FbxScene& pScene); - void BuildObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void SetObjectWriteSupport(const Fbx6TypeDefinition& pDefinitions); - bool WriteDescriptionSection(FbxDocument* pDocument); - bool WriteReferenceSection(FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences); - void WriteObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - void WriteObjectProperties(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); - - void FlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy, bool pFirstCall=true); - void UnFlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy); - bool WriteObjectHeaderAndReferenceIfAny(FbxObject& pObj, const char* pObjectType) const; - - FbxObject* GetObjectIndirection(FbxObject* pObject); - void WriteObjectConnections(FbxDocument* pDocument); - void WriteTakesAndAnimation(FbxDocument* pDocument); - - void WriteConstraints(FbxScene& pScene); - void WriteConstraint(FbxConstraint& pConstraint, FbxScene& pScene); - - void WriteGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); - void WriteNodeAttributes(const FbxDocument& pDocument); - void WriteAllGeometries(FbxScene& pScene); - - void WriteAllGeometryWeightedMaps(FbxScene& pScene); - - int WriteCharacterPose(FbxScene& pScene); - void WriteCharacterPose(FbxCharacterPose& pCharacterPose); - - void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene); - void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene); - void WriteCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); - - void WriteControlSetPlug(FbxScene& pScene); - - /*************************** new writer ***************************/ - bool WriteNodes(FbxScene& pScene, bool pIncludeRoot); - bool WriteNodes(const FbxDocument& pDocument); - - /*************************** kept functions ***************************/ - bool WriteObjectProperties(FbxObject* pObject); - bool WriteObjectPropertiesAndFlags(FbxObject* pObject); - - bool WriteContainers(FbxScene& pScene); - - bool WriteNode(FbxNode& pNode); - bool WriteNodeBegin(FbxNode& pNode); - bool WriteNodeEnd(FbxNode& pNode); - bool WriteNodeParameters(FbxNode& pNode); - bool WriteNodeVersion(FbxNode& pNode); - bool WriteNodeAnimationSettings(FbxNode& pNode); - bool WriteNodeShading(FbxNode& pNode); - bool WriteNodeCullingType(FbxNode& pNode); - bool WriteNodeAttribute(FbxNodeAttribute* pNodeAttribute); - bool WriteNodeProperties(FbxNode& pNode); - - bool WriteNodeType(FbxNode& pNode); - bool WriteNull(FbxNull* pNull); - bool WriteMarker(FbxNode& pNode); - bool WriteSkeleton(FbxSkeleton& pSkeleton); - bool WriteSkeletonRoot(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimb(FbxSkeleton& pSkeleton); - bool WriteSkeletonLimbNode(FbxSkeleton& pSkeleton); - bool WriteSkeletonEffector(FbxSkeleton& pSkeleton); - bool WriteGenericNodes(FbxScene& pScene); - - bool WriteGeometry(FbxGeometry& pGeometry); - bool WriteMesh(FbxMesh& pMesh); - bool WriteMeshSmoothness(FbxMesh& pMesh); - bool WriteMeshVertices(FbxMesh& pMesh); - bool WriteMeshPolyVertexIndex(FbxMesh& pMesh); - bool WriteMeshEdges(FbxMesh& pMesh); - bool WriteNurb(FbxNurbs& pNurbs); - bool WriteNurbsSurface(FbxNurbsSurface& pNurbs); - bool WriteNurbsCurve(FbxNurbsCurve& pNurbsCurve); - bool WriteTrimNurbsSurface(FbxTrimNurbsSurface& pNurbs); - bool WriteBoundary(FbxBoundary& pBoundary); - bool WriteSubdiv(FbxSubDiv& pSubdiv); - - bool WritePatch(FbxPatch& pPatch); - bool WritePatchType(FbxPatch& pPatch, int pType); - - bool WriteDeformers(FbxScene& pScene); - bool WriteSkin(FbxSkin& pSkin); - bool WriteVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); - bool WriteCluster(FbxCluster& pCluster); - bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); - void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); - - bool WriteFbxLayerElementNormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementBinormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTangents(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementMaterials(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTextures(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementTexturesChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - bool WriteFbxLayerElementUVsChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); - - bool WriteFbxLayerElementPolygonGroups(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexColors(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUVs(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementSmoothing(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementUserData(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVisibility(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementVertexCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementEdgeCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - bool WriteFbxLayerElementHole(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - - bool WriteLayers(FbxLayerContainer& pLayerContainer, FbxMultiMap&); - int MapLayeredTextureIndexToConnectionIndex(FbxNode* pNode, void* pLET, int pIndex); - - bool WriteMaterials(FbxDocument* pDocument); - bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); - - bool WritePose(FbxScene& pScene); - - // Write Connections - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrcObject, FbxDocument* pDstDocument); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxProperty& pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxObject* pDst); - bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxProperty& pDst); - - void WriteObjectConnections(FbxDocument* pDocument, FbxObject* pObject, bool pRecursive); - - bool WriteCamera(FbxCamera& pCamera); - bool WriteCameraStereo(FbxCameraStereo& pCameraStereo); - bool WriteLight(FbxLight& pLight); - bool WriteCameraSwitcher(FbxScene& pScene); - bool WriteCameraSwitcher(FbxCameraSwitcher& pCameraSwitcher); - - bool WriteTextures(FbxDocument* pDocument); - bool WriteTexture(FbxFileTexture& pTexture); - - bool WriteTimeWarps(FbxDocument* pDocument, FbxAnimStack* pAnimStack); - bool WriteThumbnails(FbxDocument* pDocument); - bool WriteThumbnail(FbxThumbnail& pThumbnail); - - bool WriteCaches(FbxDocument* pDocument); - bool WriteCache(FbxCache& pCache); - - bool WriteBindingTables(FbxDocument* pDocument); - bool WriteBindingTable(FbxBindingTable& pTable); - - bool WriteBindingOperators(FbxDocument* pDocument); - bool WriteBindingOperator(FbxBindingOperator& pOperator); - - bool WriteImplementations(FbxDocument* pDocument); - bool WriteImplementation(FbxImplementation& pImplementation); - - bool WriteCollections(FbxDocument* pDocument); - bool WriteCollection(FbxCollection& pImplementation); - - bool WriteDocuments(FbxDocument* pDocument); - bool WriteDocument(FbxDocument& pSubDocument); - - bool WriteLayeredTextures(FbxDocument* pDocument); - bool WriteLayeredTexture(FbxLayeredTexture& pTexture); - - void WriteGobo(FbxScene& pScene); - void WriteGoboSection(FbxScene& pScene); - void WriteGobo(FbxGobo& pGobo); - - bool WriteVideos(FbxDocument* pDocument); - bool WriteVideo(FbxVideo& pVideo, FbxString& pFileName, bool pEmbeddedMedia); - - bool WriteAnimation(FbxDocument* pDocument); - bool WriteAnimation(FbxDocument* pDocument, FbxAnimLayer* pAnimLayer); - - bool WriteFCurves(FbxObject& pObject, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pKeepBlockOpen=false, bool pRescaleShininess=false); - - void WritePose(FbxPose& pPose); - - bool WriteSelectionNode(FbxScene& pScene); - void WriteSelectionNode(FbxSelectionNode& pSelectionNode); - - bool WriteSelectionSet(FbxScene& pScene); - void WriteSelectionSet(FbxSelectionSet& pSelectionSet); - - bool WriteThumbnail(FbxThumbnail* pThumbnail); - - void WriteSceneInfo(FbxDocumentInfo*); - void WriteGlobalSettings(FbxGlobalSettings& pGlobalSettings); - - bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); - - int FindString(FbxString pString, FbxArray& pStringArray); - - /****************** Function that write in the v5 section******************/ - void WriteGlobalLightSettings(FbxScene& pScene); - void WriteShadowPlane(FbxScene& pScene); - void WriteShadowPlaneSection(FbxScene& pScene); - void WriteAmbientColor(FbxScene& pScene); - void WriteFogOption(FbxScene& pScene); - - void WriteGlobalCameraSettings(FbxScene& pScene); - void WriteGlobalTimeSettings(FbxScene& pScene); - /****************** Function that write in the v5 section******************/ - - void WritePassword(); - - void WriteLayeredAnimation(FbxScene& pScene); - -private: - void WritePropertyTemplate(FbxClassId pClassId, FbxDocument* pDocument, bool& pVisitedNodeClass); - void WriteProperty(FbxProperty& pProperty, bool lSetNodeAttributeFlag); - void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode); - - FbxWriterFbx6& operator=(const FbxWriterFbx6&); - - FbxScene* mScene; - FbxIO* mFileObject; - FbxExporter& mExporter; - Fbx6TypeObjectHierarchy* mDocumentHierarchy; - Fbx6TypeWriteReferences* mDocumentReferences; - - bool mWriteNonDefaultPropertiesOnly; - bool mWriteEnhancedProperties; - EExportMode mExportMode; - - FbxMultiMap mTextureAnimatedChannels; - FbxMultiMap mMaterialAnimatedChannels; - FbxMultiMap mTimeWarpsCurveNodes; - - struct TextureAnimatedChannels - { - bool mTranslation; - bool mRotation; - bool mScaling; - bool mAlpha; - }; - - struct SurfaceMaterialAnimatedChannels - { - bool mAmbient; - bool mDiffuse; - bool mSpecular; - bool mEmissive; - bool mOpacity; - bool mShininess; - bool mReflectivity; - }; - - FbxNode* mCurrentNode; - - struct ModifiedPropertyInfo { FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void ReplaceUnsupportedProperties(FbxScene* pScene, bool pPreprocessPass, int pFormatV); - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - bool IsLeafRoll(const FbxString& pNameWithoutNameSpacePrefix); - - FbxProgress* mProgress; - bool mProgressPause; -}; - -bool IsNameUnique(FbxScene& pScene, FbxObject* pObject); - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h deleted file mode 100755 index 2b010e7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriterfbx7.h -#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ -#define _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ - -#include - -#include - -struct FbxWriterFbx7_Impl; - -class FbxWriterFbx7 : public FbxWriter -{ -public: - typedef enum - { - eASCII, - eBINARY, - eENCRYPTED - } EExportMode; - - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); - FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, EExportMode pMode, int pID, FbxStatus& pStatus); - virtual ~FbxWriterFbx7(); - - virtual bool FileCreate(char* pFileName); - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual void GetWriteOptions(); - virtual bool Write(FbxDocument* pDocument); - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); - virtual void PluginWriteParameters(FbxObject& pParams); - virtual void SetProgressHandler(FbxProgress *pProgress); - - void SetExportMode(EExportMode pMode); - - virtual bool SupportsStreams() const { return true; } - -private: - // Declared, not defined. - FbxWriterFbx7(const FbxWriterFbx7&); - FbxWriterFbx7& operator=(const FbxWriterFbx7&); - - struct ModifiedPropertyInfo{ FbxObject* mObj; FbxString mPropName; }; - FbxArray mModifiedProperties; - void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); - - void MakeNonSavableAndRemember(FbxObject* pObj); - FbxArray mSwitchedToNonSavablesObjects; - FbxArray mAnimLayerInternallyAdded; - -private: - FbxWriterFbx7_Impl* mImpl; -}; - -#include - -#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxbase64coder.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxbase64coder.h deleted file mode 100755 index 8674cc6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxbase64coder.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbase64coder.h -#ifndef _FBXSDK_FILEIO_BASE64CODER_H_ -#define _FBXSDK_FILEIO_BASE64CODER_H_ - -#include - -#include - -#include - -/** This class decodes Base64 encoded data. */ -class FBXSDK_DLL FbxBase64Decoder -{ -public: - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data. - * \param pInSize the size of the input data in bytes (must be a multiple of 4) - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer, or -1 if the output buffer is too small, or contains invalid characters */ - int Decode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Decodes the input buffer. - * \param pInBuffer the input buffer containing Base64 data; its length is computed using strlen(). - * \param pOutBuffer the destination buffer. - * \param pOutSize the capacity of the output buffer in bytes. - * \return the number of bytes put in the output buffer. */ - int Decode(const char* pInBuffer, void* pOutBuffer, int pOutSize); -}; - -/** This class encodes data in the Base64 format. */ -class FBXSDK_DLL FbxBase64Encoder -{ -public: - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer, receives data encoded in Base64. - * \param pOutSize the capacity of the output buffer in bytes, which should be at least 33% larger than the input buffer size, or 4 bytes whichever is more. - * \return the number of bytes put in the output buffer, or -1 if we ran out of room. */ - int Encode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); - - /** Encodes the input buffer. - * \param pInBuffer the input buffer containing data. - * \param pInSize the size of the input data in bytes. - * \param pOutBuffer the destination buffer; data is set, not appended. - * \return the number of bytes put in the output buffer. */ - int Encode(const void* pInBuffer, int pInSize, FbxString& pOutBuffer); -}; - -#include - -#endif /* _FBXSDK_FILEIO_BASE64CODER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexporter.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexporter.h deleted file mode 100755 index 873a0a5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexporter.h +++ /dev/null @@ -1,304 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexporter.h -#ifndef _FBXSDK_FILEIO_EXPORTER_H_ -#define _FBXSDK_FILEIO_EXPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxThread; -class FbxWriter; - -struct FbxExportThreadArg; - -/** Class to export SDK objects into an FBX file. - * Normally this class is used as is. But for very special needs - * a user can override Initialize() for special purpose. - * - * An exporter will select the appropriate writer to a particular file. - * Ex: When an exporter must export an FBX 7 file, - * the exporter will ask for all registered writers if an FBX 7 file writer is available, - * then if a writer is found, the exporter will create - * the specialized FBX 7 writer and write the file. - * This way, an exporter can "write" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. - * \see FbxWriter - * - * Typical workflow for using the FbxExporter class: - * -# create a SDKManager - * -# create an IOSettings object - * -# create an empty scene - * -# create an exporter - * -# initialize it with a file name - * -# set numerous options to control how the exporter will behave.\n - * ex: set IOSettings values to export Materials or Textures. - * -# call FbxExporter::Export() with the entity to export. - * - * \code - * // ex: - * // create a SdkManager - * FbxManager* lSdkManager = FbxManager::Create(); - * - * // create an IOSettings object - * FbxIOSettings* ios = FbxIOSettings::Create(lSdkManager, IOSROOT); - * - * // set some IOSettings options - * ios->SetBoolProp(EXP_FBX_MATERIAL, true); - * ios->SetBoolProp(EXP_FBX_TEXTURE, true); - * - * // create an empty scene - * FbxScene* lScene = FbxScene::Create(lSdkManager, ""); - * - * // create an exporter. - * FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - * - * // initialize the exporter by providing a filename and the IOSettings to use - * lExporter->Initialize("C:\\myfile.fbx", -1, ios); - * - * // export the scene. - * lExporter->Export(lScene); - * - * // destroy the exporter - * lExporter->Destroy(); - * \endcode - * - * \remarks According to the file suffix, a specialized writer will be created internally.\n - * Ex: for .fbx files a FBX Writer, for .3ds files, a 3ds writer, etc.\n - * Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS - * \nosubgrouping - */ -class FBXSDK_DLL FbxExporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxExporter, FbxIOBase); - -public: - /** - * \name Export Functions - */ - //@{ - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Initialize(const char* pFileName, int pFileFormat = -1, FbxIOSettings* pIOSettings = NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, int pFileFormat = -1, FbxIOSettings * pIOSettings = NULL); - - /** Setup file export options settings. - * \return \c true on success, \c false otherwise. - */ - bool GetExportOptions(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Pointer on a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - - /** Export the document to the currently created file. - * \param pDocument Document to export. - * \param pNonBlocking If true, the export process will be executed in a new thread, allowing it to be non-blocking. - To determine if the export finished, refer to the function IsExporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - */ - bool Export(FbxDocument* pDocument, bool pNonBlocking=false); - - #if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the exporter is currently exporting. - * \param pExportResult This parameter, after the export finished, will contain the result of the export success or failure. - * \return Return true if the exporter is currently exporting. - * \remarks This function will always return false if Export() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the export finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsExporting(bool& pExportResult); - #endif /* !FBXSDK_ENV_WINSTORE && ! FBXSDK_ENV_EMSCRIPTEN */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload. - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - //@} - - /** - * \name File Format - */ - //@{ - /** Get the format of the exported file. - * \return File format identifier. - */ - int GetFileFormat(); - - /** Return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - - /** Get the list of writable versions for the current file format. - * \return \c NULL or a null terminated array of strings. - * \remarks the strings returned match the writers registered for the current format. - * The array items can be retrieved with the following code: - * \code - * char const* const* lWV = lExporter->GetCurrentWritableVersions(); - * if (lWV) - * { - * int i = 0; - * while (lWV[i] != NULL) - * { - * printf("fmt = %s\n", lWV[i]); - * i++; - * } - * } - * \endcode - * - */ - char const* const* GetCurrentWritableVersions(); - - /** Set file version for a given file format. - * \param pVersion String description of the file format. - * \param pRenamingMode Renaming mode. - * \return \c true if mode is set correctly - */ - bool SetFileExportVersion(FbxString pVersion, FbxSceneRenamer::ERenamingMode pRenamingMode=FbxSceneRenamer::eNone); - - /** Set the resampling rate (only used when exporting to FBX 5.3 and lower) - * \param pResamplingRate resampling rate - */ - inline void SetResamplingRate(double pResamplingRate){ mResamplingRate = pResamplingRate; } - - /** Set the default rendering resolution. - * \param pCamName name of the camera. - * \param pResolutionMode resolution mode. - * \param pW width. - * \param pH height. - * \remark These values are ignored when exporting to FBX 7.x and higher. With FBX version 6.x and lower, - * the HeaderInfo is still accessible for legacy reasons and any other custom writers. For FBX filles, - * these values are used by the FBX QuickTime plug-in (obsolete now) to help it get the window size - * without loading the whole file. The information contained in the FbxIOFileHeaderInfo is a duplicate - * of AspectRatioMode, AspectWidth and AspectHeight properties defined in the FbxCamera class. - * Retrieveing the FileHeaderInfo starting from FBX 7.x will always return the uninitialized structure. - */ - void SetDefaultRenderResolution(FbxString pCamName, FbxString pResolutionMode, double pW, double pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool GetExportOptions(FbxIO* pFbxObject); - bool Export(FbxDocument* pDocument, FbxIO* pFbxObject); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileCreate(); - void FileClose(); - -private: - bool ExportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxWriter* mWriter; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mExportThread; - FbxExportThreadArg* mExportThreadArg; - bool mExportThreadResult; - bool mIsThreadExporting; -#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ - FbxProgress mProgress; - FbxStream* mStream; - void* mStreamData; - FbxString mStrFileVersion; - double mResamplingRate; - FbxSceneRenamer::ERenamingMode mRenamingMode; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - friend void ExportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPreExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreExport); - -public: - FbxEventPreExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a file is exported to the FBX format. -class FBXSDK_DLL FbxEventPostExport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostExport); - -public: - FbxEventPostExport(FbxDocument* pDocument) : mDocument(pDocument) {}; - - //! The document to be exported - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXPORTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h deleted file mode 100755 index 2355202..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxexternaldocreflistener.h -#ifndef _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ -#define _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ - -#include - -#include - -#include - -/** Contains data about an external document. - * The document is a FbxDocument object. - */ -struct FBXSDK_DLL FbxExternalDocumentInfo -{ - FbxString mDocumentName; //!< Bare name of external document in document hierarchy. - FbxString mClassName; //!< Class name of the document (FbxDocument, FbxLibrary...). - FbxString mParentFullName; //!< Full name of the parent document in document hierarchy. - FbxString mFilePathUrl; //!< File path of the external document. -}; - -/** Event that is emitted on loading document when a referenced document - * is encountered while loading external references. - */ -class FBXSDK_DLL FbxEventReferencedDocument : public FbxEvent, public FbxExternalDocumentInfo -{ - FBXSDK_EVENT_DECLARE(FbxEventReferencedDocument); -public: - FbxEventReferencedDocument() {} -}; - - -class FbxExternalDocRefListenerData; - -/** Typical handler for the referenced document events. -* -* Register it like so: -* FbxExternalDocRefListener lRefDocListener( sdkManager, fileName ); -* FbxEventHandler * lHandler = lRefDocListener.Bind(scene, -* &FbxExternalDocRefListener::HandleEvent); -* -* And later unregister it like so: -* lRefDocListener.Unbind(lHandler); -*/ -class FBXSDK_DLL FbxExternalDocRefListener : public FbxListener -{ -public: - /** Constructor. - * \param pManager - * \param pDocFilePath - * \remarks Keep a reference to the SDK and the path of the document - * to be able to resolve relative paths. - */ - FbxExternalDocRefListener( FbxManager & pManager, const FbxString & pDocFilePath ); - virtual ~FbxExternalDocRefListener(); - - /** Set the document file path used to resolve documents. - * \param pDocFilePath - * \remarks Allows re-using the same instance for multiple document loadings. - */ - virtual void SetDocumentFilePath( const FbxString & pDocFilePath ); - - /** Verify that all documents that were previously loaded in a previous - * load session are still valid. - * \return \c true if all documents are still valid, \c false otherwise. - */ - virtual bool AreAllExternalDocumentsStillValid() const; - - // - /** Verify that all documents that were referred to didn't change. - * \return \c true if all documents didn't change, \c false otherwise. - * \remarks This function should be called if at posteriori check is desired. - */ - virtual bool WereAllExternalDocumentsValid() const; - - /** Unload all documents that were loaded through this event handler. - */ - virtual void UnloadExternalDocuments(); - - // External document reference event handler. - // - // Operation: calls FindDocument() to find the specified external document - // and if not found calls LoadDocument() either directly, - // if it has not parent, or via ConnectToParentLibrary(). - // If its parent cannot be found, it's added to the dangling - // document list (and it is not loaded until it's parent is found). - // After, it tries to resolve dangling documents by calling - // TryConnectingDanglingLibraries(). - /** External document reference event handler. - * \param pEvent - * \remarks Operation: calls FindDocument() to find the specified external document - * and if not found calls LoadDocument() either directly, - * if it has not parent, or via ConnectToParentLibrary(). - * If its parent cannot be found, it's added to the dangling - * document list (and it is not loaded until it's parent is found). - * After, it tries to resolve dangling documents by calling - * TryConnectingDanglingLibraries(). - */ - virtual void HandleEvent(const FbxEventReferencedDocument * pEvent); - -protected: - /** - * Turn a relative path to an absolute path using the file path of the original document being loaded. - * If the path is already is absolute, it is returned as is. - */ - virtual FbxString MakeFilenameAbsolute(const FbxString & pFilename) const; - //! Locate a document by its document path. - virtual FbxDocument * FindDocument( const FbxString & pPathToDoc ); - //! Load a library, potentially under another library. - virtual FbxDocument * LoadDocument(FbxObject * pParent, const FbxString & pClassName, const FbxString & pFilename); - //! Try to connect a library to its parent given its document path. - virtual bool ConnectToParentLibrary(const FbxExternalDocumentInfo &); - //! Try to reconnect dangling libraries that didn't find their parent. - virtual void TryConnectingDanglingLibraries(); - -private: - FbxExternalDocRefListenerData * mData; -}; - -#include - -#endif /* _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxfiletokens.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxfiletokens.h deleted file mode 100755 index 1833f32..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxfiletokens.h +++ /dev/null @@ -1,1087 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletokens.h -#ifndef _FBXSDK_FILEIO_FILE_TOKENS_H_ -#define _FBXSDK_FILEIO_FILE_TOKENS_H_ - -#include - -#include - -// -// Summary -// -#define FIELD_SUMMARY "Summary" -#define FIELD_SUMMARY_VERSION "Version" -#define FIELD_SUMMARY_TEMPLATE "Template" -#define FIELD_SUMMARY_PASSWORD_PROTECTION "PasswordProtection" -#define FIELD_SUMMARY_CONTENT_COUNT "ContentCount" -#define FIELD_SUMMARY_CONTENT_COUNT_MODEL "Model" -#define FIELD_SUMMARY_CONTENT_COUNT_DEVICE "Device" -#define FIELD_SUMMARY_CONTENT_COUNT_CHARACTER "Character" -#define FIELD_SUMMARY_CONTENT_COUNT_ACTOR "Actor" -#define FIELD_SUMMARY_CONTENT_COUNT_CONSTRAINT "Constraint" -#define FIELD_SUMMARY_CONTENT_COUNT_MEDIA "Media" -#define FIELD_SUMMARY_CONTENT_COUNT_COMPONENT "Component" -#define FIELD_SUMMARY_TAKES "Takes" -#define FIELD_SUMMARY_TAKES_VERSION "Version" -#define FIELD_SUMMARY_TAKES_CURRENT "Current" -#define FIELD_SUMMARY_TAKES_TAKE "Take" -#define FIELD_SUMMARY_TAKES_TAKE_COMMENT "Comments" -#define FIELD_SUMMARY_TAKES_TAKE_LOCAL_TIME "LocalTime" -#define FIELD_SUMMARY_TAKES_TAKE_REFERENCE_TIME "ReferenceTime" - - -// -// FbxObject references, document ownership -// -#define FIELD_KFBXOBJECT_REFERENCE_TO "ReferenceTo" -#define FIELD_KFBXOBJECT_DOCUMENT "Doc" - -// (sic) -#define FIELD_KFBXOBECT_REFERENCE_TO FIELD_KFBXOBJECT_REFERENCE_TO - -// -// FbxContainer -// -#define FIELD_KFBXCONTAINER_VERSION "Version" -#define FIELD_KFBXCONTAINER_CONTAINER "Container" - - -// -// Thumbnail -// -#define FIELD_THUMBNAIL "Thumbnail" -#define FIELD_THUMBNAIL_VERSION "Version" -#define FIELD_THUMBNAIL_SIZE "Size" -#define FIELD_THUMBNAIL_FORMAT "Format" -#define FIELD_THUMBNAIL_ENCODING "ImageEncoding" -#define FIELD_THUMBNAIL_IMAGE "ImageData" - - -// -// FbxGlobalLightSettings -// -#define FIELD_KFBXGLOBALLIGHTSETTINGS_VERSION "Version" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWPLANES "ShadowPlanes" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_COUNT "Count" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_PLANE "Plane" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_USESHADOW "UseShadow" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWINTENSITY "ShadowIntensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTRENDER "AmbientRenderSettings" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTLIGHTCOLOR "AmbientLightColor" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGOPTIONS "FogOptions" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGENABLE "FlogEnable" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGMODE "FogMode" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGDENSITY "FogDensity" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGSTART "FogStart" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGEND "FogEnd" -#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGCOLOR "FogColor" - - -// -// FbxGlobalCameraSettings -// -#define FIELD_KFBXGLOBALCAMERASETTINGS_RENDERER_SETTINGS "RendererSetting" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_CAMERA "DefaultCamera" -#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_VIEWING_MODE "DefaultViewingMode" -#define FIELD_KFBXGLOBALCAMERASETTINGS_SETTINGS "Settings" -#define FIELD_KFBXGLOBALCAMERASETTINGS_CAMERA "Camera" - - -// -// FbxGlobalTimeSettings -// -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_MODE "TimeMode" -#define FIELD_KFBXGLOBALTIMESETTINGS_FRAMERATE "FrameRate" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_PROTOCOL "TimeFormat" -#define FIELD_KFBXGLOBALTIMESETTINGS_SNAP_ON_FRAMES "SnapOnFrames" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_INDEX "ReferenceTimeIndex" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_MARKER "TimeMarker" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME "Time" -#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_LOOP "Loop" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_START_TIME "TimeLineStartTime" -#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_STOP_TIME "TimeLineStopTime" - - -// -// Media -// -#define FIELD_MEDIA_MEDIA "Media" -#define FIELD_MEDIA_AUDIO "Audio" -#define FIELD_MEDIA_VIDEO "Video" -#define FIELD_MEDIA_TYPE "Type" -#define TOKEN_MEDIA_CLIP "Clip" -#define FIELD_MEDIA_VERSION "Version" -#define FIELD_MEDIA_ORIGINAL_FORMAT "OriginalFormat" -#define FIELD_MEDIA_ORIGINAL_FILENAME "OriginalFilename" -#define FIELD_MEDIA_FILENAME "Filename" -#define FIELD_MEDIA_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_MEDIA_CONTENT "Content" - - -// -// Properties -// -#define FIELD_PROPERTIES "Properties" -#define FIELD_PROPERTIES_VERSION "Version" -#define FIELD_USERPROPERTIES "UserProperty" -#define FIELD_USERPROPERTIES_NAME "Name" -#define FIELD_USERPROPERTIES_TYPE "Type" -#define FIELD_USERPROPERTIES_LABEL "Label" -#define FIELD_USERPROPERTIES_MIN "Min" -#define FIELD_USERPROPERTIES_MAX "Max" -#define FIELD_USERPROPERTIES_VALUE "Value" - - -// -// FbxNode -// -#define FIELD_KFBXNODE_VERSION "Version" -#define FIELD_KFBXNODE_ANIMATION_MODE "AnimationMode" -#define FIELD_KFBXNODE_TYPE "Type" -#define FIELD_KFBXNODE_TYPE_FLAGS "TypeFlags" -#define FIELD_KFBXNODE_MODEL "Model" -#define FIELD_KFBXNODE_HIDDEN "Hidden" -#define FIELD_KFBXNODE_SHADING "Shading" -#define FIELD_KFBXNODE_TRANSFORM "Transform" -#define FIELD_KFBXNODE_DEFAULT "Default" -#define FIELD_KFBXNODE_TRANSLATION "T" -#define FIELD_KFBXNODE_ROTATION "R" -#define FIELD_KFBXNODE_SCALING "S" -#define FIELD_KFBXNODE_CHILDREN "Children" - -#define FIELD_KFBXNODE_CULLING_TYPE "Culling" -#define TOKEN_KFBXNODE_CULLING_OFF "CullingOff" -#define TOKEN_KFBXNODE_CULLING_ON_CCW "CullingOnCCW" -#define TOKEN_KFBXNODE_CULLING_ON_CW "CullingOnCW" - -#define FIELD_KFBXNODE_LIMITS "Limits" -#define FIELD_KFBXNODE_LIMITS_T_AUTO "TAuto" -#define FIELD_KFBXNODE_LIMITS_R_AUTO "RAuto" -#define FIELD_KFBXNODE_LIMITS_S_AUTO "SAuto" -#define FIELD_KFBXNODE_LIMITS_T_ENABLE "TEnable" -#define FIELD_KFBXNODE_LIMITS_R_ENABLE "REnable" -#define FIELD_KFBXNODE_LIMITS_S_ENABLE "SEnable" -#define FIELD_KFBXNODE_LIMITS_T_X_DEFAULT "TXDefault" -#define FIELD_KFBXNODE_LIMITS_T_Y_DEFAULT "TYDefault" -#define FIELD_KFBXNODE_LIMITS_T_Z_DEFAULT "TZDefault" -#define FIELD_KFBXNODE_LIMITS_R_X_DEFAULT "RXDefault" -#define FIELD_KFBXNODE_LIMITS_R_Y_DEFAULT "RYDefault" -#define FIELD_KFBXNODE_LIMITS_R_Z_DEFAULT "RZDefault" -#define FIELD_KFBXNODE_LIMITS_S_X_DEFAULT "SXDefault" -#define FIELD_KFBXNODE_LIMITS_S_Y_DEFAULT "SYDefault" -#define FIELD_KFBXNODE_LIMITS_S_Z_DEFAULT "SZDefault" -#define FIELD_KFBXNODE_LIMITS_T_X_MIN "TXMin" -#define FIELD_KFBXNODE_LIMITS_T_Y_MIN "TYMin" -#define FIELD_KFBXNODE_LIMITS_T_Z_MIN "TZMin" -#define FIELD_KFBXNODE_LIMITS_R_X_MIN "RXMin" -#define FIELD_KFBXNODE_LIMITS_R_Y_MIN "RYMin" -#define FIELD_KFBXNODE_LIMITS_R_Z_MIN "RZMin" -#define FIELD_KFBXNODE_LIMITS_S_X_MIN "SXMin" -#define FIELD_KFBXNODE_LIMITS_S_Y_MIN "SYMin" -#define FIELD_KFBXNODE_LIMITS_S_Z_MIN "SZMin" -#define FIELD_KFBXNODE_LIMITS_T_X_MAX "TXMax" -#define FIELD_KFBXNODE_LIMITS_T_Y_MAX "TYMax" -#define FIELD_KFBXNODE_LIMITS_T_Z_MAX "TZMax" -#define FIELD_KFBXNODE_LIMITS_R_X_MAX "RXMax" -#define FIELD_KFBXNODE_LIMITS_R_Y_MAX "RYMax" -#define FIELD_KFBXNODE_LIMITS_R_Z_MAX "RZMax" -#define FIELD_KFBXNODE_LIMITS_S_X_MAX "SXMax" -#define FIELD_KFBXNODE_LIMITS_S_Y_MAX "SYMax" -#define FIELD_KFBXNODE_LIMITS_S_Z_MAX "SZMax" -#define FIELD_KFBXNODE_LIMITS_R_TYPE "RType" -#define FIELD_KFBXNODE_LIMITS_R_CLAMP_TYPE "RClampType" -#define FIELD_KFBXNODE_LIMITS_R_X_AXIS "RXAxis" -#define FIELD_KFBXNODE_LIMITS_R_Y_AXIS "RYAxis" -#define FIELD_KFBXNODE_LIMITS_R_Z_AXIS "RZAxis" -#define FIELD_KFBXNODE_LIMITS_AXIS_LENGTH "AxisLen" - -#define FIELD_KFBXNODE_TARGET "LookAtModel" -#define FIELD_KFBXNODE_UP_VECTOR_MODEL "UpVectorModel" -#define FIELD_KFBXNODE_POST_TARGET_ROTATION "PostTargetRotation" -#define FIELD_KFBXNODE_TARGET_UP_VECTOR "UpTargetRotation" - -#define FIELD_KFBXNODE_PIVOTS "Pivots" -#define FIELD_KFBXNODE_PACKAGE "Package" -#define FIELD_KFBXNODE_FILE "File" -#define FIELD_KFBXNODE_TRANSLATION_OFFSET "TranslationOffset" -#define FIELD_KFBXNODE_ROTATION_PIVOT "RotationPivot" -#define FIELD_KFBXNODE_PRE_ROTATION "PreRotation" -#define FIELD_KFBXNODE_POST_ROTATION "PostRotation" -#define FIELD_KFBXNODE_SCALING_PIVOT "ScalingPivot" -#define FIELD_KFBXNODE_PIVOT_ENABLED "PivotEnabled" - -// -// FbxGenericNode -// -#define FIELD_KFBXGENERICNODE_VERSION "Version" -#define FIELD_KFBXGENERICNODE_GENERICNODE "GenericNode" - -// -// FbxGeometry -// -#define FIELD_KFBXGEOMETRY_MATERIAL "Material" -#define FIELD_KFBXGEOMETRY_TEXTURE "Texture" -#define FIELD_KFBXGEOMETRY_LINK "Link" -#define FIELD_KFBXGEOMETRY_SHAPE "Shape" - -// -// FbxMarker -// -#define FIELD_KFBXMARKER_LOOK "Look" -#define FIELD_KFBXMARKER_SIZE "Size" -#define FIELD_KFBXMARKER_COLOR "Color" -#define FIELD_KFBXMARKER_SHOW_LABEL "ShowLabel" -#define FIELD_KFBXMARKER_IK_PIVOT "IKPivot" -#define FIELD_KFBXMARKER_IK_REACH_TRANSLATION "IKReachTranslation" -#define FIELD_KFBXMARKER_IK_REACH_ROTATION "IKReachRotation" -#define FIELD_KFBXMARKER_IK_PULL "IKPull" -#define FIELD_KFBXMARKER_IK_PULL_HIPS "IKPullHips" - -// -// FbxCamera -// -#define FIELD_KFBXGEOMETRYCAMERA_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_NAME "Name" - -// Camera Position and Orientation -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_POSITION "Position" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_UP_VECTOR "Up" -#define FIELD_KFBXGEOMETRYCAMERA_DEFAULT_CAMERA_INTEREST_POSITION "LookAt" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ROLL "Roll" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_TURNTABLE "TurnTable" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PROJECTION_TYPE "Type" - -// Viewing Area Controls -#define FIELD_KFBXGEOMETRYCAMERA_FORMAT_NAME "FormatName" -#define TOKEN_KFBXGEOMETRYCAMERA_NTSC "NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_NTSC "D1 NTSC" -#define TOKEN_KFBXGEOMETRYCAMERA_PAL "PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_D1_PAL "D1 PAL" -#define TOKEN_KFBXGEOMETRYCAMERA_HD "HD" -#define TOKEN_KFBXGEOMETRYCAMERA_640x480 "640x480" -#define TOKEN_KFBXGEOMETRYCAMERA_320x200 "320x200" -#define TOKEN_KFBXGEOMETRYCAMERA_320x240 "320x240" -#define TOKEN_KFBXGEOMETRYCAMERA_128x128 "128x128" -#define TOKEN_KFBXGEOMETRYCAMERA_FULL_SCREEN "Full Screen" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_TYPE "AspectType" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_WIDTH "AspectW" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_HEIGHT "AspectH" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PIXEL_RATIO "PixelRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_NEAR_PLANE "NearPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FAR_PLANE "FarPlane" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LOCK "CameraLock" - -// Aperture and Film Controls -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_FORMAT_NAME "ApertureFormat" -#define TOKEN_KFBXGEOMETRYCAMERA_16MM_THEATRICAL "16mm Theatrical" -#define TOKEN_KFBXGEOMETRYCAMERA_SUPER_16MM "Super 16mm" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ACADEMY "35mm Academy" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_TV_PROJECTION "35mm TV Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_FULL_APERTURE "35mm Full Aperture" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_185_PROJECTION "35mm 1.85 Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ANAMORPHIC "35mm Anamorphic" -#define TOKEN_KFBXGEOMETRYCAMERA_70MM_PROJECTION "70mm Projection" -#define TOKEN_KFBXGEOMETRYCAMERA_VISTA_VISION "VistaVision" -#define TOKEN_KFBXGEOMETRYCAMERA_DYNAVISION "Dynavision" -#define TOKEN_KFBXGEOMETRYCAMERA_IMAX "Imax" -#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_APERTURE_FORMAT "Custom" -#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_MODE "ApertureMode" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_DIMENSION "CameraAperture" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_SQUEEZERATIO "SqueezeRatio" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FOCAL_LENGTH "FocalLength" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE "Aperture" - -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_X "FieldOfViewXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_Y "FieldOfViewYProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_X "OpticalCenterXProperty" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_Y "OpticalCenterYProperty" - -// Background Properties -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_MEDIA_NAME "Media" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_TEXTURE "BackgroundTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_VIDEO_CLIP_TEXTURE "VideoClipTexture" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISPLAY_MODE "ViewFrustumPlane" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DRAWING_MODE "BackgroundMode" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_THRESHOLD_ENABLE "ForegroundTransparent" -#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_TRESHOLD "BackgroundTreshold" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_PLACEMENT_OPTIONS "DisplayMode" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE "ViewFrustumPlaneDistance" -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE_MODE "ViewFrustumPlaneDistanceMode" - -// Camera View Options -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_CAMERA_INTEREST "ViewLookAt" -#define FIELD_KFBXGEOMETRYCAMERA_VIEW_NEAR_FAR_PLANES "ViewFrustum" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_GRID "ShowGrid" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AXIS "ShowAzimut" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_NAME "ShowName" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_INFO_ON_MOVING "ShowInfoOnMoving" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_TIME_CODE "ShowTimeCode" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA "DisplaySafeArea" -#define FIELD_KFBXGEOMETRYCAMERA_SAFE_AREA_STYLE "SafeAreaStyle" -#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA_ON_RENDER "DisplaySafeAreaOnRender" -#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AUDIO "ShowAudio" - -#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_COLOR "BackGroundColor" -#define FIELD_KFBXGEOMETRYCAMERA_AUDIO_COLOR "AudioColor" -#define FIELD_KFBXGEOMETRYCAMERA_USE_FRAME_COLOR "UseFrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_FRAME_COLOR "FrameColor" -#define FIELD_KFBXGEOMETRYCAMERA_ORTHO_ZOOM "CameraOrthoZoom" - -// Rendering Options -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS "CameraAndLens" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_DEPTH_OF_FIELD "DepthOfField" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_ANTIALIASING "Antialiasing" -#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_OVERSAMPLING "OverSampling" -#define FIELD_KFBXGEOMETRYCAMERA_RENDER_OPTIONS_USAGE_TIME "UseOverSamplingTime" - -// -// FbxCameraStereo -// -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_VERSION "Version" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_STEREO "Stereo" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_INTERAXIAL_SEP "InteraxialSeparation" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_ZERO_PARALLAX "ZeroParallax" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_TOE_IN_ADJUST "ToeInAdjust" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_RIGHT_CAM "FilmOffsetRightCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_LEFT_CAM "FilmOffsetLeftCam" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_NAME "PrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_RELATIVE_PRECOMP_FILE_NAME "RelativePrecompFileName" -#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_CONTENT "PrecompFileContent" - -// -// FbxCameraSwitcher -// -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_SWITCHER "Switcher" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_NAME "Name" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_ID "CameraId" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_NAME "CameraName" -#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_INDEX_NAME "CameraIndexName" - - -// -// FbxLight -// -#define FIELD_KFBXGEOMETRYLIGHT_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE "LightType" -#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE_VERSION "LightTypeVersion" -#define FIELD_KFBXGEOMETRYLIGHT_CAST_LIGHT "CastLight" - - -// -// FbxMesh -// -#define FIELD_KFBXGEOMETRYMESH_UV_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYMESH_VERTICES "Vertices" -#define FIELD_KFBXGEOMETRYMESH_EDGES "Edges" -#define FIELD_KFBXGEOMETRYMESH_INTERNAL_EDGES "InternalEdges" -#define FIELD_KFBXGEOMETRYMESH_NORMALS "Normals" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_WCOMPONENT "NormalsW" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS "Binormals" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_WCOMPONENT "BinormalsW" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS "Tangents" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_WCOMPONENT "TangentsW" -#define FIELD_KFBXGEOMETRYMESH_NORMALS_INDEX "NormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_BINORMALS_INDEX "BinormalsIndex" -#define FIELD_KFBXGEOMETRYMESH_TANGENTS_INDEX "TangentsIndex" -#define FIELD_KFBXGEOMETRYMESH_MATERIAL_ASSIGNATION "MaterialAssignation" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ASSIGNATION "TextureMode" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_INDEX "PolygonVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_POLYGON_GROUP "PolygonGroup" -#define FIELD_KFBXGEOMETRYMESH_MATERIALS_ID "Materials" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ID "TextureId" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_TYPE "TextureType" -#define FIELD_KFBXGEOMETRYMESH_UV_TYPE "UVType" -#define FIELD_KFBXGEOMETRYMESH_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV "TextureUV" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_POLYGON_UV "TexturePUV" -#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_UV_INFO "GeometryUVInfo" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_VERTEX_INDEX "TextureVertexIndex" -#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV_INDEX "TextureUVVerticeIndex" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INFO "VertexColorInfo" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VERSION "Version" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_ASSIGNATION "MappingInformationType" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VALUES "Colors" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INDEX "ColorIndex" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHING "Smoothing" -#define FIELD_KFBXGEOMETRYMESH_VERTEX_CREASE "VertexCrease" -#define FIELD_KFBXGEOMETRYMESH_EDGE_CREASE "EdgeCrease" -#define FIELD_KFBXGEOMETRYMESH_HOLE "Hole" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA "UserData" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_INDEX "UserDataIndex" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_TYPE "UserDataType" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_INDICES "UserDataDirectIndices"// remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_COUNT "UserDataDirectCount" //remove me -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ID "UserDataId" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ARRAY "UserDataArray" -#define FIELD_KFBXGEOMETRYMESH_USER_DATA_NAME "UserDataName" -#define FIELD_KFBXGEOMETRYMESH_VISIBILITY "Visibility" -#define FIELD_KFBXGEOMETRYMESH_SMOOTHNESS "Smoothness" -#define FIELD_KFBXGEOMETRYMESH_PREVIEW_DIVSION_LEVELS "PreviewDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_RENDER_DIVSION_LEVELS "RenderDivisionLevels" -#define FIELD_KFBXGEOMETRYMESH_DISPLAY_SUBDIVISIONS "DisplaySubdivisions" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_BORDERS "PreserveBorders" -#define FIELD_KFBXGEOMETRYMESH_PRESERVE_HARD_EDGES "PreserveHardEdges" -#define FIELD_KFBXGEOMETRYMESH_PROPAGATE_EDGE_HARDNESS "PropagateEdgeHardness" -#define FIELD_KFBXGEOMETRYMESH_BOUNDARY_RULE "BoundaryRule" - -#define FIELD_KFBXGEOMETRYMESH_U_EXTENDED_COUNT "UExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_U_CLOSED "UClosed" -#define FIELD_KFBXGEOMETRYMESH_U_TOPCAP "UTopCap" -#define FIELD_KFBXGEOMETRYMESH_U_STEP "UStep" -#define FIELD_KFBXGEOMETRYMESH_U_COUNT "UCount" - -#define FIELD_KFBXGEOMETRYMESH_V_EXTENDED_COUNT "VExtendedCount" -#define FIELD_KFBXGEOMETRYMESH_V_CLOSED "VClosed" -#define FIELD_KFBXGEOMETRYMESH_V_TOPCAP "VTopCap" -#define FIELD_KFBXGEOMETRYMESH_V_STEP "VStep" -#define FIELD_KFBXGEOMETRYMESH_V_COUNT "VCount" - -#define TOKEN_KFBXGEOMETRYMESH_NO_MAPPING_INFORMATION "NoMappingInformation" -#define TOKEN_KFBXGEOMETRYMESH_BY_VERTICE "ByVertice" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON "ByPolygon" -#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON_VERTEX "ByPolygonVertex" -#define TOKEN_KFBXGEOMETRYMESH_BY_FACE "ByFace" -#define TOKEN_KFBXGEOMETRYMESH_BY_EDGE "ByEdge" -#define TOKEN_KFBXGEOMETRYMESH_ALL_SAME "AllSame" -#define TOKEN_KFBXGEOMETRYMESH_BY_MODEL "ByModel" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY "SubdivGeometry" -#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY_VERSION "GeometryVersion" -#define FIELD_KFBXGEOMETRYSUBDIV_LEVEL_COUNT "LevelCount" -#define FIELD_KFBXGEOMETRYSUBDIV_CURRENT_LEVEL "CurrentLevel" -#define FIELD_KFBXGEOMETRYSUBDIV_DISPLAY_SMOOTHNESS "Smoothness" - -// -// Reference -// -#define TOKEN_REFERENCE_DIRECT "Direct" -#define TOKEN_REFERENCE_INDEX "Index" -#define TOKEN_REFERENCE_INDEX_TO_DIRECT "IndexToDirect" - -// -// FbxNurbs -// -#define FIELD_KFBXGEOMETRYNURB_NURB_VERSION "NurbVersion" -#define FIELD_KFBXGEOMETRYNURB_NURB_ORDER "NurbOrder" -#define FIELD_KFBXGEOMETRYNURB_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURB_STEP "Step" -#define FIELD_KFBXGEOMETRYNURB_FORM "Form" -#define FIELD_KFBXGEOMETRYNURB_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURB_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURB_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_U "MultiplicityU" -#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURB_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURB_SURFACE_DISPLAY "SurfaceDisplay" - -// -// FbxNurbsSurface -// -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_VERSION "NurbsSurfaceVersion" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_ORDER "NurbsSurfaceOrder" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_DIMENSION "Dimensions" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_STEP "Step" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_POINTS "Points" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_U "MultiplicityU" -//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_V "MultiplicityV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_U "KnotVectorU" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_V "KnotVectorV" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MATERIALS "Materials" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FLIP_NORMALS "FlipNormals" - -// -// FbxTrimNurbsSurface -// -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_VERSION "TrimmedNurbVersion" -#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_FLIP_NORMALS "FlipNormals" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_SURFACE "NurbSurface" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_BOUNDARY "TrimBoundary" -//#define FIELD_KFBXGEOMETRYTRIM_NURB_EDGE "BoundaryEdge" - -// -// FbxBoundary -// -#define FIELD_KFBXGEOMETRYBOUNDARY_VERSION "BoundaryVersion" - -// -// FbxLine -// -#define FIELD_KFBXGEOMETRYLINE_VERSION "LineVersion" -#define FIELD_KFBXGEOMETRYLINE_POINTS "Points" -#define FIELD_KFBXGEOMETRYLINE_POINTS_INDEX "PointsIndex" - -// -// FbxSubDiv -// -#define FIELD_KFBXGEOMETRYSUBDIVISION_VERSION "SubdivisionVersion" - -// -// FbxNurbsCurve -// -#define FIELD_KFBXGEOMETRYNURBS_CURVE_VERSION "NurbsCurveVersion" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_ORDER "Order" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_DIMENSION "Dimension" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_KNOTVECTOR "KnotVector" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_FORM "Form" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_POINTS "Points" -#define FIELD_KFBXGEOMETRYNURBS_CURVE_RATIONAL "Rational" - -// -// FbxPatch -// -#define FIELD_KFBXGEOMETRYPATCH_PATCH_VERSION "PatchVersion" -#define FIELD_KFBXGEOMETRYPATCH_PATCH_TYPE "PatchType" -#define FIELD_KFBXGEOMETRYPATCH_DIMENSIONS "Dimensions" -#define FIELD_KFBXGEOMETRYPATCH_STEP "Step" -#define FIELD_KFBXGEOMETRYPATCH_CLOSED "Closed" -#define FIELD_KFBXGEOMETRYPATCH_UCAPPED "UCapped" -#define FIELD_KFBXGEOMETRYPATCH_VCAPPED "VCapped" -#define FIELD_KFBXGEOMETRYPATCH_POINTS "Points" -#define FIELD_KFBXGEOMETRYPATCH_SURFACE_DISPLAY "SurfaceDisplay" -#define FIELD_KFBXGEOMETRYPATCH_MATERIALS "Materials" - - -// -// FbxGeometryWeightedMap -// - -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_VERSION "Version" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_SRC_COUNT "SourceCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_DST_COUNT "DestinationCount" -#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_INDEX_MAPPING "IndexMapping" - -// -// FbxSkeleton -// -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_LENGTH "LimbLength" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_SIZE "Size" -#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_COLOR "Color" - -// -// FbxVideo -// -#define FIELD_KFBXVIDEO_USEMIPMAP "UseMipMap" - -// -// FbxTexture -// -#define FIELD_KFBXTEXTURE_TEXTURE "Texture" -#define FIELD_KFBXTEXTURE_TYPE "Type" -#define FIELD_KFBXTEXTURE_VERSION "Version" -#define FIELD_KFBXTEXTURE_TEXTURE_NAME "TextureName" -#define FIELD_KFBXTEXTURE_MEDIA "Media" -#define FIELD_KFBXTEXTURE_FILENAME "FileName" -#define FIELD_KFBXTEXTURE_RELATIVE_FILENAME "RelativeFilename" -#define FIELD_KFBXTEXTURE_TRANSLATION "Translation" -#define FIELD_KFBXTEXTURE_SCALING "Scaling" -#define FIELD_KFBXTEXTURE_UV_TRANSLATION "ModelUVTranslation" -#define FIELD_KFBXTEXTURE_UV_SCALING "ModelUVScaling" -#define FIELD_KFBXTEXTURE_ROTATION "Rotation" -#define FIELD_KFBXTEXTURE_TILING "Tilling" -#define FIELD_KFBXTEXTURE_ALPHA_SRC "Texture_Alpha_Source" -#define FIELD_KFBXTEXTURE_CROPPING "Cropping" -#define FIELD_KFBXTEXTURE_MAPPING_TYPE "Texture_Mapping_Type" -#define FIELD_KFBXTEXTURE_PLANAR_NORMAL "Texture_Planar_Mapping_Normal" -#define FIELD_KFBXTEXTURE_SWAPUV "SwapUV" -#define FIELD_KFBXTEXTURE_MATERIAL_USE "MaterialMode" -#define FIELD_KFBXTEXTURE_TEXTURE_USE "TextureUse" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_STANDARD "Standard" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SHADOW_MAP "ShadowMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_LIGHT_MAP "LightMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERICAL_REFLEXION_MAP "SphericalReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERE_REFLEXION_MAP "SphereReflexionMap" -#define TOKEN_KFBXTEXTURE_TEXTURE_USE_BUMP_NORMAL_MAP "BumpNormalMap" -#define TOKEN_KFBXTEXTURE_BLEND_TRANSLUCENT "Translucent" -#define TOKEN_KFBXTEXTURE_BLEND_ADD "Add" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE "Modulate" -#define TOKEN_KFBXTEXTURE_BLEND_MODULATE2 "Modulate2" -#define TOKEN_KFBXTEXTURE_BLEND_OVER "Over" -#define TOKEN_KFBXTEXTURE_BLEND_NORMAL "Normal" -#define TOKEN_KFBXTEXTURE_BLEND_DISSOLVE "Dissolve" -#define TOKEN_KFBXTEXTURE_BLEND_DARKEN "Darken" -#define TOKEN_KFBXTEXTURE_BLEND_COLORBURN "Colorburn" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARBURN "Linearburn" -#define TOKEN_KFBXTEXTURE_BLEND_DARKERCOLOR "Darkercolor" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTEN "Lighten" -#define TOKEN_KFBXTEXTURE_BLEND_SCREEN "Screen " -#define TOKEN_KFBXTEXTURE_BLEND_COLORDODGE "Colordodge" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARDODGE "Lineardodge" -#define TOKEN_KFBXTEXTURE_BLEND_LIGHTERCOLOR "Lightercolor" -#define TOKEN_KFBXTEXTURE_BLEND_SOFTLIGHT "Softlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDLIGHT "Hardlight " -#define TOKEN_KFBXTEXTURE_BLEND_VIVIDLIGHT "Vividlight" -#define TOKEN_KFBXTEXTURE_BLEND_LINEARLIGHT "Linearlight" -#define TOKEN_KFBXTEXTURE_BLEND_PINLIGHT "Pinlight" -#define TOKEN_KFBXTEXTURE_BLEND_HARDMIX "Hardmix" -#define TOKEN_KFBXTEXTURE_BLEND_DIFFERENCE "Difference" -#define TOKEN_KFBXTEXTURE_BLEND_EXCLUSION "Exclusion" -#define TOKEN_KFBXTEXTURE_BLEND_SUBTRACT "Subtract" -#define TOKEN_KFBXTEXTURE_BLEND_DIVIDE "Divide" -#define TOKEN_KFBXTEXTURE_BLEND_HUE "Hue" -#define TOKEN_KFBXTEXTURE_BLEND_SATURATION "Saturation" -#define TOKEN_KFBXTEXTURE_BLEND_COLOR "Color" -#define TOKEN_KFBXTEXTURE_BLEND_LUMINOSITY "Luminosity" -#define TOKEN_KFBXTEXTURE_BLEND_OVERLAY "Overlay" -#define TOKEN_KFBXTEXTURE_BLEND_MAXBLEND "MaxBlend" -#define FIELD_KFBXTEXTURE_WRAP_U "WrapU" -#define FIELD_KFBXTEXTURE_WRAP_V "WrapV" -#define FIELD_KFBXTEXTURE_BLEND_MODE "BlendMode" -#define FIELD_KFBXTEXTURE_ALPHA "TextureAlpha" - -// -// FbxSurfaceMaterial -// -#define FIELD_KFBXMATERIAL_MATERIAL "Material" -#define FIELD_KFBXMATERIAL_VERSION "Version" -#define FIELD_KFBXMATERIAL_SHADING_MODEL "ShadingModel" -#define FIELD_KFBXMATERIAL_AMBIENT "Ambient" -#define FIELD_KFBXMATERIAL_DIFFUSE "Diffuse" -#define FIELD_KFBXMATERIAL_SPECULAR "Specular" -#define FIELD_KFBXMATERIAL_EMISSIVE "Emissive" -#define FIELD_KFBXMATERIAL_SHININESS "Shininess" -#define FIELD_KFBXMATERIAL_REFLECTIVITY "Reflectivity" -#define FIELD_KFBXMATERIAL_ALPHA "Alpha" -#define FIELD_KFBXMATERIAL_MULTI_LAYER "MultiLayer" - -// -// FbxCluster -// -#define FIELD_KFBXLINK_LINK "Link" -#define FIELD_KFBXLINK_MODE "Mode" -#define FIELD_KFBXLINK_USERDATA "UserData" -#define FIELD_KFBXLINK_INDEXES "Indexes" -#define FIELD_KFBXLINK_WEIGHTS "Weights" -#define FIELD_KFBXLINK_TRANSFORM "Transform" -#define FIELD_KFBXLINK_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXLINK_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXLINK_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXLINK_AVERAGE "Average" -#define TOKEN_KFBXLINK_ADDITIVE "Additive" -#define TOKEN_KFBXLINK_TOTAL1 "Total1" - -// -// FbxDeformer -// -#define FIELD_KFBXDEFORMER_DEFORMER "Deformer" -#define FIELD_KFBXDEFORMER_VERSION "Version" -#define FIELD_KFBXDEFORMER_TYPE "Type" -#define FIELD_KFBXDEFORMER_MULTI_LAYER "MultiLayer" -#define FIELD_KFBXDEFORMER_MODE "Mode" -#define FIELD_KFBXDEFORMER_USERDATA "UserData" -#define FIELD_KFBXDEFORMER_INDEXES "Indexes" -#define FIELD_KFBXDEFORMER_WEIGHTS "Weights" -#define FIELD_KFBXDEFORMER_TRANSFORM "Transform" -#define FIELD_KFBXDEFORMER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXDEFORMER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXDEFORMER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXDEFORMER_AVERAGE "Average" -#define TOKEN_KFBXDEFORMER_ADDITIVE "Additive" -#define TOKEN_KFBXDEFORMER_TOTAL1 "Total1" - -// -// FbxSkin -// -#define FIELD_KFBXSKIN_VERSION "Version" -#define FIELD_KFBXSKIN_DEFORM_ACCURACY "Link_DeformAcuracy" -#define FIELD_KFBXSKIN_SKINNINGTYPE "SkinningType" -#define TOKEN_KFBXSKIN_LINEAR "Linear" -#define TOKEN_KFBXSKIN_DUALQUATERNION "DualQuaternion" -#define TOKEN_KFBXSKIN_BLEND "Blend" -#define FIELD_KFBXSKIN_INDEXES "Indexes" -#define FIELD_KFBXSKIN_BLENDWEIGHTS "BlendWeights" - -// -// FbxCluster -// -#define FIELD_KFBXCLUSTER_VERSION "Version" -#define FIELD_KFBXCLUSTER_MODE "Mode" -#define FIELD_KFBXCLUSTER_USERDATA "UserData" -#define FIELD_KFBXCLUSTER_INDEXES "Indexes" -#define FIELD_KFBXCLUSTER_WEIGHTS "Weights" -#define FIELD_KFBXCLUSTER_TRANSFORM "Transform" -#define FIELD_KFBXCLUSTER_TRANSFORM_LINK "TransformLink" -#define FIELD_KFBXCLUSTER_ASSOCIATE_MODEL "AssociateModel" -#define FIELD_KFBXCLUSTER_TRANSFORM_PARENT "TransformParent" -#define TOKEN_KFBXCLUSTER_AVERAGE "Average" -#define TOKEN_KFBXCLUSTER_ADDITIVE "Additive" -#define TOKEN_KFBXCLUSTER_TOTAL1 "Total1" - -// -// FbxBlendShape -// -#define FIELD_KFBXBLENDSHAPE_VERSION "Version" - -// -// FbxBlendShapeChannel -// -#define FIELD_KFBXBLENDSHAPECHANNEL_VERSION "Version" -#define FIELD_KFBXBLENDSHAPECHANNEL_DEFORMPERCENT "DeformPercent" -#define FIELD_KFBXBLENDSHAPECHANNEL_FULLWEIGHTS "FullWeights" - -// -// FbxShape -// -#define FIELD_KFBXSHAPE_SHAPE "Shape" -#define FIELD_KFBXSHAPE_VERSION "Version" -#define FIELD_KFBXSHAPE_INDEXES "Indexes" -#define FIELD_KFBXSHAPE_VERTICES "Vertices" -#define FIELD_KFBXSHAPE_NORMALS "Normals" - -// -// FbxVertexCacheDeformer -// -#define FILED_KFBXVERTEXCACHEDEFORMER_VERSION "Version" -#define FILED_KFBXVERTEXCACHEDEFORMER_CACHE_CHANNEL "CacheChannel" - -// -// FbxCache -// -#define FIELD_KFBXCACHE_VERTEX_CACHE "Cache" -#define FIELD_KFBXCACHE_VERSION "Version" -#define FIELD_KFBXCACHE_CACHE_PATH "CachePath" - -// -// FbxBindingTable -// -#define FIELD_KFBXBINDINGTABLE_BINDING_TABLE "BindingTable" -#define FIELD_KFBXBINDINGTABLE_VERSION "Version" -#define FIELD_KFBXBINDINGTABLE_TARGET "Target" -#define FIELD_KFBXBINDINGTABLE_ENTRY "Entry" - -// -// FbxImplementation -// -#define FIELD_KFBXIMPLEMENTATION_IMPLEMENTATION "Implementation" -#define FIELD_KFBXIMPLEMENTATION_VERSION "Version" - -// -// FbxBindingOperator -// -#define FIELD_KFBXBINDINGOPERATOR_BINDING_OPERATOR "BindingOperator" -#define FIELD_KFBXBINDINGOPERATOR_VERSION "Version" -#define FIELD_KFBXBINDINGOPERATOR_ENTRY "Entry" - -// -// FbxCollection -// -#define FIELD_KFBXCOLLECTION_COLLECTION "Collection" -#define FIELD_KFBXCOLLECTION_VERSION "Version" - -// -// FbxCollectionExclusive -// -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_COLLECTIONEXCLUSIVE "CollectionExclusive" -#define FIELD_KFBXCOLLECTIONEXCLUSIVE_VERSION "Version" - -// -// FbxSelectionSet -// -#define FIELD_KFBXSELECTIONSET_VERTICE_INDEXARRAY "VertexIndexArray" -#define FIELD_KFBXSELECTIONSET_EDGE_INDEXARRAY "EdgeIndexArray" -#define FIELD_KFBXSELECTIONSET_POLYGONVERTICES_INDEXARRAY "PolygonIndexArray" - -// -// FbxDisplayLayer -// -#define FIELD_KFBXDISPLAYLAYER_DISPLAYLAYER "DisplayLayer" -#define FIELD_KFBXDISPLAYLAYER_VERSION "Version" - -// -// FbxDocument -// -#define FIELD_KFBXDOCUMENT_DOCUMENT "Document" -#define FIELD_KFBXDOCUMENT_VERSION "Version" - -// -// FbxLayeredTexture -// -#define FIELD_KFBXLAYEREDTEXTURE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_KFBXLAYEREDTEXTURE_VERSION "Version" -#define FIELD_KFBXLAYEREDTEXTURE_BLENDMODES "BlendModes" -#define FIELD_KFBXLAYEREDTEXTURE_ALPHAS "Alphas" - -// -// FbxGobo -// -#define FIELD_KFBXGOBO_GOBOMANAGER "GoboManager" -#define FIELD_KFBXGOBO_GOBO "Gobo" -#define FIELD_KFBXGOBO_LIGHTGOBO "LightGobo" -#define FIELD_KFBXGOBO_VERSION "Version" -#define FIELD_KFBXGOBO_GOBONAME "GoboName" -#define FIELD_KFBXGOBO_GOBOPATH "GoboPath" -#define FIELD_KFBXGOBO_DRAWCOMPONENT "DrawComponent" - - -// -// Password -// -#define FIELD_PASSWORD "NodeId" -#define FIELD_OLD_PASSWORD "Param2a" -#define FIELD_XOR_STRING "?|/?*" - - -// Meanfull names for MB 6.0 -#define FIELD_KFBXLAYER_ELEMENT_UV "LayerElementUV" -#define FIELD_KFBXLAYER_ELEMENT_SMOOTHING "LayerElementSmoothing" -#define FIELD_KFBXLAYER_ELEMENT_VERTEX_CREASE "LayerElementVertexCrease" -#define FIELD_KFBXLAYER_ELEMENT_EDGE_CREASE "LayerElementEdgeCrease" -#define FIELD_KFBXLAYER_ELEMENT_HOLE "LayerElementHole" -#define FIELD_KFBXLAYER_ELEMENT_USER_DATA "LayerElementUserData" -#define FIELD_KFBXLAYER_ELEMENT_VISIBILITY "LayerElementVisibility" -#define FIELD_KFBXLAYER_ELEMENT_NORMAL "LayerElementNormal" -#define FIELD_KFBXLAYER_ELEMENT_BINORMAL "LayerElementBinormal" -#define FIELD_KFBXLAYER_ELEMENT_TANGENT "LayerElementTangent" -#define FIELD_KFBXLAYER_ELEMENT_MATERIAL "LayerElementMaterial" -#define FIELD_KFBXLAYER_ELEMENT_TEXTURE "LayerElementTexture" -#define FIELD_KFBXLAYER_ELEMENT_COLOR "LayerElementColor" -#define FIELD_KFBXLAYER_ELEMENT_POLYGON_GROUP "LayerElementPolygonGroup" -#define FIELD_KFBXLAYER_ELEMENT_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT_NAME "Name" -#define FIELD_KFBXLAYER_ELEMENT_TYPED_INDEX "TypedIndex" -#define FIELD_KFBXLAYER_ELEMENT_MAPPING_INFO_TYPE "MappingInformationType" -#define FIELD_KFBXLAYER_ELEMENT_REFERENCE_INFO_TYPE "ReferenceInformationType" -#define FIELD_KFBXLAYER "Layer" -#define FIELD_KFBXLAYER_VERSION "Version" -#define FIELD_KFBXLAYER_ELEMENT "LayerElement" -#define FIELD_KFBXLAYER_ELEMENT_TYPE "Type" - -// -// FbxLayer -// -#define FIELD_KFBXLAYER_GEOMETRY_LAYER "GeometryLayer" -#define FIELD_KFBXLAYER_LAYER_TEXTURE_INFO "LayerTextureInfo" -#define FIELD_KFBXLAYER_TEXTURE_MODE "TextureMode" -#define FIELD_KFBXLAYER_TEXTURE_BLEND_MODE "TextureBlendMode" -#define FIELD_KFBXLAYER_TEXTURE_ID_COUNT "TextureIdCount" -#define FIELD_KFBXLAYER_TEXTURE_ID "TextureId" -#define FIELD_KFBXLAYER_UV_MODE "UVMode" -#define FIELD_KFBXLAYER_UV_COUNT "UVCount" -#define FIELD_KFBXLAYER_UV "UV" -#define FIELD_KFBXLAYER_UV_INDEX "UVIndex" -#define FIELD_KFBXLAYER_UV_ID_COUNT "UVIdCount" -#define FIELD_KFBXLAYER_UV_ID "UVId" - -// -// FbxPose -// -#define FIELD_KFBXPOSE_VERSION "Version" -#define FIELD_KFBXPOSE_TYPE "Type" -#define FIELD_KFBXPOSE_POSE "Pose" -#define FIELD_KFBXPOSE_BIND_POSE "BindPose" -#define FIELD_KFBXPOSE_REST_POSE "RestPose" - - -// -// KSceneInfo -// -#define FIELD_SCENEINFO "SceneInfo" -#define FIELD_SCENEINFO_TYPE "Type" -#define FIELD_SCENEINFO_VERSION "Version" -#define FIELD_SCENEINFO_METADATA "MetaData" -#define FIELD_SCENEINFO_METADATA_VERSION "Version" -#define FIELD_SCENEINFO_METADATA_TITLE "Title" -#define FIELD_SCENEINFO_METADATA_SUBJECT "Subject" -#define FIELD_SCENEINFO_METADATA_AUTHOR "Author" -#define FIELD_SCENEINFO_METADATA_KEYWORDS "Keywords" -#define FIELD_SCENEINFO_METADATA_REVISION "Revision" -#define FIELD_SCENEINFO_METADATA_COMMENT "Comment" - -// -// Global setting: -// -#define FIELD_GLOBAL_SETTINGS "GlobalSettings" -#define FIELD_GLOBAL_SETTINGS_VERSION "Version" - -// -// FbxSceneReference: -// -#define FIELD_KFBXREFERENCE_REFERENCE "SceneReference" -#define FIELD_KFBXREFERENCE_VERSION "Version" - -// -// Constraints -// -#define FIELD_CONSTRAINT "Constraint" -#define FIELD_CONSTRAINT_VERSION "Version" -#define FIELD_CONSTRAINT_OFFSET "Offset" -#define TOKEN_KFBXCONSTRAINT_CONSTRAINT "Constraint" -#define TOKEN_KFBXCONSTRAINT_POSITION "Position From Positions" -#define TOKEN_KFBXCONSTRAINT_ROTATION "Rotation From Rotations" -#define TOKEN_KFBXCONSTRAINT_SCALE "Scale From Scales" -#define TOKEN_KFBXCONSTRAINT_PARENT "Parent-Child" -#define TOKEN_KFBXCONSTRAINT_SINGLECHAINIK "Single Chain IK" -#define TOKEN_KFBXCONSTRAINT_AIM "Aim" -#define TOKEN_KFBXCONSTRAINT_CHARACTER "Character" -#define TOKEN_KFBXCONSTRAINT_CUSTOM "Custom" - -// -// Controlset plug -// - - -// -// Object definition -// -#define FIELD_OBJECT_DESCRIPTION "Document" -#define FIELD_OBJECT_DESCRIPTION_NAME "Name" -#define FIELD_OBJECT_REFERENCES "References" -#define FIELD_OBJECT_REFERENCES_FILE_PATH_URL "FilePathUrl" -#define FIELD_OBJECT_REFERENCES_REFERENCE "Reference" -#define FIELD_OBJECT_DEFINITION "Definitions" -#define FIELD_OBJECT_PROPERTY_TEMPLATE "PropertyTemplate" -#define FIELD_OBJECT_DEFINITION_VERSION "Version" -#define FIELD_OBJECT_DEFINITION_COUNT "Count" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE "ObjectType" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_AUDIO_LAYER "AudioLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_REFERENCE "SceneReference" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTAINER "Container" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MODEL "Model" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY "Geometry" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_NODE_ATTRIBUTE "NodeAttribute" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY_WEIGHTED_MAP "GeometryWeightedMap" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MARKETSET "MarkerSet" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION "Collection" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION_EXCLUSIVE "CollectionExclusive" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DISPLAY_LAYER "DisplayLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_THUMBNAIL "Thumbnail" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_VIDEO "Video" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SUBDEFORMER "SubDeformer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPE "BlendShape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPECHANNEL "BlendShapeChannel" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTROLSET_PLUG "ControlSetPlug" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_POSE "Pose" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GENERIC_NODE "GenericNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CACHE "Cache" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_IMPLEMENTATION "Implementation" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGTABLE "BindingTable" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGOPERATOR "BindingOperator" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LAYERED_TEXTURE "LayeredTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PROCEDURAL_TEXTURE "ProceduralTexture" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENE "Scene" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LIBRARY "Library" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DOCUMENT "Document" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_FOLDER "Folder" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CLIP "Clip" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE "TimelineX" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE_TRACK "TimelineXTrack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_OBJECTMETADATA "ObjectMetaData" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PLUGIN_PARAMS "PluginParameters" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_STACK "AnimationStack" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_LAYER "AnimationLayer" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVENODE "AnimationCurveNode" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVE "AnimationCurve" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_EVALUATOR "AnimationEvaluator" - -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SELECTIONNODE "SelectionNode" - -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_MESH "Mesh" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SUBDIV "Subdiv" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_PATCH "Patch" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURB "Nurb" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_SURFACE "NurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_CURVE "NurbsCurve" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_TRIM_NURB_SURFACE "TrimNurbsSurface" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_BOUNDARY "Boundary" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_LINE "Line" -#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SHAPE "Shape" -#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GLOBAL_SETTINGS FIELD_GLOBAL_SETTINGS - -// -// Object properties -// -#define FIELD_OBJECT_PROPERTIES "Objects" - - -// -// Object relations -// -#define FIELD_OBJECT_RELATIONS "Relations" -#define FIELD_OBJECT_RELATIONS_TYPE_MODEL "Model" -#define FIELD_OBJECT_RELATIONS_TYPE_MATERIAL "Material" -#define FIELD_OBJECT_RELATIONS_TYPE_TEXTURE "Texture" -#define FIELD_OBJECT_RELATIONS_TYPE_AUDIO "Audio" -#define FIELD_OBJECT_RELATIONS_TYPE_VIDEO "Video" -#define FIELD_OBJECT_RELATIONS_TYPE_CONSTRAINT "Constraint" -#define FIELD_OBJECT_RELATIONS_TYPE_DEFORMER "Deformer" -#define FIELD_OBJECT_RELATIONS_TYPE_POSE "Pose" -#define FIELD_OBJECT_RELATIONS_TYPE_SCENEINFO FIELD_SCENEINFO -#define FIELD_OBJECT_RELATIONS_TYPE_CACHE "Cache" - -// -// Object connections -// -#define FIELD_OBJECT_CONNECTIONS "Connections" - - -// -// Takes -// -#define FIELD_TAKES "Takes" - -// Embedded files -#define FIELD_EMBEDDED_FILES "Embedding" -#define FIELD_EMBEDDED_FILE "File" -// Original filename, relative to the fbx -// It may point to a file not below the fbx. -#define FIELD_EMBEDDED_ORIGINAL_FILENAME "Original" -// Embedded filename, unique to the fbx, always relative to the fbx file; -// if two original filenames, in separate folders, are embedded in an fbx file, -// one of them will be renamed by using a folder. -#define FIELD_EMBEDDED_FILENAME "Filename" - -// Link back to the objects which use this file. -#define FIELD_EMBEDDED_CONSUMERS "Consumers" -#define FIELD_EMBEDDED_CONSUMER "Consumer" - -// -// Node Attribute -// -#define FIELD_NODE_ATTRIBUTE_NAME "NodeAttributeName" -#define FIELD_NODE_ATTRIBUTE_REFTO "NodeAttributeRefTo" - -// -// Old sections -// -#define FIELD_OLD_SECTION_VERSION5 "Version5" -#define FIELD_OLD_SECTION_HIERARCHYVIEW "HierarchyView" - -#define OBJECT_OLD_SECTION_VERSION5 "OldSection_VersionFive" -#define OBJECT_OLD_SECTION_HIERARCHYVIEW "OldSection_HierarchyView" - -#include - -#endif /* _FBXSDK_FILEIO_FILE_TOKENS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h deleted file mode 100755 index b8745bf..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalcamerasettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxScene; -class FbxCamera; -class FbxCameraSwitcher; - -#define FBXSDK_CAMERA_PERSPECTIVE "Producer Perspective" -#define FBXSDK_CAMERA_TOP "Producer Top" -#define FBXSDK_CAMERA_FRONT "Producer Front" -#define FBXSDK_CAMERA_BACK "Producer Back" -#define FBXSDK_CAMERA_RIGHT "Producer Right" -#define FBXSDK_CAMERA_LEFT "Producer Left" -#define FBXSDK_CAMERA_BOTTOM "Producer Bottom" -#define FBXSDK_CAMERA_SWITCHER "Camera Switcher" - -/** This class contains the global camera settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format - * that is now the default no longer uses it. The relevant data (a subset of this class) has - * been moved to the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalCameraSettings -{ - FBXSDK_FRIEND_NEW(); - -public: - /** \name Default Camera Settings */ - //@{ - /** \enum EViewingMode Viewing modes. */ - enum EViewingMode - { - eStandard, // - -#endif /* _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h deleted file mode 100755 index 9c76d4a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgloballightsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ - -#include - -#include - -#include - -class FbxGlobalLightSettingsProperties; - -/** This class contains functions for accessing global light settings. - * \nosubgrouping - * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format that is - * now the default no longer uses it. The relevant data (a subset of this class) has been moved to - * the FbxGlobalSettings object and should be used instead. - */ -class FBXSDK_DLL FbxGlobalLightSettings -{ - -public: - FBXSDK_FRIEND_NEW(); - /** - * \name Ambient Color - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only use RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Fog Option - */ - //@{ - - /** Activates or disables the fog. - * \param pEnable Set to \c true to activate the fog option or set to \c false to disable the fog option. - */ - void SetFogEnable(bool pEnable); - - /** Returns the fog option's current state. - * \return \c True if fog is activated, returns \c false if fog is disabled. - */ - bool GetFogEnable() const; - - /** Sets the fog color. - * \param pColor The fog color to be set. - * \remarks The fog color only uses RGB channels. - */ - void SetFogColor(FbxColor pColor); - - /** Returns the fog color. - * \return The fog color. - * \remarks The fog color only uses RGB channels. - */ - FbxColor GetFogColor() const; - - /** \enum EFogMode Fog types. - */ - enum EFogMode - { - eLinear, //! Linear fog mode. - eExponential, //! Exponential fog mode. - eExponentialSquareRoot //! Exponential square root fog mode. - }; - - /** Sets the fog mode. - * \param pMode The fog type to be set. - */ - void SetFogMode(EFogMode pMode); - - /** Returns the fog mode. - * \return The currently set fog mode. - */ - EFogMode GetFogMode() const; - - /** Sets the fog density. - * \param pDensity The fog density to be set. It can be any double value, however it can - * happen that other sections of FBX SDK may clamp values to reasonable values. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - void SetFogDensity(double pDensity); - - /** Returns the fog density. - * \return The currently set fog density. - * \remarks This function is only used when the fog mode is set to exponential or square root exponential. - */ - double GetFogDensity() const; - - /** Sets the distance from the view where the fog begins. - * \param pStart Distance where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. The new value is clamped to fit inside the interval [0, FogEnd()]. - */ - void SetFogStart(double pStart); - - /** Returns the distance from the view where the fog begins. - * \return The distance from the view where the fog begins. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogStart() const; - - /** Sets the distance from the view where the fog ends. - * \param pEnd Distance where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. The new value is adjusted to fit within the interval [FogStart(), inf). - */ - void SetFogEnd(double pEnd); - - /** Returns the distance from the view where the fog ends. - * \return The distance from the view where the fog ends. - * \remarks This function is only used when the fog mode is set to linear. - */ - double GetFogEnd() const; - - //@} - - /** - * \name Shadow Planes - * The functions in this section are supported only by FiLMBOX version 2.7 and earlier. - * FiLMBOX 3.0 supports shadow planes within a specific shader, which is not supported by the FBX SDK. - */ - //@{ - - /** Struct used to define the shadow plane. - */ - struct FBXSDK_DLL ShadowPlane - { - //! Default constructor. - ShadowPlane(); - - //! Activate flag. - bool mEnable; - - //! Origin point. - FbxVector4 mOrigin; - - //! Normal vector. - FbxVector4 mNormal; - }; - - /** Activates or disables the display of shadow planes. - * \param pShadowEnable Set to \c true to display shadow planes in the scene. - */ - void SetShadowEnable(bool pShadowEnable); - - /** Returns the current state of the shadow enable flag. - * \return \c True if shadow planes are set to be displayed in the scene. - */ - bool GetShadowEnable() const; - - /** Sets the shadow intensity that is applied to all shadow planes. - * \param pShadowIntensity Intensity applied to all the shadow planes. - * \remarks Ranges from 0 to 300. - */ - void SetShadowIntensity(double pShadowIntensity); - - /** Returns the shadow intensity applied to all shadow planes. - * \return The intensity applied to all shadow planes in the scene. - * \remarks Ranges from 0 to 300. - */ - double GetShadowIntensity() const; - - /** Returns the number of shadow planes. - * \return Number of shadow planes. - */ - int GetShadowPlaneCount() const; - - /** Returns a shadow plane at the specified index. - * \param pIndex Shadow plane index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer the shadow plane, or \c NULL if the index is out of range. - */ - ShadowPlane* GetShadowPlane(int pIndex, FbxStatus* pStatus=NULL); - - /** Adds a shadow plane. - * \param pShadowPlane The shadow plane to be added. - */ - void AddShadowPlane(ShadowPlane pShadowPlane); - - //! Removes all shadow planes. - void RemoveAllShadowPlanes(); - - //@} - - //! Restores default settings. - void RestoreDefaultSettings(); - - /** Assignment operator. - * \param pGlobalLightSettings FbxGlobalLightSettings object assigned to this one. - */ - const FbxGlobalLightSettings& operator=(const FbxGlobalLightSettings& pGlobalLightSettings); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxGlobalLightSettings(); - ~FbxGlobalLightSettings(); - - FbxGlobalLightSettingsProperties* mPH; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h deleted file mode 100755 index c18cb69..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxglobalsettings.h +++ /dev/null @@ -1,315 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxglobalsettings.h -#ifndef _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ -#define _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class contains functions for accessing global settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGlobalSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGlobalSettings, FbxObject); - -public: - /** - * \name Axis system - */ - //@{ - - /** Sets the scene's coordinate system. - * \param pAxisSystem The coordinate system to set. - */ - void SetAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Returns the scene's current coordinate system. - * \return The scene's current coordinate system. - */ - FbxAxisSystem GetAxisSystem(); - //@} - - /** Sets the coordinate system's original Up Axis when the scene is created. - * \param pAxisSystem The coordinate system whose Up Axis is copied. - */ - void SetOriginalUpAxis(const FbxAxisSystem& pAxisSystem); - - /** Returns the coordinate system's original Up Axis. - * \return The coordinate system's original Up Axis when the scene is created. 0 is X, 1 is Y, 2 is Z axis. - */ - int GetOriginalUpAxis() const; - //@} - - /** - * \name System Units - */ - //@{ - - /** Sets the unit of measurement used by the system. - * \param pOther The system unit to set. - */ - void SetSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the unit of measurement used by the system. - * \return The unit of measurement used by the system. - */ - FbxSystemUnit GetSystemUnit() const; - - /** Sets the original unit of measurement used by the system. - * \param pOther The original system unit to set. - */ - void SetOriginalSystemUnit(const FbxSystemUnit& pOther); - - /** Returns the original unit of measurement used by the system. - * \return The original unit of measurement used by the system. - */ - FbxSystemUnit GetOriginalSystemUnit() const; - //@} - - - /** - * \name Light Settings - */ - //@{ - - /** Sets the ambient color. - * \param pAmbientColor The ambient color to set. - * \remarks The ambient color only uses the RGB channels. - */ - void SetAmbientColor(FbxColor pAmbientColor); - - /** Returns the ambient color. - * \return The ambient color. - */ - FbxColor GetAmbientColor() const; - - //@} - - /** - * \name Camera Settings - */ - //@{ - /** Sets the default camera. - * \param pCameraName Name of the default camera. - * \return \c true if camera name is valid, returns \c false if the camera does not have a valid name. - * \remarks A valid camera name can be either one of the defined tokens (FBXSDK_CAMERA_PERSPECTIVE, - * FBXSDK_CAMERA_TOP, FBXSDK_CAMERA_FRONT, FBXSDK_CAMERA_BACK, FBXSDK_CAMERA_RIGHT, FBXSDK_CAMERA_LEFT and FBXSDK_CAMERA_BOTTOM) or the name - * of a camera inserted in the node tree under the scene's root node. - */ - bool SetDefaultCamera(const char* pCameraName); - - /** Returns the default camera name. - * \return The default camera name, or an empty string if no camera name has been set. - */ - FbxString GetDefaultCamera() const; - //@} - - /** - * \name Time Settings - */ - //@{ - /** Sets the time mode. - * \param pTimeMode One of the defined modes in class FbxTime. - */ - void SetTimeMode(FbxTime::EMode pTimeMode); - - /** Returns the time mode. - * \return The currently set TimeMode. - */ - FbxTime::EMode GetTimeMode() const; - - /** Sets the time protocol. - * \param pTimeProtocol One of the defined protocols in FbxTime class. - */ - void SetTimeProtocol(FbxTime::EProtocol pTimeProtocol); - - /** Returns the time protocol. - * \return The currently set time protocol (default FbxTime::eFrameCount). - */ - FbxTime::EProtocol GetTimeProtocol() const; - - /** \enum ESnapOnFrameMode Snap on frame mode. - */ - enum ESnapOnFrameMode - { - eNoSnap, //! No snap. - eSnapOnFrame, //! Snap on frame. - ePlayOnFrame, //! Play on frame. - eSnapAndPlayOnFrame //! Snap and play on frame. - }; - - /** Sets the snap on frame mode. - * \param pSnapOnFrameMode One of the following values: eNoSnap, eSnapOnFrame, ePlayOnFrame, or eSnapAndPlayOnFrame. - */ - void SetSnapOnFrameMode(ESnapOnFrameMode pSnapOnFrameMode); - - /** Returns the snap on frame mode. - * \return The currently set snap on frame mode (default eNoSnap). - */ - ESnapOnFrameMode GetSnapOnFrameMode() const; - - /** Sets the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void SetTimelineDefaultTimeSpan(const FbxTimeSpan& pTimeSpan); - - /** Returns the default time span of the time line. - * \param pTimeSpan The default time span of the time line. - */ - void GetTimelineDefaultTimeSpan(FbxTimeSpan& pTimeSpan) const; - - /** Set custom frame rate. - * This is meaningless if the time mode is not FbxTime::eCustom. - */ - void SetCustomFrameRate(double pCustomFrameRate); - - /** Return frame rate if the time mode is FbxTime::eCustom. - * If the time mode is not FbxTime::eCustom, return -1. - */ - double GetCustomFrameRate() const; - //@} - - /** - * \name Time Markers - */ - //@{ - struct FBXSDK_DLL TimeMarker - { - //! Default constructor. - TimeMarker(); - - /** Copy constructor. - * \param pTimeMarker Another time marker copied to this time marker. - */ - TimeMarker(const TimeMarker& pTimeMarker); - - /** Assignment operator. - * \param pTimeMarker Another time marker assigned to this time marker. - */ - TimeMarker& operator=(const TimeMarker& pTimeMarker); - - //! Marker name. - FbxString mName; - - //! Marker time. - FbxTime mTime; - - //! Loop flag. - bool mLoop; - }; - - /** Returns the number of time markers. - * \return The number of time markers. - */ - int GetTimeMarkerCount() const; - - /** Returns the time marker at the given index. - * \param pIndex The time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return A copy of the time marker at the given index, or an empty one if an error occurred. - */ - TimeMarker GetTimeMarker(int pIndex, FbxStatus* pStatus=NULL) const; - - /** Adds a time marker. - * \param pTimeMarker The new time marker to be added. - * \param pStatus The FbxStatus object to hold error codes. - */ - void AddTimeMarker(const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - /** Replaces the time marker at the specified index with the new one. - * \param pIndex The time marker index. - * \param pTimeMarker The new time marker. - * \param pStatus The FbxStatus object to hold error codes. - */ - void ReplaceTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); - - //! Removes all time markers and sets the current time marker index to -1. - void RemoveAllTimeMarkers(); - - /** Sets the index of the current time marker. - * \param pIndex The current time marker index. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, or returns \c false if the index is not valid. - */ - bool SetCurrentTimeMarker(int pIndex, FbxStatus* pStatus=NULL); - - /** Returns the current time marker index. - * \return The current time marker index, or -1 if no current time marker has been set. - */ - int GetCurrentTimeMarker() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - FbxPropertyT UpAxis; - FbxPropertyT UpAxisSign; - - FbxPropertyT FrontAxis; - FbxPropertyT FrontAxisSign; - - FbxPropertyT CoordAxis; - FbxPropertyT CoordAxisSign; - - FbxPropertyT OriginalUpAxis; - FbxPropertyT OriginalUpAxisSign; - - FbxPropertyT UnitScaleFactor; - FbxPropertyT OriginalUnitScaleFactor; - - FbxPropertyT AmbientColor; - FbxPropertyT DefaultCamera; - FbxPropertyT TimeMode; - FbxPropertyT TimeProtocol; - FbxPropertyT SnapOnFrameMode; - FbxPropertyT TimeSpanStart; - FbxPropertyT TimeSpanStop; - FbxPropertyT CustomFrameRate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - void AxisSystemToProperties(); - void PropertiesToAxisSystem(); - - void Init(); - - FbxAxisSystem mAxisSystem; - int mNbTimeMarkers; - - friend class FbxWriterFbx6; - - FbxProperty mTimeMarkers; - FbxPropertyT mCurrentTimeMarker; - void AddSetTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus, bool pAdd); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTime::EMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgobo.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgobo.h deleted file mode 100755 index 239cba1..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxgobo.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgobo.h -#ifndef _FBXSDK_FILEIO_GOBO_H_ -#define _FBXSDK_FILEIO_GOBO_H_ - -#include - -#include - -#include - -/** - * \brief A gobo is a filter placed over a spot light to project light patterns through fog on a surface. - * You can also use an image file as a gobo, which cause the light to project an image, much like a projector. - */ -class FbxGobo -{ -public: - FbxGobo(char* pName) : - mName(pName) - { - } - - //! Gobo name. - FbxString mName; - //! path and file name of the image file. - FbxString mFileName; - //! Flag that if shows the light projected on the ground. - bool mDrawGroundProjection; - //! Flag that lets you create a volumetric lighting effect by making the light stream visible. - bool mVolumetricLightProjection; - //! Flag that front facing light occurs when the camera view is looking down or up the light stream of a Spot light, which makes the light stream look three-dimensional. - bool mFrontVolumetricLightProjection; -}; - -#include - -#endif /* _FBXSDK_FILEIO_GOBO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbximporter.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbximporter.h deleted file mode 100755 index f55266f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbximporter.h +++ /dev/null @@ -1,393 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximporter.h -#ifndef _FBXSDK_FILEIO_IMPORTER_H_ -#define _FBXSDK_FILEIO_IMPORTER_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxIO; -class FbxIOFileHeaderInfo; -class FbxDocumentInfo; -class FbxTakeInfo; -class FbxReader; -class FbxThread; - -struct FbxImportThreadArg; - -/** Class to import an FBX file into SDK objects. -* Normally this class is used as is. But for very special needs -* a user can override Initialize() for special purpose. -* -* An importer will select the appropriate reader to a particular file. -* Ex: When an importer must import an FBX 7 file, -* the importer will ask for all registered readers if an FBX 7 file reader is available, -* then if a reader is found, the importer will create -* the specialized FBX 7 reader and read the file. -* This way, an importer can "read" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. -* \see FbxReader -* -* Typical workflow for using the FbxImporter class: -* -# create a SDKManager -* -# create an IOSettings object -* -# create an empty scene -* -# create an importer -* -# initialize the importer with a file name and IOSettings -* -# set numerous states, take information, defining how the importer will behave -* -# call FbxImporter::Import() with an empty scene -* \code -* ex: -* // create a SdkManager -* FbxManager *lSdkManager = FbxManager::Create(); -* -* // create an IOSettings object -* FbxIOSettings * ios = FbxIOSettings::Create(lSdkManager, IOSROOT ); -* -* // set some IOSettings options -* ios->SetBoolProp(IMP_FBX_MATERIAL, true); -* ios->SetBoolProp(IMP_FBX_TEXTURE, true); -* -* // create an empty scene -* FbxScene* lScene = FbxScene::Create(lSdkManager,""); -* -* // Create an importer. -* FbxImporter* lImporter = FbxImporter::Create(lSdkManager, ""); -* -* // Initialize the importer by providing a filename and the IOSettings to use -* lImporter->Initialize("C:\\myfile.fbx", -1, ios); -* -* // Import the scene. -* lImporter->Import(lScene); -* -* // Destroy the importer. -* lImporter->Destroy(); -* \endcode -* -* \remarks According to the file suffix, a specialized reader will be created internally. -* Ex: for .fbx files a FBX Reader, for .3ds files, a 3ds reader, etc. -* Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS -* \nosubgrouping -*/ -class FBXSDK_DLL FbxImporter : public FbxIOBase -{ - FBXSDK_OBJECT_DECLARE(FbxImporter, FbxIOBase); - -public: - /** - * \name Import Functions - */ - //@{ - - /** Initialize object. - * \param pFileName Name of file to access. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will detect the file format according to file suffix automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - bool Initialize(const char* pFileName, int pFileFormat=-1, FbxIOSettings * pIOSettings=NULL) override; - - /** Initialize object. - * \param pStream stream to access. - * \param pStreamData user-defined stream data. - * \param pFileFormat file format identifier User does not need to specify it by default. - if not specified, plugin will request the file format from the stream automatically. - * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized - */ - virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Get the FBX version number of the FBX file. - * FBX version numbers start at 5.0.0. - * \param pMajor Version major number. - * \param pMinor Version minor number. - * \param pRevision Version revision number. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - void GetFileVersion(int& pMajor, int& pMinor, int& pRevision); - - /** Get the default rendering resolution if present in the file header. - * \param pCamName Returned name of the camera. - * \param pResolutionMode Returned resolution mode. - * \param pW Returned width. - * \param pH Returned height. - * \return \c true if the default rendering settings are defined in the file, otherwise - * returns \c false with empty parameters. - */ - bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Get the complete file header information. - * \return valid pointer to the complete header information - */ - FbxIOFileHeaderInfo* GetFileHeaderInfo(); - - /** \enum EStreamOptionsGeneration Stream options identifiers. - * - \e eParseFile Parse the file - * - \e eDoNotParseFile Do not parse the file. - */ - enum EStreamOptionsGeneration - { - eParseFile, // Parse the file - eDoNotParseFile // Do not parse the file (fast) - }; - - /** Read the currently opened file header to retrieve information related to takes. - * \param pStreamOptionsGeneration Stream options identifier. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(EStreamOptionsGeneration pStreamOptionsGeneration = eParseFile); - - /** Read the currently opened file header to retrieve information related to takes. - * \param pFbxObject Target FBX file. - * \return \c true on success, \c false otherwise. - * \remarks Caller gets ownership of the returned structure. - */ - bool GetImportOptions(FbxIO* pFbxObject); - - /** Import the currently opened file into a scene. - * \param pDocument Document to fill with file content. - * \param pNonBlocking If true, the import process will be executed in a new thread, allowing it to be non-blocking. - To determine if the import finished, refer to the function IsImporting(). - * \return \c true on success, \c false otherwise. - * \remarks To identify the error that occurred, inspect the status object accessed - * using the GetStatus() function. - * If the imported file is password protected and the password is not - * set or wrong, the FbxStatus object access with GetStatus() will be set with - * FbxStatus::ePasswordError. - */ - bool Import(FbxDocument* pDocument, bool pNonBlocking=false); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - /** Check if the importer is currently importing. - * \param pImportResult This parameter, after the import finished, will contain the result of the import success or failure. - * \return Return true if the importer is currently importing. - * \remarks This function will always return false if Import() was called with pNonBlocking set to false. - * This function should be used only in the context of pNonBlocking set to true. - * It is very important to periodically check if the import finished using this function, - * since it will also free up the thread's allocations when its done. - */ - bool IsImporting(bool& pImportResult); -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - - /** Get the progress status in non-blocking mode. - * \param pStatus Optional current status string. - * \return Percentage of the finished workload - */ - float GetProgress(FbxString* pStatus=NULL); - - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs pointer to the arguments passed to the callback function. - */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. - * \param pExtractFolder The file path name where the embedded files should be extracted. - */ - void SetEmbeddingExtractionFolder(const char* pExtractFolder); - - /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. - */ - const char* GetEmbeddingExtractionFolder(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. - */ - FbxIOSettings* GetIOSettings(); - - /** Set the IOSettings pointer - * \param pIOSettings Point to a FbxIOSettings object. - */ - void SetIOSettings(FbxIOSettings* pIOSettings); - - /** Set the password. - * All subsequently imported files are opened with the given password. - * \param pPassword Password string. - */ - void SetPassword(char* pPassword); - - /** - * \name Animation Stack Description Access - * \see FbxAnimStack - */ - //@{ - - /** Get the number of available animation stacks in the file. - * \return Number of animation stacks. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - int GetAnimStackCount(); - - /** Get the take information about an available take. - * Use the returned reference to a FbxTakeInfo object to set whether the indexed take is imported. - * \param pIndex Index of the requested take. - * \return Take information or \c NULL if function failed. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxTakeInfo* GetTakeInfo(int pIndex); - - /** Return the active animation stack name. - * \return Active animation stack name if there is one, otherwise returns an empty string. - * \remarks This function must be called after FbxImporter::Initialize(). - */ - FbxString GetActiveAnimStackName(); - - //@} - - /** - * \name Scene Description Access - */ - //@{ - - /** Get the scene info. - * \return Pointer to the scene info or \c NULL if no scene information - * is available in the file. - */ - FbxDocumentInfo* GetSceneInfo(); - - //@} - /** - * \name File Format - */ - //@{ - - /** Returns the index of the reader (FbxReader) associated with the file format. - This index is considered the identifier of the file format. - The array of registered readers can't be retrieved. - \return Index of the registered FbxReader associated with the file format. - If no reader found return -1. - \remarks According to the number of readers registered this value can change - for the same reader between SDK Manager instantiations. - */ - int GetFileFormat (); - - /** \return \c true if the file format is a recognized FBX format. - */ - bool IsFBX(); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxFile* GetFile(); - FbxStream* GetStream(); - void* GetStreamData(); - - void ParseForGlobalSettings(bool pState); - void ParseForStatistics(bool pState); - bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); - bool GetStatistics(FbxStatistics* pStatistics); - bool GetFrameRate(FbxTime::EMode &pTimeMode); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); - - void Reset(); - bool FileOpen(FbxFile* pFile = NULL); - bool FileOpen(FbxStream* pStream, void* pStreamData); - void FileClose(); - - void GetImportOptionsInfo(); - bool IsNativeExtension (); - - //These two internal functions are only used to read old character pose data -public: - bool Initialize(FbxFile* pFile, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - bool Import(FbxDocument* pDocument, FbxIO* pFbxObject); - -private: - bool ImportProcess(FbxDocument* pDocument); - - int mFileFormat; - FbxReader* mReader; - FbxString mExtractFolder; - bool mParseForGlobalSettings; - FbxAxisSystem mAxisSystem; - FbxSystemUnit mSystemUnits; - FbxTime::EMode mFrameRate; - bool mParseForStatistics; - FbxStatistics mStatistics; -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxThread* mImportThread; - FbxImportThreadArg* mImportThreadArg; - bool mImportThreadResult; - bool mIsThreadImporting; -#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ - FbxProgress mProgress; - FbxFile* mFile; - FbxStream* mStream; - void* mStreamData; - bool mImportOptionsDone; - FbxArray mTakeInfo; - FbxDocumentInfo* mSceneInfo; - FbxString mActiveAnimStackName; - int mMajorVersion; - int mMinorVersion; - int mRevisionVersion; - FbxIOFileHeaderInfo* mHeaderInfo; - FbxIOSettings* mIOSettings; - bool mClientIOSettings; - - //For Initialize and Import - friend class FbxReaderFbx5; - friend class FbxReaderFbx6; - friend struct FbxReaderFbx7_Impl; - - friend void ImportThread(void*); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Event that is emitted to plugins before a FBX file has been imported. -class FBXSDK_DLL FbxEventPreImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPreImport); -public: - inline FbxEventPreImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The document the FBX file is to be imported into. - FbxDocument* mDocument; -}; - -//! Event that is emitted to plugins after a FBX file has been imported. -class FBXSDK_DLL FbxEventPostImport : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPostImport); -public: - inline FbxEventPostImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; - - //! The imported document - FbxDocument* mDocument; -}; - -#include - -#endif /* _FBXSDK_FILEIO_IMPORTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiobase.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiobase.h deleted file mode 100755 index 0b15824..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiobase.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiobase.h -#ifndef _FBXSDK_FILEIO_IO_BASE_H_ -#define _FBXSDK_FILEIO_IO_BASE_H_ - -#include - -#include -#include - -#include - -#define FBXSDK_IO_END_NODE_STR "_End" - -/** \brief Base class for FBX file importer and exporter. - * \nosubgrouping - */ -class FBXSDK_DLL FbxIOBase : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOBase, FbxObject); - -public: - /** Initializes the object. - * \param pFileName The name of the file to access. - * \param pFileFormat Unused in this class implementation. - * \param pIOSettings Unused in this class implementation. - * \return \c True if successful, returns \c False otherwise. - * \remarks To identify the error, inspect \e mStatus. - */ - virtual bool Initialize(const char *pFileName, int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); - - /** Returns the file name. - * \return The file name or an empty string if no filename has been set. - */ - virtual FbxString GetFileName(); - - //! Get the status object containing the success or failure state. - FbxStatus& GetStatus() { return mStatus; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - - int DetectReaderFileFormat(const char *pFileName); - int DetectWriterFileFormat(const char *pFileName); - - FbxStatus mStatus; - FbxString mFilename; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_BASE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h deleted file mode 100755 index fac8501..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiopluginregistry.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiopluginregistry.h -#ifndef _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ -#define _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ - -#include - -#include -#include - -#include - -/** \brief This class serves as the registrar for file formats. - * A file format must be registered when it is used by the FBX SDK. - * - * This class also lets you create and read formats other than FBX SDK native formats. - * Users of FBX SDK can write their own plug-ins to read or write arbitrary file formats. - * Once their plug-ins are registered in this class, FBX SDK is able to read or write - * these file formats. - * - * Each FbxManager has a unique FbxIOPluginRegistry. To get an instance of this class: - * \code - * FbxIOPluginRegistry* registry = manager->GetIOPluginRegistry(); - * \endcode - * \see FbxManager::GetIOPluginRegistry() - */ -class FBXSDK_DLL FbxIOPluginRegistry -{ -public: - - /** Constructor. - */ - FbxIOPluginRegistry(); - - /** Destructor. - */ - virtual ~FbxIOPluginRegistry(); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Reader from a plug-in path. - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Reader. - * \param pCreateF The function that creates the Reader to be registered. - * \param pInfoF The function that provides information about the Reader file format, such as the file extension and description. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Readers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Reader. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterReader(FbxReader::CreateFuncType pCreateF, - FbxReader::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - -#ifndef FBXSDK_ENV_WINSTORE - /** Registers a Writer from a plug-in path - * \param pPluginPath The plug-in path. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(const char* pPluginPath, - int& pFirstPluginID, - int& pRegisteredCount, - bool pOverride = false); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Registers a Writer. - * \param pCreateF The function that creates the Writer to be registered. - * \param pInfoF The function that provides information about the Writer file format, such as the file extension, description and version. - * \param pFirstPluginID Contains the ID of the first plug-in found. - * \param pRegisteredCount Contains the number of registered Writers. - * \param pIOSettingsFillerF The function that fills the IO settings for the Writer. - * \param pOverride Override any existing writer that is using the same extension. - */ - void RegisterWriter(FbxWriter::CreateFuncType pCreateF, - FbxWriter::GetInfoFuncType pInfoF, - int& pFirstPluginID, - int& pRegisteredCount, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, - bool pOverride = false); - - /** Creates a Reader. - * \param pManager The SDK Manager where the Reader is created. - * \param pImporter The importer that holds the created Reader. - * \param pPluginID The Reader ID. - */ - FbxReader* CreateReader(FbxManager& pManager, - FbxImporter& pImporter, - int pPluginID) const; - - /** Creates a Writer. - * \param pManager The SDK Manager where the Writer is created. - * \param pExporter The exporter that holds the created Writer. - * \param pPluginID The Writer ID. - */ - FbxWriter* CreateWriter(FbxManager& pManager, - FbxExporter& pExporter, - int pPluginID) const; - - /** Searches for the Reader ID by the file extension. - * \param pExt The file extension. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByExtension(const char* pExt) const; - - /** Searches for the Writer ID by the file extension. - * \param pExt The file extension. - * \return The Writer ID if found, if not found, returns -1 - */ - int FindWriterIDByExtension(const char* pExt) const; - - /** Searches for the Reader ID by the file format description. - * \param pDesc The file format description. - * \return The Reader ID if found, if not found, returns -1 - */ - int FindReaderIDByDescription(const char* pDesc) const; - - /** Searches for the Writer ID by the file format description. - * \param pDesc The file format description. - * \return The Writer ID if found, if not found, returns -1. - */ - int FindWriterIDByDescription(const char* pDesc) const; - - /** Verifies if the file format of the Reader is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, return \c false otherwise.. - */ - bool ReaderIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Writer is FBX. - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, return \c false otherwise. - */ - bool WriterIsFBX(int pFileFormat) const; - - /** Verifies if the file format of the Reader is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Reader is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool ReaderIsGenuine(int pFileFormat) const; - - /** Verifies if the file format of the Writer is genuine (internal). - * \param pFileFormat The file format identifier. - * \return \c True if the file format of the Writer is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. - */ - bool WriterIsGenuine(int pFileFormat) const; - - /** Returns the number of file formats that can be imported. - * \return The number of importable formats. - */ - int GetReaderFormatCount() const; - - /** Returns the number of file formats that can be exported. - * \return The number of exportable formats. - * \remarks Multiple identifiers for the same format count as - * different file formats. For example, eFBX_BINARY, eFBX_ASCII and eFBX_ENCRYPTED - * are counted as three separate file formats. - */ - int GetWriterFormatCount() const; - - /** Returns the description of an importable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetReaderFormatDescription(int pFileFormat) const; - - /** Returns the description of an exportable file format. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the description. - */ - const char* GetWriterFormatDescription(int pFileFormat) const; - - /** Returns an importable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetReaderFormatExtension(int pFileFormat) const; - - /** Returns an exportable file format's file extension. - * \param pFileFormat The file format identifier. - * \return A pointer to the character representation of the file extension. - */ - const char* GetWriterFormatExtension(int pFileFormat) const; - - /** Returns a list of the writable file format versions. - * \param pFileFormat The file format identifier. - * \return A pointer to a list of user-readable strings that represent the versions. - */ - char const* const* GetWritableVersions(int pFileFormat) const; - - /** Detects the import (reader) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectReaderFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Detects the export (writer) file format specified for the file. - * \param pFileName The file whose file format is to be determined. - * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. - * \return \c True if the file has been determined successfully, - * returns \c false otherwise. - * \remarks This function attempts to detect the specified file's file format based on the file extension and, - * in some cases, its content. This function may not be able to determine all file formats. - * Use this function as a helper before calling \c SetFileFormat(). - * \note The file must be unlocked (already open) for this function to succeed. - */ - bool DetectWriterFileFormat(const char* pFileName, int& pFileFormat) const; - - /** Returns the file format of the native Reader. - * \return The ID of the native Reader's file format. - */ - int GetNativeReaderFormat(); - - /** Returns the file format of the native Writer. - * \return The ID of the native Writer's file format. - */ - int GetNativeWriterFormat(); - - /** Fills the IO Settings for all registered readers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForReadersRegistered(FbxIOSettings & pIOS); - - /** Fills the IO Settings for all registered writers. - * \param pIOS The IO settings to be filled. - */ - void FillIOSettingsForWritersRegistered(FbxIOSettings & pIOS); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void RegisterInternalIOPlugins(); - - struct ReaderPluginEntry - { - ReaderPluginEntry(const char* pExtension, const char* pDescription, FbxReader::CreateFuncType pCreatorFunction, int pBaseID, - FbxReader::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - FbxReader::CreateFuncType mCreatorFunction; - FbxReader::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - struct WriterPluginEntry - { - WriterPluginEntry(const char* pExtension, const char* pDescription, char const* const* pVersions, FbxWriter::CreateFuncType pCreatorFunction, int pBaseID, - FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); - - const char* mExtension; - const char* mDescription; - char const* const* mVersions; - FbxWriter::CreateFuncType mCreatorFunction; - FbxWriter::IOSettingsFillerFuncType mIOSettingsFillerFunction; - int mBaseID; - bool mIsFBX; - bool mIsInternalPlugin; - }; - - FbxArray mReaders; - FbxArray mWriters; - int mNativeReaderFormat; - int mNativeWriterFormat; - bool mInternalPluginMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettings.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettings.h deleted file mode 100755 index 304c18b..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettings.h +++ /dev/null @@ -1,584 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettings.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_H_ - -#include - -#include -#include - -#include - -//Undefine the macro mkdir, since it conflict with function mkdir in Qt\4.2.3\src\corelib\io\qdir.h -#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir) - #undef mkdir -#endif - -#define IOSVisible true -#define IOSHidden false - -#define IOSSavable true -#define IOSNotSavable false - -#define IOSEnabled true -#define IOSDisabled false - -#define IOSBinary 0 -#define IOSASCII 1 - -class FbxManager; -class FbxIOSettings; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -class FbxIOPropInfo -{ -public: - FbxIOPropInfo(); - ~FbxIOPropInfo(); - - void* UIWidget; // UI widget for showing the property - void* cbValueChanged; // call back when value changed - void* cbDirty; // call back when value changed - FbxStringList labels; // list of labels in many languages -}; - -class FBXSDK_DLL FbxIOInfo -{ -public: - enum EImpExp {eImport, eExport}; - - FbxIOInfo(); - - void Reset(EImpExp pImpExp); - void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0); - FbxTime::EMode GetTimeMode(){ return mTimeMode; } - FbxTime GetFramePeriod(); - void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false); - FbxObject* GetASFScene(){ return mASFScene; } - void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;} - void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;} - -private: - FbxTime::EMode mTimeMode; - FbxObject* mASFScene; - EImpExp mImpExp; - FbxIOSettings* ios; -}; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -/** FbxIOSettings is a collection of properties, arranged as a tree, that - * can be used by FBX file readers and writers to represent import and export - * options. - * It is primarily used by FBX importers (FbxImporter) and FBX exporter (FbxExporter) - * when reading or writing data from or to a disk. - * The FBX plugins of some Autodesk products expose a UI representing the content of those options - * to let users see and choose options when an import or export operation is about to be done. - * The tree of options is extensible. - * - * Options can be saved or loaded from an XML file using the functions: - * ReadXMLFile(), WriteXMLFile(), WriteXmlPropToFile(). This functionality can be useful - * for plugins that use preset files. - * - * An instance of FbxIOSettings must be created to be used before an import/export operation. - * When a new FbxIOSettings instance is created, all options are created with default values. - * The new instance of FbxIOSettings can be passed to the FbxManager, - * this way that instance will be used by all import/export operations. - * - * Ex: to set an instance of FbxIOSettings to the FbxManager - * - * \code - * // First create a new instance of FbxIOSettings - * FbxIOSettings * ios = FbxIOSettings::Create((FbxManager *) mManager, IOSROOT); - * // then set the FbxManager - * mManager->SetIOSettings(ios); - * \endcode - * - * It's also possible for a developer to create another instance - * of FbxIOSettings, set particular options and use it for import/export operation. - * - * Ex: to set an instance of FbxIOSettings to a FbxImporter/FbxExporter - * \code - * mImporter->SetIOSettings(ios); / mExporter->SetIOSettings(ios); - * \endcode - * - * A schematic view of the FbxIOSettings tree : - * - * \verbatim - - OPTION_GROUP_ROOT (IOSROOT) - | - | - ________________________________________ - | | - -OPTION_GROUP_EXPORT (IOSN_EXPORT) -OPTION_GROUP_IMPORT (IOSN_IMPORT) - | | - -OPTION_GROUP_A -OPTION_GROUP_A - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_B -OPTION_GROUP_B - | | | | - | -OPTION_GROUP_A | -OPTION_GROUP_A - | | | | | | - | | -OPTION_A | | -OPTION_A - | | -OPTION_B | | -OPTION_B - | | | | - | -OPTION_GROUP_B | -OPTION_GROUP_B - | | | | - | -OPTION_A | -OPTION_A - | -OPTION_B | -OPTION_B - | | - -OPTION_GROUP_C -OPTION_GROUP_C - | | - -OPTION_A -OPTION_A - - \endverbatim - * - * Any group of options can contain sub options, or group of sub options. - * To access an option value, we must pass the full path to the Get/Set functions - * Ex: - * \code - * ios->GetBoolProp("Import|IncludeGrp|Animation", true); // the root node name is not required - * \endcode - * - * All options path are defined in the file kfbxiosettingspath.h to ease the access of any options. - * Then "Import|IncludeGrp|Animation" == IMP_ANIMATION since IMP_ANIMATION is defined in kfbxiosettingspath.h - * All options defined path start with "IMP_" for import branch or "EXP_" for export branch. - * - * We strongly encourage to use the defined path in kfbxiosettingspath.h, this way if the parent group of an option is changed - * the change occur only in kfbxiosettingspath.h not in the code elsewhere. - * - * Ex: to get the boolean import "Animation" option - * \code - * bool anim = ios->GetBoolProp(IMP_ANIMATION, true); // will return true if not found, since we pass true as second param - * \endcode - * - * Ex: to set the boolean import "Animation" option to false - * \code - * ios->SetBoolProp(IMP_ANIMATION, false); - * \endcode - * - * Ex: to create a new option group under the "Import" branch - * \code - * // get the parent "Import" property - * FbxProperty import_Group = ios->GetProperty( IOSN_IMPORT ); // IOSN_IMPORT is defined as "Import" in kfbxiosettingspath.h - * if(import_Group.IsValid()) // check if we have found the IOSN_IMPORT parent option - * { - * // add a new group of options "myOptionGroup" - * FbxProperty myOptionGrp = ios->AddPropertyGroup(import_Group, "myOptionGroup", FbxStringDT, "My Option Group UI Label"); - * } - * \endcode - * - * Ex: to create a new boolean option under the "myOptionGroup" - * \code - * FbxProperty myOptionGrp = ios->GetProperty( "Import|myOptionGroup" ); // can also use IOSN_IMPORT|"myOptionGroup" - * if(myOptionGrp.IsValid()) // check if we have found the "myOptionGroup" - * { - * bool defaultValue = true; - * FbxProperty myOption = ios->AddProperty(myOptionGrp, "myOptionName", FbxBoolDT, "My Option UI label" , &defaultValue, eFbxBool); - * } - * \endcode - * - * Ex: to set some flags to myOption - * \code - * FbxProperty myOption = ios->GetProperty( "Import|myOptionGroup|myOptionName" ); - * if(myOption.IsValid()) - * { - * myOPtion.ModifyFlag(FbxPropertyFlags::eUIHidden, true); // to make that option not visible to the UI - * myOPtion.ModifyFlag(FbxPropertyFlags::eNotSavable, true); // to avoid the read/save of that option in XML file - * } - * \endcode - */ -class FBXSDK_DLL FbxIOSettings : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxIOSettings, FbxObject); - -public: - //! Supported languages enumeration list - enum ELanguage - { - eENU, //!< English - United States - eDEU, //!< German - Germany - eFRA, //!< French - France - eJPN, //!< Japanese - Japan - eKOR, //!< Korean(Extended Wansung) - Korea - eCHS, //!< Chinese - PRC - ePTB, //!< Portuguese - Brasil - eLanguageCount //!< Total language count - }; - - /** Add a property group under the root prop to be a direct child of IOSROOT - * \param pName - * \param pDataType - * \param pLabel - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); - - /** Add a property group under another parent property - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - */ - FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, bool pVisible = true, - bool pSavable = true, bool pEnabled = true ); - - /** Add a property under another parent property with a value to set and a min max values - * \param pParentProperty - * \param pName - * \param pDataType - * \param pLabel (optional, used by the UI as widget label) - * \param pValue - * \param pMinValue - * \param pMaxValue - * \param pVisible (used by the UI to show or not that property) - * \param pSavable (to enable a read & write to an XML file) - * \param pEnabled (used by the widget UI to show enabled or disabled) - * \return a new FbxProperty created - * \remarks Normally used with numeric properties Ex: integer, float, double, etc. - */ - FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), - const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL, - bool pVisible = true, bool pSavable = true, bool pEnabled = true ); - - - /** Get a property using the full path in the tree ex: "Export|IncludeGrp|Animation" - * \param pName - * \return a FbxProperty found - * \remarks We strongly encourage to use the defined path in kfbxiosettingspath.h - * ex: EXP_ANIMATION == "Export|IncludeGrp|Animation" - */ - FbxProperty GetProperty(const char* pName) const; - - /** Get a property using a short path found under the parent property. - * \param pParentProperty - * \param pName - * \return a FbxProperty found - * \remarks This is a faster way to access a property when the parent is known - */ - FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const; - - /** Get a bool property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return true or false - */ - bool GetBoolProp(const char* pName, bool pDefValue) const; - - /** set a bool property value using the full path - * \param pName - * \param pValue - */ - void SetBoolProp(const char* pName, bool pValue); - - /** Get a double property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a double - */ - double GetDoubleProp(const char* pName, double pDefValue) const; - - /** Set a double property using the full path - * \param pName - * \param pValue - */ - void SetDoubleProp(const char* pName, double pValue); - - /** Get a int property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetIntProp(const char* pName, int pDefValue) const; - - /** Set a int property value using the full path - * \param pName - * \param pValue - */ - void SetIntProp(const char* pName, int pValue); - - /** Get a FbxTime property value using the full path - * \param pName - * \param pDefValue Value returned if the property is not found - */ - FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const; - - /** Set a FbxTime property value using the full path - * \param pName - * \param pValue - * \return a FbxTime - */ - void SetTimeProp(const char* pName, FbxTime pValue); - - /** \name Enum Properties - * An enum property is a list of FbxString and integer pairs. - * A current index value is available to get the selected pair - * of FbxString+integer - * - * Ex: Content of an enum property - * \code - * 0 -> (14, "Bird") - * 1 -> (17, "Horse") - * 2 -> (93, "Cat") - * 3 -> (45, "Dog") - * \endcode - * - * If current index is 2: the current int value is 93, - * and the current FbxString value is "Cat" - */ - - //@{ - - /** Get the FbxString at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a FbxString - */ - FbxString GetEnumProp(const char* pName, FbxString pDefValue) const; - - /** Get the integer at current index of an enum property using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return a int - */ - int GetEnumProp(const char* pName, int pDefValue) const; - - /** Get the index of a FbxString from the enum property using the full path. - * \param pName - * \param pValue Return -1 if the FbxString is not found - * \return a int - */ - int GetEnumIndex(const char* pName, FbxString pValue) const; - - /** Set the current index using an existing FbxString of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the FbxString is not found - */ - void SetEnumProp(const char* pName, FbxString pValue); - - /** Set the current index of an enum property using the full path. - * \param pName - * \param pValue - * \remarks The current index will not change if the pValue is out of bound - */ - void SetEnumProp(const char* pName, int pValue); - - /** Remove a pair of FbxString+integer from an enum property. - * \param pName - * \param pValue The FbxString to find - * \remarks The first FbxString found from 0 index will be removed only even - * if the same FbxString exist in other index, if the current index was on the FbxString found - * the current index will be set to 0 - */ - void RemoveEnumPropValue(const char* pName, FbxString pValue); - - /** Empty all the FbxString+integer pair of the enum property - * \param pName - */ - void EmptyEnumProp(const char* pName); - - /** Check if a FbxString is present in the enum property. - * \param &pProp a ref to an enum prop - * \param &enumString ref to a FbxString to find - * \return \c true if found, \c false otherwise. - */ - bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const; - - /** Get the enum index of a FbxString - * \param &pProp a ref to an enum prop - * \param &enumString ref to string to find - * \param pNoCase To match case sensitive or not - * \return the index found or -1 if not found - */ - int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const; - //@} - - /** Set a specific flag value on a property using the full path - * \param pName - * \param propFlag - * \param pValue - * \return Always true - */ - bool SetFlag(const char* pName, FbxPropertyFlags::EFlags propFlag, bool pValue); - - /** Get a FbxString property value using the full path. - * \param pName - * \param pDefValue Value returned if the property is not found - * \return The FbxString value - */ - FbxString GetStringProp(const char* pName, FbxString pDefValue) const; - - /** Set a FbxString property value using the full path - * \param pName - * \param pValue - */ - void SetStringProp(const char* pName, FbxString pValue); - - /** \name XML Serialization Functions */ - //@{ - - /** Load the settings values from an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - */ - virtual bool ReadXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param path The path of the XML file. - * \return \c True on success, \c false otherwise. - * \remarks The flag of the property must be FbxPropertyFlags::eNotSavable == false - */ - virtual bool WriteXMLFile(const FbxString& path); - - /** Write the settings values to an XML file. - * \param pFullPath The path of the XML file. - * \param propPath a prop Path - * \return \c True on success, \c false otherwise. - * \remarks To save only a branch of the settings ex: Import branch only - */ - bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIOPropInfo* GetPropInfo(FbxProperty &pProp); - - ELanguage UILanguage; - FbxString GetLanguageLabel(FbxProperty& pProp); - void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel); - - FbxIOInfo impInfo; - FbxIOInfo expInfo; - - static FbxString GetUserMyDocumentDir(); - void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible); - - // Read an XML file from MyDocument dir - bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename); - - // Write property branch to an XML file in MyDocument dir - bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath); - - static const char* GetFileMergeDescription(int pIndex); - - enum ELoadMode - { - eCreate, /*!< Add to scene(duplicate the ones with the same name) */ - eMerge, /*!< Add to scene and update animation */ - eExclusiveMerge /*!< Update animation */ - }; - - - enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample }; - enum EObjectDerivation { eByLayer, eByEntity, eByBlock }; - - enum ESysUnits - { - eUnitsUser, - eUnitsInches, - eUnitsFeet, - eUnitYards, - eUnitsMiles, - eUnitsMillimeters, - eUnitsCentimeters, - eUnitsMeters, - eUnitsKilometers - }; - - enum ESysFrameRate - { - eFrameRateUser, - eFrameRateHours, - eFrameRateMinutes, - eFrameRateSeconds, - eFrameRateMilliseconds, - eFrameRateGames15, - eFrameRateFilm24, - eFrameRatePAL25, - eFrameRateNTSC30, - eFrameRateShowScan48, - eFrameRatePALField50, - eFrameRateNTSCField60 - }; - -// Max - enum EEnveloppeSystem - { - eSkinModifier, - ePhysic, - eBonePro, - eEnveloppeSystemCount - }; - -// Max - enum EGeometryType - { - eTriangle, - eSimplifiedPoly, - ePolygon, - eNurbs, - ePatch, - eGeometryTypeCount - }; - -// Maya IK type - enum EIKType - { - eNone, - eFBIK, - eHumanIK - }; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - void AddNewPropInfo(FbxProperty& pProp); - void DeletePropInfo(FbxProperty& pProp); - void DeleteAllPropInfo(FbxProperty& pProp); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h deleted file mode 100755 index 8a2ad37..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxiosettingspath.h +++ /dev/null @@ -1,940 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxiosettingspath.h -#ifndef _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ -#define _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ - -#include - -#include - -#define KS_BS FbxString("\\") - -#define KS_IMPORT FbxString("\\import") -#define KS_EXPORT FbxString("\\export") - -#define KS_FBX FbxString("\\FBX") // must be upper case -#define KS_PRESETS FbxString("\\Presets") -#define KS_LOG FbxString("\\Logs") -#define KS_FBXPRESETS KS_FBX + KS_PRESETS -#define KS_FBXLOGS KS_FBX + KS_LOG - -#define KS_MAYA FbxString("\\maya") -#define KS_3DSMAX FbxString("\\3dsmax") -#define KS_3DSMAX_VIZ KS_3DSMAX // use same name in "My Document" directory -#define KS_3DSMAX_DESIGN FbxString("\\3dsMaxDesign") - -#define KS_VERSION FbxString(FBXSDK_VERSION_STRING) - -#define FBXSDK_PLUGINS_REGISTRY_PATH "SOFTWARE\\Autodesk\\FBX_Plugins_" FBXSDK_VERSION_STRING - -#define IMP_FBX_PRESET_EXT "fbximportpreset" -#define EXP_FBX_PRESET_EXT "fbxexportpreset" - -#define M_E_FILENAME "Autodesk Media & Entertainment." -#define ARCH_FILENAME "Autodesk Architectural (Revit)." -#define MOBU_FILENAME "Autodesk MotionBuilder." -#define USERDEFINED_FILENAME "User defined." - -#define IMP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_IMPORT -#define EXP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_EXPORT - -#define LOG_VERSION_DIR KS_FBXLOGS + KS_BS + KS_VERSION - -#define MAX_LOG_VERSION_DIR KS_3DSMAX + LOG_VERSION_DIR -#define MAX_DESIGN_LOG_VERSION_DIR KS_3DSMAX_DESIGN + LOG_VERSION_DIR - -#define PRESET_VERSION_DIR KS_FBXPRESETS + KS_BS + KS_VERSION - -#define FN_LOCALIZATION_PREFIX "localization_" -#define FN_LOCALIZATION_EXT ".xlf" - -#define FN_LANGUAGE "lang.dat" -#define LANGUAGE_PATH KS_FBXPRESETS + KS_BS + KS_VERSION + KS_BS + FN_LANGUAGE - -// these defines are used for hierarchical properties names -#define IOSROOT "IOSRoot" - -#define IOSN_EXPORT "Export" -#define IOSN_IMPORT "Import" - -#define IOSN_PLUGIN_GRP "PlugInGrp" - -#define IOSN_PLUGIN_UI_WIDTH "PlugInUIWidth" -#define IOSN_PLUGIN_UI_HEIGHT "PlugInUIHeight" -#define IOSN_PLUGIN_VERSIONS_URL "PluginVersionsURL" -#define IOSN_PI_VERSION "PIVersion" - - -#define IOSN_PRESET_SELECTED "PresetSelected" - -#define IOSN_PRESETS_GRP "PresetsGrp" -#define IOSN_STATISTICS_GRP "StatisticsGrp" -#define IOSN_UNITS_GRP "UnitsGrp" -#define IOSN_INCLUDE_GRP "IncludeGrp" -#define IOSN_ADV_OPT_GRP "AdvOptGrp" -#define IOSN_AXISCONV_GRP "AxisConvGrp" -#define IOSN_CAMERA_GRP "CameraGrp" -#define IOSN_LIGHT_GRP "LightGrp" -#define IOSN_EXTRA_GRP "ExtraGrp" -#define IOSN_CONSTRAINTS_GRP "ConstraintsGrp" -#define IOSN_INPUTCONNECTIONS_GRP "InputConnectionsGrp" -#define IOSN_INFORMATION_GRP "InformationGrp" - -#define IOSN_UP_AXIS "UpAxis" -#define IOSN_UP_AXIS_MAX "UpAxisMax" -#define IOSN_ZUPROTATION_MAX "ZUProtation_max" -#define IOSN_AXISCONVERSION "AxisConversion" -#define IOSN_AUTO_AXIS "AutoAxis" -#define IOSN_FILE_UP_AXIS "FileUpAxis" - -#define IOSN_PRESETS "Presets" -#define IOSN_STATISTICS "Statistics" -#define IOSN_UNITS_SCALE "UnitsScale" -#define IOSN_TOTAL_UNITS_SCALE_TB "TotalUnitsScale" - -#define IOSN_SCALECONVERSION "ScaleConversion" -#define IOSN_MASTERSCALE "MasterScale" - -#define IOSN_DYN_SCALE_CONVERSION "DynamicScaleConversion" -#define IOSN_UNITSELECTOR "UnitsSelector" - -#define IOSN_AUDIO "Audio" -#define IOSN_ANIMATION "Animation" -#define IOSN_GEOMETRY "Geometry" -#define IOSN_DEFORMATION "Deformation" -#define IOSN_MARKERS "Markers" - -#define IOSN_CHARACTER "Character" -#define IOSN_CHARACTER_AS_MAYA_HIK "CharacterAsMayaHIK" -#define IOSN_CHARACTER_TYPE "CharacterType" -#define IOSN_CHARACTER_TYPE_DESC "CharacterTypeDesc" - -#define IOSN_SETLOCKEDATTRIB "LockedAttribute" -#define IOSN_TRIANGULATE "Triangulate" - -#define IOSN_MRCUSTOMATTRIBUTES "MRCustomAttributes" -#define IOSN_MESHPRIMITIVE "MeshPrimitive" -#define IOSN_MESHTRIANGLE "MeshTriangle" -#define IOSN_MESHPOLY "MeshPoly" -#define IOSN_NURB "Nurb" -#define IOSN_PATCH "Patch" -#define IOSN_BIP2FBX "Bip2Fbx" -#define IOSN_ASCIIFBX "AsciiFbx" - -#define IOSN_TAKE "Take" - -#define IOSN_GEOMETRYMESHPRIMITIVEAS "GeometryMeshPrimitiveAs" -#define IOSN_GEOMETRYMESHTRIANGLEAS "GeometryMeshTriangleAs" -#define IOSN_GEOMETRYMESHPOLYAS "GeometryMeshPolyAs" -#define IOSN_GEOMETRYNURBSAS "GeometryNurbsAs" - -#define IOSN_GEOMETRYNURBSSURFACEAS "GeometryNurbsSurfaceAs" -#define IOSN_GEOMETRYPATCHAS "GeometryPatchAs" - -#define IOSN_TANGENTS_BINORMALS "TangentsandBinormals" -#define IOSN_SMOOTH_MESH "SmoothMesh" -#define IOSN_SELECTION_SET "SelectionSet" -#define IOSN_ANIMATIONONLY "AnimationOnly" -#define IOSN_SELECTIONONLY "SelectionOnly" - -#define IOSN_BONE "Bone" -#define IOSN_BONEWIDTHHEIGHTLOCK "BoneWidthHeightLock" -#define IOSN_BONEASDUMMY "BoneAsDummy" -#define IOSN_BONEMAX4BONEWIDTH "Max4BoneWidth" -#define IOSN_BONEMAX4BONEHEIGHT "Max4BoneHeight" -#define IOSN_BONEMAX4BONETAPER "Max4BoneTaper" - -#define IOSN_REMOVE_SINGLE_KEY "RemoveSingleKey" -#define IOSN_CURVE_FILTER "CurveFilter" -#define IOSN_CONSTRAINT "Constraint" -#define IOSN_UI "UI" -#define IOSN_SHOW_UI_MODE "ShowUIMode" -#define IOSN_SHOW_WARNINGS_MANAGER "ShowWarningsManager" -#define IOSN_GENERATE_LOG_DATA "GenerateLogData" - -#define IOSN_PERF_GRP "Performance" -#define IOSN_REMOVEBADPOLYSFROMMESH "RemoveBadPolysFromMesh" -#define IOSN_META_DATA "MetaData" - -#define IOSN_CACHE_GRP "Cache" -#define IOSN_CACHE_SIZE "CacheSize" - -#define IOSN_MERGE_MODE "MergeMode" -#define IOSN_MERGE_MODE_DESCRIPTION "MergeModeDescription" -#define IOSN_ONE_CLICK_MERGE "OneClickMerge" -#define IOSN_ONE_CLICK_MERGE_TEXTURE "OneClickMergeTexture" - -#define IOSN_SAMPLINGPANEL "SamplingPanel" - -#define IOSN_FILE_FORMAT "FileFormat" -#define IOSN_FBX "Fbx" -#define IOSN_DXF "Dxf" -#define IOSN_OBJ "Obj" -#define IOSN_3DS "Max_3ds" // can't start by a number for xml node name -#define IOSN_COLLADA "Collada" - -#define IOSN_MOTION_BASE "Motion_Base" // for commond Motion Readers/Writers stream options -#define IOSN_BIOVISION_BVH "Biovision_BVH" -#define IOSN_MOTIONANALYSIS_HTR "MotionAnalysis_HTR" -#define IOSN_MOTIONANALYSIS_TRC "MotionAnalysis_TRC" -#define IOSN_ACCLAIM_ASF "Acclaim_ASF" -#define IOSN_ACCLAIM_AMC "Acclaim_AMC" -#define IOSN_VICON_C3D "Vicon_C3D" - -#define IOSN_SKINS "Skins" -#define IOSN_POINTCACHE "PointCache" -#define IOSN_QUATERNION "Quaternion" -#define IOSN_NAMETAKE "UseSceneName" - -#define IOSN_SHAPE "Shape" -#define IOSN_LIGHT "Light" -#define IOSN_LIGHTATTENUATION "LightAttenuation" -#define IOSN_CAMERA "Camera" -#define IOSN_VIEW_CUBE "ViewCube" - -#define IOSN_BINDPOSE "BindPose" - -#define IOSN_EMBEDTEXTURE_GRP "EmbedTextureGrp" -#define IOSN_EMBEDTEXTURE "EmbedTexture" -#define IOSN_EMBEDDED_FOLDER "ExtractFolder" -#define IOSN_CONVERTTOTIFF "Convert_2Tiff" - -#define IOSN_UNLOCK_NORMALS "UnlockNormals" -#define IOSN_CREASE "Crease" -#define IOSN_FINESTSUBDIVLEVEL "FinestSubdivLevel" - -#define IOSN_BAKEANIMATIONLAYERS "BakeAnimationLayers" -#define IOSN_BAKECOMPLEXANIMATION "BakeComplexAnimation" - -#define IOSN_BAKEFRAMESTART "BakeFrameStart" -#define IOSN_BAKEFRAMEEND "BakeFrameEnd" -#define IOSN_BAKEFRAMESTEP "BakeFrameStep" -#define IOSN_BAKEFRAMESTARTNORESET "BakeFrameStartNoReset" -#define IOSN_BAKEFRAMEENDNORESET "BakeFrameEndNoReset" -#define IOSN_BAKEFRAMESTEPNORESET "BakeFrameStepNoReset" - -#define IOSN_USEMATRIXFROMPOSE "UseMatrixFromPose" -#define IOSN_NULLSTOPIVOT "NullsToPivot" -#define IOSN_PIVOTTONULLS "PivotToNulls" - -#define IOSN_GEOMNORMALPERPOLY "GeomNormalPerPoly" -#define IOSN_MAXBONEASBONE "MaxBoneAsBone" -#define IOSN_MAXNURBSSTEP "MaxNurbsStep" -#define IOSN_PROTECTDRIVENKEYS "ProtectDrivenKeys" -#define IOSN_DEFORMNULLSASJOINTS "DeformNullsAsJoints" - -#define IOSN_ENVIRONMENT "Environment" - -// Note this will use IOSN_SAMPLINGRATE -#define IOSN_SAMPLINGRATESELECTOR "SamplingRateSelector" - -#define IOSN_SAMPLINGRATE "CurveFilterSamplingRate" -#define IOSN_APPLYCSTKEYRED "CurveFilterApplyCstKeyRed" -#define IOSN_CSTKEYREDTPREC "CurveFilterCstKeyRedTPrec" -#define IOSN_CSTKEYREDRPREC "CurveFilterCstKeyRedRPrec" -#define IOSN_CSTKEYREDSPREC "CurveFilterCstKeyRedSPrec" -#define IOSN_CSTKEYREDOPREC "CurveFilterCstKeyRedOPrec" -#define IOSN_APPLYKEYREDUCE "CurveFilterApplyKeyReduce" -#define IOSN_KEYREDUCEPREC "CurveFilterKeyReducePrec" -#define IOSN_APPLYKEYSONFRM "CurveFilterApplyKeysOnFrm" -#define IOSN_APPLYKEYSYNC "CurveFilterApplyKeySync" -#define IOSN_APPLYUNROLL "CurveFilterApplyUnroll" -#define IOSN_UNROLLPREC "CurveFilterUnrollPrec" -#define IOSN_UNROLLPATH "CurveFilterUnrollPath" -#define IOSN_UNROLLFORCEAUTO "CurveFilterUnrollForceAuto" - -#define IOSN_AUTOTANGENTSONLY "AutoTangentsOnly" - -#define IOSN_SMOOTHING_GROUPS "SmoothingGroups" -#define IOSN_HARDEDGES "HardEdges" -#define IOSN_EXP_HARDEDGES "expHardEdges" -#define IOSN_BLINDDATA "BlindData" -#define IOSN_INPUTCONNECTIONS "InputConnections" -#define IOSN_INSTANCES "Instances" -#define IOSN_REFERENCES "References" -#define IOSN_CONTAINEROBJECTS "ContainerObjects" -#define IOSN_BYPASSRRSINHERITANCE "BypassRrsInheritance" -#define IOSN_FORCEWEIGHTNORMALIZE "ForceWeightNormalize" -#define IOSN_SHAPEANIMATION "ShapeAnimation" -#define IOSN_SMOOTHKEYASUSER "SmoothKeyAsUser" - -#define IOSN_SCALEFACTOR "ScaleFactor" -#define IOSN_AXISCONVERSIONMETHOD "AxisConversionMethod" -#define IOSN_UPAXIS "UpAxis" -#define IOSN_SELECTIONSETNAMEASPOINTCACHE "SelectionSetNameAsPointCache" - -#define IOSN_KEEPFRAMERATE "KeepFrameRate" -#define IOSN_ATTENUATIONASINTENSITYCURVE "AttenuationAsIntensityCurve" - -#define IOSN_RESAMPLE_ANIMATION_CURVES "ResampleAnimationCurves" - -#define IOSN_TIMELINE "TimeLine" -#define IOSN_TIMELINE_SPAN "TimeLineSpan" - -#define IOSN_BUTTON_WEB_UPDATE "WebUpdateButton" -#define IOSN_BUTTON_EDIT "EditButton" -#define IOSN_BUTTON_OK "OKButton" -#define IOSN_BUTTON_CANCEL "CancelButton" -#define IOSN_MENU_EDIT_PRESET "EditPresetMenu" -#define IOSN_MENU_SAVE_PRESET "SavePresetMenu" - -#define IOSN_UIL "UILIndex" -#define IOSN_PLUGIN_PRODUCT_FAMILY "PluginProductFamily" - -#define IOSN_PLUGIN_UI_XPOS "PlugInUIXpos" -#define IOSN_PLUGIN_UI_YPOS "PlugInUIYpos" - -#define IOSN_FBX_EXTENTIONS_SDK "FBXExtentionsSDK" -#define IOSN_FBX_EXTENTIONS_SDK_WARNING "FBXExtentionsSDKWarning" - -#define IOSN_COLLADA_FRAME_COUNT "FrameCount" -#define IOSN_COLLADA_START "Start" -#define IOSN_COLLADA_TAKE_NAME "TakeName" - -#define IOSN_COLLADA_TRIANGULATE "Triangulate" -#define IOSN_COLLADA_SINGLEMATRIX "SingleMatrix" -#define IOSN_COLLADA_FRAME_RATE "FrameRate" - -#define IOSN_DXF_TRIANGULATE "Triangulate" -#define IOSN_DXF_DEFORMATION "Deformation" - -#define IOSN_DXF_WELD_VERTICES "WeldVertices" -#define IOSN_DXF_OBJECT_DERIVATION "ObjectDerivation" -#define IOSN_DXF_REFERENCE_NODE "ReferenceNode" - -#define IOSN_OBJ_REFERENCE_NODE "ReferenceNode" -#define IOSN_OBJ_TRIANGULATE "Triangulate" -#define IOSN_OBJ_DEFORMATION "Deformation" - -#define IOSN_3DS_REFERENCENODE "ReferenceNode" -#define IOSN_3DS_TEXTURE "Texture" -#define IOSN_3DS_MATERIAL "Material" -#define IOSN_3DS_ANIMATION "Animation" -#define IOSN_3DS_MESH "Mesh" -#define IOSN_3DS_LIGHT "Light" -#define IOSN_3DS_CAMERA "Camera" -#define IOSN_3DS_AMBIENT_LIGHT "AmbientLight" -#define IOSN_3DS_RESCALING "Rescaling" -#define IOSN_3DS_FILTER "Filter" -#define IOSN_3DS_SMOOTHGROUP "Smoothgroup" -#define IOSN_3DS_TAKE_NAME "TakeName" -#define IOSN_3DS_TEXUVBYPOLY "TexuvbyPoly" - -// so far, these three are for 3dsMax plug-in only -#define IOSN_ZOOMEXTENTS "ZoomExtents" -#define IOSN_GLOBAL_AMBIENT_COLOR "GlobalAmbientColor" -#define IOSN_EDGE_ORIENTATION "PreserveEdgeOrientation" - -#define IOSN_VERSIONS_UI_ALIAS "VersionsUIAlias" -#define IOSN_VERSIONS_COMP_DESCRIPTIONS "VersionsCompDescriptions" - -// FBX specific -#define IOSN_MODEL_COUNT "Model_Count" -#define IOSN_DEVICE_COUNT "Device_Count" -#define IOSN_CHARACTER_COUNT "Character_Count" -#define IOSN_ACTOR_COUNT "Actor_Count" -#define IOSN_CONSTRAINT_COUNT "Constraint_Count" -#define IOSN_MEDIA_COUNT "Media_Count" -#define IOSN_TEMPLATE "Template" -#define IOSN_PIVOT "Pivot" -#define IOSN_GLOBAL_SETTINGS "Global_Settings" -#define IOSN_MERGE_LAYER_AND_TIMEWARP "Merge_Layer_and_Timewarp" -#define IOSN_GOBO "Gobo" -#define IOSN_LINK "Link" -#define IOSN_MATERIAL "Material" -#define IOSN_TEXTURE "Texture" -#define IOSN_MODEL "Model" -#define IOSN_EMBEDDED "EMBEDDED" -#define IOSN_PASSWORD "Password" -#define IOSN_PASSWORD_ENABLE "Password_Enable" -#define IOSN_CURRENT_TAKE_NAME "Current_Take_Name" -#define IOSN_COLLAPSE_EXTERNALS "COLLAPSE EXTERNALS" -#define IOSN_COMPRESS_ARRAYS "Compress_Arrays" -#define IOSN_COMPRESS_LEVEL "Compress_Level" -#define IOSN_COMPRESS_MINSIZE "Compress_Minsize" -#define IOSN_EMBEDDED_PROPERTIES_SKIP "Embedded_Skipped_Properties" -#define IOSN_EXPORT_FILE_VERSION "ExportFileVersion" -#define IOSN_SHOW_UI_WARNING "ShowUIWarning" -#define IOSN_ADD_MATERIAL_TO_EDIT "AddMaterialToEdit" -#define IOSN_ENABLE_TEX_DISPLAY "EnableTexDisplay" -#define IOSN_PREFERED_ENVELOPPE_SYSTEM "kImportPreferedEnveloppeSystem" -#define IOSN_FIRST_TIME_RUN_NOTICE "FirstTimeRunNotice" -#define IOSN_EXTRACT_EMBEDDED_DATA "ExtractEmbeddedData" - -// internal usage -#define IOSN_USETMPFILEPERIPHERAL "UseTmpFilePeripheral" -#define IOSN_CONSTRUCTIONHISTORY "ConstructionHistory" -#define IOSN_RELAXED_FBX_CHECK "RelaxedFbxCheck" -#define IOSN_KEEP_PRODUCER_CAM_SRCOBJ "KeepProducerCamSrcObj" - -//--------------------------- -// import defined path - -#define IMP_PRESETS IOSN_IMPORT "|" IOSN_PRESETS_GRP "|" IOSN_PRESETS -#define IMP_STATISTICS IOSN_IMPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS - - -#define IMP_STATISTICS_GRP IOSN_IMPORT "|" IOSN_STATISTICS_GRP -#define IMP_PRESETS_GRP IOSN_IMPORT "|" IOSN_PRESETS_GRP -#define IMP_PLUGIN_GRP IOSN_IMPORT "|" IOSN_PLUGIN_GRP -#define IMP_INCLUDE_GRP IOSN_IMPORT "|" IOSN_INCLUDE_GRP -#define IMP_ADV_OPT_GRP IOSN_IMPORT "|" IOSN_ADV_OPT_GRP -#define IMP_FBX_EXT_SDK_GRP IOSN_IMPORT "|" IOSN_FBX_EXTENTIONS_SDK -#define IMP_FIRST_TIME_RUN_NOTICE_GRP IOSN_IMPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define IMP_INFORMATION_GRP IOSN_IMPORT "|" IOSN_INFORMATION_GRP - -#define IMP_FIRST_TIME_RUN_NOTICE IMP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define IMP_GEOMETRY IMP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define IMP_AUDIO IMP_INCLUDE_GRP "|" IOSN_AUDIO -#define IMP_ANIMATION IMP_INCLUDE_GRP "|" IOSN_ANIMATION -#define IMP_SETLOCKEDATTRIB IMP_INCLUDE_GRP "|" IOSN_SETLOCKEDATTRIB - -#define IMP_MERGE_MODE IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE -#define IMP_MERGE_MODE_DESCRIPTION IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE_DESCRIPTION -#define IMP_ONE_CLICK_MERGE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE -#define IMP_ONE_CLICK_MERGE_TEXTURE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE_TEXTURE - -#define IMP_ADD_MATERIAL_TO_EDIT IMP_INCLUDE_GRP "|" IOSN_ADD_MATERIAL_TO_EDIT -#define IMP_ENABLE_TEX_DISPLAY IMP_INCLUDE_GRP "|" IOSN_ENABLE_TEX_DISPLAY -#define IMP_PREFERED_ENVELOPPE_SYSTEM IMP_INCLUDE_GRP "|" IOSN_PREFERED_ENVELOPPE_SYSTEM - -#define IMP_CAMERA_GRP IMP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define IMP_LIGHT_GRP IMP_INCLUDE_GRP "|" IOSN_LIGHT_GRP -#define IMP_EMBEDDED_GRP IMP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE -#define IMP_EXTRACT_FOLDER IMP_EMBEDDED_GRP "|" IOSN_EMBEDDED_FOLDER - -#define IMP_LIGHT IMP_LIGHT_GRP "|" IOSN_LIGHT -#define IMP_ENVIRONMENT IMP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define IMP_CAMERA IMP_CAMERA_GRP "|" IOSN_CAMERA -#define IMP_VIEW_CUBE IMP_INCLUDE_GRP "|" IOSN_VIEW_CUBE - -// so far, this one is for 3dsMax plug-in only -#define IMP_ZOOMEXTENTS IMP_INCLUDE_GRP "|" IOSN_ZOOMEXTENTS -#define IMP_GLOBAL_AMBIENT_COLOR IMP_LIGHT_GRP "|" IOSN_GLOBAL_AMBIENT_COLOR - -#define IMP_CURVEFILTERS IMP_ANIMATION "|" IOSN_CURVE_FILTER -#define IMP_SAMPLINGPANEL IMP_ANIMATION "|" IOSN_SAMPLINGPANEL - -#define IMP_DEFORMATION IMP_ANIMATION "|" IOSN_DEFORMATION -#define IMP_BONE IMP_ANIMATION "|" IOSN_BONE -#define IMP_ATTENUATIONASINTENSITYCURVE IMP_ANIMATION "|" IOSN_ATTENUATIONASINTENSITYCURVE - -#define IMP_EXTRA_GRP IMP_ANIMATION "|" IOSN_EXTRA_GRP - -#define IMP_TAKE IMP_EXTRA_GRP "|" IOSN_TAKE -#define IMP_KEEPFRAMERATE IMP_EXTRA_GRP "|" IOSN_KEEPFRAMERATE -#define IMP_TIMELINE IMP_EXTRA_GRP "|" IOSN_TIMELINE -#define IMP_TIMELINE_SPAN IMP_EXTRA_GRP "|" IOSN_TIMELINE_SPAN -#define IMP_BAKEANIMATIONLAYERS IMP_EXTRA_GRP "|" IOSN_BAKEANIMATIONLAYERS -#define IMP_MARKERS IMP_EXTRA_GRP "|" IOSN_MARKERS -#define IMP_QUATERNION IMP_EXTRA_GRP "|" IOSN_QUATERNION -#define IMP_PROTECTDRIVENKEYS IMP_EXTRA_GRP "|" IOSN_PROTECTDRIVENKEYS -#define IMP_DEFORMNULLSASJOINTS IMP_EXTRA_GRP "|" IOSN_DEFORMNULLSASJOINTS -#define IMP_NULLSTOPIVOT IMP_EXTRA_GRP "|" IOSN_NULLSTOPIVOT -#define IMP_POINTCACHE IMP_EXTRA_GRP "|" IOSN_POINTCACHE -#define IMP_SHAPEANIMATION IMP_EXTRA_GRP "|" IOSN_SHAPEANIMATION - -#define IMP_CONSTRAINTS_GRP IMP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define IMP_CONSTRAINT IMP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT - -#define IMP_CHARACTER IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER -#define IMP_CHARACTER_AS_MAYA_HIK IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_AS_MAYA_HIK -#define IMP_CHARACTER_TYPE IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_TYPE - - -#define IMP_SAMPLINGRATESELECTOR IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATESELECTOR -#define IMP_SAMPLINGRATE IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATE - -#define IMP_UNITS_GRP IMP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define IMP_AXISCONV_GRP IMP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define IMP_CACHE_GRP IMP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define IMP_UI IMP_ADV_OPT_GRP "|" IOSN_UI -#define IMP_FILEFORMAT IMP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define IMP_PERF_GRP IMP_ADV_OPT_GRP "|" IOSN_PERF_GRP - -#define IMP_REMOVEBADPOLYSFROMMESH IMP_PERF_GRP "|" IOSN_REMOVEBADPOLYSFROMMESH -#define IMP_META_DATA IMP_PERF_GRP "|" IOSN_META_DATA - -#define IMP_FBX_EXTENTIONS_SDK_WARNING IMP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING - -#define IMP_SCALECONVERSION IMP_UNITS_GRP "|" IOSN_SCALECONVERSION -#define IMP_UNITS_TB IMP_UNITS_GRP "|" IOSN_UNITS_TB -#define IMP_MASTERSCALE IMP_UNITS_GRP "|" IOSN_MASTERSCALE -#define IMP_UNITS_SCALE IMP_UNITS_GRP "|" IOSN_UNITS_SCALE - -#define IMP_DYN_SCALE_CONVERSION IMP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define IMP_UNITSELECTOR IMP_UNITS_GRP "|" IOSN_UNITSELECTOR -#define IMP_TOTAL_UNITS_SCALE_TB IMP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define IMP_SHOW_UI_MODE IMP_UI "|" IOSN_SHOW_UI_MODE -#define IMP_SHOW_UI_WARNING IMP_UI "|" IOSN_SHOW_UI_WARNING -#define IMP_SHOW_WARNINGS_MANAGER IMP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define IMP_GENERATE_LOG_DATA IMP_UI "|" IOSN_GENERATE_LOG_DATA -#define IMP_PLUGIN_VERSIONS_URL IMP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define IMP_DXF IMP_ADV_OPT_GRP "|" IOSN_DXF - -// note: IMP_FILEFORMAT group is not visible -#define IMP_FBX IMP_FILEFORMAT "|" IOSN_FBX -#define IMP_OBJ IMP_FILEFORMAT "|" IOSN_OBJ -#define IMP_3DS IMP_FILEFORMAT "|" IOSN_3DS - -#define IMP_MOTION_BASE IMP_FILEFORMAT "|" IOSN_MOTION_BASE -#define IMP_BIOVISION_BVH IMP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define IMP_MOTIONANALYSIS_HTR IMP_FILEFORMAT "|" IOSN_MOTIONANALYSIS_HTR -#define IMP_ACCLAIM_ASF IMP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define IMP_ACCLAIM_AMC IMP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - -#define IMP_UNLOCK_NORMALS IMP_GEOMETRY "|" IOSN_UNLOCK_NORMALS -#define IMP_CREASE IMP_GEOMETRY "|" IOSN_CREASE - -#define IMP_SMOOTHING_GROUPS IMP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define IMP_HARDEDGES IMP_GEOMETRY "|" IOSN_HARDEDGES -#define IMP_BLINDDATA IMP_GEOMETRY "|" IOSN_BLINDDATA - -#define IMP_BONE_WIDTHHEIGHTLOCK IMP_BONE "|" IOSN_BONEWIDTHHEIGHTLOCK -#define IMP_BONEASDUMMY IMP_BONE "|" IOSN_BONEASDUMMY -#define IMP_BONEMAX4BONEWIDTH IMP_BONE "|" IOSN_BONEMAX4BONEWIDTH -#define IMP_BONEMAX4BONEHEIGHT IMP_BONE "|" IOSN_BONEMAX4BONEHEIGHT -#define IMP_BONEMAX4BONETAPER IMP_BONE "|" IOSN_BONEMAX4BONETAPER - -#define IMP_SHAPE IMP_DEFORMATION "|" IOSN_SHAPE -#define IMP_SKINS IMP_DEFORMATION "|" IOSN_SKINS -#define IMP_USEMATRIXFROMPOSE IMP_DEFORMATION "|" IOSN_USEMATRIXFROMPOSE -#define IMP_FORCEWEIGHTNORMALIZE IMP_DEFORMATION "|" IOSN_FORCEWEIGHTNORMALIZE - - - -#define IMP_APPLYCSTKEYRED IMP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define IMP_CSTKEYREDTPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define IMP_CSTKEYREDRPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define IMP_CSTKEYREDSPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define IMP_CSTKEYREDOPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define IMP_AUTOTANGENTSONLY IMP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define IMP_APPLYKEYREDUCE IMP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define IMP_KEYREDUCEPREC IMP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define IMP_APPLYKEYSONFRM IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define IMP_APPLYKEYSYNC IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define IMP_APPLYUNROLL IMP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define IMP_UNROLLPREC IMP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define IMP_UNROLLPATH IMP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define IMP_UNROLLFORCEAUTO IMP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define IMP_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_UP_AXIS -#define IMP_UP_AXIS_MAX IMP_AXISCONV_GRP "|" IOSN_UP_AXIS_MAX -#define IMP_ZUPROTATION_MAX IMP_AXISCONV_GRP "|" IOSN_ZUPROTATION_MAX -#define IMP_AXISCONVERSION IMP_AXISCONV_GRP "|" IOSN_AXISCONVERSION -#define IMP_AUTO_AXIS IMP_AXISCONV_GRP "|" IOSN_AUTO_AXIS -#define IMP_FILE_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_FILE_UP_AXIS - -#define IMP_CACHE_SIZE IMP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define IMP_PLUGIN_UI_WIDTH IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define IMP_PLUGIN_UI_HEIGHT IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define IMP_PRESET_SELECTED IMP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define IMP_UIL IMP_PLUGIN_GRP "|" IOSN_UIL -#define IMP_PLUGIN_PRODUCT_FAMILY IMP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define IMP_PLUGIN_UI_XPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define IMP_PLUGIN_UI_YPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define IMP_DXF_WELD_VERTICES IMP_DXF "|" IOSN_DXF_WELD_VERTICES -#define IMP_DXF_OBJECT_DERIVATION IMP_DXF "|" IOSN_DXF_OBJECT_DERIVATION -#define IMP_DXF_REFERENCE_NODE IMP_DXF "|" IOSN_DXF_REFERENCE_NODE - -#define IMP_OBJ_REFERENCE_NODE IMP_OBJ "|" IOSN_OBJ_REFERENCE_NODE - -#define IMP_3DS_REFERENCENODE IMP_3DS "|" IOSN_3DS_REFERENCENODE -#define IMP_3DS_TEXTURE IMP_3DS "|" IOSN_3DS_TEXTURE -#define IMP_3DS_MATERIAL IMP_3DS "|" IOSN_3DS_MATERIAL -#define IMP_3DS_ANIMATION IMP_3DS "|" IOSN_3DS_ANIMATION -#define IMP_3DS_MESH IMP_3DS "|" IOSN_3DS_MESH -#define IMP_3DS_LIGHT IMP_3DS "|" IOSN_3DS_LIGHT -#define IMP_3DS_CAMERA IMP_3DS "|" IOSN_3DS_CAMERA -#define IMP_3DS_AMBIENT_LIGHT IMP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define IMP_3DS_RESCALING IMP_3DS "|" IOSN_3DS_RESCALING -#define IMP_3DS_FILTER IMP_3DS "|" IOSN_3DS_FILTER -#define IMP_3DS_SMOOTHGROUP IMP_3DS "|" IOSN_3DS_SMOOTHGROUP - -#define IMP_FBX_MODEL_COUNT IMP_FBX "|" IOSN_MODEL_COUNT -#define IMP_FBX_DEVICE_COUNT IMP_FBX "|" IOSN_DEVICE_COUNT -#define IMP_FBX_CHARACTER_COUNT IMP_FBX "|" IOSN_CHARACTER_COUNT -#define IMP_FBX_ACTOR_COUNT IMP_FBX "|" IOSN_ACTOR_COUNT -#define IMP_FBX_CONSTRAINT_COUNT IMP_FBX "|" IOSN_CONSTRAINT_COUNT -#define IMP_FBX_MEDIA_COUNT IMP_FBX "|" IOSN_MEDIA_COUNT - -#define IMP_FBX_TEMPLATE IMP_FBX "|" IOSN_TEMPLATE -#define IMP_FBX_PIVOT IMP_FBX "|" IOSN_PIVOT -#define IMP_FBX_GLOBAL_SETTINGS IMP_FBX "|" IOSN_GLOBAL_SETTINGS -#define IMP_FBX_CHARACTER IMP_FBX "|" IOSN_CHARACTER -#define IMP_FBX_CONSTRAINT IMP_FBX "|" IOSN_CONSTRAINT -#define IMP_FBX_MERGE_LAYER_AND_TIMEWARP IMP_FBX "|" IOSN_MERGE_LAYER_AND_TIMEWARP -#define IMP_FBX_GOBO IMP_FBX "|" IOSN_GOBO -#define IMP_FBX_SHAPE IMP_FBX "|" IOSN_SHAPE -#define IMP_FBX_LINK IMP_FBX "|" IOSN_LINK -#define IMP_FBX_MATERIAL IMP_FBX "|" IOSN_MATERIAL -#define IMP_FBX_TEXTURE IMP_FBX "|" IOSN_TEXTURE -#define IMP_FBX_MODEL IMP_FBX "|" IOSN_MODEL -#define IMP_FBX_AUDIO IMP_FBX "|" IOSN_AUDIO -#define IMP_FBX_ANIMATION IMP_FBX "|" IOSN_ANIMATION -#define IMP_FBX_PASSWORD IMP_FBX "|" IOSN_PASSWORD -#define IMP_FBX_PASSWORD_ENABLE IMP_FBX "|" IOSN_PASSWORD_ENABLE -#define IMP_FBX_CURRENT_TAKE_NAME IMP_FBX "|" IOSN_CURRENT_TAKE_NAME -#define IMP_FBX_EXTRACT_EMBEDDED_DATA IMP_FBX "|" IOSN_EXTRACT_EMBEDDED_DATA -// internal use -#define IMP_RELAXED_FBX_CHECK IMP_FBX "|" IOSN_RELAXED_FBX_CHECK -#define IMP_KEEP_PRODUCER_CAM_SRCOBJ IMP_FBX "|" IOSN_KEEP_PRODUCER_CAM_SRCOBJ - -#define IMP_BUTTON_WEB_UPDATE IMP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define IMP_PI_VERSION IMP_INFORMATION_GRP "|" IOSN_PI_VERSION - - -// end of import defined path -//--------------------------- - -//--------------------------- -// export defined path - -#define EXP_STATISTICS_GRP IOSN_EXPORT "|" IOSN_STATISTICS_GRP -#define EXP_ADV_OPT_GRP IOSN_EXPORT "|" IOSN_ADV_OPT_GRP -#define EXP_PRESETS_GRP IOSN_EXPORT "|" IOSN_PRESETS_GRP -#define EXP_STATISTICS IOSN_EXPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS -#define EXP_FIRST_TIME_RUN_NOTICE_GRP IOSN_EXPORT "|" IOSN_FIRST_TIME_RUN_NOTICE -#define EXP_INFORMATION_GRP IOSN_EXPORT "|" IOSN_INFORMATION_GRP - -#define EXP_PLUGIN_GRP IOSN_EXPORT "|" IOSN_PLUGIN_GRP -#define EXP_INCLUDE_GRP IOSN_EXPORT "|" IOSN_INCLUDE_GRP -#define EXP_FBX_EXT_SDK_GRP IOSN_EXPORT "|" IOSN_FBX_EXTENTIONS_SDK - -#define EXP_UNITS_GRP EXP_ADV_OPT_GRP "|" IOSN_UNITS_GRP -#define EXP_FILEFORMAT EXP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT -#define EXP_AXISCONV_GRP EXP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP -#define EXP_CACHE_GRP EXP_ADV_OPT_GRP "|" IOSN_CACHE_GRP - -#define EXP_UI EXP_ADV_OPT_GRP "|" IOSN_UI - -#define EXP_FBX_EXTENTIONS_SDK_WARNING EXP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING -#define EXP_FIRST_TIME_RUN_NOTICE EXP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE - -#define EXP_SCALEFACTOR EXP_AXISCONV_GRP "|" IOSN_SCALEFACTOR -#define EXP_AXISCONVERSIONMETHOD EXP_AXISCONV_GRP "|" IOSN_AXISCONVERSIONMETHOD -#define EXP_UPAXIS EXP_AXISCONV_GRP "|" IOSN_UPAXIS - -#define EXP_UNITS_SCALE EXP_UNITS_GRP "|" IOSN_UNITS_SCALE -#define EXP_MASTERSCALE EXP_UNITS_GRP "|" IOSN_MASTERSCALE - -#define EXP_DYN_SCALE_CONVERSION EXP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION -#define EXP_UNITSELECTOR EXP_UNITS_GRP "|" IOSN_UNITSELECTOR - -#define EXP_TOTAL_UNITS_SCALE_TB EXP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB - -#define EXP_SHOW_UI_MODE EXP_UI "|" IOSN_SHOW_UI_MODE -#define EXP_SHOW_UI_WARNING EXP_UI "|" IOSN_SHOW_UI_WARNING -#define EXP_SHOW_WARNINGS_MANAGER EXP_UI "|" IOSN_SHOW_WARNINGS_MANAGER -#define EXP_GENERATE_LOG_DATA EXP_UI "|" IOSN_GENERATE_LOG_DATA -#define EXP_PLUGIN_VERSIONS_URL EXP_UI "|" IOSN_PLUGIN_VERSIONS_URL - -#define EXP_PRESETS EXP_PRESETS_GRP "|" IOSN_PRESETS - -#define EXP_CAMERA_GRP EXP_INCLUDE_GRP "|" IOSN_CAMERA_GRP -#define EXP_LIGHT_GRP EXP_INCLUDE_GRP "|" IOSN_LIGHT_GRP - -#define EXP_GEOMETRY EXP_INCLUDE_GRP "|" IOSN_GEOMETRY -#define EXP_AUDIO EXP_INCLUDE_GRP "|" IOSN_AUDIO -#define EXP_ANIMATION EXP_INCLUDE_GRP "|" IOSN_ANIMATION -#define EXP_PIVOTTONULLS EXP_INCLUDE_GRP "|" IOSN_PIVOTTONULLS -#define EXP_LIGHT EXP_LIGHT_GRP "|" IOSN_LIGHT -#define EXP_LIGHTATTENUATION EXP_INCLUDE_GRP "|" IOSN_LIGHTATTENUATION -#define EXP_ENVIRONMENT EXP_LIGHT_GRP "|" IOSN_ENVIRONMENT -#define EXP_CAMERA EXP_CAMERA_GRP "|" IOSN_CAMERA -#define EXP_BINDPOSE EXP_INCLUDE_GRP "|" IOSN_BINDPOSE -#define EXP_SELECTIONONLY EXP_INCLUDE_GRP "|" IOSN_SELECTIONONLY - - -#define EXP_INPUTCONNECTIONS_GRP EXP_INCLUDE_GRP "|" IOSN_INPUTCONNECTIONS_GRP -#define EXP_INPUTCONNECTIONS EXP_INPUTCONNECTIONS_GRP "|" IOSN_INPUTCONNECTIONS - -#define EXP_BYPASSRRSINHERITANCE EXP_INCLUDE_GRP "|" IOSN_BYPASSRRSINHERITANCE - -#define EXP_EMBEDTEXTURE_GRP EXP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE_GRP -#define EXP_EMBEDTEXTURE EXP_EMBEDTEXTURE_GRP "|" IOSN_EMBEDTEXTURE -#define EXP_CONVERTTOTIFF EXP_EMBEDTEXTURE "|" IOSN_CONVERTTOTIFF - - -#define EXP_CURVEFILTERS EXP_ANIMATION "|" IOSN_CURVE_FILTER - -#define EXP_DEFORMATION EXP_ANIMATION "|" IOSN_DEFORMATION -#define EXP_BAKECOMPLEXANIMATION EXP_ANIMATION "|" IOSN_BAKECOMPLEXANIMATION -#define EXP_BONE EXP_ANIMATION "|" IOSN_BONE - -#define EXP_SAMPLINGFRAMERATE EXP_ANIMATION "|" IOSN_SAMPLINGFRAMERATE -#define EXP_POINTCACHE EXP_ANIMATION "|" IOSN_POINTCACHE -#define EXP_SMOOTHKEYASUSER EXP_ANIMATION "|" IOSN_SMOOTHKEYASUSER - -#define EXP_EXTRA_GRP EXP_ANIMATION "|" IOSN_EXTRA_GRP - -#define EXP_REMOVE_SINGLE_KEY EXP_EXTRA_GRP "|" IOSN_REMOVE_SINGLE_KEY -#define EXP_NAMETAKE EXP_EXTRA_GRP "|" IOSN_NAMETAKE -#define EXP_QUATERNION EXP_EXTRA_GRP "|" IOSN_QUATERNION - -#define EXP_CONSTRAINTS_GRP EXP_ANIMATION "|" IOSN_CONSTRAINTS_GRP - -#define EXP_CONSTRAINT EXP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT -#define EXP_CHARACTER EXP_CONSTRAINTS_GRP "|" IOSN_CHARACTER - - -#define EXP_MRCUSTOMATTRIBUTES EXP_GEOMETRY "|" IOSN_MRCUSTOMATTRIBUTES -#define EXP_MESHPRIMITIVE EXP_GEOMETRY "|" IOSN_MESHPRIMITIVE -#define EXP_MESHTRIANGLE EXP_GEOMETRY "|" IOSN_MESHTRIANGLE -#define EXP_MESHPOLY EXP_GEOMETRY "|" IOSN_MESHPOLY -#define EXP_NURB EXP_GEOMETRY "|" IOSN_NURB -#define EXP_PATCH EXP_GEOMETRY "|" IOSN_PATCH -#define EXP_BIP2FBX EXP_GEOMETRY "|" IOSN_BIP2FBX -#define EXP_GEOMNORMALPERPOLY EXP_GEOMETRY "|" IOSN_GEOMNORMALPERPOLY -#define EXP_TANGENTSPACE EXP_GEOMETRY "|" IOSN_TANGENTS_BINORMALS -#define EXP_SMOOTHMESH EXP_GEOMETRY "|" IOSN_SMOOTH_MESH -#define EXP_SELECTIONSET EXP_GEOMETRY "|" IOSN_SELECTION_SET - -#define EXP_FINESTSUBDIVLEVEL EXP_GEOMETRY "|" IOSN_FINESTSUBDIVLEVEL -#define EXP_MAXBONEASBONE EXP_GEOMETRY "|" IOSN_MAXBONEASBONE -#define EXP_MAXNURBSSTEP EXP_GEOMETRY "|" IOSN_MAXNURBSSTEP -#define EXP_CREASE EXP_GEOMETRY "|" IOSN_CREASE -#define EXP_BLINDDATA EXP_GEOMETRY "|" IOSN_BLINDDATA -#define EXP_NURBSSURFACEAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSSURFACEAS -#define EXP_SMOOTHING_GROUPS EXP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS -#define EXP_HARDEDGES EXP_GEOMETRY "|" IOSN_EXP_HARDEDGES -#define EXP_ANIMATIONONLY EXP_GEOMETRY "|" IOSN_ANIMATIONONLY -#define EXP_INSTANCES EXP_GEOMETRY "|" IOSN_INSTANCES -#define EXP_CONTAINEROBJECTS EXP_GEOMETRY "|" IOSN_CONTAINEROBJECTS -#define EXP_TRIANGULATE EXP_GEOMETRY "|" IOSN_TRIANGULATE -#define EXP_EDGE_ORIENTATION EXP_GEOMETRY "|" IOSN_EDGE_ORIENTATION - -#define EXP_SELECTIONSETNAMEASPOINTCACHE EXP_POINTCACHE "|" IOSN_SELECTIONSETNAMEASPOINTCACHE - -#define EXP_GEOMETRYMESHPRIMITIVEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPRIMITIVEAS -#define EXP_GEOMETRYMESHTRIANGLEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHTRIANGLEAS -#define EXP_GEOMETRYMESHPOLYAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPOLYAS -#define EXP_GEOMETRYNURBSAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSAS -#define EXP_GEOMETRYPATCHAS EXP_GEOMETRY "|" IOSN_GEOMETRYPATCHAS - -#define EXP_BAKEFRAMESTART EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTART -#define EXP_BAKEFRAMEEND EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEEND -#define EXP_BAKEFRAMESTEP EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEP - -#define EXP_BAKE_RESAMPLE_ANIMATION_CURVES EXP_BAKECOMPLEXANIMATION "|" IOSN_RESAMPLE_ANIMATION_CURVES - -#define EXP_BAKEFRAMESTARTNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTARTNORESET -#define EXP_BAKEFRAMEENDNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEENDNORESET -#define EXP_BAKEFRAMESTEPNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEPNORESET - -#define EXP_FBX EXP_ADV_OPT_GRP "|" IOSN_FBX -#define EXP_DXF EXP_ADV_OPT_GRP "|" IOSN_DXF -#define EXP_COLLADA EXP_ADV_OPT_GRP "|" IOSN_COLLADA - -// note: EXP_FILEFORMAT group is not visible -#define EXP_OBJ EXP_FILEFORMAT "|" IOSN_OBJ -#define EXP_3DS EXP_FILEFORMAT "|" IOSN_3DS -#define EXP_MOTION_BASE EXP_FILEFORMAT "|" IOSN_MOTION_BASE -#define EXP_BIOVISION_BVH EXP_FILEFORMAT "|" IOSN_BIOVISION_BVH -#define EXP_ACCLAIM_ASF EXP_FILEFORMAT "|" IOSN_ACCLAIM_ASF -#define EXP_ACCLAIM_AMC EXP_FILEFORMAT "|" IOSN_ACCLAIM_AMC - - -#define EXP_ASCIIFBX EXP_FBX "|" IOSN_ASCIIFBX - -#define EXP_CACHE_SIZE EXP_CACHE_GRP "|" IOSN_CACHE_SIZE - -#define EXP_SHAPE EXP_DEFORMATION "|" IOSN_SHAPE -#define EXP_SKINS EXP_DEFORMATION "|" IOSN_SKINS - -#define EXP_APPLYCSTKEYRED EXP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED -#define EXP_SAMPLINGRATE EXP_APPLYCSTKEYRED "|" IOSN_SAMPLINGRATE -#define EXP_CSTKEYREDTPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC -#define EXP_CSTKEYREDRPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC -#define EXP_CSTKEYREDSPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC -#define EXP_CSTKEYREDOPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC -#define EXP_AUTOTANGENTSONLY EXP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY - -#define EXP_APPLYKEYREDUCE EXP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE -#define EXP_KEYREDUCEPREC EXP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC -#define EXP_APPLYKEYSONFRM EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM -#define EXP_APPLYKEYSYNC EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC - -#define EXP_APPLYUNROLL EXP_CURVEFILTERS "|" IOSN_APPLYUNROLL -#define EXP_UNROLLPREC EXP_APPLYUNROLL "|" IOSN_UNROLLPREC -#define EXP_UNROLLPATH EXP_APPLYUNROLL "|" IOSN_UNROLLPATH -#define EXP_UNROLLFORCEAUTO EXP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO - -#define EXP_PLUGIN_UI_WIDTH EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH -#define EXP_PLUGIN_UI_HEIGHT EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT -#define EXP_PRESET_SELECTED EXP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED - -#define EXP_UIL EXP_PLUGIN_GRP "|" IOSN_UIL -#define EXP_PLUGIN_PRODUCT_FAMILY EXP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY - -#define EXP_PLUGIN_UI_XPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS -#define EXP_PLUGIN_UI_YPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS - -#define EXP_BUTTON_WEB_UPDATE EXP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE -#define EXP_PI_VERSION EXP_INFORMATION_GRP "|" IOSN_PI_VERSION - -#define EXP_BUTTON_EDIT EXP_PLUGIN_GRP "|" IOSN_BUTTON_EDIT -#define EXP_BUTTON_OK EXP_PLUGIN_GRP "|" IOSN_BUTTON_OK -#define EXP_BUTTON_CANCEL EXP_PLUGIN_GRP "|" IOSN_BUTTON_CANCEL -#define EXP_MENU_EDIT_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_EDIT_PRESET -#define EXP_MENU_SAVE_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_SAVE_PRESET -// internal use -#define EXP_USETMPFILEPERIPHERAL EXP_PLUGIN_GRP "|" IOSN_USETMPFILEPERIPHERAL -#define EXP_CONSTRUCTIONHISTORY EXP_PLUGIN_GRP "|" IOSN_CONSTRUCTIONHISTORY - -#define EXP_COLLADA_TRIANGULATE EXP_COLLADA "|" IOSN_COLLADA_TRIANGULATE -#define EXP_COLLADA_SINGLEMATRIX EXP_COLLADA "|" IOSN_COLLADA_SINGLEMATRIX -#define EXP_COLLADA_FRAME_RATE EXP_COLLADA "|" IOSN_COLLADA_FRAME_RATE - -#define EXP_DXF_TRIANGULATE EXP_DXF "|" IOSN_DXF_TRIANGULATE -#define EXP_DXF_DEFORMATION EXP_DXF "|" IOSN_DXF_DEFORMATION - -#define EXP_OBJ_TRIANGULATE EXP_OBJ "|" IOSN_OBJ_TRIANGULATE -#define EXP_OBJ_DEFORMATION EXP_OBJ "|" IOSN_OBJ_DEFORMATION - -#define EXP_3DS_REFERENCENODE EXP_3DS "|" IOSN_3DS_REFERENCENODE -#define EXP_3DS_TEXTURE EXP_3DS "|" IOSN_3DS_TEXTURE -#define EXP_3DS_MATERIAL EXP_3DS "|" IOSN_3DS_MATERIAL -#define EXP_3DS_ANIMATION EXP_3DS "|" IOSN_3DS_ANIMATION -#define EXP_3DS_MESH EXP_3DS "|" IOSN_3DS_MESH -#define EXP_3DS_LIGHT EXP_3DS "|" IOSN_3DS_LIGHT -#define EXP_3DS_CAMERA EXP_3DS "|" IOSN_3DS_CAMERA -#define EXP_3DS_AMBIENT_LIGHT EXP_3DS "|" IOSN_3DS_AMBIENT_LIGHT -#define EXP_3DS_RESCALING EXP_3DS "|" IOSN_3DS_RESCALING -#define EXP_3DS_TEXUVBYPOLY EXP_3DS "|" IOSN_3DS_TEXUVBYPOLY - -#define EXP_FBX_TEMPLATE EXP_FBX "|" IOSN_TEMPLATE -#define EXP_FBX_PIVOT EXP_FBX "|" IOSN_PIVOT -#define EXP_FBX_GLOBAL_SETTINGS EXP_FBX "|" IOSN_GLOBAL_SETTINGS -#define EXP_FBX_CHARACTER EXP_FBX "|" IOSN_CHARACTER -#define EXP_FBX_CONSTRAINT EXP_FBX "|" IOSN_CONSTRAINT -#define EXP_FBX_GOBO EXP_FBX "|" IOSN_GOBO -#define EXP_FBX_SHAPE EXP_FBX "|" IOSN_SHAPE -#define EXP_FBX_MATERIAL EXP_FBX "|" IOSN_MATERIAL -#define EXP_FBX_TEXTURE EXP_FBX "|" IOSN_TEXTURE -#define EXP_FBX_MODEL EXP_FBX "|" IOSN_MODEL -#define EXP_FBX_AUDIO EXP_FBX "|" IOSN_AUDIO -#define EXP_FBX_ANIMATION EXP_FBX "|" IOSN_ANIMATION -#define EXP_FBX_EMBEDDED EXP_FBX "|" IOSN_EMBEDDED -#define EXP_FBX_PASSWORD EXP_FBX "|" IOSN_PASSWORD -#define EXP_FBX_PASSWORD_ENABLE EXP_FBX "|" IOSN_PASSWORD_ENABLE -#define EXP_FBX_COLLAPSE_EXTERNALS EXP_FBX "|" IOSN_COLLAPSE_EXTERNALS -#define EXP_FBX_COMPRESS_ARRAYS EXP_FBX "|" IOSN_COMPRESS_ARRAYS -#define EXP_FBX_COMPRESS_LEVEL EXP_FBX "|" IOSN_COMPRESS_LEVEL -#define EXP_FBX_COMPRESS_MINSIZE EXP_FBX "|" IOSN_COMPRESS_MINSIZE -#define EXP_FBX_EMBEDDED_PROPERTIES_SKIP EXP_FBX "|" IOSN_EMBEDDED_PROPERTIES_SKIP -#define EXP_FBX_EXPORT_FILE_VERSION EXP_FBX "|" IOSN_EXPORT_FILE_VERSION - - -// end of export defined path -//--------------------------- - -//--------------------------- -// Motion files related options -#define IOSN_MOTION_START "MotionStart" -#define IOSN_MOTION_FRAME_COUNT "MotionFrameCount" -#define IOSN_MOTION_FRAME_RATE "MotionFrameRate" -#define IOSN_MOTION_ACTOR_PREFIX "MotionActorPrefix" -#define IOSN_MOTION_RENAME_DUPLICATE_NAMES "MotionRenameDuplicateNames" -#define IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED "MotionExactZeroAsOccluded" -#define IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION "MotionSetOccludedToLastValidPos" -#define IOSN_MOTION_AS_OPTICAL_SEGMENTS "MotionAsOpticalSegments" -#define IOSN_MOTION_ASF_SCENE_OWNED "MotionASFSceneOwned" -#define IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION "MotionFromGlobalPosition" -#define IOSN_MOTION_GAPS_AS_VALID_DATA "MotionGapsAsValidData" -#define IOSN_MOTION_C3D_REAL_FORMAT "MotionC3DRealFormat" -#define IOSN_MOTION_CREATE_REFERENCE_NODE "MotionCreateReferenceNode" -#define IOSN_MOTION_TRANSLATION "MotionTranslation" -#define IOSN_MOTION_BASE_T_IN_OFFSET "MotionBaseTInOffset" -#define IOSN_MOTION_BASE_R_IN_PREROTATION "MotionBaseRInPrerotation" -#define IOSN_MOTION_DUMMY_NODES "MotionDummyNodes" -#define IOSN_MOTION_LIMITS "MotionLimits" -#define IOSN_MOTION_FRAME_RATE_USED "MotionFrameRateUsed" -#define IOSN_MOTION_FRAME_RANGE "MotionFrameRange" -#define IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR "MotionWriteDefaultAsBaseTR" - -// Import - -//Motion Base options -#define IMP_MOB_START IMP_MOTION_BASE "|" IOSN_MOTION_START -#define IMP_MOB_FRAME_COUNT IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define IMP_MOB_FRAME_RATE IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define IMP_MOB_ACTOR_PREFIX IMP_MOTION_BASE "|" IOSN_MOTION_ACTOR_PREFIX -#define IMP_MOB_RENAME_DUPLICATE_NAMES IMP_MOTION_BASE "|" IOSN_MOTION_RENAME_DUPLICATE_NAMES -#define IMP_MOB_EXACT_ZERO_AS_OCCLUDED IMP_MOTION_BASE "|" IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED -#define IMP_MOB_SET_OCCLUDED_TO_LAST_VALID_POSITION IMP_MOTION_BASE "|" IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION -#define IMP_MOB_AS_OPTICAL_SEGMENTS IMP_MOTION_BASE "|" IOSN_MOTION_AS_OPTICAL_SEGMENTS -#define IMP_MOB_ASF_SCENE_OWNED IMP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -// Acclaim AMC options -#define IMP_ACCLAIM_AMC_CREATE_REFERENCE_NODE IMP_ACCLAIM_AMC "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_AMC_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_AMC_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_AMC_DUMMY_NODES IMP_ACCLAIM_AMC "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_AMC_MOTION_LIMITS IMP_ACCLAIM_AMC "|" IOSN_MOTION_LIMITS - -// Acclaim ASF options -#define IMP_ACCLAIM_ASF_CREATE_REFERENCE_NODE IMP_ACCLAIM_ASF "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_ACCLAIM_ASF_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_ACCLAIM_ASF_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_R_IN_PREROTATION -#define IMP_ACCLAIM_ASF_DUMMY_NODES IMP_ACCLAIM_ASF "|" IOSN_MOTION_DUMMY_NODES -#define IMP_ACCLAIM_ASF_MOTION_LIMITS IMP_ACCLAIM_ASF "|" IOSN_MOTION_LIMITS - -// Biovision BVH options -#define IMP_BIOVISION_BVH_CREATE_REFERENCE_NODE IMP_BIOVISION_BVH "|" IOSN_MOTION_CREATE_REFERENCE_NODE - -// Motion Analysis HTR options -#define IMP_MOTIONANALYSIS_HTR_CREATE_REFERENCE_NODE IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_CREATE_REFERENCE_NODE -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_T_IN_OFFSET IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_T_IN_OFFSET -#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_R_IN_PREROTATION IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_R_IN_PREROTATION - -// Export - -//Motion Base options -#define EXP_MOB_START EXP_MOTION_BASE "|" IOSN_MOTION_START -#define EXP_MOB_FRAME_COUNT EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT -#define EXP_MOB_FROM_GLOBAL_POSITION EXP_MOTION_BASE "|" IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION -#define EXP_MOB_FRAME_RATE EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE -#define EXP_MOB_GAPS_AS_VALID_DATA EXP_MOTION_BASE "|" IOSN_MOTION_GAPS_AS_VALID_DATA -#define EXP_MOB_C3D_REAL_FORMAT EXP_MOTION_BASE "|" IOSN_MOTION_C3D_REAL_FORMAT -#define EXP_MOB_ASF_SCENE_OWNED EXP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED - -//Acclaim AMC options -#define EXP_ACCLAIM_AMC_MOTION_TRANSLATION EXP_ACCLAIM_AMC "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_AMC_FRAME_RATE_USED EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_AMC_FRAME_RANGE EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_AMC_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_AMC "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Acclaim ASF options -#define EXP_ACCLAIM_ASF_MOTION_TRANSLATION EXP_ACCLAIM_ASF "|" IOSN_MOTION_TRANSLATION -#define EXP_ACCLAIM_ASF_FRAME_RATE_USED EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RATE_USED -#define EXP_ACCLAIM_ASF_FRAME_RANGE EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RANGE -#define EXP_ACCLAIM_ASF_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_ASF "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR - -//Biovision BVH options -#define EXP_BIOVISION_BVH_MOTION_TRANSLATION EXP_BIOVISION_BVH "|" IOSN_MOTION_TRANSLATION - -#include - -#endif /* _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxprogress.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxprogress.h deleted file mode 100755 index 3908864..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxprogress.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprogress.h -#ifndef _FBXSDK_FILEIO_PROGRESS_H_ -#define _FBXSDK_FILEIO_PROGRESS_H_ - -#include - -#include - -#include - -typedef bool (*FbxProgressCallback)(void* pArgs, float pPercentage, const char* pStatus); - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - class FbxSpinLock; -#endif - -/** Class for progress reporting -* \nosubgrouping -*/ -class FBXSDK_DLL FbxProgress -{ -public: - /** Register a callback function for progress reporting in single thread mode. - * \param pCallback Pointer of the callback function. - * \param pArgs Pointer to the optional arguments passed to the callback function. */ - void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); - - /** Set the total amount of workload needed to complete the progress. - * \param pTotal Total amount of workload. - * \remark The default total is 100.0. */ - void SetTotal(float pTotal); - - /** Set the threshold at which the progress callback should be called. - * \param pThreshold The threshold value, between 0.0 and 100.0, that triggers the callback. - * \remark The default threshold is 1.0, meaning that every 1% the callback is triggered. */ - void SetThreshold(float pThreshold); - - /** Update current progress with recent workload. - * \param pDelta Delta amount of workload progressed so far. - * \param pStatus Optional current progress status string. - * \remark If a callback is set, it will be called upon caling this function. */ - void Update(float pDelta, const char* pStatus=NULL); - - //! Reset the progress status percentage and status string. - void Reset(); - - /** Retrieve the progress status. - * \param pStatus Optional current progress status string. - * \return The current progress percentage. */ - float GetProgress(FbxString* pStatus=NULL); - - /** Set the progress status to completed. - * \param pStatus Optional current progress status string. */ - void Complete(const char* pStatus=NULL); - - //! Cancel this progress. - void Cancel(); - - //! Query whether user canceled this progress. - inline bool IsCanceled() const { return mCanceled; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProgress(); - ~FbxProgress(); - -private: - void Acquire(); - void Release(); - float GetPercent() const; - bool ExecuteCallback() const; - -#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) - FbxSpinLock* mLock; -#endif - float mCurrent; - float mPrevious; - float mTotal; - float mThreshold; - FbxString mStatus; - FbxProgressCallback mCallback; - void* mCallbackArgs; - bool mCanceled; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_FILEIO_PROGRESS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxreader.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxreader.h deleted file mode 100755 index 1b4e9c0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxreader.h +++ /dev/null @@ -1,270 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreader.h -#ifndef _FBXSDK_FILEIO_READER_H_ -#define _FBXSDK_FILEIO_READER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxDocumentInfo; -class FbxScene; -class FbxImporter; -class FbxIOSettings; -class FbxAxisSystem; -class FbxStatistics; -class FbxSystemUnit; -class FbxNode; -class FbxProgress; -class FbxTakeInfo; - - /** Base class of other readers used internally. - * This class provides the interfaces for reading files. - * - * The role of the reader is to effectively "read" specific file data - * vs the role of the importer is to select a specific reader - * and launch the reading of a file through that reader. - * \see FbxImporter - * - * ex: - * - FbxReaderFbx5 can read FBX 5 format files - * - FbxReaderFbx6 can read FBX 6 format files - * - FbxReaderFbx7 can read FBX 7 format files - * - FbxReaderCollada can read Collada files - * - FbxReaderDxf can read Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom reader must be created for plug-in extension, - * then FbxReader must be the base class for - * the new custom reader in that particular situation. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxReader -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current reader. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxReader(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. - */ - virtual ~FbxReader(); - - /** Information type to request. - * \remarks Used internally to get reader file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a reader ex: "FBX". - eInfoDescriptions, //!< To get the file description for a reader ex: "Autodesk FBX (*.fbx)". - eReserved1 = 0xFBFB, - }; - - /** Flags for reading parts of file. - * \remarks Used internally when an importer is initialized to get some information very fast. - */ - enum EFileOpenSpecialFlags - { - eParseForGlobalSettings = 1, //!< Used for reading the Global settings section when an importer is initialized. - eParseForStatistics = 2 //!< Used for reading a group of statistics when an importer is initialized. - }; - - /** \internal Helper typedef for passing FbxReader creator function as argument (used internally) */ - typedef FbxReader* (*CreateFuncType)(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); - - /** \internal Helper typedef for passing FbxIOSettings creator function as argument (used internally) */ - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - /** \internal Helper typedef for passing EInfoRequest function as argument (used internally) */ - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pReaderTypeId); - - /** Returns the file version. - * \param pMajor Major version. - * \param pMinor Minor version. - * \param pRevision Revision version. - */ - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision){ pMajor = pMinor = pRevision = 0; } - - /** Opens the file with default flag - * \param pFileName Name of the File to open - * \return If the file opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(char* pFileName) = 0; - - /** Opens the stream with default flag - * \param pStream stream to open - * \param pStreamData user-defined stream data - * \return If the stream opens successfully return \c true, otherwise return \c false. - */ - virtual bool FileOpen(FbxStream* pStream, void* pStreamData); - - /** Closes the file stream - * \return \c false - */ - virtual bool FileClose() = 0; - - /** Checks if the file stream is open. - * \return \c false. - */ - virtual bool IsFileOpen() = 0; - - /** Returns file stream options - * \param pParseFileAsNeeded Sets whether to parse file as read options - * \return true on success, otherwise return false. - */ - virtual bool GetReadOptions(bool pParseFileAsNeeded = true) = 0; - - /** Reads file with stream options - * \param pDocument FbxDocument to store the file data - * \return \c false. - */ - virtual bool Read(FbxDocument* pDocument) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginReadParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Opens the file with specific EFileOpenSpecialFlags - * \param pFileName Name of the File to open. - * \param pFlags The EFileOpenSpecialFlags to open with - * \return If the file opens successfully return true, otherwise return false. - */ - virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags /*pFlags*/){ return FileOpen(pFileName); } - - /** Returns the system axis information and file system units from the file - * \param pAxisSystem Axis system in file - * \param pSystemUnits System unit in file - * \return \c false. - */ - virtual bool GetAxisInfo(FbxAxisSystem* /*pAxisSystem*/, FbxSystemUnit* /*pSystemUnits*/){ return false; } - - /** Returns statistics from the file - * \param pStats Statistics in the file. - * \return \c false. - */ - virtual bool GetStatistics(FbxStatistics* /*pStats*/){ return false; } - - /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n - * \param pTimeMode ref to a FbxTime::EMode enum - * \return \c true on success, \c false otherwise. - * \remarks This function must be called after FbxImporter::Initialize(). - * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. - */ - virtual bool GetFrameRate(FbxTime::EMode& pTimeMode) { pTimeMode = FbxTime::eDefaultMode; return false; } - - - /** Returns the scene info from the file. - * \return NULL. - */ - virtual FbxDocumentInfo* GetSceneInfo(){return NULL;} - - /** Returns the list of take infos from the file. - * \return NULL - */ - virtual FbxArray* GetTakeInfo(){return NULL;} - - /** If default camera resolution is OK, returns information about the resolution of the render. - * \param pCamName Default camera name. - * \param pResolutionMode Default resolution mode. - * \param pW Default resolution width. - * \param pH Default resolution height. - * \return \c true If default camera resolution is OK, \c false Otherwise. - */ - virtual bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); - - /** Judges if the format of the file is was created by an Autodesk plug-in. - * An internal (genuine) plug-in is one created by the Autodesk FBX product team. - * \return \c true If the file format is internal plug-in , \c false Otherwise. - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return A pointer to IOSettings used for this reader or NULL if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this reader instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the reader. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - virtual void SetEmbeddingExtractionFolder(const char* /*pExtractFolder*/){} - - /** Returns true if this reader supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual bool FileOpen(FbxFile * pFile); - - FbxStatus& GetStatus() { return mStatus; } - -protected: - void SetDefaultRenderResolution(const char* pCamName, const char* pResolutionMode, double pW, double pH); -#ifndef FBXSDK_ENV_WINSTORE - void PluginsReadBegin(FbxScene& pScene); - void PluginsRead(const char* pName, const char* pVersion); - void PluginsReadEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - FbxReader& operator=(FbxReader const&) { return *this; } - virtual bool CheckDuplicateNodeNames(FbxNode* pRootNode, FbxString& pDuplicateNodeNameList); - - FbxStatus& mStatus; - FbxManager& mManager; - FbxIODefaultRenderResolution* mData; - -private: - int mInternalID; - FbxIOSettings* mIOSettings; - - friend struct FbxReaderFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_READER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatistics.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatistics.h deleted file mode 100755 index 8bf3ea5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatistics.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatistics.h -#ifndef _FBXSDK_FILEIO_STATISTICS_H_ -#define _FBXSDK_FILEIO_STATISTICS_H_ - -#include - -#include -#include - -#include - -/** This class is a basic class to get the quantity of items. - * User processes the statistics raw data by deriving FbxStatistics class and overrides \c AddItem method. - * When overriding \c AddItem method, User must store item's name and item's count by pair which means - * The index of one item's name in array \c mItemName is the same as the index of this item's count in array \c mItemCount. - * - * \code Here is a code snippet to show how it used. - * //Define my own statistics class. - * class MyStatistics : public FbxStatistics - * { - * public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxSdkNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; - * }; - * - * FbxManager* lSdkManager = FbxManager::Create(); - * FbxScene* lScene = FbxScene::Create( lSdkManager, "Scene"); - * FbxNode* lNode1 = FbxNode::Create(lScene, "Node1"); - * FbxNode* lNode2 = FbxNode::Create(lScene, "Node2"); - * FbxNode* lNode3 = FbxNode::Create(lScene, "Node3"); - * FbxNode* lNode4 = FbxNode::Create(lScene, "Node4"); - * lScene.AddNode(lNode1); - * lScene.AddNode(lNode2); - * lScene.AddNode(lNode3); - * MyStatistics lStatistics; - * lStatistics.AddItem("Node_Count", lScene.GetNodeCount() ); - * FbxString lItemName; - * int lItemCount; - * if( lStatistics.GetItemPair( 0, lItemName, lItemCount)) - * { - * //do something - * } - * \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxStatistics -{ -public: - /// \name Constructor and Destructor. - //@{ - FbxStatistics(); - virtual ~FbxStatistics(); - //@} - - //! Reset the statistics. - void Reset(); - - //! Get the number of items. - int GetNbItems() const; - - /** Get the statistics information by pair. - * \param pNum The index of statistics data to be got. - * \param pItemName Output the item's name. - * \param pItemCount Output the item's count. - * \return \c True if successful, \c False otherwise. - */ - bool GetItemPair(int pNum, FbxString& pItemName, int& pItemCount) const; - - /** Assignment operator. - * \param pStatistics FbxStatistics assigned to this one. - */ - FbxStatistics& operator=(const FbxStatistics& pStatistics); - -protected: - /** virtual function to define the process of the incoming statistics data. - * \param pItemName The item's name - * \param pItemCount The item's count. - * \return False. - */ - virtual bool AddItem(FbxString& /*pItemName*/, int /*pItemCount*/) { return false; }; - - //! An array to store item's name. - FbxArray mItemName; - - //! An array to store item's count. - FbxArray mItemCount; -}; - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h deleted file mode 100755 index 6a8aa2d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxstatisticsfbx.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxstatisticsfbx.h -#ifndef _FBXSDK_FILEIO_STATISTICS_FBX_H_ -#define _FBXSDK_FILEIO_STATISTICS_FBX_H_ - -#include - -#include - -#include - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FbxStatisticsFbx : public FbxStatistics -{ -public: - virtual bool AddItem(FbxString& pItemName, int pItemCount) - { - mItemName.Add( FbxNew< FbxString >(pItemName) ); - mItemCount.Add( pItemCount); - return true; - }; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_FILEIO_STATISTICS_FBX_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxwriter.h b/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxwriter.h deleted file mode 100755 index 72e4183..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/fileio/fbxwriter.h +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxwriter.h -#ifndef _FBXSDK_FILEIO_WRITER_H_ -#define _FBXSDK_FILEIO_WRITER_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxManager; -class FbxFile; -class FbxStream; -class FbxObject; -class FbxDocument; -class FbxScene; -class FbxExporter; -class FbxIO; -class FbxIOSettings; -class FbxProgress; - -#define IOSP GetIOSettings() - - /** Base class of other writers used internally. - * This class provides the interfaces for writing files. - * - * The role of the writer is to effectively "write" specific file data - * vs the role of the exporter is to select a specific writer - * and launch the writing of a file through that writer. - * \see FbxExporter - * - * ex: - * - FbxWriterFbx5 can write FBX 5 format files - * - FbxWriterFbx6 can write FBX 6 format files - * - FbxWriterFbx7 can write FBX 7 format files - * - FbxWriterCollada can write Collada files - * - FbxWriterDxf can write Dxf files - * - ... etc. - * - * A SDK user should - normally - not use this class, - * except if a custom writer must be created for plug-in extension, - * then FbxWriter must be the base class for - * the new custom writer in that particular situation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxWriter -{ -public: - /** Constructor. - * \param pManager The FbxManager Object. - * \param pID Id for current writer. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxWriter(FbxManager& pManager, int pID, FbxStatus& pStatus); - - /** Destructor. */ - virtual ~FbxWriter(); - - /** Information type to request. - * \remarks Used internally to get writer file information. - */ - enum EInfoRequest - { - eInfoExtension, //!< To get the file ext for a writer ex: "FBX". - eInfoDescriptions, //!< To get the file description for a writer ex:"Autodesk FBX (*.fbx)". - eInfoVersions, //!< To get the file version for a writer ex: 7100. - eInfoCompatibleDesc, //!< To get the file compatible description for a writer. - eInfoUILabel, //!< To get the file UI label to show for a writer ex: file labels shown in "Open file dialog". - eReserved1 = 0xFBFB, - }; - - //! Helper typedef for passing FbxWriter creator function as argument (used internally). - typedef FbxWriter* (*CreateFuncType)(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); - - //! Helper typedef for passing FbxIOSettings creator function as argument (used internally). - typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); - - //! Helper typedef for passing EInfoRequest function as argument (used internally). - typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pWriterTypeId); - - /** Creates a new file. - * \param pFileName The name of the newly created file. - */ - virtual bool FileCreate(char* pFileName) = 0; - - /** Creates a new file via a stream. - * \param pStream The stream to write to. - * \param pStreamData the user-defined stream data to be written. - */ - virtual bool FileCreate(FbxStream* pStream, void* pStreamData); - - /** Closes the file. - */ - virtual bool FileClose() = 0; - - /** Test if the file is open. - */ - virtual bool IsFileOpen() = 0; - - /** Setup write options. - */ - virtual void GetWriteOptions() = 0; - - /** Writes content to the specified file with given stream options - * \param pDocument FbxDocument to write file data to. - */ - virtual bool Write(FbxDocument* pDocument) = 0; - - /** Pre-processes the scene. - * \param pScene The scene needs to be pre-processed. - */ - virtual bool PreprocessScene(FbxScene &pScene) = 0; - - /** Post-processes the scene. - * \param pScene The scene needs to be post-processed. - */ - virtual bool PostprocessScene(FbxScene &pScene) = 0; - -#ifndef FBXSDK_ENV_WINSTORE - /** Writes extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. - * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an - * extension plug-in was used that could be missing. - * \param pParams The parameters of the extension plug-in. The properties of the objects are used - * as the parameters of the extension plug-in. - * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, - * FBX 6 and FBX 7 does implement it. - */ - virtual void PluginWriteParameters(FbxObject& pParams); -#endif /* !FBXSDK_ENV_WINSTORE */ - - /** Finds the selected root node in the specified scene. - * \param pScene The scene in which the selected root node is found. - * \return The located root node.\c NULL if the selected root node cannot be found. - */ - virtual FbxNode* FindRootNode(FbxScene& pScene); - - /** Checks if there are spaces in the names of specified node (and its children nodes), - * and writes the returned node's name in the specified string list. - * \param pNode Specifies the node to check. - * \param pNodeNameList Specifies the string list where the node name that has spaces in it is recorded. - * \return \c true If there are no spaces in the name of specified node (and its children nodes), - * \c false If spaces are found. - */ - virtual bool CheckSpaceInNodeNameRecursive(FbxNode* pNode, FbxString& pNodeNameList); - - /** Sets the file export version as specified. - * \param pVersion The specified file export version. - */ - bool SetFileExportVersion(FbxString pVersion); - - /** Sets the renaming mode as specified. - * \param pRenamingMode The specified renaming mode. - */ - void SetRenamingMode(FbxSceneRenamer::ERenamingMode pRenamingMode){mRenamingMode = pRenamingMode;} - - /** Sets the resampling rate as specified. - * \param pResamplingRate The specified resampling rate. - */ - inline void SetResamplingRate(double pResamplingRate){mResamplingRate = pResamplingRate;} - - /** Test if file format is an internal plug-in . - * A non genuine plug-in is a plug-in made by someone external to Autodesk FBX SDK group. - * \return \c true If the file format is an internal plug-in ,\c false Otherwise . - */ - bool IsGenuine(); - - /** Access to a IOSettings object. - * \return The pointer to IOSettings or \c NULL \c if the object - * has not been allocated. - */ - virtual FbxIOSettings * GetIOSettings(); - - /** Set the IOSettings pointer to be used for this writer instance. - * \param pIOSettings - */ - virtual void SetIOSettings(FbxIOSettings * pIOSettings); - - /** Pass a progress handler to the writer. - * \param pProgress FbxProgress to store the progress information. - */ - virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} - - /** Returns true if this writer supports FbxStream I/O. Default value is false. */ - virtual bool SupportsStreams() const; - -protected: -#ifndef FBXSDK_ENV_WINSTORE - //! Function called by FBX before writing out the scene (FbxScene). - void PluginsWriteBegin(FbxScene& pScene); - /** - * Function called by FBX before writing out any FBX object. - * \param pFbx File object. - * \param pWriteObjectId Flag to write out object id. - */ - void PluginsWrite(FbxIO& pFbx, bool pWriteObjectId); - //! Function called by FBX after writing out the scene (FbxScene). - void PluginsWriteEnd(FbxScene& pScene); -#endif /* !FBXSDK_ENV_WINSTORE */ - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -public: -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxStatus& GetStatus() { return mStatus; } - -protected: - - FbxWriter& operator=(FbxWriter const&) { return *this; } - - FbxStatus& mStatus; - FbxManager& mManager; - FbxString mFileVersion; - //! Resample rate for animation. - double mResamplingRate; - //! The mode describing from which format to which format when write FBX file. - FbxSceneRenamer::ERenamingMode mRenamingMode; - -private: - int mInternalID; - FbxIOSettings * mIOSettings; - - friend struct FbxWriterFbx7_Impl; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); -#define IOS_REF (*GetIOSettings()) - -#include - -#endif /* _FBXSDK_FILEIO_WRITER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h deleted file mode 100755 index 5578669..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurve.h +++ /dev/null @@ -1,1359 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurve.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_H_ - -#include - -#include -#include - -#include - -class KFCurve; - -/** Definitions used for the FBX animation curves and keys. */ -class FBXSDK_DLL FbxAnimCurveDef -{ -public: - static const float sDEFAULT_WEIGHT; - static const float sMIN_WEIGHT; - static const float sMAX_WEIGHT; - static const float sDEFAULT_VELOCITY; - - //! Key tangent mode for cubic interpolation. - enum ETangentMode - { - eTangentAuto = 0x00000100, //!< Auto key (spline cardinal). - eTangentTCB = 0x00000200, //!< Spline TCB (Tension, Continuity, Bias) - eTangentUser = 0x00000400, //!< Next slope at the left equal to slope at the right. - eTangentGenericBreak = 0x00000800, //!< Independent left and right slopes. - eTangentBreak = eTangentGenericBreak|eTangentUser, //!< Independent left and right slopes, with next slope at the left equal to slope at the right. - eTangentAutoBreak = eTangentGenericBreak|eTangentAuto, //!< Independent left and right slopes, with auto key. - eTangentGenericClamp = 0x00001000, //!< Clamp: key should be flat if next or previous key has the same value (overrides tangent mode). - eTangentGenericTimeIndependent = 0x00002000, //!< Time independent tangent (overrides tangent mode). - eTangentGenericClampProgressive = 0x00004000|eTangentGenericTimeIndependent //!< Clamp progressive: key should be flat if tangent control point is outside [next-previous key] range (overrides tangent mode). - }; - - //! Key interpolation type. - enum EInterpolationType - { - eInterpolationConstant = 0x00000002, //!< Constant value until next key. - eInterpolationLinear = 0x00000004, //!< Linear progression to next key. - eInterpolationCubic = 0x00000008 //!< Cubic progression to next key. - }; - - //! Weighted mode. - enum EWeightedMode - { - eWeightedNone = 0x00000000, //!< Tangent has default weights of 0.333; we define this state as not weighted. - eWeightedRight = 0x01000000, //!< Right tangent is weighted. - eWeightedNextLeft = 0x02000000, //!< Left tangent is weighted. - eWeightedAll = eWeightedRight|eWeightedNextLeft //!< Both left and right tangents are weighted. - }; - - //! Key constant mode. - enum EConstantMode - { - eConstantStandard = 0x00000000, //!< Curve value is constant between this key and the next - eConstantNext = 0x00000100 //!< Curve value is constant, with next key's value - }; - - //! Velocity mode. Velocity settings speed up or slow down animation on either side of a key without changing the trajectory of the animation. Unlike Auto and Weight settings, Velocity changes the animation in time, but not in space. - enum EVelocityMode - { - eVelocityNone = 0x00000000, //!< No velocity (default). - eVelocityRight = 0x10000000, //!< Right tangent has velocity. - eVelocityNextLeft = 0x20000000, //!< Left tangent has velocity. - eVelocityAll = eVelocityRight|eVelocityNextLeft //!< Both left and right tangents have velocity. - }; - - //! Tangent visibility. - enum ETangentVisibility - { - eTangentShowNone = 0x00000000, //!< No tangent is visible. - eTangentShowLeft = 0x00100000, //!< Left tangent is visible. - eTangentShowRight = 0x00200000, //!< Right tangent is visible. - eTangentShowBoth = eTangentShowLeft|eTangentShowRight //!< Both left and right tangents are visible. - }; - - //! FbxAnimCurveKey data indices for cubic interpolation tangent information. - enum EDataIndex - { - eRightSlope = 0, //!< Index of the right derivative, User and Break tangent mode (data are float). - eNextLeftSlope = 1, //!< Index of the left derivative for the next key, User and Break tangent mode. - eWeights = 2, //!< Start index of weight values, User and Break tangent break mode (data are FbxInt16 tokens from weight and converted to float). - eRightWeight = 2, //!< Index of weight on right tangent, User and Break tangent break mode. - eNextLeftWeight = 3, //!< Index of weight on next key's left tangent, User and Break tangent break mode. - eVelocity = 4, //!< Start index of velocity values, Velocity mode - eRightVelocity = 4, //!< Index of velocity on right tangent, Velocity mode - eNextLeftVelocity = 5, //!< Index of velocity on next key's left tangent, Velocity mode - eTCBTension = 0, //!< Index of Tension, TCB tangent mode (data are floats). - eTCBContinuity = 1, //!< Index of Continuity, TCB tangent mode. - eTCBBias = 2 //!< Index of Bias, TCB tangent mode. - }; -}; - -struct FBXSDK_DLL FbxAnimCurveTangentInfo -{ - inline FbxAnimCurveTangentInfo() - { - mDerivative = 0; - mWeight = FbxAnimCurveDef::sDEFAULT_WEIGHT; - mWeighted = false; - mVelocity = FbxAnimCurveDef::sDEFAULT_VELOCITY; - mHasVelocity = false; - mAuto = 0; - } - - float mDerivative; - float mWeight; - float mVelocity; - float mAuto; - bool mWeighted; - bool mHasVelocity; -}; - -/** This is the interface for implementation of animation key objects. - * \nosubgrouping - * - * \remarks Users should not use this class directly, but always use FbxAnimCurveKey. - * A FbxAnimCurveKey has a FbxAnimCurveKey_Impl. - * But FbxAnimCurveKey_Impl is just an implementation interface, - */ -class FBXSDK_DLL FbxAnimCurveKey_Impl -{ -public: - /** Destructor. - */ - virtual ~FbxAnimCurveKey_Impl() {}; - - /** Assignment operator. - */ - virtual FbxAnimCurveKey_Impl& operator=(const FbxAnimCurveKey_Impl& pFKey) = 0; - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - virtual void Set(FbxTime pTime, float pValue) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get the key value. - * \return The value of the key. - */ - virtual float GetValue() const = 0; - - /** Set the key value. - * \param pValue The value to set. - */ - virtual void SetValue(float pValue) = 0; - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType GetInterpolation() const = 0; - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - virtual void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - virtual FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) const = 0; - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - virtual void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) = 0; - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const = 0; - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - virtual void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) = 0; - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - virtual void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) = 0; - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const = 0; - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - virtual void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) = 0; - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - virtual FbxAnimCurveDef::EConstantMode GetConstantMode() const = 0; - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - virtual void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - virtual float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const = 0; - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - virtual void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) = 0; - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) = 0; - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - virtual FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const = 0; - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual void SetBreak(bool pVal) = 0; - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - virtual bool GetBreak() const = 0; -}; - -/** This is the interface for the FBX animation curve keys. - * A key is defined by a time and a value. It also has tangents that control how the animation curve enters and exits the key. - * \nosubgrouping - * - *\remarks This class is now the main animation key object of the SDK, - * Users should always use this class to handle animation curve key. - * This class has a FbxAnimCurveKey_Impl as its implementation interface, - * Default constructor does not initialize data members. - * If an instance has to be initialized, use function FbxAnimCurveKey::Set(). - */ -class FBXSDK_DLL FbxAnimCurveKey : public FbxAnimCurveKeyBase -{ -public: - /** Constructor with no argument - */ - FbxAnimCurveKey() : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - } - - /** Constructor with time. - * \param pTime The time of key. - */ - FbxAnimCurveKey(FbxTime pTime) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - SetTime(pTime); - } - - /** Constructor with time and value. - * \param pTime The time of key. - * \param pVal The value of key. - */ - FbxAnimCurveKey(FbxTime pTime, float pVal) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mAllocatorFct != NULL); - mImpl = (*mAllocatorFct)(); - Set(pTime, pVal); - } - - /** Copy constructor - */ - FbxAnimCurveKey(FbxAnimCurveKey const& pFKey) : FbxAnimCurveKeyBase() - { - FBX_ASSERT(mCopyAllocatorFct != NULL); - SetTime(pFKey.GetTime()); - mImpl = mCopyAllocatorFct(pFKey.GetImpl()); - } - - /** Destructor - */ - ~FbxAnimCurveKey() - { - FBX_ASSERT(mDeallocatorFct != NULL); - (*mDeallocatorFct)(mImpl); - } - - /** Assignment operator - */ - FbxAnimCurveKey& operator=(const FbxAnimCurveKey& pFKey) - { - FBX_ASSERT(mImpl); - if (mImpl) - { - *mImpl = *(pFKey.GetImpl()); - } - SetTime(pFKey.GetTime()); - return *this; - } - - /** Get time value. - * \return Time value. - */ - FbxTime GetTime() const - { - return FbxAnimCurveKeyBase::GetTime(); - } - - /** Set time value. - * \param pTime Time value to set. - */ - void SetTime(const FbxTime& pTime) - { - FbxAnimCurveKeyBase::SetTime(pTime); - } - - /** Set time and value of key. - * \param pTime New time of this key. - * \param pValue New value of this key. - */ - void Set(FbxTime pTime, float pValue) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->Set(pTime, pValue); - } - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key is modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) - { - FbxAnimCurveKeyBase::SetTime(pTime); - mImpl->SetTCB(pTime, pValue, pData0, pData1, pData2); - } - - /** Get the key value. - * \return The value of the key. - */ - float GetValue() const - { - return mImpl->GetValue(); - } - - /** Set the key value. - * \param pValue The value to set. - */ - void SetValue(float pValue) - { - mImpl->SetValue(pValue); - } - - - /** Get key's interpolation type. - * \return Interpolation type of the queried key. - */ - FbxAnimCurveDef::EInterpolationType GetInterpolation() - { - return mImpl->GetInterpolation(); - } - - /** Set key's interpolation type. - * \param pInterpolation Interpolation type of the key. - */ - void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) - { - mImpl->SetInterpolation(pInterpolation); - } - - /** Get key's tangent mode. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * \return Tangent mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - */ - FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) - { - return mImpl->GetTangentMode(pIncludeOverrides); - } - - /** Set tangent mode. - * \param pTangentMode Tangent mode to set. - */ - void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) - { - mImpl->SetTangentMode(pTangentMode); - } - - /** Get key's tangent weight mode. - * \return Tangent weight mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const - { - return mImpl->GetTangentWeightMode(); - } - - /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentWeightMode Weight mode. - * \param pMask Used to select the affected tangents. - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent weight mode first, and then be used to - * define which tangent to select to affect. - * - * Sample01: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); - * \endcode - * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, - * since they are not the same, it fails to cancel it out. - * Then the mask eWeightedRight will be used to define which tangent should be affected, - * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. - * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. - * - * Sample02: - * \code - * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); - * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); - * \endcode - * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, - * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. - * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, - * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. - * In total, after above calls, only eWeightedRight of this key is still affected, so - * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. - */ - void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) - { - mImpl->SetTangentWeightMode(pTangentWeightMode, pMask); - } - - /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) - * stays closer to where it should be. This is required because the weight value gets imprecise - * when it is small (it is stored as a fixed point value). This method must be called when - * setting the weight coming from a source where the precision is the same. It must be called - * after the tangent value has been set. - * \remark Do not use this call repetitively (from an interactive editor for example) because - * this function will create imprecision on the tangent value. - * \param pIndex FbxAnimCurveDef::EDataIndex - * \param pWeight New tangent weight value. - */ - void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) - { - mImpl->SetTangentWeightAndAdjustTangent(pIndex, pWeight); - } - - /** Get key's tangent velocity mode. - * \return Tangent velocity mode of the key. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const - { - return mImpl->GetTangentVelocityMode(); - } - - /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). - * \param pTangentVelocityMode Velocity mode. - * \param pMask Used to select the affected tangents - * \remarks This method is meaningful for cubic interpolation only. - * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to - * define which tangent to select to affect. - * - * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. - */ - void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) - { - mImpl->SetTangentVelocityMode(pTangentVelocityMode, pMask); - } - - /** Get key constant mode. - * \return Key constant mode. - * \remarks This method is meaningful for constant interpolation only. - * Using this method for non constant interpolated key will return unpredicted value. - */ - FbxAnimCurveDef::EConstantMode GetConstantMode() const - { - return mImpl->GetConstantMode(); - } - - /** Set key's constant mode. - * \param pMode Constant mode to set. - * \remarks This method is meaningful for constant interpolation only. - */ - void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) - { - mImpl->SetConstantMode(pMode); - } - - /** Get the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \return The value of the specified data. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) - * { - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); - * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); - * } - * \endcode - */ - float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const - { - return mImpl->GetDataFloat(pIndex); - } - - /** Set the value of specified data of the key. - * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. - * \param pValue The data value to set. - * - * \code - * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer - * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); - * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); - * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); - * \endcode - */ - void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) - { - mImpl->SetDataFloat(pIndex, pValue); - } - - /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. - * \param pVisibility Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) - { - mImpl->SetTangentVisibility(pVisibility); - } - - /** Return tangent visibility mode. - * \return Tangent visibility mode. - * \remarks This method is meaningful for cubic interpolation only. - */ - FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const - { - return mImpl->GetTangentVisibility(); - } - - /** Turn on or turn off the tangent break. - * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \param pVal Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - void SetBreak(bool pVal) - { - mImpl->SetBreak(pVal); - } - - /** Get if the tangent has a break. - * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * \return Break flag (\c true or \c false). - * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - */ - bool GetBreak() const - { - return mImpl->GetBreak(); - } - - /** Get key implementation. - * \return Pointer to implemented instance. - */ - FbxAnimCurveKey_Impl* GetImpl() const - { - return mImpl; - } - - /** Set allocator function - * \param pAllocatorFct Allocator function - */ - static void SetAllocatorFct(FbxAnimCurveKey_Impl* (*pAllocatorFct)()); - - /** Set copy allocator function - * \param pCopyAllocatorFct Copy allocator function - */ - static void SetCopyAllocatorFct(FbxAnimCurveKey_Impl* (*pCopyAllocatorFct)(FbxAnimCurveKey_Impl*)); - - /** Set deallocator function - * \param pDeallocatorFct Deallocator function - */ - static void SetDeallocatorFct(void (*pDeallocatorFct)(FbxAnimCurveKey_Impl*)); - -private: - static FbxAnimCurveKey_Impl* (*mAllocatorFct)(); - static FbxAnimCurveKey_Impl* (*mCopyAllocatorFct)(FbxAnimCurveKey_Impl*); - static void (*mDeallocatorFct)(FbxAnimCurveKey_Impl*); - FbxAnimCurveKey_Impl* mImpl; -}; - -class FbxScene; - -/** An animation curve, defined by a collection of keys (FbxAnimCurveKey), and indicating how a value changes over time. -* Since an animation curve is a function, on a given animation curve, only one key per time is -* allowed. The keys are sorted -* in time order. They can be accessed by their index on the curve, from 0 to FbxAnimCurve::KeyGetCount-1. -* The time unit in FBX (FbxTime) is 1/46186158000 of one second. -* -* Each key defines tangents and interpolation that modify the animation curve. -* Tangents control the way the animation curve enters and exits the keys. -* Interpolation indicates the animation curve's behavior between keys. -* -* Interpolation modes are -* \li Constant - Curve value stays the same until next key -* \li Linear - Animation curve is a straight line -* \li Cubic - Animation curve is a Bezier spline -* -* Tangent modes are -* \li Auto (Spline cardinal) -* \li Spline TCB (Tension, Continuity, Bias) -* \li User (Next slope at the left equal to slope at the right) -* -* Tangent modes can be overridden by more tangent options: -* \li Break (Independent left and right slopes) -* \li Clamp (Key should be flat if next or previous key has the same value) -* \li Time independent -* -* Tangent can be modified some more by adding weights and velocity. -* By default, the weights are 0.333 on either side of the key, and there is -* no velocity. Velocity settings speed up or slow down animation on either side of -* a key without changing the trajectory of the animation. Unlike Auto and Weight settings, -* Velocity changes the animation in time, but not in space. -* -* \nosubgrouping -* \remarks FbxAnimCurve is now the main animation animation curve object of the SDK. -* Users should always use this class to handle animation curve. -* -* \note When adding keys to an animation curve, use FbxAnimCurve::KeyModifyBegin and FbxAnimCurve::KeyModifyEnd. -* please refer to the following sample code: -* \code -* FbxTime lTime; -* int lKeyIndex = 0; - -* // Create curve -* FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - -* // Add keys to the curve -* lAnimCurve->KeyModifyBegin(); - -* // First key: time 0, value 0 -* lTime.SetSecondDouble(0.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - -* // Second key: time 20s, value -3600 -* // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. -* lTime.SetSecondDouble(20.0); -* lKeyIndex = lAnimCurve->KeyAdd(lTime); -* lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - -* // Done adding keys. -* lAnimCurve->KeyModifyEnd(); -* \endcode -* -*/ -class FBXSDK_DLL FbxAnimCurve : public FbxAnimCurveBase -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurve, FbxAnimCurveBase); - -public: - /** - * \name Animation curve creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created animation curve belongs. - * \param pName Name of the animation curve. - * \return Newly created animation curve - */ - static FbxAnimCurve* Create(FbxScene* pContainer, const char* pName); - //@} - - /** - * \name Key management. - * - */ - //@{ - /** Resize animation curve buffer to hold a certain number of keys. - * \param pKeyCount Number of keys the animation curve will eventually hold. - */ - virtual void ResizeKeyBuffer(int pKeyCount) = 0; - - /** Call this function prior to adding, removing or editing keys of an animation curve. - * Call function FbxAnimCurve::KeyModifyEnd() after modification. - */ - virtual void KeyModifyBegin () = 0; - - /** Call this function after adding, removing or editing keys of an animation curve. - * Function FbxAnimCurve::KeyModifyBegin() must have been called prior to modify the keys. - */ - virtual void KeyModifyEnd () = 0; - - //! Remove all the keys of the animation curve and free buffer memory. - void KeyClear () override = 0; - - /** Get the number of keys. - * \return Key count. - */ - int KeyGetCount () const override = 0; - - /** Add a given key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect the interpolation type and tangents of the neighboring keys. - * If there is already a key at the given time, the key is modified and no - * new key is added. - * - * \param pTime Time of the new key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) override = 0; - - /** Add a key at given time. The new key is appended after all the other animation curve's keys. - * Function FbxAnimCurve::KeyInsert() should be used instead if the key - * is to be added in the curve and not at the end. This function does not - * respect of the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, no key is added. - * - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, - * initialize this value to 0 and let it be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - * \remark Key value, interpolation type and tangent mode must be set - * explicitly afterwards. - */ - virtual int KeyAdd (FbxTime pTime, int* pLast = NULL) = 0; - - /** Set (or replace) key at given index with given key. - * \param pIndex Index of the key to be set or replaced. - * \param pKey New key at this index. - * \return \c true if key time is superior to previous key time - * and inferior to next key time, \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) override = 0; - - /** Remove key at given index. Other key indices are updated automatically. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - bool KeyRemove(int pIndex) override = 0 ; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return true on success. - */ - bool KeyRemove(int pStartIndex, int pEndIndex) override = 0; - - /** Insert a key at given time. - * This function should be used instead of FbxAnimCurve::KeyAdd() if the key - * is to be added in the curve and not at the end. It inserts the key in - * respect to the interpolation type and tangents of the neighboring keys. - * If there is already a key a the given time, the key is modified and no - * new key is added. - * \param pTime Time of the new key. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was inserted - * or already present. - * \remark Key value must be set explicitly afterwards. The - * interpolation type and tangent mode are copied from the previous key. - */ - virtual int KeyInsert ( FbxTime pTime, int* pLast = NULL ) = 0; - - /** Find key index for a given time. - * \param pTime Time of the key looked for. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Key index. The integer part of the key index gives the - * index of the closest key with a smaller time. The decimals give - * the relative position of given time compared to previous and next - * key times. Returns -1 if animation curve has no key. - * - * For example (using seconds for clarity), if there is a key at time 10s with index 5, and a key at - * time 11s with index 6, KeyFind(10.3s) would return 5.3. - */ - virtual double KeyFind (FbxTime pTime, int* pLast = NULL) = 0; - - /** Scale value of all keys. - * \param pMultValue Scale applied on key values. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValue (float pMultValue) = 0; - - /** Scale value and tangent of all keys. - * \param pMultValue Scale applied on key values and tangents. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyScaleValueAndTangent (float pMultValue) = 0; - //@} - - /** - * \name Key Manipulation - */ - - //@{ - /** General function to set key properties. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The key must have been previously created, for example using KeyAdd. - * Use FbxAnimCurve::SetTCB() in the specific case of setting a key with cubic interpolation and TCB tangent mode. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pInterpolation Key interpolation type. - * \param pTangentMode Key tangent mode (meaningful for cubic interpolation only). - * \param pData0 Value of right slope. - * \param pData1 Value of next left slope. - * \param pTangentWeightMode Weight mode, if used. - * \param pWeight0 Weight for right slope, if tangent weight mode is eWeightedRight or eWeightedAll. - * \param pWeight1 Weight for next left slope, if tangent weight mode is eWeightedNextLeft or eWeightedAll. - * \param pVelocity0 Velocity for right slope, if tangent velocity mode is eVelocityRight or eVelocityAll. - * \param pVelocity1 Velocity for next left slope, if tangent velocity mode is eVelocityNextLeft or eVelocityAll. - */ - virtual void KeySet(int pKeyIndex,FbxTime pTime, float pValue, FbxAnimCurveDef::EInterpolationType pInterpolation = FbxAnimCurveDef::eInterpolationCubic, FbxAnimCurveDef::ETangentMode pTangentMode = FbxAnimCurveDef::eTangentAuto, float pData0 = 0.0,float pData1 = 0.0,FbxAnimCurveDef::EWeightedMode pTangentWeightMode = FbxAnimCurveDef::eWeightedNone, float pWeight0 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pWeight1 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pVelocity0 = FbxAnimCurveDef::sDEFAULT_VELOCITY,float pVelocity1 = FbxAnimCurveDef::sDEFAULT_VELOCITY) = 0; - - /** Set a key with cubic interpolation, TCB tangent mode. - * The key at index pKeyIndex is retrieved and modified according to the other parameters. - * The TCB mode controls the tension, continuity, - * and bias of the curve. - * \param pKeyIndex Index of the key. - * \param pTime Key time. - * \param pValue Key value. - * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear - * the curve looks. When the tension is low, the curve looks rounder or wider. - * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. - * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. - */ - virtual void KeySetTCB(int pKeyIndex,FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; - - /** Get key's interpolation type. - * \param pKeyIndex Index of the queried key. - * \return Interpolation type of the queried key. - */ - virtual FbxAnimCurveDef::EInterpolationType KeyGetInterpolation(int pKeyIndex) const = 0; - - /** Set key's interpolation type. - * \param pKeyIndex Index of the key. - * \param pInterpolation Key interpolation type. - */ - virtual void KeySetInterpolation(int pKeyIndex, FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; - - /** Get key's constant mode. - * \note This method is only relevant if the key's interpolation type is constant (eInterpolationConstant). - * Using this method on a key with an other interpolation type will return unpredictable value. - * \param pKeyIndex Index of the queried key. - * \return Key constant mode. - */ - virtual FbxAnimCurveDef::EConstantMode KeyGetConstantMode(int pKeyIndex) const = 0; - - /** Get key's tangent mode. - * \param pKeyIndex Index of the key. - * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. - * This method is meaningful for cubic interpolation only. - * Using this method for non cubic interpolated key will return unpredictable value. - * \return Key tangent mode. - */ - virtual FbxAnimCurveDef::ETangentMode KeyGetTangentMode(int pKeyIndex, bool pIncludeOverrides = false ) const = 0; - - /** Set key's constant mode. - * This method is meaningful for constant interpolation only. - * \param pKeyIndex Index of the key. - * \param pMode Key constant mode. - */ - virtual void KeySetConstantMode(int pKeyIndex, FbxAnimCurveDef::EConstantMode pMode) = 0; - - /** Set key's tangent mode. - * This method is meaningful for cubic interpolation only. - * \param pKeyIndex Index of the key. - * \param pTangent Key tangent mode. - */ - virtual void KeySetTangentMode(int pKeyIndex, FbxAnimCurveDef::ETangentMode pTangent) = 0; - - /** Get key at given index. - * \param pIndex Index of the key on the animation curve. - * \return The key at the given index. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveKey KeyGet(int pIndex) const = 0; - - /** Get key value. - * \param pKeyIndex Index of the queried key. - * \return Key value. - */ - virtual float KeyGetValue(int pKeyIndex) const = 0; - - /** Set key value. - * \param pKeyIndex Index of the key. - * \param pValue The value to set. - */ - virtual void KeySetValue(int pKeyIndex, float pValue) = 0; - - /** Increment key value. - * \param pKeyIndex Index of the key. - * \param pValue Term added to the key value. - */ - virtual void KeyIncValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key value. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key value. - * \see FbxAnimCurve::KeyMultTangent. - */ - virtual void KeyMultValue(int pKeyIndex, float pValue) = 0; - - /** Multiply key tangents. - * \remark When multiplying a key value, tangents must be - * multiplied to conserve the same topology. - * \param pKeyIndex Index of the key. - * \param pValue Factor multiplying the key tangents. - */ - virtual void KeyMultTangent(int pKeyIndex, float pValue) = 0; - - /** Get key time - * \param pKeyIndex Index of the queried key. - * \return Key time (time at which this key is occurring). - */ - FbxTime KeyGetTime(int pKeyIndex) const override = 0; - - /** Set key time. - * \param pKeyIndex Index of the key. - * \param pTime Key time (time at which this key is occurring). - * \remark The new key time might modify the key index. - */ - void KeySetTime(int pKeyIndex, FbxTime pTime) override = 0; - - /** Set or unset the tangent break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the key. - * \param pVal Break flag (\c true or \c false). - */ - virtual void KeySetBreak(int pKeyIndex, bool pVal) = 0; - - /** Get if the tangent has a break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. - * When this flag is off, the key's left and right slope are equal. - * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. - * \param pKeyIndex Index of the queried key. - * \return Break flag (\c true or \c false). - */ - virtual bool KeyGetBreak(int pKeyIndex) const = 0; - //@} - - /** - * \name Key Tangent Management - */ - //@{ - /** Get the left derivative of a key. - * \param pIndex Index of the queried key. - * \return Left derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftDerivative(int pIndex) = 0; - - /** Set the left derivative of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetLeftDerivative(int pIndex, float pValue) = 0; - - /** Get the left auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Left auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetLeftAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Left derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetLeftDerivativeInfo(int pIndex) = 0; - - /** Set the left derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Left derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetLeftDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the right derivative of a key. - * \param pIndex Index of the key. - * \return Right derivative (Value over time (s)). - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightDerivative(int pIndex) = 0; - - /** Set the right derivative of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. - */ - virtual void KeySetRightDerivative(int pIndex, float pValue) = 0; - - /** Get the right auto parametric of a key. This is used to compute the slope of Auto and User keys. - * \param pIndex Index of the key. - * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. - * \return Right auto parametric. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual float KeyGetRightAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; - - /** Get the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the queried key. - * \return Right derivative info. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual FbxAnimCurveTangentInfo KeyGetRightDerivativeInfo(int pIndex) = 0; - - /** Set the right derivative info (of type FbxAnimCurveTangentInfo) of a key. - * \param pIndex Index of the key. - * \param pValue Right derivative info. - * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. - * If \c false, use the tangent info's auto parametric value to recompute the key derivative. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - * This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. - */ - virtual void KeySetRightDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; - - /** Get the left tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is left weighted (Weight mode is eWEIGHT_WEIGHTED_RIGHT or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsLeftTangentWeighted(int pIndex) const = 0; - - /** Get the right tangent weight mode of a key. - * \param pIndex Index of queried key. - * \return \c true if the key is right weighted (Weight mode is eWeightedRight or eWeightedAll). \c false otherwise. - * \remark Result is undetermined if animation curve has no key or if index - * is out of bounds. - */ - virtual bool KeyIsRightTangentWeighted(int pIndex) const = 0; - - /** Get the weight value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Left tangent weight, or eDEFAULT_WEIGHT (0.333...) if left tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetLeftTangentWeight(int pIndex) const = 0; - - /** Get the weight value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Right tangent weight, or eDEFAULT_WEIGHT (0.333...) if right tangent is not weighted. - * \remark This function is only relevant if key interpolation - * type is eInterpolationCubic. - */ - virtual float KeyGetRightTangentWeight(int pIndex) const = 0; - - /** Set the left tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the left tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if previous key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetLeftTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Set the right tangent weight of a key. - * \param pIndex Index of the key. - * \param pWeight Weight to set on the right tangent. - * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic and tangent mode is - * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is - * automatically set in weighted mode. - * The pAdjustTan option will only produce correct results provided that the tangent has already been - * set before calling this function. - */ - virtual void KeySetRightTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; - - /** Get the velocity value component of the left tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the left tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetLeftTangentVelocity( int pIndex) const = 0; - - /** Get the velocity value component of the right tangent of a key. - * \param pIndex Index of the key. - * \return Tangent velocity of the right tangent. - * \remarks This function is only relevant if key interpolation - * type is eInterpolationCubic - */ - virtual float KeyGetRightTangentVelocity( int pIndex) const = 0; - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate animation curve value at a given time. - * \param pTime Time of evaluation. - * If time falls between two keys, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode if relevant. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Animation curve value on given time, or animation curve's default value if animation curve - * has no key. - * \remarks This function takes extrapolation into account. - */ - float Evaluate (FbxTime pTime, int* pLast = NULL) override = 0; - - /** Evaluate animation curve value at a given key index. - * \param pIndex Any value from 0 to FbxAnimCurve::KeyGetCount() - 1. - * \return Animation curve value, or default value if animation curve - * has no key. - * - * \remarks If key index is not an integer value, animation curve value is - * interpolated according to previous key interpolation type and - * tangent mode, if relevant. - * This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - float EvaluateIndex( double pIndex) override = 0; - - /** Evaluate function left derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Left derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateLeftDerivative (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate function right derivative at given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Right derivative at given time. - * \remarks This function does not take extrapolation into account. - * Result is undetermined if index is out of bounds. - */ - virtual float EvaluateRightDerivative (FbxTime pTime, int* pLast = NULL) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation animation curve. - * This function retrieves the animation curve's time span. - * \param pTimeInterval Reference to receive start and end time. - * \return \c true on success, \c false otherwise. - */ - bool GetTimeInterval(FbxTimeSpan& pTimeInterval) override = 0; - - /** Copy animation curve content into current animation curve. - * \param pSource Animation curve to be copied (which will not be modified). - * \param pWithKeys If \c true, clear keys in current animation curve and copy - * keys from source animation curve. If \c false, keys in current animation curve - * are left as is. - */ - virtual void CopyFrom(FbxAnimCurve& pSource, bool pWithKeys = true) = 0; - - /** Retrieve the value of the parent curve node channel. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \return The value of the parent curve node channel of this curve. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual float GetValue(int pCurveNodeIndex=0) = 0; - - /** Set the value to the parent curve node channel. - * \param pValue The value to set to the parent curve node channel of this curve. - * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. - * \remark In most case, the curve will have a single curve node channel as destination. However, - * it is possible that more are connected, hence why we provide the curve node index parameter. */ - virtual void SetValue(float pValue, int pCurveNodeIndex=0) = 0; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual KFCurve* GetKFCurve() = 0; - bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) override = 0; - bool Retrieve(FbxIO* pFileObject) override = 0; - void ExtrapolationSyncCallback() override = 0; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h deleted file mode 100755 index cbbb634..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvebase.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ - -#include - -#include - -#include - -class FbxIO; - -/** This is the base class interface for the FBX animation curve keys. - * \nosubgrouping - * - * \remarks For an example of implemented class, please see FbxAnimCurveKey. - */ -class FBXSDK_DLL FbxAnimCurveKeyBase -{ -public: - /** Data member representing time value. - */ - FbxTime mTime; - - /** Constructor. - */ - FbxAnimCurveKeyBase() - { - mTime = FBXSDK_TIME_ZERO; - } - - /** Destructor. - */ - virtual ~FbxAnimCurveKeyBase() {}; - - /** Get time value. - * \return Time value. - */ - virtual FbxTime GetTime() const - { - return mTime; - } - - /** Set time value. - * \param pTime Time value to set. - */ - virtual void SetTime(const FbxTime& pTime) { - mTime = pTime; - } -}; - -/** This is the base class for implementing animation curves. - * \nosubgrouping - * It is a pure virtual class that defines the general interface to animation - * key management and manipulation. - * - * \see FbxAnimCurve for fully implemented class. - */ -class FBXSDK_DLL FbxAnimCurveBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurveBase, FbxObject); - -public: - /** - * \name Key management. - * - */ - //@{ - //! Remove all the keys and free buffer memory. - virtual void KeyClear () = 0; - - //! Get the number of keys. - virtual int KeyGetCount () const = 0; - - /** Add a key at given time. - * \param pTime Time to add the key. - * \param pKey Key to add. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Index of the key at given time, no matter if it was added - * or already present. - */ - virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0; - - /** Set key at given index. - * \param pIndex Index of where the key should be set. - * \param pKey The key to set. - * \return \c true if key time is superior to previous key and inferior - * to next key, \c false otherwise. - * \remarks Result is undetermined if function curve has no key or index - * is out of bounds. - */ - virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0; - - /** Remove key at given index. - * \param pIndex Index of key to remove. - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pIndex) = 0; - - /** Remove all the keys in the given range. - * \param pStartIndex Index of the first key to remove (inclusive). - * \param pEndIndex Index of the last key to remove (inclusive). - * \return \c true on success, \c false otherwise. - */ - virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0; - - //@} - - /** - * \name Key Time Manipulation - */ - //@{ - /** Get key time. - * \param pKeyIndex Key index. - * \return Key time (time at which this key is occurring). - */ - virtual FbxTime KeyGetTime(int /*pKeyIndex*/) const { return FBXSDK_TIME_INFINITE; } - - /** Set key time. - * \param pKeyIndex Key index. - * \param pTime Key time (time at which this key is occurring). - */ - virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0; - - //@} - - /** - * \name Extrapolation - * Extrapolation defines the function curve value before and after the keys. - * Pre-extrapolation defines the function curve value before first key. - * Post-extrapolation defines the function curve value after last key. - *
  • CONSTANT means a constant value matching the first/last key. - *
  • REPETITION means the entire function curve is looped. - *
  • MIRROR_REPETITION means the entire function curve is looped once backward, once forward and so on. - *
  • KEEP_SLOPE means a linear function with a slope matching the first/last key. - *
  • RELATIVE_REPETITION means entire function curve is looped and one loop is relative to the last loop in value.
- */ - //@{ - enum EExtrapolationType - { - eConstant = 1, - eRepetition = 2, - eMirrorRepetition = 3, - eKeepSlope = 4, - eRelativeRepetition = 5 - } ; - - /** Set pre-extrapolation mode. - * \param pExtrapolation The pre-extrapolation mode to set. - */ - void SetPreExtrapolation(EExtrapolationType pExtrapolation); - - /** Get pre-extrapolation mode. - * \return The current pre-extrapolation mode. - */ - EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; } - - /** Set pre-extrapolation count. - * \param pCount Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPreExtrapolationCount(unsigned long pCount); - - /** Get pre-extrapolation count. - * \return Number of repetitions if pre-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; } - - /** Set post-extrapolation mode. - * \param pExtrapolation The post-extrapolation mode to set. - */ - void SetPostExtrapolation(EExtrapolationType pExtrapolation); - - /** Get post-extrapolation mode. - * \return The current post-extrapolation mode. - */ - EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; } - - /** Set post-extrapolation count. - * \param pCount Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - void SetPostExtrapolationCount(unsigned long pCount); - - /** Get post-extrapolation count. - * \return Number of repetitions if post-extrapolation mode is - * REPETITION or MIRROR_REPETITION. - */ - unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; } - //@} - - /** - * \name Evaluation and Analysis - */ - //@{ - /** Evaluate curve value at a given time. - * \param pTime Time of evaluation. - * \param pLast Index of the last processed key to speed up search. If this - * function is called in a loop, initialize this value to 0 and let it - * be updated by each call. - * \return Evaluated curve value. - * \remarks This function take extrapolation into account. - */ - virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0; - - /** Evaluate curve value at the given key index. - * \param pIndex Any value from 0 to KeyGetCount() - 1. - * If this index falls between keys, the curve value will - * be interpolated based on the surrounding keys. - * \return Evaluated curve value. - */ - virtual float EvaluateIndex( double pIndex) = 0; - //@} - - /** - * \name Utility functions. - * - */ - //@{ - /** Find out start and end time of the animation curve. - * This function retrieves the Curve's time span. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - */ - virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0; - virtual bool Retrieve(FbxIO* pFileObject) = 0; - virtual void ExtrapolationSyncCallback() = 0; - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - EExtrapolationType mPreExtrapolation; - unsigned long mPreExtrapolationCount; - EExtrapolationType mPostExtrapolation; - unsigned long mPostExtrapolationCount; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h deleted file mode 100755 index e17a2c6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h +++ /dev/null @@ -1,1547 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvefilters.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ - -#include - -#include -#include -#include -#include -#include // for FbxLimits - -#include - -class FbxObject; -class FbxAnimStack; -class FbxRotationOrder; - -/** Base class for animation curve filters. -* Animation curves can be modified through filters. The filters act on -* the curve keys and values. They can move, add or remove keys, -* modify key values and key tangents, depending on the desired action -* of the filter. -* Some simple examples are: -* \li A scale filter, that would multiply all key -* values of a curve, and the curve default value, by a given scale. -* \li A constant key reducer filter, that would clean a curve by removing -* redundant keys that all have the same value. -* -* Filters can act on a single animation curve (FbxAnimCurve), but some -* filters need to work on many animation curves at the same time. For -* this reason, the input to a filter can be an animation stack (FbxAnimStack), an object (FbxObject) -* with animated properties, an animation curve node (FbxAnimCurveNode), or an array of animation -* curves (FbxAnimCurve). -* For example, an unroll filter acts on 3 Euler rotation curves (X, Y and Z) at the same time. -* -* A filter has a start time (that can be as low as TC_MINFINITY) and a stop time (that can be as high as TC_INFINITY). -* The filter is only applied to the parts of the animation curves that are between the start and stop time. -* -* The following are two code samples about how to use filter. -* Code sample to use sync filter: -* \code -* FbxAnimCurve* lWorkCurves[3]; //Put some keys in the lWorkCurves and they sync them up. -* FbxAnimCurveFilterKeySync lSyncFilter; -* FbxTime pStart, pStop; //Given start and stop time. -* lSyncFilter.SetStartTime( pStart ); -* lSyncFilter.SetStopTime ( pStop ); -* if( lSyncFilter.NeedApply( lWorkCurves, 3 ) ) -* { -* lSyncFilter.Apply( lWorkCurves, 3 ); -* } -* \endcode -* -* Code sample to use unroll filter: -* \code -* FbxAnimCurveNode* pCurveNode; //An Euler rotation animation curve node. -* FbxAnimCurveFilterUnroll lUnrollFilter; -* lUnrollFilter.SetForceAutoTangents(true); -* lUnrollFilter.Apply(*pCurveNode); -* \endcode -* -* \nosubgrouping -*/ -class FBXSDK_DLL FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilter(); - - //! Destructor. - virtual ~FbxAnimCurveFilter() {}; - - /** - * \name Member functions - */ - //@{ - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const {return NULL;} - - /** Get the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStartTime() {return mStart;} - - /** Set the start time for the application of the filter. - * The part of the animation curves before the start time will remain untouched. - * \param pTime The time to be set. - */ - void SetStartTime(FbxTime& pTime) { mStart = pTime; } - - /** Get the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \return The time expressed as FbxTime. - */ - FbxTime& GetStopTime() {return mStop;} - - /** Set the stop time for the application of the filter. - * The part of the animation curves after the stop time will remain untouched. - * \param pTime The time to be set. - */ - void SetStopTime(FbxTime& pTime) { mStop = pTime; } - - /** Get the index of start key on the given curve. This is the index of the first key - * after (or on) the filter's start time. - * \param pCurve Curve on which we want to retrieve the start key. - * \return Index of the start key. - */ - int GetStartKey(FbxAnimCurve& pCurve) const; - - /** Get the index of stop key on the given curve. This is the index of the last key - * before (or on) the filter's stop time. - * \param pCurve Curve on which we want to retrieve the stop key. - * \return Index of the stop key. - */ - int GetStopKey(FbxAnimCurve& pCurve) const; - - /** Check if any curve on the animation stack needs an application of the filter. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if all the animated properties of the object need an application of the filter. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animated property needs an application of the filter. - */ - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls NeedApply(FbxAnimCurve**, int) - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Check if an animation curve need an application of the filter. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Apply filter to all the curves stored in the animation stack. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter to all the animated properties of the object. - * \param pObj Object containing the animated properties to which the filter is applied. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on an array of animation curves. - * \param pCurve Array of curves to which the filter is applied. - * \param pCount Number of curves in the array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL) = 0; - - /** Reset the filter to its default parameters. - */ - virtual void Reset() - { - mStart= FBXSDK_TIME_MINUS_INFINITE; - mStop = FBXSDK_TIME_INFINITE; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static bool GetContinuousOffset(FbxRotationOrder& pOrder, FbxVector4& pOffset, FbxVector4& pNew, FbxVector4& pOld); - -protected: - void GetKFCurvesFromAnimCurve(FbxAnimCurve** pSrc, int pSrcCount, KFCurve** pDst, int& pDstCount); - - // Called for progress bar update, indicating what portion of work is done. - virtual void UpdateProgressInformation(FbxTime /*pStart*/, FbxTime /*pStop*/) {}; - - // Time span for applying the filter. - FbxTime mStart, mStop; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Constant key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterConstantKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterConstantKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterConstantKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the current derivative tolerance. - * \return The value of the current derivative tolerance. - */ - double GetDerivativeTolerance() const; - - /** Set the derivative tolerance. - * \param pValue Value derivative tolerance. - */ - void SetDerivativeTolerance(double pValue); - - /** Get the tolerance value. - * \return The tolerance value. - */ - double GetValueTolerance() const; - - /** Set the tolerance value. - * \param pValue Tolerance value. - */ - void SetValueTolerance(double pValue); - - /** Get the state of the KeepFirstAndLastKeys flag. - * \return \c true if the filter keeps the first and last keys. - */ - bool GetKeepFirstAndLastKeys() const; - - /** Set the state of the KeepFirstAndLastKeys flag. - * \param pKeepFirstAndLastKeys Set to \c true if you want the filter to keep the first and last keys. - */ - void SetKeepFirstAndLastKeys( bool pKeepFirstAndLastKeys ); - - /** Get the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \return \c true if the filter keeps the first key when all keys are constant. - */ - bool GetKeepOneKey() const; - - /** Set the state of the KeepOneKey flag. - * If all the keys are constant and this flag is c\ true, the filter will keep the first key. - * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. - * \param pKeepOneKey Set to \c true if you want the filter to keep the first key when all keys are constant. - */ - void SetKeepOneKey( bool pKeepOneKey ); - - /** Tell the filter to keep CUBIC curve keys which are not pure AUTO. - * \param pKeep KeepNotPureAutoKeys flag. - */ - void SetKeepNotPureAutoKeys(bool pKeep); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // - // If ValueTolerance is default, we use the thresholds here, otherwise - // it is the ValueTolerance that is used. (Mainly for backward compatibility) - // - void SetTranslationThreshold ( double pTranslationThreshold ); - void SetRotationThreshold ( double pRotationThreshold ); - void SetScalingThreshold ( double pScalingThreshold ); - void SetDefaultThreshold ( double pDefaultThreshold ); - - void SetModes(bool pExporting, FbxIOSettings& pIOS); - -private: - double mDerTol; - double mValTol; - - double mTranslationThreshold; - double mRotationThreshold; - double mScalingThreshold; - double mDefaultThreshold; - - bool mKeepFirstAndLastKeys; - bool mKeepOneKey; - bool mKeepNotPureAutoKeys; - - bool IsKeyConstant(FbxAnimCurve& pCurve, int pIndex, int pFirstIndex, int pLastIndex, double pMinValue, double pMaxValue, bool pOnlyCheckAutoKeys); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**This filter tries to compensate parent's scale to children's scale. - * This filter is used to convert scale animation curves of nodes whose transform inherit type are eInheritRrs. - * In the eInheritRrs mode, child objects do not inherit scaling from parent objects at all. - * When a parent object is scaled, the child does not scale, but translates in order to keep proportional distance between models. - * If you want to change the inherit type of certain nodes from eInheritRrs to eInheritRrSs, - * you may call this filter to compensate scale. - */ -class FBXSDK_DLL FbxAnimCurveFilterScaleCompensate : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleCompensate(); - //! Return name of the filter. - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /**Compensate parent's scale to children's scale. - * \param pCurve In pCurve, index 0 is the curve to be filtered. index 1 is the parent curve. - * \param pCount Need to be 2. - * \param pIOS IO setting object. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter will re-sample the animation curves. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxIOSettings& pIOS, FbxStatus* pStatus = NULL); - /** Always fail because this filter needs 2 curves. */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL); -}; - -/**GimbleKiller filter. - *\nosubgrouping - * This filter try to minimize gimble locks on rotation curves. - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks This filter has been superseded by the Unroll filter. It is strongly advised to use - * the latter. - */ -class FBXSDK_DLL FbxAnimCurveFilterGimbleKiller : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterGimbleKiller(); - - //! Destructor. - virtual ~FbxAnimCurveFilterGimbleKiller(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense. - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus = NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Return \c true if key sync filter is enabled. - bool GetApplyKeySyncFilter() const; - - /** Set to \c true to enable key sync filter. - * \param pFlag Key sync filter flag. - */ - void SetApplyKeySyncFilter(bool pFlag); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxRotationOrder* mRotationOrder; - bool mApplyKeySyncFilter; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Key reducing filter. - * \nosubgrouping - * Filter to test if each key is really necessary to define the curve - * at a definite degree of precision. It filters recursively from the - * strongest difference first. All useless keys are eliminated. - */ -class FBXSDK_DLL FbxAnimCurveFilterKeyReducer : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeyReducer(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeyReducer() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - //! Get precision. - double GetPrecision() const; - - /** Set precision. - * \param pPrecision The precision to set. - */ - void SetPrecision(double pPrecision); - - //! Return \c true key sync is applied at the end. - bool GetKeySync() const; - - /** Set to \c true to apply key sync at the end. - * \param pKeySync Key sync flag. - */ - void SetKeySync(bool pKeySync); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool KeyReducer(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, FbxTime pStart, FbxTime pStop); - bool Subdivise(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight); - double FindMaxError(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight, int& pSplit); - - // User parameters. - double mPrecision; - int mProgressCurrentRecurseLevel; - bool mKeySync; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key sync filter. - * \nosubgrouping - * Filter to synchronize the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterKeySync : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterKeySync(); - - //! Destructor. - virtual ~FbxAnimCurveFilterKeySync() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pAnimStack, pStatus); } - virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pObj, pAnimStack, pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** Check if the given animation curve need an application of the filter. - * \param pCurve Array of curves to test if they need the and application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** One single curve cannot be sync'ed. - * \param pCurve Curve to test if it needs application of filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true. - * \remarks Has no effect since there is only one curve. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return true; } -}; - - -/** Re-sampling filter. - * \nosubgrouping - * Filter to re-sample animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterResample : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterResample(); - - //! Destructor. - virtual ~FbxAnimCurveFilterResample() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply the filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Set if the keys are on frame. - * \param pKeysOnFrame value if keys are set on frame multiples. - */ - void SetKeysOnFrame(bool pKeysOnFrame); - - /** Get if the keys are on frame. - * \return Value if keys are on frame multiples. - */ - bool GetKeysOnFrame() const; - - /** Get the re-sampling period - * \return The re-sampling period. - */ - FbxTime GetPeriodTime() const; - - /** Set the re-sampling period - * \param pPeriod The re-sampling period to be set. - */ - void SetPeriodTime(FbxTime &pPeriod); - - - /**Get the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \return \c true if the intelligent mode is on, \c false otherwise. - * \remarks If intelligent mode is on, interpolation type and tangent mode of each created curve key - * are set equal to the interpolation type and tangent mode of the closest curve key encountered. - * If intelligent mode is off, the interpolation type of each created curve key - * will always be set to CUBIC, and tangent mode will always be set to AUTO. - */ - bool GetIntelligentMode() const; - - /** Set the mode that determines how the re-sample filter will set the interpolation and tangent of each key. - * \param pIntelligent \c true, set interpolation type and tangent mode of each created curve key equal to - * the interpolation type and tangent mode of the closest curve key encountered. - * \c false, always set the interpolation type of each created curve key to CUBIC, - * and always set the tangent mode to AUTO. - */ - void SetIntelligentMode( bool pIntelligent ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - bool mKeysOnFrame; - FbxTime mPeriod; - bool mIntelligent; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScale : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScale(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScale() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** Key scale filter. Instead of scaling by a constant float value, we will scale by using another anim curve - * Use a single channel curve only to scale - * \nosubgrouping - * Filter to scale the keys of a set of animation curves. -*/ -class FBXSDK_DLL FbxAnimCurveFilterScaleByCurve : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterScaleByCurve(); - - //! Destructor. - virtual ~FbxAnimCurveFilterScaleByCurve() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } - //@} - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method collects all the FbxAnimCurve objects connected to the curve node - * and calls Apply(FbxAnimCurve**, int) - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. (null curve) - */ - virtual void Reset(); - - /** Get the scale factor. - * \return The current scale factor. - */ - FbxAnimCurve* GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(FbxAnimCurve* pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxAnimCurve* mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/**Time shift and scale filter. - *\nosubgrouping - * Filter to shift key times and scale key values on animation curves. - */ -class FBXSDK_DLL FbxAnimCurveFilterTSS : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterTSS(); - - //! Destructor. - virtual ~FbxAnimCurveFilterTSS() {}; - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pAnimStack); } - virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pObj, pAnimStack); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurveNode); } - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurve, pCount); } - //@} - - /** Apply filter on an animation curve. - * \param pCurve Curve to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - */ - virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the time shift value. - * \return The time value used for the shift. - */ - FbxTime GetShift() const; - - /** Set the time shift value. - * \param pShift The time value used for the shift. - */ - void SetShift(FbxTime& pShift); - - /** Get the scale factor. - * \return The current scale factor. - */ - double GetScale() const; - - /** Set the scale factor. - * \param pScale The new scale factor to set. - */ - void SetScale(double pScale); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxTime mShift; - double mScale; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Unroll filter. - *\nosubgrouping - * Filter to apply continuous rotation values to animation curves. Due to Euler rotation - * properties, when a rotation angle cross over the 180 degree value, it becomes -179. This - * filter tries to keep a continuous rotation effectively by producing increasing values, to - * actually become 181 degrees, etc... - * \remarks The current implementation of this filter expects to process 3 curves at the same time. - * \remarks By default, this filter does not affect the tangent values of the modified keys. - * This means that, for CUBIC interpolation curves containing keys with USER or BREAK - * tangents, the unrolled curves will correctly match the original rotation exactly on - * the curve keys but not in-between them. The filter can be configured to automatically - * convert the USER and BREAK tangents to AUTO tangents by setting the ForceAutoTangents flag. - * Using the AUTO tangents mode can result in a more consistent interpolation between - * the curve keys. - */ -class FBXSDK_DLL FbxAnimCurveFilterUnroll : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterUnroll(); - - //! Destructor. - virtual ~FbxAnimCurveFilterUnroll() {}; - - /** Get the name of the filter. - * \return Pointer to the name. - */ - virtual const char* GetName() const; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve node needs an application of the filter. - * \param pCurveNode Curve node to test. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. - * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. - * It will validate that 3 animation curves are defined. - * If the condition is not met, the method will return \c false. - */ - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Check if the given animation curve needs an application of the filter. - * \param pCurve Array of curves to test if they need an application of the filter. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if at least one animation curve in the array needs an application of the filter, - * \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of an animation curve node. - * \param pCurveNode Curve node to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This filter expects a Euler rotation curve node with three curves. - */ - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curve. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks Because this method only receives an array of interdependent curves, this filter assumes - * that they are all coming from an Euler rotation anim curve node. Therefore, it expects - * \e pCount to be equal to 3. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** This filter expects to work with 3 interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** Get the unroll quality tolerance. - * \return The current unroll quality tolerance. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - double GetQualityTolerance() const; - - /** Set the unroll quality tolerance. - * \param pQualityTolerance The unroll quality tolerance to set. - * \remarks This value is only used when SetTestForPath() is set to true. - */ - void SetQualityTolerance(double pQualityTolerance); - - /** Get if the test path is enabled. - * \return \c true if test for path is enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - bool GetTestForPath() const; - - /** Set if the test path is enabled. - * \param pTestForPath Value to set if test for path is to be enabled. - * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep - * the continuity between this reference key and its following keys. - * If the test path is enabled, the filter can use the same key as reference key to update the following keys - * until the difference of continuity between the newly updated key and the reference key exceeds the - * quality tolerance, then the reference key will be updated as the newly updated key. - * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. - * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). - */ - void SetTestForPath(bool pTestForPath); - - /** Get the current state of the ForceAutoTangents flag. - * \return \c true if forcing AUTO tangents is enabled. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - bool GetForceAutoTangents() const; - - /** Set the new state of the ForceAutoTangents flag. - * \param pForceAutoTangents New value of the flag. - * \remarks This flag is considered only on curves using the CUBIC interpolation and - * keys with the USER or BREAK tangents. For any other type of interpolations - * or tangents, this flag is ignored. - */ - void SetForceAutoTangents(bool pForceAutoTangents); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetRotationOrder(FbxEuler::EOrder pOrder); - -private: - double InterpolationQualityFactor(FbxVector4& lV1, FbxVector4& lV2); - - double mQualityTolerance; - bool mTestForPath; - bool mForceAutoTangents; - FbxEuler::EOrder mRotationOrder; - int mRotationLayerType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Matrix conversion filter. - * \nosubgrouping - * \remarks The current implementation of this filter expects to process 9 curves. If the - * ApplyUnroll flag is enabled, set with a call to SetApplyUnroll(), the - * internal unroll filter will automatically be configured to convert USER and - * BREAK tangents to AUTO (refer to the FbxAnimCurveFilterUnroll documentation). - */ -class FBXSDK_DLL FbxAnimCurveFilterMatrixConverter : public FbxAnimCurveFilter -{ -public: - //! Constructor. - FbxAnimCurveFilterMatrixConverter(); - - //! Destructor. - virtual ~FbxAnimCurveFilterMatrixConverter(); - - /** Get the name of the filter. - * \return Pointer to name. - */ - virtual const char* GetName() const; - - /** - * \name Exposed parent class methods. - */ - //@{ - virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurve, pCount,pStatus); } - virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } - virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } - //@} - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false - */ - virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Check if the animation curve nodes need an application of the filter. - * \param pCurveNode Curves to test if they need an application of the filter. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the animation curve nodes need an application of the filter and - * \c false if they don't or an incompatible configuration is detected. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool NeedApply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense - * since this object would not know which curves to handle. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from - * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. - * \param pObj Object containing the properties to test. - * \param pAnimStack Animation stack where to retrieve the animation curves. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c false. - */ - virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } - - /** Apply filter on all the curves of the animation curve nodes. - * \param pCurveNode Curve nodes to which the filter is applied. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, - * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the - * scaling curves. - */ - virtual bool Apply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pCount Number of curves in array. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks \e pCount must be equal to 9 - * \remarks Because this method only manipulates FbxAnimCurve objects, it cannot set/get - * the channels value. If the calling application wishes to use this flavor of the - * Apply() method, it is strongly suggested to use the method: - * FbxAnimCurveFilterMatrixConverter::Apply(FbxAnimCurve** pCurve, double& pVals[9]); - * The Apply(FbxAnimCurveNode*) method is not affected by this limitation since - * the channel values can be accessed via the animation curve node. - */ - virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); - - /** Apply filter on the given animation curves. - * \param pCurve Array of curve to which the filter is applied. - * \param pVals Array of channel values (same size as \e pCurve). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the curve filtering operation was successful, \c false otherwise. - * \remarks This method assumes that \e pCurve contains exactly 9 curves. - * \remarks \e pVals must be correctly initialized with the channels values and, if the - * method calculates new values, they will be returned in this array. - * \remarks The curves are assumed to represent: Translation X,Y and Z, Rotation X,Y and Z and - * Scaling X,Y and Z in this order. - */ - bool Apply(FbxAnimCurve** pCurve, double* pVals, FbxStatus* pStatus=NULL); - - /** This filter expects to work with interdependent curves. Receiving one single curve is useless. - * \return \c false. - */ - virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; - - /** Reset the filter to its default parameters. - */ - virtual void Reset(); - - /** \enum EMatrixIndex Matrix index type - * - \e ePreGlobal - * - \e ePreTranslate - * - \e ePostTranslate - * - \e ePreRotate - * - \e ePreScale - * - \e ePostGlobal - * - \e eScaleOffset - * - \e eInactivePre - * - \e eInactivePost - * - \e eRotationPivot - * - \e eScalingPivot - * - \e eMatrixIndexCount - */ - enum EMatrixIndex - { - ePreGlobal, - ePreTranslate, - ePostTranslate, - ePreRotate, - ePostRotate, - ePreScale, - ePostScale, - ePostGlobal, - eScaleOffset, - eInactivePre, - eInactivePost, - eRotationPivot, - eScalingPivot, - eMatrixIndexCount - }; - - /** Get the Translation Rotation Scaling source matrix - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the source matrix. - */ - void GetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling source matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the source matrix. - */ - void SetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to receive the destination matrix. - */ - void GetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; - - /** Set the Translation Rotation Scaling destination matrix. - * \param pIndex The matrix ID. - * \param pMatrix The matrix used to set the destination matrix. - */ - void SetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); - - /** Get the re-sampling period. - * \return the re-sampling period. - */ - FbxTime GetResamplingPeriod () const; - - /** Set the re-sampling period. - * \param pResamplingPeriod The re-sampling period to be set. - */ - void SetResamplingPeriod (FbxTime& pResamplingPeriod); - - /** Get the current state of the flag which determines if the last key should be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \return \c true if last key is set exactly at end time, \c false otherwise. - */ - bool GetGenerateLastKeyExactlyAtEndTime() const; - - /** Set the flag to determine if the last key will be generated exactly at the end time or not. - * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. - * \param pFlag Set to \c true to generate the last key exactly at the end time, \c false otherwise. - */ - void SetGenerateLastKeyExactlyAtEndTime(bool pFlag); - - /** Check if re-sampling is on frame rate multiple. - * \return \c true if re-sampling is on a frame rate multiple. - */ - bool GetResamplingOnFrameRateMultiple() const; - - /** Set the re-sample on a frame rate multiple. - * \param pFlag The value to be set. - * \remarks It might be necessary that the starting time of the converted - * animation starts at an multiple of frame period starting from time 0. - * Most softwares play their animation at a definite frame rate, starting - * from time 0. As re-sampling occurs when we can't guarantee interpolation, - * keys must match with the moment when the curve is evaluated. - */ - void SetResamplingOnFrameRateMultiple(bool pFlag); - - /** Get the current state of the ApplyUnroll flag. - * \return \c true if the internal unroll filter is applied, \c false otherwise. - * \remarks Enable the internal unroll filter to get continuous rotation animation curves. - * \see FbxAnimCurveFilterUnroll. - */ - bool GetApplyUnroll() const; - - /** Set the state of the ApplyUnroll flag. - * \param pFlag Set to \c true to apply an unroll filter to the rotation curves internally, - * \ set to \c false otherwise. - */ - void SetApplyUnroll(bool pFlag); - - /** Get the current state of the flag that determines if constant key reducer is used or not. - * \return \c true if constant key reducer is applied, \c false otherwise. - */ - bool GetApplyConstantKeyReducer() const; - - /** Set the state of the flag that determines if constant key reducer is used or not. - * \param pFlag Set to \c true to apply the constant key reducer, - * \ Set to \c false otherwise. - */ - void SetApplyConstantKeyReducer(bool pFlag); - - /** Get the current state of the flag that determines if the translation data should be re-sampled or not. - * \return \c true if translation data is re-sampled upon conversion, \c false otherwise. - * \remarks If this flag is \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - bool GetResampleTranslation() const; - - /** Set the state of the flag that determines if the translation data should be re-sampled or not. - * \param pFlag Set to \c true to re-sample the translation data, set to \c false otherwise. - * \remarks If this flag is set to \c false, translation data must be calculated - * after the conversion process, overriding the re-sampling process. - */ - void SetResampleTranslation(bool pFlag); - - /** Set the rotation order of the source matrix. - * \param pOrder The rotation order to be set. - */ - void SetSrcRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the rotation order of the destination matrix. - * \param pOrder The rotation order to be set. - */ - void SetDestRotateOrder(FbxEuler::EOrder pOrder); - - /** Set the state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \param pVal Set to \c true to force usage of the filter, set to \c false otherwise. - */ - void SetForceApply(bool pVal); - - /** Get the current state of the flag to force usage of the filter even if source and destination matrices are equivalent. - * \return \c true to force usage of the filter, \c false otherwise. - */ - bool GetForceApply() const; - - /** Set the Translation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetTranslationLimits(FbxLimits &limit ); - - /** Set the rotation limits to be applied during conversion. Only active limits are applied. - * \param limit The rotation limit to be set. - */ - void SetRotationLimits(FbxLimits &limit ); - - /** Set the scaling limits to be applied during conversion. Only active limits are applied. - * \param limit The scaling limit to be set. - */ - void SetScalingLimits(FbxLimits &limit ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - // Nicer than referring to 0, 1, 2... - enum EAxisIndex {eX, eY, eZ, eAxisCount}; - - // Convert parameter cell. - class Cell; - - bool MatricesEquivalence(FbxAMatrix pMatArrayA [eMatrixIndexCount], FbxAMatrix pMatArrayB [eMatrixIndexCount]) const; - - bool DoConvert(FbxAnimCurve** pCurve, - double pT[eAxisCount], - double pR[eAxisCount], - double pS[eAxisCount], - FbxStatus* pStatus); - - void FindTimeInterval - ( - FbxTime& pStart, - FbxTime& pEnd, - FbxAnimCurve* pTFCurve [eAxisCount], - FbxAnimCurve* pRFCurve [eAxisCount], - FbxAnimCurve* pSFCurve [eAxisCount] - ); - - void ComputeTotalMatrix - ( - FbxAMatrix& pGlobal, - Cell& pCell, - FbxAMatrix& pTranslate, - FbxAMatrix& pRotate, - FbxAMatrix& pScale - ); - - void ExtractTransforms - ( - FbxVector4& pScaleVector, - FbxVector4& pRotateVector, - FbxVector4& pTranslateVector, - FbxAMatrix& pGlobal, - Cell& pDest - ); - - void SetDestFCurve(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxTime pTime, - FbxVector4 pVector, - FbxAnimCurveDef::EInterpolationType pInterpMode[eAxisCount], - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount]); - - void FillInterpAndTangeant(FbxTime& pTime, - FbxAnimCurve* pSourceCurve[eAxisCount], - FbxAnimCurveDef::EInterpolationType* pInterp, - FbxAnimCurveDef::ETangentMode* pTangeant); - - void SetDestFCurveTangeant(FbxAnimCurve* pCurve [eAxisCount], - int pIndex, - FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount], - FbxVector4 pKeyValue, - FbxVector4 pNextKeyValue); - - Cell* mSource; - Cell* mDest; - - FbxTime mResamplingPeriod; - bool mResamplingOnFrameRateMultiple; - - bool mApplyUnroll; - bool mApplyConstantKeyReducer; - - // PP : So that the concatenation of matrices takes into account the rotation order - FbxRotationOrder* mSrcRotationOrder; - FbxRotationOrder* mDestRotationOrder; - - // Set last key exactly at end time or a frame period later. - bool mGenerateLastKeyExactlyAtEndTime; - - // Translation re-sampling flag. - bool mResampleTranslation; - - // Force Apply - bool mForceApply; - - // Limits - FbxLimits mTranslationLimits; - FbxLimits mRotationLimits; - FbxLimits mScalingLimits; - - // internal usage - FbxAnimCurveNode* mRotationCurveNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h deleted file mode 100755 index 254d2a6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimcurvenode.h -#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ -#define _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ - -#include - -#include - -#include - -//Standard curve node names -#define FBXSDK_CURVENODE_TRANSFORM "Transform" -#define FBXSDK_CURVENODE_TRANSLATION "T" -#define FBXSDK_CURVENODE_ROTATION "R" -#define FBXSDK_CURVENODE_SCALING "S" -#define FBXSDK_CURVENODE_COMPONENT_X "X" -#define FBXSDK_CURVENODE_COMPONENT_Y "Y" -#define FBXSDK_CURVENODE_COMPONENT_Z "Z" -#define FBXSDK_CURVENODE_COLOR "Color" -#define FBXSDK_CURVENODE_COLOR_RED FBXSDK_CURVENODE_COMPONENT_X -#define FBXSDK_CURVENODE_COLOR_GREEN FBXSDK_CURVENODE_COMPONENT_Y -#define FBXSDK_CURVENODE_COLOR_BLUE FBXSDK_CURVENODE_COMPONENT_Z - -class FbxAnimStack; -class FbxAnimCurve; -class FbxMultiMap; -class KFCurveNode; - -/** This class is an composite of animation curves and is called as animation curve node. - * \nosubgrouping - * Animation curve node is used as the connection point for animation curves and other animation curve nodes - * associated to a property. FbxAnimCurveNode can be connected to other FbxAnimCurveNode, - * in this case, the destination animation curve node may be considered as "composite", \ref IsComposite(). - * remarks When created, the FbxAnimCurveNode has no valid channels unless it is created using the function CreateTypedCurveNode(). - * This function will add all the required channels to correctly match the number of values of the property. - * For instance, when CreateTypedCurveNode(pNode.LclTranslation, pScene) is called, the resulting - * FbxAnimCurveNode will automatically have 3 channels corresponding to the X,Y and Z components of the LclTranslation property. - * You can add and remove channels dynamically but can never remove the channels that have been added by the call to CreateTypedCurveNode(). - * - * However, the FBX SDK animation system's default implementation is to consider only the first curve connected to - * the channel. Therefore, if the caller connects multiple animation curves to the same channel, then it becomes - * the caller's responsibility to handle and manipulate these extra curves in a meaningful manner. - */ -class FBXSDK_DLL FbxAnimCurveNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxAnimCurveNode, FbxObject); - -public: - /** - * \name Utility functions. - * - */ - //@{ - /** Check if the animation curve node contains any animation key. - * \param pRecurse \c true to descend to the children if the animation curve node is composite. - * \return \c true if at least one animation curve that contains one or more animation keys is found, - * \c false otherwise. - * \remarks This method only considers the first animation curve connected to each channel. - * To check multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool IsAnimated(bool pRecurse=false) const; - - /** Find out start and end time of the animation. - * This function retrieves the including time span for all animation curves of this animation curve node. - * \param pTimeInterval Reference to receive start time and end time. - * \return \c true on success, \c false otherwise. - * \remarks \c false is also returned if this animation curve node has no animation. - * \remarks This method only considers the first animation curve connected to each channel. - * To find time interval of multiple animation curves that are connected to the same channel, it is the caller's - * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. - */ - bool GetAnimationInterval(FbxTimeSpan& pTimeInterval) const; - - /** Test this object to see if it is a composite FbxAnimCurveNode or a "leaf". - * A composite FbxAnimCurveNode is a FbxAnimCurveNode whose all source connections are FbxAnimCurveNode - * and its property channels is totally empty. It is just a container to take other FbxAnimCurveNode. - * \return \c true if this object is a composite, \c false otherwise. - */ - bool IsComposite() const; - - /** Recursively look for the FbxAnimCurveNode matching the passed named argument. - * \param pName Name of the FbxAnimCurveNode we are looking for. - * \return The found anim curve node or NULL. - * \remarks If pName is an empty string, this function automatically return NULL. - */ - FbxAnimCurveNode* Find(const char* pName); - - /** Create a FbxAnimCurveNode compatible with the specified property data type. - * \param pProperty The property that needs a FbxAnimCurveNode. - * \param pScene The scene the created FbxAnimCurveNode will belong to. - * \return The pointer to the newly created FbxAnimCurveNode. Returns NULL if an error occurred. - * \remarks This function does not connect the newly created FbxAnimCurveNode to the property. - * \remarks This function detects FbxDouble3, FbxDouble4 and FbxDouble4x4 properties DataTypes and - * automatically adds the required channels properties. Any other DataType is not - * specifically processed and the channels properties are left empty and need to be filled - * using the AddChannel() function. - */ - static FbxAnimCurveNode* CreateTypedCurveNode(FbxProperty& pProperty, FbxScene* pScene); - - /** Get the total number of property channels defined in this animation curve node. - * For composite animation curve nodes, since they do not contain any channels, this function will always return 0. - * \return The number of property channels. - */ - unsigned int GetChannelsCount() const; - - /** Get the index of the named channel. - * \param pChannelName Name of the channel for which we want the index. - * \return the index of the named channel or -1 if no channel with this name is found. - */ - int GetChannelIndex(const char* pChannelName) const; - - /** Get the name of the channel. - * \param pChannelId Index of the channel for which we want the name. - * \return the name of the indexed channel or "" if the index is invalid. - */ - FbxString GetChannelName(int pChannelId) const; - - /** Empties the property channels of this animation curve node. - * \remarks This function will remove all the channels added with the AddChannel() method - * regardless of their use and/or connections. - * But it can not remove the channels that are added by the call to CreateTypedCurveNode(). - */ - void ResetChannels(); - - /** Adds the specified channel property. - * \param pChnlName Channel name. - * \param pValue Default value of the channel. - * \return \c true if successful, \c false otherwise. - * \remarks It is an error to try to add a channel that already exists. - */ - template bool AddChannel(const char* pChnlName, T const &pValue) - { - if (!pChnlName || strlen(pChnlName)==0) return false; - FbxProperty c = GetChannel(pChnlName); - if (c.IsValid()) - { - return false; - } - - mChannels.BeginCreateOrFindProperty(); - FbxDataType dt = FbxGetDataTypeFromEnum(FbxTypeOf(pValue)); - c = FbxProperty::Create(mChannels, dt, pChnlName); - c.Set(pValue); - mChannels.EndCreateOrFindProperty(); - return true; - } - - /** Set the default value of the channel. - * \param pChnlName Channel name. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(const char* pChnlName, T pValue) - { - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) c.Set(pValue); - } - - /** Set the default value of the channel. - * \param pChnlId Channel index. - * \param pValue New default value of this channel. - */ - template void SetChannelValue(unsigned int pChnlId, T pValue) - { - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) c.Set(pValue); - } - - /** Get the default value of the channel. - * \param pChnlName Channel name. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(const char* pChnlName, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlName); - if( c.IsValid() ) v = c.Get(); - return v; - } - - /** Get the default value of the channel. - * \param pChnlId Channel index. - * \param pInitVal Value returned if the specified channel is invalid. - * \return The default value of this channel. - */ - template T GetChannelValue(unsigned int pChnlId, T pInitVal) - { - T v = pInitVal; - FbxProperty c = GetChannel(pChnlId); - if( c.IsValid() ) v = c.Get(); - return v; - } - //@} - - /** - * \name FbxAnimCurve management. - * - */ - //@{ - /** Disconnect the animation curve from the channel. - * \param pCurve The curve to disconnect from the channel. - * \param pChnlId The channel index. - * \return \c true if the disconnection was made, \c false if an error occurred. - */ - bool DisconnectFromChannel(FbxAnimCurve* pCurve, unsigned int pChnlId); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnl The name of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one, - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, const char* pChnl, bool pInFront = false); - - /** Connects the given animation curve to the specified channel. - * \param pCurve The curve to connect to the channel. - * \param pChnlId Index of the channel the curve is to be connected to. - * \param pInFront When \c true, all the current connections are moved after this one. - * making this one the first. By default, the connection is the last one. - * \return \c true if the connection was made, \c false if an error occurred. - * \remarks The index is 0 based. - */ - bool ConnectToChannel(FbxAnimCurve* pCurve, unsigned int pChnlId, bool pInFront = false); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannel Channel identifier. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * \remarks If the pChannel identifier is left NULL, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, const char* pChannel); - - /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \param pChannelId Channel index. - * \return Pointer to the FbxAnimCurve or NULL if an error occurred. - * \remarks pCurveNodeName cannot be empty. - * If the pChannelId is not assigned, the first valid channel will be used to create curve. - */ - FbxAnimCurve* CreateCurve(const char* pCurveNodeName, unsigned int pChannelId = 0); - - /** Get the number of FbxAnimCurve connected to the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. - * \return The number of animation curves on the specified channel or 0 if an error occurred. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return 0. - * If the specified channel cannot be found on the FbxAnimCurveNode with name pCurveNodeName, return 0. - * \remarks If this animation curve node is composite, this function will try to search all - * children animation curve nodes recursively for the one named pCurveNodeName. - * If the pCurveNodeName is left NULL, then only look for the curves on this animation curve node - * even if it is composite. - */ - int GetCurveCount(unsigned int pChannelId, const char* pCurveNodeName = NULL); - - /** Get the FbxAnimCurve of the specified channel. - * If this animation curve node is composite, this function will try to search all children animation curve nodes - * recursively for the one named pCurveNodeName. - * \param pChannelId Channel index. - * \param pId The index of the desired anim curve (in case there is more than one). - * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for (if this object is a composite). - * \return Pointer to the FbxAnimCurve that matches the criteria. - * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return NULL. - * If the specified channel cannot be found in the FbxAnimCurveNode with name pCurveNodeName, return NULL. - * \remarks If the pCurveNodeName is left NULL, then only search in the curves on this animation curve node - * even if it is composite. - */ - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId = 0, const char* pCurveNodeName = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - static const char* CurveNodeNameFrom(const char* pName); - static bool EvaluateChannels(FbxAnimCurveNode* pCurveNode, double* pData, unsigned int pCount, FbxTime pTime); - - void ReleaseKFCurveNode(); - void SyncChannelsWithKFCurve(); - - inline bool UseQuaternionInterpolation() {return mQuaternionInterpolation != 0;}; - bool SetQuaternionInterpolation(unsigned short pVal); - unsigned short GetQuaternionInterpolation() { return mQuaternionInterpolation; }; - void SetKFCurveNodeLayerType(FbxProperty& pProp); - KFCurveNode* GetKFCurveNode(bool pNoCreate=false); - -private: - friend class FbxAnimCurveFilterMatrixConverter; - friend class FbxAnimEvalClassic; - void Evaluate(double* pData, FbxTime pTime); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - - FbxAnimCurveNode* Find(FbxAnimCurveNode* pRoot, const FbxString& pName); - -private: - FbxProperty GetChannel(const char* pChnl); - FbxProperty GetChannel(unsigned int pChnlId); - - friend void CollectAnimFromCurveNode(void **lSrc, void *fcn, unsigned int nbCrvs, FbxAnimCurveNode *cn, FbxMultiMap* pNickToAnimCurveTimeWarpsSet, FbxMultiMap& pNickToKFCurveNodeWarpSet); - - unsigned char mNonRemovableChannels; - FbxProperty mChannels; - FbxProperty* mCurrentlyProcessed; - KFCurveNode* mFCurveNode; - bool* mOwnedKFCurve; - int mKFCurveNodeLayerType; - unsigned short mQuaternionInterpolation; - int* mDirectIndexes; - int mDirectIndexesSize; - - FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId, FbxAnimCurveNode* pCurveNode); - bool ConnectToChannel(FbxProperty& p, FbxAnimCurve* pCurve, bool pInFront); - void ResetKFCurveNode(); - void SyncKFCurveValue(FbxAnimCurve* pCurve, double pVal); - void ReleaseOwnershipOfKFCurve(int pIndex); - - template FbxAnimCurve* CreateCurveGeneral(const char* pCurveNodeName, T pChannel); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -FBXSDK_DLL void GetAllAnimCurves(FbxAnimStack* pAnimStack, FbxArray& pCurves); -FBXSDK_DLL void GetAllAnimCurves(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxArray& pCurves); - -#include - -#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVENODE_H - diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h deleted file mode 100755 index 2b4a69f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalclassic.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ - -#include - -#include -#include -#include - -#include - -/** An evaluator implementation that behaves like the original FBX SDK (2010 and previous) evaluation system. - * - * It works by implementing the abstract class FbxAnimEvaluator, which is used as the main interface for evaluators. - * \note While this class can be instanced at any time, it is preferable to access the evaluator via the function - * FbxScene::GetEvaluator(), which will automatically return the default evaluator used in the current FBX SDK. - * This is very useful because it will allow the user to use the very same evaluator used by the FBX SDK internally. - * \see FbxAnimEvaluator, FbxScene - */ -class FBXSDK_DLL FbxAnimEvalClassic : public FbxAnimEvaluator -{ - FBXSDK_OBJECT_DECLARE(FbxAnimEvalClassic, FbxAnimEvaluator); - - enum EBlendType {eSimple, eRotation, eScaling}; - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time - * and update the mLT, mLR, mLT fields of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \remarks Values of properties LclTranslation, LclRotation, LclScaling will be updated to pResult->mLT, pResult->mLR, pResult->mLS. - * The translation, rotation and scaling limits are taken into consideration. - * Only LclTranslation, LclRotation and LclScaling are taken into accounts, no other transform, such as pivot, offset are calculated here. - */ - void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack); - - /** Calculate global transform of a node at the specified time and update the mGX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated global transform will be updated to pResult->mGX. - * ComputeGlobalTransform must be called after the call to ComputeTRSLocal, there is a dependency. - * All transforms are taken into account, including: - * Transform = Translation * RotationOffset* RotationPivot* PreRotation * LocalRotation* PostRotation * RotationPivotInverse* ScalingOffset* ScalingPivot* LocalScaling* ScalingPivotInverse - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Calculate local transform of a node at the specified time and update the mLX field of the node's NodeEvalState. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pStack The current animation stack used by the evaluator. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node - * \remarks Calculated local transform will be updated to pResult->mLX. - * ComputeLocalTransform must be called after the call to ComputeGlobalTransform, there is a dependency. - * The local transform matrix is calculated in this way: ParentGlobal.Inverse() * Global, all transforms such as pre/post rotation are taken into consideration. - * To get values of properties LclTranslation, LclRotaion and LclScaling at the specified time, please use ComputeTRSLocal. - * Also,the translation, rotation and scaling limits are taken into consideration. - */ - void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); - - /** Check if the property has corresponding animation curve node on the specified animation layer. - * \param pProperty The property to check. - * \param pAnimLayer The animation layer to check on. - * \return \c true if pProperty has corresponding animation curve node on pAnimLayer, \c false otherwise. - */ - bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time on certain animation layer. - * \param pResult The NodeEvalState to update. - * \param pNode The node to evaluate. - * \param pLT To take the calculated value of LclTranslation. - * \param pLR To take the calculated value of LclRotation. - * \param pLS To take the calculated value of LclScaling. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pBlend if \c false, only animation on current layer will be taken into account, and pResult->mCurveNode will be updated accordingly. - if \c true, the value on this animation layer will be blended with current value of pLT, pLR and pLS. - * \remarks The usual usage of this function is to call it on the first animation layer with out blending, then call it repeatedly on other - * animation layers with blending to get the blended value of pLT, pLR and pLS of all animation layers. - */ - void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, const FbxTime& pTime, FbxAnimLayer* pLayer, bool pBlend); - - /** Blend value of a property on certain animation layer to pResult. - * \param pResult The blended value of the property. - * \param pResultSize The elements number of the property value. - * \param pProperty The property to be blended. - * \param pEvalState An auxiliary parameter, the NodeEvalState to get rotation order for eRotation type blending. - * \param pTime The time used for evaluate. - * \param pLayer The current animation layer used to do the calculation. - * \param pType There are three blend types, eSimple, eRotation, eScaling - * \remarks The blended value will be kept in pResult. - */ - void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, const FbxTime& pTime, FbxAnimLayer* pLayer, EBlendType pType); - - /** Blends two arrays of values in a simple weighted linear blending way. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \see BlendMode - * \remarks The blended value will be kept in pResult. - */ - void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode); - - /** Blends two arrays of values representing rotations. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pRotAccuMode The rotation accumulation mode. - * \param pRotationOrder The rotation order to be used for blending. - * \remarks The blended value will be kept in pResult. And this blend should not be used with anything other than rotations. - * \see BlendMode, RotationAccumulationMode - */ - void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder); - - /** Blends two arrays of values representing scaling transforms. - * \param pResult The first array of values to be blended. - * \param pResultSize The number of elements of the first value to be blended. - * \param pApply The second array of values to be blended. - * \param pApplySize The number of elements of the second value to be blended. - * \param pWeight The weight used to blend. - * \param pBlendMode The blend mode to use. - * \param pScaleAccuMode The scaling accumulation mode. - * \remarks The blended value will be kept in pResult.And this blend should not be used with anything other than scaling transform. - * \see BlendMode, ScaleAccumulationMode. - */ - void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) override; - void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) override; - -private: - double* mPropertyValues; - int mPropertySize; - - double* mCurveNodeEvalValues; - int mCurveNodeEvalSize; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h deleted file mode 100755 index acd3268..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevalstate.h +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevalstate.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ - -#include - -#include -#include -#include - -#include - -class FbxTransform; -class FbxNodeEvalState; -class FbxPropertyEvalState; - -typedef FbxMap FbxNodeEvalStateMap; -typedef FbxMap FbxPropertyEvalStateMap; -typedef FbxMap FbxAnimLayerCurveNodeMap; -typedef FbxMap FbxPropertyCurveNodeMap; - -/** This class hold results from animation evaluations. To clear an evaluation state for re-use, it is possible to invalidate - * or to reset it. For the same scene with the same objects, invalidating an evaluation state is the quickest way to clear - * an evaluation state object for re-use because it only zeroes all the entries. A reset will delete all the entries. - * Unless the scene changes, for performance purposes it is recommended to invalidate evaluation states instead of resetting them. - * - * \internal - * \see FbxAnimEvaluator - */ -class FBXSDK_DLL FbxAnimEvalState -{ -public: - /** Get the time associated with this evaluation state. - * \return The time associated with this evaluation state. */ - FbxTime GetTime() const; - - /** Reset an evaluation state by deleting the cache it contains. This will remove all entries in the cache. */ - void Reset(); - - /** Start a new evaluation state frame by zeroing the cache it contains, and changing its associated time. All - * node and property entries will remain in the list, but their evaluation state will not be up-to-date. - * \param pTime The time at which the evaluation state should be set after the invalidation. */ - void Begin(const FbxTime& pTime); - - /** Invalidate a node evaluation state to force update on next evaluation. - * \param pNode The node that needs to be updated on next evaluation. */ - void Flush(FbxNode* pNode); - - /** Invalidate a property evaluation state to force update on next evaluation. - * \param pProperty The property that needs to be updated on next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Get node transform evaluation result from the evaluation state. - * \param pNode The node for which the value was stored. - * \return The global or local matrix transform for the specified node. */ - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode); - - /** Get a property evaluation result from the evaluation state. - * \param pProperty The property for which the value was stored. - * \return The result value that was stored. */ - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAnimEvalState(); - virtual ~FbxAnimEvalState(); - -private: - FbxTime mTime; - FbxNodeEvalStateMap mNodeMap; - FbxPropertyEvalStateMap mPropertyMap; - FbxPropertyCurveNodeMap mPropertyCurveNodeMap; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -//! This class serves as the base class for an evaluation state element. -class FBXSDK_DLL FbxEvalState -{ -public: - FbxEvalState() : mUpToDate(false){} - bool mUpToDate; //!< If \c true, the evaluation state element is up-to-date for the current evaluation time. -}; - -//! This class hold results for node evaluation. -class FBXSDK_DLL FbxNodeEvalState : public FbxEvalState -{ -public: - FbxNodeEvalState(FbxNode* pNode); - - FbxVector4 mLT; //!< Used to hold result value of LclTranslation property from node evaluation. - FbxVector4 mLR; //!< Used to hold result value of LclRotation property from node evaluation. - FbxVector4 mLS; //!< Used to hold result value of LclScaling property from node evaluation. - FbxAMatrix mLX; //!< Used to hold result local transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - FbxAMatrix mGX; //!< Used to hold result global transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. - - /** mTransform is used to hold the corresponding FbxTransform of the node. - * This FbxTransform takes all transform-related info, including pivots, offsets, pre/post rotation, rotation order, limits, etc. - * The evaluation is actually done through the utility functions of FbxTransform. */ - FbxTransform* mTransform; -}; - -//! This class hold results for property evaluation. -class FBXSDK_DLL FbxPropertyEvalState : public FbxEvalState -{ -public: - FbxPropertyEvalState(FbxProperty& pProperty); - virtual ~FbxPropertyEvalState(); - - template inline T Get() const { T lValue; mValue->Get(&lValue, FbxTypeOf(lValue)); return lValue; } - template inline bool Set(const T& pValue){ return mValue->Set(&pValue, FbxTypeOf(pValue)); } - - FbxPropertyValue* mValue; -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h deleted file mode 100755 index fed0ff8..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimevaluator.h +++ /dev/null @@ -1,205 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimevaluator.h -#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ -#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ - -#include - -#include -#include -#include - -#include - -/** The principal interface for animation evaluators. The animation evaluator is used to compute node transforms -* and property values at specific times during an animation. Evaluators simplify the process of computing transform -* matrices by taking into account all of the parameters, such as pre- and post-rotations. -* This class is abstract so that SDK users can implement their own evaluator if needed. The default evaluator used -* by the FBX SDK is a FbxAnimEvalClassic. The default evaluator can be queried with the function -* FbxScene::GetEvaluator(), and can be changed using FbxScene::SetEvaluator(). -* -* When working with scene nodes, the evaluator will always return an affine transform matrix that contains the -* translation, rotation and scale of that node. -* -* When working with object properties, the evaluator will always return a structure that can contain as many components -* as the property can have. For example, an RGB color property would return a structure containing 3 channels. The -* class FbxAnimCurveNode is used as a data container to store those values, because it can handle as many channels as -* needed, even if the property is not a real curve node . -* -* Below is a typical usage of the evaluator class to retrieve the global transform matrix of each node in a scene: -* \code -* //Here we assume the user already imported a scene... -* for( int i = 0, c = MyScene->GetMemberCount(FbxNode::ClassId); i < c; ++i ) -* { -* FbxNode* CurrentNode = MyScene->GetMember(FbxNode::ClassId, i); -* FbxAMatrix& NodeGlobalTransform = MyScene->GetEvaluator()->GetNodeGlobalTransform(CurrentNode); -* } -* -* //There is an equivalent call to retrieve a node's global transform, which is exactly the same as calling Scene->GetEvaluator() : -* FbxAMatrix& NodeGlobalTransform = CurrentNode->EvaluateGlobalTransform(); -* \endcode -* -* Another typical usage of the evaluator class, but this time to retrieve the value of an animated color property on a material: -* \code -* //Assuming the user imported a scene with objects and materials... -* FbxColor Color = MyMaterial->GetDiffuseColor()->EvaluateValue(); -* \endcode -* -* \note Note that all the methods to retrieve global/local matrices as well as property values returns references. -* This is important for performance purposes, to prevent an extra memory copy. -* \see FbxScene, FbxAnimEvalClassic, FbxAnimCurveNode */ -class FBXSDK_DLL FbxAnimEvaluator : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimEvaluator, FbxObject); - -public: - /** Returns a node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. */ - FbxAMatrix& GetNodeGlobalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns a node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pNode The node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). */ - FbxAMatrix& GetNodeLocalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalTranslation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalRotation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns the value of a node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pNode The transform node to evaluate. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. */ - FbxVector4& GetNodeLocalScaling(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Get a property's value at the specified time using the template type provided. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time converted to the template type provided, if possible. - * \remark If the property type versus the template cannot be converted, the result is unknown. */ -#if defined(__GNUC__) && (__GNUC__ < 4) - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ FbxPropertyEvalState* s = GetPropertyEvalState(pProperty, pTime, pForceEval); return s->Get(); } -#else - template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ return GetPropertyEvalState(pProperty, pTime, pForceEval)->Get(); } -#endif - - /** Get a property's value at the specified time. - * \param pProperty The property to evaluate. - * \param pTime The time used for evaluate. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The property value at the specified time. Use FbxPropertyValue::Get() to retrieve the value into a pointer location of your choice. */ - FbxPropertyValue& GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false); - - /** Get a property curve node from the evaluation state for quick access. - * \param pProperty The property to search for its animation curve node. - * \param pAnimLayer The animation layer on which the animation curve node must be searched. - * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ - FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); - - /** Validate if the given time value is within animation stack time span range. - * \param pTime The time value to validate. - * \return The new validated time, clamped by the animation stack time span range. - * \remarks If no animation stack are found, time zero is returned. This function is not used by the evaluator itself. */ - FbxTime ValidateTime(const FbxTime& pTime); - - /** Completely reset the evaluation state cache by deleting all entries. This reset automatically happens when changing the current context. */ - void Reset(); - - /** Clears the specified node evaluation state cache, so the next time the evaluation is called for this node it get refreshed. - * \param pNode The node that needs to be re-evaluated in next evaluation. */ - void Flush(FbxNode* pNode); - - /** Clears the specified property evaluation state cache, so the next time the evaluation is called for this property it get refreshed. - * \param pProperty The property that needs to be re-evaluated in next evaluation. */ - void Flush(FbxProperty& pProperty); - - /** Compute node local TRS from global transform. Doesn't change cached state for current time. - * \param[out] pRetLT Computed local translation. - * \param[out] pRetLR Computed local rotation. - * \param[out] pRetLS Computed local scaling. - * \param pNode The transform node to evaluate. - * \param pGX Global transformation state. - * \param pTime The time used for evaluate.If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account. - * \param pApplyTarget Applies the necessary transform to align into the target node. - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. */ - void ComputeLocalTRSFromGlobal(FbxVector4& pRetLT, FbxVector4& pRetLR, FbxVector4& pRetLS, FbxNode* pNode, FbxAMatrix& pGX, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) = 0; - virtual void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) = 0; - - FbxAnimEvalState* GetDefaultEvalState(); - FbxAnimEvalState* GetEvalState(const FbxTime& pTime); - FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget, bool pForceEval); - FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval); - -private: - FbxAnimEvalState* mEvalState; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Evaluate the property at the specified time using the template type provided. -* \param pProperty The property to evaluate. -* \param pTime The time used for evaluate. -* \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. -* \return The property value at the specified time converted to the template type provided, if possible. -* \remark If the property type versus the template cannot be converted, the result is unknown. */ -template inline T EvaluatePropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval) -{ - return pProperty.GetAnimationEvaluator()-> template GetPropertyValue(pProperty, pTime, pForceEval); -} - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h deleted file mode 100755 index fdef8ce..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimlayer.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_ANIMATION_LAYER_H_ -#define _FBXSDK_SCENE_ANIMATION_LAYER_H_ - -#include - -#include - -#include - -class FbxAnimCurveNode; - -/** The animation layer is a collection of animation curve nodes. Its purpose is to store - * a variable number of FbxAnimCurveNode. The class provides different states flags (bool properties), - * an animatable weight, and the blending mode flag to indicate how the data on this layer is interacting - * with the data of the other layers during the evaluation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the weight factor. - * The weight factor is the percentage of influence this layer has during - * the evaluation. - * - * Default value is \c 100.0 - */ - FbxPropertyT Weight; - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** This property stores the blend mode. - * The blend mode is used to specify how this layer influences the animation evaluation. See the - * BlendMode enumeration for the description of the modes. - * - * Default value is \c eModeAdditive - */ - FbxPropertyT BlendMode; - - /** This property stores the rotation accumulation mode. - * This option indicates how the rotation curves on this layer combine with any preceding layers - * that share the same attributes. See the RotationAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eRotationByLayer - */ - FbxPropertyT RotationAccumulationMode; - - /** This property stores the scale accumulation mode. - * This option indicates how the scale curves on this layer combine with any preceding layers - * that share the same attributes. See the ScaleAccumulationMode enumeration for the description - * of the modes. - * - * Default value is \c eScaleMultiply - */ - FbxPropertyT ScaleAccumulationMode; - - //! Reset this object properties to their default value. - void Reset(); - - /** - * \name BlendMode bypass functions - * This section provides methods to bypass the current layer blend mode by data type. - * When the state is \c true, the evaluators that are processing the layer will - * need to consider that, for the given data type, the blend mode is forced to be Overwrite. - * If the state is left to its default \c false value, then the layer blend mode applies. - * \remarks This section only supports the basic types defined in the fbxtypes.h header file. - */ - //@{ - - /** Set the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \param pState The new state of the bypass flag. - * \remarks If pType is eFbxTypeCount, then pState is applied to all the data types. - */ - void SetBlendModeBypass(EFbxType pType, bool pState); - - /** Get the current state of the bypass flag for the given data type. - * \param pType The fbxType identifier. - * \return The current state of the flag for a valid pType value and \c false in any other case. - */ - bool GetBlendModeBypass(EFbxType pType); - - //@} - - - /** Blend mode type between animation layers. - */ - enum EBlendMode - { - eBlendAdditive, //! The layer "adds" its animation to layers that precede it in the stack and affect the same attributes. - eBlendOverride, //! The layer "overrides" the animation of any layer that shares the same attributes and precedes it in the stack. - eBlendOverridePassthrough /*! mBlendModeBypass; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_LAYER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h deleted file mode 100755 index a3613d1..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimstack.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimstack.h -#ifndef _FBXSDK_SCENE_ANIMATION_STACK_H_ -#define _FBXSDK_SCENE_ANIMATION_STACK_H_ - -#include - -#include -#include - -#include - -// these symbols are defined for backward compatibility -#define FBXSDK_TAKENODE_DEFAULT_NAME "Default" -#define FBXSDK_ROOTCURVE_DEFAULT_NAME "Defaults" - -class FbxTakeInfo; -class FbxThumbnail; -class FbxAnimEvaluator; - -/** The Animation stack is a collection of animation layers. The Fbx document can have one or - * more animation stacks. Each stack can be viewed as one "take" in the previous versions of the FBX SDK. - * The "stack" terminology comes from the fact that the object contains 1 to n animation layers that - * are evaluated according to their blending modes to produce a resulting animation for a given attribute. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAnimStack : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAnimStack, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores a description string of this animation stack. - * This string can be used to display, in a human readable format, information - * relative to this animation stack object. - * Default value is "". - * \remarks The applications using the FBX SDK are not required to manipulate this information. - */ - FbxPropertyT Description; - - /** This property stores the local time span "Start" time. - * This "start" time should be seen as a time marker. Typically it would represent the whole animation - * starting time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0. - */ - FbxPropertyT LocalStart; - - /** This property stores the local time span "Stop" time. - * This "stop" time should be seen as a time marker. Typically it would represent the whole animation - * ending time but its use (and update) is left to the calling application (with one exception occurring - * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored - * to the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT LocalStop; - - /** This property stores the reference time span "Start" time. - * This reference start time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStart; - - /** This property stores the reference time span "Stop" time. - * This reference stop time is another time marker that can be used by the calling application. The FBX SDK - * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. - * - * Default value is 0 - */ - FbxPropertyT ReferenceStop; - - /** Reset the object time spans either to their default values or from the pTakeInfo structure, if provided. - * \param pTakeInfo The take info to be used during reset. - */ - void Reset(const FbxTakeInfo* pTakeInfo = NULL); - - /** - * \name Utility functions. - * - */ - //@{ - /** Get the LocalStart and LocalStop time properties as a FbxTimeSpan. - * \return The current local time span. - */ - FbxTimeSpan GetLocalTimeSpan() const; - - /** Set the LocalStart and LocalStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new local time span. - */ - void SetLocalTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Get the ReferenceStart and ReferenceStop time properties as a FbxTimeSpan. - * \return The current reference time span. - */ - FbxTimeSpan GetReferenceTimeSpan() const; - - /** Set the ReferenceStart and ReferenceStop time properties from a FbxTimeSpan. - * \param pTimeSpan The new reference time span. - */ - void SetReferenceTimeSpan(FbxTimeSpan& pTimeSpan); - - /** Bake all the animation layers on the base layer. - * This function will process all the properties on every animation layer and generate a re-sampled set of - * animation keys (representing the layers' evaluated result) on the base layer. Once this operation is completed - * successfully, all the layers (except the base one) are destroyed. Properties that are only defined on the base - * layer will remain unaffected by the re-sampling. The stack local timespan is updated with the overall animation range. - * - * \param pEvaluator The layer evaluator. This is the engine that evaluates the overall result of any given - * property according to the layers flags. - * \param pStart The start time of the re-sampling range. - * \param pStop The stop time of the re-sampling range. - * \param pPeriod The time increment for the re-sampling. - * \return \c true if the operation was successful and \c false in case of errors. - * \remarks If this AnimStack contains only one AnimLayer, the function will return false and do nothing. - */ - bool BakeLayers(FbxAnimEvaluator* pEvaluator, FbxTime pStart, FbxTime pStop, FbxTime pPeriod); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_STACK_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h b/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h deleted file mode 100755 index adb6afe..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/animation/fbxanimutilities.h +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimutilities.h -#ifndef _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ -#define _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxMultiMap; -class FbxObject; -class FbxProperty; -class FbxScene; -class FbxIO; -class FbxAnimStack; -class FbxAnimLayer; -class FbxAnimCurveNode; -class FbxAnimCurve; - -class FBXSDK_DLL FbxAnimUtilities -{ -public: - /** Inspects all the properties of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \return \c true if at least one property is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsAnimated(FbxObject* pObj); - - /** Inspects the specified property of the given object for animation curves. - * \param pObj Pointer to the object to query. - * \param pPropertyName Name of the inspected property. - * \param pChannelName Name of the specific channel of the inspected property. - * \return \c true if the specified channel is animated and \c false otherwise. - * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. - */ - static bool IsChannelAnimated(FbxObject* pObj, const char* pPropertyName, const char* pChannelName = NULL); - - class FBXSDK_DLL FbxAnimSplitDef - { - public: - FbxString mName; - FbxTime mStart; - FbxTime mEnd; - - FbxAnimSplitDef() - { - mName = "unnamed"; - mStart = 0; - mEnd = 0; - } - - FbxAnimSplitDef(const FbxString& pName, FbxTime& pStart, FbxTime& pEnd) - { - mName = pName; - mStart = pStart; - mEnd = pEnd; - } - - FbxAnimSplitDef& operator =(const FbxAnimSplitDef& pRhs) - { - mName = pRhs.mName; - mStart = pRhs.mStart; - mEnd = pRhs.mEnd; - return *this; - } - } ; - - class FBXSDK_DLL CurveNodeIntfce - { - public: - // pData is a pointer to the private KFCurveNode - CurveNodeIntfce(void* pData); - ~CurveNodeIntfce(); - - FbxHandle GetHandle(); - - char* GetTimeWarpName() const; - CurveNodeIntfce GetTimeWarp(); - - CurveNodeIntfce GetLayer(int pId); - - int GetCount(); - void* GetHandle(unsigned int pId); - void* GetCurveHandle(int pId = -1); - void SetCurveHandle(void* pCurveHandle, int pId = -1); - CurveNodeIntfce FindRecursive(const char* pName); - - bool IsValid() { return mImp != NULL; } - CurveNodeIntfce& operator=(CurveNodeIntfce& lRhs) - { - mImp = lRhs.mImp; - return *this; - } - - bool operator==(CurveNodeIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - void* mImp; - }; - - class FBXSDK_DLL CurveIntfce - { - public: - // pData is a pointer to the private KFCurve - CurveIntfce(void* pData); - CurveIntfce(FbxAnimCurve* pAnimCurve); - ~CurveIntfce(); - - float GetValue(); - void SetValue(float pVal); - int KeyGetCount(); - - void* GetCurveHandle(); - void SetCurveHandle(void* pData); - - int GetPreExtrapolation(); - int GetPreExtrapolationCount(); - int GetPostExtrapolation(); - int GetPostExtrapolationCount(); - - - bool IsValid() { return mImp != NULL; } - CurveIntfce& operator=(CurveIntfce& lRhs) - { - mImp = lRhs.mImp; - mIsAnimCurveImp = lRhs.mIsAnimCurveImp; - return *this; - } - - bool operator==(CurveIntfce& lRhs) - { - return (mImp == lRhs.mImp); - } - - private: - friend class FbxAnimUtilities; - - void* mImp; - bool mIsAnimCurveImp; - }; - - static int SplitAnimationIntoMultipleStacks(FbxScene* pScene, const FbxArray& pAnimSplitDefinitions, const FbxAnimStack* pSrcAnimStack, FbxArray& pDstStacks); - static void ShareAnimCurves(FbxProperty& pDstProperty, FbxProperty& pSrcProperty, FbxScene* pScene); - - // Encapsulate use of private animation data - static void SetTimeWarpSet(FbxMultiMap* pTWset); - - static CurveNodeIntfce CreateCurveNode(const char* pName); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject); - static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject, CurveNodeIntfce& pParent, bool pOnlyDefaults = false); - static CurveNodeIntfce CreateTimeWarpNode(FbxAnimCurve* pAnimCurve, const char* pFalloffName); - - static CurveNodeIntfce GrabCurveNode(FbxAnimCurveNode* pCN); - static void RestrieveCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void StoreCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); - static void ReleaseCurveNode(FbxAnimCurveNode* pCurveNode); - static void DestroyCurveNode(CurveNodeIntfce& pData); - static void DestroyCurve(CurveIntfce& pData); - - static void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, CurveNodeIntfce& pData, FbxMultiMap& pTimeWarpsKFCurveNodes); - static void MergeLayerAndTimeWarp(FbxObject* pObj, FbxAnimLayer* pAnimLayer); - - static void CopyFrom(FbxAnimCurve* pAC, CurveIntfce& pFC); - static bool CompareCurves(FbxAnimCurve* pAC1, FbxAnimCurve* pAC2); - - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, FbxAnimCurveDef::EInterpolationType pInterpolation, FbxAnimCurveDef::ETangentMode pTangentMode, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, bool pAddStopKey = false); - static void Resample(FbxAnimCurve &pCurve, FbxTime pPeriod, FbxTime pStart = FBXSDK_TIME_MINUS_INFINITE, FbxTime pStop = FBXSDK_TIME_INFINITE, bool pKeysOnFrame = false); -}; - -#include - -#endif /* _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h deleted file mode 100755 index f86f572..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacter.h +++ /dev/null @@ -1,971 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ - -#include - -#include -#include - -#include - -class FbxControlSet; - -/** \class FbxCharacterLink - * - * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains - * the transform matrix (offset) for the linked character's node. - */ -class FBXSDK_DLL FbxCharacterLink -{ -public: - /** \enum EType Character link type */ - enum EType - { - eCharacterLink, - eControlSetLink, - eControlSetEffector, - eControlSetEffectorAux - }; - - /** Default Constructor. */ - FbxCharacterLink(); - - /** Copy Constructor. */ - FbxCharacterLink(const FbxCharacterLink& pCharacterLink); - - /** Assignment operation - * \param pCharacterLink Another FbxCharacterLink object assigned to this one. - */ - FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink); - - /** Reset to default values. */ - void Reset(); - - FbxNode* mNode; //! The character's node in hierarchy linked to this character link. - FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention. - FbxVector4 mOffsetT; //! Get offset position of this character link. - FbxVector4 mOffsetR; //! Get offset rotation of this character link. - FbxVector4 mOffsetS; //! Get offset scale of this character link. - FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link - bool mHasRotSpace; //! \c true if this character link has a defined rotation space - FbxLimits mRLimits; //! Get the rotation limits of this character link - FbxVector4 mPreRotation; //! Get the PreRotation of this character link - FbxVector4 mPostRotation; //! Get the PostRotation of this character link - int mRotOrder; //! Get the rotation order of this character link - double mAxisLen; //! Get the axis length of this character link - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxProperty mPropertyLink; - FbxProperty mPropertyOffsetT; - FbxProperty mPropertyOffsetR; - FbxProperty mPropertyOffsetS; - FbxProperty mPropertyParentOffsetR; - FbxProperty mPropertyTemplateName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton). - * This class contains all methods to setup an exported character or query information on an imported character. - * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet - * - * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node. - * For more information see FbxCharacterLink class documentation. - * - * \see FbxCharacterLink, FbxControlSet - */ -class FBXSDK_DLL FbxCharacter : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint); - -public: - /** \enum EInputType Character input type. - * - \e eInputActor Not supported. - * - \e eInputCharacter The character's input is another character. - * - \e eInputMarkerSet The character's input is a control rig. - * - \e eOutputMarkerSet Not supported. - * - \e eInputStancePose The character's input is the stance pose. - */ - enum EInputType - { - eInputActor, - eInputCharacter, - eInputMarkerSet, - eOutputMarkerSet, - eInputStancePose - }; - - /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */ - enum EGroupId - { - eGroupBase, - eGroupAuxiliary, - eGroupSpine, - eGroupRoll, - eGroupSpecial, - eGroupLeftHand, - eGroupRightHand, - eGroupProps, - eGroupGameModeParent, - eGroupNeck, - eGroupLeftFoot, - eGroupRightFoot, - eGroupFloorContact, - eGroupIdCount - }; - - /** \enum ENodeId Define ID for each character node. - */ - enum ENodeId - { - eHips, - eLeftHip, - eLeftKnee, - eLeftAnkle, - eLeftFoot, - eRightHip, - eRightKnee, - eRightAnkle, - eRightFoot, - eWaist, - eChest, - eLeftCollar, - eLeftShoulder, - eLeftElbow, - eLeftWrist, - eRightCollar, - eRightShoulder, - eRightElbow, - eRightWrist, - eNeck, - eHead, - eLeftHipRoll, - eLeftKneeRoll, - eRightHipRoll, - eRightKneeRoll, - eLeftShoulderRoll, - eLeftElbowRoll, - eRightShoulderRoll, - eRightElbowRoll, - eSpine2, - eSpine3, - eSpine4, - eSpine5, - eSpine6, - eSpine7, - eSpine8, - eSpine9, - eLeftThumbA, - eLeftThumbB, - eLeftThumbC, - eLeftIndexA, - eLeftIndexB, - eLeftIndexC, - eLeftMiddleA, - eLeftMiddleB, - eLeftMiddleC, - eLeftRingA, - eLeftRingB, - eLeftRingC, - eLeftPinkyA, - eLeftPinkyB, - eLeftPinkyC, - eRightThumbA, - eRightThumbB, - eRightThumbC, - eRightIndexA, - eRightIndexB, - eRightIndexC, - eRightMiddleA, - eRightMiddleB, - eRightMiddleC, - eRightRingA, - eRightRingB, - eRightRingC, - eRightPinkyA, - eRightPinkyB, - eRightPinkyC, - eReference, - eLeftFloor, - eRightFloor, - eHipsTranslation, - eProps0, - eProps1, - eProps2, - eProps3, - eProps4, - eGameModeParentLeftHipRoll, - eGameModeParentLeftKnee, - eGameModeParentLeftKneeRoll, - eGameModeParentRightHipRoll, - eGameModeParentRightKnee, - eGameModeParentRightKneeRoll, - eGameModeParentLeftShoulderRoll, - eGameModeParentLeftElbow, - eGameModeParentLeftElbowRoll, - eGameModeParentRightShoulderRoll, - eGameModeParentRightElbow, - eGameModeParentRightElbowRoll, - eLeftUpLegRoll, - eLeftLegRoll, - eRightUpLegRoll, - eRightLegRoll, - eLeftArmRoll, - eLeftForeArmRoll, - eRightArmRoll, - eRightForeArmRoll, - eLeftHandFloor, - eRightHandFloor, - eLeftHand, - eRightHand, - eNeck1, - eNeck2, - eNeck3, - eNeck4, - eNeck5, - eNeck6, - eNeck7, - eNeck8, - eNeck9, - eLeftInHandThumb, - eLeftThumbD, - eLeftInHandIndex, - eLeftIndexD, - eLeftInHandMiddle, - eLeftMiddleD, - eLeftInHandRing, - eLeftRingD, - eLeftInHandPinky, - eLeftPinkyD, - eLeftInHandExtraFinger, - eLeftExtraFingerA, - eLeftExtraFingerB, - eLeftExtraFingerC, - eLeftExtraFingerD, - eRightInHandThumb, - eRightThumbD, - eRightInHandIndex, - eRightIndexD, - eRightInHandMiddle, - eRightMiddleD, - eRightInHandRing, - eRightRingD, - eRightInHandPinky, - eRightPinkyD, - eRightInHandExtraFinger, - eRightExtraFingerA, - eRightExtraFingerB, - eRightExtraFingerC, - eRightExtraFingerD, - eLeftInFootThumb, - eLeftFootThumbA, - eLeftFootThumbB, - eLeftFootThumbC, - eLeftFootThumbD, - eLeftInFootIndex, - eLeftFootIndexA, - eLeftFootIndexB, - eLeftFootIndexC, - eLeftFootIndexD, - eLeftInFootMiddle, - eLeftFootMiddleA, - eLeftFootMiddleB, - eLeftFootMiddleC, - eLeftFootMiddleD, - eLeftInFootRing, - eLeftFootRingA, - eLeftFootRingB, - eLeftFootRingC, - eLeftFootRingD, - eLeftInFootPinky, - eLeftFootPinkyA, - eLeftFootPinkyB, - eLeftFootPinkyC, - eLeftFootPinkyD, - eLeftInFootExtraFinger, - eLeftFootExtraFingerA, - eLeftFootExtraFingerB, - eLeftFootExtraFingerC, - eLeftFootExtraFingerD, - eRightInFootThumb, - eRightFootThumbA, - eRightFootThumbB, - eRightFootThumbC, - eRightFootThumbD, - eRightInFootIndex, - eRightFootIndexA, - eRightFootIndexB, - eRightFootIndexC, - eRightFootIndexD, - eRightInFootMiddle, - eRightFootMiddleA, - eRightFootMiddleB, - eRightFootMiddleC, - eRightFootMiddleD, - eRightInFootRing, - eRightFootRingA, - eRightFootRingB, - eRightFootRingC, - eRightFootRingD, - eRightInFootPinky, - eRightFootPinkyA, - eRightFootPinkyB, - eRightFootPinkyC, - eRightFootPinkyD, - eRightInFootExtraFinger, - eRightFootExtraFingerA, - eRightFootExtraFingerB, - eRightFootExtraFingerC, - eRightFootExtraFingerD, - eLeftCollarExtra, - eRightCollarExtra, - eLeafLeftHipRoll1, - eLeafLeftKneeRoll1, - eLeafRightHipRoll1, - eLeafRightKneeRoll1, - eLeafLeftShoulderRoll1, - eLeafLeftElbowRoll1, - eLeafRightShoulderRoll1, - eLeafRightElbowRoll1, - eLeafLeftHipRoll2, - eLeafLeftKneeRoll2, - eLeafRightHipRoll2, - eLeafRightKneeRoll2, - eLeafLeftShoulderRoll2, - eLeafLeftElbowRoll2, - eLeafRightShoulderRoll2, - eLeafRightElbowRoll2, - eLeafLeftHipRoll3, - eLeafLeftKneeRoll3, - eLeafRightHipRoll3, - eLeafRightKneeRoll3, - eLeafLeftShoulderRoll3, - eLeafLeftElbowRoll3, - eLeafRightShoulderRoll3, - eLeafRightElbowRoll3, - eLeafLeftHipRoll4, - eLeafLeftKneeRoll4, - eLeafRightHipRoll4, - eLeafRightKneeRoll4, - eLeafLeftShoulderRoll4, - eLeafLeftElbowRoll4, - eLeafRightShoulderRoll4, - eLeafRightElbowRoll4, - eLeafLeftHipRoll5, - eLeafLeftKneeRoll5, - eLeafRightHipRoll5, - eLeafRightKneeRoll5, - eLeafLeftShoulderRoll5, - eLeafLeftElbowRoll5, - eLeafRightShoulderRoll5, - eLeafRightElbowRoll5, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - enum EOffAutoUser - { - eParamModeOff, - eParamModeAuto, - eParamModeUser - }; - - enum EAutoUser - { - eParamModeAuto2, - eParamModeUser2 - }; - - enum EPostureMode - { - ePostureBiped, - ePostureQuadriped, - ePostureCount - }; - - enum EFloorPivot - { - eFloorPivotAuto, - eFloorPivotAnkle, - eFloorPivotToes, - eFloorPivotCount - }; - - enum ERollExtractionMode - { - eRelativeRollExtraction, - eAbsoluteRollExtraction, - eRollExtractionTypeCount - }; - - enum EHipsTranslationMode - { - eHipsTranslationWorldRigid, - eHipsTranslationBodyRigid, - eHipsTranslationTypeCount - }; - - enum EFootContactType - { - eFootTypeNormal, - eFootTypeAnkle, - eFootTypeToeBase, - eFootTypeHoof, - eFootContactModeCount - }; - - enum EHandContactType - { - eHandTypeNormal, - eHandTypeWrist, - eHandTypeFingerBase, - eHandTypeHoof, - eHandContactModeCount - }; - - enum EFingerContactMode - { - eFingerContactModeSticky, - eFingerContactModeSpread, - eFingerContactModeStickySpread, - eFingerContactModeCount - }; - - enum EContactBehaviour - { - eContactNeverSync, - eContactSyncOnKey, - eContactAlwaysSync, - eContactBehaviorCount - }; - - enum EPropertyUnit - { - ePropertyNoUnit, - ePropertyPercent, - ePropertySecond, - ePropertyCentimeter, - ePropertyDegree, - ePropertyEnum, - ePropertyReal - }; - - enum EErrorCode - { - eInternalError, - eErrorCount - }; - - /** Reset to default values. - * - Input type will be set to eInputStancePose. - * - Input object will be set to NULL. - * - Each Character link will be reset. - * - The control set will be reset. - */ - void Reset(); - - /** Set input type and index. - * \param pInputType Input type. - * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL. - */ - void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL); - - //! Get input type. - EInputType GetInputType() const; - - /** Get input actor or character. - * \return Pointer or \c Null, depending on the input type. - * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter. - * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter. - */ - FbxObject* GetInputObject() const; - - /** Associate a character link to a given character node ID. If a character link already exists for this character node ID, - * the character link will be removed. - * \param pCharacterNodeId Character node ID. - * \param pCharacterLink Character link. - * \param pUpdateObjectList Set to \c true to update the object list (default value). - * \return \c true if successful, \c false otherwise. - */ - bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true); - - /** Get a character link associated with a given character node ID. - * \param pCharacterNodeId ID of character node requested. - * \param pCharacterLink Optional pointer to receive the character link if function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const; - - /** Get control set associated with the character. - * \return Return the control set associated with the character. - */ - FbxControlSet& GetControlSet() const; - - /** Get number of elements in a given character group. - * \param pCharacterGroupId Character group ID. - * \return The number of elements in the pCharacterGroupId character group. - */ - static int GetCharacterGroupCount(EGroupId pCharacterGroupId); - - /** Get character node ID of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node ID. - */ - static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex); - - - /** Get character node name of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node name. - */ - static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Get character node version of an element in a given character group. - * \param pCharacterGroupId Character group ID. - * \param pIndex Character index ID. - * \return Character node version. - */ - static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex); - - /** Find the character group index associated with a given character node name. - * \param pName Character node name. - * \param pForceGroupId Set to \c true to force the character group ID. - * \param pCharacterGroupId Receives character group ID. - * \param pIndex Receives character index ID. - * \return \c true if successful, otherwise \c false. - */ - static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node group and index of a given character node ID. - * \param pCharacterNodeId Character node ID. - * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter - * \param pIndex if the Character node ID is found, the method returns the index through this parameter - * \remarks Only works for a character node ID that is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex); - - /** Get character node version of a given character node ID. - * \param pCharacterNodeId Character node ID to get version. - * \param pVersion if the node ID is found, the method returns the version through this parameter - * \remarks Only works for a character node ID is part of a group. - * \return \c true if successful, \c false otherwise. - */ - static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion); - - /** Get character node name associated with a given character node ID. - * \param pCharacterNodeId Character node ID to get name. - * \param pName if the node ID is found, the method returns the node name through this parameter - * Since the Pointer points to internal data, it is not necessary to allocate a string buffer - * before calling this function. - * \return \c true if a name exists for the given node ID. - */ - static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName); - - /** Get the character node ID associated with a given character node name. - * \param pName Character node name to get node ID. - * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter - * \return \c true if a node ID exists for the given node name. - */ - static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId); - - // FbxCharacter Properties - FbxPropertyT PullIterationCount; - FbxPropertyT Posture; - FbxPropertyT ForceActorSpace; - FbxPropertyT ScaleCompensation; - FbxPropertyT ScaleCompensationMode; - FbxPropertyT HipsHeightCompensation; - FbxPropertyT HipsHeightCompensationMode; - FbxPropertyT AnkleHeightCompensation; - FbxPropertyT AnkleHeightCompensationMode; - FbxPropertyT AnkleProximityCompensation; - FbxPropertyT AnkleProximityCompensationMode; - FbxPropertyT MassCenterCompensation; - FbxPropertyT ApplyLimits; - FbxPropertyT ChestReduction; - FbxPropertyT CollarReduction; - FbxPropertyT NeckReduction; - FbxPropertyT HeadReduction; - FbxPropertyT ReachActorLeftAnkle; - FbxPropertyT ReachActorRightAnkle; - FbxPropertyT ReachActorLeftKnee; - FbxPropertyT ReachActorRightKnee; - FbxPropertyT ReachActorChest; - FbxPropertyT ReachActorHead; - FbxPropertyT ReachActorLeftWrist; - FbxPropertyT ReachActorRightWrist; - FbxPropertyT ReachActorLeftElbow; - FbxPropertyT ReachActorRightElbow; - FbxPropertyT ReachActorLeftFingerBase; - FbxPropertyT ReachActorRightFingerBase; - FbxPropertyT ReachActorLeftToesBase; - FbxPropertyT ReachActorRightToesBase; - FbxPropertyT ReachActorLeftFingerBaseRotation; - FbxPropertyT ReachActorRightFingerBaseRotation; - FbxPropertyT ReachActorLeftToesBaseRotation; - FbxPropertyT ReachActorRightToesBaseRotation; - FbxPropertyT ReachActorLeftAnkleRotation; - FbxPropertyT ReachActorRightAnkleRotation; - FbxPropertyT ReachActorHeadRotation; - FbxPropertyT ReachActorLeftWristRotation; - FbxPropertyT ReachActorRightWristRotation; - FbxPropertyT ReachActorChestRotation; - FbxPropertyT ReachActorLowerChestRotation; - FbxPropertyT HipsTOffset; - FbxPropertyT ChestTOffset; - FbxPropertyT RollExtractionMode; - FbxPropertyT LeftUpLegRoll; - FbxPropertyT LeftUpLegRollMode; - FbxPropertyT LeftLegRoll; - FbxPropertyT LeftLegRollMode; - FbxPropertyT RightUpLegRoll; - FbxPropertyT RightUpLegRollMode; - FbxPropertyT RightLegRoll; - FbxPropertyT RightLegRollMode; - FbxPropertyT LeftArmRoll; - FbxPropertyT LeftArmRollMode; - FbxPropertyT LeftForeArmRoll; - FbxPropertyT LeftForeArmRollMode; - FbxPropertyT RightArmRoll; - FbxPropertyT RightArmRollMode; - FbxPropertyT RightForeArmRoll; - FbxPropertyT RightForeArmRollMode; - FbxPropertyT LeftUpLegRollEx; - FbxPropertyT LeftUpLegRollExMode; - FbxPropertyT LeftLegRollEx; - FbxPropertyT LeftLegRollExMode; - FbxPropertyT RightUpLegRollEx; - FbxPropertyT RightUpLegRollExMode; - FbxPropertyT RightLegRollEx; - FbxPropertyT RightLegRollExMode; - FbxPropertyT LeftArmRollEx; - FbxPropertyT LeftArmRollExMode; - FbxPropertyT LeftForeArmRollEx; - FbxPropertyT LeftForeArmRollExMode; - FbxPropertyT RightArmRollEx; - FbxPropertyT RightArmRollExMode; - FbxPropertyT RightForeArmExRoll; - FbxPropertyT RightForeArmRollExMode; - FbxPropertyT ContactBehaviour; - FbxPropertyT FootFloorContact; - FbxPropertyT FootAutomaticToes; - FbxPropertyT FootFloorPivot; - FbxPropertyT FootBottomToAnkle; - FbxPropertyT FootBackToAnkle; - FbxPropertyT FootMiddleToAnkle; - FbxPropertyT FootFrontToMiddle; - FbxPropertyT FootInToAnkle; - FbxPropertyT FootOutToAnkle; - FbxPropertyT FootContactSize; - FbxPropertyT FootFingerContact; - FbxPropertyT FootContactType; - FbxPropertyT FootFingerContactMode; - FbxPropertyT FootContactStiffness; - FbxPropertyT FootFingerContactRollStiffness; - FbxPropertyT HandFloorContact; - FbxPropertyT HandAutomaticFingers; - FbxPropertyT HandFloorPivot; - FbxPropertyT HandBottomToWrist; - FbxPropertyT HandBackToWrist; - FbxPropertyT HandMiddleToWrist; - FbxPropertyT HandFrontToMiddle; - FbxPropertyT HandInToWrist; - FbxPropertyT HandOutToWrist; - FbxPropertyT HandContactSize; - FbxPropertyT HandFingerContact; - FbxPropertyT HandContactType; - FbxPropertyT HandFingerContactMode; - FbxPropertyT HandContactStiffness; - FbxPropertyT HandFingerContactRollStiffness; - FbxPropertyT LeftHandThumbTip; - FbxPropertyT LeftHandIndexTip; - FbxPropertyT LeftHandMiddleTip; - FbxPropertyT LeftHandRingTip; - FbxPropertyT LeftHandPinkyTip; - FbxPropertyT LeftHandExtraFingerTip; - FbxPropertyT RightHandThumbTip; - FbxPropertyT RightHandIndexTip; - FbxPropertyT RightHandMiddleTip; - FbxPropertyT RightHandRingTip; - FbxPropertyT RightHandPinkyTip; - FbxPropertyT RightHandExtraFingerTip; - FbxPropertyT LeftFootThumbTip; - FbxPropertyT LeftFootIndexTip; - FbxPropertyT LeftFootMiddleTip; - FbxPropertyT LeftFootRingTip; - FbxPropertyT LeftFootPinkyTip; - FbxPropertyT LeftFootExtraFingerTip; - FbxPropertyT RightFootThumbTip; - FbxPropertyT RightFootIndexTip; - FbxPropertyT RightFootMiddleTip; - FbxPropertyT RightFootRingTip; - FbxPropertyT RightFootPinkyTip; - FbxPropertyT RightFootExtraFingerTip; - FbxPropertyT FingerSolving; - FbxPropertyT CtrlPullLeftToeBase; - FbxPropertyT CtrlPullLeftFoot; - FbxPropertyT CtrlPullLeftKnee; - FbxPropertyT CtrlPullRightToeBase; - FbxPropertyT CtrlPullRightFoot; - FbxPropertyT CtrlPullRightKnee; - FbxPropertyT CtrlPullLeftFingerBase; - FbxPropertyT CtrlPullLeftHand; - FbxPropertyT CtrlPullLeftElbow; - FbxPropertyT CtrlPullRightFingerBase; - FbxPropertyT CtrlPullRightHand; - FbxPropertyT CtrlPullRightElbow; - FbxPropertyT CtrlChestPullLeftHand; - FbxPropertyT CtrlChestPullRightHand; - FbxPropertyT CtrlPullHead; - FbxPropertyT CtrlResistHipsPosition; - FbxPropertyT CtrlEnforceGravity; - FbxPropertyT CtrlResistHipsOrientation; - FbxPropertyT CtrlResistChestPosition; - FbxPropertyT CtrlResistChestOrientation; - FbxPropertyT CtrlResistLeftCollar; - FbxPropertyT CtrlResistRightCollar; - FbxPropertyT CtrlResistLeftKnee; - FbxPropertyT CtrlResistMaximumExtensionLeftKnee; - FbxPropertyT CtrlResistCompressionFactorLeftKnee; - FbxPropertyT CtrlResistRightKnee; - FbxPropertyT CtrlResistMaximumExtensionRightKnee; - FbxPropertyT CtrlResistCompressionFactorRightKnee; - FbxPropertyT CtrlResistLeftElbow; - FbxPropertyT CtrlResistMaximumExtensionLeftElbow; - FbxPropertyT CtrlResistCompressionFactorLeftElbow; - FbxPropertyT CtrlResistRightElbow; - FbxPropertyT CtrlResistMaximumExtensionRightElbow; - FbxPropertyT CtrlResistCompressionFactorRightElbow; - FbxPropertyT CtrlSpineStiffness; - FbxPropertyT CtrlNeckStiffness; - FbxPropertyT MirrorMode; - FbxPropertyT ShoulderCorrection; - FbxPropertyT LeftKneeKillPitch; - FbxPropertyT RightKneeKillPitch; - FbxPropertyT LeftElbowKillPitch; - FbxPropertyT RightElbowKillPitch; - FbxPropertyT HipsTranslationMode; - FbxPropertyT WriteReference; - FbxPropertyT SyncMode; - FbxPropertyT Damping; - FbxPropertyT OrientationDamping; - FbxPropertyT OrientationDampingMode; - FbxPropertyT DisplacementDamping; - FbxPropertyT DisplacementDampingMode; - FbxPropertyT DisplacementMemory; - FbxPropertyT DisplacementMemoryMode; - FbxPropertyT HipsDisplacementDamping; - FbxPropertyT HipsDisplacementDampingMode; - FbxPropertyT AnkleDisplacementDamping; - FbxPropertyT AnkleDisplacementDampingMode; - FbxPropertyT WristDisplacementDamping; - FbxPropertyT WristDisplacementDampingMode; - FbxPropertyT Stabilization; - FbxPropertyT AnkleStabilizationTime; - FbxPropertyT AnkleStabilizationTimeMode; - FbxPropertyT AnkleStabilizationPerimeter; - FbxPropertyT AnkleStabilizationPerimeterMode; - FbxPropertyT AnkleStabilizationAngularPerimeter; - FbxPropertyT AnkleStabilizationAngularPerimeterMode; - FbxPropertyT AnkleStabilizationFloorProximity; - FbxPropertyT AnkleStabilizationFloorProximityMode; - FbxPropertyT AnkleStabilizationDamping; - FbxPropertyT AnkleStabilizationDampingMode; - FbxPropertyT AnkleStabilizationRecoveryTime; - FbxPropertyT AnkleStabilizationRecoveryTimeMode; - FbxPropertyT SourceObject; - FbxPropertyT DestinationObject; - FbxPropertyT Actor; - FbxPropertyT Character; - FbxPropertyT ControlSet; - FbxPropertyT HikVersion; - FbxPropertyT Characterize; - FbxPropertyT LockXForm; - FbxPropertyT LockPick; - - // HIK 4.6 new properties - FbxPropertyT RealisticShoulder; - FbxPropertyT CollarStiffnessX; - FbxPropertyT CollarStiffnessY; - FbxPropertyT CollarStiffnessZ; - FbxPropertyT ExtraCollarRatio; - - FbxPropertyT LeftLegMaxExtensionAngle; - FbxPropertyT RightLegMaxExtensionAngle; - FbxPropertyT LeftArmMaxExtensionAngle; - FbxPropertyT RightArmMaxExtensionAngle; - - FbxPropertyT StretchStartArmsAndLegs; - FbxPropertyT StretchStopArmsAndLegs; - FbxPropertyT SnSScaleArmsAndLegs; - FbxPropertyT SnSReachLeftWrist; - FbxPropertyT SnSReachRightWrist; - FbxPropertyT SnSReachLeftAnkle; - FbxPropertyT SnSReachRightAnkle; - FbxPropertyT SnSScaleSpine; - FbxPropertyT SnSScaleSpineChildren; - FbxPropertyT SnSSpineFreedom; - FbxPropertyT SnSReachChestEnd; - FbxPropertyT SnSScaleNeck; - FbxPropertyT SnSNeckFreedom; - FbxPropertyT SnSReachHead; - - // HIK 2016.5.0 roll properties - // Leaf roll properties - FbxPropertyT LeafLeftUpLegRoll1; - FbxPropertyT LeafLeftUpLegRoll1Mode; - FbxPropertyT LeafLeftLegRoll1; - FbxPropertyT LeafLeftLegRoll1Mode; - FbxPropertyT LeafRightUpLegRoll1; - FbxPropertyT LeafRightUpLegRoll1Mode; - FbxPropertyT LeafRightLegRoll1; - FbxPropertyT LeafRightLegRoll1Mode; - FbxPropertyT LeafLeftArmRoll1; - FbxPropertyT LeafLeftArmRoll1Mode; - FbxPropertyT LeafLeftForeArmRoll1; - FbxPropertyT LeafLeftForeArmRoll1Mode; - FbxPropertyT LeafRightArmRoll1; - FbxPropertyT LeafRightArmRoll1Mode; - FbxPropertyT LeafRightForeArmRoll1; - FbxPropertyT LeafRightForeArmRoll1Mode; - FbxPropertyT LeafLeftUpLegRoll2; - FbxPropertyT LeafLeftUpLegRoll2Mode; - FbxPropertyT LeafLeftLegRoll2; - FbxPropertyT LeafLeftLegRoll2Mode; - FbxPropertyT LeafRightUpLegRoll2; - FbxPropertyT LeafRightUpLegRoll2Mode; - FbxPropertyT LeafRightLegRoll2; - FbxPropertyT LeafRightLegRoll2Mode; - FbxPropertyT LeafLeftArmRoll2; - FbxPropertyT LeafLeftArmRoll2Mode; - FbxPropertyT LeafLeftForeArmRoll2; - FbxPropertyT LeafLeftForeArmRoll2Mode; - FbxPropertyT LeafRightArmRoll2; - FbxPropertyT LeafRightArmRoll2Mode; - FbxPropertyT LeafRightForeArmRoll2; - FbxPropertyT LeafRightForeArmRoll2Mode; - FbxPropertyT LeafLeftUpLegRoll3; - FbxPropertyT LeafLeftUpLegRoll3Mode; - FbxPropertyT LeafLeftLegRoll3; - FbxPropertyT LeafLeftLegRoll3Mode; - FbxPropertyT LeafRightUpLegRoll3; - FbxPropertyT LeafRightUpLegRoll3Mode; - FbxPropertyT LeafRightLegRoll3; - FbxPropertyT LeafRightLegRoll3Mode; - FbxPropertyT LeafLeftArmRoll3; - FbxPropertyT LeafLeftArmRoll3Mode; - FbxPropertyT LeafLeftForeArmRoll3; - FbxPropertyT LeafLeftForeArmRoll3Mode; - FbxPropertyT LeafRightArmRoll3; - FbxPropertyT LeafRightArmRoll3Mode; - FbxPropertyT LeafRightForeArmRoll3; - FbxPropertyT LeafRightForeArmRoll3Mode; - FbxPropertyT LeafLeftUpLegRoll4; - FbxPropertyT LeafLeftUpLegRoll4Mode; - FbxPropertyT LeafLeftLegRoll4; - FbxPropertyT LeafLeftLegRoll4Mode; - FbxPropertyT LeafRightUpLegRoll4; - FbxPropertyT LeafRightUpLegRoll4Mode; - FbxPropertyT LeafRightLegRoll4; - FbxPropertyT LeafRightLegRoll4Mode; - FbxPropertyT LeafLeftArmRoll4; - FbxPropertyT LeafLeftArmRoll4Mode; - FbxPropertyT LeafLeftForeArmRoll4; - FbxPropertyT LeafLeftForeArmRoll4Mode; - FbxPropertyT LeafRightArmRoll4; - FbxPropertyT LeafRightArmRoll4Mode; - FbxPropertyT LeafRightForeArmRoll4; - FbxPropertyT LeafRightForeArmRoll4Mode; - FbxPropertyT LeafLeftUpLegRoll5; - FbxPropertyT LeafLeftUpLegRoll5Mode; - FbxPropertyT LeafLeftLegRoll5; - FbxPropertyT LeafLeftLegRoll5Mode; - FbxPropertyT LeafRightUpLegRoll5; - FbxPropertyT LeafRightUpLegRoll5Mode; - FbxPropertyT LeafRightLegRoll5; - FbxPropertyT LeafRightLegRoll5Mode; - FbxPropertyT LeafLeftArmRoll5; - FbxPropertyT LeafLeftArmRoll5Mode; - FbxPropertyT LeafLeftForeArmRoll5; - FbxPropertyT LeafLeftForeArmRoll5Mode; - FbxPropertyT LeafRightArmRoll5; - FbxPropertyT LeafRightArmRoll5Mode; - FbxPropertyT LeafRightForeArmRoll5; - FbxPropertyT LeafRightForeArmRoll5Mode; - // Full limb roll extraction - FbxPropertyT LeftLegFullRollExtraction; - FbxPropertyT RightLegFullRollExtraction; - FbxPropertyT LeftArmFullRollExtraction; - FbxPropertyT RightArmFullRollExtraction; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetVersion(int pVersion){ mCharacterVersion = pVersion; } - int Version(){ return mCharacterVersion; } - void SetValuesFromLegacyLoad(); - void SetValuesForLegacySave(int pVersion); - void RestoreValuesFromLegacySave(); - bool IsLegacy(); - - int GetPropertyInfoCount(); - void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const; - void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const; - - FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId); - - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxObject& Copy(const FbxObject& pObject) override; - EType GetConstraintType() const override; - FbxStringList GetTypeFlags() const override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - -private: - bool InverseProperty(FbxProperty& pProp); - - int mCharacterVersion; - FbxCharacterLink mCharacterLink[eNodeIdCount]; - FbxControlSet* mControlSet; - - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h deleted file mode 100755 index 32cb92b..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacternodename.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ - -#include - -#include - -#define Character_Hips "Hips" -#define Character_LeftUpLeg "LeftUpLeg" -#define Character_LeftLeg "LeftLeg" -#define Character_LeftFoot "LeftFoot" -#define Character_RightUpLeg "RightUpLeg" -#define Character_RightLeg "RightLeg" -#define Character_RightFoot "RightFoot" -#define Character_Spine "Spine" -#define Character_LeftArm "LeftArm" -#define Character_LeftForeArm "LeftForeArm" -#define Character_LeftHand "LeftHand" -#define Character_RightArm "RightArm" -#define Character_RightForeArm "RightForeArm" -#define Character_RightHand "RightHand" -#define Character_Head "Head" -#define Character_LeftToeBase "LeftToeBase" -#define Character_RightToeBase "RightToeBase" -#define Character_LeftShoulder "LeftShoulder" -#define Character_RightShoulder "RightShoulder" -#define Character_LeftShoulderExtra "LeftShoulderExtra" -#define Character_RightShoulderExtra "RightShoulderExtra" -#define Character_Neck "Neck" -#define Character_LeftFingerBase "LeftFingerBase" -#define Character_RightFingerBase "RightFingerBase" -#define Character_Spine1 "Spine1" -#define Character_Spine2 "Spine2" -#define Character_Spine3 "Spine3" -#define Character_Spine4 "Spine4" -#define Character_Spine5 "Spine5" -#define Character_Spine6 "Spine6" -#define Character_Spine7 "Spine7" -#define Character_Spine8 "Spine8" -#define Character_Spine9 "Spine9" -#define Character_Neck1 "Neck1" -#define Character_Neck2 "Neck2" -#define Character_Neck3 "Neck3" -#define Character_Neck4 "Neck4" -#define Character_Neck5 "Neck5" -#define Character_Neck6 "Neck6" -#define Character_Neck7 "Neck7" -#define Character_Neck8 "Neck8" -#define Character_Neck9 "Neck9" -#define Character_LeftUpLegRoll "LeftUpLegRoll" -#define Character_LeftLegRoll "LeftLegRoll" -#define Character_RightUpLegRoll "RightUpLegRoll" -#define Character_RightLegRoll "RightLegRoll" -#define Character_LeftArmRoll "LeftArmRoll" -#define Character_LeftForeArmRoll "LeftForeArmRoll" -#define Character_RightArmRoll "RightArmRoll" -#define Character_RightForeArmRoll "RightForeArmRoll" -#define Character_LeftUpLegRollEx "LeftUpLegRollEx" -#define Character_LeftLegRollEx "LeftLegRollEx" -#define Character_RightUpLegRollEx "RightUpLegRollEx" -#define Character_RightLegRollEx "RightLegRollEx" -#define Character_LeftArmRollEx "LeftArmRollEx" -#define Character_LeftForearmRollEx "LeftForeArmRollEx" -#define Character_RightArmRollEx "RightArmRollEx" -#define Character_RightForearmRollEx "RightForeArmRollEx" -#define Character_LeafLeftUpLegRoll1 "LeafLeftUpLegRoll1" -#define Character_LeafLeftLegRoll1 "LeafLeftLegRoll1" -#define Character_LeafRightUpLegRoll1 "LeafRightUpLegRoll1" -#define Character_LeafRightLegRoll1 "LeafRightLegRoll1" -#define Character_LeafLeftArmRoll1 "LeafLeftArmRoll1" -#define Character_LeafLeftForeArmRoll1 "LeafLeftForeArmRoll1" -#define Character_LeafRightArmRoll1 "LeafRightArmRoll1" -#define Character_LeafRightForeArmRoll1 "LeafRightForeArmRoll1" -#define Character_LeafLeftUpLegRoll2 "LeafLeftUpLegRoll2" -#define Character_LeafLeftLegRoll2 "LeafLeftLegRoll2" -#define Character_LeafRightUpLegRoll2 "LeafRightUpLegRoll2" -#define Character_LeafRightLegRoll2 "LeafRightLegRoll2" -#define Character_LeafLeftArmRoll2 "LeafLeftArmRoll2" -#define Character_LeafLeftForeArmRoll2 "LeafLeftForeArmRoll2" -#define Character_LeafRightArmRoll2 "LeafRightArmRoll2" -#define Character_LeafRightForeArmRoll2 "LeafRightForeArmRoll2" -#define Character_LeafLeftUpLegRoll3 "LeafLeftUpLegRoll3" -#define Character_LeafLeftLegRoll3 "LeafLeftLegRoll3" -#define Character_LeafRightUpLegRoll3 "LeafRightUpLegRoll3" -#define Character_LeafRightLegRoll3 "LeafRightLegRoll3" -#define Character_LeafLeftArmRoll3 "LeafLeftArmRoll3" -#define Character_LeafLeftForeArmRoll3 "LeafLeftForeArmRoll3" -#define Character_LeafRightArmRoll3 "LeafRightArmRoll3" -#define Character_LeafRightForeArmRoll3 "LeafRightForeArmRoll3" -#define Character_LeafLeftUpLegRoll4 "LeafLeftUpLegRoll4" -#define Character_LeafLeftLegRoll4 "LeafLeftLegRoll4" -#define Character_LeafRightUpLegRoll4 "LeafRightUpLegRoll4" -#define Character_LeafRightLegRoll4 "LeafRightLegRoll4" -#define Character_LeafLeftArmRoll4 "LeafLeftArmRoll4" -#define Character_LeafLeftForeArmRoll4 "LeafLeftForeArmRoll4" -#define Character_LeafRightArmRoll4 "LeafRightArmRoll4" -#define Character_LeafRightForeArmRoll4 "LeafRightForeArmRoll4" -#define Character_LeafLeftUpLegRoll5 "LeafLeftUpLegRoll5" -#define Character_LeafLeftLegRoll5 "LeafLeftLegRoll5" -#define Character_LeafRightUpLegRoll5 "LeafRightUpLegRoll5" -#define Character_LeafRightLegRoll5 "LeafRightLegRoll5" -#define Character_LeafLeftArmRoll5 "LeafLeftArmRoll5" -#define Character_LeafLeftForeArmRoll5 "LeafLeftForeArmRoll5" -#define Character_LeafRightArmRoll5 "LeafRightArmRoll5" -#define Character_LeafRightForeArmRoll5 "LeafRightForeArmRoll5" -#define Character_Props0 "Props0" -#define Character_Props1 "Props1" -#define Character_Props2 "Props2" -#define Character_Props3 "Props3" -#define Character_Props4 "Props4" -#define Character_LeftHandThumb1 "LeftHandThumb1" -#define Character_LeftHandThumb2 "LeftHandThumb2" -#define Character_LeftHandThumb3 "LeftHandThumb3" -#define Character_LeftHandThumb4 "LeftHandThumb4" -#define Character_LeftHandIndex1 "LeftHandIndex1" -#define Character_LeftHandIndex2 "LeftHandIndex2" -#define Character_LeftHandIndex3 "LeftHandIndex3" -#define Character_LeftHandIndex4 "LeftHandIndex4" -#define Character_LeftHandMiddle1 "LeftHandMiddle1" -#define Character_LeftHandMiddle2 "LeftHandMiddle2" -#define Character_LeftHandMiddle3 "LeftHandMiddle3" -#define Character_LeftHandMiddle4 "LeftHandMiddle4" -#define Character_LeftHandRing1 "LeftHandRing1" -#define Character_LeftHandRing2 "LeftHandRing2" -#define Character_LeftHandRing3 "LeftHandRing3" -#define Character_LeftHandRing4 "LeftHandRing4" -#define Character_LeftHandPinky1 "LeftHandPinky1" -#define Character_LeftHandPinky2 "LeftHandPinky2" -#define Character_LeftHandPinky3 "LeftHandPinky3" -#define Character_LeftHandPinky4 "LeftHandPinky4" -#define Character_LeftHandExtraFinger1 "LeftHandExtraFinger1" -#define Character_LeftHandExtraFinger2 "LeftHandExtraFinger2" -#define Character_LeftHandExtraFinger3 "LeftHandExtraFinger3" -#define Character_LeftHandExtraFinger4 "LeftHandExtraFinger4" -#define Character_RightHandThumb1 "RightHandThumb1" -#define Character_RightHandThumb2 "RightHandThumb2" -#define Character_RightHandThumb3 "RightHandThumb3" -#define Character_RightHandThumb4 "RightHandThumb4" -#define Character_RightHandIndex1 "RightHandIndex1" -#define Character_RightHandIndex2 "RightHandIndex2" -#define Character_RightHandIndex3 "RightHandIndex3" -#define Character_RightHandIndex4 "RightHandIndex4" -#define Character_RightHandMiddle1 "RightHandMiddle1" -#define Character_RightHandMiddle2 "RightHandMiddle2" -#define Character_RightHandMiddle3 "RightHandMiddle3" -#define Character_RightHandMiddle4 "RightHandMiddle4" -#define Character_RightHandRing1 "RightHandRing1" -#define Character_RightHandRing2 "RightHandRing2" -#define Character_RightHandRing3 "RightHandRing3" -#define Character_RightHandRing4 "RightHandRing4" -#define Character_RightHandPinky1 "RightHandPinky1" -#define Character_RightHandPinky2 "RightHandPinky2" -#define Character_RightHandPinky3 "RightHandPinky3" -#define Character_RightHandPinky4 "RightHandPinky4" -#define Character_RightHandExtraFinger1 "RightHandExtraFinger1" -#define Character_RightHandExtraFinger2 "RightHandExtraFinger2" -#define Character_RightHandExtraFinger3 "RightHandExtraFinger3" -#define Character_RightHandExtraFinger4 "RightHandExtraFinger4" -#define Character_LeftFootThumb1 "LeftFootThumb1" -#define Character_LeftFootThumb2 "LeftFootThumb2" -#define Character_LeftFootThumb3 "LeftFootThumb3" -#define Character_LeftFootThumb4 "LeftFootThumb4" -#define Character_LeftFootIndex1 "LeftFootIndex1" -#define Character_LeftFootIndex2 "LeftFootIndex2" -#define Character_LeftFootIndex3 "LeftFootIndex3" -#define Character_LeftFootIndex4 "LeftFootIndex4" -#define Character_LeftFootMiddle1 "LeftFootMiddle1" -#define Character_LeftFootMiddle2 "LeftFootMiddle2" -#define Character_LeftFootMiddle3 "LeftFootMiddle3" -#define Character_LeftFootMiddle4 "LeftFootMiddle4" -#define Character_LeftFootRing1 "LeftFootRing1" -#define Character_LeftFootRing2 "LeftFootRing2" -#define Character_LeftFootRing3 "LeftFootRing3" -#define Character_LeftFootRing4 "LeftFootRing4" -#define Character_LeftFootPinky1 "LeftFootPinky1" -#define Character_LeftFootPinky2 "LeftFootPinky2" -#define Character_LeftFootPinky3 "LeftFootPinky3" -#define Character_LeftFootPinky4 "LeftFootPinky4" -#define Character_LeftFootExtraFinger1 "LeftFootExtraFinger1" -#define Character_LeftFootExtraFinger2 "LeftFootExtraFinger2" -#define Character_LeftFootExtraFinger3 "LeftFootExtraFinger3" -#define Character_LeftFootExtraFinger4 "LeftFootExtraFinger4" -#define Character_RightFootThumb1 "RightFootThumb1" -#define Character_RightFootThumb2 "RightFootThumb2" -#define Character_RightFootThumb3 "RightFootThumb3" -#define Character_RightFootThumb4 "RightFootThumb4" -#define Character_RightFootIndex1 "RightFootIndex1" -#define Character_RightFootIndex2 "RightFootIndex2" -#define Character_RightFootIndex3 "RightFootIndex3" -#define Character_RightFootIndex4 "RightFootIndex4" -#define Character_RightFootMiddle1 "RightFootMiddle1" -#define Character_RightFootMiddle2 "RightFootMiddle2" -#define Character_RightFootMiddle3 "RightFootMiddle3" -#define Character_RightFootMiddle4 "RightFootMiddle4" -#define Character_RightFootRing1 "RightFootRing1" -#define Character_RightFootRing2 "RightFootRing2" -#define Character_RightFootRing3 "RightFootRing3" -#define Character_RightFootRing4 "RightFootRing4" -#define Character_RightFootPinky1 "RightFootPinky1" -#define Character_RightFootPinky2 "RightFootPinky2" -#define Character_RightFootPinky3 "RightFootPinky3" -#define Character_RightFootPinky4 "RightFootPinky4" -#define Character_RightFootExtraFinger1 "RightFootExtraFinger1" -#define Character_RightFootExtraFinger2 "RightFootExtraFinger2" -#define Character_RightFootExtraFinger3 "RightFootExtraFinger3" -#define Character_RightFootExtraFinger4 "RightFootExtraFinger4" -#define Character_LeftInHandThumb "LeftInHandThumb" -#define Character_LeftInHandIndex "LeftInHandIndex" -#define Character_LeftInHandMiddle "LeftInHandMiddle" -#define Character_LeftInHandRing "LeftInHandRing" -#define Character_LeftInHandPinky "LeftInHandPinky" -#define Character_LeftInHandExtraFinger "LeftInHandExtraFinger" -#define Character_RightInHandThumb "RightInHandThumb" -#define Character_RightInHandIndex "RightInHandIndex" -#define Character_RightInHandMiddle "RightInHandMiddle" -#define Character_RightInHandRing "RightInHandRing" -#define Character_RightInHandPinky "RightInHandPinky" -#define Character_RightInHandExtraFinger "RightInHandExtraFinger" -#define Character_LeftInFootThumb "LeftInFootThumb" -#define Character_LeftInFootIndex "LeftInFootIndex" -#define Character_LeftInFootMiddle "LeftInFootMiddle" -#define Character_LeftInFootRing "LeftInFootRing" -#define Character_LeftInFootPinky "LeftInFootPinky" -#define Character_LeftInFootExtraFinger "LeftInFootExtraFinger" -#define Character_RightInFootThumb "RightInFootThumb" -#define Character_RightInFootIndex "RightInFootIndex" -#define Character_RightInFootMiddle "RightInFootMiddle" -#define Character_RightInFootRing "RightInFootRing" -#define Character_RightInFootPinky "RightInFootPinky" -#define Character_RightInFootExtraFinger "RightInFootExtraFinger" - -#define Character_GameModeParentLeftHipRoll "GameModeParentLeftHipRoll" -#define Character_GameModeParentLeftKnee "GameModeParentLeftKnee" -#define Character_GameModeParentLeftKneeRoll "GameModeParentLeftKneeRoll" -#define Character_GameModeParentRightHipRoll "GameModeParentRightHipRoll" -#define Character_GameModeParentRightKnee "GameModeParentRightKnee" -#define Character_GameModeParentRightKneeRoll "GameModeParentRightKneeRoll" -#define Character_GameModeParentLeftShoulderRoll "GameModeParentLeftShoulderRoll" -#define Character_GameModeParentLeftElbow "GameModeParentLeftElbow" -#define Character_GameModeParentLeftElbowRoll "GameModeParentLeftElbowRoll" -#define Character_GameModeParentRightShoulderRoll "GameModeParentRightShoulderRoll" -#define Character_GameModeParentRightElbow "GameModeParentRightElbow" -#define Character_GameModeParentRightElbowRoll "GameModeParentRightElbowRoll" - -#define Character_LeftFloorContact "LeftFloorContact" -#define Character_RightFloorContact "RightFloorContact" -#define Character_LeftHandFloorContact "LeftHandFloorContact" -#define Character_RightHandFloorContact "RightHandFloorContact" - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h deleted file mode 100755 index 6e3563e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcharacterpose.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ - -#include - -#include -#include -#include - -#include - -/** \class FbxCharacterPose - * \nosubgrouping - * \brief A character pose is a character and an associated hierarchy of nodes. - * - * Only the default position of the nodes is considered, the animation data is ignored. - * - * You can access the content of a character pose, using the functions FbxCharacterPose::GetOffset(), - * FbxCharacterPose::GetLocalPosition(), and FbxCharacterPose::GetGlobalPosition(). - * Their source code is provided inline as examples on how to access the character pose data. - * - * To create a character pose, You must first create a hierarchy of nodes under the root - * node provided by function FbxCharacterPose::GetRootNode(). Then, feed this hierarchy - * of nodes into the character returned by function FbxCharacterPose::GetCharacter(). - * Offsets are set in the character links. Local positions are set using - * FbxNode::SetDefaultT(), FbxNode::SetDefaultR(), and FbxNode::SetDefaultS(). - * - * To set local positions from global positions: - * -# Declare lCharacterPose as a valid pointer to a FbxCharacterPose; - * -# Call lCharacterPose->GetRootNode()->SetLocalStateId(0, true); - * -# Call lCharacterPose->GetRootNode()->SetGlobalStateId(1, true); - * -# Call FbxNode::SetGlobalState() for all nodes found in the hierarchy under lCharacterPose->GetRootNode(); - * -# Call lCharacterPose->GetRootNode()->ComputeLocalState(1, true); - * -# Call lCharacterPose->GetRootNode()->SetCurrentTakeFromLocalState(FBXSDK_TIME_ZERO, true). - */ -class FBXSDK_DLL FbxCharacterPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCharacterPose,FbxObject); - -public: - //! Reset to an empty character pose. - void Reset(); - - /** Get the root node. - * \return Pointer to the root node. - */ - FbxNode* GetRootNode() const; - - /** Get the character. - * \return Pointer to the character. - */ - FbxCharacter* GetCharacter() const; - - /** Get offset matrix for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pOffset Receives offset matrix. - * \return \c true if successful, \c false otherwise. - */ - bool GetOffset(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pOffset) const; - - /** Get local position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pLocalT Receives local translation vector. - * \param pLocalR Receives local rotation vector. - * \param pLocalS Receives local scaling vector. - * \return \c true if successful, \c false otherwise. - */ - bool GetLocalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxVector4& pLocalT, FbxVector4& pLocalR, FbxVector4& pLocalS) const; - - /** Get global position for a given character node. - * \param pCharacterNodeId Character Node ID. - * \param pGlobalPosition Receives global position. - * \return \c true if successful, \c false otherwise. - */ - bool GetGlobalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pGlobalPosition) const; - - /** Retrieve the pose scene used by this character pose - * \return The pose's scene (this is a different scene than the scene the character pose is in). */ - FbxScene* GetPoseScene() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone( FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - void Clone(FbxScene* pPoseScene, FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - -private: - FbxScene* mPoseScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h deleted file mode 100755 index 0e243a1..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraint.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraint.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_H_ - -#include - -#include -#include - -/** Base class for weighted animation constraints. - * Constraints are primarily used to impose limits on properties of objects (e.g. position, orientation, scale) - * and to automate animation processes. - * A constrained object is an object with properties constrained by one or more weighted constraint sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraint : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxConstraint, FbxObject); - -public: - /** - * \name Properties - */ - //@{ - /** This property represents the degree of influence of a constraint from 0.0 (no influence) to 100.0 (full influence). - * - * Default value is 100.0. - */ - FbxPropertyT Weight; - - /** This property controls whether the constraint is applied or not. - * If the value is \c false the constraint will have no effect. The default value is \c true. - * - * Default value is true. - */ - FbxPropertyT Active; - - /** This property handles the lock state of the constraint. - * - * When enabled, the constrained object cannot be moved away from its constrained location when the constraint is active. - * - * Default value is false. - */ - FbxPropertyT Lock; - //@} - - /** \enum EType Constraint attribute types. - */ - enum EType - { - eUnknown, //! Invalid constraint. - ePosition, //! Position constraint (referred to as a point constraint in Maya). - eRotation, //! Rotation constraint (referred to as an orient constraint in Maya). - eScale, //! Scale constraint. - eParent, //! Parent constraint. - eSingleChainIK, //! Single chain IK constraint. - eAim, //! Aim constraint. - eCharacter, //! Character constraint. - eCustom //! User defined constraints. - }; - - /** Access the type of the constraint. - * \return This type of the constraint. - */ - virtual EType GetConstraintType() const { return eUnknown; } - - /** Retrieve the constrained object. - * \return The constrained object. - */ - virtual FbxObject* GetConstrainedObject() const { return NULL; } - - /** Retrieve the count of constraint source. - * \return The count of constraint source. - */ - virtual int GetConstraintSourceCount() const { return 0; } - - /** Retrieve a constraint source with the specified index. - * \param pIndex The specified index. - * \return The constraint source at the specified index. - */ - virtual FbxObject* GetConstraintSource(int /*pIndex*/) const { return NULL; } - - /** Get the weight associated with a constraint source. - * \param pObject The given constraint source. - * \return The weight of the constraint source. - */ - double GetSourceWeight(const FbxObject* pObject) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -const FbxString GetWeightPropertyName(const FbxObject * pObject); -void CreateWeightPropertyForSourceObject(FbxObject * pConstraint, const FbxObject * pSourceObject, double pWeightValue); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h deleted file mode 100755 index 0b38fbe..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintaim.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_AIM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_AIM_H_ - -#include - -#include - -#include - -/** An aim constraint governs an object's orientation so that the object points to other objects. - * For example, you can use the aim constraint to point a light at an object or group of objects. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintAim : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintAim, FbxConstraint); - -public: - /** \enum EWorldUp Constraint world up type, which has the same meaning with Maya. - */ - enum EWorldUp - { - eAimAtSceneUp, //! Constraint scene up type. - eAimAtObjectUp, //! Constraint object up type. - eAimAtObjectRotationUp, //! Constraint object rotation up type. - eAimAtVector, //! Constraint vector type. - eAimAtNone, //! None constraint type. - eAimAtCount //! Constraint world up type count. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles the rotation offset value. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT RotationOffset; - - /** This property provides access to the object or objects which are the targets. - */ - FbxPropertyT AimAtObjects; - - /** This property provides access to the object being aimed. - */ - FbxPropertyT ConstrainedObject; - - /** This property handles world up type. - */ - FbxPropertyT WorldUpType; - - /** This property handles world up object. - */ - FbxPropertyT WorldUpObject; - - /** This property handles world up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT WorldUpVector; - - /** This property handles up vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT UpVector; - - /** This property enables you set a specific axis for the constrained object to orient towards. - * - * Default value is (1, 0, 0). - */ - FbxPropertyT AimVector; - - /** This property handles whether to affect the rotation around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect the rotation around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect the rotation around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex The specified index. - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - - /** Set the world up object. - * \param pObject The new world up object. - */ - void SetWorldUpObject(FbxObject* pObject); - - /** Retrieve the world up object. - * \return The current world up object. - */ - FbxObject* GetWorldUpObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintAim::EWorldUp&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_AIM_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h deleted file mode 100755 index 727041f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintcustom.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for custom constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintCustom : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintCustom, FbxConstraint); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h deleted file mode 100755 index f33a5e5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintparent.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ -#define _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ - -#include - -#include - -#include - -/** The parent constraint creates a parent-to-child relationship between any two objects, from any two hierarchies. - * It creates the same relationship as the parent-to-child relationships found in hierarchies. - * You can use this constraint to connect objects without changing hierarchies. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintParent : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintParent, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect the translation of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationX; - - /** This property handles whether to affect the translation of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationY; - - /** This property handles whether to affect the translation of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectTranslationZ; - - /** This property handles whether to affect the rotation of the constrained object around X axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationX; - - /** This property handles whether to affect the rotation of the constrained object around Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationY; - - /** This property handles whether to affect the rotation of the constrained object around Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectRotationZ; - - /** This property handles whether to affect the scaling of the constrained object along X axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingX; - - /** This property handles whether to affect the scaling of the constrained object along Y axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingY; - - /** This property handles whether to affect the scaling of the constrained object along Z axis. - * - * Default value is true. - */ - FbxPropertyT AffectScalingZ; - - /** This property used to access constraint sources. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstraintSources; - - /** This property used to access constrained object. - * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Set the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pTranslation The new offset vector. - */ - void SetTranslationOffset(FbxObject* pObject, FbxVector4 pTranslation); - - /** Retrieve the translation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetTranslationOffset(const FbxObject* pObject) const; - - /** Set the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \param pRotation The new offset vector. - */ - virtual void SetRotationOffset(const FbxObject* pObject, FbxVector4 pRotation); - - /** Retrieve the rotation offset of the specified constraint source. - * \param pObject The specified constraint source. - * \return The current translation offset. - */ - FbxVector4 GetRotationOffset(const FbxObject* pObject) const; - - /** Add a constraint source to the constraint. - * \param pObject New constraint source. - * \param pWeight Weight of the constraint source. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the constraint source. - * \return The constraint source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h deleted file mode 100755 index edb6bb1..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintposition.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a position constraint. - * A position constraint lets you constrain the position of an object based on the position of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintPosition : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintPosition,FbxConstraint); - -public: - - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles translation offset. - * - * Default value is (0, 0, 0). - */ - FbxPropertyT Translation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Remove a source from the constraint. - * \param pObject Source object to remove. - */ - bool RemoveConstraintSource(FbxObject* pObject); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h deleted file mode 100755 index e18db0b..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintrotation.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ -#define _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a rotation constraint. - * A rotation constraint lets you constrain the rotation of an object based on the rotation of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintRotation : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintRotation, FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles rotation offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Rotation; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source object - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h deleted file mode 100755 index 8b1e77d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintscale.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ - -#include - -#include - -#include - -/**\brief This constraint class contains methods for accessing the properties of a scale constraint. - * A scale constraint lets you constrain the scale of an object based on the scale of one or more sources. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintScale : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintScale,FbxConstraint); - -public: - /** - * \name Properties - */ - //@{ - /** This property handles whether to affect x axis. - * Default value is true. - */ - FbxPropertyT AffectX; - - /** This property handles whether to affect y axis. - * Default value is true. - */ - FbxPropertyT AffectY; - - /** This property handles whether to affect z axis. - * Default value is true. - */ - FbxPropertyT AffectZ; - - /** This property handles scaling offset. - * Default value is (0, 0, 0). - */ - FbxPropertyT Scaling; - - /** This property handles constraint source objects. - */ - FbxPropertyT ConstraintSources; - - /** This property handles constraint target objects. - */ - FbxPropertyT ConstrainedObject; - //@} - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight of the source object. - */ - void AddConstraintSource(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintSourceCount() const override; - - /** Retrieve a constraint source object. - * \param pIndex Index of the source - * \return Current source at the specified index. - */ - FbxObject* GetConstraintSource(int pIndex) const override; - - /** Set the constrained object. - * \param pObject The constrained object. - */ - void SetConstrainedObject(FbxObject* pObject); - - /** Retrieve the constrained object. - * \return Current constrained object. - */ - FbxObject* GetConstrainedObject() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h deleted file mode 100755 index 8d9090d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintsinglechainik.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ -#define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ - -#include - -#include - -#include - -/** \brief This constraint class contains methods for accessing the properties of a single chain IK constraint. - * \nosubgrouping - */ -class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint -{ - FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint); - -public: - /** Solver pole vector mode. - */ - enum ESolverMode - { - eRotatePlane, //! Rotate plane solver. - eSingleChain //! Single chain solver. - }; - - /** Pole vector mode. - */ - enum EPoleVectorMode - { - eVector, //! Pole vector type is vector. - eObject //! Pole vector type is object. - }; - - /** If the constraints read its animation on Translation and Scale for the nodes it constraints. - */ - enum EEvaluationMode - { - eNeverTS, //! The constraints never read its animation on translation and scale for the nodes. - eAutoDetect, //! The constraints read its animation on translation and scale for the nodes according to automatic detection. - eAlwaysTS //! The constraints always read its animation on translation and scale for the nodes. - }; - - /** - * \name Properties - */ - //@{ - /** This property handles pole vector type. - */ - FbxPropertyT PoleVectorType; - - /** This property handles solver type. - */ - FbxPropertyT SolverType; - - /** This property handles evaluate TS animation. - */ - FbxPropertyT EvaluateTSAnim; - - /** This property handles pole vector objects. - */ - FbxPropertyT PoleVectorObjects; - - /** This property handles pole vector. - * - * Default value is (0, 1, 0). - */ - FbxPropertyT PoleVector; - - /** This property handles twist value. - * - * Default value is 0. - */ - FbxPropertyT Twist; - - /** This property handles first joint object. - */ - FbxPropertyT FirstJointObject; - - /** This property handles end joint object. - */ - FbxPropertyT EndJointObject; - - /** This property handles effector object. - */ - FbxPropertyT EffectorObject; - //@} - - /** Get the weight of a source. - * \param pObject Source object that we want the weight. - */ - double GetPoleVectorObjectWeight(const FbxObject* pObject) const; - - /** Add a source to the constraint. - * \param pObject New source object. - * \param pWeight Weight value of the source object expressed as a percentage. - * \remarks pWeight value is 100 percent by default. - */ - void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100); - - /** Retrieve the constraint source count. - * \return Current constraint source count. - */ - int GetConstraintPoleVectorCount() const; - - /** Retrieve a constraint source object. - * \param pIndex Index of constraint source object. - * \return Current source at the specified index. - */ - FbxObject* GetPoleVectorObject(int pIndex) const; - - /** Set the first joint object. - * \param pObject The first joint object. - */ - void SetFirstJointObject(FbxObject* pObject); - - /** Retrieve the first joint object. - * \return Current first joint object. - */ - FbxObject* GetFirstJointObject() const; - - /** Set the end joint object. - * \param pObject The end joint object. - */ - void SetEndJointObject(FbxObject* pObject); - - /** Retrieve the end joint object. - * \return Current end joint object. - */ - FbxObject* GetEndJointObject() const; - - /** Set the effector object. - * \param pObject The effector object. - */ - void SetEffectorObject(FbxObject* pObject); - - /** Retrieve the effector object. - * \return Current effector object. - */ - FbxObject* GetEffectorObject() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - EType GetConstraintType() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h deleted file mode 100755 index 2d5debc..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstraintutils.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ -#define _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ - -#include - -#include - -class FbxNode; - -/** Utility class for constraints - *\nosubgrouping - */ -class FBXSDK_DLL FbxConstraintUtils -{ -public: - /** Test if the given node is Single Chain IK Effector. - * \param pNode The given node - * \return \c true if it is, \c false otherwise. - */ - static bool IsNodeSingleChainIKEffector(FbxNode* pNode); -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h deleted file mode 100755 index 78a7f01..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxcontrolset.h +++ /dev/null @@ -1,370 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontrolset.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ -#define _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ - -#include - -#include - -#include - -class FbxControlSetPlug; - -/** \class FbxControlSetLink - * - * \brief This class represents a link between a given character's FK node and the associated node in the character hierarchy. - * - */ -class FBXSDK_DLL FbxControlSetLink -{ -public: - //! Default constructor. - FbxControlSetLink(); - - /** Copy constructor. - * \param pControlSetLink Given object. - */ - FbxControlSetLink(const FbxControlSetLink& pControlSetLink); - - /** Assignment operator. - * \param pControlSetLink Another FbxControlSetLink object assigned to this one. - */ - FbxControlSetLink& operator=(const FbxControlSetLink& pControlSetLink); - - /** Reset to default values. - * - * Member mNode is set to \c NULL and member mTemplateName is cleared. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this control set link. - FbxNode* mNode; - - //! A template name is a naming convention that is used to automatically map - //! the nodes of other skeletons that use the same naming convention for automatic characterization. - FbxString mTemplateName; -}; - -/** - * An effector wraps a character node (FbxNode) used to animate its control rig (FbxControlSet) via inverse kinematics. - */ -class FBXSDK_DLL FbxEffector -{ -public: - enum ESetId - { - eDefaultSet, - eAux1Set, - eAux2Set, - eAux3Set, - eAux4Set, - eAux5Set, - eAux6Set, - eAux7Set, - eAux8Set, - eAux9Set, - eAux10Set, - eAux11Set, - eAux12Set, - eAux13Set, - eAux14Set, - eSetIdCount - }; - - enum ENodeId - { - eHips, - eLeftAnkle, - eRightAnkle, - eLeftWrist, - eRightWrist, - eLeftKnee, - eRightKnee, - eLeftElbow, - eRightElbow, - eChestOrigin, - eChestEnd, - eLeftFoot, - eRightFoot, - eLeftShoulder, - eRightShoulder, - eHead, - eLeftHip, - eRightHip, - eLeftHand, - eRightHand, - eLeftHandThumb, - eLeftHandIndex, - eLeftHandMiddle, - eLeftHandRing, - eLeftHandPinky, - eLeftHandExtraFinger, - eRightHandThumb, - eRightHandIndex, - eRightHandMiddle, - eRightHandRing, - eRightHandPinky, - eRightHandExtraFinger, - eLeftFootThumb, - eLeftFootIndex, - eLeftFootMiddle, - eLeftFootRing, - eLeftFootPinky, - eLeftFootExtraFinger, - eRightFootThumb, - eRightFootIndex, - eRightFootMiddle, - eRightFootRing, - eRightFootPinky, - eRightFootExtraFinger, - eNodeIdCount, - eNodeIdInvalid=-1 - }; - - //! Default constructor with uninitialized character node. - FbxEffector(); - - /** Assignment operator. - * \param pEffector Another FbxEffector assigned to this one. - */ - FbxEffector& operator=(const FbxEffector& pEffector); - - /** Reset to default values. - * - mNode is set to NULL. - * - mShow is set to true. - */ - void Reset(); - - //! The character's node in a hierarchy linked to this effector. - FbxNode* mNode; - - //! \c true if the effector is visible, \c false if hidden - bool mShow; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - //These members are for backward compatibility and should not be used. - //These properties are now published through class FbxControlSetPlug. - bool mTActive; - bool mRActive; - bool mCandidateTActive; - bool mCandidateRActive; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \class FbxControlSet - * - * This class contains all methods to either set-up an exported control rig or query information on an imported control rig. - * A Control rig is a character manipulation tool that lets you change the position and orientation - * of a character to create or alter animation. - * - * This class also contains some methods to manipulate the FbxEffector and FbxControlSetLink. - * - * The FbxControlSet class contains FK rig (Forward Kinematics) and IK rig (Inverse Kinematics) animation. The FK rig is represented - * by a list of nodes while the IK rig is represented by a list of effectors. - * - * You can access the FK rig with the FbxControlSetLink class, using the functions FbxControlSet::SetControlSetLink() and FbxControlSet::GetControlSetLink(). - * - * You can access the IK rig with the FbxEffector class, using the functions FbxControlSet::SetEffector() and FbxControlSet::GetEffector(). - * - * \see FbxEffector, FbxControlSetLink - */ -class FBXSDK_DLL FbxControlSet -{ -public: - /** Reset to default values. - * Reset all effector and control set links. - */ - void Reset(); - - /** \enum EType Control rig type. - * - \e eNone No Control rig. - * - \e eFkIk Both an FK rig and IK rig. - * - \e eIkOnly Only an IK rig. - */ - enum EType - { - eNone, - eFkIk, - eIkOnly - }; - - /** Set type as given. - * \param pType The given type. - */ - void SetType(EType pType); - - /** Get type. - * \return The gotten type. - */ - EType GetType() const; - - /** Set use axis flag as given. - * \param pUseAxis The given use axis flag. - */ - void SetUseAxis(bool pUseAxis); - - /** Get use axis flag. - * \return The gotten use axis flag. - */ - bool GetUseAxis() const; - - /** Set lock transform flag as given. - * \param pLockTransform The given lock transform flag. - */ - void SetLockTransform(bool pLockTransform); - - /** Get lock transform flag. - * \return The gotten lock transform flag. - */ - bool GetLockTransform()const; - - /** Set lock 3D pick flag as given. - * \param pLock3DPick The given lock 3D pick flag. - */ - void SetLock3DPick(bool pLock3DPick); - - /** Get lock 3D pick flag. - * \return The gotten lock 3D pick flag. - */ - bool GetLock3DPick() const; - - /** Set a control set link for a character node ID. - * \param pCharacterNodeId Character node ID. - * \param pControlSetLink Control set link to be associated with the Character node ID. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid setting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool SetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, const FbxControlSetLink& pControlSetLink); - - /** Get the control set link associated with a character node ID. - * \param pCharacterNodeId Requested character node ID. - * \param pControlSetLink Optional pointer that returns the control set link if the function succeeds. - * \return \c true if successful, \c false otherwise. - * \remarks You should avoid getting a control set link for - * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, - * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. - * None of these nodes are part of a control set. - */ - bool GetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, FbxControlSetLink* pControlSetLink = NULL) const; - - /** Set an effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pEffector Effector to be associated with the effector node ID. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector pEffector); - - /** Get the effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested effector node. - * \param pEffector Optional pointer that returns the effector if the function succeeds. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector* pEffector = NULL); - - /** Set an auxiliary effector node for an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \param pNode Auxiliary effector node to be associated with the effector node ID. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool SetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode* pNode, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set); - - /** Get the auxiliary effector associated with an effector node ID. - * \param pEffectorNodeId ID of requested auxiliary effector node. - * \param pNode Optional pointer that returns the auxiliary effector node if the function succeeds. - * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. - * \return \c true if successful, \c false otherwise. - */ - bool GetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode** pNode=NULL, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set) const; - - /** Get the name associated with an effector node ID. - * \param pEffectorNodeId Effector node ID. - * \return Name associated with the effector node ID. - */ - static char* GetEffectorNodeName(FbxEffector::ENodeId pEffectorNodeId); - - /** Get ID associated with an effector node name. - * \param pEffectorNodeName Effector node name. - * \return Effector node ID associated with the given effector node name, or FbxEffector::eNodeIdInvalid (-1) if - * no effector node with pEffectorNodeName exists. - */ - static FbxEffector::ENodeId GetEffectorNodeId(const char* pEffectorNodeName); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void FromPlug(FbxControlSetPlug *pPlug); - void ToPlug(FbxControlSetPlug *pPlug); - -private: - FbxControlSet(); - ~FbxControlSet(); - - FbxCharacter* mCharacter; - EType mType; - bool mUseAxis; - bool mLockTransform; - bool mLock3DPick; - FbxControlSetLink mControlSetLink[FbxCharacter::eNodeIdCount]; // Except floor node IDs! - FbxEffector mEffector[FbxEffector::eNodeIdCount]; - FbxNode* mEffectorAux[FbxEffector::eNodeIdCount][FbxEffector::eSetIdCount-1]; - - FBXSDK_FRIEND_NEW(); - friend class FbxCharacter; - friend class FbxNode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Plug class for control set. - * \nosubgrouping - */ -class FBXSDK_DLL FbxControlSetPlug : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxControlSetPlug, FbxObject); - -public: - //! EType property of control set. - FbxPropertyT ControlSetType; - - //! Use axis flag. - FbxPropertyT UseAxis; - - //! Reference character. - FbxPropertyT Character; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - FbxArray mFKBuf; - FbxArray mIKBuf; - - friend class FbxScene; - friend class FbxControlSet; -}; - -inline EFbxType FbxTypeOf(const FbxControlSet::EType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h b/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h deleted file mode 100755 index 6332652..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxhik2fbxcharacter.h -#ifndef _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ -#define _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ - -#include - -#include - -#include - -class FbxCharacterPropertyInfo -{ -public: - const char* mHIKPropertyName; - const char* mFbxCharacterPropertyModeName; - const char* mFbxCharacterPropertyName; - int mIndex; - FbxCharacter::EPropertyUnit mUnit; -}; - -static const FbxCharacterPropertyInfo gHIK2FbxCharacterPropertyBridge[] = -{ - { "PullIterationCount" ,NULL,"PullIterationCount",0,FbxCharacter::ePropertyReal}, - { "Posture" ,NULL,"Posture",0,FbxCharacter::ePropertyEnum}, - { "ForceActorSpace" ,"ForceActorSpace",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ScaleCompensation" ,"ScaleCompensationMode","ScaleCompensation",0,FbxCharacter::ePropertyReal}, - { "HipsHeightCompensation" ,"HipsHeightCompensationMode","HipsHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleHeightCompensation" ,"AnkleHeightCompensationMode","AnkleHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleProximityCompensation" ,"AnkleProximityCompensationMode","AnkleProximityCompensation",0,FbxCharacter::ePropertyCentimeter}, - { "MassCenterCompensation" ,NULL,"MassCenterCompensation",0,FbxCharacter::ePropertyReal}, - { "ApplyLimits" ,"ApplyLimits",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ChestReduction" ,NULL,"ChestReduction",0,FbxCharacter::ePropertyPercent}, - { "CollarReduction" ,NULL,"CollarReduction",0,FbxCharacter::ePropertyPercent}, - { "NeckReduction" ,NULL,"NeckReduction",0,FbxCharacter::ePropertyPercent}, - { "HeadReduction" ,NULL,"HeadReduction",0,FbxCharacter::ePropertyPercent}, - { "ParamFootContactStiffness" ,NULL,"FootContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandContactStiffness" ,NULL,"HandContactStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamFootFingerContactRollStiffness" ,NULL,"FootFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamHandFingerContactRollStiffness" ,NULL,"HandFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkle" ,NULL,"ReachActorLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkle" ,NULL,"ReachActorRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftKnee" ,NULL,"ReachActorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightKnee" ,NULL,"ReachActorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChest" ,NULL,"ReachActorChest",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHead" ,NULL,"ReachActorHead",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWrist" ,NULL,"ReachActorLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWrist" ,NULL,"ReachActorRightWrist",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftElbow" ,NULL,"ReachActorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightElbow" ,NULL,"ReachActorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBase" ,NULL,"ReachActorRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBase" ,NULL,"ReachActorLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBase" ,NULL,"ReachActorRightToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBase" ,NULL,"ReachActorLeftToesBase",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightFingerBaseRotation" ,NULL,"ReachActorRightFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftFingerBaseRotation" ,NULL,"ReachActorLeftFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightToesBaseRotation" ,NULL,"ReachActorRightToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftToesBaseRotation" ,NULL,"ReachActorLeftToesBaseRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftAnkleRotationRotation" ,NULL,"ReachActorLeftAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightAnkleRotation" ,NULL,"ReachActorRightAnkleRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorHeadRotation" ,NULL,"ReachActorHeadRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLeftWristRotation" ,NULL,"ReachActorLeftWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorRightWristRotation" ,NULL,"ReachActorRightWristRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorChestRotation" ,NULL,"ReachActorChestRotation",0,FbxCharacter::ePropertyPercent}, - { "ReachActorLowerChestRotation" ,NULL,"ReachActorLowerChestRotation",0,FbxCharacter::ePropertyPercent}, - { "HipsTOffsetX" ,NULL,"HipsTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetY" ,NULL,"HipsTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "HipsTOffsetZ" ,NULL,"HipsTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetX" ,NULL,"ChestTOffset",0,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetY" ,NULL,"ChestTOffset",1,FbxCharacter::ePropertyCentimeter}, - { "ChestTOffsetZ" ,NULL,"ChestTOffset",2,FbxCharacter::ePropertyCentimeter}, - { "LeftUpLegRollEx" ,"LeftUpLegRollExMode","LeftUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRollEx" ,"LeftLegRollExMode","LeftLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRollEx" ,"RightUpLegRollExMode","RightUpLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightLegRollEx" ,"RightLegRollExMode","RightLegRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRollEx" ,"LeftArmRollExMode","LeftArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRollEx" ,"LeftForeArmRollExMode","LeftForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightArmRollEx" ,"RightArmRollExMode","RightArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRollEx" ,"RightForeArmRollExMode","RightForeArmRollEx",0,FbxCharacter::ePropertyPercent}, - { "LeftUpLegRoll" ,"LeftUpLegRollMode","LeftUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftLegRoll" ,"LeftLegRollMode","LeftLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightUpLegRoll" ,"RightUpLegRollMode","RightUpLegRoll",0,FbxCharacter::ePropertyPercent}, - { "RightLegRoll" ,"RightLegRollMode","RightLegRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftArmRoll" ,"LeftArmRollMode","LeftArmRoll",0,FbxCharacter::ePropertyPercent}, - { "LeftForeArmRoll" ,"LeftForeArmRollMode","LeftForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightArmRoll" ,"RightArmRollMode","RightArmRoll",0,FbxCharacter::ePropertyPercent}, - { "RightForeArmRoll" ,"RightForeArmRollMode","RightForeArmRoll",0,FbxCharacter::ePropertyPercent}, - { "FloorContact" ,"FootFloorContact","FootFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticToes" ,"FootAutomaticToes",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RollExtractionMode" ,NULL,"RollExtractionMode",0,FbxCharacter::ePropertyEnum}, - { "FloorPivot" ,NULL,"FootFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "FootBottomToAnkle" ,NULL,"FootBottomToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootBackToAnkle" ,NULL,"FootBackToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootMiddleToAnkle" ,NULL,"FootMiddleToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootFrontToMiddle" ,NULL,"FootFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "FootInToAnkle" ,NULL,"FootInToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "FootOutToAnkle" ,NULL,"FootOutToAnkle",0,FbxCharacter::ePropertyCentimeter}, - { "ContactSize" ,NULL,"FootContactSize",0,FbxCharacter::ePropertyReal}, - { "HandFloorContact" ,"HandFloorContact","HandFloorContact",0,FbxCharacter::ePropertyNoUnit}, - { "AutomaticFingers" ,"HandAutomaticFingers",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HandFloorPivot" ,NULL,"HandFloorPivot",0,FbxCharacter::ePropertyEnum}, - { "HandBottomToWrist" ,NULL,"HandBottomToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandBackToWrist" ,NULL,"HandBackToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandMiddleToWrist" ,NULL,"HandMiddleToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandFrontToMiddle" ,NULL,"HandFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, - { "HandInToWrist" ,NULL,"HandInToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandOutToWrist" ,NULL,"HandOutToWrist",0,FbxCharacter::ePropertyCentimeter}, - { "HandContactSize" ,NULL,"HandContactSize",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandThumbTip" ,NULL,"LeftHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandIndexTip" ,NULL,"LeftHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandMiddleTip" ,NULL,"LeftHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandRingTip" ,NULL,"LeftHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandPinkyTip" ,NULL,"LeftHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftHandExtraFingerTip" ,NULL,"LeftHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandThumbTip" ,NULL,"RightHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandIndexTip" ,NULL,"RightHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandMiddleTip" ,NULL,"RightHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandRingTip" ,NULL,"RightHandRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandPinkyTip" ,NULL,"RightHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightHandExtraFingerTip" ,NULL,"RightHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootThumbTip" ,NULL,"LeftFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootIndexTip" ,NULL,"LeftFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootMiddleTip" ,NULL,"LeftFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootRingTip" ,NULL,"LeftFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootPinkyTip" ,NULL,"LeftFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "LeftFootExtraFingerTip" ,NULL,"LeftFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootThumbTip" ,NULL,"RightFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootIndexTip" ,NULL,"RightFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootMiddleTip" ,NULL,"RightFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootRingTip" ,NULL,"RightFootRingTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootPinkyTip" ,NULL,"RightFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, - { "RightFootExtraFingerTip" ,NULL,"RightFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, - { "FingerSolving" ,"FingerSolving",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "FootFingerContact" ,"FootFingerContact","FootFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "FootContactType" ,NULL,"FootContactType",0,FbxCharacter::ePropertyEnum}, - { "FootFingerContactMode" ,NULL,"FootFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContact" ,"HandFingerContact","HandFingerContact",0,FbxCharacter::ePropertyNoUnit}, - { "HandContactType" ,NULL,"HandContactType",0,FbxCharacter::ePropertyEnum}, - { "HandFingerContactMode" ,NULL,"HandFingerContactMode",0,FbxCharacter::ePropertyEnum}, - { "CtrlPullLeftToeBase" ,NULL,"CtrlPullLeftToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFoot" ,NULL,"CtrlPullLeftFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftKnee" ,NULL,"CtrlPullLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightToeBase" ,NULL,"CtrlPullRightToeBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFoot" ,NULL,"CtrlPullRightFoot",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightKnee" ,NULL,"CtrlPullRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftFingerBase" ,NULL,"CtrlPullLeftFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftHand" ,NULL,"CtrlPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullLeftElbow" ,NULL,"CtrlPullLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightFingerBase" ,NULL,"CtrlPullRightFingerBase",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightHand" ,NULL,"CtrlPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullRightElbow" ,NULL,"CtrlPullRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullLeftHand" ,NULL,"CtrlChestPullLeftHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlChestPullRightHand" ,NULL,"CtrlChestPullRightHand",0,FbxCharacter::ePropertyPercent}, - { "CtrlPullHead" ,NULL,"CtrlPullHead",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsPosition" ,NULL,"CtrlResistHipsPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlEnforceGravity" ,NULL,"CtrlEnforceGravity",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistHipsOrientation" ,NULL,"CtrlResistHipsOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestPosition" ,NULL,"CtrlResistChestPosition",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistChestOrientation" ,NULL,"CtrlResistChestOrientation",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftCollar" ,NULL,"CtrlResistLeftCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightCollar" ,NULL,"CtrlResistRightCollar",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftKnee" ,NULL,"CtrlResistLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftKnee" ,NULL,"CtrlResistMaximumExtensionLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftKnee" ,NULL,"CtrlResistCompressionFactorLeftKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightKnee" ,NULL,"CtrlResistRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightKnee" ,NULL,"CtrlResistMaximumExtensionRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightKnee" ,NULL,"CtrlResistCompressionFactorRightKnee",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistLeftElbow" ,NULL,"CtrlResistLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionLeftElbow" ,NULL,"CtrlResistMaximumExtensionLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorLeftElbow" ,NULL,"CtrlResistCompressionFactorLeftElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistRightElbow" ,NULL,"CtrlResistRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistMaximumExtensionRightElbow" ,NULL,"CtrlResistMaximumExtensionRightElbow",0,FbxCharacter::ePropertyPercent}, - { "CtrlResistCompressionFactorRightElbow" ,NULL,"CtrlResistCompressionFactorRightElbow",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlSpineStiffness" ,NULL,"CtrlSpineStiffness",0,FbxCharacter::ePropertyPercent}, - { "ParamCtrlNeckStiffness" ,NULL,"CtrlNeckStiffness",0,FbxCharacter::ePropertyPercent}, - { "Mirror" ,"MirrorMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection" ,NULL,"ShoulderCorrection",0,FbxCharacter::ePropertyPercent}, - { "LeftKneeKillPitch" ,"LeftKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightKneeKillPitch" ,"RightKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "LeftElbowKillPitch" ,"LeftElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "RightElbowKillPitch" ,"RightElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "HipsTranslationMode" ,NULL,"HipsTranslationMode",0,FbxCharacter::ePropertyEnum}, - { "WriteReference" ,"WriteReference",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "SyncMode" ,"SyncMode",NULL,0,FbxCharacter::ePropertyNoUnit}, - { "Damping" ,NULL,"Damping",0,FbxCharacter::ePropertyReal}, - { "Orientation" ,"OrientationDampingMode","OrientationDamping",0,FbxCharacter::ePropertySecond}, - { "Displacement" ,"DisplacementDampingMode","DisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "DisplacementMemory" ,"DisplacementMemoryMode","DisplacementMemory",0,FbxCharacter::ePropertySecond}, - { "HipsDisplacementDamping" ,"HipsDisplacementDampingMode","HipsDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "AnkleDisplacementDamping" ,"AnkleDisplacementDampingMode","AnkleDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "WristDisplacementDamping" ,"WristDisplacementDampingMode","WristDisplacementDamping",0,FbxCharacter::ePropertyReal}, - { "Stabilization" ,NULL,"Stabilization",0,FbxCharacter::ePropertyReal}, - { "AnkleStabilizationTime" ,"AnkleStabilizationTimeMode","AnkleStabilizationTime",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationPerimeter" ,"AnkleStabilizationPerimeterMode","AnkleStabilizationPerimeter",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationAngularPerimeter" ,"AnkleStabilizationAngularPerimeterMode","AnkleStabilizationAngularPerimeter",0,FbxCharacter::ePropertyDegree}, - { "AnkleStabilizationFloorProximity" ,"AnkleStabilizationFloorProximityMode","AnkleStabilizationFloorProximity",0,FbxCharacter::ePropertyCentimeter}, - { "AnkleStabilizationDamping" ,"AnkleStabilizationDampingMode","AnkleStabilizationDamping",0,FbxCharacter::ePropertySecond}, - { "AnkleStabilizationRecoveryTime" ,"AnkleStabilizationRecoveryTimeMode","AnkleStabilizationRecoveryTime",0,FbxCharacter::ePropertySecond}, - { "ContactBehaviour" ,NULL,"ContactBehaviour",0,FbxCharacter::ePropertyNoUnit}, - { "ShoulderCorrection", NULL, "RealisticShoulder",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessX", NULL, "CollarStiffnessX",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessY", NULL, "CollarStiffnessY",0,FbxCharacter::ePropertyReal}, - { "CollarStiffnessZ", NULL, "CollarStiffnessZ",0,FbxCharacter::ePropertyReal}, - { "ExtraCollarRatio", NULL, "ExtraCollarRatio",0,FbxCharacter::ePropertyPercent}, - { "LeftLegMaxExtensionAngle", NULL, "LeftLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightLegMaxExtensionAngle", NULL, "RightLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "LeftArmMaxExtensionAngle", NULL, "LeftArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "RightArmMaxExtensionAngle", NULL, "RightArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, - { "StretchStartArmsAndLegs", NULL, "StretchStartArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "StretchStopArmsAndLegs", NULL, "StretchStopArmsAndLegs",0,FbxCharacter::ePropertyReal}, - { "SnSScaleArmsAndLegs", NULL, "SnSScaleArmsAndLegs",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftWrist", NULL, "SnSReachLeftWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightWrist", NULL, "SnSReachRightWrist",0,FbxCharacter::ePropertyPercent}, - { "SnSReachLeftAnkle", NULL, "SnSReachLeftAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSReachRightAnkle", NULL, "SnSReachRightAnkle",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpine", NULL, "SnSScaleSpine",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleSpineChildren", NULL, "SnSScaleSpineChildren",0,FbxCharacter::ePropertyPercent}, - { "SnSSpineFreedom", NULL, "SnSSpineFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachChestEnd", NULL, "SnSReachChestEnd",0,FbxCharacter::ePropertyPercent}, - { "SnSScaleNeck", NULL, "SnSScaleNeck",0,FbxCharacter::ePropertyPercent}, - { "SnSNeckFreedom", NULL, "SnSNeckFreedom",0,FbxCharacter::ePropertyPercent}, - { "SnSReachHead", NULL, "SnSReachHead",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll1" ,"LeafLeftUpLegRoll1Mode","LeafLeftUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll1" ,"LeafLeftLegRoll1Mode","LeafLeftLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll1" ,"LeafRightUpLegRoll1Mode","LeafRightUpLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll1" ,"LeafRightLegRoll1Mode","LeafRightLegRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll1" ,"LeafLeftArmRoll1Mode","LeafLeftArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll1" ,"LeafLeftForeArmRoll1Mode","LeafLeftForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll1" ,"LeafRightArmRoll1Mode","LeafRightArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll1" ,"LeafRightForeArmRoll1Mode","LeafRightForeArmRoll1",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll2" ,"LeafLeftUpLegRoll2Mode","LeafLeftUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll2" ,"LeafLeftLegRoll2Mode","LeafLeftLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll2" ,"LeafRightUpLegRoll2Mode","LeafRightUpLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll2" ,"LeafRightLegRoll2Mode","LeafRightLegRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll2" ,"LeafLeftArmRoll2Mode","LeafLeftArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll2" ,"LeafLeftForeArmRoll2Mode","LeafLeftForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll2" ,"LeafRightArmRoll2Mode","LeafRightArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll2" ,"LeafRightForeArmRoll2Mode","LeafRightForeArmRoll2",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll3" ,"LeafLeftUpLegRoll3Mode","LeafLeftUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll3" ,"LeafLeftLegRoll3Mode","LeafLeftLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll3" ,"LeafRightUpLegRoll3Mode","LeafRightUpLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll3" ,"LeafRightLegRoll3Mode","LeafRightLegRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll3" ,"LeafLeftArmRoll3Mode","LeafLeftArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll3" ,"LeafLeftForeArmRoll3Mode","LeafLeftForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll3" ,"LeafRightArmRoll3Mode","LeafRightArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll3" ,"LeafRightForeArmRoll3Mode","LeafRightForeArmRoll3",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll4" ,"LeafLeftUpLegRoll4Mode","LeafLeftUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll4" ,"LeafLeftLegRoll4Mode","LeafLeftLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll4" ,"LeafRightUpLegRoll4Mode","LeafRightUpLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll4" ,"LeafRightLegRoll4Mode","LeafRightLegRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll4" ,"LeafLeftArmRoll4Mode","LeafLeftArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll4" ,"LeafLeftForeArmRoll4Mode","LeafLeftForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll4" ,"LeafRightArmRoll4Mode","LeafRightArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll4" ,"LeafRightForeArmRoll4Mode","LeafRightForeArmRoll4",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftUpLegRoll5" ,"LeafLeftUpLegRoll5Mode","LeafLeftUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftLegRoll5" ,"LeafLeftLegRoll5Mode","LeafLeftLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightUpLegRoll5" ,"LeafRightUpLegRoll5Mode","LeafRightUpLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightLegRoll5" ,"LeafRightLegRoll5Mode","LeafRightLegRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftArmRoll5" ,"LeafLeftArmRoll5Mode","LeafLeftArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafLeftForeArmRoll5" ,"LeafLeftForeArmRoll5Mode","LeafLeftForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightArmRoll5" ,"LeafRightArmRoll5Mode","LeafRightArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeafRightForeArmRoll5" ,"LeafRightForeArmRoll5Mode","LeafRightForeArmRoll5",0,FbxCharacter::ePropertyPercent}, - { "LeftLegFullRollExtraction" ,NULL,"LeftLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightLegFullRollExtraction" ,NULL,"RightLegFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "LeftArmFullRollExtraction" ,NULL,"LeftArmFullRollExtraction",0,FbxCharacter::ePropertyPercent}, - { "RightArmFullRollExtraction" ,NULL,"RightArmFullRollExtraction",0,FbxCharacter::ePropertyPercent} -}; - -class HIK2FbxCharacterPropertyBridge -{ -public: - enum - { - mParamCount = sizeof(gHIK2FbxCharacterPropertyBridge) / sizeof(FbxCharacterPropertyInfo) - }; - static inline const FbxCharacterPropertyInfo& GetAt(int i) { return gHIK2FbxCharacterPropertyBridge[i] ;} - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromFbxCharacterProperty(const char* pCharacterPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(GetAt(lCounter).mFbxCharacterPropertyName && !strcmp(GetAt(lCounter).mFbxCharacterPropertyName, pCharacterPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } - - static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromHIKProperty(const char* pHIKPropertyName) - { - int lCounter = 0; - for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) - { - if(!strcmp(GetAt(lCounter).mHIKPropertyName, pHIKPropertyName)) - { - return &GetAt(lCounter); - } - } - return NULL; - } -}; - -#include - -#endif /* _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudio.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudio.h deleted file mode 100755 index 33646b2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudio.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_AUDIO_H_ -#define _FBXSDK_SCENE_AUDIO_H_ - -#include - -#include - -#include - -/** FBX SDK audio class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudio : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxAudio, FbxMediaClip); - -public: - /** - * \name Audio object creation. - * - */ - //@{ - /** Create a FbxAnimCurve. - * \param pContainer Scene to which the created audio clip belongs. - * \param pName Name of the audio clip. - * \return Newly created audio clip - */ - static FbxAudio* Create(FbxScene* pContainer, const char* pName); - //@} - /** - *\name Reset audio - */ - //@{ - //! Reset the audio to default values. - void Reset() override; - //@} - - /** - * \name Audio attributes Management - */ - //@{ - - //! Audio file bit rate value (bit/s). - FbxPropertyT BitRate; - - //! Audio file sample rate value (Hz). - FbxPropertyT SampleRate; - - //! Audio file number of channels. - FbxPropertyT Channels; - - //! Audio file length. - FbxPropertyT Duration; - - /** Compound property to be used if animation data needs to be connected. - * In this case, specific properties should be added to this one with the Animatable flag set. - * \remarks By default, the Volume property is always created first and, unless explicitily - * removed by a "client", will always exist. - */ - FbxProperty AnimFX; - //@} - - /** - *\name Utility section - */ - //@{ - /** Access the Volume child property of the AnimFX. - * \return The volume property if it exists or an invalid property. - */ - FbxProperty Volume(); - //@} -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void InitializeAnimFX(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudiolayer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudiolayer.h deleted file mode 100755 index 92554b2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaudiolayer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxanimlayer.h -#ifndef _FBXSDK_SCENE_AUDIO_LAYER_H_ -#define _FBXSDK_SCENE_AUDIO_LAYER_H_ - -#include - -#include - -#include - -class FbxAudio; - -/** The audio layer is a collection of audio clips. Its purpose is to store - * a variable number of FbxAudio objects representing audio clips. The class provides - * a Mute, Solo and Lock states flags (bool properties), as well as a Clolor (double3 property). - * There is no evaluation system for audio layers inside the FBX SDK and an audio layer can be - * empty. - * \nosubgrouping - */ -class FBXSDK_DLL FbxAudioLayer : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxAudioLayer, FbxCollection); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property stores the mute state. - * The mute state indicates that this layer should be excluded from the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Mute; - - /** This property stores the solo state. - * The solo state indicates that this layer is the only one that should be - * processed during the evaluation. - * - * Default value is \c false - */ - FbxPropertyT Solo; - - /** This property stores the volume increment value. - * This property can be animated. - * Default value is \c 0.0 - */ - FbxPropertyT Volume; - - /** This property stores the lock state. - * The lock state indicates that this layer has been "locked" from editing operations - * and should no longer receive keyframes. - * - * Default value is \c false - */ - FbxPropertyT Lock; - - /** This property stores the display color. - * This color can be used by applications if they display a graphical representation - * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX - * file and retrieved from it. - * - * Default value is \c (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - //! Reset this object properties to their default value. - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AUDIO_LAYER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaxissystem.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaxissystem.h deleted file mode 100755 index 92cd42c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxaxissystem.h +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxaxissystem.h -#ifndef _FBXSDK_SCENE_AXIS_SYSTEM_H_ -#define _FBXSDK_SCENE_AXIS_SYSTEM_H_ - -#include - -#include -#include - -#include - -/** This class represents the coordinate system of the scene and can convert scenes - to other coordinate systems. By default the FbxScene uses a Y-Up axis - system. If the calling application wishes to change the default axis it will need to define the new - axis system and call the convert method with the scene as argument. The appropriate transforms will be - applied to the first level objects of the scene only (objects whose parent is the scene itself). Child - objects do not need to be transformed since they inherit from their parents. - The adjustment will affect the translation animation curves and the objects pivots values (the rotation - transformation is applied as a pre-rotation transform therefore the rotation animation curves do not need to - be transformed). Once converted, the scene will have its axis definition changed to the new system. - - For example: - \code - FbxScene* lScene = FbxScene::Create(sdkmanager, "MyScene"); - ... - // the scene is filled with objects - - int dir; - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this returns the equivalent of FbxAxisSystem::eYAxis - - FbxAxisSystem max; // we desire to convert the scene from Y-Up to Z-Up - max.ConvertScene(lScene); - - lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this will now return the equivalent of FbxAxisSystem::eZAxis - \endcode - - No conversion will take place if the scene current axis system is equal to the new one. - - The EUpVector specifies which axis has the up and down direction in the system (typically this is the Y or Z axis). - The sign of the EUpVector is applied to represent the direction (1 is up and -1 is down relative to the observer). - - The EFrontVector specifies which axis has the front and back direction in the system. It is not an independent variable, - which means it depends on EUpVector. The enum values ParityEven and ParityOdd denote the first one and - the second one of the remain two axes in addition to the up axis. - - For example if the up axis is X, the remain two axes will be Y And Z, so the ParityEven is Y, and the ParityOdd is Z - ; If the up axis is Y, the remain two axes will X And Z, so the ParityEven is X, and the ParityOdd is Z; - If the up axis is Z, the remain two axes will X And Y, so the ParityEven is X, and the ParityOdd is Y. - - There still needs a parameter to denote the direction of the EFrontVector just as the EUpVector. And the sign of the - EFrontVector represents the direction (1 is front and -1 is back relative to observer). - - If the front axis and the up axis are determined, the third axis will be automatically determined as the left one. - The ECoordSystem enum is a parameter to determine the direction of the third axis just as the EUpVector sign. - It determines if the axis system is right-handed or left-handed just as the enum values. - - Some code for reconstructing a FbxAxisSystem object from reference scene. - \code - //the reference scene - FbxScene* lSceneReference = FbxScene::Create(sdkmanager, "ReferenceScene"); - ... - // the scene is filled with objects - - FbxAxisSystem lAxisSytemReference = lSceneReference->GetGlobalSettings().GetAxisSystem(); - - int lUpVectorSign = 1; - int lFrontVectorSign = 1; - - //get upVector and its sign. - EUpVector lUpVector = lAxisSsytemReference.getUpVector( lUpVectorSign ); - - //get FrontVector and its sign. - EFrontVector lFrontVector = lAxisSsytemReference.getFrontVector( lFrontVectorSign ); - - //get uCoorSystem. - ECoordSystem lCoorSystem = lAxisSsytemReference.GetCoorSystem(); - - //The FbxAxisSystem object to reconstruct back by saved parameter - FbxAxisSystem lAxisSytemReconstruct( lUpVectorSign * lUpVector, - lFrontVectorSign * lFrontVector, - lCoorSystem); - \endcode - - * \nosubgrouping - */ -class FBXSDK_DLL FbxAxisSystem -{ -public: - - /** \enum EUpVector Specifies which canonical axis represents up in the system (typically Y or Z). - */ - enum EUpVector - { - eXAxis = 1, - eYAxis = 2, - eZAxis = 3 - }; - - /** \enum EFrontVector Vector with origin at the screen pointing toward the camera. - * This is a subset of enum EUpVector because axis cannot be repeated. - * We use the system of "parity" to define this vector because its value (X,Y or Z axis) - * really depends on the up-vector. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - * \see Detailed description of FbxAxisSystem. - */ - enum EFrontVector - { - eParityEven = 1, - eParityOdd = 2 - }; - - /** \enum ECoordSystem Specifies the third vector of the system. - * The FbxAxisSystem deduces the correct vector and direction based on this flag - * and the relationship with the up and front vectors. The EPreDefinedAxisSystem list the up-vector, parity and - * coordinate system values for the predefined systems. - */ - enum ECoordSystem - { - eRightHanded, - eLeftHanded - }; - - /** \enum EPreDefinedAxisSystem Enumeration that can be used to initialize a new instance of this class with - * predefined configurations (see the "Predefined axis systems" section). - */ - enum EPreDefinedAxisSystem - { - eMayaZUp, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMayaYUp, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eMax, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ - eMotionBuilder, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eOpenGL, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ - eDirectX, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - eLightwave /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ - }; - - /** - * \name Constructor and Destructor - */ - //@{ - FbxAxisSystem(); - - /** Constructor! - * \param pUpVector Specify the up vector. - * \param pFrontVector Specify the front vector. - * \param pCoorSystem Specify RightHanded coordinate system or LeftHanded coordinate system. - */ - FbxAxisSystem(EUpVector pUpVector, EFrontVector pFrontVector, ECoordSystem pCoorSystem); - - /** Copy constructor! - * \param pAxisSystem Another FbxAxisSystem object copied to this one. - */ - FbxAxisSystem(const FbxAxisSystem& pAxisSystem); - - /** Constructor! - * \param pAxisSystem Specify which predefined axis system to copy. - */ - FbxAxisSystem(const EPreDefinedAxisSystem pAxisSystem); - - //! Destructor. - virtual ~FbxAxisSystem(); - //@} - - /** - * \name Boolean operation. - */ - //@{ - - /** Equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are equal, \c false otherwise. - */ - bool operator==(const FbxAxisSystem& pAxisSystem)const; - - /** Non-equivalence operator. - * \param pAxisSystem The axis system to compare against this one. - * \return \c true if these two axis systems are unequal, \c false otherwise. - */ - bool operator!=(const FbxAxisSystem& pAxisSystem)const; - //@} - - /** Assignment operation. - * \param pAxisSystem Axis system assigned to this one. - */ - FbxAxisSystem& operator=(const FbxAxisSystem& pAxisSystem); - - /** - * \name Predefined axis systems. - * These static members define the axis system of the most popular applications. - */ - //@{ - - //! Predefined axis system: MayaZUp (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaZUp; - - //! Predefined axis system: MayaYUp (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem MayaYUp; - - //! Predefined axis system: Max (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Max; - - //! Predefined axis system: Motionbuilder (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem Motionbuilder; - - //! Predefined axis system: OpenGL (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) - static const FbxAxisSystem OpenGL; - - //! Predefined axis system: DirectX (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem DirectX; - - //! Predefined axis system: Lightwave (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) - static const FbxAxisSystem Lightwave; - //@} - - /** Convert a scene to this axis system. Sets the axis system of the scene to this system unit. - * \param pScene The scene to convert - */ - void ConvertScene(FbxScene* pScene) const; - - /** Convert a scene to this axis system by using the specified - * node as an Fbx_Root. This is provided for backwards compatibility - * only and ConvertScene(FbxScene* pScene) should be used instead when possible. - * \param pScene The scene to convert - * \param pFbxRoot The Fbx_Root node that will be transformed. - */ - void ConvertScene(FbxScene* pScene, FbxNode* pFbxRoot) const; - - /** Get the EFrontVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for front, -1 for back (relative to observer). - * \return The EFrontVector of this axis system. - */ - EFrontVector GetFrontVector( int & pSign ) const; - - /** Get the EUpVector and its sign of this axis system. - * \param pSign The sign of the axis, 1 for up, -1 for down (relative to observer). - * \return The EUpVector of this axis system. - */ - EUpVector GetUpVector( int & pSign ) const; - - /** Accessor to the ECoordSystem of this object. - * \return The current coordinate axis system of this object. - */ - ECoordSystem GetCoorSystem() const; - - /** Represents the axis system as a 4x4 matrix - * \return The equivalent matrix of this axis system - */ - void GetMatrix(FbxAMatrix& pMatrix); - - /** Converts the children of the given node to this axis system. - * Unlike the ConvertScene() method, this method does not set the axis system - * of the scene that the pRoot node belongs, nor does it adjust FbxPose - * as they are not stored under the scene, and not under a particular node. - * \param pRoot The node whose children are converted. - * \param pSrcSystem The source axis system. - */ - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - class AxisDef - { - public: - enum EAxis {eXAxis, eYAxis, eZAxis}; - bool operator==(const AxisDef& pAxis) const { return (mAxis == pAxis.mAxis) && (mSign == pAxis.mSign); } - EAxis mAxis; - int mSign; - }; - - AxisDef mUpVector; - AxisDef mFrontVector; - AxisDef mCoorSystem; - - void ConvertTProperty(FbxArray& pNodes, const FbxAxisSystem& pFrom) const; - void ConvertCurveNodes(FbxArray& pCurveNodes, const FbxAxisSystem& pFrom) const; - void AdjustPreRotation(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPivots(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void GetConversionMatrix(const FbxAxisSystem& pFrom, FbxMatrix& pConversionRM) const; - void AdjustLimits(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void AdjustPoses(FbxScene* pScene, const FbxMatrix& pConversionRM) const; - void AdjustCamera(FbxNode* pNode, const FbxMatrix& pConversionRM ) const; - void AdjustCluster(FbxNode* pNode, const FbxMatrix& pConversionRM) const; - void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem, bool pSubChildrenOnly) const; - - friend class FbxGlobalSettings; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_AXIS_SYSTEM_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollection.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollection.h deleted file mode 100755 index e34fa11..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollection.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollection.h -#ifndef _FBXSDK_SCENE_COLLECTION_H_ -#define _FBXSDK_SCENE_COLLECTION_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** A FbxObject derived container for FbxObject. - * \nosubgrouping - * - */ -class FBXSDK_DLL FbxCollection : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCollection, FbxObject); - -public: - /** - * \name Collection member management - */ - //@{ - //! Deletes all objects in the container. - virtual void Clear(); - - /** Adds a member. - * \param pMember Object to be added. - */ - virtual bool AddMember(FbxObject* pMember) { return ConnectSrcObject(pMember); } - - /** Removes a member. - * \param pMember Object to be removed. - */ - virtual bool RemoveMember(FbxObject* pMember) { return DisconnectSrcObject(pMember); } - - /** Returns the number of objects contained within the collection. - * \return The number of objects the collection contains. - */ - inline int GetMemberCount () const { return GetSrcObjectCount(); } - - /** Returns the member of the collection at the given index. - * \param pIndex The given index. - * \return The member of the collection at the given index. - */ - inline FbxObject* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Judges whether an object is a part of the collection. - * \param pMember The member to be judged. - * \return \c True if it is a member of the collection, returns \c false if it is not a member. - */ - virtual bool IsMember(const FbxObject* pMember) const; - //@} - - /** - * \name Templated member management - */ - //@{ - /** Returns the number of class T objects contained within the collection. - * \return The number of objects of class T the collection contains. */ - template inline int GetMemberCount() const { return GetSrcObjectCount(); } - - /** Returns the member of class T at the given index in the collection. - * \param pIndex The given index. - * \return The member of class T at the given index. */ - template inline T* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } - - /** Searches for a member of class T. - * \param pName Member name. */ - template inline T* FindMember(const char* pName) const { return FindSrcObject(pName); } - //@} - - /** - * \name Criteria based member management - */ - //@{ - /** Returns the number of objects contained within the collection that meet the specified criteria. - * \param pCriteria Defines a set of criteria that each object must meet in order to be included in the results. - * \return The number of objects the collection contains that meet the specified criteria. - */ - inline int GetMemberCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(pCriteria); } - - /** Returns the member at the given index in the collection if it meets the specified criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pIndex The given index. - * \return The member at the given index if it meets the criteria; NULL otherwise. - */ - inline FbxObject* GetMember(const FbxCriteria& pCriteria, int pIndex=0) const { return GetSrcObject(pCriteria, pIndex); } - - /** Searches for a member with the given name that also meets the given criteria. - * \param pCriteria Defines a set of criteria that the returned object must meet. - * \param pName Member name. - * \return The member with the given name if it meets the criteria; NULL if no match could be found. - */ - inline FbxObject* FindMember(const FbxCriteria& pCriteria, const char* pName) const { return FindSrcObject(pCriteria, pName); } - //@} - - /** - * \name Selection management - */ - //@{ - /** Selects/Deselects all the contained objects. - * \param pSelection If \c true, all objects are selected, if \c false, all objects are deselected. - */ - virtual void SetSelectedAll(bool pSelection); - //@} -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h deleted file mode 100755 index 73fb117..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcollectionexclusive.h +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcollectionexclusive.h -#ifndef _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ -#define _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ - -#include - -#include - -#include - -/** Class for exclusive collections. An object (FbxObject) should belong to only one exclusive collection at most. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCollectionExclusive : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxCollectionExclusive, FbxCollection); - -public: - /** Add a member if it's not a member of any other FbxCollectionExclusive objects. - * \param pMember Object to be added - */ - bool AddMember(FbxObject* pMember) override; -}; - -#include - -#endif /* _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainer.h deleted file mode 100755 index f9fadd2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainer.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainer.h -#ifndef _FBXSDK_SCENE_CONTAINER_H_ -#define _FBXSDK_SCENE_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** Generic container for object grouping and encapsulation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxContainer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainer, FbxObject); - -public: - /** - * \name Container dynamic attributes - */ - //@{ - /** Create a new property. - * \param pName Name of the property - * \param pType Type of the property - * \param pLabel Label of the property - * \return the newly created property - */ - FbxProperty CreateProperty(FbxString pName, FbxDataType & pType, FbxString pLabel); - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the template name information of the container - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateName; - - /** This property contains the template path information of the container - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplatePath; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT TemplateVersion; - - /** This property contains the view name information of the container - * - * To access this property do: ViewName.Get(). - * To set this property do: ViewName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ViewName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxContainerTemplate* mContainerTemplate; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h deleted file mode 100755 index 33d6ba8..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxcontainertemplate.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcontainertemplate.h -#ifndef _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ -#define _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ - -#include - -#include - -#include - -//Container Template tokens -#define FBXSDK_CONTAINER_TEMPLATE_STR "templates" -#define FBXSDK_TEMPLATE_STR "template" -#define FBXSDK_EXTENDS_TEMPLATE_STR "extends" - -struct FbxContainerTemplate_internal; - -/** Class for Container Template files. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxContainerTemplate : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxContainerTemplate, FbxObject); - -public: - /** Parse template file to get extend templates. - * \param pTemplateFilePath The template file to be parsed. - * \param pExtendTemplateNames Fill extend templates' names to this array. - * \remark Call this function to get extend templates' names. - */ - void ParseTemplateFile(const char* pTemplateFilePath, FbxArray& pExtendTemplateNames); - - /** Add extend template path. - * \param pExtendTemplatePath The template file path to be added. - */ - void AddExtendTemplatePath(const char* pExtendTemplatePath); - - /** Get the (pIndex)th extend template path. - * \param pIndex Index of the queried item. - * \return The (pIndex)th extend template path. - */ - char* GetExtendTemplatePathAt(FbxUInt pIndex) const; - - /** Get the count of extend template path. - * \return The count of extend template path. - */ - FbxUInt GetExtendTemplateCount() const; - - /** Clear the extend template path. - */ - void ClearExtendTemplatePath(); - - /** This property contains the template name. - * - * To access this property do: TemplateName.Get(). - * To set this property do: TemplateName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateName; - - /** This property contains the template path. - * - * To access this property do: TemplatePath.Get(). - * To set this property do: TemplatePath.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePath; - - /** This property contains the template package name. - * - * To access this property do: TemplatePackageName.Get(). - * To set this property do: TemplatePackageName.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplatePackageName; - - /** This property contains the template version information of the container - * - * To access this property do: TemplateVersion.Get(). - * To set this property do: TemplateVersion.Set(FbxString). - * - * Default value is "". - */ - FbxPropertyT ContainerTemplateVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxContainerTemplate_internal* mData; - FbxArray mExtendTemplatePaths; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h deleted file mode 100755 index a27d370..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdisplaylayer.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdisplaylayer.h -#ifndef _FBXSDK_SCENE_DISPLAY_LAYER_H_ -#define _FBXSDK_SCENE_DISPLAY_LAYER_H_ - -#include - -#include - -#include - -/** Class for display layers. -* \nosubgrouping -* Display layers are overlapping views of your scene that contain a list of members. -* The members are exclusive. Members cannot be part of multiple display layers. -* Display layers enables user to organize elements of scene and affect visibility and manipulation attributes of multiple objects at once. -*/ -class FBXSDK_DLL FbxDisplayLayer : public FbxCollectionExclusive -{ - FBXSDK_OBJECT_DECLARE(FbxDisplayLayer, FbxCollectionExclusive); - -public: - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** This property stores the color of this display layer. - * - * Default value is FbxDouble3(0.8,0.8,0.8). - */ - FbxPropertyT Color; - /** This property stores the visibility of this display layer. - * - * Default value is true. - */ - FbxPropertyT Show; - /** This property stores the manipulation state of this display layer. - * - * Default value is false. - */ - FbxPropertyT Freeze; - /** This property stores the level of detail mode of this display layer. - * - * Default value is false. - */ - FbxPropertyT LODBox; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - // Default property values - static const FbxDouble3 sColorDefault; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DISPLAY_LAYER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocument.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocument.h deleted file mode 100755 index ce27ebb..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocument.h +++ /dev/null @@ -1,312 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocument.h -#ifndef _FBXSDK_SCENE_DOCUMENT_H_ -#define _FBXSDK_SCENE_DOCUMENT_H_ - -#include - -#include - -#include - -class FbxStatus; -class FbxTakeInfo; -class FbxPeripheral; -class FbxDocumentInfo; - -/** FbxDocument is a base class for FbxScene and FbxLibrary classes. - * A document is a collection (FbxCollection) of objects (FbxObject), called the root member objects. - * This is because these objects each form the root of an object graph. The manager (FbxManager) has access to all - * documents, scenes and libraries. - * - * A document can be contained in another document, thus, a hierarchy of documents - * can be built. The root of all documents is simply called the root document. - * - * A document manages animation stacks (FbxAnimStack). It also provides access to animation stack information (FbxTakeInfo). - * - * A document carries information in its FbxDocumentInfo. - * - * Documents manage peripherals to load and unload objects (see class FbxPeripheral), - * as well as references to other objects or documents. - * - * Error management is also available. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxDocument : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxDocument, FbxCollection); - -public: - /** - * \name Properties - */ - //@{ - FbxPropertyT Roots; - //@} - - /** - * \name Document Member Manager - */ - //@{ - //! Remove document members and restore default settings. - void Clear() override; - - /** Add a member object and connect it to Roots. - * \param pMember Object to add to the document. - */ - inline void AddRootMember(FbxObject* pMember){ AddMember(pMember); Roots.ConnectSrcObject(pMember); } - - /** Remove a member object from the document. - * \param pMember Object to remove from the document. - */ - inline void RootRootRemoveMember(FbxObject* pMember){ RemoveMember(pMember); Roots.DisconnectSrcObject(pMember); } - - /** Find a member object in the document, that has the given type and name. - * \param pName Member name. */ - template inline T* FindRootMember(const char* pName){ return Roots.FindSrcObject(pName); } - - //! Return the number of objects in the document. - inline int GetRootMemberCount () const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of class T in the document. - * \return The number of objects of class T in the document. */ - template inline int GetRootMemberCount() const { return Roots.GetSrcObjectCount(); } - - /** Return the number of objects of the document that satisfy the given criteria. - * \param pCriteria Criteria for selecting objects. - * \return The number of objects satisfying the given criteria. - */ - int GetRootMemberCount(FbxCriteria pCriteria) const; - - /** Return the member of the document at given index. - * \param pIndex Selection index. - */ - inline FbxObject* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the member of class T of the document at given index. - * \param pIndex Selection index. */ - template inline T* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } - - /** Return the document member which satisfies given criteria, for given index. - * \param pCriteria Criteria for selecting objects. - * \param pIndex Selection index. - */ - FbxObject* GetRootMember(FbxCriteria pCriteria, int pIndex=0) const; - - /** Is an object part of the document. - * \param pMember Queried object. - * \return \c true if pMember is an object part of the document, \c false otherwise. - */ - virtual bool IsRootMember(FbxObject* pMember) const; - //@} - - - /** - * \name Document information - */ - //@{ - /** Get the document information. - * \return Pointer to the document information object. - */ - FbxDocumentInfo* GetDocumentInfo() const; - - /** Set the document information. - * \param pSceneInfo Pointer to the document information object. - */ - void SetDocumentInfo(FbxDocumentInfo* pSceneInfo); - //@} - - /** - * \name Offloading management - * - * Documents manage peripherals to load and unload objects (see - * class FbxPeripheral). A peripheral manipulates the content - * of an object. For instance, a peripheral can load the connections - * of an object on demand. - * - * The document does not own the peripheral therefore - * it will not attempt to delete it at destruction time. Cloning - * the document will share the pointer to the peripheral across - * the cloned objects. The assignment operator has a similar behavior. - */ - //@{ - /** Set the current peripheral to be used to load or unload objects from this document. - * \param pPeripheral The peripheral to be set. - */ - void SetPeripheral(FbxPeripheral* pPeripheral); - - /** Retrieve the current peripheral of the document. - * \return Current peripheral. - */ - FbxPeripheral* GetPeripheral() override; - - /** Unload all the unloadable objects contained in the document using the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of objects that the document has been able to unload. - */ - int UnloadContent(FbxStatus* pStatus = NULL); - - /** Load all the objects contained in the document with the data from the currently set peripheral. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of loaded objects. - */ - int LoadContent(FbxStatus* pStatus = NULL); - - //@} - - /** - * \name Referencing management - */ - //@{ - - /** - * Fills an array of pointers to documents that reference objects in this document. - * - * \param pReferencingDocuments Array of pointers to documents. - * \returns Number of documents that reference objects in this document. - */ - int GetReferencingDocuments(FbxArray& pReferencingDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pFromDoc) - * that reference objects in this document. - * - * \param pFromDoc Pointer to the document containing referencing objects. - * \param pReferencingObjects Array of pointers to referencing objects. - * \returns Number of objects that reference objects in this document. - */ - int GetReferencingObjects(const FbxDocument* pFromDoc, FbxArray& pReferencingObjects) const; - - /** - * Fills an array of pointers to documents that are referenced by objects in this document. - * - * \param pReferencedDocuments Array of pointers to documents. - * \returns Number of documents that are referenced by objects in this document. - */ - int GetReferencedDocuments(FbxArray& pReferencedDocuments) const; - - /** - * Fills an array of pointers to objects in a given document (pToDoc) - * that are referenced by objects in this document. - * - * \param pToDoc Pointer to the document containing referenced objects. - * \param pReferencedObjects Array of pointers to referenced objects. - * \returns Number of objects that are referenced by objects in this document. - */ - int GetReferencedObjects(const FbxDocument* pToDoc, FbxArray& pReferencedObjects) const; - - /** - * Gets the path string to the root document, if the current document is contained in another document. - \returns Path to the root document. - */ - FbxString GetPathToRootDocument(void) const; - /** - * Gets the document path to the root document as an array of documents, if the current document is contained in another document. - * \param pDocumentPath Array of FbxDocument to store the document path. - * \param pFirstCall Recursive flag: always use pFirstCall = \c true. - */ - void GetDocumentPathToRootDocument(FbxArray& pDocumentPath, bool pFirstCall = true) const; - - /** - * Tells if this document is a root document. - \return \c false if the current document is contained in another document, \c true otherwise. - */ - bool IsARootDocument(void) { return (NULL == GetDocument()); } - //@} - - /** - * \name Animation Stack Management - * \remarks Animation stacks replaces the deprecated takes. - */ - //@{ - /** Holds the name of the FbxAnimStack that the application uses for animation in this document. - */ - FbxPropertyT ActiveAnimStackName; - - /** Adds a new animation stack object to this document. - * In case of error, FbxDocument::GetLastErrorID() will return - * \c eTakeError. - * \param pName Animation stack name. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if a new FbxAnimStack has been successfully created, - * \c false if an error occurred or if the specified name defines - * a FbxAnimStack that already exists in the document. - */ - bool CreateAnimStack(const char* pName, FbxStatus* pStatus = NULL); - - /** Destroy the animation stack object identified by pName from this document. - * \param pName Name of the animation stack to be deleted. - * \return \c true if the FbxAnimStack has been destroyed and \c false otherwise. - */ - bool RemoveAnimStack(const char* pName); - - /** Fill a string array with all existing animation stack names. - * The array of string is cleared before it is used - * \param pNameArray An array of string objects. - */ - void FillAnimStackNameArray(FbxArray& pNameArray); - - //@} - - /** - * \name Animation Stack Information Management - * \remark Although takes are deprecated, class FbxTakeInfo is not deprecated and - * now contains animation stack information. - */ - //@{ - /** Set information about an animation stack. - * \param pTakeInfo Animation stack information. Field FbxTakeInfo::mName specifies - * the targeted animation stack. - * \return \c true if animation stack is found with this name, and if information is set. - */ - bool SetTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Get information about an animation stack. - * \param pTakeName Name of the targeted animation stack. - * \return Animation stack information, or \c NULL if animation stack isn't found or - * has no information set for this document. - */ - FbxTakeInfo* GetTakeInfo(const FbxString& pTakeName) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - void ConnectVideos(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - void SetDocument(FbxDocument* pDocument) override; - - bool FindTakeName(const FbxString& pTakeName); - - FbxArray mTakeInfoArray; - -private: - FbxPeripheral* mPeripheral; - FbxDocumentInfo* mDocumentInfo; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h deleted file mode 100755 index 0eeffb6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxdocumentinfo.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdocumentinfo.h -#ifndef _FBXSDK_SCENE_DOCUMENT_INFO_H_ -#define _FBXSDK_SCENE_DOCUMENT_INFO_H_ - -#include - -#include - -#include - -class FbxThumbnail; - -/** This class contains scene thumbnails and user-defined summary data. - */ -class FBXSDK_DLL FbxDocumentInfo : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDocumentInfo, FbxObject); - -public: - /** - * \name Public properties - */ - //@{ - /** This property contains the last saved URL. - * - * To retrieve the value of this property, use LastSavedUrl.Get(). - * To set the value of this property, use LastSavedUrl.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSavedUrl; - - /** This property contains the URL. - * - * To retrieve the value of this property, use Url.Get(). - * To set the value of this property, use Url.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Url; - - /** Parent property for all properties related to creation. These properties - * should be set once when the file is created, and you should not change them - * during subsequent save or reload operations. - * The default properties are listed below, but application vendors can add new - * properties under this parent property. - */ - FbxProperty Original; - - /** This property contains the name of the original application vendor. - * - * To retrieve the value of this property, use Original_ApplicationVendor.Get(). - * To set the value of this property, use Original_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVendor; - - /** This property contains the original application name. - * - * To retrieve the value of this property, use Original_ApplicationName.Get(). - * To set the value of this property, use Original_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationName; - - /** This property contains the version of the original application. - * - * To retrieve the value of this property, use Original_ApplicationVersion.Get(). - * To set the value of this property, use Original_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_ApplicationVersion; - - /** This property contains the original file name. - * - * To retrieve the value of this property, use Original_FileName.Get(). - * To set the value of this property, use Original_FileName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT Original_FileName; - - /** This property contains the original date and time. - * - * To retrieve the value of this property, use Original_DateTime_GMT.Get(). - * To set the value of this property, use Original_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT Original_DateTime_GMT; - - /** The parent property for all last saved-related properties. - * These properties update every time a file is saved. - * The default properties are below, but application vendors can add new - * properties under this parent property. - * The file creator must set both the original and last saved properties. - */ - FbxProperty LastSaved; - - /** This property contains the last saved application vendor. - * - * To retrieve the value of this property, use LastSaved_ApplicationVendor.Get(). - * To set the value of this property, use LastSaved_ApplicationVendor.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVendor; - - /** This property contains the last saved application name. - * - * To retrieve the value of this property, use LastSaved_ApplicationName.Get(). - * To set the value of this property, use LastSaved_ApplicationName.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationName; - - /** This property contains the last saved application version. - * - * To retrieve the value of this property, use LastSaved_ApplicationVersion.Get(). - * To set the value of this property, use LastSaved_ApplicationVersion.Set(FbxString). - * - * The default value is empty. - */ - FbxPropertyT LastSaved_ApplicationVersion; - - /** This property contains the last saved date and time. - * - * To retrieve the value of this property, use LastSaved_DateTime_GMT.Get(). - * To set the value of this property, use LastSaved_DateTime_GMT.Set(FbxString). - * - * The default value is 0. - * - * \remarks The date/time should use GMT time format. - */ - FbxPropertyT LastSaved_DateTime_GMT; - - /** This property points at the ".fbm" folder that is created when - * reading a FBX file that has embedded data. The embedded data - * is not saved in the FBX file. - * - * The default value is empty. - */ - FbxPropertyT EmbeddedUrl; - //@} - - /** \name User-defined summary data. - * These are user-completed fields that identify or classify the files. - */ - //@{ - FbxString mTitle; //! Title. - FbxString mSubject; //! Subject. - FbxString mAuthor; //! Author - FbxString mKeywords; //! Keywords. - FbxString mRevision; //! Revision. - FbxString mComment; //! Comment. - //@} - - /** - * \name Scene Thumbnail. - */ - //@{ - /** Returns the thumbnail for the scene. - * \return Pointer to the thumbnail. - */ - FbxThumbnail* GetSceneThumbnail(); - - /** Sets the thumbnail for the scene. - * \param pSceneThumbnail Pointer to the thumbnail. - */ - void SetSceneThumbnail(FbxThumbnail* pSceneThumbnail); - //@} - - /** Clears the content. - * Resets all the strings to an empty string and clears - * the pointer to the thumbnail. - */ - void Clear(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxPropertyT SceneThumbnail; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_DOCUMENT_INFO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxenvironment.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxenvironment.h deleted file mode 100755 index 27861dc..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxenvironment.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxenvironment.h -#ifndef _FBXSDK_SCENE_ENVIRONMENT_H_ -#define _FBXSDK_SCENE_ENVIRONMENT_H_ - -#include - -#include - -#include - -/** This class contains the description of a scene environment. It contains the properties of sun parameters, - * sky parameters, daylight controller parameters ,environment map parameters - * and cloud map parameters. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEnvironment : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxEnvironment, FbxObject); - -public: -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool ProvidesLighting() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_ENVIRONMENT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxgroupname.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxgroupname.h deleted file mode 100755 index 02645aa..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxgroupname.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgroupname.h -#ifndef _FBXSDK_SCENE_GROUP_NAME_H_ -#define _FBXSDK_SCENE_GROUP_NAME_H_ - -#include - -#include - -#define MODEL_PREFIX "Model::" -#define MATERIAL_PREFIX "Material::" -#define POSE_PREFIX "Pose::" -#define DEFORMER_PREFIX "Deformer::" -#define CONTAINER_PREFIX "Container::" -#define SUBDEFORMER_PREFIX "SubDeformer::" -#define CONSTRAINT_PREFIX "Constraint::" -#define CONTROLSET_PLUG_PREFIX "ControlSetPlug::" -#define AUDIO_PREFIX "Audio::" -#define AUDIO_LAYER_PREFIX "AudioLayer::" -#define VIDEO_PREFIX "Video::" -#define TEXTURE_PREFIX "Texture::" -#define THUMBNAIL_PREFIX "Thumbnail::" -#define MARKER_SET_PREFIX "MarkerSet::" -#define CONSTRAINT_PREFIX "Constraint::" -#define GEOMETRY_PREFIX "Geometry::" -#define GEOMETRY_WEIGHTED_MAP_PREFIX "GeometryWeightedMap::" -#define SCENE_PREFIX "Scene::" -#define CACHE_PREFIX "Cache::" -#define IMPLEMENTATION_PREFIX "Implementation::" -#define BINDINGTABLE_PREFIX "BindingTable::" -#define BINDINGOPERATOR_PREFIX "BindingOperator::" -#define LAYERED_TEXTURE_PREFIX "LayeredTexture::" -#define PROCEDURAL_TEXTURE_PREFIX "ProceduralTexture::" -#define DOCUMENT_PREFIX "Document::" -#define COLLECTION_PREFIX "Collection::" -#define COLLECTION_EXCLUSIVE_PREFIX "CollectionExclusive::" -#define NODE_ATTRIBUTE_PREFIX "NodeAttribute::" -#define ENVIRONMENT_PREFIX "KFbxEnvironment::" -#define OBJECTMETADATA_PREFIX "ObjectMetaData::" -#define EXPOSURECONTROL_PREFIX "ExposureControl::" - -#define ANIM_STACK_PREFIX "AnimStack::" -#define ANIM_LAYER_PREFIX "AnimLayer::" -#define ANIM_CURVENODE_PREFIX "AnimCurveNode::" -#define ANIM_CURVE_PREFIX "AnimCurve::" -#define ANIM_EVAL_PREFIX "AnimEvaluator::" - -#define SELECTION_SET_PREFIX "SelectionSet::" -#define SELECTION_SET_NODE_PREFIX "SelectionNode::" -#define DISPLAY_LAYER_PREFIX "DisplayLayer::" - -#define SCENEREFERENCE_PREFIX "SceneReference::" - -// Protein 2.0 -#define ADSK_ENVIRONMENT_PREFIX "ADSKEnvironmentDefinition::" -#define ADSK_LIGHT_PREFIX "ADSKLightDefinition::" -#define ADSK_PROCEDURALGEOMETRY_PREFIX "ADSKProceduralGeometryDefinition::" -#define ADSK_SURFACEMATERIAL_PREFIX "ADSKSurfaceMaterialDefinition::" -#define ADSK_TEXTURE_PREFIX "ADSKTextureDefinition::" -#define ADSK_SWATCHSCENE_PREFIX "ADSKSwatchSceneDefinition::" - -#include - -#endif /* _FBXSDK_SCENE_GROUP_NAME_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxlibrary.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxlibrary.h deleted file mode 100755 index 97baf56..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxlibrary.h +++ /dev/null @@ -1,330 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlibrary.h -#ifndef _FBXSDK_SCENE_LIBRARY_H_ -#define _FBXSDK_SCENE_LIBRARY_H_ - -#include - -#include -#include - -#include - -class FbxLocalizationManager; -class FbxCriteria; - -/** This library class represents libraries that store sub-libraries and shading objects. - * Shading objects are objects of class FbxTexture, FbxSurfaceMaterial, and FbxLight. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLibrary : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxLibrary, FbxDocument); - -public: - //! Returns a pointer to the parent library if one exists. - FbxLibrary* GetParentLibrary(void) const; - - /** Sets whether not this library is a system library. - * \param pSystemLibrary A flag which indicates whether or not this library is a system library. - */ - void SystemLibrary(bool pSystemLibrary); - - //! Returns whether or not this library is a system library. - bool IsSystemLibrary() const; - - /** The prefix must not include the dash and language code, nor - * can it contain the extension. But if you want, it can contain - * a folder or sub-folder, such as: locales/mydocloc. - * This is resolved using the XRef Manager, with priority - * given to the library's ".fbm" folder, if one exists. - * \param pPrefix New prefix to be set. - */ - void LocalizationBaseNamePrefix(const char* pPrefix); - - //! Retrieves the localization prefix. - FbxString LocalizationBaseNamePrefix() const; - - // ======================================================================= - // - // sub-library - // - // ======================================================================= - - /** Adds a sub-library - * \param pSubLibrary The sub-library to be added. - * \return \c True if adding the sub-library is successful, returns \c false if not. - */ - bool AddSubLibrary(FbxLibrary* pSubLibrary); - - /** Removes a sub-library - * \param pSubLibrary The sub-library to be removed. - * \return \c True if the sub-library is removed, \c false if not. - */ - bool RemoveSubLibrary(FbxLibrary* pSubLibrary); - - //! Returns the total number of sub-libraries - int GetSubLibraryCount(void) const; - - /** Returns the sub-library at the specified index. - * \param pIndex The sub-library index. - */ - FbxLibrary* GetSubLibrary(int pIndex) const; - - /** Clones the specified asset. - * \param pToClone The asset to be cloned. - * \param pOptionalDestinationContainer The container for the asset copy. - * \remarks The asset and all its dependents are cloned. - */ - FbxObject* CloneAsset( FbxObject* pToClone, FbxObject* pOptionalDestinationContainer = NULL) const; - - - /** Returns a criteria filter which you can use to filter objects - * when iterating items in the library. Only real 'assets' are returned, - * rather than FBX support objects. This currently includes - * lights, environments, materials and textures (maps). - * This is typically used to IMPORT from a library. - */ - static FbxCriteria GetAssetCriteriaFilter(); - - /** Returns a filter which you should use when you clone / export objects. - * This filters out objects that should remain in the asset library. - * - * Use this to EXPORT from a library (or CLONE from a library). - */ - static FbxCriteria GetAssetDependentsFilter(); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary); - - /** Transfers ownership from the source library to this library for any assets passing through the filter. - * It is assumed that name conflicts and other details have been resolved beforehand. - * - * External asset files required by the assets are copied (not moved). It's - * up to the owner of the source library to clean up the files if the files are - * not on a read-only transport. If this document hasn't been committed yet, - * the assets will not be copied. - * - * Returns true if no filtered assets were skipped. If no assets pass through - * the filter, it returns true, because nothing has been skipped. - * - * This may leave the source library in an invalid state. For example, the source library - * would be in an invalid state if you had decided to transfer texture objects to the library, - * but materials were kept in the source library. - * - * To safeguard against this, the transfer disconnects objects, and thus materials - * are left without textures. - * - * When you transfer an object, all its dependents come with it. If you move - * a material, it takes the associated textures as well. Although if you moved a texture, - * the material would not be transferred with it. - * \param pSrcLibrary The source library to be imported. - * \param pAssetFilter The asset filter. - * \return \c True if no filtered assets are skipped. - **/ - bool ImportAssets(FbxLibrary* pSrcLibrary, const FbxCriteria& pAssetFilter); - - - /** Returns a new instance of a library member. - * This instantiates the first object found that matches the filter. - * \param pFBX_TYPE The type of member - * \param pFilter A user specified filter - * \param pRecurse A flag that indicates whether to check sub-libraries - * \param pOptContainer Optional container for the cloned asset - * \return A new instance of the member. Note that the new member is not included with this library. - */ - template < class T > T* InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse = true, FbxObject* pOptContainer = NULL); - - - // ======================================================================= - // - // Localization - // - // ======================================================================= - /** Returns the localization manager for the library. - */ - - FbxLocalizationManager& GetLocalizationManager() const; - - /** Localization helper function. Calls the FBX SDK manager implementation. - * Sub-classes that manage their own localization can over-ride this function. - * \param pID The identifier for the text to localize. - * \param pDefault The default text. Uses pID if NULL. - * \return The potentially localized text. May return the parameter passed in. - */ - const char* Localize( const char* pID, const char* pDefault = NULL ) const override; - - // ======================================================================= - // - // Shading Object - // - // ======================================================================= - - /** Adds a shading object. - * \param pShadingObject The shading object to be added. - */ - bool AddShadingObject(FbxObject* pShadingObject); - - /** Removes a shading object. - * \param pShadingObject The shading object to be removed. - */ - bool RemoveShadingObject(FbxObject* pShadingObject); - - //! Returns the total number of shading objects - int GetShadingObjectCount(void) const; - - /** Returns the shading object at the specified index. - * \param pIndex Shading object index. - * \return The shading object located at the specified index. - */ - FbxObject* GetShadingObject(int pIndex) const; - - /** Returns the number of shading objects according to their implementations. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns The number of shading objects corresponding to the filtering parameters - */ - int GetShadingObjectCount(const FbxImplementationFilter& pCriteria) const; - - /** Returns a handle on the shading object at the specified index that corresponds to the given filtering parameters. - * \param pIndex Shading object index. - * \param pCriteria Filtering criteria that identifies what kind of - * implementations to consider. - * \returns A handle on the shading object at the specified index that corresponds to the given filtering parameters. - */ - FbxObject* GetShadingObject(int pIndex, const FbxImplementationFilter& pCriteria) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - mutable FbxLocalizationManager* mLocalizationManager; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -template T* FbxLibrary::InstantiateMember(const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer) -{ - //First check all materials in the library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - T* lObject = GetMember(i); - if( pFilter.Match(lObject) ) - return FbxCast(CloneAsset(lObject,pOptContainer)); - } - - if( pRecurse ) - { - // then check all materials in each sub-library. - for( int i = 0; i < GetMemberCount(); ++i ) - { - FbxLibrary* lLibrary = GetMember(i); - T* lClonedObject = lLibrary->InstantiateMember(pFBX_TYPE, pFilter, pRecurse, pOptContainer); - if( lClonedObject ) - return lClonedObject; - } - } - - return NULL; -} - -class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary) - -public: - FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary) - -public: - FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; } - inline FbxLibrary* GetLibrary() const { return mLibrary; } - -private: - FbxLibrary* mLibrary; -}; - -class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization) - -public: - FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; } - inline FbxLibrary* GetLibrary() const { return mAssetLibrary; } - -private: - FbxLibrary* mAssetLibrary; -}; - -class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent -{ - FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject) - -public: - FbxEventMapAssetFileToAssetObject(const char* pFile) : - mAsset(NULL), - mFilePath( pFile ) - { - } - - inline const char* GetFilePath() const { return mFilePath; } - mutable FbxObject* mAsset; - -private: - FbxString mFilePath; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_LIBRARY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxmediaclip.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxmediaclip.h deleted file mode 100755 index 91dc865..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxmediaclip.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmediaclip.h -#ifndef _FBXSDK_SCENE_MEDIACLIP_H_ -#define _FBXSDK_SCENE_MEDIACLIP_H_ - -#include - -#include - -#include - -/** FBX SDK media clip class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMediaClip : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxMediaClip, FbxObject); - -public: - /** - *\name Media clip class Reset - */ - //@{ - //! Reset the clip to default values. - virtual void Reset(); - //@} - - /** - * \name Media clip attributes Management - */ - //@{ - /** Specify the media full filename. - * \param pName media full filename. - * \return \c True,if update successfully, \c false otherwise. - */ - virtual bool SetFileName(const char* pName); - - /** Retrieve the media full filename. - * \return Media full filename. - */ - FbxString GetFileName () const; - - /** Specify the media relative filename. - * \param pName Media relative filename. - * \return \c True, if update successfully, \c false otherwise. - */ - virtual bool SetRelativeFileName(const char* pName); - - /** Retrieve the media relative filename. - * \return Media relative filename. - */ - FbxString GetRelativeFileName() const; - - /** Set the clip color. - * The color property can be used to display media clips on the user interface. It has no - * impact on the data itself and only uses the RGB components. - * \param pColor New color of the clip. - */ - void SetColor(FbxColor pColor); - - /** Retrieve the clip color. - * return Clip color. - */ - FbxColor GetColor() const; - - /** Set the play speed of the media clip. - * \param pPlaySpeed Playback speed of the clip. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad playback speed values. - */ - void SetPlaySpeed(double pPlaySpeed); - - /** Retrieve the play speed of the media clip. - * \return Playback speed. - */ - double GetPlaySpeed() const; - - /** Set the clip start time. - * \param pTime Start time of the media file. - */ - void SetClipIn(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipIn() const; - - /** Set the clip end time. - * \param pTime End time of the media file. - */ - void SetClipOut(FbxTime pTime); - - /** Retrieve the clip start time. - * \return The current clip start time. - */ - FbxTime GetClipOut() const; - - /** Set the time offset. - * The offset can be used to shift the playback start time of the clip. - * \param pTime Time offset of the clip. - */ - void SetOffset(FbxTime pTime); - - /* Retrieve the time offset. - * \return The current time shift. - */ - FbxTime GetOffset() const; - - /** Set the Free Running state of the media clip. - * The Free Running flag can be used by a client application to implement a - * playback scheme that is independent of the main timeline. - * \param pState State of the Free running flag. - */ - void SetFreeRunning(bool pState); - - /** Retrieve the Free Running state. - * \return Current free running flag. - */ - bool GetFreeRunning() const; - - - /** Set the Loop state of the media clip. - * The Loop flag can be used by a client application to implement the loop - * playback of the media clip. - * \param pLoop State of the loop flag. - */ - void SetLoop(bool pLoop); - - /** Retrieve the Loop state. - * \return Current loop flag. - */ - bool GetLoop() const; - - /** Set the Mute state of the media clip. - * The Mute flag can be used by a client application to implement the muting - * of the media clip. - * \param pMute State of the mute flag. - */ - void SetMute(bool pMute); - - /** Retrieve the Mute state. - * \return Current mute flag. - */ - bool GetMute() const; - - /** Media clip access mode. - */ - enum EAccessMode - { - eDisk, - eMemory, - eDiskAsync - }; - - /** Set the clip Access Mode. - * \param pAccessMode Clip access mode identifier. - */ - void SetAccessMode(EAccessMode pAccessMode); - - /** Retrieve the clip Access Mode. - * \return Clip access mode identifier. - */ - EAccessMode GetAccessMode() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxStringList GetTypeFlags() const override; - - void SetOriginalFormat(bool pState); - bool GetOriginalFormat() const; - void SetOriginalFilename(const char* pOriginalFilename); - const char* GetOriginalFilename() const; - - FbxPropertyT Color; - FbxPropertyT ClipIn; - FbxPropertyT ClipOut; - FbxPropertyT Offset; - FbxPropertyT PlaySpeed; - FbxPropertyT FreeRunning; - FbxPropertyT Loop; - FbxPropertyT Mute; - FbxPropertyT AccessMode; - -protected: - void Init(); - FbxPropertyT Path; - FbxPropertyT RelPath; - - bool mOriginalFormat; - FbxString mOriginalFilename; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMediaClip::EAccessMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_MEDIACLIP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectfilter.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectfilter.h deleted file mode 100755 index 3e22209..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectfilter.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectfilter.h -#ifndef _FBXSDK_SCENE_OBJECT_FILTER_H_ -#define _FBXSDK_SCENE_OBJECT_FILTER_H_ - -#include - -#include - -#include - -/** \brief This object represents a filter criteria on an object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxObjectFilter -{ -public: - //! Destructor. - virtual ~FbxObjectFilter() {} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const = 0; - - /** Tells if this filter does NOT match the given object - * \param pObjectPtr The given object. - */ - virtual bool NotMatch(const FbxObject * pObjectPtr) const { return !Match(pObjectPtr); }; -}; - -/**\brief This class represents a name filter on an object. - *\nosubgrouping - */ -class FBXSDK_DLL FbxNameFilter : public FbxObjectFilter -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - /** Constructor - * \param pTargetName The target name. - */ - inline FbxNameFilter( const char* pTargetName ) : mTargetName( pTargetName ) {}; - - //! Destructor. - virtual ~FbxNameFilter() {} - //@} - - /** Tells if this filter match the given object - * \param pObjectPtr The given object. - */ - virtual bool Match(const FbxObject * pObjectPtr) const { return pObjectPtr ? mTargetName == pObjectPtr->GetName() : false; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mTargetName; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_FILTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h deleted file mode 100755 index 87438d3..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectmetadata.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectmetadata.h -#ifndef _FBXSDK_SCENE_OBJECT_META_DATA_H_ -#define _FBXSDK_SCENE_OBJECT_META_DATA_H_ - -#include - -#include - -#include - -/** This class is used to hold meta-data information on nodes. - * \nosubgrouping - * - * This class does not offer any new functionality over a regular FbxObject; - * all meta-data information should be stored in properties. - * - */ -class FBXSDK_DLL FbxObjectMetaData : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxObjectMetaData, FbxObject); -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECT_META_DATA_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h deleted file mode 100755 index fb05c8d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxobjectscontainer.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxobjectscontainer.h -#ifndef _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ -#define _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ - -#include - -#include -#include - -#include - -typedef FbxArray FbxAttributeFilters; - -/* Internal helper class used to traverse scene in the FbxAxisSystem and FbxSystemUnit - */ -class FbxObjectsContainer -{ -public: - enum EDepth - { - eChildOnly, - eChildAndSubChild, - eSubChildWithNoScaleInherit - }; - - FbxObjectsContainer() : mStartNode(NULL) {} - virtual ~FbxObjectsContainer(){ Clear(); } - - // Store all anim curve nodes pointers that need to be converted - FbxArray mFCurvesT; - FbxArray mFCurvesR; - FbxArray mFCurvesS; - - // Store all node that need to be converted - FbxArray mNodes; - -public: - void ExtractSceneObjects(FbxScene* pScene, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void ExtractSceneObjects(FbxNode* pRootNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - - void Clear() { mFCurvesT.Clear(); mFCurvesR.Clear(); mFCurvesS.Clear(); mNodes.Clear(); mStartNode = NULL; } - -protected: - // Extract all node and fcurve from all take for this node. - void ExtractNodesAnimCurveNodes(FbxNode* pNode, EDepth pDepth, const FbxAttributeFilters& pFilters); - void ExtractAnimCurveNodes(FbxNode* pNode); - bool InheritsScale( FbxNode* pNode ) const; - - FbxNode* mStartNode; -}; - -#include - -#endif /* _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxpose.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxpose.h deleted file mode 100755 index 2ab0d4d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxpose.h +++ /dev/null @@ -1,354 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpose.h -#ifndef _FBXSDK_SCENE_POSE_H_ -#define _FBXSDK_SCENE_POSE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; -class FbxPose; -class FbxNode; -class FbxUserNotification; - -/** This structure contains the description of a named pose. - * FbxPose contains one FbxPoseInfo array to store all of FBX nodes and their transform matrix info. - */ -struct FbxPoseInfo -{ - FbxMatrix mMatrix; //!< Transform matrix of the node. - bool mMatrixIsLocal; //!< If true, the transform matrix above is defined in local coordinates. - FbxNode* mNode; //!< FBX node, which may be skeleton or geometry (skinned) node. -}; - -typedef FbxArray NodeList; -typedef FbxArray PoseList; -typedef FbxArray PoseInfoList; - -/** This class contains the description of a Pose and provide some methods to access Pose info in one FBX scene. - * \nosubgrouping - * The FbxPose object can be setup to hold "Bind Pose" data or "Rest Pose" data. - * - * The Bind Pose holds the transformation (translation, rotation and scaling) - * matrix of all the nodes implied in a link deformation. This includes the geometry - * being deformed, the links deforming the geometry, and recursively all the - * ancestors nodes of the link. The Bind Pose gives you the transformation of the nodes - * at the moment of the binding operation when no deformation occurs. - * - * The Rest Pose is a snapshot of a node transformation. A Rest Pose can be used - * to store the position of every node of a character at a certain point in - * time. This pose can then be used as a reference position for animation tasks, - * like editing walk cycles. - * - * One difference between the two modes is in the validation performed before - * adding an item and the kind of matrix stored. - * - * In "Bind Pose" mode, the matrix is assumed to be defined in the global space, - * while in "Rest Pose" the type of the matrix may be specified by the caller. So - * local system matrices can be used. Actually, because there is one such flag for - * each entry (FbxPoseInfo), it is possible to have mixed types in a FbxPose elements. - * It is therefore the responsibility of the caller to check for the type of the retrieved - * matrix and to do the appropriate conversions if required. - * - * The validation of the data to be added consists of the following steps: - * - * \li If this FbxPose object stores "Bind Poses", then - * add a FbxPoseInfo only if the node is not already - * associated to another "Bind Pose". This check is done - * by visiting ALL the FbxPose objects in the system. - * - * The above test is only performed for the "Bind Pose" type. While - * the next one is always performed, no matter what kind of poses this - * FbxPose object is setup to hold. - * - * \li If a node is already inserted in the FbxPose internal list, - * then the passed matrix MUST be equal to the one already stored. - * If this is not the case, the Add method will return -1, indicating - * that no new FbxPoseInfo has been created. - * - * If the Add method succeeds, it will return the index of the FbxPoseInfo - * structure that as been created and held by the FbxPose object. - * - * To ensure data integrity, the stored information can only be - * accessed using the provided methods (read-only). If an entry needs to be - * modified, the caller has to remove the FbxPoseInfo item by calling Remove(i) - * and then Add a new one. - * - * The internal list is not ordered and the search inside this list is linear - * (from the first element to ... the first match or the end of the list). - * - */ -class FBXSDK_DLL FbxPose : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxPose,FbxObject); - -public: - /** Set the type of pose. - * \param pIsBindPose If true, type will be bind pose, else rest pose. - */ - void SetIsBindPose(bool pIsBindPose); - - /** Pose identifier flag. - * \return \c true if this object holds BindPose data. - */ - bool IsBindPose() const { return mType == 'b'; } - - /** Pose identifier flag. - * \return \c true if this object holds RestPose data. - */ - bool IsRestPose() const { return mType == 'r'; } - - /** Get number of stored items. - * \return The number of items stored. - */ - int GetCount() const { return mPoseInfo.GetCount(); } - - /** Stores the pose transformation for the given node. - * \param pNode pointer to the node for which the pose is stored. - * \param pMatrix Pose transform of the node. - * \param pLocalMatrix Flag to indicate if pMatrix is defined in Local or Global space. - * \param pMultipleBindPose Flag to indicate if multiple bind pose exist. If this is false, all matrix for one node should be same in different bind pose. - * \return -1 if the function failed or the index of the stored item. - */ - int Add(FbxNode* pNode, const FbxMatrix& pMatrix, bool pLocalMatrix = false, bool pMultipleBindPose = true); - - /** Remove the pIndexth item from the Pose object. - * \param pIndex Index of the item to be removed. - */ - void Remove(int pIndex); - - /** Get the node name. - * \param pIndex Index of the queried item. - * \return The node initial and current names. - * \remarks If the index is invalid an empty FbxNameHandler is returned. - */ - FbxNameHandler GetNodeName(int pIndex) const; - - /** Get the node. - * \param pIndex Index of the queried item. - * \return A pointer to the node referenced. - * \remarks If the index is invalid or no pointer to a node is set, returns NULL. - * The returned pointer will become undefined if the FbxPose object is destroyed. - */ - FbxNode* GetNode(int pIndex) const; - - /** Get the transform matrix. - * \param pIndex Index of the queried item. - * \return A reference to the pose matrix. - * \remarks If the index is invalid a reference to an identity matrix is returned. - * The reference will become undefined if the FbxPose object is destroyed. - */ - const FbxMatrix& GetMatrix(int pIndex) const; - - /** Get the type of the matrix. - * \param pIndex Index of the queried item. - * \return \c true if the matrix is defined in the Local coordinate space and false otherwise. - * \remarks If the FbxPose object is configured to hold BindPose data, this method will always return \c false. - */ - bool IsLocalMatrix(int pIndex) const; - - /** - * \name Search Section - */ - //@{ - /** This structure defines the strategy of comparing FBX node name. - * FBX node has an initial name and a current name (refer to FbxNameHandler). The structure defines which name to use when compare two nodes. - */ - enum ENameComponent - { - eInitialNameComponent = 1, //! use initial name when compare two nodes - eCurrentNameComponent = 2, //! use current name when compare two nodes - eAllNameComponents = 3 //! use both initial and current name when compare two nodes, it's true if one or both matched - }; - - /** Look in the FbxPose object for the given node name. - * \param pNodeName Name of the node we are looking for. - * \param pCompareWhat Bitwise or of the following flags: INTIALNAME_COMPONENT, eCurrentNameComponent - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNameHandler& pNodeName, char pCompareWhat = eAllNameComponents) const; - - /** Look in the FbxPose object for the given node. - * \param pNode the node we are looking for. - * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. - */ - int Find(const FbxNode* pNode) const; - //@} - - /** - * \name Utility Section - */ - //@{ - /** Get the list of Poses objects that contain the node with name pNodeName. - * This method will look in all the poses of all the scenes. - * \param pManager The manager owning the poses and scenes. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of Poses objects that contain the node with name pNodeName. - * \param pScene Scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses/RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding poses lists. - * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetPosesContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of BindPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of BindPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding bind poses lists. - * \return \c true if the node belongs to at least one BindPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetBindPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * This method will look in all the bind poses of all the scenes. - * \param pManager The manager owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Get the list of RestPose objects that contain the node with name pNodeName. - * \param pScene The scene owning the poses. - * \param pNode The node being explored. - * \param pPoseList List of RestPoses that have the node. - * \param pIndex List of indices of the nodes in the corresponding rest poses lists. - * \return \c true if the node belongs to at least one RestPose. - * \remarks The pPoseList and pIndex are filled by this method. - * The elements of the returned list must not be deleted since they still belong to the scene. - */ - static bool GetRestPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - - /** Check this BindPose and report an error if all the conditions to a valid bind pose are not - * met. The conditions are: - * - * \li a) We are a BindPose. - * \li b) For every node in the bind pose, all their parent node are part of the bind pose. - * \li c) All the deforming nodes are part of the bind pose. - * \li d) All the parents of the deforming nodes are part of the bind pose. - * \li e) Each deformer relative matrix correspond to the deformer Inv(bindMatrix) * deformed Geometry bindMatrix. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \return true if all the above conditions are met and false otherwise. - * \remarks - * a) If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - * \remarks - * b) If the returned value is false, querying for the error will return the reason of the failure. - * As soon as one of the above conditions is not met, this method return ignoring any subsequent errors. - * Run the IsBindPoseVerbose if more details are needed. - */ - bool IsValidBindPose(FbxNode* pRoot, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes (stored in the appropriate array). It is then up to the - * caller to fill the UserNotification if desired. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pMissingAncestors Each ancestor missing from the BindPose is added to this list. - * \param pMissingDeformers Each deformer missing from the BindPose is added to this list. - * \param pMissingDeformersAncestors Each deformer ancestors missing from the BindPose is added to this list. - * \param pWrongMatrices Nodes that yield to a wrong matrix comparisons are added to this list. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, NodeList& pMissingAncestors, NodeList& pMissingDeformers, NodeList& pMissingDeformersAncestors, NodeList& pWrongMatrices, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, - * keeps running to accumulate the faulty nodes and send them directly to the UserNotification. - * - * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). - * \param pUserNotification Pointer to the user notification where the messages will be accumulated. - * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. - * \param pStatus The FbxStatus object to hold error codes. - * \remarks If the pUserNotification parameter is NULL, this method will call IsValidBindPose(). - * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its - * transform must be an Identity. - */ - bool IsValidBindPoseVerbose(FbxNode* pRoot, FbxUserNotification* pUserNotification, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - - //Returns false if pNode is already inserted in the list and the current matrix is different from the stored one. Also, if this pose is a rest pose, check if - //pNode belongs to other BindPoses (accessed through the scene pointer). pPos will contains the index of the FbxPoseInfo if the parameters are already stored in this object. - bool ValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - - bool LocalValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); - static bool GetSpecificPoseContaining(int poseType, FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); - -private: - FbxPoseInfo* GetItem(int pIndex) const; - void UpdatePosInfoList(); - bool IsValidBindPoseCommon(FbxNode* pRoot, NodeList* pMissingAncestors, NodeList* pMissingDeformers, NodeList* pMissingDeformersAncestors, NodeList* pWrongMatrices, FbxStatus* pStatus, double pMatrixCmpTolerance=0.0001); - - char mType; - PoseInfoList mPoseInfo; - bool mPoseInfoIsDirty; - FbxPropertyT Nodes; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_POSE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxreference.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxreference.h deleted file mode 100755 index 7b05ec2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxreference.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxreference.h -#ifndef _FBXSDK_SCENE_REFERENCE_H_ -#define _FBXSDK_SCENE_REFERENCE_H_ - -#include - -#include - -#include - -/** Contains information about a referenced file. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxSceneReference : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSceneReference, FbxObject); - -public: - /// \name Basic properties - //@{ - //! Path to the referenced file. - FbxPropertyT< FbxString > ReferenceFilePath; - //! Referenced file's namespace. - FbxPropertyT< FbxString > ReferenceNameSpace; - //! Referenced file's node name. - FbxPropertyT< FbxString > ReferenceNodeName; - //! Referenced file's node depth. - FbxPropertyT< FbxInt> ReferenceDepth; - //! \c True if referenced file is loaded. - FbxPropertyT< FbxBool > IsLoaded; - //! \c True if referenced file is locked. - FbxPropertyT< FbxBool > IsLocked; - //@} - - /// \name Proxy related properties. - //@{ - //! \c True if referenced file is the original proxy. - FbxPropertyT< FbxBool > IsOriginalProxy; - - //! \c True if referenced file is active. - FbxPropertyT< FbxBool > IsActiveProxy; - - //! The name of proxy manager where the referenced file's proxy can be found. - FbxPropertyT< FbxString > ProxyManagerName; - /** Referenced file's proxy tag. - * \remarks Proxy tags are unique names assigned to proxy references to more easily manage those references in Maya. - */ - FbxPropertyT< FbxString > ProxyTag; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_REFERENCE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxscene.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxscene.h deleted file mode 100755 index c705ef1..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxscene.h +++ /dev/null @@ -1,491 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscene.h -#ifndef _FBXSDK_SCENE_H_ -#define _FBXSDK_SCENE_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -class FbxGeometry; -class FbxTexture; -class FbxSurfaceMaterial; -class FbxCharacter; -class FbxControlSetPlug; -class FbxGenericNode; -class FbxPose; -class FbxCharacterPose; -class FbxVideo; -class FbxGlobalLightSettings; -class FbxGlobalCameraSettings; - -/** This class contains the description of a 3D scene. It contains the nodes (including the root node) (FbxNode), - * materials, textures, videos, gobos, - * poses, characters, character poses, control set plugs, - * generic nodes, - * scene information, global settings, - * and a global evaluator. - * The nodes are structured in a tree under the scene's root node. - * - * When an object is created using the FBX SDK, a scene is usually passed as argument to the - * object creation function to specify that the object belongs to this scene. - * At this point, a connection is made with the object as source and the scene as destination. - * - * All objects in the scene can be queried by connection index. In addition, - * generic nodes, materials, and textures can also be queried by name. In this latter case, the - * first object with the queried name will be returned. - * - * The global evaluator (FbxAnimEvaluator) is used to compute animation values - * for animated scenes. - * \nosubgrouping - */ -class FBXSDK_DLL FbxScene : public FbxDocument -{ - FBXSDK_OBJECT_DECLARE(FbxScene, FbxDocument); - -public: - //! \name Scene Management - //@{ - //! Clear the scene content by deleting the node tree below the root node and restoring default settings. - void Clear() override; - - /** Get the root node of the scene. - * \return Pointer to the root node. - * \remarks This node is not saved. Do not use it to apply a global transformation to the node hierarchy. If a global transformation must be applied, insert a new node below this one. */ - FbxNode* GetRootNode() const; - //@} - - //! \name Texture Material and Video Access - //@{ - /** Clear, then fill, a texture array with all existing textures included in the scene. - * \param pTextureArray An array of texture pointers. */ - void FillTextureArray(FbxArray& pTextureArray); - - /** Clear, then fill, a material array with all existing materials included in the scene. - * \param pMaterialArray An array of material pointers. */ - void FillMaterialArray(FbxArray& pMaterialArray); - //@} - - //! \name Generic Node Access - //@{ - /** Get number of generic nodes in the scene. - * \return Number of Generic Nodes in this scene. */ - int GetGenericNodeCount() const; - - /** Get generic node at given index. - * \param pIndex Position in the list of the generic nodes. - * \return Pointer to the generic node or \c NULL if the index is out of bounds. - */ - FbxGenericNode* GetGenericNode(int pIndex); - - /** Access a generic node from its name. - * \param pName Name of the generic node. - * \return found generic node - */ - FbxGenericNode* GetGenericNode(const char* pName); - - /** Add a generic node to this scene. - * \param pGenericNode Pointer to the generic node to be added. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. */ - bool AddGenericNode(FbxGenericNode* pGenericNode); - - /** Remove the generic node from this scene. - * \param pGenericNode Pointer to the generic node to be removed. - * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. - * \remarks The pointed object is not referenced by the scene anymore but is not deleted. */ - bool RemoveGenericNode(FbxGenericNode* pGenericNode); - //@} - - - //! \name Character Management - //@{ - /** Get number of characters. - * \return Number of characters in this scene. */ - int GetCharacterCount() const; - - /** Get character at given index. - * \param pIndex Position in the list of the characters. - * \return Pointer to the character or \c NULL if index is out of bounds. */ - FbxCharacter* GetCharacter(int pIndex); - - /** Create a new character. - * \param pName Name given to character. - * \return Index of the created character. */ - int CreateCharacter(const char* pName); - - /** Destroy character. - * \param pIndex Specify which character to destroy. */ - void DestroyCharacter(int pIndex); - //@} - - //! \name ControlSetPlug Management - //@{ - /** Get number of ControlSetPlugs. - * \return Number of ControlSet plugs in this scene. */ - int GetControlSetPlugCount() const; - - /** Get ControlSetPlug at given index. - * \param pIndex Position in the list of the ControlSetPlug - * \return Pointer to ControlSetPlug or \c NULL if index is out of bounds. */ - FbxControlSetPlug* GetControlSetPlug(int pIndex); - - /** Create a new ControlSetPlug. - * \param pName Name given to ControlSetPlug. - * \return Index of created ControlSetPlug. */ - int CreateControlSetPlug(const char* pName); - - /** Destroy ControlSetPlug. - * \param pIndex Specify which ControlSetPlug to destroy. */ - void DestroyControlSetPlug(int pIndex); - //@} - - //! \name Character Pose Management - //@{ - /** Get number of character poses. - * \return Number of character poses in this scene. - * \remarks Character Poses and Poses are two distinct entities having their own lists. */ - int GetCharacterPoseCount() const; - - /** Get character pose at given index. - * \param pIndex Position in the list of character poses. - * \return Pointer to the character pose or \c NULL if index is out of bounds. */ - FbxCharacterPose* GetCharacterPose(int pIndex); - - /** Create a new character pose. - * \param pName Name given to character pose. - * \return Index of created character pose. */ - int CreateCharacterPose(const char* pName); - - /** Destroy character pose. - * \param pIndex Specify which character pose to destroy. */ - void DestroyCharacterPose(int pIndex); - //@} - - //! \name Pose Management - //@{ - /** Get number of poses. - * \return Number of poses in the scene. - * \remarks Poses and Character Poses are two distinct entities having their own lists. */ - int GetPoseCount() const; - - /** Get pose at given index. - * \param pIndex Position in the list of poses. - * \return Pointer to the pose or \c NULL if index is out of bounds. */ - FbxPose* GetPose(int pIndex); - - /** Add a pose to this scene. - * \param pPose The pose (for example: bind pose, rest pose) to be added to the scene. - * \return If the pose is correctly added to the scene, return \c true. Otherwise, if the pose is already in the scene, return \c false. */ - bool AddPose(FbxPose* pPose); - - /** Remove the specified pose from the scene. - * \param pPose The pose (for example: bind pose, rest pose) to be removed from the scene. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(FbxPose* pPose); - - /** Remove the pose at the given index from the scene. - * \param pIndex Index of the pose to be removed. - * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ - bool RemovePose(int pIndex); - //@} - - //! \name Scene information - //@{ - /** Get the scene information. - * \return Pointer to the scene information object. */ - FbxDocumentInfo* GetSceneInfo() { return GetDocumentInfo(); } - - /** Set the scene information. - * \param pSceneInfo Pointer to the scene information object. */ - void SetSceneInfo(FbxDocumentInfo* pSceneInfo) { SetDocumentInfo(pSceneInfo); } - //@} - - //! \name Global Settings - //@{ - /** Access global settings. - * \return Reference to the Global Settings. */ - FbxGlobalSettings& GetGlobalSettings(); - - /** Const access to global settings. - * \return Const reference to the Global Settings. */ - const FbxGlobalSettings& GetGlobalSettings() const; - //@} - - /** \name Scene Animation Evaluation - * The scene's animation evaluator is used to compute animation values for animated scenes. A typical - * usage would be to compute the global transform matrix of a node \c lNode at a given time \c lTime. - * \code - FbxAMatrix& lGlobalMatrix = lNode->GetScene()->GetAnimationEvaluator()->GetNodeGlobalTransform(lNode, lTime); - - or the exact equivalent: - - FbxAMatrix& lGlobalMatrix = lNode->EvaluateGlobalTransform(lTime); - * \endcode - * - * The user can create one or more evaluators in the scene. The default evaluator is set using SetEvaluator. When - * GetEvaluator is called, if the scene has no evaluator, an evaluator is created with default values. */ - //@{ - /** Set the current animation stack context used by the animation evaluator. - * \param pAnimStack The animation stack to set as current. - * \remark Changing the current animation stack will also cause the animation evaluator to reset its state. */ - void SetCurrentAnimationStack(FbxAnimStack* pAnimStack); - - /** Retrieve the current animation stack. - * \return the current animation stack. If none were set previously, the default one will be returned if it exists. */ - FbxAnimStack* GetCurrentAnimationStack(); - - /** Set the global evaluator used by this scene evaluation engine. - * \param pEvaluator The evaluator to be used for evaluation processing of this scene. */ - void SetAnimationEvaluator(FbxAnimEvaluator* pEvaluator); - - /** Get the global evaluator used by this scene evaluation engine. - * If no evaluator were previously set, this function will return either the first evaluator found attached to this scene, or a new default evaluator. - * \return The evaluator to be used for evaluation processing of this scene. */ - FbxAnimEvaluator* GetAnimationEvaluator(); - //@} - - /** Clear then fill a pose array with all existing pose included in the scene. - * \param pPoseArray An array of pose pointers. */ - void FillPoseArray(FbxArray& pPoseArray); - - //! \name Material Access - //@{ - /** Get number of materials. - * \return Number of materials in this scene. */ - int GetMaterialCount() const; - - /** Get the material at the given index. - * \param pIndex Position in the list of materials. - * \return Pointer to the material or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetMaterialCount(). */ - FbxSurfaceMaterial* GetMaterial(int pIndex); - - /** Get the material by its name. - * \param pName Name of the material. - * \return Pointer to the material or \c NULL if not found. */ - FbxSurfaceMaterial* GetMaterial(const char* pName); - - /** Add the material to this scene. - * \param pMaterial Pointer to the material to be added. - * \return true on successful addition. */ - bool AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove the material from this scene. - * \param pMaterial Pointer to the material to be removed. - * \return true on successful removal. */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - //@} - - //! \name Texture Access - //@{ - /** Get number of textures (type FbxTexture). - * \return Number of textures in this scene. Includes types FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * \remarks To get the number of textures of a specific type, use GetSrcCount(). For example: - * \code - * int lNbFileTextures = lScene->GetSrcObjectCount(); - * int lNbLayeredTextures = lScene->GetSrcObjectCount(); - * int lNbProceduralTextures = lScene->GetSrcObjectCount(); - * \endcode */ - int GetTextureCount() const; - - /** Get the texture at the given index. pIndex must be between 0 and GetTextureCount(). - * \param pIndex Position in the list of textures. - * \return Pointer to the texture or \c NULL if the index is out of bounds. - * \remarks To get the texture of a specific texture type, use GetSrcObject(). For example: - * \code - * FbxFileTexture* lFileTexture = lScene->GetSrcObject(i); - * FbxLayeredTexture* lLayeredTexture = lScene->GetSrcObject(i); - * FbxProceduralTexture* lProceduralTexture = lScene->GetSrcObject(i); - * \endcode */ - FbxTexture* GetTexture(int pIndex); - - /** Get the texture by its name. - * \param pName Name of the texture. - * \return Pointer to the texture or \c NULL if not found. */ - FbxTexture* GetTexture(const char* pName); - - /** Add the texture to this scene. - * \param pTexture Pointer to the texture to be added. - * \return \c true on successful addition. */ - bool AddTexture(FbxTexture* pTexture); - - /** Remove the texture from this scene. - * \param pTexture Pointer to the texture to be removed. - * \return \c true on successful removal. */ - bool RemoveTexture(FbxTexture* pTexture); - //@} - - //! \name Node Access - //@{ - /** Get number of nodes. - * \return Number of nodes in this scene. */ - int GetNodeCount() const; - - /** Get the node at the given index. - * \param pIndex Position in the list of nodes. - * \return Pointer to the node or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetNodeCount(). */ - FbxNode* GetNode(int pIndex); - - /** Add the node to this scene. - * \param pNode Pointer to the node to be added. - * \return true on successful addition. */ - bool AddNode(FbxNode* pNode); - - /** Remove the node from this scene. - * \param pNode Pointer to the node to be removed. - * \return true on successful removal. */ - bool RemoveNode(FbxNode* pNode); - - /** Helper method for determining the number of nodes that have curves on surface attributes in the scene. Since the curve-on-surface - * nodes are connected to nurbs geometry and not any FbxNode in the scene, they won't normally be picked up in a graph traversal. - * \return The number of curve-on-surface nodes in the scene */ - int GetCurveOnSurfaceCount(); - - /** Get the first node with this name. - * \param pName Name of the node. - * \return Pointer to the node, or \c NULL if node is not found. */ - FbxNode* FindNodeByName(const FbxString& pName); - //@} - - //! \name Geometry Access - //@{ - /** Get number of geometries. - * \return Number of geometries in this scene. */ - int GetGeometryCount() const; - - /** Get the geometry at the given index. - * \param pIndex Position in the list of geometries. - * \return Pointer to the geometry or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetGeometryCount(). */ - FbxGeometry* GetGeometry(int pIndex); - - /** Add the geometry to this scene. - * \param pGeometry Pointer to the geometry to be added. - * \return true on successful addition. */ - bool AddGeometry(FbxGeometry* pGeometry); - - /** Remove the geometry from this scene. - * \param pGeometry Pointer to the geometry to be removed. - * \return true on successful removal. */ - bool RemoveGeometry(FbxGeometry* pGeometry); - //@} - - //! \name Video Access - //@{ - /** Get number of videos. - * \return Number of videos in this scene. */ - int GetVideoCount() const; - - /** Get the video at the given index. - * \param pIndex Position in the list of videos. - * \return Pointer to the video or \c NULL if the index is out of bounds. - * \remarks pIndex must be between 0 and GetVideoCount(). */ - FbxVideo* GetVideo(int pIndex); - - /** Add the video to this scene. - * \param pVideo Pointer to the video to be added. - * \return true on successful addition. */ - bool AddVideo(FbxVideo* pVideo); - - /** Remove the video from this scene. - * \param pVideo Pointer to the video to be removed. - * \return true on successful removal. */ - bool RemoveVideo(FbxVideo* pVideo); - //@} - - /** \name Utilities */ - //@{ - /** Synchronize all the Show properties of node instances. - * Walks all the node attributes defined in the scene and synchronize the Show property of all the nodes that reference the node attribute so that they all contain the same value. - * This method should be called after the FBX scene is completely created, typically right after the calls to the FbxImporter::Import() or just before the calls to the FbxExporter::Export(). - * \remarks Applications only need to call this method if their interpretation of the Show property implies that setting the Show state on one instance affect all of them. - * \see FbxNode::Visibility property, FbxNode::Show property */ - void SyncShowPropertyForInstance(); - - /** Compute the bounding box and its center for all (or selected) nodes. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pSelected If \c true, only take into account selected geometry, otherwise take all geometry into account. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool ComputeBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, bool pSelected=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void ConvertNurbsSurfaceToNurbs(); - void ConvertMeshNormals(); - void ConvertNurbsCurvesToNulls(); - void ConnectTextures(); - void BuildTextureLayersDirectArray(); - void FixInheritType(FbxNode *pNode); - - void UpdateScaleCompensate(FbxNode *pNode, FbxIOSettings& pIOS); - - FbxClassId ConvertAttributeTypeToClassID(FbxNodeAttribute::EType pAttributeType); - - // These data structures are only used for legacy FBX files (version 6.x and earlier). The - // validity of their content is not guaranteed with the most recent versions. - FbxGlobalLightSettings& GlobalLightSettings() { return *mGlobalLightSettings; } - FbxGlobalCameraSettings& GlobalCameraSettings() { return *mGlobalCameraSettings; } - - // Clone this scene object (and everything else it contains if clone type is eDeepClone) - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - FbxObject& Copy(const FbxObject& pObject) override; - - void ConnectMaterials(); - - void BuildMaterialLayersDirectArray(); - void ReindexMaterialConnections(); // called to make sure that eIndex is remapped to eIndexToDirect - - FbxMultiMap* AddTakeTimeWarpSet(const char *pTakeName); - FbxMultiMap* GetTakeTimeWarpSet(const char *pTakeName); - - // This function will destroy the scene (and all the objects directly connected to it) without sending - // the Connect notifications nor trying to disconnect the objects first. This is a bypass of the intended - // workflow and should be used with care. - void ForceKill(); - -private: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void ConnectTextureLayerElement(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType, FbxNode* pParentNode); - void BuildTextureLayersDirectArrayForLayerType(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType); - - FbxNode* mRootNode; - FbxGlobalLightSettings* mGlobalLightSettings; - FbxGlobalCameraSettings* mGlobalCameraSettings; - FbxAnimEvaluator* mAnimationEvaluator; - FbxAnimStack* mCurrentAnimationStack; - FbxCharPtrSet mTakeTimeWarpSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionnode.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionnode.h deleted file mode 100755 index 325d587..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionnode.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionnode.h -#ifndef _FBXSDK_SCENE_SELECTION_NODE_H_ -#define _FBXSDK_SCENE_SELECTION_NODE_H_ - -#include - -#include - -#include - -/** FbxSelectionNode is an auxiliary class for Selection Set. -* \nosubgrouping -* Used to group objects with their components (e.g. vertex, edge, and face), when adding it to a selection set (FbxSelectionSet). -* \see FbxSelectionSet -*/ -class FBXSDK_DLL FbxSelectionNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionNode, FbxObject); - -public: - /** \enum ESelectType SelectionNode type identifier. - * - \e eVertexLevel Vertex level selection. - * - \e eEdgeLevel Edge level selection. - * - \e eFaceLevel Face level selection. - * - \e eObjectLevel Object level selection. - * - \e eSelectTypeCount Number of Select Types. - */ - enum ESelectType - { - eVertexLevel, - eEdgeLevel, - eFaceLevel, - eObjectLevel, - eSelectTypeCount - }; - - /** Set an object whose components or itself is contained in the SelectionNode. - * \param pObject The object whose components or itself is contained in the SelectionNode. - * \return \c true if the object is set successfully. \c false otherwise. - * \remarks It is possible a SDK user will try to set multiple objects to one SelectionNode, but only the last one will be kept. - */ - bool SetSelectionObject(FbxObject* pObject); - - /** Get the object whose components or itself or both are contained in the SelectionNode. - * \return The object whose components or itself or both are contained in the SelectionNode. - */ - FbxObject* GetSelectionObject() const; - - /** To detect if the SelectionNode is valid. - * \return \c true if this is a valid SelectionNode. \c false otherwise. - * \remarks SelectionNode is valid if selection object is set. - * SelectionNode is not valid if no selection object is set. - */ - bool IsValid() const; - - /** \c true means the object itself is also in the selection set; - * \c false means only the object's components are in the selection set, the object is not. - */ - bool mIsTheNodeInSet; - - /** Index array for selected vertices. - */ - FbxArray mVertexIndexArray; - - /** Index array for selected edges. - */ - FbxArray mEdgeIndexArray; - - /** Index array for selected faces. - */ - FbxArray mPolygonIndexArray; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxArray*> mSubTypeSelectArray; - static const char* SELECT_TYPE_NAMES[(int)eSelectTypeCount]; - -protected: - void Construct(const FbxObject* pFrom) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_NODE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionset.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionset.h deleted file mode 100755 index 9c4df92..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxselectionset.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxselectionset.h -#ifndef _FBXSDK_SCENE_SELECTION_SET_H_ -#define _FBXSDK_SCENE_SELECTION_SET_H_ - -#include - -#include -#include - -#include - -/** FBX SDK selection set class. -* \nosubgrouping -* Represents a set of selected objects (FbxObject) and components. This is a non-exclusive (multiple membership) collection. -* Objects (FbxObject) can be added to a FbxSelectionSet directly, but to add components (vertexes, edges, or faces) -* you create a selection node (FbxSelectionNode) to group the object and its components together as a single item to be added. -* \see FbxSelectionNode -*/ -class FBXSDK_DLL FbxSelectionSet : public FbxCollection -{ - FBXSDK_OBJECT_DECLARE(FbxSelectionSet, FbxCollection); - -public: - /** This property stores annotation of the selection set. - * Default value is "". - */ - FbxPropertyT SelectionSetAnnotation; - - /** - * \name Utility functions - */ - //@{ - - /** Get the selected faces of a specified object. - * \param pObj The specified object. - * \param pPolygonIndexArray The array to take the indices of the selected faces. - * \remarks The indices of selected faces will be put in pPolygonIndexArray. - */ - void GetFaceSelection( FbxObject* pObj,FbxArray& pPolygonIndexArray ) const; - - /** Get the selected edges of a specified object. - * \param pObj The specified object. - * \param pEdgeIndexArray The array to take the indices of the selected edges. - * \remarks The indices of selected face will be put in pEdgeIndexArray. - */ - void GetEdgeSelection( FbxObject* pObj,FbxArray& pEdgeIndexArray ) const; - - /** Get the selected vertices of a specified object. - * \param pObj The specified object. - * \param pVertexIndexArray The array to take the indices of the selected vertices. - * \remarks The indices of selected face will be put in pVertexIndexArray. - */ - void GetVertexSelection( FbxObject* pObj,FbxArray& pVertexIndexArray ) const; - - /** Get list of two types of member in the selection set: SelectionNodes and Directly contained objects. - * \param pSelectionNodeList The array to take selection nodes of the selection set. - * \param pDirectObjectList The array to take directly contained objects of the selection set. - * \remarks There might be two types members for a selection set: selection node and directly contained object. - * They will be listed in pSelectionNodeList and pDirectObjectList separately. - */ - void GetSelectionNodesAndDirectObjects(FbxArray &pSelectionNodeList, FbxArray &pDirectObjectList) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SELECTION_SET_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxtakeinfo.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxtakeinfo.h deleted file mode 100755 index f050a3b..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxtakeinfo.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtakeinfo.h -#ifndef _FBXSDK_SCENE_TAKEINFO_H_ -#define _FBXSDK_SCENE_TAKEINFO_H_ - -#include - -#include -#include -#include - -#include - -class FbxThumbnail; - -/** This FbxTakeLayerInfo structure is used to identify a layer by name and id number. - */ -struct FbxTakeLayerInfo -{ - FbxString mName; - int mId; -}; - -/** This class contains take information from an imported file - * or exported to an output file. - * - * A "take" is in fact a group of animation data grouped by name, so - * the FBX file format can support many "animation takes" in an FBX file to mimic - * how a movie is produced by making many takes of the same scene. - * - * The most used data is the "take name", other data are rarely used. - * Example of use: to get the list of all - * animation take names of FBX file without loading all the scene content. - * When a FbxImporter is initialized, the take information can be read and can be available - * before the long Import() step, this way, we can get the take info data very fast - * since we don't need to load all the animation scene data. - * \code - * // Ex: to get all take names in a FBX file - * for(int lAnimStackCount=0; lAnimStackCount < lImporter->GetAnimStackCount(); lAnimStackCount++) - * { - * FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(lAnimStackCount); - * FbxString lTakeName = lTakeInfo->mName; - * } - * \endcode - */ -class FBXSDK_DLL FbxTakeInfo -{ -public: - - /** Default constructor. - */ - FbxTakeInfo(); - - /** Destructor. - */ - virtual ~FbxTakeInfo(); - - /** Copy Constructor. - * \param pTakeInfo The take information to be copied. - */ - FbxTakeInfo(const FbxTakeInfo& pTakeInfo); - - /** Assignment operator. - * \param pTakeInfo The take information to be assigned. . - */ - FbxTakeInfo& operator=(const FbxTakeInfo& pTakeInfo); - - //! Take name. - FbxString mName; - - /** The take name once it is imported in a scene. - * You can modify it if it must be different from the take name in the imported file. - * \remarks This field is only used when importing a scene. - */ - FbxString mImportName; - - //! Take description. - FbxString mDescription; - - /** Import/export flag. - * Set to \c true by default, set to \c false if the take must not be imported or exported. - */ - bool mSelect; - - //! Local time span, set to animation interval if it is left at the default value. - FbxTimeSpan mLocalTimeSpan; - - //! Reference time span, set to animation interval if it is left at the default value. - FbxTimeSpan mReferenceTimeSpan; - - /** Time value for offsetting the animation keys once they are imported in a scene. - * You can modify it if you need the animation of a take to be offset. - * The effect depends on the state of \c mImportOffsetType. - * \remarks This field is only used when importing a scene. - */ - FbxTime mImportOffset; - - /** \enum EImportOffsetType Import offset types. - * - \e eAbsolute - * - \e eRelative - */ - enum EImportOffsetType - { - eAbsolute, - eRelative - }; - - /** Import offset type. - * If set to \c eAbsolute, \c mImportOffset gives the absolute time of - * the first animation key and the appropriate time shift is applied - * to all of the other animation keys. - * If set to \c eRelative, \c mImportOffset gives the relative time - * shift applied to all animation keys. - */ - EImportOffsetType mImportOffsetType; - - /** Copies the layer information from the take information. - * \param pTakeInfo The take information to be copied. - */ - void CopyLayers(const FbxTakeInfo& pTakeInfo); - - //! List of each layer's information. - FbxArray mLayerInfoList; - - //! Current Layer. - int mCurrentLayer; -}; - -#include - -#endif /* _FBXSDK_SCENE_TAKEINFO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxthumbnail.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxthumbnail.h deleted file mode 100755 index 2dbd5e4..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxthumbnail.h +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxthumbnail.h -#ifndef _FBXSDK_SCENE_THUMBNAIL_H_ -#define _FBXSDK_SCENE_THUMBNAIL_H_ - -#include - -#include - -#include - -class FbxThumbnailMembers; - -/** Simple class to hold RGBA values of a thumbnail image. - * \nosubgrouping - */ -class FBXSDK_DLL FbxThumbnail : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxThumbnail, FbxObject); - -public: - /** - * \name Thumbnail properties - */ - //@{ - - //! Pixel height of the thumbnail image - FbxPropertyT CustomHeight; - - //! Pixel width of the thumbnail image - FbxPropertyT CustomWidth; - - /** \enum EDataFormat Data format. - * - \e eRGB_24 - * - \e eRGBA_32 - */ - enum EDataFormat - { - eRGB_24, // 3 components - eRGBA_32 // 4 components - }; - - /** Set the data format. - * \param pDataFormat Data format identifier. - */ - void SetDataFormat(EDataFormat pDataFormat); - - /** Get the data format. - * \return Data format identifier for the thumbnail. - */ - EDataFormat GetDataFormat() const; - - - /** \enum EImageSize Image size. - * - \e eNotSet - * - \e e64x64 - * - \e e128x128 - * - \e eCustomSize - */ - enum EImageSize - { - eNotSet = 0, - e64x64 = 64, - e128x128 = 128, - eCustomSize = -1 - }; - - /** Set the thumbnail dimensions. - * \param pImageSize Image size identifier. - */ - void SetSize(EImageSize pImageSize); - - /** Get the thumbnail dimensions. - * \return Image size identifier. - */ - EImageSize GetSize() const; - - /** Get the thumbnail dimensions in bytes. - * \return Thumbnail size in bytes. - */ - unsigned long GetSizeInBytes() const; - - - //@} - - /** - * \name Thumbnail data access - */ - //@{ - - /** Fill the thumbnail image. - * \param pImage Pointer to the image data. A copy - * of the image data will be made. - * \remarks This pointer must point to a buffer region - * that is at least Width * Height * Component count - * bytes long. This pointer points to the upper left - * corner of the image. - * \remarks You must set the data format and the dimensions - * before calling this function. If the image size is set to eCustomSize - * the CustomHeight and CustomWidth properties must be set before calling - * this function. - * \return \c true if the thumbnail properties were set - * before calling this function. \c false otherwise. - */ - bool SetThumbnailImage(const FbxUChar* pImage); - - /** Get the thumbnail image. - * \return Pointer to the image data, or \c NULL if the - * thumbnail is empty. - */ - FbxUChar* GetThumbnailImage() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxThumbnailMembers* mMembers; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_THUMBNAIL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxvideo.h b/sdk/Windows/2019.2/include/fbxsdk/scene/fbxvideo.h deleted file mode 100755 index b0a3c38..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/fbxvideo.h +++ /dev/null @@ -1,202 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvideo.h -#ifndef _FBXSDK_SCENE_VIDEO_H_ -#define _FBXSDK_SCENE_VIDEO_H_ - -#include - -#include - -#include - -/** FBX SDK video class. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVideo : public FbxMediaClip -{ - FBXSDK_OBJECT_DECLARE(FbxVideo, FbxMediaClip); - -public: - /** - *\name Reset video - */ - //@{ - //! Reset the video to default values. - void Reset() override; - //@} - - /** - * \name Video attributes Management - */ - //@{ - /** Set the use of MipMap on the video. - * \param pUseMipMap If \c true, use MipMap on the video. - */ - void ImageTextureSetMipMap(bool pUseMipMap); - - /** Retrieve use MipMap state. - * \return MipMap flag state. - */ - bool ImageTextureGetMipMap() const; - - /** Specify the Video full filename. - * \param pName Video full filename. - * \return \c True,if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetFileName(const char* pName) override; - - /** Specify the Video relative filename. - * \param pName Video relative filename. - * \return \c True, if update successfully, \c false otherwise. - * \remarks Update the texture filename if the connection exists. - */ - bool SetRelativeFileName(const char* pName) override; - - /** - * \name Image sequence attributes Management - * Besides storing video clips, the FbxVideo object can also store image sequences. This section contains - * the manipulation methods used in this specialized mode. Note that, except for the GetFileName(), - * SetFileName(), GetRelativeFileName(), SetRelativeFileName() and the methods in this section, all the - * other ones are not mandatory therefore could contain uninitialized or default data values. - * - */ - //@{ - /** Specify if this video object is holding the starting point of an image sequence. - * \param pImageSequence If \c true, this object is holding an image sequence. - * \remarks When this object is used as image sequence, the FBX SDK - * will automatically exclude it from the embedding mechanism. - */ - void SetImageSequence(bool pImageSequence); - - /** Get the current state of the ImageSequence property. - * \return ImageSequence property value. - */ - bool GetImageSequence() const; - - /** Specify the frame offset to be applied to the image sequence. - * \param pOffset The frame offset value. - */ - void SetImageSequenceOffset(int pOffset); - - /** Get the current value of the ImageSequenceOffset property. - * \return ImageSequenceOffset property value. - */ - int GetImageSequenceOffset() const; - //@} - - /** Retrieve the Frame rate of the video clip. - * \return Frame rate. - */ - double GetFrameRate() const; - - /** Retrieve the last frame of the video clip. - * \return Last frame number. - */ - int GetLastFrame() const; - - /** Retrieve the clip width. - * \return Video image width. - */ - int GetWidth() const; - - /** Retrieve the clip height. - * \return Video image height. - */ - int GetHeight() const; - - /** Set the start frame of the video clip. - * \param pStartFrame Start frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStartFrame(int pStartFrame); - - /** Retrieve the start frame of the video clip. - * \return Start frame number. - */ - int GetStartFrame() const; - - /** Set the stop frame of the video clip. - * \param pStopFrame Stop frame number. - * \remarks The parameter value is not checked. It is the responsibility - * of the caller to deal with bad frame numbers. - */ - void SetStopFrame(int pStopFrame); - - /** Retrieve the stop frame of the video clip. - * \return Stop frame number. - */ - int GetStopFrame() const; - - /** Video interlace modes. - */ - enum EInterlaceMode - { - eNone, //!< Progressive frame (full frame). - eFields, //!< Alternate even/odd fields. - eHalfEven, //!< Half of a frame, even fields only. - eHalfOdd, //!< Half of a frame, odd fields only. - eFullEven, //!< Extract and use the even field of a full frame. - eFullOdd, //!< Extract and use the odd field of a full frame. - eFullEvenOdd, //!< Extract eFields and make full frame with each one beginning with Odd (60fps). - eFullOddEven //!< Extract eFields and make full frame with each one beginning with Even (60fps). - }; - - /** Set the Interlace mode. - * \param pInterlaceMode Interlace mode identifier. - */ - void SetInterlaceMode(EInterlaceMode pInterlaceMode); - - /** Retrieve the Interlace mode. - * \return Interlace mode identifier. - */ - EInterlaceMode GetInterlaceMode() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(FbxConnectEvent const &pEvent) override; - -public: - FbxObject& Copy(const FbxObject& pObject) override; - - FbxPropertyT ImageSequence; - FbxPropertyT ImageSequenceOffset; - FbxPropertyT FrameRate; - FbxPropertyT LastFrame; - FbxPropertyT Width; - FbxPropertyT Height; - FbxPropertyT StartFrame; - FbxPropertyT StopFrame; - FbxPropertyT InterlaceMode; - -protected: - void Init(); - - bool mUseMipMap; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVideo::EInterlaceMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_VIDEO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h deleted file mode 100755 index 9edd276..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshape.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ - -#include - -#include - -#include - -class FbxGeometry; -class FbxBlendShapeChannel; - -/** Class for blend shape deformer. - * A blend shape deformer takes a base shape (polygonal surface, curve, or surface) - * and blends it with other target shapes based on weight values. - * Blend shape deformer organize all target shapes via blend shape channel. - * One blend shape deformer can contains multiple blend shape channels, then each - * channel can organize multiple target shapes, \see FbxBlendShapeChannel, FbxShape. - * \remarks The blend effect of each blend shape channel is additive, so the final blend - * effect of a blend shape deformer is the sum of blend effect of all blend shape - * channels it contains, the blend effect of each blend shape channel is controlled - * by the property DeformPercent of blend shape channel. - * \see FbxGeometry, FbxGeometryBase. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxBlendShape : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShape, FbxDeformer); - -public: - /** Set the geometry affected by this blend shape deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - * \remarks One blend shape deformer can only be used on one base geometry. - * So when SetGeometry is called, the pGeometry will replace the - * current base geometry connected to this blend shape deformer. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this blend shape deformer. - * \return A pointer to the geometry if it is set or \c NULL if not set yet. - */ - FbxGeometry* GetGeometry(); - - /** Add a blend shape channel. - * \param pBlendShapeChannel Pointer to the blend shape channel object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Remove the given blend shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to remove from this blend shape deformer. - * \return Pointer to the blend shape channel or \c NULL if pBlendShapeChannel is not owned by this blend shape deformer. - */ - FbxBlendShapeChannel* RemoveBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the number of blend shape channels. - * \return Number of blend shape channels that have been added to this object. - */ - int GetBlendShapeChannelCount() const; - - /** Get blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex); - - /** Get the blend shape channel at given index. - * \param pIndex Index of the blend shape channel. - * \return Pointer to the blend shape channel or \c NULL if index is out of range. - */ - const FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex) const; - - /** Get the type of the deformer. - * \return The deformer type identifier of blend shape deformer. - */ - EDeformerType GetDeformerType() const override {return eBlendShape; }; - - /** Restore the blend shape deformer to the initial state. - * Calling this function will do the following: - * \li Clear the pointer to base geometry. - * \li Remove all the blend shape channels. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h deleted file mode 100755 index a6f9931..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxblendshapechannel.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ -#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ - -#include - -#include - -#include - -class FbxShape; -class FbxBlendShape; - -/** Class for blend shape channels. - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * each target shape could have its own full deformation percentage. For example, given a channel that - * has 3 target shapes, whose full deform percentage are 30, to 80 to 100 separately, then when the percent - * changes from 0 to 100, the base geometry will deform from the first target shape to the last one. - * This is called in-between blend shapes or progressive morph. - * The property DeformPercent of blend shape channel will control the deform level of each target shape or - * in-between blend shape on it. - *\nosubgrouping - */ -class FBXSDK_DLL FbxBlendShapeChannel : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxBlendShapeChannel, FbxSubDeformer); - -public: - /** This property stores deform percent of this channel. - * The default value of this property is 0.0. - * - * \remark Although not enforced, it is strongly suggested to limit the value of this property - * in the range from 0.0 to 100.0 because graphic applications may handle values outside of this - * interval differently, therefore producing unexpected results. - */ - FbxPropertyT DeformPercent; - - /** Set the blend shape deformer that contains this blend shape channel. - * \param pBlendShape Pointer to the blend shape deformer to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeDeformer(FbxBlendShape* pBlendShape); - - /** Get the blend shape deformer that contains this blend shape channel. - * \return A pointer to the blend shape deformer if set or NULL. - */ - FbxBlendShape* GetBlendShapeDeformer(); - - /** Add a target shape. - * \param pShape Pointer to the target shape to add. - * \param pFullDeformPercent The full deform percentage for the target shape. - * \return \c true on success, \c false otherwise. - */ - bool AddTargetShape(FbxShape* pShape, double pFullDeformPercent = 100); - - /** Remove the given target shape. - * \param pShape Pointer to the target shape to remove from this blend shape channel. - * \return Pointer to the target shape or \c NULL if pShape is not owned by this blend shape channel. - */ - FbxShape* RemoveTargetShape(FbxShape* pShape); - - /** Get the number of target shapes. - * \return Number of target shapes that have been added to this blend shape channel. - */ - int GetTargetShapeCount() const; - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - FbxShape* GetTargetShape(int pIndex); - - /** Get the target shape at given index. - * \param pIndex Index of the target shape. - * \return Pointer to the target shape or \c NULL if index is out of range. - */ - const FbxShape* GetTargetShape(int pIndex) const; - - /** Get the index of the given target shape. - * \param pShape The given target shape to find index. - * \return The index of the target shape. - */ - int GetTargetShapeIndex( FbxShape* pShape); - - /** Get the full weight values of target shape. - * To access each value iterate in the array up to GetTargetShapeCount(). - * \return The array of full weight values of target shape. - */ - double* GetTargetShapeFullWeights(); - - /** Set the array size for the fully deform weights. - * This functions pre-allocate the array to pCount size. - * \param pCount The new array size to set. - */ - void SetFullWeightsCount(int pCount); - - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return The sub deformer type identifier of blend shape channel. - */ - EType GetSubDeformerType() const override {return eBlendShapeChannel; }; - - /** Restore the blend shape channel to the initial state. - * Calling this function will do the following: - * \li Set the DeformPercent to 0. - * \li Remove all target shapes. - * \li Clear the array for fully deform weights of in-between target shapes. - */ - void Reset(); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - //The full weights array of each shapes on this blend shape channel - FbxArray mShapeFullWeightArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcache.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcache.h deleted file mode 100755 index cbef4a7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcache.h +++ /dev/null @@ -1,461 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcache.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHE_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHE_H_ - -#include - -#include -#include - -#include - -class FbxCache_internal; - -/** This object contains methods for accessing point animation in a cache file. -* The FBX SDK supports three point cache file formats : -* - \e eMaxPointCacheV2: the 3ds Max Point Cache 2 file format. -* - \e eMayaCache: the Maya Cache file format. -* - \e eAlembic: Alembic Cache file format. -* -* Accessing cache data using these formats differs significantly. To address this difference, several sets of methods have been created. -* Use the GetCacheFileFormat() function to determine which set of methods to use. */ -class FBXSDK_DLL FbxCache : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCache, FbxObject); - -public: - //! \name Format Independent Functions. - //@{ - /** Supported cache file formats. */ - enum EFileFormat - { - eUnknownFileFormat, //!< Unknown cache file format. - eMaxPointCacheV2, //!< 3ds Max Point Cache 2 file format. - eMayaCache, //!< Maya Cache file format. - eAlembic //!< Alembic Cache file format. - }; - - /** Set the cache file format. - * \param pFileFormat Valid values are \e eMaxPointCacheV2 or \e eMayaCache. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileFormat(EFileFormat pFileFormat, FbxStatus* pStatus=NULL); - - /** Get the cache file format. - * \return The current cache file format, or \e eUnknown if it is not set. */ - EFileFormat GetCacheFileFormat() const; - - /** Set the cache file name. - * \param pRelativeFileName_UTF8 The point cache file, relative to the FBX file name. - * \param pAbsoluteFileName_UTF8 The point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. */ - void SetCacheFileName(const char* pRelativeFileName_UTF8, const char* pAbsoluteFileName_UTF8, FbxStatus* pStatus=NULL); - - /** Get the cache file name. - * \param pRelativeFileName_UTF8 Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName_UTF8 Return the point cache file absolute path. */ - void GetCacheFileName(FbxString& pRelativeFileName_UTF8, FbxString& pAbsoluteFileName_UTF8) const; - - /** Open the cache file for reading. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the file is successfully opened, \c false otherwise. */ - bool OpenFileForRead(FbxStatus* pStatus=NULL); - - /** Get the open state of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is currently open, \c false otherwise. */ - bool IsOpen(FbxStatus* pStatus=NULL) const; - - /** Read data from the cache file. - * \param pBuffer The buffer containing the data from the cache file. This parameter can be NULL if interested to get buffer length only. - * \param pBufferLength The length of the buffer (NOT in bytes). - * \param pTime The time at which the data should be read. - * \param pChannel The cache file channel to read, when multiple channels are available. - * \return \c True if the cache data was successfully read, \c false otherwise. - * \remark The buffer will be allocated by FbxCache and will be returned if read successful. The buffer will be freed by FbxCache upon its destruction. */ - bool Read(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel=0); - - /** Close the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the cache file is closed successfully, \c false otherwise. */ - bool CloseFile(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file, in frames per second. */ - double GetSamplingFrameRate(FbxStatus* pStatus=NULL); - - /** Get the sampling frame rate of the cache file, as a FbxTime object. - * \param pStatus The FbxStatus object to hold error codes. - * \return The sampling frame rate of the cache file. */ - FbxTime GetCacheTimePerFrame(FbxStatus* pStatus=NULL); - - /** Get the number of channels in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of animation channels in the cache file. */ - int GetChannelCount(FbxStatus* pStatus=NULL); - - /** Get the channel name for a specific channel index. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pChannelName Returns the name of the requested channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelName(int pChannelIndex, FbxString& pChannelName, FbxStatus* pStatus=NULL); - //@} - - //! \name eMayaCache Format Specific Functions. - //@{ - //! Number of files used to store the animation. - enum EMCFileCount - { - eMCOneFile, //!< One file is used for all the frames of animation. - eMCOneFilePerFrame //!< For every frame of animation, a cache file is used. The number of the frames is the number of the cache files. - }; - - //! Data types in the MC cache file. - enum EMCDataType - { - eUnknownData, //!< Unknown data. - eDouble, //!< No use but has to be defined for consistency reasons. - eDoubleArray, //!< double* - eDoubleVectorArray, //!< double* [3] - eInt32Array, //!< int* - eFloatArray, //!< float* - eFloatVectorArray //!< float* [3] - }; - - //! Binary cache format. - enum EMCBinaryFormat - { - eMCC, //!< MCC cache file format, 32bit (older format) - eMCX //!< MCX cache file format, 64bit (newer format) - }; - - //! Cache channel sampling types. - enum EMCSamplingType - { - eSamplingRegular, //!< Regular sampling. - eSamplingIrregular //!< Irregular sampling. - }; - - /** Open a cache file for writing. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pChannelName The name of the channel of animation to create. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pMCDataType The data type of the MC cache file. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pStatus The FbxStatus object to hold error codes. */ - bool OpenFileForWrite(EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, EMCBinaryFormat pBinaryFormat, EMCDataType pMCDataType=eDoubleVectorArray, const char* pInterpretation="Points", FbxStatus* pStatus=NULL); - - /** Creates a new channel in the cache. - * \param pChannelName The name of the channel of animation to create. - * \param pMCDataType The MC DataType of the cache. - * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. - * \param pChannelIndex The index of the new animation channel. - * \param pStatus The FbxStatus object to hold error codes. - * \remark \b pChannelName must be unique within the cache. - * \remark \b pChannelName and \b pInterpretation cannot be NULL pointers. - * \remark This method must be called before adding any data to the cache but after the OpenFileForWrite. */ - bool AddChannel(const char* pChannelName, EMCDataType pMCDataType, const char* pInterpretation, unsigned int& pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the data type of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pChannelType The channel's data type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelDataType(int pChannelIndex, EMCDataType& pChannelType, FbxStatus* pStatus=NULL); - - /** Get the index of the specified channel. - * \param pChannelName The name of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return The index of the channel in the cache file, or -1 if an error occurred. */ - int GetChannelIndex(const char* pChannelName, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Read a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be evaluated. - * \param pBuffer The place where the point value will be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that data is about to be written to it. This call must appear before any calls to the Write() methods on any channel and terminated by a call to EndWriteAt(). - * \param pTime Time at which the point animation must be inserted. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool BeginWriteAt( FbxTime& pTime, FbxStatus* pStatus=NULL ); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cachedsystem has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Time at which the point animation must be inserted. - * \param pBuffer Point to the values to be copied. This buffer must be of size pPointCount. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). - * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() - * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ - bool Write(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Instruct the cache system that all the data on all the channels has been written to it for the given time (specified - * by the BeginWriteAt() call). The call to this method must be made after all the Write() for every channel defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EndWriteAt(FbxStatus* pStatus=NULL); - - /** Get the Animation Range of the specified channel. - * \param pChannelIndex The index of the channel. - * \param pTimeStart The start time of the channel's animation. - * \param pTimeEnd The end time of the channel's animation. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetAnimationRange(int pChannelIndex, FbxTime &pTimeStart, FbxTime &pTimeEnd, FbxStatus* pStatus=NULL); - - /** Get the cache type. - * \param pFileCount The cache type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetCacheType(EMCFileCount& pFileCount, FbxStatus* pStatus=NULL); - - /** Get the cache channel interpretation. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pInterpretation The channel interpretation, user-defined. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelInterpretation(int pChannelIndex, FbxString& pInterpretation, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling type. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingType The sampling type of the channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingType(int pChannelIndex, EMCSamplingType& pSamplingType, FbxStatus* pStatus=NULL); - - /** Get the cache channel sampling rate, in frames per second. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSamplingRate The sampling rate of the channel. The channel must have a regular sampling type. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSamplingRate(int pChannelIndex, FbxTime& pSamplingRate, FbxStatus* pStatus=NULL); - - /** Get the number of data points for a channel. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pSampleCount Number of available samples. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelSampleCount(int pChannelIndex, unsigned int& pSampleCount, FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file, for a channel, for a given time. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pTime Reference time; must be within the boundaries of the animation. - * \param pPointCount Number of available points. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetChannelPointCount(int pChannelIndex, FbxTime pTime, unsigned int& pPointCount, FbxStatus* pStatus=NULL); - - /** Returns the number of cache data files. - * \param pStatus The FbxStatus object to hold error codes. - * \return The count returned does not include the main cache file, and depends on the cache type. Will return -1 if point cache support is not enabled. */ - int GetCacheDataFileCount(FbxStatus* pStatus=NULL) const; - - /** Get the nth cache file name. - * \param pIndex Index of the cache file to return; index is zero-based, and must be less than GetCacheDataFileCount(). - * \param pRelativeFileName Return the point cache file name, relative to the FBX File name. - * \param pAbsoluteFileName Return the point cache file absolute path. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool GetCacheDataFileName(int pIndex, FbxString& pRelativeFileName, FbxString& pAbsoluteFileName, FbxStatus* pStatus=NULL); - - /** Enable multi-channel fetching. - * \param pMultiChannelFetching Enable/disable multi-channel fetching. When multi-channel is enabled, any load of data on a channel at a specific - * time will pre-fetch data from all channels, for that specific time. This can reduce disk access, and increase performance (but requires more memory). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool EnableMultiChannelFetching(bool pMultiChannelFetching, FbxStatus* pStatus=NULL); - - /** Get the next time where data is stored. - * \param pCurTime Current time; must be within the boundaries of the animation time. - * \param pNextTime Next time (filled if the function is successful). - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). If pChannel is left at -1, get the next time for any channel. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetNextTimeWithData(FbxTime pCurTime, FbxTime& pNextTime, int pChannelIndex = -1, FbxStatus* pStatus=NULL); - - /** Get the number of data points the channel contains. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of the channel's data points. */ - int GetDataCount(int pChannelIndex, FbxStatus* pStatus=NULL); - - /** Get the time of the specified data point. - * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). - * \param pDataIndex Index of the data point. - * \param pTime Time of the data point (filled if the function is successful). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool GetDataTime(int pChannelIndex, unsigned int pDataIndex, FbxTime& pTime, FbxStatus* pStatus=NULL); - //@} - - //! \name eMaxPointCacheV2 Format Specific Functions. - //@{ - /** Open a cache file for writing. - * \param pFrameStartOffset Start time of the animation, in frames. - * \param pSamplingFrameRate Number of frames per second. - * \param pSampleCount The number of samples to write to the file. - * \param pPointCount The number of points to write in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ - bool OpenFileForWrite(double pFrameStartOffset, double pSamplingFrameRate, unsigned int pSampleCount, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Get the number of frames of animation found in the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of frames of animation. - */ - unsigned int GetSampleCount(FbxStatus* pStatus=NULL); - - /** Get the number of points animated in the cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of points. - */ - unsigned int GetPointCount(FbxStatus* pStatus=NULL); - - /** Get the start time of the animation - * \param pStatus The FbxStatus object to hold error codes. - * \return The start time of the animation, in frames. */ - double GetFrameStartOffset(FbxStatus* pStatus=NULL); - - /** Read a sample at a given frame index. - * \param pFrameIndex The index of the animation frame, between 0 and GetSampleCount(). - * \param pBuffer The place where the point value will be copied. This buffer must be of size 3 * pPointCount. - * \param pPointCount The number of points to read from the point cache file. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. */ - bool Read(unsigned int pFrameIndex, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); - - /** Write a sample at a given frame index. - * \param pFrameIndex The index of the animation frame. - * \param pBuffer Point to the values to be copied. This buffer must be of size 3 * pPointCount, as passed to the function OpenFileForWrite(). - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark Successive calls to Write() must use successive index. */ - bool Write(unsigned int pFrameIndex, double* pBuffer, FbxStatus* pStatus=NULL); - //@} - - //! \name File conversion Functions. - //@{ - /** Create an MC cache file from an PC2 cache file. - * \param pFileCount Create one file for each frame of animation, or one file for all the frames. - * \param pSamplingFrameRate Number of frames per second used to re-sample the point animation. - * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromPC2ToMC(EMCFileCount pFileCount, double pSamplingFrameRate, EMCBinaryFormat pBinaryFormat, FbxStatus* pStatus=NULL); - - /** Create a PC2 cache file from an MC cache file. - * \param pSamplingFrameRate Number of frames per second to re-sample the point animation. - * \param pChannelIndex Index of the channel of animation to read from. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if successful, \c false otherwise. - * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ - bool ConvertFromMCToPC2(double pSamplingFrameRate, unsigned int pChannelIndex, FbxStatus* pStatus=NULL); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - enum EOpenFlag - { - eReadOnly, - eWriteOnly - }; - -protected: - bool OpenFile(EOpenFlag pFlag, EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, const char* pInterpretation, unsigned int pSampleCount, unsigned int pPointCount, double pFrameStartOffset, FbxStatus* pStatus, EMCDataType pMCDataType = eDoubleVectorArray, EMCBinaryFormat pBinaryFormat = eMCX); - - void Construct( const FbxObject* pFrom ) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - FbxCache_internal* mData; - -private: - bool AllocateReadBuffer(unsigned int pTypeSize, unsigned int pTypeLength, unsigned int pLength, bool pAllocateConvertBuffer); - bool ReadMayaCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - bool ReadMaxCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime); - bool ReadAlembicCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); - - FbxPropertyT CacheFile; - FbxPropertyT CacheFileAbsolutePath; - FbxPropertyT CacheFileType; - - void* mReadBuffer; - unsigned int mReadBufferLength; - unsigned int mReadBufferSize; - unsigned int mReadTypeSize; - unsigned int mReadTypeLength; - unsigned int mReadLength; - void* mConvertBuffer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCache::EFileFormat&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h deleted file mode 100755 index d04a7db..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcachedeffect.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ -#define _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ - -#include - -#include -#include - -#include - -/** A cached effect is a type of node attribute to represent certain type of effect - * by an cache object. Categories are particle cache, fluid cache, hair cache and general cache. - * \see ECategory for the effect types that are supported. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCachedEffect : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCachedEffect, FbxNodeAttribute); - -public: - //! Returns the FbxNodeAttribute::EType::eCachedEffect attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Effect attribute category. This is for identification purpose and has - * no influence inside the FBX SDK. However, applications may use this to filter FbxCachedEffect - * objects. - * \remarks Vertex caches for deforming geometries are not handled by the FbxCachedEffect object. These - * caches are connected with the FbxVertexCacheDeformer object. - * \remarks If an object of this class is used as the default NodeAttribute for a FbxNode and the scene is - * saved to an FBX v6 and earlier versions, the CachedEffect attribute is not saved and the FbxNode will - * be processed as a FbxNull node with default values for the attribute. - */ - enum ECategory - { - eParticles, //!< This effect handles a particle cache. - eFluids, //!< This effect handles a fluid cache. - eHair, //!< This effect handles an hair cache. - eGeneric //!< This effect handles a cache other than particles, fluids or hair. - }; - - //! Return the specialization category of this effect attribute. - ECategory GetCategory() const; - - /** Assign a cache object to be used by this attribute. - * \param pCache The cache object. - * \param pCategory The type of this cached effect. - * \remarks The cache referenced by the \b pCache pointer can be freely shared among - * multiple FbxCachedEffect (and even the FbxVertexCacheDeformer) therefore - * \b pCategory identifier should really only used as a hint of what this FbxCachedEffect - * represents but it should not be taken for granted that the content of the cache really - * matches the category. Applications should always check the cache files to ensure that - * they are manipulating the desired information. - * - */ - void SetCache( FbxCache* pCache, ECategory pCategory = eGeneric); - - /** Get the cache object used by this node attribute. - * \return A pointer to the cache object used by this node attribute, or \c NULL if no cache object is assigned. - */ - FbxCache* GetCache() const; - -protected: - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - -public: - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - -private: - void ClearCacheConnections(); - FbxPropertyT Category; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCachedEffect::ECategory&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h deleted file mode 100755 index 01e4b26..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamera.h +++ /dev/null @@ -1,1898 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamera.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ - -#include - -#include -#include -#include - -#include - -class FbxTexture; - -/** This node attribute contains methods for accessing the properties of a camera. - * \nosubgrouping - * A camera can be set to automatically point at and follow - * another node in the hierarchy. To do this, the focus source - * must be set to EFocusDistanceSource::eFocusSrcCameraInterest and the - * followed node associated with function FbxNode::SetTarget(). - * \see FbxCameraStereo and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCamera : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCamera,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eCamera. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the camera to default values. - void Reset(); - - /** Camera projection types. - * \remarks By default, the camera projection type is set to ePerspective. - * If the camera projection type is set to eOrthogonal, the following options - * are not relevant: - * - aperture format - * - aperture mode - * - aperture width and height - * - angle of view/focal length - * - squeeze ratio - */ - enum EProjectionType - { - ePerspective, //!< Perspective projection. - eOrthogonal //!< Orthogonal projection. - }; - - /** - * \name Functions to handle the viewing area. - */ - //@{ - /** Camera formats identifiers. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetFormat, GetFormat and CameraFormat. - */ - enum EFormat - { - eCustomFormat, //!< The format's width, height, or pixel ratio has been user-specified, and matches none of the other picture formats. - eD1NTSC, //!< Standard format for D1 NTSC (720 by 486). - eNTSC, //!< NTSC standard for North American television broadcast (640 by 480). - ePAL, //!< PAL standard for European television broadcast (570 by 486). - eD1PAL, //!< Standard format for D1 PAL (720 by 576). - eHD, //!< HD format(1920 by 1080). - e640x480, //!< Recommended computer screen format (640 by 480). - e320x200, //!< Recommended format for World Wide Web production(320 by 200). - e320x240, //!< Alternate World Wide Web format(320 by 240). - e128x128, //!< Format(128 by 128) - eFullscreen //!< Full computer screen format (1280 by 1024 pixels). - }; - - /** Set the camera format. - * \param pFormat The camera format identifier. - * \remarks Changing the camera format sets the camera aspect - * ratio mode to eFixedResolution and modifies the aspect width - * size, height size, and pixel ratio accordingly. - */ - void SetFormat(EFormat pFormat); - - /** Get the camera format. - * \return The current camera format identifier. - */ - EFormat GetFormat() const; - - /** Camera's aspect ratio modes. - * \see SetAspect, GetAspectRatioMode, AspectWidth, AspectHeight and AspectRatioMode. - */ - enum EAspectRatioMode - { - eWindowSize, //!< Both width and height values aren't relevant. - eFixedRatio, //!< The height value is set to 1.0 and the width value is relative to the height value. - eFixedResolution, //!< Both width and height values are in pixels. - eFixedWidth, //!< The width value is in pixels and the height value is relative to the width value. - eFixedHeight //!< The height value is in pixels and the width value is relative to the height value. - }; - - /** Set the camera's aspect ratio mode. - * \param pRatioMode Camera's aspect ratio mode. - * \param pWidth Camera's aspect width, must be a positive value. - * \param pHeight Camera's aspect height, must be a positive value. - * \remarks Changing the camera aspect sets the camera format to eCustomFormat. - * \see EAspectRatioMode. - */ - void SetAspect(EAspectRatioMode pRatioMode, double pWidth, double pHeight); - - /** Get the camera aspect ratio mode. - * \return The current aspect ratio mode. - */ - EAspectRatioMode GetAspectRatioMode() const; - - /** Set the pixel ratio. - * \param pRatio The pixel ratio value. - * \remarks The value must be a positive number. Comprised between 0.05 and 20.0. Values - * outside these limits will be clamped. Changing the pixel ratio sets the camera format to eCustomFormat. - */ - void SetPixelRatio(double pRatio); - - /** Get the pixel ratio. - * \return The current camera's pixel ratio value. - */ - double GetPixelRatio() const; - - /** Set the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \param pDistance The near plane distance value. - * \remarks The near plane value is limited to the range [0.001, 600000.0] and - * must be inferior to the far plane value. - */ - void SetNearPlane(double pDistance); - - /** Get the near plane distance from the camera. - * The near plane is the minimum distance to render a scene on the camera display. - * A synonym for the near plane is "front clipping plane". - * \return The near plane value. - */ - double GetNearPlane() const; - - /** Set the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \param pDistance The far plane distance value. - * \remarks The far plane value is limited to the range [0.001, 600000.0] and - * must be superior to the near plane value. - */ - void SetFarPlane(double pDistance); - - /** Get the far plane distance from camera. - * The far plane is the maximum distance to render a scene on the camera display. - * A synonym for the far plane is "back clipping plane". - * \return The far plane value. - */ - double GetFarPlane() const; - - //@} - - /** - * \name Aperture and Film Functions. - * In photography, the aperture is the size of hole allowing light from the lens to get through to the film. - * The aperture mode determines which values drive the camera aperture. When the aperture mode is \e eHorizAndVert, - * \e eHorizontal or \e eVertical, the field of view is used. When the aperture mode is \e eFocalLength, the focal length is used. - * - * It is possible to convert the aperture mode into field of view or vice versa using functions ComputeFieldOfView and - * ComputeFocalLength. These functions use the camera aperture width and height for their computation. - */ - //@{ - - /** Camera's aperture formats. - * \remarks This is designed as the same as in MotionBuilder. - * \see SetApertureFormat, GetApertureFormat, FilmFormat, FilmWidth, FilmHeight, FilmSqueezeRatio and FilmAspectRatio. - */ - enum EApertureFormat - { - eCustomAperture, //!< The film size, squeeze ratio and aspect ratio has been user-specified, and matches none of the other aperture formats. - e16mmTheatrical, //!< Film Size: 0.404, 0.295 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.369. - eSuper16mm, //!< Film Size: 0.493, 0.292 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.688. - e35mmAcademy, //!< Film Size: 0.864, 0.630 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.371. - e35mmTVProjection, //!< Film Size: 0.816, 0.612 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mmFullAperture, //!< Film Size: 0.980, 0.735 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. - e35mm185Projection, //!< Film Size: 0.825, 0.446 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.850. - e35mmAnamorphic, //!< Film Size: 0.864, 0.732 inches. Film Squeeze Ratio: 2.0. Film Aspect Ratio:1.180. - e70mmProjection, //!< Film Size: 2.066, 0.906 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 2.280. - eVistaVision, //!< Film Size: 1.485, 0.991 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.498. - eDynaVision, //!< Film Size: 2.080, 1.480 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.405. - eIMAX //!< Film Size: 2.772, 2.072 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.338. - }; - - /** Set the camera aperture format. - * \param pFormat The camera aperture format identifier. - * \remarks Changing the aperture format modifies the aperture width, height, and squeeze ratio accordingly. - */ - void SetApertureFormat(EApertureFormat pFormat); - - /** Get the camera aperture format. - * \return The camera's current aperture format identifier. - */ - EApertureFormat GetApertureFormat() const; - - /** Camera aperture modes. - * The aperture mode determines which values drive the camera aperture. - * If the aperture mode is \e eHorizAndVert, \e eHorizontal, or \e eVertical, then the field of view is used. - * If the aperture mode is \e eFocalLength, then the focal length is used. - */ - enum EApertureMode - { - eHorizAndVert, //!< Set the angle values for both the horizontal and vertical settings. - eHorizontal, //!< Set only the horizontal angle. - eVertical, //!< Set only the vertical angle. - eFocalLength //!< Use focal length directly. - }; - - /** Set the camera aperture mode. - * \param pMode The camera aperture mode identifier. - */ - void SetApertureMode(EApertureMode pMode); - - /** Get the camera aperture mode. - * \return The camera's current aperture mode identifier. - */ - EApertureMode GetApertureMode() const; - - /** Set the camera aperture width in inches. - * \param pWidth The aperture width value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture width sets the camera aperture format to eCustomFormat. - */ - void SetApertureWidth(double pWidth); - - /** Get the camera aperture width in inches. - * \return The camera's current aperture width value in inches. - */ - double GetApertureWidth() const; - - /** Set the camera aperture height in inches. - * \param pHeight The aperture height value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the aperture height sets the camera aperture format to eCustomFormat. - */ - void SetApertureHeight(double pHeight); - - /** Get the camera aperture height in inches. - * \return The camera's current aperture height value in inches. - */ - double GetApertureHeight() const; - - /** Set the squeeze ratio. - * \param pRatio The squeeze ratio value. - * \remarks Must be a positive value. The minimum accepted value is 0.0001. - * Changing the squeeze ratio sets the camera aperture format to eCustomFormat. - */ - void SetSqueezeRatio(double pRatio); - - /** Get the camera squeeze ratio. - * \return The camera's current squeeze ratio value. - */ - double GetSqueezeRatio() const; - - /** Camera's gate fit modes. - * There are two gates for a camera, film gate and resolution gate. - * Film gate is a border indicating the area of the camera's view as a real-world camera records on film. - * The dimensions of the film gate represent the dimensions of the camera aperture. - * But the film gate does not represent the render region. - * It is the resolution gate that represents the rendering resolution. - * The gate fit mode controls the size of the resolution gate relative to the film gate. - */ - enum EGateFit - { - eFitNone, //!< No resolution gate fit. - eFitVertical, //!< Fit the resolution gate vertically within the film gate. - eFitHorizontal, //!< Fit the resolution gate horizontally within the film gate. - eFitFill, //!< Fit the resolution gate within the film gate. - eFitOverscan, //!< Fit the film gate within the resolution gate. - eFitStretch //!< Fit the resolution gate to the film gate. - }; - - /** Compute the angle of view based on the given focal length, the aperture width, and aperture height. - * \param pFocalLength The focal length in millimeters. - * \return The computed angle of view in degrees. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFieldOfView(double pFocalLength) const; - - /** Compute the focal length based on the given angle of view, the aperture width, and aperture height. - * \param pAngleOfView The angle of view in degrees. - * \return The computed focal length in millimeters. - * \remark If aperture mode is not vertical, horizontal is assumed. - */ - double ComputeFocalLength(double pAngleOfView) const; - - /** Specifies how the roll is applied with respect to the pivot value. - */ - enum EFilmRollOrder - { - eRotateFirst, //!< The film back is first rotated then translated by the pivot point value. - eTranslateFirst //!< The film back is first translated then rotated by the film roll value. - }; - - //@} - - /** - * \name Functions to handle BackPlane/FrontPlane and Plate. - * - * In the FbxSdk terminology, the Back/Front plane is the support of the plate. And the plate is - * the support of the texture used for backgrounds/foregrounds. Functions and properties - * identified by the "Plate" name are affecting the display of the texture on the plate. - * The functions and properties identified with the "Back/FrontPlane" are affecting the plate. - * - * Typically a client application would place the BackPlate a small distance in front of the - * FarPlane and the FrontPlate just behind the NearPlane to avoid them to be hidden by the clipping. - * Unless otherwise noted, there are no restrictions on the values stored by the camera object - * therefore it is the responsibility of the client application to process the information in a - * meaningful way and to maintain consistency between the different properties relationships. - */ - //@{ - - /** Set the associated background image file. - * \param pFileName The path of the background image file. - * \remarks The background image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundFileName(const char* pFileName); - - /** Get the background image file name. - * \return Pointer to the background filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundFileName() const; - - /** Set the media name associated to the background image file. - * \param pFileName The media name of the background image file. - * \remarks The media name is a unique name used to identify the background image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetBackgroundMediaName(const char* pFileName); - - /** Get the media name associated to the background image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetBackgroundMediaName() const; - - /** Set the associated foreground image file. - * \param pFileName The path of the foreground image file. - * \remarks The foreground image file name must be valid. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundFileName(const char* pFileName); - - /** Get the foreground image file name. - * \return Pointer to the foreground filename string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundFileName() const; - - /** Set the media name associated to the foreground image file. - * \param pFileName The media name of the foreground image file. - * \remarks The media name is a unique name used to identify the foreground image file. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - void SetForegroundMediaName(const char* pFileName); - - /** Get the media name associated to the foreground image file. - * \return Pointer to the media name string or \c NULL if not set. - * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) - * and must not be used in any other cases. - */ - const char* GetForegroundMediaName() const; - - - /** Image plate drawing modes. - */ - enum EPlateDrawingMode - { - ePlateBackground, //!< Image is drawn behind models. - ePlateForeground, //!< Image is drawn in front of models based on alpha channel. - ePlateBackAndFront //!< Image is drawn behind and in front of models depending on alpha channel. - }; - - /** Set front plate matte threshold. - * \param pThreshold Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - void SetBackgroundAlphaTreshold(double pThreshold); - - /** Get front plate matte threshold. - * \return Threshold value on a range from 0.0 to 1.0. - * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. - */ - double GetBackgroundAlphaTreshold() const; - - /** Change the back plate fit image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \param pFitImage New value for the BackPlateFitImage property. - */ - void SetBackPlateFitImage(bool pFitImage); - - /** Get the current back plate image flag. - * If this flag is on, scale the back plate image to fit on the back plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetBackPlateFitImage() const; - - /** Change the back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pCrop New value for the BackPlateCrop property. - */ - void SetBackPlateCrop(bool pCrop); - - /** Get the current back plate crop flag. - * If this flag is on, crop the back plate image to fit on the back plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the BackPlateCrop property. - */ - bool GetBackPlateCrop() const; - - /** Change the back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \param pCenter New value for the BackPlateCenter property. - */ - void SetBackPlateCenter(bool pCenter); - - /** Get the current back plate center flag. - * If this flag is on, center the back plate image on the back plane. - * \return The value of the BackPlateCenter property. - */ - bool GetBackPlateCenter() const; - - /** Change the back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \param pKeepRatio New value for the BackPlateKeepRatio property. - */ - void SetBackPlateKeepRatio(bool pKeepRatio); - - /** Get the current back plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the back plate image. - * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. - * \return The value of the BackPlateKeepRatio property. - */ - bool GetBackPlateKeepRatio() const; - - /** Enable or disable the display of the texture without the need to disconnect it from its plate. - * \param pEnable If \c true the texture is displayed, \c false otherwise. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - void SetShowFrontPlate(bool pEnable); - - /** Get the current state of the flag to display the front plate or not. - * \return \c true if show front plate is enabled, otherwise \c false. - * \remarks It is the responsibility of the client application to perform the required tasks according to the state - * of this flag. - */ - bool GetShowFrontPlate() const; - - /** Change the front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \param pFrontPlateFitImage New value for the FrontPlateFitImage property. - */ - void SetFrontPlateFitImage(bool pFrontPlateFitImage); - - /** Get the current front plate fit image flag. - * If this flag is on, scale the front plate image to fit on the front plane. - * \return The value of the BackPlateFitImage property. - */ - bool GetFrontPlateFitImage() const; - - /** Change the front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \param pFrontPlateCrop New value for the FrontPlateCrop property. - */ - void SetFrontPlateCrop(bool pFrontPlateCrop); - - /** Get the current front plate crop flag. - * If this flag is on, crop the front plate image to fit on the front plane. - * If the image is smaller than the plane, this flag has no effect. - * \return The value of the FrontPlateCrop property. - */ - bool GetFrontPlateCrop() const; - - /** Change the front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \param pFrontPlateCenter New value for the FrontPlateCenter property. - */ - void SetFrontPlateCenter(bool pFrontPlateCenter); - - /** Get the current front plate center flag. - * If this flag is on, center the front plate image on the front plane. - * \return The value of the FrontPlateCenter property. - */ - bool GetFrontPlateCenter() const; - - /** Change the front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \param pFrontPlateKeepRatio New value for the FrontPlateKeepRatio property. - */ - void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio); - - /** Get the current front plate keep ratio flag. - * If this flag is on, keep the aspect ratio of the front plate image. - * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. - * \return The value of the FrontPlateKeepRatio property. - */ - bool GetFrontPlateKeepRatio() const; - - /** Set the front plate opacity value. - * \param pOpacity New value for the ForegroundOpacity property. - */ - void SetForegroundOpacity(double pOpacity); - - /** Get the front plate opacity value. - * \return The value of the ForegroundOpacity property. - */ - double GetForegroundOpacity() const; - - /** Attach the texture to the front plate. - * \param pTexture The pointer to the texture to attach. - */ - void SetForegroundTexture(FbxTexture* pTexture); - - /** Get the texture connected to the front plate. - * \return A pointer to the texture attached to front plate. - */ - FbxTexture* GetForegroundTexture() const; - - /** Front and BackPlane distance modes. - * \see SetBackPlaneDistanceMode and GetBackPlaneDistanceMode. - */ - enum EFrontBackPlaneDistanceMode - { - eRelativeToInterest, //!< The back plane distance is measured in relation to the camera interest. - eRelativeToCamera //!< The back plane distance is measured in relation to the camera. - }; - - /** Set the back plane distance mode. - * \param pMode The back plane distance mode to set. - */ - void SetBackPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the back plane distance mode. - * \return Return the back plane distance mode. - */ - EFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const; - - /** Set the front plane distance from the camera. The the absolute position of the plane must be calculated - * by taking into consideration of the FrontPlaneDistanceMode. - * \param pDistance The front plane distance value. - * \remarks It is the responsibility of the client application to ensure that this plane position is - * within the frustum boundaries. - */ - void SetFrontPlaneDistance(double pDistance); - - /** Get the front plane distance value. - * \return double The front plane distance value. - */ - double GetFrontPlaneDistance() const; - - /** Set the front plane distance mode. - * \param pMode The front plane distance mode to set. - */ - void SetFrontPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); - - /** Get the front plane distance mode flag. - * \return The front plane distance mode. - */ - EFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const; - - /** Front/back plane display modes. - */ - enum EFrontBackPlaneDisplayMode - { - ePlanesDisabled, //!< Disables the front/back plane whether a texture is being projected or not. - ePlanesAlways, //!< Always shows the front/back plane, even if no texture has been added. - ePlanesWhenMedia //!< Shows the front/back plane only if a texture has been added. - }; - - /** Set the front plane display mode. This mode can be used by the client application to - * decide under which circumstance the front plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumFrontPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the front plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const; - - /** Set the back plane display mode. This mode can be used by the client application to - * decide under which circumstance the back plane should be drawn in the viewport. - * \param pMode The front/back plane display mode. - */ - void SetViewFrustumBackPlaneMode(EFrontBackPlaneDisplayMode pMode); - - /** Get the back plane display mode. - * \return The front/back plane display mode. - */ - EFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const; - - //@} - - /** - * \name Camera View Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Change the camera interest visibility flag. - * \param pEnable Set to \c true if the camera interest is shown, \c false otherwise. - */ - void SetViewCameraInterest(bool pEnable); - - /** Get current visibility state of the camera interest. - * \return \c true if the camera interest is shown, or \c false if hidden. - */ - bool GetViewCameraInterest() const; - - /** Change the camera near and far planes visibility flag. - * \param pEnable Set to \c true if the near and far planes are shown, \c false otherwise. - */ - void SetViewNearFarPlanes(bool pEnable); - - /** Get current visibility state of the camera near and far planes. - * \return \c true if the near and far planes are shown, \c false otherwise. - */ - bool GetViewNearFarPlanes() const; - - /** Camera safe area display styles. - */ - enum ESafeAreaStyle - { - eSafeAreaRound, //!< Rounded safe area. - eSafeAreaSquare //!< Square safe area. - }; - - //@} - - /** - * \name Render Functions - * It is the responsibility of the client application to perform the required tasks according to the state - * of the options that are either set or returned by these methods. - */ - //@{ - - /** Render options usage time. - */ - enum ERenderOptionsUsageTime - { - eInteractive, //!< To render in real time. - eOnDemand //!< Only render when it is asked. - }; - - /** Anti-aliasing methods. - */ - enum EAntialiasingMethod - { - eAAOversampling, //!< To do anti-aliasing by oversampling. - eAAHardware //!< To do anti-aliasing by hardware. - }; - - /** Oversampling types for anti-aliasing. - */ - enum ESamplingType - { - eSamplingUniform, /*!< The Uniform method samples each pixel at the same location. - The pixel is divided into equal parts, and each part is sampled. - The number of samples determines the number of times the pixel is divided. */ - eSamplingStochastic /*!< The Stochastic method randomly samples each pixel. - This produces an accurate color using a small number of samples. */ - }; - - /** Camera focus sources, that is the focal point for the depth of field. - * \see FocusDistance. - */ - enum EFocusDistanceSource - { - eFocusSrcCameraInterest, /*!< Base the depth of field on the camera interest. Models at the camera interest are in focus. - As you move toward or away from the camera interest, models become increasingly blurred. */ - eFocusSpecificDistance //!< Base the depth of field on a point defined by a specific distance from the camera interest. - }; - - //@} - - //! \name Utility Functions. - //@{ - /** Evaluate the camera position (eye). - * \param pTime The time at which the camera should be evaluated. - * \return The camera position evaluated from property value and animation. */ - FbxVector4 EvaluatePosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera target position (look at). - * \param pTime The time at which the camera should be evaluated. - * \return The camera target position evaluated from property value and animation. */ - FbxVector4 EvaluateLookAtPosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Evaluate the camera up direction, taking target up objects into consideration. - * \param pCameraPosition The camera current position. You can retrieve this with FbxCamera::EvaluatePosition(). - * \param pLookAtPosition The camera target position. you can retrieve this with FbxCamera::EvaluateLookAtPosition(). - * \param pTime The time at which the camera should be evaluated. - * \return The camera up direction vector based on provided information. */ - FbxVector4 EvaluateUpDirection(const FbxVector4& pCameraPosition, const FbxVector4& pLookAtPosition, const FbxTime& pTime=FBXSDK_TIME_ZERO) const; - - /** Compute the camera projection matrix. - * \param pWidth The width of the output frame. - * \param pHeight The height of the output frame. - * \param pVerticalFOV Calculate FOV vertically (based on height) if true or horizontally (based on width) if false (Note: Only applicable in perspective proj). - * \return The camera projection matrix, or the default identity matrix in case of wrong camera parameters. */ - FbxMatrix ComputeProjectionMatrix(const int pWidth, const int pHeight, const bool pVerticalFOV = true) const; - - /** Determine if the given bounding box is in the camera's view. The input points do not need to be ordered in any particular way. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoints 8 corners of the bounding box. - * \return \c true if any of the given points are in the camera's view, \c false otherwise. */ - bool IsBoundingBoxInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4 pPoints[8]) const; - - /** Determine if the given 3d point is in the camera's view. - * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. - * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. - * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. - * \param pPoint World-space point to test. - * \return \c true if the given point is in the camera's view, \c false otherwise. */ - bool IsPointInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4& pPoint) const; - - /** Compute world space to screen space transformation matrix. - * \param pPixelHeight The pixel height of the output image. - * \param pPixelWidth The pixel height of the output image. - * \param pWorldToCamera The world to camera affine transformation matrix. - * \return The world to screen space matrix, or the identity matrix on error. */ - FbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const FbxAMatrix& pWorldToCamera) const; - - /** Compute screen space to world space ray direction. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pWidth The width of the viewport in pixels. - * \param pHeight The height of the viewport in pixels. - * \param pTime The time to use to evaluate the camera's view matrix. - * \return a normalized vector corresponding to the ray direction. */ - FbxVector4 ComputeScreenToWorld(float pX, float pY, float pWidth, float pHeight, const FbxTime& pTime=FBXSDK_TIME_INFINITE) const; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Geometrical - // ----------------------------------------------------------------------- - - /** This property handles the camera's position (XYZ coordinates). - * - * To access this property do: Position.Get(). - * To set this property do: Position.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT Position; - - /** This property handles the camera's Up Vector (XYZ coordinates). - * - * To access this property do: UpVector.Get(). - * To set this property do: UpVector.Set(FbxDouble3). - * - * \remarks Default Value is (0.0, 1.0, 0.0). - */ - FbxPropertyT UpVector; - - /** This property handles the default point (XYZ coordinates) the camera is looking at. - * - * To access this property do: InterestPosition.Get(). - * To set this property do: InterestPosition.Set(FbxDouble3). - * - * \remarks During the computations of the camera position - * and orientation, this property is overridden by the - * position of a valid target in the parent node. - * - * \remarks Default Value is (0.0, 0.0, 0.0). - */ - FbxPropertyT InterestPosition; - - /** This property handles the camera roll angle in degrees. - * - * To access this property do: Roll.Get(). - * To set this property do: Roll.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT Roll; - - /** This property handles the camera optical center X, in pixels. - * It sets horizontal offset of the optical center. - * When the camera's aperture mode is set to \e eVertical, this property has no effect. - * - * To access this property do: OpticalCenterX.Get(). - * To set this property do: OpticalCenterX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterX; - - /** This property handles the camera optical center Y, in pixels. - * It sets the vertical offset of the optical center. - * When the camera's aperture mode is set to \e eHorizontal, this property has no effect. - * - * To access this property do: OpticalCenterY.Get(). - * To set this property do: OpticalCenterY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT OpticalCenterY; - - /** This property handles the RGB values of the camera's background color. - * - * To access this property do: BackgroundColor.Get(). - * To set this property do: BackgroundColor.Set(FbxDouble3). - * - * Default value is black (0, 0, 0) - */ - FbxPropertyT BackgroundColor; - - /** When modeling 3D objects, you often need to review or evaluate your models during the creation process. - * You may create a camera with turn table animation to view your models in 360 or certain degrees. - * This property handles the camera's turn table angle in degrees. - * - * To access this property do: TurnTable.Get(). - * To set this property do: TurnTable.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT TurnTable; - - /** This property handles a flag that indicates if the camera displays the - * Turn Table icon or not. - * - * To access this property do: DisplayTurnTableIcon.Get(). - * To set this property do: DisplayTurnTableIcon.Set(FbxBool). - * - * Default value is false (no display). - */ - FbxPropertyT DisplayTurnTableIcon; - - // ----------------------------------------------------------------------- - // Motion Blur - // ----------------------------------------------------------------------- - - /** This property handles a flag that indicates if the camera uses - * motion blur or not. - * - * To access this property do: UseMotionBlur.Get(). - * To set this property do: UseMotionBlur.Set(FbxBool). - * - * Default value is false (do not use motion blur). - */ - FbxPropertyT UseMotionBlur; - - /** This property handles a flag that indicates if the camera uses - * real time motion blur or not. - * - * To access this property do: UseRealTimeMotionBlur.Get(). - * To set this property do: UseRealTimeMotionBlur.Set(FbxBool). - * - * Default value is false (use real time motion blur). - */ - FbxPropertyT UseRealTimeMotionBlur; - - /** This property handles the camera's motion blur intensity (in pixels). - * - * To access this property do: MotionBlurIntensity.Get(). - * To set this property do: MotionBlurIntensity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT MotionBlurIntensity; - - // ----------------------------------------------------------------------- - // Optical - // ----------------------------------------------------------------------- - - /** This property handles the camera's aspect ratio mode. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is eWindowSize. - * - */ - FbxPropertyT AspectRatioMode; - - /** This property handles the camera's aspect width. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 320. - */ - FbxPropertyT AspectWidth; - - /** This property handles the camera's aspect height. - * - * \remarks This property is read-only. - * \remarks Please use function SetAspect() if you want to change its value. - * - * Default value is 200. - */ - FbxPropertyT AspectHeight; - - /** This property handles the pixel aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetPixelRatio() if you want to change its value. - * - * Default value is 1. - * \remarks Value range is [0.050, 20.0]. - */ - FbxPropertyT PixelAspectRatio; - - /** This property handles the aperture mode. - * - * To access this property do: ApertureMode.Get(). - * To set this property do: ApertureMode.Set(EApertureMode). - * - * Default value is eVertical. - */ - FbxPropertyT ApertureMode; - - /** This property handles the gate fit mode. - * To control the size of the resolution gate relative to the film gate. - * If the resolution gate and the film gate have the same aspect ratio, then the property has no effect. - * - * To access this property do: GateFit.Get(). - * To set this property do: GateFit.Set(EGateFit). - * - * Default value is eFitNone. - */ - FbxPropertyT GateFit; - - /** This property handles the field of view in degrees. - * - * To access this property do: FieldOfView.Get(). - * To set this property do: FieldOfView.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizontal or eVertical. - * - * \remarks Default value is 40. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfView; - - /** This property handles the X (horizontal) field of view in degrees. - * - * To access this property do: FieldOfViewX.Get(). - * To set this property do: FieldOfViewX.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewX; - - /** This property handles the Y (vertical) field of view in degrees. - * - * To access this property do: FieldOfViewY.Get(). - * To set this property do: FieldOfViewY.Set(FbxDouble). - * - * \remarks This property has meaning only when - * property ApertureMode equals eHorizAndVert. - * - * \remarks Default value is 1. - * \remarks Value range is [1.0, 179.0]. - */ - FbxPropertyT FieldOfViewY; - - /** This property handles the focal length (in millimeters). - * - * To access this property do: FocalLength.Get(). - * To set this property do: FocalLength.Set(FbxDouble). - * - * Default value is the result of ComputeFocalLength(40.0). - */ - FbxPropertyT FocalLength; - - /** This property handles the camera's format. - * - * To access this property do: CameraFormat.Get(). - * To set this property do: CameraFormat.Set(EFormat). - * - * \remarks This property is read-only. - * \remarks Please use function SetFormat() if you want to change its value. - * - * Default value is eCustomFormat. - */ - FbxPropertyT CameraFormat; - - // ----------------------------------------------------------------------- - // Frame - // ----------------------------------------------------------------------- - - /** This property stores a flag that indicates to draw a border with color around the camera's viewable area or not. - * To access this property do: UseFrameColor.Get(). - * To set this property do: UseFrameColor.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseFrameColor; - - /** This property is used to define the color of the border around the camera view. - * - * To access this property do: FrameColor.Get(). - * To set this property do: FrameColor.Set(FbxDouble3). - * - * Default value is (0.3, 0.3, 0.3). - */ - FbxPropertyT FrameColor; - - // ----------------------------------------------------------------------- - // On Screen Display - // ----------------------------------------------------------------------- - - /** This property handles the flag to show the camera's name or not. - * - * To access this property do: ShowName.Get(). - * To set this property do: ShowName.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowName; - - /** This property handles the flag to show info on moving or not. - * - * To access this property do: ShowInfoOnMoving.Get(). - * To set this property do: ShowInfoOnMoving.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowInfoOnMoving; - - /** This property handles the flag to draw floor grid or not. - * - * To access this property do: ShowGrid.Get(). - * To set this property do: ShowGrid.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowGrid; - - /** This property handles the flag to show optical center or not. - * - * To access this property do: ShowOpticalCenter.Get(). - * To set this property do: ShowOpticalCenter.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowOpticalCenter; - - /** This property handles the flag to show the camera's sight line or not. - * When the camera is revolved about the center of interest in the perspective view, - * the angle of a camera's sight line relative to a plane perpendicular to the ground plane is referred to as its azimuth; - * and the angle of a camera's sight line relative to the ground plane is referred to as its elevation; - * - * To access this property do: ShowAzimut.Get(). - * To set this property do: ShowAzimut.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowAzimut; - - /** This property handles the flag to show time code or not. - * - * To access this property do: ShowTimeCode.Get(). - * To set this property do: ShowTimeCode.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ShowTimeCode; - - /** This property handles the flag to show audio or not. - * - * To access this property do: ShowAudio.Get(). - * To set this property do: ShowAudio.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ShowAudio; - - /** This property handles audio color. - * - * To access this property do: AudioColor.Get(). - * To set this property do: AudioColor.Set(FbxDouble3). - * - * Default value is (0.0, 1.0, 0.0). - */ - FbxPropertyT AudioColor; - - // ----------------------------------------------------------------------- - // Clipping Planes - // ----------------------------------------------------------------------- - - /** This property handles the near plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetNearPlane() if you want to change its value. - * - * Default value is 10. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT NearPlane; - - /** This property handles the far plane distance. - * - * \remarks This property is read-only. - * \remarks Please use function SetFarPlane() if you want to change its value. - * - * Default value is 4000. - * \remarks Value range is [0.001, 600000.0]. - */ - FbxPropertyT FarPlane; - - /** This property indicates that the clip planes should be automatically computed or not. - * - * To access this property do: AutoComputeClipPlanes.Get(). - * To set this property do: AutoComputeClipPlanes.Set(FbxBool). - * - * When this property is set to true, the NearPlane and FarPlane values are - * ignored. Note that not all applications support this flag. - */ - FbxPropertyT AutoComputeClipPlanes; - - - // ----------------------------------------------------------------------- - // Camera Film Setting - // ----------------------------------------------------------------------- - - /** This property handles the film aperture width (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureWidth() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.8160. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmWidth; - - /** This property handles the film aperture height (in inches). - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureHeight() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 0.6120. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmHeight; - - /** This property handles the film aperture aspect ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() if you want to change its value. - * - * Default value is (FilmWidth / FilmHeight). - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmAspectRatio; - - /** This property handles the film aperture squeeze ratio. - * - * \remarks This property is read-only. - * \remarks Please use function SetSqueezeRatio() - * or SetApertureFormat() if you want to change its value. - * - * Default value is 1.0. - * \remarks Value range is [0.0001, +inf). - */ - FbxPropertyT FilmSqueezeRatio; - - /** This property handles the film aperture format. - * - * \remarks This property is read-only. - * \remarks Please use function SetApertureFormat() - * if you want to change its value. - * - * Default value is eCustomAperture. - */ - FbxPropertyT FilmFormat; - - /** This property handles the horizontal offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured in inches. - * - * To access this property do: FilmOffsetX.Get(). - * To set this property do: FilmOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetX; - - /** This property handles the vertical offset from the center of the film aperture, - * defined by the film height and film width. The offset is measured - * in inches. - * - * To access this property do: FilmOffsetY.Get(). - * To set this property do: FilmOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmOffsetY; - - /** This property handles the pre-scale value. - * The value is multiplied against the computed projection matrix. - * It is applied before the film roll. - * - * To access this property do: PreScale.Get(). - * To set this property do: PreScale.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT PreScale; - - /** This property handles the horizontal film horizontal translation. - * To access this property do: FilmTranslateX.Get(). - * To set this property do: FilmTranslateX.Set(FbxDouble). - * Default value is 0.0 - */ - FbxPropertyT FilmTranslateX; - - /** This property handles the vertical film translation. - * - * To access this property do: FilmTranslateY.Get(). - * To set this property do: FilmTranslateY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FilmTranslateY; - - /** This property handles the horizontal pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotX.Get(). - * To set this property do: FilmRollPivotX.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotX; - - /** This property handles the vertical pivot point used for rotating the film back. - * - * To access this property do: FilmRollPivotY.Get(). - * To set this property do: FilmRollPivotY.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. - */ - FbxPropertyT FilmRollPivotY; - - /** This property handles the amount of rotation around the film back. - * The roll value is specified in degrees. - * - * To access this property do: FilmRollValue.Get(). - * To set this property do: FilmRollValue.Set(FbxDouble). - * - * Default value is 0.0. - * \remarks The rotation occurs around the specified pivot point, - * this value is used to compute a film roll matrix, which is a component of the post-projection matrix. - */ - FbxPropertyT FilmRollValue; - - /** This property handles how the roll is applied with respect to the pivot value. - * eRotateFirst The film back is first rotated then translated by the pivot point value. - * eTranslateFirst The film back is first translated then rotated by the film roll value. - * - * To access this property do: FilmRollOrder.Get(). - * To set this property do: FilmRollOrder.Set(EFilmRollOrder). - * - * Default value is eRotateFirst. - */ - FbxPropertyT FilmRollOrder ; - - // ----------------------------------------------------------------------- - // Camera View Widget Option - // ----------------------------------------------------------------------- - - /** This property handles the camera's look-at flag. - * If this flag is on, the camera will look at the camera interest. - * - * To access this property do: ViewCameraToLookAt.Get(). - * To set this property do: ViewCameraToLookAt.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT ViewCameraToLookAt; - - /** This property handles to display the near and far plane or not. - * - * To access this property do: ViewFrustumNearFarPlane.Get(). - * To set this property do: ViewFrustumNearFarPlane.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ViewFrustumNearFarPlane; - - /** This property handles the back plane display mode. - * - * To access this property do: ViewFrustumBackPlaneMode.Get(). - * To set this property do: ViewFrustumBackPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumBackPlaneMode; - - /** This property handles the back plane distance. - * - * To access this property do: BackPlaneDistance.Get(). - * To set this property do: BackPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT BackPlaneDistance; - - /** This property handles the back plane distance mode. - * - * To access this property do: BackPlaneDistanceMode.Get(). - * To set this property do: BackPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT BackPlaneDistanceMode; - - /** This property handles the front plane mode. - * - * To access this property do: ViewFrustumFrontPlaneMode.Get(). - * To set this property do: ViewFrustumFrontPlaneMode.Set(EFrontBackPlaneDisplayMode). - * - * Default value is ePlanesWhenMedia. - */ - FbxPropertyT ViewFrustumFrontPlaneMode; - - /** This property handles the front plane distance. - * - * To access this property do: FrontPlaneDistance.Get(). - * To set this property do: FrontPlaneDistance.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT FrontPlaneDistance; - - /** This property handles the front plane distance mode. - * - * To access this property do: FrontPlaneDistanceMode.Get(). - * To set this property do: FrontPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). - * - * Default value is eRelativeToInterest. - */ - FbxPropertyT FrontPlaneDistanceMode; - - // ----------------------------------------------------------------------- - // Camera Lock Mode - // ----------------------------------------------------------------------- - - /** This property handles the flag to lock the camera's navigation. - * When this flag is on, the camera's view can not be changed anymore. - * To access this property do: LockMode.Get(). - * To set this property do: LockMode.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockMode; - - /** This property handles the flag to lock the camera interest's navigation. - * When this flag is one, the position of the camera interest is locked. - * To access this property do: LockInterestNavigation.Get(). - * To set this property do: LockInterestNavigation.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT LockInterestNavigation; - - // ----------------------------------------------------------------------- - // Background Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of back plane. - * - * To access this property do: BackPlateFitImage.Get(). - * To set this property do: BackPlateFitImage.Set(FbxBool). - * - * Default value is false. - * \see SetFitImage and GetFitImage. - */ - FbxPropertyT BackPlateFitImage; - - /** This property handles the crop flag of back plane. - * - * To access this property do: BackPlateCrop.Get(). - * To set this property do: BackPlateCrop.Set(FbxBool). - * - * Default value is false. - * \see SetCrop and GetCrop. - */ - FbxPropertyT BackPlateCrop; - - /** This property handles the center flag of back plane. - * - * To access this property do: BackPlateCenter.Get(). - * To set this property do: BackPlateCenter.Set(FbxBool). - * - * Default value is true. - * see SetCenter and GetCenter. - */ - FbxPropertyT BackPlateCenter; - - /** This property handles the keep ratio flag of back plane. - * - * To access this property do: BackPlateKeepRatio.Get(). - * To set this property do: BackPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - * \see SetKeepRatio and GetKeepRatio. - */ - FbxPropertyT BackPlateKeepRatio; - - /** This property handles the background alpha threshold value. - * - * To access this property do: BackgroundAlphaTreshold.Get(). - * To set this property do: BackgroundAlphaTreshold.Set(FbxDouble). - * - * Default value is 0.5. - */ - FbxPropertyT BackgroundAlphaTreshold; - - /** This property handles the back plane offset X. - * - * To access this property do: BackPlaneOffsetX.Get(). - * To set this property do: BackPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetX; - - /** This property handles the back plane offset Y. - * - * To access this property do: BackPlaneOffsetY.Get(). - * To set this property do: BackPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneOffsetY; - - /** This property handles the back plane rotation. - * - * To access this property do: BackPlaneRotation.Get(). - * To set this property do: BackPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT BackPlaneRotation; - - /** This property handles the back plane scaling X. - * - * To access this property do: BackPlaneScaleX.Get(). - * To set this property do: BackPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleX; - - /** This property handles the back plane scaling Y. - * - * To access this property do: BackPlaneScaleY.Get(). - * To set this property do: BackPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - * \remarks The application manipulating the camera has to take into consideration of - * the BackPlateKeepRatio value too. - */ - FbxPropertyT BackPlaneScaleY; - - /** This property handles the flag to show back plane or not. - * - * To access this property do: ShowBackPlate.Get(). - * To set this property do: ShowBackPlate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowBackplate; - - /** This property has the background texture connected to it. - * - * To access this property do: BackgroundTexture.Get(). - * To set this property do: BackgroundTexture.Set(). - * - * \remarks The background texture is connected as source object. - */ - FbxPropertyT BackgroundTexture; - - - // ----------------------------------------------------------------------- - // Foreground Image Display Options - // ----------------------------------------------------------------------- - - /** This property handles the fit image flag of front plate. - * - * To access this property do: FrontPlateFitImage.Get(). - * To set this property do: FrontPlateFitImage.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateFitImage; - - /** This property handles the crop flag of front plane. - * - * To access this property do: FrontPlateCrop.Get(). - * To set this property do: FrontPlateCrop.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT FrontPlateCrop; - - /** This property handles the center flag of front plane. - * - * To access this property do: FrontPlateCenter.Get(). - * To set this property do: FrontPlateCenter.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateCenter; - - /** This property handles the keep ratio flag of front plane. - * - * To access this property do: FrontPlateKeepRatio.Get(). - * To set this property do: FrontPlateKeepRatio.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT FrontPlateKeepRatio; - - - /** This property handles the flag to show front plane or not. - * - * To access this property do: ShowFrontplate.Get(). - * To set this property do: ShowFrontplate.Set(FbxBool). - * - * Default value is false. - * \remarks This replaces ForegroundTransparent. - */ - FbxPropertyT ShowFrontplate; - - /** This property handles the front plane offset X. - * - * To access this property do: FrontPlaneOffsetX.Get(). - * To set this property do: FrontPlaneOffsetX.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetX; - - /** This property handles the front plane offset Y. - * - * To access this property do: FrontPlaneOffsetY.Get(). - * To set this property do: FrontPlaneOffsetY.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneOffsetY; - - /** This property handles the front plane rotation. - * - * To access this property do: FrontPlaneRotation.Get(). - * To set this property do: FrontPlaneRotation.Set(FbxDouble). - * - * Default value is 0.0. - */ - FbxPropertyT FrontPlaneRotation; - - /** This property handles the front plane scaling X. - * - * To access this property do: FrontPlaneScaleX.Get(). - * To set this property do: FrontPlaneScaleX.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleX; - - /** This property handles the front plane scaling Y. - * - * To access this property do: FrontPlaneScaleY.Get(). - * To set this property do: FrontPlaneScaleY.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT FrontPlaneScaleY; - - /** This property has the foreground texture connected to it. - * - * To access this property do: ForegroundTexture.Get(). - * To set this property do: ForegroundTexture.Set(). - * - * \remarks The foreground texture is connected as source object. - */ - FbxPropertyT ForegroundTexture; - - /** This property handles the foreground image opacity value. - * - * To access this property do: ForegroundOpacity.Get(). - * To set this property do: ForegroundOpacity.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT ForegroundOpacity; - - // ----------------------------------------------------------------------- - // Safe Area - // ----------------------------------------------------------------------- - - /** This property handles the flag to display safe area or not. - * - * To access this property do: DisplaySafeArea.Get(). - * To set this property do: DisplaySafeArea.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeArea; - - /** This property handles the flag display safe area on render or not. - * - * To access this property do: DisplaySafeAreaOnRender.Get(). - * To set this property do: DisplaySafeAreaOnRender.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT DisplaySafeAreaOnRender; - - /** This property handles the style to display safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaDisplayStyle.Set(ESafeAreaStyle). - * - * Default value is eSafeAreaSquare. - */ - FbxPropertyT SafeAreaDisplayStyle; - - /** This property handles the display aspect ratio of safe area. - * - * To access this property do: SafeAreaDisplayStyle.Get(). - * To set this property do: SafeAreaAspectRatio.Set(FbxDouble). - * - * Default value is 1.33333333333333. - */ - FbxPropertyT SafeAreaAspectRatio; - - // ----------------------------------------------------------------------- - // 2D Magnifier - // ----------------------------------------------------------------------- - - /** This property handles the flag to use 2d magnifier zoom or not. - * The 2D Magnifier lets you perform a 2D enlargement of the scene using the - * current camera without changing any camera settings. - * - * To access this property do: Use2DMagnifierZoom.Get(). - * To set this property do: Use2DMagnifierZoom.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Use2DMagnifierZoom; - - /** This property handles the 2d magnifier zoom value. - * - * To access this property do: _2DMagnifierZoom.Get(). - * To set this property do: _2DMagnifierZoom.Set(FbxDouble). - * - * Default value is 100.0. - */ - FbxPropertyT _2DMagnifierZoom; - - /** This property handles the 2d magnifier X value. - * - * To access this property do: _2DMagnifierX.Get(). - * To set this property do: _2DMagnifierX.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierX; - - /** This property handles the 2d magnifier Y value. - * - * To access this property do: _2DMagnifierY.Get(). - * To set this property do: _2DMagnifierY.Set(FbxDouble). - * - * Default value is 50.0. - */ - FbxPropertyT _2DMagnifierY; - - // ----------------------------------------------------------------------- - // Projection Type: Ortho, Perspective - // ----------------------------------------------------------------------- - - /** This property handles the projection type. - * - * To access this property do: ProjectionType.Get(). - * To set this property do: ProjectionType.Set(EProjectionType). - * - * Default value is ePerspective. - */ - FbxPropertyT ProjectionType; - - /** This property handles the orthographic zoom value. - * - * To access this property do: OrthoZoom.Get(). - * To set this property do: OrthoZoom.Set(FbxDouble). - * - * Default value is 1.0. - */ - FbxPropertyT OrthoZoom; - - // ----------------------------------------------------------------------- - // Depth Of Field & Anti Aliasing - // ----------------------------------------------------------------------- - - /** This property handles the flag to use real time Depth of Field and Anti-Aliasing or not. - * - * To access this property do: UseRealTimeDOFAndAA.Get(). - * To set this property do: UseRealTimeDOFAndAA.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseRealTimeDOFAndAA; - - /** This property handles the flag to use depth of field or not. - * - * To access this property do: UseDepthOfField.Get(). - * To set this property do: UseDepthOfField.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseDepthOfField; - - /** This property handles the focus source. - * - * To access this property do: FocusSource.Get(). - * To set this property do: FocusSource.Set(EFocusDistanceSource). - * - * Default value is eFocusSrcCameraInterest. - * \see FocusDistance. - */ - FbxPropertyT FocusSource; - - /** This property handles the focus angle (in degrees). - * - * To access this property do: FocusAngle.Get(). - * To set this property do: FocusAngle.Set(FbxDouble). - * - * Default value is 3.5. - */ - FbxPropertyT FocusAngle; - - /** This property handles the focus distance. - * Focus distance is the distance between the camera and the object on which the camera is focused. - * There are two possible sources for this distance. - * \see EFocusDistanceSource - * - * To access this property do: FocusDistance.Get(). - * To set this property do: FocusDistance.Set(FbxDouble). - * - * Default value is 200.0. - */ - FbxPropertyT FocusDistance; - - /** This property handles the flag to use anti aliasing or not. - * - * To access this property do: UseAntialiasing.Get(). - * To set this property do: UseAntialiasing.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAntialiasing; - - /** This property handles the anti aliasing intensity. - * - * To access this property do: AntialiasingIntensity.Get(). - * To set this property do: AntialiasingIntensity.Set(FbxDouble). - * - * Default value is 0.77777. - */ - FbxPropertyT AntialiasingIntensity; - - /** This property handles the anti aliasing method. - * - * To access this property do: AntialiasingMethod.Get(). - * To set this property do: AntialiasingMethod.Set(EAntialiasingMethod). - * - * Default value is eAAOversampling. - */ - FbxPropertyT AntialiasingMethod; - - // ----------------------------------------------------------------------- - // Accumulation Buffer - // ----------------------------------------------------------------------- - - /** This property handles the flag to use accumulation buffer or not. - * - * To access this property do: UseAccumulationBuffer.Get(). - * To set this property do: UseAccumulationBuffer.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT UseAccumulationBuffer; - - /** This property handles the frame sampling count. - * - * To access this property do: FrameSamplingCount.Get(). - * To set this property do: FrameSamplingCount.Set(FbxInt). - * - * Default value is 7. - */ - FbxPropertyT FrameSamplingCount; - - /** This property handles the frame sampling type. - * - * To access this property do: FrameSamplingType.Get(). - * To set this property do: FrameSamplingType.Set(ESamplingType). - * - * Default value is eSamplingStochastic. - */ - FbxPropertyT FrameSamplingType; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; - -private: - double ComputePixelRatio(FbxUInt pWidth, FbxUInt pHeight, double pScreenRatio = 1.3333333333); - - // Background Properties - FbxString mBackgroundMediaName; - FbxString mBackgroundFileName; - - // Foreground Properties - FbxString mForegroundMediaName; - FbxString mForegroundFileName; - - FbxVector4 mLastUp; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCamera::EAntialiasingMethod&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EApertureMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EAspectRatioMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDisplayMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDistanceMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EPlateDrawingMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFocusDistanceSource&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFormat&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EGateFit&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EProjectionType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ERenderOptionsUsageTime&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESafeAreaStyle&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::ESamplingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxCamera::EFilmRollOrder&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h deleted file mode 100755 index f6760fd..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcamerastereo.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ - -#include - -#include - -#include - -/** This node attribute contains methods for accessing the properties of a stereo camera. - * \nosubgrouping - * Generally, a set of stereoRig contains the center camera, the left camera and the right camera. - * FbxCameraStereo is used to represent the center camera. The left and right camera could be FbxCamera. - * FbxCameraStereo contains stereo properties. - * The left and right camera can also be get and set via related methods in FbxCameraStereo class. - * \see FbxCamera and FbxCameraSwitcher. - */ -class FBXSDK_DLL FbxCameraStereo : public FbxCamera -{ - FBXSDK_OBJECT_DECLARE(FbxCameraStereo, FbxCamera); - -public: - //! Return the type of node attribute which is EType::eCameraStereo. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the stereo camera to default values. - void Reset(); - - /** Types of Stereo camera. - */ - enum EStereoType - { - eNone, //!< Disable the stereo effect.(Default value) - eConverged, //!< Computes the zero parallax plane by toeing in the cameras. - eOffAxis, //!< Computes the convergence plane by shifting the frustum using camera film back. - eParallel //!< A parallel camera setup where there is effectively no convergence plane. - }; - - /** Get the left camera which connect to property LeftCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the left camera. - */ - FbxCamera* GetLeftCamera() const; - - /** Get the right camera which connect to property RightCamera. - * \return A pointer to FbxCamera. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to get the right camera. - */ - FbxCamera* GetRightCamera() const; - - /** Set the left camera, connect property LeftCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the left camera. - */ - bool SetLeftCamera(FbxCamera* pCamera); - - /** Set the right camera, connect property RightCamera to pCamera. - * \param pCamera The camera to set. - * \return \c true if it's successful, \c false otherwise. - * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. - * Use this method to set the right camera. - */ - bool SetRightCamera(FbxCamera* pCamera); - - /** Get the local transformation matrix of left camera. - * \return The local transformation matrix of left camera. - * \remarks Use this method to reevaluate the local transformation of left camera. - */ - FbxAMatrix GetLeftCameraLocalMatrix() const; - - /** Get the global matrix of left camera. - * \return The global transformation matrix of left camera. - * \remarks Use this method to reevaluate the global transformation of left camera. - */ - FbxAMatrix GetLeftCameraGlobalMatrix() const; - - /** Get the local transformation matrix of right camera. - * \return The local transformation matrix of right camera.. - * \remarks Use this method to reevaluate the local transformation of right camera. - */ - FbxAMatrix GetRightCameraLocalMatrix() const; - - /** Get the global transformation matrix of right camera. - * \return The global transformation matrix of right camera. - * \remarks Use this method to reevaluate the global transformation of right camera. - */ - FbxAMatrix GetRightCameraGlobalMatrix() const; - - /** Reevaluate the FilmOffsetX of left camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks This method does not set the FilmOffsetX of left camera. - */ - double ReevaluateLeftCameraFilmOffsetX() const; - - /** Reevaluate the FilmOffsetX of right camera. - * It's computed through stereo camera properties. - * \return Current FilmOffsetX value. - * \remarks this method does not set the FilmOffsetX of right camera - */ - double ReevaluateRightCameraFilmOffsetX() const; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - // ----------------------------------------------------------------------- - // Stereo and Stereo Adjustments - // ----------------------------------------------------------------------- - - /** This property handles the types of Stereo camera. - * - * To access this property do: Stereo.Get(). - * To set this property do: Stereo.Set(EStereoType). - * - * \remarks Default Value is eNone. - */ - FbxPropertyT Stereo; - - /** This property handles the distance between left and right cameras. - * - * To access this property do: InteraxialSeparation.Get(). - * To set this property do: InteraxialSeparation.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT InteraxialSeparation; - - /** This property handles the distance on the camera view axis where the zero parallax plane occurs. - * - * To access this property do: ZeroParallax.Get(). - * To set this property do: ZeroParallax.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT ZeroParallax; - - /** This property is to offset the computed toe-in effect when it's in Converged mode. - * - * To access this property do: ToeInAdjust.Get(). - * To set this property do: ToeInAdjust.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - * This value is specified in degrees and acts as an offset to the computed toe-in. - * \see EStereoType. - */ - FbxPropertyT ToeInAdjust; - - /** This property handles the film offset for the right camera. - * - * To access this property do: FilmOffsetRightCam.Get(). - * To set this property do: FilmOffsetRightCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetRightCam; - - /** This property handles the film offset for the left camera. - * - * To access this property do: FilmOffsetLeftCam.Get(). - * To set this property do: FilmOffsetLeftCam.Set(FbxDouble). - * - * \remarks Default Value is 0.0. - */ - FbxPropertyT FilmOffsetLeftCam; - - /** This property has the right camera connected to it. - * - * To access this property do: GetRightCamera(). - * To set this property do: SetRightCamera(FbxCamera* pCamera). - * - * \remarks The right camera is connected as source object. - */ - FbxPropertyT RightCamera; - - /** This property has the left camera connected to it. - * - * To access this property do: GetLeftCamera(). - * To set this property do: SetLeftCamera(FbxCamera* pCamera). - * - * \remarks The left camera is connected as source object. - */ - FbxPropertyT LeftCamera; - - /** This property handles the precomp file name - * - * To access this property do: PrecompFileName.Get(). - * To set this property do: PrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT PrecompFileName; - - /** This property handles the relative precomp file name - * - * To access this property do: RelativePrecompFileName.Get(). - * To set this property do: RelativePrecompFileName.Set(FbxString). - * - * Default value is "" - */ - FbxPropertyT RelativePrecompFileName; - - /** connect left and right camera property to stereo camera. - * \return true if it's successful, otherwise return false. - * \remarks It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - * FilmHeight, FilmSqueezeRatio] to stereo camera. - * During FBX SDK reevaluating, if ConnectProperties is called, - * to get the newest FocalLength property of left camera, please use lLeft_Camera->FocalLength.GetSrcProperty(); - */ - bool ConnectProperties(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxCameraStereo::EStereoType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h deleted file mode 100755 index 4eeedd5..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcameraswitcher.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ - -#include - -#include -#include - -#include - -/** This node attribute contains methods for accessing the properties of a camera switcher. - * The camera switcher is a concept of Motion Builder. - * The camera switcher lets you switch between the custom cameras placed in your scene so you can create an animation using multiple camera angles. - * Custom cameras are cameras which created by users, while the default cameras are top, bottom, left, right, front, back and perspective camera. - * The Camera switcher contains the custom cameras you have created. If you have no custom cameras created in your scene, the Camera switcher is empty. - * Please read Motion Builder documentation for more details. - * \nosubgrouping - * \see FbxCamera and FbxCameraStereo. - */ -class FBXSDK_DLL FbxCameraSwitcher : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxCameraSwitcher,FbxNodeAttribute); - - public: - /** - * \name Properties - */ - //@{ - /** This property handles the index of camera. - * - * Default value is 1. - */ - FbxPropertyT CameraIndex; - //@} - - //! Return the type of node attribute which is EType::eCameraSwitcher. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Default Animation Values. - * These functions provides direct access to default animation values specific to a camera switcher. The default animation - * values are found in the default take node of the associated node. These functions only work if the camera switcher has been - * associated with a node. - * - * Camera indices start at 1. Out of range indices are clamped between 1 and the number of cameras in the scene. The index of a - * camera refers to its order of appearance when searching the node tree depth first. - */ - //@{ - - /** Get default camera index. - * \return Camera index. The return value is an integer between 1 and the number - * of cameras in the scene, or 0 if there are no default camera set in the camera switcher. - */ - int GetDefaultCameraIndex() const; - - /** Set default camera index. - * \param pIndex The index of the camera to set as default. This parameter has an integer - * scale from 1 to the number of cameras in the scene. Its default value is 1 if - * there is at least one camera in the camera switcher, 0 if there are none. - * No validation checks are made. - */ - void SetDefaultCameraIndex(int pIndex); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - -public: - void AddCameraName(const char* pCameraName); - char* GetCameraName(FbxUInt pIndex) const; - FbxUInt GetCameraNameCount() const; - void ClearCameraNames(); - -protected: - FbxArray mCameraNameList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h deleted file mode 100755 index d540bb2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxcluster.h +++ /dev/null @@ -1,295 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxcluster.h -#ifndef _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ -#define _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ - -#include - -#include - -#include - -/** Class for clusters (links). - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * - * A cluster is usually part of a skin (\see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxCluster : public FbxSubDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxCluster,FbxSubDeformer); - -public: - /** - * \name General Functions - */ - //@{ - /** Get the type of the sub deformer. - * \return SubDeformer type identifier: eCluster. - */ - EType GetSubDeformerType() const override {return eCluster; }; - - /** Restore the cluster to its initial state. - * Calling this function will clear the following: - * \li Pointer to linked node. - * \li Pointer to associate model. - * \li Control point indices and weights. - * \li Transformation matrices. - */ - void Reset(); - //@} - /** - * \name Link Mode, Link Node, Associate Model - */ - //@{ - /** Link modes. - * The link mode sets how the link influences the position of a control - * point and the relationship between the weights assigned to a control - * point. The weights assigned to a control point are distributed among - * the set of links associated with an instance of class FbxGeometry. - */ - enum ELinkMode - { - eNormalize, /*!< In mode eNormalize, the sum of the weights assigned to a control point - is normalized to 1.0. Setting the associate model in this mode is not - relevant. The influence of the link is a function of the displacement of the - link node relative to the node containing the control points.*/ - eAdditive, - /*!< In mode eAdditive, the sum of the weights assigned to a control point - is kept as is. It is the only mode where setting the associate model is - relevant. The influence of the link is a function of the displacement of - the link node relative to the node containing the control points or, - if set, the associate model. The weight gives the proportional displacement - of a control point. For example, if the weight of a link over a control - point is set to 2.0, a displacement of the link node of 1 unit in the X - direction relative to the node containing the control points or, if set, - the associate model, triggers a displacement of the control point of 2 - units in the same direction.*/ - eTotalOne - /*!< Mode eTotalOne is identical to mode eNormalize except that the sum of the - weights assigned to a control point is not normalized and must equal 1.0.*/ - }; - - /** Set the link mode. - * \param pMode The link mode. - * \remarks All the links associated to an instance of class FbxGeometry must have the same link mode. - */ - void SetLinkMode(ELinkMode pMode); - - /** Get the link mode. - * \return The link mode. - */ - ELinkMode GetLinkMode() const; - - /** Set the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \param pNode The link node. - */ - void SetLink(const FbxNode* pNode); - - /** Get the link node. The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - FbxNode* GetLink(); - - /** Get the link node (as const). The link node is the node which influences the displacement - * of the control points. Typically, the link node is the bone a skin is attached to. - * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. - */ - const FbxNode* GetLink() const; - - /** Set the associate model. - * The associate model is optional. It is only relevant if the link mode - * is of type eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative to the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \param pNode The associate model node. - */ - void SetAssociateModel(FbxNode* pNode); - - /** Get the associate model. - * The associate model is optional. It is only relevant if the link mode is of type - * eAdditive. If set, the associate model is the node used as a reference to - * measure the relative displacement of the link node. Otherwise, the displacement of - * the link node is measured relative the the node containing the control points. - * Typically, the associate model node is the parent of the bone a skin is attached to. - * \return The associate model node or \c NULL if FbxCluster::SetAssociateModel() has not been called before. - */ - FbxNode* GetAssociateModel() const; - //@} - /** - * \name Control Points - * A link has an array of indices to control points and associated weights. - * The indices refer to the control points in the instance of class FbxGeometry - * owning the link. The weights are the influence of the link node over the - * displacement of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and weights. - * \param pIndex The index of the control point. - * \param pWeight The link weight for this control point. - */ - void AddControlPointIndex(int pIndex, double pWeight); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point weights. - * \return Pointer to the array of control point weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointWeights() const; - - //@} - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - /** - * \name Transformation matrices - * A link has three transformation matrices: - * \li Transform refers to the global initial transform of the geometry node that contains the link node. - * \li TransformLink refers to global initial transform of the link node. - * \li TransformAssociateModel refers to the global initial transform of the associate model. - * - * For example, given a mesh binding with several bones(links), Transform is the global transform - * of the mesh at the binding moment, TransformLink is the global transform of the bone(link) - * at the binding moment, TransformAssociateModel is the global transform of the associate model - * at the binding moment. - */ - //@{ - - /** Set matrix associated with the node containing the link. - * \param pMatrix Transformation matrix. - */ - void SetTransformMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the node containing the link. - * \param pMatrix Transformation matrix to be filled with appropriate data. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the link node. - * \param pMatrix Transformation matrix. - */ - void SetTransformLinkMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the link node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformLinkMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the associate model. - * \param pMatrix Transformation matrix. - */ - void SetTransformAssociateModelMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the associate model. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformAssociateModelMatrix(FbxAMatrix& pMatrix) const; - - /** Set matrix associated with the parent node. - * \param pMatrix Transformation matrix. - */ - void SetTransformParentMatrix(const FbxAMatrix& pMatrix); - - /** Get matrix associated with the parent node. - * \param pMatrix Transformation matrix to be filled with appropriate data.. - * \return Input parameter matrix filled with appropriate data. - */ - FbxAMatrix& GetTransformParentMatrix(FbxAMatrix& pMatrix) const; - - /** Get the Transform Parent set flag value. - * \return \c true if transform matrix associated with parent node is set. - */ - bool IsTransformParentSet() const { return mIsTransformParentSet; } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void SetUserData(const char* pUserDataID, const char* pUserData); - const char* GetUserDataID () const; - const char* GetUserData () const; - const char* GetUserData (const char* pUserDataID) const; - - // For pre version 6 support - FbxString mBeforeVersion6LinkName; - FbxString mBeforeVersion6AssociateModelName; - - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - FbxStringList GetTypeFlags() const override; - - ELinkMode mLinkMode; - FbxString mUserDataID; - FbxString mUserData; - FbxArray mControlPointIndices; - FbxArray mControlPointWeights; - FbxMatrix mTransform; - FbxMatrix mTransformLink; - FbxMatrix mTransformAssociate; - FbxMatrix mTransformParent; - bool mIsTransformParentSet; - - FbxPropertyT SrcModelReference; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h deleted file mode 100755 index 022ff4c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxdeformer.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ - -#include - -#include -#include - -/** Base class for skin deformer (FbxSkin) and vertex cache deformer (FbxVertexCacheDeformer). - * The corresponding deformer types are FbxDeformer::eSkin and FbxDeformer::eVertexCache. - * A deformer can be binded to a geometry (FbxGeometry) to act on its shape. Typically, - * some objects under the deformer are animated, and via the deformer, the geometry - * is animated too. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * A vertex cache deformer contains a cache (FbxCache). The cache contains animation - * information for every control point of the geometry. - * - *\nosubgrouping - */ -class FBXSDK_DLL FbxDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxDeformer, FbxObject); - -public: - /** - * \name Multi-Layer Flag - * This flag is available for backward compatibility with older - * version of FBX files and should not be used anymore. All the animation layering - * system has been moved to the FbxAnimLayer and FbxAnimStack classes. - */ - //@{ - /** Set multi-layer state flag. - * \param pMultiLayer Set to \c true to enable multi-layering. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multi-layer state. - * \return The current state of the multi-layer flag. - */ - bool GetMultiLayer() const; - //@} - - /** - * \name Deformer types - */ - //@{ - /** \enum EDeformerType Deformer types. - */ - enum EDeformerType - { - eUnknown, //!< Unknown deformer type - eSkin, //!< Type FbxSkin - eBlendShape, //!< Type FbxBlendShape - eVertexCache //!< Type FbxVertexCacheDeformer - }; - - /** Get the deformer type. - * \return Deformer type identifier. Default value is eUnknown. - */ - virtual EDeformerType GetDeformerType() const { return eUnknown; } - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h deleted file mode 100755 index 5125ed8..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgenericnode.h +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgenericnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ - -#include -#include - -#include - -/** Empty node containing properties. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGenericNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGenericNode, FbxObject); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h deleted file mode 100755 index ccff701..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometry.h +++ /dev/null @@ -1,318 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_H_ -#define _FBXSDK_SCENE_GEOMETRY_H_ - -#include - -#include -#include -#include -#include -#include - -#include - -class FbxStatus; -class FbxGeometryWeightedMap; - -/** The base class of geometric objects that support control point deformations (e.g. FbxMesh, FbxNurbs, -* and FbxPatch). The FbxGeometry provides support for the following kinds of deformations. -* -* \li Skin deformation deformers -* \li Vertex cache deformers -* \li Geometry weighted maps -* \li Shapes -* -* Most of the methods of FbxGeometry are wrappers to simplify the access/manipulation of the connections -* to the deformers. For example, calling the GetDeformerCount() method is the same -* thing as calling: -* -* \code -* geometry.GetSrcObjectCount(FbxDeformer::ClassId) -* \endcode -*/ -class FBXSDK_DLL FbxGeometry : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxGeometry,FbxGeometryBase); - -public: - /** Returns the node attribute type. - * This method is derived in the more high level classes (FbxMesh, FbxNurbs, etc...) and returns the - * actual type of the geometry object. - * - * \return \e eUnknown - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Deformer Management - */ - //@{ - - /** Adds a deformer to this geometry (as mentioned in the description of this class, adding a deformer is a synonym - * for "connect a deformer"). - * \param pDeformer Pointer to the deformer to be added. - * \return Index of the added deformer. - */ - int AddDeformer(FbxDeformer* pDeformer); - - /** Remove a deformer. - * \param pIndex Index of deformer to remove. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the removed deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* RemoveDeformer(int pIndex, FbxStatus* pStatus = NULL); - - /** Returns the number of deformers. - * \return The number of deformers that are connected to this geometry. - */ - int GetDeformerCount() const; - - /** Returns the deformer at the specified index. - * \param pIndex The specified deformer index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the number of deformers of a specified type. - * \param pType The specified deformer type. - * \return The number of deformers of the specified type. - */ - int GetDeformerCount(FbxDeformer::EDeformerType pType) const; - - /** Returns the deformer of a specified type at the specified index. - * \param pIndex The specified deformer index. - * \param pType The specified deformer type. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the deformer (or \c NULL if pIndex is out of range). - */ - FbxDeformer* GetDeformer(int pIndex, FbxDeformer::EDeformerType pType, FbxStatus* pStatus = NULL) const; - - //@} - - /** - * \name Geometry Weighted Maps Management - */ - //@{ - - /** Returns the source geometry weighted map that is connected to this geometry. - * \return Pointer to the source geometry weighted map that is connected to this geometry if any. - */ - FbxGeometryWeightedMap* GetSourceGeometryWeightedMap(); - - /** Returns the number of destination geometry weighted map(s) that are connected to this geometry. - * \return The number of destination geometry weighted map(s) that are connected to this geometry. - */ - int GetDestinationGeometryWeightedMapCount() const; - - /** Returns the destination geometry weighted map at a specified index. - * \param pIndex The specified index. - * \return Pointer to the destination geometry weighted map at the specified index (if any). - */ - FbxGeometryWeightedMap* GetDestinationGeometryWeightedMap(int pIndex); - - //@} - - /** - * \name Shape Management - */ - //@{ - - /** Add a shape to the specified blend shape deformer and blend shape channel of this geometry. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShape Pointer to the shape object to be added. - * \param pPercent The full deform percentage of this shape. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if success, \c false otherwise. - */ - bool AddShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxShape* pShape, double pPercent = 100, FbxStatus* pStatus = NULL); - - /** Removes all the shapes without destroying them. - * If shapes aren't explicitly destroyed before calling this function, they will be - * destroyed along with the SDK manager that created them. - */ - void ClearShape(); - - /** Returns the number of shapes. - * \return The number of shapes that have been added to this geometry. - */ - int GetShapeCount() const; - - /** Returns the number of shapes. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pStatus The FbxStatus object to hold error codes. - * \return The number of shapes that have been added to this blend shape channel of this blend shape deformer. - */ - int GetShapeCount(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxStatus* pStatus = NULL) const; - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL); - - /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pShapeIndex The specified shape index. - * \param pStatus The FbxStatus object to hold error codes. - * \return Pointer to the shape (or \c NULL if pIndex is out of range). - */ - const FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL) const; - - /** Get the shape animation curve. - * The shape channel is an animatable property with a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pLayer The animation layer from which we want to get the requested animation curve. - * \param pCreateAsNeeded If \c true, creates the animation curve if it is not already present. - * \param pStatus The FbxStatus object to hold error codes. - * \return Animation curve (or NULL if an error occurred). - * \remarks If pLayer is left at NULL, the method will use the first layer of the Animation stack. - */ - FbxAnimCurve* GetShapeChannel(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxAnimLayer* pLayer, bool pCreateAsNeeded = false, FbxStatus* pStatus = NULL); - //@} - - /** NURBS and Patches surface modes. - * This information is never directly used inside the FBX SDK. Applications can use these values if they wish to - * carry the "rendering" details of the NURBS and Patches. The FBX SDK guarantee that the value (member of the FbxNurbs, - * FbxNurbsSurface and FbxPatch classes) is stored to FBX files and retrieved from them. - * \remarks The enum has been defined in this class to avoid symbols duplication. - */ - enum ESurfaceMode - { - eRaw, //! Raw. - eLowNoNormals, //! Low and no normals. - eLow, //! Low. - eHighNoNormals, //! High and no normals. - eHigh //! High. - }; - - /** - * \name Pivot Management - * The geometry pivot is used to specify additional translation, rotation, - * and scaling information applied to all control points when the model is - * exported. - */ - //@{ - - /** Returns the pivot matrix. - * \param pXMatrix Placeholder for the returned matrix. - * \return Reference to the passed argument. - */ - FbxAMatrix& GetPivot(FbxAMatrix& pXMatrix) const; - - /** Sets the pivot matrix. - * \param pXMatrix The transformation matrix that is assigned to the pivot matrix. - */ - void SetPivot(FbxAMatrix& pXMatrix); - - /** Applies the pivot matrix to all vertices/normals of the geometry. - */ - void ApplyPivot(); - - //@} - - /** - * \name Default Animation Values - * These functions provides direct access to default animation values that are specific to a geometry. - * These functions only work if the geometry has been associated with a node. - */ - //@{ - - /** Sets the default deformation for a specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pIndex is out of range. - */ - void SetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, double pPercent); - - /** Sets the default deformation for a specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). - * \remarks This function has no effect if pShapeName is invalid. - */ - void SetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel, double pPercent); - - /** Returns the default deformation value for the specified shape. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeIndex The blend shape deformer index. - * \param pBlendShapeChannelIndex The blend shape channel index. - * \return The deformation value for the specified shape, or 0 if pIndex is out of range. - */ - double GetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex) const; - - /** Returns the default deformation value for the specified channel. - * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). - * The default value is 0. - * \param pBlendShapeChannel The blend shape channel. - * \return The deformation value for the specified shape, or 0 if pShapeName is invalid. - */ - double GetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel) const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - - void CleanShapeChannels(FbxAnimLayer* pAnimLayer); - void CleanShapeChannel(FbxAnimLayer* pAnimLayer, int pShapeIndex); - void CreateShapeChannelProperties(FbxString& pShapeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName); - void ConvertShapeNamesToV5Format(FbxString pTakeNodeName, int pShapeIndex); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName); - void RevertShapeNamesToV6Format(FbxString pTakeNodeName, int pShapeIndex); - void ClearTemporaryShapeNames(); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void SetDocument(FbxDocument* pDocument) override; - - FbxString CreateShapeChannelName(int pShapeIndex); - FbxString CreateShapeChannelName(FbxString pShapeName); - - void CopyDeformers(const FbxGeometry* pGeometry); - void CopyPivot(const FbxGeometry* pSource); - - // Used during FBX v5 file store - FbxArray mShapeNameArrayV6; - FbxArray mShapeNameArrayV5; - FbxArray mShapeChannelNameArrayV5; - - FbxAMatrix* mPivot; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h deleted file mode 100755 index 7f2d145..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h +++ /dev/null @@ -1,669 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometrybase.h -#ifndef _FBXSDK_SCENE_GEOMETRY_BASE_H_ -#define _FBXSDK_SCENE_GEOMETRY_BASE_H_ - -#include - -#include -#include -#include - -#include - -class FbxStatus; - -/** This class is the base class for geometric object such as meshes, NURBS and patches. - * Use the FbxGeometryBase class to manage the control points, normals, binormals and tangents of the - * geometries. - * The meaning of "control point" is dependent of the geometry object type. For meshes, the "control point" - * is the physical 3D coordinate of polygon vertices while, for NURBS, it is the the actual control point on the curves - * defining the surface. This class also allow you to define normals, binormals and tangents regardless of the type of - * geometric object. However, in reality, applying such definitions to NURBS and patches does not make much sense - * since these definitions would only exist at the control points and inbetween them, the interpolation would certainly not - * follow the curve. - * - * Geometric objects are using a system of layered data to extend their construction definition. For example, a typical - * layer for a Mesh contains Normals, UVs and Materials but client applications can decide to define another set of - * Normals and UVs and swap them during the rendering phase to produce some different results. The combinations are limitless - * and it would be impossible to discuss them all. This example has been presented to show one possible context where - * layers can be used. More information can be found in the FbxLayerContainer and FbxLayer classes description. - * \nosubgrouping - */ -class FBXSDK_DLL FbxGeometryBase : public FbxLayerContainer -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryBase, FbxLayerContainer); - -public: - /** - * \name Control Points, Normals, Binormals and Tangent Management. - */ - //@{ - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will be cleared. - */ - virtual void InitControlPoints(int pCount); - - /** Allocates memory space for the array of normals. - * \param pCount The desired size for the normal array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * \remarks The normals initialized with this function will have the ReferenceMode set to eDirect. Also, - * the array will always be defined on layer 0. - */ - void InitNormals(int pCount = 0 ); - - /** Allocates memory space for the array of normals cloned from the pSrc. - * \param pSrc The source geometry from which the normals information is cloned. - * \remarks This function must be called with the argument, otherwise it does not do anything. Also, - * it will only process the normals array defined on layer 0 of the pSrc. - */ - void InitNormals(FbxGeometryBase* pSrc); - - /** Allocates memory space for the array of tangents on specified layer. - * \param pCount The desired size of the tangent array. If pCount is specified, the array will be the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of tangents. - * \param pName The specified name for the allocated tangents array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The tangents initialized with this function will have the reference mode set to eDirect. - */ - void InitTangents(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of tangents cloned from the pSrc on the specified layer. - * \param pSrc The source geometry from which the tangents information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of tangents from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitTangents(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Allocates memory space for the array of binormals. - * \param pCount The desired size of the binormal array. If pCount is specified, the array will have the same size as pCount. - * If pCount is not specified, the array will be the same length as the array of control points. - * \param pLayerIndex The specified layer index to allocate memory space for the array of binormals. - * \param pName The specified name for the allocated binormals array. - * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). - * The binormals initialized with this function will have the reference mode set to eDirect. - */ - void InitBinormals(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); - - /** Allocates memory space for the array of binormals cloned from the pSrc. - * \param pSrc The source geometry from which the binormals information is cloned. - * \param pLayerIndex The specified layer index to allocate memory space for cloned array of binormals from the pSrc. - * \remarks This function must be called with the argument, otherwise it does not do anything. - */ - void InitBinormals(FbxGeometryBase* pSrc, const int pLayerIndex = 0); - - /** Sets the control point and the normal values at the specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the control point/normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting if it already exist. NOTE: This feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the arrays (control points and normals) are not big enough to store the values at the - * specified index, they will be automatically resized to accommodate the new entries. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false); - - - /** Sets the control point at a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index of the control point. - * - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex); - - /** Gets the control point at the specified index. - * \param pIndex The specified index of the control point. - * \return The value of the specific control point. - * - * \remarks If index is out of range, FbxVector4(0, 0, 0) is returned. - */ - virtual FbxVector4 GetControlPointAt(int pIndex) const; - - /** Sets the control point normal value at the specified index. - * \param pNormal The value of the normal. - * \param pIndex The specified index of the normal. - * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the - * existing array to avoid inserting it if it already exist. NOTE: this feature uses a linear - * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains - * a huge number of elements. - * \remarks If the array is not big enough to store the value at the specified index, it will be - * automatically resized to accommodate the new entry. - */ - virtual void SetControlPointNormalAt(const FbxVector4 &pNormal, int pIndex, bool pI2DSearch=false); - - /** Returns the number of control points. - * \return The number of control points allocated in the geometry. - */ - virtual int GetControlPointsCount() const; - - - /** Returns a pointer to the array of control points. - * \param pStatus Not used in the implementation of this class. - * \return Pointer to the array of control points, or \c NULL if the array has not been allocated. - * \remarks Use the function FbxGeometryBase::InitControlPoints() to allocate the array. - */ - virtual FbxVector4* GetControlPoints(FbxStatus* pStatus=NULL) const; - - /** Allocates memory space for the array of control points. - * \param pCount The number of control points. - * \remarks Any previously allocated array of control points will NOT be cleared. - */ - virtual void SetControlPointCount(int pCount); - - //@} - - - /** - * \name Public and fast access Properties - */ - //@{ - //! Control the geometry render state. Geometry can still cast shadows even if this is turned off. - FbxPropertyT PrimaryVisibility; - - //! If true, the geometry will produce shadows. - FbxPropertyT CastShadow; - - //! If true, the geometry will receive shadows. - FbxPropertyT ReceiveShadow; - - //! The minimum value of the control points bounding box. - FbxPropertyT BBoxMin; - - //! The maximum value of the control points bounding box. - FbxPropertyT BBoxMax; - - /** Computes the control points Bounding box. - */ - void ComputeBBox(); - //@} - - - /** - * \name Geometry Element Management. - * A FbxGeometryElement describes how the geometry element (normals, UVs and etc.) is mapped to a geometry - * surface and how the mapping information is arranged in memory. - * FbxGeometryElement is exactly the same as FbxLayerElement but does not expose the geometry's layer information. - * Use the geometry element classes to decompose the geometry without dealing with layers. - */ - //@{ - - /** Creates a normal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementNormal* CreateElementNormal(); - - /** Remove the normal geometry element from this geometry. - * \param pElementNormal A pointer to the normal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementNormal(FbxGeometryElementNormal* pElementNormal); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementNormal* GetElementNormal(int pIndex = 0); - - /** Returns this geometry's normal element. - * \param pIndex The normal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementNormal* GetElementNormal(int pIndex = 0) const; - - /** Get the number of this geometry's normal geometry element. - * \return Total number of normal geometry elements for this geometry. - */ - int GetElementNormalCount() const; - - /** Creates a binormal geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementBinormal* CreateElementBinormal(); - - /** Remove the binormal geometry element from this geometry. - * \param pElementBinormal A pointer to the binormal element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementBinormal(FbxGeometryElementBinormal* pElementBinormal); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0); - - /** Returns this geometry's binormal element. - * \param pIndex The binormal geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0) const; - - /** Get the number of this geometry's binormal geometry element. - * \return Total number of binormal geometry elements for this geometry. - */ - int GetElementBinormalCount() const; - - /** Creates a tangent geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementTangent* CreateElementTangent(); - - /** Remove the tangent geometry element from this geometry. - * \param pElementTangent A pointer to the tangent element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementTangent(FbxGeometryElementTangent* pElementTangent); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementTangent* GetElementTangent(int pIndex = 0); - - /** Returns this geometry's tangent element. - * \param pIndex The tangent geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementTangent* GetElementTangent(int pIndex = 0) const; - - /** Get the number of this geometry's tangent geometry element. - * \return Total number of tangent geometry elements for this geometry. - */ - int GetElementTangentCount() const; - - /** Creates a material geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementMaterial* CreateElementMaterial(); - - /** Remove the material geometry element from this geometry. - * \param pElementMaterial A pointer to the material element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementMaterial(FbxGeometryElementMaterial* pElementMaterial); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0); - - /** Returns this geometry's material element. - * \param pIndex The material geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0) const; - - /** Get the number of this geometry's material geometry element. - * \return Total number of material geometry elements for this geometry. - */ - int GetElementMaterialCount() const; - - /** Creates a polygon group geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementPolygonGroup* CreateElementPolygonGroup(); - - /** Remove the polygon group geometry element from this geometry. - * \param pElementPolygonGroup A pointer to the polygon group element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementPolygonGroup(FbxGeometryElementPolygonGroup* pElementPolygonGroup); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0); - - /** Returns this geometry's polygon group element. - * \param pIndex The polygon group geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0) const; - - /** Get the number of this geometry's polygon group geometry element. - * \return Total number of polygon group geometry elements for this geometry. - */ - int GetElementPolygonGroupCount() const; - - /** Creates a vertex color geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVertexColor* CreateElementVertexColor(); - - /** Remove the vertex color geometry element from this geometry. - * \param pElementVertexColor A pointer to the vertex color element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexColor(FbxGeometryElementVertexColor* pElementVertexColor); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0); - - /** Returns this geometry's vertex color element. - * \param pIndex The vertex color geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0) const; - - /** Get the number of this geometry's vertex color geometry element. - * \return Total number of vertex color geometry elements for this geometry. - */ - int GetElementVertexColorCount() const; - - /** Creates a smoothing geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementSmoothing* CreateElementSmoothing(); - - /** Remove the smoothing geometry element from this geometry. - * \param pElementSmoothing A pointer to the smoothing element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementSmoothing(FbxGeometryElementSmoothing* pElementSmoothing); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0); - - /** Returns this geometry's smoothing element. - * \param pIndex The smoothing geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0) const; - - /** Get the number of this geometry's smoothing geometry element. - * \return Total number of smoothing geometry elements for this geometry. - */ - int GetElementSmoothingCount() const; - - /** Creates a vertex crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementVertexCrease(); - - /** Remove the vertex crease geometry element from this geometry. - * \param pElementCrease A pointer to the vertex crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVertexCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0); - - /** Returns this geometry's vertex crease element. - * \param pIndex The vertex crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0) const; - - /** Get the number of this geometry's vertex crease geometry element. - * \return Total number of vertex crease geometry elements for this geometry. - */ - int GetElementVertexCreaseCount() const; - - /** Creates an edge crease geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementCrease* CreateElementEdgeCrease(); - - /** Remove the edge crease geometry element from this geometry. - * \param pElementCrease A pointer to the edge crease element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementEdgeCrease(FbxGeometryElementCrease* pElementCrease); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0); - - /** Returns this geometry's edge crease element. - * \param pIndex The edge crease geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0) const; - - /** Get the number of this geometry's edge crease geometry element. - * \return Total number of edge crease geometry elements for this geometry. - */ - int GetElementEdgeCreaseCount() const; - - /** Creates a hole geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementHole* CreateElementHole(); - - /** Remove the hole geometry element from this geometry. - * \param pElementHole A pointer to the hole element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementHole(FbxGeometryElementHole* pElementHole); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementHole* GetElementHole(int pIndex = 0); - - /** Returns this geometry's hole element. - * \param pIndex The hole geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementHole* GetElementHole(int pIndex = 0) const; - - /** Get the number of this geometry's hole geometry element. - * \return Total number of hole geometry elements for this geometry. - */ - int GetElementHoleCount() const; - - /** Creates a user data geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUserData* CreateElementUserData(); - - /** Remove the user data geometry element from this geometry. - * \param pElementUserData A pointer to the user data element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUserData(FbxGeometryElementUserData* pElementUserData); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementUserData* GetElementUserData(int pIndex = 0); - - /** Returns this geometry's user data element. - * \param pIndex The user data geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementUserData* GetElementUserData(int pIndex = 0) const; - - /** Get the number of this geometry's user data geometry element. - * \return Total number of user data geometry elements for this geometry. - */ - int GetElementUserDataCount() const; - - /** Creates a visibility geometry element for this geometry. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementVisibility* CreateElementVisibility(); - - /** Remove the visibility geometry element from this geometry. - * \param pElementVisibility A pointer to the visibility element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementVisibility(FbxGeometryElementVisibility* pElementVisibility); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0); - - /** Returns this geometry's visibility element. - * \param pIndex The visibility geometry element index. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - */ - const FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0) const; - - /** Get the number of this geometry's visibility geometry element. - * \return Total number of visibility geometry elements for this geometry. - */ - int GetElementVisibilityCount() const; - - /** Creates a UV geometry element for this geometry. - * \param pUVSetName The UV geometry element name. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the newly created geometry element. - * \remarks The created geometry element is associated with this geometry automatically. - */ - FbxGeometryElementUV* CreateElementUV(const char* pUVSetName, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Remove the UV geometry element from this geometry. - * \param pElementUV A pointer to the UV element to be removed. - * \return \c True if the geometry element is removed, \c false otherwise. - */ - bool RemoveElementUV(FbxGeometryElementUV* pElementUV); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown); - - /** Returns this geometry's UV element. - * \param pIndex The UV geometry element index. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - const FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Get the number of this geometry's UV geometry element. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Total number of UV geometry elements for this geometry. - * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element - * regardless of its texture type. - */ - int GetElementUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - FbxGeometryElementUV* GetElementUV(const char* pUVSetName); - - /** Returns this geometry's UV element. - * \param pUVSetName The UV set name of the UV geometry element. - * \return A const pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. - */ - const FbxGeometryElementUV* GetElementUV(const char* pUVSetName) const; - - /** Returns this geometry's all UV set names. - * \param pUVSetNameList A reference to \c FbxStringList that will be filled with this geometry's all UV set names. - */ - void GetUVSetNames(FbxStringList& pUVSetNameList) const; - - //@} - - - /** - * \name Off-loading Serialization section - * The methods in this section are typically called by a peripheral (FbxPeripheral). There should be no - * real interest in calling them directly. The functions will write/read the memory dump of the data contained - * in this class. Each data block written/read will start with an (int) value representing the number of items - * in the array. If this value (v) is not zero, it will be followed by the array content. A block of data that is - * (v * sizeof(array item size)) bytes big. The methods will also call the parent class ones to dump the Layers content. - */ - //@{ - /** Writes the content of the geometry object to the specified stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed - * by the receiving stream, \c false otherwise. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the geometry object from the specified stream. - * \param pStream The source stream. - * \return \c True if the geometry object fills itself with the received data - * from the stream successfully, \c false otherwise. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - - /** Calculate the actual amount of memory used by this geometry object. - * \return The memory size in bytes (includes the amount use by the data defined in the layers). - */ - virtual int MemoryUsage() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - FbxArray mControlPoints; - - bool GetNormals(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetNormalsIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTangents(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetTangentsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormals(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - bool GetBinormalsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; - -protected: - void ConstructProperties(bool pForceSet) override; - void ContentClear() override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_BASE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h deleted file mode 100755 index e20cf20..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryweightedmap.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ - -#include - -#include -#include - -#include - -class FbxGeometry; - -/** \brief This class provides the structure to build a correspondence between 2 geometries. - * - * This correspondence is done at the vertex level. Which means that for each vertex in the - * source geometry, you can have from 0 to N corresponding vertices in the destination - * geometry. Each corresponding vertex is weighted. - * - * For example, if the source geometry is a NURB and the destination geometry is a mesh, - * the correspondence object will express the correspondence between the NURB's control vertices - * and the mesh's vertices. - * - * If the mesh corresponds to a tesselation of the NURB, the correspondence object can be used - * to transfer any deformation that affect the NURB's control vertices to the mesh's vertices. - * - * See FbxWeightedMapping for more details. - */ -class FBXSDK_DLL FbxGeometryWeightedMap : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxGeometryWeightedMap, FbxObject); - -public: - - /** Set correspondence values. - * \param pWeightedMappingTable Pointer to the table containing values - * \remark \e pWeightedMappingTable becomes owned by this object and will be destroyed by it - * when the object goes out of scope or on the next call to SetValues(). The deletion - * uses FbxDelete() so the content of the pointer must have been allocated with FbxNew<>() - */ - void SetValues(const FbxWeightedMapping* pWeightedMappingTable); - - /** Return correspondence values. - * \return Pointer to the correspondence values table. - */ - FbxWeightedMapping* GetValues() const; - - /** Return source geometry. - * \return Pointer to the source geometry, or \c NULL if there is no connected source geometry - */ - FbxGeometry* GetSourceGeometry(); - - /** Return destination geometry. - * \return Pointer to the destination geometry, or \c NULL if there is no connected destination geometry - */ - FbxGeometry* GetDestinationGeometry(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - // Real weigths table - FbxWeightedMapping* mWeightedMapping; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h deleted file mode 100755 index 3d45597..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayer.h +++ /dev/null @@ -1,2808 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxLayerElementArray; -class FbxLayerContainer; - -/** Base class for elements of layers (FbxLayer). - * A layer element type is identified by EType. - * A FbxLayerElement describes how the layer element is mapped to a geometry surface - * and how the mapping information is arranged in memory. - * A FbxLayerElement contains Normals, UVs or other kind of information. - * - * \see FbxLayer - * \see FbxLayerElement::EMappingMode - * \see FbxLayerElement::EReferenceMode - */ -class FBXSDK_DLL FbxLayerElement -{ -public: - /** \enum EType Layer Element type identifier. - * - \e eUnknown Undefined Layer Element class. - * - \e eNormal Layer Element of type FbxLayerElementNormal. - * - \e eBiNormal Layer Element of type FbxLayerElementBinormal. - * - \e eTangent Layer Element of type FbxLayerElementTangent. - * - \e eMaterial Layer Element of type FbxLayerElementMaterial. - * - \e eTextureDiffuse Layer Element of type FbxLayerElementTexture. - * - \e ePolygonGroup Layer Element of type FbxLayerElementPolygonGroup. - * - \e eUV Layer Element of type FbxLayerElementUV. - * - \e eVertexColor Layer Element of type FbxLayerElementVertexColor. - * - \e eSmoothing Layer Element of type FbxLayerElementSmoothing. - * - \e eVertexCrease Layer Element of type FbxLayerElementCrease. - * - \e eEdgeCrease Layer Element of type FbxLayerElementCrease. - * - \e eHole Layer Element of type FbxLayerElementHole. - * - \e eUserData Layer Element of type FbxLayerElementUserData. - * - \e eVisibility Layer Element of type FbxLayerElementVisibility. - * - \e eTextureEmissive Layer Element of type FbxLayerElementTexture. - * - \e eTextureEmissiveFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbient Layer Element of type FbxLayerElementTexture. - * - \e eTextureAmbientFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDiffuseFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecular Layer Element of type FbxLayerElementTexture. - * - \e eTextureNormalMap Layer Element of type FbxLayerElementTexture. - * - \e eTextureSpecularFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureShininess Layer Element of type FbxLayerElementTexture. - * - \e eTextureBump Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparency Layer Element of type FbxLayerElementTexture. - * - \e eTextureTransparencyFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflection Layer Element of type FbxLayerElementTexture. - * - \e eTextureReflectionFactor Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacement Layer Element of type FbxLayerElementTexture. - * - \e eTextureDisplacementVector Layer Element of type FbxLayerElementTexture. - * - \e eTypeCount - */ - enum EType - { - eUnknown, - - //Non-Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eNormal, - eBiNormal, - eTangent, - eMaterial, - ePolygonGroup, - eUV, - eVertexColor, - eSmoothing, - eVertexCrease, - eEdgeCrease, - eHole, - eUserData, - eVisibility, - - //Texture layer element types - //Note: Make sure to update static index below if you change this enum! - eTextureDiffuse, - eTextureDiffuseFactor, - eTextureEmissive, - eTextureEmissiveFactor, - eTextureAmbient, - eTextureAmbientFactor, - eTextureSpecular, - eTextureSpecularFactor, - eTextureShininess, - eTextureNormalMap, - eTextureBump, - eTextureTransparency, - eTextureTransparencyFactor, - eTextureReflection, - eTextureReflectionFactor, - eTextureDisplacement, - eTextureDisplacementVector, - - eTypeCount - }; - - const static int sTypeTextureStartIndex = int(eTextureDiffuse); //!< The start index of texture type layer elements. - const static int sTypeTextureEndIndex = int(eTypeCount) - 1; //!< The end index of texture type layer elements. - const static int sTypeTextureCount = sTypeTextureEndIndex - sTypeTextureStartIndex + 1; //!< The count of texture type layer elements. - const static int sTypeNonTextureStartIndex = int(eNormal); //!< The start index of non-texture type layer elements. - const static int sTypeNonTextureEndIndex = int(eVisibility); //!< The end index of non-texture type layer elements. - const static int sTypeNonTextureCount = sTypeNonTextureEndIndex - sTypeNonTextureStartIndex + 1; //!< The count of non-texture type layer elements. - static const char* const sTextureNames[]; //!< Array of names of texture type layer elements. - static const char* const sTextureUVNames[]; //!< Array of names of UV layer elements. - static const char* const sNonTextureNames[]; //!< Array of names of non-texture type layer elements. - static const FbxDataType sTextureDataTypes[]; //!< Array of texture types. - static const char* const sTextureChannelNames[]; //!< Array of texture channels. - - /** \enum EMappingMode Determines how the element is mapped to a surface. - * - \e eNone The mapping is undetermined. - * - \e eByControlPoint There will be one mapping coordinate for each surface control point/vertex. - * - \e eByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. - This means that a vertex will have as many mapping coordinates as polygons of which it is a part. - * - \e eByPolygon There can be only one mapping coordinate for the whole polygon. - * - \e eByEdge There will be one mapping coordinate for each unique edge in the mesh. - This is meant to be used with smoothing layer elements. - * - \e eAllSame There can be only one mapping coordinate for the whole surface. - */ - enum EMappingMode - { - eNone, - eByControlPoint, - eByPolygonVertex, - eByPolygon, - eByEdge, - eAllSame - }; - - /** \enum EReferenceMode Determines how the mapping information is stored in the array of coordinates. - * - \e eDirect This indicates that the mapping information for the n'th element is found in the n'th place of - FbxLayerElementTemplate::mDirectArray. - * - \e eIndex, This symbol is kept for backward compatibility with FBX v5.0 files. In FBX v6.0 and higher, - this symbol is replaced with eIndexToDirect. - * - \e eIndexToDirect This indicates that the FbxLayerElementTemplate::mIndexArray - contains, for the n'th element, an index in the FbxLayerElementTemplate::mDirectArray - array of mapping elements. eIndexToDirect is usually useful for storing eByPolygonVertex mapping - mode elements coordinates. Since the same coordinates are usually - repeated many times, this saves spaces by storing the coordinate only one time - and then referring to them with an index. Materials and Textures are also referenced with this - mode and the actual Material/Texture can be accessed via the FbxLayerElementTemplate::mDirectArray - */ - enum EReferenceMode - { - eDirect, - eIndex, - eIndexToDirect - }; - - - /** Sets the Mapping Mode. - * \param pMappingMode Specifies the way that layer element is mapped to a surface. - */ - void SetMappingMode(EMappingMode pMappingMode) { mMappingMode = pMappingMode; } - - /** Sets the Reference Mode. - * \param pReferenceMode Specifies the reference mode. - */ - void SetReferenceMode(EReferenceMode pReferenceMode) { mReferenceMode = pReferenceMode; } - - /** Returns the Mapping Mode. - * \return The current Mapping Mode. - */ - EMappingMode GetMappingMode() const { return mMappingMode; } - - /** Returns the Reference Mode. - * \return The current Reference Mode. - */ - EReferenceMode GetReferenceMode() const { return mReferenceMode; } - - /** Sets the name of this object. - * \param pName Specifies the name of this LayerElement object. - */ - void SetName(const char* pName) { mName = FbxString(pName); } - - /** Returns the name of this object. - * \return The current name of this LayerElement object. - */ - const char* GetName() const { return ((FbxLayerElement*)this)->mName.Buffer(); } - - /** Equivalence operator - * \param pOther Layer element to be compared. - * \return \c True if equal, \c false otherwise. - */ - bool operator==(const FbxLayerElement& pOther) const - { - return (mName == pOther.mName) && - (mMappingMode == pOther.mMappingMode) && - (mReferenceMode == pOther.mReferenceMode); - } - - /** Assignment operator - * \param pOther Layer element assigned to this one. - * \return This layer element after assignment. - */ - FbxLayerElement& operator=( FbxLayerElement const& pOther ) - { - mMappingMode = pOther.mMappingMode; - mReferenceMode = pOther.mReferenceMode; - // name, type and owner should not be copied because they are - // initialized when this object is created - return *this; - } - - //! Removes this layer element from its owner and delete it. - void Destroy(); - - //! Clears all the data from this layer element. - virtual bool Clear() - { - return true; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void SetType(const FbxDataType* pType) { mType = pType; } - const FbxLayerContainer* GetOwner() const { return mOwner; } - - // Reference count added in case of shared objects or corrupted files that uses the same object. - // This will prevent the deletion of an object that is stil used. - void IncRefCount() { mRefCount++; } - int DecRefCount() { mRefCount--; if (mRefCount < 0) { mRefCount = 0; } return mRefCount; } - -protected: - FbxLayerElement() - : mMappingMode(eNone) - , mReferenceMode(eDirect) - , mName("") - , mOwner(NULL) - , mRefCount(0) - { - } - - virtual ~FbxLayerElement() - { - } - - EMappingMode mMappingMode; - EReferenceMode mReferenceMode; - - FbxString mName; - const FbxDataType* mType; - FbxLayerContainer* mOwner; - int mRefCount; - - void Destruct() { if (DecRefCount() == 0) { FbxDelete(this); } } - virtual void SetOwner(FbxLayerContainer* pOwner, int pInstance = 0); - - FBXSDK_FRIEND_NEW(); - -public: - virtual int MemorySize() const { return 0; } - virtual bool ContentWriteTo(FbxStream& pStream) const; - virtual bool ContentReadFrom(const FbxStream& pStream); - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \internal - * Identifies what error occurs when the data arrays are manipulated. - * \nosubgrouping - */ - -class FBXSDK_DLL LockAccessStatus -{ -public: - /** \internal - * \enum ELockAccessStatus Identifies what error occurs when the data arrays are manipulated. - * - \e eSuccess Operation Successful. - * - \e eUnsupportedDTConversion Attempts to convert to an unsupported DataType. - * - \e eCorruptedCopyback The Release of a converted buffer fails and corrupts the main data. - * - \e eBadValue Invalid value. - * - \e eLockMismatch Attempts to change to an incompatible lock. - * - \e eNoWriteLock A write operation is attempted but no WriteLock is available. - * - \e eNoReadLock A read operation is attempted but the WriteLock is active. - * - \e eNotOwner Attempts to release a lock on an invalid data buffer pointer. - * - \e eDirectLockExist A direct access lock is still active. - */ - enum ELockAccessStatus - { - eSuccess, - eUnsupportedDTConversion, - eCorruptedCopyback, - eBadValue, - eLockMismatch, - eNoWriteLock, - eNoReadLock, - eNotOwner, - eDirectLockExist - }; -}; - -//Special conversion types, we do not want them to resolve to undefined. -typedef FbxHandle* FbxRefPtr; -typedef FbxLayerElementArray* FbxLayerElementArrayPtr; -typedef FbxSurfaceMaterial* FbxSurfaceMaterialPtr; -typedef FbxTexture* FbxTexturePtr; - -inline EFbxType FbxTypeOf(const FbxRefPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxLayerElementArrayPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxSurfaceMaterialPtr&){ return eFbxReference; } -inline EFbxType FbxTypeOf(const FbxTexturePtr&){ return eFbxReference; } - -/** FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, - * it provides lock handling and data array manipulation of the data buffer for FbxLayerElement. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxLayerElementArray -{ -public: - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * \param pDataType The data type of the items in the data array. - */ - FbxLayerElementArray(EFbxType pDataType); - - //!Destructor. - virtual ~FbxLayerElementArray(); - - //@} - - /** - * \name Status handling - */ - //@{ - - //!Clears the access state and sets it to eSuccess. - inline void ClearStatus() { mStatus = LockAccessStatus::eSuccess; } - - //!Retrieves the access state. - inline LockAccessStatus::ELockAccessStatus GetStatus() const { return mStatus; } - //@} - - /** - * \name Locks handling - */ - //@{ - - /** Returns whether write is locked. - * \return \c True if write is locked, \c false otherwise. - */ - inline bool IsWriteLocked() const { return mWriteLock; }; - - /** Retrieves the read lock count. - * \return The read lock count. - */ - inline int GetReadLockCount() const { return mReadLockCount; } - //@} - - /** Returns whether this Array is accessed in any way. - * \return \c True if it is in use, \c false otherwise. - */ - bool IsInUse() const; - - /** Increments the number of read locks on this array. - * \return The current number of read locks (including the one just grabbed) or 0 if a write lock is active. - */ - int ReadLock() const; - - /** Releases a read lock on this array. - * \return The remaining read locks or -1 if a write lock is active. - */ - int ReadUnlock() const; - - /** Locks this array for writing. The data in the array is wiped out. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool WriteLock() const; - - /** Releases the write lock on this array. - */ - void WriteUnlock() const; - - /** Locks this array for writing. The data that already exists in the array is kept and is valid. - * \return \c True if a write lock has been successfully granted, \c false if one or more read locks - * are active. - */ - bool ReadWriteLock() const; - - /** Releases the write lock on this array. - */ - void ReadWriteUnlock() const; - - - /** \enum ELockMode Identifies the access mode to the data buffer. - * - \e eReadLock Read mode. - * - \e eWriteLock Write mode. - * - \e eReadWriteLock Read-write mode. - */ - enum ELockMode - { - eReadLock = 1, - eWriteLock = 2, - eReadWriteLock = 3 - }; - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \param pDataType If defined, tries to return the data as this type. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - virtual void* GetLocked(ELockMode pLockMode, EFbxType pDataType); - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - void* GetLocked(ELockMode pLockMode=eReadWriteLock) { return GetLocked(pLockMode, mDataType); } - - /** Grants a locked access to the data buffer. - * \param pLockMode Access mode to the data buffer. - * \return A pointer to the data buffer or NULL if a failure occurs. - * \remarks In the case of a failure, the Status is updated with the - * reason for the failure. Also, when a type conversion occurs, a second buffer - * of the new type is allocated. In this case, the LockMode does not apply to the - * returned buffer since it is a copy but it does apply to the internal data of this - * object. The returned buffer still remains a property of this object and is - * deleted when the pointer is released or the object is destroyed. At the moment of - * release or destruction, the values in this buffer are copied back into this object. - */ - template inline T* GetLocked(T*, ELockMode pLockMode=eReadWriteLock) {T v; return (T*)GetLocked(pLockMode, FbxTypeOf(v)); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param pDataType The data type of the data buffer. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - virtual void Release(void** pDataPtr, EFbxType pDataType); - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - void Release(void** pDataPtr) { Release(pDataPtr, mDataType); } - - /** Unlock the data buffer. - * \param pDataPtr The buffer to be released. - * \param dummy The data type of dummy is used to specialize this function. - * \remarks The passed pointer must be the one obtained by the call to GetLocked(). - * Any other pointer causes this method to fail and the Status is updated with - * the reason for the failure. If the passed pointer refers a converted data - * buffer (see comment of GetLocked), this method copies the GetCount() items - * of the received buffer back into this object. Any other items that may have been added - * using a realloc call are ignored. - */ - template inline void Release(T** pDataPtr, T* dummy) - { - T*** voidPtr = &pDataPtr; - Release((void**)*voidPtr, FbxTypeOf(*dummy)); - } - - /** Returns the Stride size which equals the size of the data type of the data buffer. - */ - virtual size_t GetStride() const; - - /** - * \name Data array manipulation - */ - //@{ - - //! Returns the count of items in the data buffer. - int GetCount() const; - - /** Sets the count of items in the data buffer. - * \param pCount The count of items to be set. - */ - void SetCount(int pCount); - - //! Clears the data buffer. - void Clear(); - - /** Resizes the data buffer. - * \param pItemCount The new size of the data buffer. - */ - void Resize(int pItemCount); - - /** Appends space to the data buffer. - * \param pItemCount The appended space size - */ - void AddMultiple(int pItemCount); - - /** Appends a new item to the end of the data buffer. - * \param pItem Pointer of the new item to be added - * \param pValueType Data type of the new item - * \return The index of the new item - */ - int Add(const void* pItem, EFbxType pValueType); - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem Pointer of the new item to be inserted - * \param pValueType Data type of the new item - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - int InsertAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value for the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem Pointer of the item whose value is copied to pIndex'th item - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void SetAt(int pIndex, const void* pItem, EFbxType pValueType); - - /** Sets the value of the last item. - * \param pItem Pointer of the item whose value is copied to the last item - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void SetLast(const void* pItem, EFbxType pValueType); - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - void RemoveAt(int pIndex, void** pItem, EFbxType pValueType); - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \param pValueType Data type of the item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - void RemoveLast(void** pItem, EFbxType pValueType); - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \param pValueType Data type of the item - * \return \c True if the item is removed successfully, \c false otherwise - */ - bool RemoveIt(void** pItem, EFbxType pValueType); - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - bool GetAt(int pIndex, void** pItem, EFbxType pValueType) const; - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetFirst(void** pItem, EFbxType pValueType) const; - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \param pValueType Data type of the item - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - bool GetLast(void** pItem, EFbxType pValueType) const; - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int Find(const void* pItem, EFbxType pValueType) const; - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \param pValueType Data type of the item - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindAfter(int pAfterIndex, const void* pItem, EFbxType pValueType) const; - - /** Searches for an item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \param pValueType The item's data type. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - int FindBefore(int pBeforeIndex, const void* pItem, EFbxType pValueType) const; - - /** Equivalence operator - * \param pArray Array compared to this one - * \return \c True if equal. \c false otherwise. - */ - bool IsEqual(const FbxLayerElementArray& pArray) const; - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - template inline int Add(T const& pItem) { return Add((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline int InsertAt(int pIndex, T const& pItem) { return InsertAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void SetAt(int pIndex, T const& pItem) { SetAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void SetLast(T const& pItem) { SetLast((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \param pItem Place to hold the value of the removed item. - * \remarks The input index must be within valid range and no error will be thrown if it is invalid. - */ - template inline void RemoveAt(int pIndex, T* pItem) - { - T** voidPtr = &pItem; - RemoveAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes the last item from the data buffer. - * \param pItem Place to hold the value of the removed item. - * \remarks The array should contain at least one item and no error will be thrown if it is empty. - */ - template inline void RemoveLast(T* pItem) - { - T** voidPtr = &pItem; - RemoveLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - template inline bool RemoveIt(T* pItem) - { - T** voidPtr = &pItem; - return RemoveIt((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - * \remarks If the index is invalid, pItem is set to zero. - */ - template inline bool GetAt(int pIndex, T* pItem) const - { - T** voidPtr = &pItem; - return GetAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the first item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetFirst(T* pItem) const - { - T** voidPtr = &pItem; - return GetFirst((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Returns the last item's value. - * \param pItem Place to hold the item's value - * \return \c True if the item's value is returned successfully, \c false otherwise - */ - template inline bool GetLast(T* pItem) const - { - T** voidPtr = &pItem; - return GetLast((void**)voidPtr, FbxTypeOf(*pItem)); - } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int Find(T const& pItem) const { return Find((const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindAfter(int pAfterIndex, T const& pItem) const { return FindAfter(pAfterIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - template inline int FindBefore(int pBeforeIndex, T const& pItem) const { return FindBefore(pBeforeIndex, (const void*)&pItem, FbxTypeOf(pItem)); } - - - /** Copies the items in the data buffer to an array. - * \param pDst The destination array where the items are to be copied. - */ - template inline void CopyTo(FbxArray& pDst) - { - T src; - T* srcPtr = &src; - - pDst.Clear(); - if (mDataType != FbxTypeOf(src)) - { - SetStatus(LockAccessStatus::eUnsupportedDTConversion); - return; - } - - pDst.Resize(GetCount()); - for (int i = 0; i < GetCount(); i++) - { - if (GetAt(i, (void**)&srcPtr, mDataType)) - { - pDst.SetAt(i, src); - } - } - SetStatus(LockAccessStatus::eSuccess); - } - //@} - -protected: - void* GetDataPtr(); - void* GetReference(int pIndex, EFbxType pValueType); - void GetReferenceTo(int pIndex, void** pRef, EFbxType pValueType); - - inline void SetStatus(LockAccessStatus::ELockAccessStatus pVal) const - { - const_cast(this)->mStatus = pVal; - } - - void SetImplementation(void* pImplementation); - inline void* GetImplementation() { return mImplementation; } - virtual void ConvertDataType(EFbxType pDataType, void** pDataPtr, size_t* pStride); - - EFbxType mDataType; - -private: - LockAccessStatus::ELockAccessStatus mStatus; - - int mReadLockCount; - bool mWriteLock; - void* mImplementation; - size_t mStride; - int mDirectLockOn; - bool mDirectAccessOn; - - FbxArray mConvertedData; - -}; - -/** \internal - * This class provides simple RAII-style read locking of a FbxLayerElementArray object. - */ -template -struct FbxLayerElementArrayReadLock -{ - /** \internal - * On construction, this class requires the read lock. - */ - FbxLayerElementArrayReadLock(FbxLayerElementArray& pArray) : mArray(pArray) - { - mLockedData = mArray.GetLocked((T*)NULL, FbxLayerElementArray::eReadLock); - } - - /** \internal - * On destruction, this class releases the read lock. - */ - ~FbxLayerElementArrayReadLock() - { - if( mLockedData ) - { - mArray.Release((void **) &mLockedData); - } - } - - /** \internal - * Retrieve the locked array data. - */ - const T* GetData() const - { - return mLockedData; - } - -private: - FbxLayerElementArray& mArray; - T* mLockedData; -}; - -class FbxLayerElementUserData; - -/** FbxLayerElementArrayTemplate provides data array manipulation of the data buffer for FbxLayerElement. - * It is the subclass of FbxLayerElementArray. - * \nosubgrouping - */ -template class FbxLayerElementArrayTemplate : public FbxLayerElementArray -{ -public: - - /** Constructor - * \param pDataType The data type of the array items. - */ - FbxLayerElementArrayTemplate(EFbxType pDataType) : - FbxLayerElementArray(pDataType) - { - } - - /** Appends a new item to the end of the data buffer. - * \param pItem The new item to be added - * \return The index of the new item - */ - inline int Add( T const &pItem ) { return FbxLayerElementArray::Add(pItem); } - - /** Inserts a new item at the specified position of the data buffer. - * \param pIndex The specified position - * \param pItem The new item to be inserted - * \return The index of the inserted item - */ - inline int InsertAt(int pIndex, T const &pItem) { return FbxLayerElementArray::InsertAt(pIndex, pItem); } - - /** Sets the value of the specified item. - * \param pIndex The index of the item to be updated. - * \param pItem The item whose value is copied to pIndex'th item - */ - inline void SetAt(int pIndex, T const &pItem) { FbxLayerElementArray::SetAt(pIndex, pItem); } - - /** Sets the value of the last item. - * \param pItem The item whose value is copied to the last item - */ - inline void SetLast( T const &pItem) { FbxLayerElementArray::SetLast(pItem); } - - /** Removes the specified item from the data buffer. - * \param pIndex The index of the item to be removed - * \return The value of the item removed - */ - inline T RemoveAt(int pIndex) { T lValue; FbxLayerElementArray::RemoveAt(pIndex, &lValue); return lValue; } - - /** Removes the last item from the data buffer. - * \return The value of the last item removed - */ - inline T RemoveLast() { T lValue; FbxLayerElementArray::RemoveLast(&lValue); return lValue; } - - /** Removes one item from the data buffer. - * \param pItem The first item who equals pItem is to be removed - * \return \c True if the item is removed successfully, \c false otherwise - */ - inline bool RemoveIt(T const &pItem) { return FbxLayerElementArray::RemoveIt(&pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the specified item - * \remarks If the index is invalid, pItem is set to zero. - */ - inline T GetAt(int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Returns the first item's value. - * \return The first item's value. - */ - inline T GetFirst() const { T lValue; FbxLayerElementArray::GetFirst(&lValue); return lValue; } - - /** Returns the last item's value. - * \return The last item's value. - */ - inline T GetLast() const { T lValue; FbxLayerElementArray::GetLast(&lValue); return lValue; } - - /** Searches for an item in the data buffer. - * \param pItem The value of the item for which to search - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int Find(T const &pItem) { return FbxLayerElementArray::Find(pItem); } - - /** Searches for an item after the specified index in the data buffer. - * \param pAfterIndex The specified index after which the searching begins - * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindAfter(int pAfterIndex, T const &pItem) { return FbxLayerElementArray::FindAfter(pAfterIndex, pItem); } - - /** Searches for one item before the specified index in the data buffer. - * \param pBeforeIndex The specified index before which the searching begins - * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. - * \return The index of the item found, -1 if not found. - * \remarks The index of the first item whose value equals pItem is returned. - */ - inline int FindBefore(int pBeforeIndex, T const &pItem) { return FbxLayerElementArray::FindBefore(pBeforeIndex, pItem); } - - /** Returns the specified item's value. - * \param pIndex Index of the item - * \return The value of the item - * \remarks If the index is invalid, pItem is set to zero. - */ - T operator[](int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArray& operator=(const FbxArray& pArrayTemplate) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - return *this; - } - - /** Assignment operator. - * \param pArrayTemplate The source array whose items are copied to this array. - */ - FbxLayerElementArrayTemplate& operator=(const FbxLayerElementArrayTemplate& pArrayTemplate) - { - if ( this != &pArrayTemplate ) - { - SetStatus(LockAccessStatus::eNoWriteLock); - if (WriteLock()) - { - SetCount(pArrayTemplate.GetCount()); - for (int i = 0; i < pArrayTemplate.GetCount(); i++) - SetAt(i, pArrayTemplate.GetAt(i)); - WriteUnlock(); - SetStatus(LockAccessStatus::eSuccess); - } - } - return *this; - } - -private: - // This one is not the best thing to do, but at least I don't get deprecated calls inside this file. - // Note that FbxLayerElementUserData is kind of a weird class in the first place anyway. So either - // we clean it up, or we live with this piece of code ;-) - friend class FbxLayerElementUserData; - T& AsReference(int pIndex) { T* v = (T*)FbxLayerElementArray::GetReference(pIndex, mDataType); return (v)?*v:dummy;} - - T dummy; -}; - - -/** Remap the index array to a new EMappingMode - * \param pLayerEl The layer element to remap - * \param pNewMapping The new mapping mode - * \param pIndexArray The index array to modify - * \return return -1 if the layer element is FbxLayerElement::eDirect - * 0 if layer element or index array is \c NULL and 1 if the remap is successful - */ -extern FBXSDK_DLL int RemapIndexArrayTo(FbxLayerElement* pLayerEl, - FbxLayerElement::EMappingMode pNewMapping, - FbxLayerElementArrayTemplate* pIndexArray); - - -/** This class complements the FbxLayerElement class. - * It provides interfaces to access the direct array and index array of different layer elements. - * \nosubgrouping - */ -template class FbxLayerElementTemplate : public FbxLayerElement -{ -public: - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the direct array of Layer Elements. - * \return A reference to the Layer Elements direct array. - * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. - */ - FbxLayerElementArrayTemplate& GetDirectArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mDirectArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() const - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Returns the index array of Layer Elements. - * \return A reference to the index array. - * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. - */ - FbxLayerElementArrayTemplate& GetIndexArray() - { - FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); - return *mIndexArray; - } - - /** Removes all elements from the direct and the index arrays. - * \remarks This function fails if there is a lock on the arrays. - * \return \c True if successful, \c false if a lock is present. - */ - bool Clear() - { - bool ret = true; - mDirectArray->Clear(); - ret = (mDirectArray->GetStatus() == LockAccessStatus::eSuccess); - - mIndexArray->Clear(); - ret |= (mIndexArray->GetStatus() == LockAccessStatus::eSuccess); - - return ret; - } - -public: - - /** Equivalence operator. - * \param pOther Another element compared to this object - * \return \c True if equal, \c false if unequal. - */ - bool operator==(const FbxLayerElementTemplate& pOther) const - { - bool ret = true; - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - if( directArray.GetCount() != mDirectArray->GetCount() || - !directArray.ReadLock() || !mDirectArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mDirectArray->IsEqual(directArray) ) - ret = false; - - directArray.ReadUnlock(); - mDirectArray->ReadUnlock(); - } - - if (ret) - { - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - if( indexArray.GetCount() != mIndexArray->GetCount() || - !indexArray.ReadLock() || !mIndexArray->ReadLock() ) - { - ret = false; - } - - if( ret && !mIndexArray->IsEqual(indexArray) ) - ret = false; - - indexArray.ReadUnlock(); - mIndexArray->ReadUnlock(); - } - } - - if (ret == false) - return false; - - return FbxLayerElement::operator==(pOther); - } - - /** Assignment operator. - * \param pOther Another element assigned to this one - */ - FbxLayerElementTemplate& operator=( FbxLayerElementTemplate const& pOther ) - { - FBX_ASSERT(mDirectArray != NULL); - FBX_ASSERT(mIndexArray != NULL); - - if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); - *mDirectArray = directArray; - } - - if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); - *mIndexArray = indexArray; - } - - FbxLayerElement* myself = (FbxLayerElement*)this; - FbxLayerElement* myOther = (FbxLayerElement*)&pOther; - *myself = *myOther; - return *this; - } - - /** Changes the Mapping mode to the new one and re-computes the index array. - * \param pNewMapping New mapping mode. - * \return If the remapping is successful, returns 1. - * If an error occurs, returns 0. In case the function cannot - * remap to the desired mode because of incompatible modes or - * unsupported modes, returns -1. - */ - int RemapIndexTo(FbxLayerElement::EMappingMode pNewMapping) - { - return RemapIndexArrayTo(this, pNewMapping, mIndexArray); - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementTemplate() - { - mDirectArray = NULL; - mIndexArray = NULL; - } - - ~FbxLayerElementTemplate() - { - FbxDelete(mDirectArray); - FbxDelete(mIndexArray); - } - - virtual void AllocateArrays() - { - mDirectArray = FbxNew< FbxLayerElementArrayTemplate >(mType->GetType()); - mIndexArray = FbxNew< FbxLayerElementArrayTemplate >(FbxIntDT.GetType()); - } - -public: - virtual int MemorySize() const - { - int size = FbxLayerElement::MemorySize(); - size += (mDirectArray->GetCount()*sizeof(Type)); - size += (mIndexArray->GetCount()*sizeof(int)); - return size; - } - - /** - * \name Serialization section - */ - //@{ - virtual bool ContentWriteTo(FbxStream& pStream) const - { - void* a; - int s,v; - int count = 0; - - // direct array - count = mDirectArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Write(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - count = mIndexArray->GetCount(); - s = pStream.Write(&count, sizeof(int)); - if (s != sizeof(int)) return false; - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Write(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - - return FbxLayerElement::ContentWriteTo(pStream); - } - - virtual bool ContentReadFrom(const FbxStream& pStream) - { - void* a; - int s,v; - int count = 0; - - // direct array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mDirectArray->Resize(count); - if (count > 0) - { - a = mDirectArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(Type); - s = pStream.Read(a, v); - mDirectArray->Release(&a); - if (s != v) return false; - } - - // index array - s = pStream.Read(&count, sizeof(int)); - if (s != sizeof(int)) return false; - mIndexArray->Resize(count); - if (count > 0) - { - a = mIndexArray->GetLocked(); - FBX_ASSERT(a != NULL); - v = count*sizeof(int); - s = pStream.Read(a, v); - mIndexArray->Release(&a); - if (s != v) return false; - } - return FbxLayerElement::ContentReadFrom(pStream); - } - //@} - - typedef Type ArrayElementType; - typedef FbxLayerElementArrayTemplate DirectArrayType; - typedef FbxLayerElementArrayTemplate IndexArrayType; - - FbxLayerElementArrayTemplate* mDirectArray; - FbxLayerElementArrayTemplate* mIndexArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#define FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(classDesc) \ - FBXSDK_FRIEND_NEW(); \ - static Fbx##classDesc* Create(FbxLayerContainer* pOwner, const char* pName); - -/** \brief Layer element for mapping Normals to a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementNormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementNormal); - -protected: - FbxLayerElementNormal(); - ~FbxLayerElementNormal(); -}; - -/** \brief Layer element for mapping Binormals to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementBinormal : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementBinormal); - -protected: - FbxLayerElementBinormal(); - ~FbxLayerElementBinormal(); -}; - -/** \brief Layer element for mapping Tangents to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTangent : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTangent); - -protected: - FbxLayerElementTangent(); - ~FbxLayerElementTangent(); -}; - -/** Layer element for mapping materials (FbxSurfaceMaterial) to a geometry. - * - * FBX SDK 2011 and later connects materials (FbxSurfaceMaterial) to nodes (FbxNode). - * The direct array of this class is no longer used. - * The integer "n" in the index array of this class represents the n-th material (zero-based) connected to the node. - * - * For example: - * - * Mapping mode eAllSame and index array {0} means the whole geometry is assigned with the 0-th material - * connected to the node. - * - * Mapping mode eByPolygon and index array {0, 1} means the first polygon is assigned with the 0-th material and - * the second polygon is assigned with the 1-th material. - * - * - * You can access the materials from a node by using FbxNode::GetMaterialCount() and FbxNode::GetMaterial(int pIndex) - * or the more generic calls to GetSrcObjectCount() and - * GetSrcObject(index) - * - * For example: - * - * \code - * FbxNode* node; - * int nbMat = node->GetMaterialCount(); - * int nbMat1= node->GetSrcObjectCount(); - * - * FbxSurfaceMaterial* material; - * FbxLayerElementMaterial* layerElement; - * if (layerElement->GetMappingMode() == FbxLayerElement::eAllSame) - * { - * int index = layerElement->GetIndexArray()[0]; - * material = node->GetMaterial(index); - * } - * \endcode - * - * \remarks - * The DirectArray() methods still exist for legacy reasons but has been made private and should not be used. - * Therefore, to be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * - * \see FbxSurfaceMaterial - * \see FbxNode - */ -class FBXSDK_DLL FbxLayerElementMaterial : public FbxLayerElementTemplate -{ -public: - typedef FbxLayerElementTemplate ParentClass; - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementMaterial); - - /** \internal - * Internal class to maintain backward compatibility with old FBX code (prior to FBX SDK 2011). - * This class synchronizes the direct array with FbxNode connections. - * Thus, changes on the direct array will reflect on FbxNode. - */ - class LayerElementArrayProxy : public FbxLayerElementArrayTemplate - { - public: - typedef FbxLayerElementArrayTemplate ParentClass; - - LayerElementArrayProxy(EFbxType pType); - void SetContainer( FbxLayerContainer* pContainer, int pInstance = 0); - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual void AllocateArrays(); - virtual void SetOwner( FbxLayerContainer* pOwner, int pInstance = 0); - virtual void SetInstance( int pInstance ) { SetOwner( mOwner, pInstance ); } - -protected: - FbxLayerElementMaterial(); - ~FbxLayerElementMaterial(); - -private: - FbxLayerElementArrayTemplate& GetDirectArray() const - { - return ParentClass::GetDirectArray(); - } - - FbxLayerElementArrayTemplate& GetDirectArray() - { - return ParentClass::GetDirectArray(); - } - - friend class FbxLayerContainer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for grouping related polygons together. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementPolygonGroup : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementPolygonGroup); - -protected: - FbxLayerElementPolygonGroup(); - ~FbxLayerElementPolygonGroup(); -}; - -/** \brief Layer element for mapping UVs to a geometry. - * - * This class represents a UV set belongs to a geometry. Each UV set in a geometry - * has a name to identify itself. The string property FbxTexture.UVSet indicates - * the UV set to use. - * - * \remarks if the Mapping mode of this LayerElement is \e eNone, the stored data - * should be treated as irrelevant. In some circumstances, you can still send this data - * to systems that cannot function without UV coordinates, but ensure - * that you have enough coordinates to do so. - * - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUV : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementUV); - -protected: - FbxLayerElementUV(); - ~FbxLayerElementUV(); -}; - -/** \brief Layer element for mapping Vertex Colors to a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementVertexColor : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVertexColor); - -protected: - FbxLayerElementVertexColor(); - ~FbxLayerElementVertexColor(); -}; - -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus = NULL); -template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, const char* pName, bool* pStatus = NULL ); -template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus = NULL ); - -/** \brief Layer element for mapping custom user data to a geometry. - * This layer element is different from the other types of layer elements in that it has multiple direct arrays. There is one array for each user data attribute. - * Each array is indexed by the index array. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementUserData : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The layer element name. - * \param pId The layer element ID. - * \param pDataTypes Attribute data types of this layer element, one direct array is allocated for each Attribute data type. - * \param pDataNames Attribute names of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - * \remarks Only "bool", "int", "float" and "double" are supported. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, const char* pName, int pId, FbxArray& pDataTypes, FbxArray& pDataNames); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pOther Other layer element from which to copy. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, FbxLayerElementUserData const& pOther ); - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (FbxLayerElementArrayTemplate*)NULL; - } - } - - /** Returns the direct array with the specified attribute index. - * \param pIndex Specified attribute index. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) const - { - if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) - { - if (pStatus) *pStatus = true; - return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); - } - else - { - if( pStatus ) *pStatus = false; - FBX_ASSERT_NOW("Index out of bounds"); - return (const FbxLayerElementArrayTemplate*)NULL; - } - } - - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the direct array with the specified attribute name. - * \param pName Specified attribute name. - * \param pStatus A flag to indicate whether the direct array is returned successfully or not. - * \return The specified attribute's direct array. - */ - const FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) const - { - FbxString lName( pName ); - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return GetDirectArrayVoid(i, pStatus); - } - - if (pStatus) *pStatus = false; - return (const FbxLayerElementArrayTemplate*)NULL; - } - - /** Returns the data type for the specified index - * \param pIndex The index of the attribute being queried - * \return The data type, or FbxUndefinedDT if pIndex is out of range - */ - FbxDataType GetDataType( int pIndex ) const - { - if( pIndex < 0 || pIndex >= mDataTypes.GetCount() ) - return FbxUndefinedDT; - - return mDataTypes[pIndex]; - } - - /** Returns the specified attribute data type. - * \param pName The name of the attribute being queried - * \return The data type, or FbxUndefinedDT if no attribute has the given name - */ - FbxDataType GetDataType( const char* pName ) const - { - FbxString lName( pName ); - - for( int i = 0; i < mDataNames.GetCount(); ++i ) - { - if( *mDataNames[i] == lName ) - return mDataTypes[i]; - } - - return FbxUndefinedDT; - } - - /** Returns the attribute name at the specified index - * \param pIndex Attribute index - * \return The name, or \c NULL if pIndex is out of range. - */ - const char* GetDataName( int pIndex ) const - { - if( pIndex >= 0 && pIndex < mDataNames.GetCount() ) - return mDataNames[pIndex]->Buffer(); - - return NULL; - } - - /** Resizes all direct arrays to the specified size. - * \param pSize The new size of the direct arrays. - */ - void ResizeAllDirectArrays( int pSize ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).Resize( pSize ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).Resize( pSize ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).Resize( pSize ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).Resize( pSize ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).Resize( pSize ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Removes a single element at pIndex from every direct array. - * \param pIndex The index of the element to be removed. - */ - void RemoveFromAllDirectArrays( int pIndex ) - { - for( int i = 0; i < GetDirectArray().GetCount(); ++i ) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxInt: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxFloat: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; - case eFbxDouble: FbxGetDirectArray(this,i).RemoveAt( pIndex ); break; - //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).RemoveAt( pIndex ); break; - //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).RemoveAt( pIndex ); break; - default: - FBX_ASSERT_NOW("unknown type" ); break; - } - } - } - - /** Returns the direct array count for the attribute at pIndex - * \param pIndex The attribute index - * \return The specified attribute's direct array count. - */ - int GetArrayCount( int pIndex ) const - { - if( pIndex >= 0 && pIndex < GetDirectArray().GetCount() ) - { - switch( mDataTypes[pIndex].GetType() ) - { - case eFbxBool: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxInt: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxFloat: return FbxGetDirectArray(this,pIndex).GetCount(); - case eFbxDouble: return FbxGetDirectArray(this,pIndex).GetCount(); - //case eFbxDouble3: return GetDirectArray< FbxDouble3 >(pIndex).GetCount(); - //case eFbxDouble4: return GetDirectArray< FbxDouble4 >(pIndex).GetCount(); - //case eFbxDouble4x4: return GetDirectArray< FbxDouble4x4>(pIndex).GetCount(); - default: - FBX_ASSERT_NOW("Unknown type" ); break; - } - } - - return -1; - } - - /** Queries the this layer element's ID. - * \return The ID expressed as an int - */ - int GetId() const { return mId; } - - /** Returns this layer element's direct array count. - * \return The direct array count expressed as an int. - * \remarks This count should be equal to the count of user data attributes. - */ - int GetDirectArrayCount() const { return GetDirectArray().GetCount(); } - - /** Assignment operator which performs a deep copy. - * \param pOther Other FbxLayerElementUserData from which to perform a deep copy. - * \return This FbxLayerElementUserData. - */ - FbxLayerElementUserData& operator=( FbxLayerElementUserData const& pOther ) - { - if (this == &pOther) - return *this; - - Clear(); - - mId = pOther.mId; - mDataTypes = pOther.mDataTypes; - mDataNames.Resize(pOther.mDataNames.GetCount()); - for(int i = 0; i < pOther.mDataNames.GetCount(); ++i) - mDataNames.SetAt(i, FbxNew< FbxString >( *pOther.mDataNames[i] ) ); - - Init(); - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - - return *this; - } - - /** Removes all data from this layer element. - * \return \c True always - */ - bool Clear() - { - int i; - const int lCount = GetDirectArray().GetCount(); - FbxLayerElementArray** directArray = NULL; - directArray = GetDirectArray().GetLocked(directArray); - for( i = 0; directArray != NULL && i < lCount; ++i ) - { - if( directArray[i] ) - FbxDelete(directArray[i]); - } - FbxLayerElementArray*** ptr = &directArray; - GetDirectArray().Release((void**)ptr); - for( i = 0; i < mDataNames.GetCount(); ++i ) - { - FBX_SAFE_DELETE(mDataNames[i]); - } - mDataNames.Clear(); - mDataTypes.Clear(); - - FbxLayerElementTemplate::Clear(); - - return true; - } - - /** Queries the amount of memory used by this - * object as well as its content. It does not consider the content pointed. - * \return The amount of memory used. - */ - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mId); - - for(int i = 0; i < mDataTypes.GetCount(); i++) - { - size += sizeof(mDataTypes[i]); - } - size += (mDataNames.GetCount() * sizeof(FbxString*)); - - return size; - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructs a user data layer element. - * \param pId An identifier for this UserData layer element - * \param pDataTypes Attribute data types for this layer element - * \param pDataNames Attribute names for this layer element - */ - FbxLayerElementUserData( int pId, FbxArray& pDataTypes, FbxArray& pDataNames ) - : - mId( pId ), - mDataTypes( pDataTypes ) - { - FBX_ASSERT( pDataTypes.GetCount() == pDataNames.GetCount() ); - for( int i = 0; i < pDataNames.GetCount(); ++i ) - { - mDataNames.Add( FbxNew< FbxString >( pDataNames[i] ) ); - } - } - - /** Copy constructor. A deep copy is made. - * \param pOther Another FbxLayerElementUserData object to be copied. - */ - FbxLayerElementUserData( FbxLayerElementUserData const& pOther ) : mId(pOther.mId), mDataTypes(pOther.mDataTypes) - { - for (int lIndex = 0; lIndex < pOther.mDataNames.GetCount(); ++lIndex) - { - mDataNames.Add(FbxNew(*(pOther.mDataNames[lIndex]))); - } - - SetType(&FbxLayerElementUserDataDT); - AllocateArrays(); - - for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) - { - switch (mDataTypes[i].GetType()) - { - case eFbxBool: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxInt: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxFloat: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - case eFbxDouble: - FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); - break; - - default: - FBX_ASSERT_NOW("Unknown type" ); - break; - } - } - - if ( ( mReferenceMode == FbxLayerElement::eIndex || - mReferenceMode == FbxLayerElement::eIndexToDirect) && - ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || - pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) - { - GetIndexArray() = pOther.GetIndexArray(); - } - } - - //!Destructor. - ~FbxLayerElementUserData() - { - Clear(); - } - - //@} - virtual void AllocateArrays() - { - FbxLayerElementTemplate::AllocateArrays(); - Init(); - } - - -private: - - void Init() - { - int i; - GetDirectArray().Resize( mDataTypes.GetCount() ); - - // initialize arrays - for( i = 0; i < mDataTypes.GetCount(); ++i ) - { - FbxHandle** dst = NULL; - dst = GetDirectArray().GetLocked(dst); - if (dst) - { - switch( mDataTypes[i].GetType() ) - { - case eFbxBool: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxInt: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxFloat: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - case eFbxDouble: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; - default: - FBX_ASSERT_NOW("Trying to assign an unknown type" ); break; - } - FbxHandle*** ptr = &dst; - GetDirectArray().Release((void**)ptr); - } - } - } - - int mId; - FbxArray mDataTypes; - FbxArray mDataNames; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,int pIndex, bool* pStatus) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - -/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. - * \param pLayerElement The layer element whose direct array to return. - * \param pIndex The direct array index - * \param pStatus Will be set to \c false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); -} - - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,const char* pName, bool* pStatus ) -{ - return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - -/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. - * \param pLayerElement The layer element whose direct array to return. - * \param pName The given attribute name. - * \param pStatus Will be set to false if accessing the direct array encounters an error. - * \return If pStatus receives \c true, the direct array at the given index is - * returned. Otherwise the return value is \c undefined. - */ -template -inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus ) -{ - return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); -} - - -/** Layer element for indicating smoothness of components of a geometry. - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eDirect. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementSmoothing : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementSmoothing* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Smoothing layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementSmoothing() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating crease of components of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementCrease : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementCrease* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "Crease layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementCrease() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating hole of polygon of a geometry. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLayerElementHole : public FbxLayerElementTemplate -{ -public: - FBXSDK_FRIEND_NEW(); - - /** Allocation method. - * \param pOwner The owner of this layer element. - * \param pName The name of this layer element. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - static FbxLayerElementHole* Create(FbxLayerContainer* pOwner, const char* pName); - - /** Sets the Reference Mode. - * \param pMode Specifies the reference mode. - * \remarks Only support eDirect. - */ - void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) - { - if( pMode != FbxLayerElement::eDirect ) - { - FBX_ASSERT_NOW( "hole layer elements must be direct mapped" ); - return; - } - } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementHole() - { - mReferenceMode = FbxLayerElement::eDirect; - } -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** Layer element for indicating if specified components are shown/hidden - */ -class FBXSDK_DLL FbxLayerElementVisibility : public FbxLayerElementTemplate -{ -public: - - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVisibility); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxLayerElementVisibility(); - ~FbxLayerElementVisibility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** \brief Layer element for mapping Textures to a geometry. This class is deprecated. - * - * Deprecated since FBX SDK 2011. Textures (FbxTexture derived classes) should be connected - * to material properties. - * - * For example: - * - * \code - * FbxFileTexture* file; - * FbxSurfacePhong* phong; - * phong->Diffuse.ConnectSrcObject(file); - * \endcode - * \see FbxSurfaceMaterial - * - * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference - * mode set to \e eIndexToDirect. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLayerElementTexture : public FbxLayerElementTemplate -{ -public: - /** Allocation method. - * \return A pointer to the layer element or \c NULL if creation fails. - */ - FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTexture); - - /** \enum EBlendMode Lets you control how textures are combined when you apply multiple layers of texture to a surface. - * - \e eTranslucent The new texture layer is transparent (depending on the Alpha value). - * - \e eAdd Add the color of the new texture to the previous texture. - * - \e eModulate Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2 Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdd, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Sets the way Textures blend between layers. - * \param pBlendMode A valid blend mode. - */ - void SetBlendMode(EBlendMode pBlendMode) { mBlendMode = pBlendMode; } - - /** Sets the transparency level between multiple texture levels. - * \param pAlpha Set to a value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - * \remarks Values smaller than 0.0 are clipped to 0.0, while values greater than 1.0 are clipped to 1.0. - */ - void SetAlpha(double pAlpha) - { - if (pAlpha > 1.0) - mAlpha = 1.0; - else if (pAlpha < 0.0) - mAlpha = 0.0; - else - mAlpha = pAlpha; - } - - /** Returns the way Textures blend between layers. - * \return The current Blend Mode. - */ - EBlendMode GetBlendMode() const { return mBlendMode; } - - /** Returns the transparency level between multiple levels of textures. - * \return An alpha value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. - */ - double GetAlpha() const { return mAlpha; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - virtual int MemorySize() const - { - int size = FbxLayerElementTemplate::MemorySize(); - size += sizeof(mBlendMode); - size += sizeof(mAlpha); - return size; - } - -protected: - /** Constructor - * By default, textures have a Blend Mode of eTranslucent, - * a Reference Mode of eIndexToDirect, and an Alpha value of 1.0. - */ - FbxLayerElementTexture() : mBlendMode(eTranslucent) - { - mReferenceMode = eIndexToDirect; - mAlpha = 1.0; - } - -private: - EBlendMode mBlendMode; - double mAlpha; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxLayer class provides a base for the layering mechanism. - * - * A layer can contain one or more of the following layer elements: - * \li Normals - * \li Binormals - * \li Tangents - * \li Materials - * \li Polygon Groups - * \li UVs - * \li Vertex Colors - * \li Smoothing informations - * \li Vertex Creases - * \li Edge Creases - * \li Custom User Data - * \li Visibilities - * \li Textures (diffuse, ambient, specular, etc.) (deprecated) - * - * A typical layer for a Mesh contains Normals, UVs and Materials. A typical layer for NURBS contains only Materials. - * In the case of the NURBS, the NURBS' parameterization is used for the UVs; no UVs should be specified. - * - * In most cases, you only need a single layer to describe a geometry. Many applications only support what is defined on the first layer. - * Take this into account when you fill the layer. For example, it is legal to define the Layer 0 with the UVs and then - * define the model's Normals on layer 1. However if you construct a file this way, it may not be imported correctly in other applications. - * Store the Normals in Layer 0 to avoid problems. - * - * Since FBX SDK 2011, Textures are connected to the properties of FbxSurfaceMaterial derived classes. - * FbxLayerElementTexture is no longer used. See the code example in FbxLayerElementTexture for how to connect a texture. - * - * Since FBX SDK 2011, texture layering is achieved by FbxLayeredTexture. See the code example in FbxLayeredTexture for how to blend textures. - * - * Normally, you can access layer from FbxLayerContainer like FbxGeometry. - * For example, - * \code - * FbxMesh* mesh; - * FbxLayer* layer0 = mesh->GetLayer(0); - * FbxLayerElementNormal* normals = layer0->GetNormals(); - * \endcode - * - * \nosubgrouping - * \see FbxLayerElement - * \see FbxLayerElementNormal - * \see FbxLayerElementBinormal - * \see FbxLayerElementTangent - * \see FbxLayerElementMaterial - * \see FbxLayerElementPolygonGroup - * \see FbxLayerElementUV - * \see FbxLayerElementVertexColor - * \see FbxLayerElementSmoothing - * \see FbxLayerElementCrease - * \see FbxLayerElementUserData - * \see FbxLayerElementHole - * \see FbxLayerElementVisibility - */ -class FBXSDK_DLL FbxLayer -{ - -public: - FBXSDK_FRIEND_NEW(); - - /** - * \name Layer Element Management - */ - //@{ - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - FbxLayerElementNormal* GetNormals(); - - /** Returns this layer's Normals description . - * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - const FbxLayerElementNormal* GetNormals() const; - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - FbxLayerElementTangent* GetTangents(); - - /** Returns this layer's Tangents description. - * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - const FbxLayerElementTangent* GetTangents() const; - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - FbxLayerElementBinormal* GetBinormals(); - - /** Returns this layer's Binormals description. - * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - const FbxLayerElementBinormal* GetBinormals() const; - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - FbxLayerElementMaterial* GetMaterials(); - - /** Returns this layer's Materials description. - * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. - */ - const FbxLayerElementMaterial* GetMaterials() const; - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - FbxLayerElementPolygonGroup* GetPolygonGroups(); - - /** Returns this layer's Polygon Groups description. - * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. - */ - const FbxLayerElementPolygonGroup* GetPolygonGroups() const; - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Returns this layer's UV description. - * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. - * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - const FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - - - /** Returns the number of different UV sets in this layer. - */ - int GetUVSetCount() const; - - /** Returns an array that describes which UV sets are in this layer. - */ - FbxArray GetUVSetChannels() const; - - /** Returns an array of UV sets in this layer. - */ - FbxArray GetUVSets() const; - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - FbxLayerElementVertexColor* GetVertexColors(); - - /** Returns this layer's Vertex Colors description. - * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - const FbxLayerElementVertexColor* GetVertexColors() const; - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - FbxLayerElementSmoothing* GetSmoothing(); - - /** Returns this layer's Smoothing description. - * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - const FbxLayerElementSmoothing* GetSmoothing() const; - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetVertexCrease(); - - /** Returns this layer's vertex crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetVertexCrease() const; - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - FbxLayerElementCrease* GetEdgeCrease(); - - /** Returns this layer's edge crease description. - * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. - * \remarks Crease info should only be defined when the geometry is FbxSubDiv. - */ - const FbxLayerElementCrease* GetEdgeCrease() const; - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - FbxLayerElementHole* GetHole(); - - /** Returns this layer's Hole description. - * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. - * \remarks Hole info should only be defined when the geometry is FbxMesh. - */ - const FbxLayerElementHole* GetHole() const; - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - FbxLayerElementUserData* GetUserData(); - - /** Returns this layer's User Data. - * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. - */ - const FbxLayerElementUserData* GetUserData() const; - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - FbxLayerElementVisibility* GetVisibility(); - - /** Returns this layer's visibility. - * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. - */ - const FbxLayerElementVisibility* GetVisibility() const; - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType); - - /** Returns this layer's Textures description. - * \param pType Layer element type, should be a texture type identifier. - * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. - */ - const FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType) const; - - /** Sets this layer's Textures description. - * \param pType Texture type identifier. - * \param pTextures A pointer to the Textures layer element, or \c NULL to remove the Textures definition. - */ - void SetTextures(FbxLayerElement::EType pType, FbxLayerElementTexture* pTextures); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. - */ - const FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Sets this layer's Normals description. - * \param pNormals A pointer to the Normals layer element, or \c NULL to remove the Normals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. - */ - void SetNormals(FbxLayerElementNormal* pNormals); - - /** Sets this layer's Binormals description. - * \param pBinormals A pointer to the Binormals layer element, or \c NULL to remove the Binormals definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. - */ - void SetBinormals(FbxLayerElementBinormal* pBinormals); - - /** Sets this layer's Tangents description. - * \param pTangents A pointer to the Tangents layer element, or \c NULL to remove the Tangents definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. - */ - void SetTangents(FbxLayerElementTangent* pTangents); - - /** Sets this layer's Materials description. - * \param pMaterials A pointer to the Materials layer element, or \c NULL to remove the Material definition. - */ - void SetMaterials(FbxLayerElementMaterial* pMaterials); - - /** Sets this layer's Polygon Groups description. - * \param pPolygonGroups A pointer to the Polygon Groups layer element, or \c NULL to remove the Polygon Group definition. - */ - void SetPolygonGroups(FbxLayerElementPolygonGroup* pPolygonGroups); - - /** Sets this layer's UVs description. - * \param pUVs A pointer to the UVs layer element, or \c NULL to remove the UV definition. - * \param pTypeIdentifier Layer element type, should be texture type. - * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. - * The NURBS/Patch parameterization is used as UV parameters to map a texture. - */ - void SetUVs(FbxLayerElementUV* pUVs, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Sets this layer's Vertex Colors description. - * \param pVertexColors A pointer to the Vertex Colors layer element, or \c NULL to remove the Vertex Color definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. - */ - void SetVertexColors (FbxLayerElementVertexColor* pVertexColors); - - /** Sets this layer's Smoothing description. - * \param pSmoothing A pointer to the Smoothing layer element, or \c NULL to remove the Smoothing definition. - * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. - */ - void SetSmoothing (FbxLayerElementSmoothing* pSmoothing); - - /** Sets this layer's Vertex Crease description. - * \param pCrease A pointer to the Vertex Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetVertexCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Edge Crease description. - * \param pCrease A pointer to the Edge Crease layer element, or \c NULL to remove the Crease definition. - * \remarks Crease should only be defined when the geometry is FbxSubDiv. - */ - void SetEdgeCrease (FbxLayerElementCrease* pCrease); - - /** Sets this layer's Hole description. - * \param pHole A pointer to the Hole layer element, or \c NULL to remove the Hole definition. - * \remarks Hole should only be defined when the geometry is FbxMesh. - */ - void SetHole (FbxLayerElementHole* pHole); - - /** Sets this layer's User Data. - * \param pUserData A pointer to the User Data layer element, or \c NULL to remove the User Data. - */ - void SetUserData (FbxLayerElementUserData* pUserData); - - /** Sets this layer's the visibility. - * \param pVisibility A pointer to the visibility layer element, or \c NULL to remove the visibility. - */ - void SetVisibility( FbxLayerElementVisibility* pVisibility ); - - /** Sets the specified type of layer element description for this layer. - * \param pLayerElement A pointer to the layer element, or \c NULL to remove the layer element. - * \param pType The required Layer element type. - * - Calling with eNormal is the equivalent of calling GetNormals(). - * - Calling with eBiNormal is the equivalent of calling GetBinormals(). - * - Calling with eTangent is the equivalent of calling GetTangents(). - * - Calling with eMaterial is the equivalent of calling GetMaterials(). - * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). - * - Calling with eUV is the equivalent of calling GetUVs(). - * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). - * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). - * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). - * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). - * - Calling with eUserData is the equivalent of calling GetUserData(). - * - Calling with eVisibility is the equivalent of calling GetVisibility(). - * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). - * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. - */ - void SetLayerElementOfType(FbxLayerElement* pLayerElement, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Creates the specified type of layer element description for this layer. - * \param pType The required Layer element type. - * \param pIsUV When \c true, requests the UV LayerElement that corresponds with the specified Layer Element type (only applies to - * TEXTURE type layer elements). - * \return A pointer to the newly created layer element, or \e NULL if the layer element has not been created for this layer. - */ - FbxLayerElement* CreateLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); - - /** Clone function. - * \param pSrcLayer The source layer to be cloned. - */ - void Clone(FbxLayer const& pSrcLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - //! Assignment operator. - FbxLayer& operator=(FbxLayer const& pSrcLayer); - //@} -private: - - FbxLayer(FbxLayerContainer& pOwner); - virtual ~FbxLayer(); - - void Clear(); - - FbxLayerContainer& mOwner; - - FbxLayerElement* mNonTexturesArray[FbxLayerElement::sTypeNonTextureCount]; - FbxLayerElementUV* mUVsArray[FbxLayerElement::sTypeTextureCount]; - FbxLayerElementTexture* mTexturesArray[FbxLayerElement::sTypeTextureCount]; - - - friend class FbxLayerContainer; - -public: - /** - * \name Serialization section - */ - //@{ - bool ContentWriteTo(FbxStream& pStream) const; - bool ContentReadFrom(const FbxStream& pStream); - //@} - virtual int MemoryUsage() const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** - * Utility macro for iterating over texture layer elements - */ -#define FBXSDK_FOR_EACH_TEXTURE(lLayerIndex) for((lLayerIndex)=0;(lLayerIndex)GetElementUV("map1"); - * FbxGeometryElementUV::DirectArrayType lDirectArray = lUVs->GetDirectArray(); - * int lDirectUVCount = lDirectArray.GetCount(); - * FbxVector2 lFirstUV = lDirectArray[0]; - * \endcode - * \see FbxGeometryBase - */ -typedef FbxLayerElement FbxGeometryElement; -typedef FbxLayerElementNormal FbxGeometryElementNormal; -typedef FbxLayerElementBinormal FbxGeometryElementBinormal; -typedef FbxLayerElementTangent FbxGeometryElementTangent; -typedef FbxLayerElementMaterial FbxGeometryElementMaterial; -typedef FbxLayerElementPolygonGroup FbxGeometryElementPolygonGroup; -typedef FbxLayerElementUV FbxGeometryElementUV; -typedef FbxLayerElementVertexColor FbxGeometryElementVertexColor; -typedef FbxLayerElementUserData FbxGeometryElementUserData; -typedef FbxLayerElementSmoothing FbxGeometryElementSmoothing; -typedef FbxLayerElementCrease FbxGeometryElementCrease; -typedef FbxLayerElementHole FbxGeometryElementHole; -typedef FbxLayerElementVisibility FbxGeometryElementVisibility; - -#undef FBXSDK_LAYER_ELEMENT_CREATE_DECLARE - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h deleted file mode 100755 index 598b303..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayercontainer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ -#define _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ - -#include - -#include -#include - -#include - -/** \brief Contains a collection of FbxLayer objects. - * This class is used for managing layers construction, destruction and access. - * See FbxLayerElement for more details. - * \nosubgrouping - * \see FbxLayer - */ -class FBXSDK_DLL FbxLayerContainer : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLayerContainer,FbxNodeAttribute); -public: - - /** Returns the type of node attribute. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** - * \name Layer Management - */ - //@{ - - /** Creates a new layer on top of existing layers. - * \return Index of created layer or -1 if an error occurs. - */ - int CreateLayer(); - - //! Deletes all layers. - void ClearLayers(); - - /** Returns the number of layers. - * \return The number of layers. - */ - int GetLayerCount() const; - - /** Returns the number of layers that contain the specified layer element type. - * \param pType The specified Layer Element type. - * \param pUVCount When \c true, requests the UV layer element corresponding to the specified texture type. - * \return The number of layers containing the specified layer element type. - */ - int GetLayerCount(FbxLayerElement::EType pType, bool pUVCount=false) const; - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex); - - /** Returns the layer at the specified index. - * \param pIndex Layer index. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex) const; - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false); - - /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. - * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. - * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). - * \param pIndex Layer index. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Pointer to the layer, or \c NULL if pIndex is out of range. - */ - const FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Returns the global index of the n'th layer as specified by pIndex that contains the specified layer element type. - * \param pIndex Layer index of the specified type. - * \param pType The specified layer element type. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Global index of the n'th layer as specified by pIndex that contains the specified layer element type, or -1 if the layer is not found. - * \remarks The returned index is the position of the layer in the global array of layers. - * You can use the returned index to call GetLayer(int pIndex). - */ - int GetLayerIndex(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - - /** Converts the layer's global index to a type-specific index. - * \param pGlobalIndex The index of the layer in the global array of layers. - * \param pType The type upon which the type-specific index will be returned. - * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. - * \return Layer index of the specified layer element type, or -1 if the layer element type is not found on the layer. - */ - int GetLayerTypedIndex(int pGlobalIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; - //@} - - /** Converts the reference mode from eDirect to eIndexToDirect. - * \param pLayer The Layer to convert. - * \return \c True if conversion is successful, or \c false otherwise. - * \remarks For the time being, this method only applies to the LayerLementType eMaterial - */ - bool ConvertDirectToIndexToDirect(int pLayer); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - int GTC(FbxUInt i, int j); - void* GT (int i, FbxUInt l, int j); - int AT (void* t, FbxUInt l, int j); - int GTI(const char* n, FbxUInt l, int j); - int GMC(FbxUInt i, void* n = NULL); - void* GM (int i, FbxUInt l, void* n = NULL); - int AM (void* m, FbxUInt l, void* n = NULL, bool b = false); - int GMI(const char* n, FbxUInt l, void* d = NULL); - - int AddToLayerElementsList(FbxLayerElement* pLEl); - void RemoveFromLayerElementsList(FbxLayerElement* pLEl); - -protected: - void Destruct(bool pRecursive) override; - - void CopyLayers(const FbxLayerContainer* pLayerContainer); - - void SetDocument(FbxDocument* pDocument) override; - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - FbxArray mLayerArray; - FbxArray mLayerElementsList; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlight.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlight.h deleted file mode 100755 index 48846a6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlight.h +++ /dev/null @@ -1,273 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlight.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ - -#include - -#include - -#include - -class FbxTexture; - -/** \brief This node attribute contains methods for accessing the properties of a light. - * \nosubgrouping - */ -class FBXSDK_DLL FbxLight : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute); - -public: - /** - * \name Light Properties - */ - //@{ - /** \enum EType Light types. - * - \e ePoint - * - \e eDirectional - * - \e eSpot - * - \e eArea - * - \e eVolume - */ - enum EType - { - ePoint, - eDirectional, - eSpot, - eArea, - eVolume - }; - - /** \enum EDecayType Decay types. Used for setting the attenuation of the light. - * - \e eNone No decay. The light's intensity will not diminish with distance. - * - \e eLinear Linear decay. The light's intensity will diminish linearly with the distance from the light. - * - \e eQuadratic Quadratic decay. The light's intensity will diminish with the squared distance from the light. - * This is the most physically accurate decay rate. - * - \e eCubic Cubic decay. The light's intensity will diminish with the cubed distance from the light. - */ - enum EDecayType - { - eNone, - eLinear, - eQuadratic, - eCubic - }; - - /** \enum EAreaLightShape Supported area light types. - * - \e eRectangle Rectangle (or often called a plane) area light type. - * - \e eSphere Area light that illuminate all directions. - */ - enum EAreaLightShape - { - eRectangle, - eSphere - }; - - /** Set the shadow texture for the light. - * \param pTexture The texture cast by the light shadow. - */ - void SetShadowTexture(FbxTexture* pTexture); - - /** Get the light state. - * \return Pointer to the texture cast by the light shadow, or \c NULL if the shadow texture has not been set. - */ - FbxTexture* GetShadowTexture() const; - //@} - - /** - * \name Properties - */ - //@{ - /** This property handles the light type. - * - * Default value is ePoint - */ - FbxPropertyT LightType; - - /** This property handles the cast light on object flag. - * - * Default value is true - */ - FbxPropertyT CastLight; - - /** This property handles the draw volumetric light flag. - * - * Default value is true - */ - FbxPropertyT DrawVolumetricLight; - - /** This property handles the draw ground projection flag. - * - * Default value is true - */ - FbxPropertyT DrawGroundProjection; - - /** This property handles the draw facing volumetric projection flag. - * - * Default value is false - */ - FbxPropertyT DrawFrontFacingVolumetricLight; - - /** This property handles the light color. - * - * Default value is (1.0, 1.0, 1.0) - */ - FbxPropertyT Color; - - /** This property handles the light intensity. - * - * Default value is 100.0 - */ - FbxPropertyT Intensity; - - /** This property handles the light inner cone angle (in degrees). Also know as the HotSpot - * - * Default value is 45.0 - */ - FbxPropertyT InnerAngle; - - /** This property handles the light outer cone angle (in degrees). Also known as the Falloff - * - * Default value is 45.0 - */ - FbxPropertyT OuterAngle; - - /** This property handles the light fog intensity - * - * Default value is 50.0 - */ - FbxPropertyT Fog; - - /** This property handles the decay type - * - * Default value is eNone - */ - FbxPropertyT DecayType; - - /** This property handles the decay start distance - * - * Default value is 0.0 - */ - FbxPropertyT DecayStart; - - /** This property handles the gobo file name - * - * Default value is "" - */ - FbxPropertyT FileName; - - /** This property handles the enable near attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableNearAttenuation; - - /** This property handles the near attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationStart; - - /** This property handles the near end attenuation - * - * Default value is 0.0 - */ - FbxPropertyT NearAttenuationEnd; - - /** This property handles the enable far attenuation flag - * - * Default value is false - */ - FbxPropertyT EnableFarAttenuation; - - /** This property handles the far attenuation start distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationStart; - - /** This property handles the attenuation end distance - * - * Default value is 0.0 - */ - FbxPropertyT FarAttenuationEnd; - - /** This property handles the cast shadow flag - * - * Default value is false - */ - FbxPropertyT CastShadows; - - /** This property handles the shadow color - * - * Default value is (0.0, 0.0, 0.0) - */ - FbxPropertyT ShadowColor; - - /** This property handles type when LightType is eArea - * - * Default value is eRectangle - */ - FbxPropertyT AreaLightShape; - - /** This property handles the left barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT LeftBarnDoor; - - /** This property handles the right barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT RightBarnDoor; - - /** This property handles the top barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT TopBarnDoor; - - /** This property handles the bottom barn door angle - * - * Default value is 20.0 - */ - FbxPropertyT BottomBarnDoor; - - /** This property handles active status of barn doors - * - * Default value is false - */ - FbxPropertyT EnableBarnDoor; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeAttribute::EType GetAttributeType() const override; - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h deleted file mode 100755 index efa2129..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlimitsutilities.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ -#define _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ - -#include - -#include -#include -#include - -#include - -/** \brief This class represent a utility of limits for transforms. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxLimitsUtilities -{ -public: - /** \enum EType Limit Type. - * - \e eTranslation Translation type - * - \e eRotation Rotation type - * - \e eScaling Scale type - */ - enum EType - { - eTranslation, - eRotation, - eScaling - }; - - /** \enum ERotationType Rotation type. - * - \e eQuaternion Quaternion rotation type - * - \e eEuler Euler rotation type - */ - enum ERotationType - { - eQuaternion, - eEuler - }; - - /** \enum ERotationClampType Rotation clamp type. - * - \e eRectangular Rectangular clamp type - * - \e eEllipsoid Ellipsoid clamp type - */ - enum ERotationClampType - { - eRectangular, - eEllipsoid - }; - - - FbxLimitsUtilities(FbxNode* pNode); - - /** - * \name Getter/Setter functions - */ - //@{ - void SetAuto(EType pType, bool pAuto); - bool GetAuto(EType pType) const; - - void SetEnable(EType pType, bool pEnable); - bool GetEnable(EType pType) const; - - void SetDefault(EType pType, FbxVector4 pDefault); - FbxVector4 GetDefault(EType pType) const; - - void SetMin(EType pType, FbxVector4 pMin); - FbxVector4 GetMin(EType pType) const; - - void SetMax(EType pType, FbxVector4 pMax); - FbxVector4 GetMax(EType pType) const; - - void SetRotationType(ERotationType pType); - ERotationType GetRotationType() const; - - ERotationClampType GetRotationClampType() const; - - void SetRotationAxis(FbxVector4 pRotationAxis); - FbxVector4 GetRotationAxis() const; - - void SetAxisLength(double pLength); - double GetAxisLength() const; - - void UpdateAutomatic(FbxNode* pNode); - FbxVector4 GetEndPointTranslation(FbxNode* pNode) const; - FbxVector4 GetEndSite(FbxNode* pNode) const; - //@} - - FbxNode* mNode; - double mAxisLength; -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxline.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxline.h deleted file mode 100755 index 6fb57de..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxline.h +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxline.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LINE_H_ -#define _FBXSDK_SCENE_GEOMETRY_LINE_H_ - -#include - -#include -#include - -#include - -/** A line is a geometry made of points. To be different from curves(nurbs, etc), line is linear. -* The class can define a line with as many points as needed. The line can also represent line segments, which means there will be gaps among points. -* To denote line segments and these gaps, certain points could be marked as end points. That's why we supply an index array(mPointArray) and an end point array(mEndPointArray). -* To mark a point as end point, we add its index(of mPointArray) to mEndPointArray. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. -* To initialize control point count, please use FbxLine::InitControlPoints(int pCount). -* To set a control point, please use FbxLine::SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex). -* To get control point count, please use FbxLine::GetControlPointsCount(). -* To get a control point, please use FbxLine::GetControlPointAt(int pIndex). The pIndex could be returned by GetPointIndexAt(i). -*/ -class FBXSDK_DLL FbxLine : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxLine, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eLine. - */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Reset the line to default values. - * Frees and set to \c NULL all layers and clear the control point array, the index array and end points array. - */ - void Reset(); - - /** Sets the size of index array(mPointArray). - * \param pCount Specify the size of mPointArray. - */ - void SetIndexArraySize(int pCount); - - /** Return the size of index array(mPointArray). - * \return The number of points defined for this line. - */ - int GetIndexArraySize() const; - - /** Get the pointer to the index array. - * \return the pointer to the index array(mPointArray). - */ - inline FbxArray* GetIndexArray() { return &mPointArray;} - - /** Sets index array(mPointArray) at a specified index. - * \param pValue An index to a control point. Its range is from 0 to count of control point. - * \param pIndex The specified index to mPointArray. Its range is from 0 to size of mPointArray. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, pIndex will be automatically added to mEndPointArray. - * \return True on success, false on failure if pIndex is out of range. - */ - bool SetPointIndexAt(int pValue, int pIndex, bool pAsEndPoint = false); - - /** Gets the point index(i.e: an index to a control point) at the specified index. - * \param pIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return Return the index to the table of the control points. If pIndex is out of range, it will return -1. - */ - int GetPointIndexAt(int pIndex) const; - - /** Adds a point to the index array (mPointArray). - * \param pValue The index to a control point. Its range is from 0 to count of control point. - * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, current point index will be automatically added to mEndPointArray. - * \return True on success, false on failure if pValue is out of range. - */ - bool AddPointIndex(int pValue, bool pAsEndPoint = false); - - /** Get the pointer to the end point array. - * \return the pointer to the end points array(mEndPointArray). - */ - inline FbxArray* GetEndPointArray() { return &mEndPointArray;} - - /** Adds a point index to the end point array (mEndPointArray). - * To mark it as end point, its index to mPointArray will be added to mEndPointArray. - * \param pPointIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. - * \return True on success, false on failure if pPointIndex is out of range. - * \remarks The point index in mEndPointArray should be incremental, otherwise, it will return false. - * To add pPointIndex, mEndPointArray will be automatically appended and resized. You never have to set count or resize for mEndPointArray. - * Below is the code sample: - * \code - * int lIndexCount = lLine->GetIndexArraySize(); - * for(int i = 0; i < lIndexCount; i++) - * { - * if(i%2 == 1) - * { - * lLine->AddEndPoint(i); - * } - * } - * \endcode - */ - bool AddEndPoint(int pPointIndex); - - /** Gets the point index(an index to the point index array) at the specified index. - * \param pEndPointIndex The specified index to the end points array(mEndPointArray). Its range is from 0 to size of mEndPointArray. - * \return Return the index to the point index array(mPointArray). If pEndPointIndex is out of range, it will return -1. - * \remarks Below is the code sample: - * \code - * int lEndPointsCount = lLine->GetEndPointCount(); - * for (int j = 0; j < lEndPointsCount; j++) - * { - * //Get the index to the index array. - * int lEndIndex = lLine->GetEndPointAt(j); - * // to get the control point index of the end point - * int lControlPointIndex = lLine->GetPointIndexAt(lEndIndex); - * } - * \endcode - */ - int GetEndPointAt(int pEndPointIndex) const; - - /** Query the number of end points. - * \return Return the size of end point array(mEndPointArray). - */ - int GetEndPointCount() const; - - /** This property decide whether this line is renderable in 3DSMax. - * Lines from Maya are not renderable by default. - */ - FbxPropertyT Renderable; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -private: - FbxArray mPointArray; - FbxArray mEndPointArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LINE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h deleted file mode 100755 index cc615aa..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxlodgroup.h +++ /dev/null @@ -1,322 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlodgroup.h -#ifndef _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ -#define _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ - -#include - -#include - -#include - -/** Defines a LOD (Level of Detail) group. - * This LodGroup node is a group node that can be used to detect how - * close a group of objects is to a camera. Typically this node is - * used for controlling "Level of Detail" visibility. - * - * Properties in the class are designed according to Maya implementation. - * So these properties may be incompatible with other software, like 3ds Max. - * - * In Maya, with "Level of Detail",the visibility of the children of this - * transform are controlled by the distance of a group to the camera and the - * threshold values. - * - * For example, under a LOD group node, there are three children: - * ship_detailed, ship_medium, and ship_rough. There are 2 threshold - * values: 5, 10. When the camera is less than 5 units away of the group - * bounding box, only ship_detailed is visible. When the view is zoomed out and - * the camera is between 5 and 10 units away from the group, only ship_medium is - * visible. Finally, when the view is zoomed out more and the camera is 10 or - * more units away from the group, only ship_rough is visible. - * - * This node attribute contains the properties of a null node. - * - * Example code to create LODGroup: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * // Array lChildNodes contains geometries of all LOD levels - * for (int j = 0; j < lChildNodes.GetCount(); j++) - * { - * lLodGroup->AddChild(lChildNodes.GetAt(j)); - * } - * \endcode - * - * This object can also be configured to define thresholds as percentage values. - * Typically, these percentage values represent the ratio between the group bounding - * box height (in screen space) and the viewing screen height. - * - * To switch to this mode, the client application must set the value of the - * ThresholdsUsedAsPercentage property to "true" before the calls to the AddThreshold/ - * SetThreshold methods. Client applications should always check the return value of - * these methods to validate that the action was successful. - * - * Note that, for backward compatibility, the data is always stored as FbxDistance type. - * The client application should always check the return value of this method to validate - * that the argument contains a meaningful value (see GetThreshold for more details). - * - * Example code to create LODGroup that store percentage values: - * \code - * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); - * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); - * lLodGroupAttr->ThresholdsUsedAsPercentage.Set(true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(33.3)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(66.6)) == true); - * FBX_ASSERT(lLodGroupAttr->AddThreshold(FbxDistance(0.6f, "cm")) == false); - * - * FbxDistance dval; - * FbxDouble val = 0.0; - * bool res; - * res = lLodGroupAttr->GetThreshold(0, val); // res = true, val = 33.3 - * res = lLodGroupAttr->GetThreshold(0, dval); // res = false, dval.value()=33.3 - * res = lLodGroupAttr->GetThreshold(2, val); // res = false, val = 1.0 - * \nosubgrouping - */ -class FBXSDK_DLL FbxLODGroup : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxLODGroup, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eLODGroup. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDisplayLevel types to determine how to display nodes in LODGroup. - * - \e eUseLOD Display the node according LOD threshold - * - \e eShow Always show this node - * - \e eHide Always hide this node - */ - enum EDisplayLevel - { - eUseLOD, - eShow, - eHide - }; - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - /** Specifies if the threshold values stored by this LOD object are defining - * a distance to the camera (by default) or a percentage value. - * - * \remarks This property needs to be set before any call to the Add\SetThreshold - * methods since its value is used to validate that the correct method is - * called. - * - * To access this property do: ThresholdsUsedAsPercentage.Get(). - * To set this property do: ThresholdsUsedAsPercentage.Set(bool). - * - * Default value is false - */ - FbxPropertyT ThresholdsUsedAsPercentage; - - /** - * \name Distance Mode - * The properties in this block are meaningful only if ThresholdsUsedAsPercentage - * is set to false and should be ignored otherwise. - */ - //@{ - /** This property handles the use of the Min/Max distances. - * Enables the minimum and maximum distance to take effect. - * For example, if the distance between the group and the camera is smaller - * than the minimum distance, then the whole group disappears. - * - * To access this property do: MinMaxDistance.Get(). - * To set this property do: MinMaxDistance.Set(bool). - * - * Default value is false. - */ - FbxPropertyT MinMaxDistance; - - /** The minimum distance at which the group is displayed. - * - * To access this property do: MinDistance.Get(). - * To set this property do: MinDistance.Set(double). - * - * Default value is -100 - */ - FbxPropertyT MinDistance; - - /** The maximum distance at which the group is displayed. - * - * To access this property do: MaxDistance.Get(). - * To set this property do: MaxDistance.Set(double). - * - * Default value is 100 - */ - FbxPropertyT MaxDistance; - - /** Work in world space of transform or local space If true, - * the camera distance to the LOD group will be computed in world space. - * This means it is possible to parent the LOD transform below other transforms - * and still have it work as expected. If this attribute is set to false, - * the distance computation ignores any parent transforms of the LOD transform. - * - * To access this property do: WorldSpace.Get(). - * To set this property do: WorldSpace.Set(bool). - * - * Default value is false - */ - FbxPropertyT WorldSpace; - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Methods - // - ////////////////////////////////////////////////////////////////////////// - - /** Get the number of elements in the threshold list. - * In correct situations, the size of this list is one less than the LOD node - * children objects count. - * \return The current size of the threshold list. - */ - int GetNumThresholds() const; - - /** Add a new threshold. - * \param pThreshValue Threshold value (distance). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool AddThreshold(const FbxDistance& pThreshValue); - - /** Add a new threshold. - * \param pThreshValue Threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks The thresholds list can only expand. Removing items is not - * possible unless a new FbxLODGroup is created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool AddThreshold(FbxDouble pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (distance). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=true. - */ - bool SetThreshold(int pEl, const FbxDistance& pThreshValue); - - /** Replace the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue New threshold value (percentage). - * \return true if successful and false otherwise. - * \remarks This method will fail if ThresholdsUsedAsPercentage=false. - */ - bool SetThreshold(int pEl, FbxDouble pThreshValue); - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=true. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDistance& pThreshValue) const; - - /** Get the value of the specified threshold. - * \param pEl Element index in the thresholds list. - * \param pThreshValue The current threshold value. - * \return true if successful and false otherwise. - * \remarks pThreshValue is left unchanged if a bad index is provided, - * else the value stored in the list is returned in pThreshValue - * but may be irrelevant if ThresholdsUsedAsPercentage=false. In - * this case, the return of this function will also be \c false. - */ - bool GetThreshold(int pEl, FbxDouble& pThreshValue) const; - - /** Get the number of elements in the displayLevel list. - * In correct situations, the size of this list equals the LOD node - * children objects count. - * \return The current size of the displayLevel list. - */ - int GetNumDisplayLevels() const; - - /** Add a new displayLevel value to the current list. - * - * The value overrides the display of any level and can force it to hide - * or show the object at that level. For example, if the distance between - * the group and the camera is smaller than the first threshold, then the - * object at level 0 is visible. If the display level for the object at - * level 2 is changed to eShow, ie. if the attribute displayLevel[2] is - * set to eShow, then the object at level 2 will show regardless of - * the current active level. - * - * \param pValue Display level value - * \return true if successful and false if any error occurred. - * \remarks Removing items is not possible unless a new FbxLODGroup is - * created to replace this one. - * \remarks This method does not check the received value and blindly adds it - * to the list. Identical values can exist in different positions in - * the list. - */ - bool AddDisplayLevel(FbxLODGroup::EDisplayLevel pValue); - - /** Set the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue New display level value. - * \return true if successful and false otherwise. - */ - bool SetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - - /** Get the display level value for the specified child object. - * \param pEl The index of the object. - * \param pValue the current display level value. - * \return true if successful and false otherwise. - * \remarks In case of failure, the pValue is left unchanged. - */ - bool GetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel& pValue) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -private: - int mNbThresholds; - FbxProperty mThresholds; - - bool RetrieveThreshold(int pEl, FbxDistance& pThreshValue) const; - bool StoreThreshold(int pEl, const FbxDistance& pThreshValue); - - int mNbDisplayLevels; - FbxProperty mDisplayLevels; - - bool DisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLODGroup::EDisplayLevel&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h deleted file mode 100755 index eb59ce3..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmarker.h +++ /dev/null @@ -1,283 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmarker.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MARKER_H_ -#define _FBXSDK_SCENE_GEOMETRY_MARKER_H_ - -#include - -#include - -#include - -/** This node attribute contains the properties of a marker. - * A FbxMarker can represent a motion capture marker or a HIK IK/FK effector. - * \nosubgrouping - */ -class FBXSDK_DLL FbxMarker : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxMarker, FbxNodeAttribute); - -public: - //! Return the type of node attribute which is EType::eMarker. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the marker to default values. - void Reset(); - - /** \enum EType Marker types. - * - \e eStandard - * - \e eOptical - * - \e eEffectorFK - * - \e eEffectorIK - */ - enum EType - { - eStandard, - eOptical, - eEffectorFK, - eEffectorIK - }; - - /** Set marker type. - * \param pType The type of marker. - */ - void SetType(EType pType); - - /** Get marker type. - * \return The type of the marker. - */ - EType GetType() const; - - /** \enum ELook Marker look. - * - \e eCube - * - \e eHardCross - * - \e eLightCross - * - \e eSphere - * - \e eCapsule - * - \e eBox - * - \e eBone - * - \e eCircle - * - \e eSquare - * - \e eStick - * - \e eNone - */ - enum ELook - { - eCube, - eHardCross, - eLightCross, - eSphere, - eCapsule, - eBox, - eBone, - eCircle, - eSquare, - eStick, - eNone - }; - - /** - * \name Default Animation Values - * This set of functions provides direct access to default - * animation values specific to a marker. The default animation - * values are found in the default take node of the associated node. - * Hence, these functions only work if the marker has been associated - * with a node. - */ - //@{ - - /** Get default occlusion. - * \return 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - double GetDefaultOcclusion() const; - - /** Set default occlusion. - * \param pOcclusion 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. - * \remarks This function only works if marker type is set to FbxMarker::eOptical. - */ - void SetDefaultOcclusion(double pOcclusion); - - /** Get default IK reach translation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachTranslation() const; - - /** Set default IK reach translation. - * \param pIKReachTranslation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachTranslation(double pIKReachTranslation); - - /** Get default IK reach rotation. - * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - double GetDefaultIKReachRotation() const; - - /** Set default IK reach rotation. - * \param pIKReachRotation A value between 0.0 and 100.0, 100.0 means complete IK reach. - * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. - */ - void SetDefaultIKReachRotation(double pIKReachRotation); - - /** Get default IK pull. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPull() const; - - /** Set default IK pull. - * \param pIKPull A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPull(double pIKPull); - - /** Get default IK pull hips. - * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - double GetDefaultIKPullHips() const; - - /** Set default IK pull hips. - * \param pIKPullHips A value between 0.0 and 100.0, 100.0 means complete IK pull. - * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. - */ - void SetDefaultIKPullHips(double pIKPullHips); - - //@} - - /** - * \name Obsolete functions - */ - //@{ - - /** Get default color. - * \param pColor Filled with appropriate data - * \return Input parameter filled with appropriate data. - * \remarks Marker color can not be animated anymore. - */ - FbxColor& GetDefaultColor(FbxColor& pColor) const; - - /** Set default color. - * \param pColor The marker color to be set. - * \remarks Marker color can not be animated anymore. - */ - void SetDefaultColor(FbxColor& pColor); - - //@} - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the marker's look. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * Default value is eCube - */ - FbxPropertyT Look; - - /** This property handles the marker's link visibility. - * - * To access this property do: DrawLink.Get(). - * To set this property do: DrawLink.Set(FbxBool). - * - * Default value is true - */ - FbxPropertyT DrawLink; - - /** This property handles the marker's size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100 - */ - FbxPropertyT Size; - - /** This property handles the marker's label visibility. - * - * To access this property do: ShowLabel.Get(). - * To set this property do: ShowLabel.Set(FbxBool). - * - * Default value is false - */ - FbxPropertyT ShowLabel; - - /** This property handles the marker's pivot position. - * - * To access this property do: IKPivot.Get(). - * To set this property do: IKPivot.Set(FbxDouble3). - * - * Default value is (0., 0., 0.) - */ - FbxPropertyT IKPivot; - - // Dynamic properties - - /** This method grants access to the occlusion property. - * \remarks If the marker is not of type Optical or the property - * is invalid, return NULL - */ - FbxProperty GetOcclusion() const; - - /** This method grants access to the IKReachTranslation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachTranslation() const; - - /** This method grants access to the IKReachRotation property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKReachRotation() const; - - /** This method grants access to the IKPull property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPull() const; - - /** This method grants access to the IKPullHips property. - * \remarks If the marker is not of type IK Effector or the property - * is invalid, return NULL - */ - FbxProperty GetIKPullHips() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void ConstructProperties(bool pForceSet) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mType; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxMarker::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MARKER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h deleted file mode 100755 index 1b0ab82..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxmesh.h +++ /dev/null @@ -1,833 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmesh.h -#ifndef _FBXSDK_SCENE_GEOMETRY_MESH_H_ -#define _FBXSDK_SCENE_GEOMETRY_MESH_H_ - -#include - -#include -#include - -#include - -/** A mesh is a geometry made of polygons. -* The class can define a geometry with as many n-sided polygons as needed. Users can freely -* mix triangles, quadrilaterals, and other polygons. Since the mesh-related terminology of the FBX SDK -* differs a little from the known standards, here are our definitions: -* \li A control point is an XYZ coordinate, it is synonym of vertex. -* \li A polygon vertex is an index to a control point (the same control point can be referenced by multiple polygon vertices). -* \li A polygon is a group of polygon vertices. The minimum valid number of polygon vertices to define a polygon is 3. -* \nosubgrouping -* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. */ -class FBXSDK_DLL FbxMesh : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxMesh, FbxGeometry); - -public: - /** Return the type of node attribute. - * \return Return the type of this node attribute which is \e EType::eMesh. */ - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \name Polygon Management */ - //@{ - /** Begins the process of adding a polygon to the mesh. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTexture Index of texture to assign to this polygon if texture mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pGroup Group index assigned to polygon. - * \param pLegacy When set to \c true, automatically create a LayerElement of type Texture; This was the default behavior of earlier - * versions of the FBX SDK. Since version 2010, the textures are connected to the material object. - * \remark This function must be called before AddPolygon(). - * \remark If used, the pTexture index will reference textures assigned to the DIFFUSE channel (FbxLayerElement::eTextureDiffuse). */ - void BeginPolygon(int pMaterial=-1, int pTexture=-1, int pGroup=-1, bool pLegacy=true); - - /** Begin writing a polygon. - * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. - * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. - * \param pTextures Array of index of texture (by texture type) to assign to this polygon if texture mapping type is \e eByPolygon. - * Otherwise it must be an array of \c -1. This array is expected to be of size: FbxLayerElement::sTypeTextureCount. If one texture - * type is not used, the corresponding entry must be left at \c -1. */ - void BeginPolygonExt(int pMaterial, int* pTextures); - - /** Add a polygon vertex to the current polygon. - * \param pIndex Index in the table of the control points. - * \param pTextureUVIndex Index of texture UV coordinates to assign to this polygon if texture UV mapping type is \e eByPolygonVertex. Otherwise it must be \c -1. - * \remark After adding all the polygons of the mesh, call function "BuildMeshEdgeArray" to generate edge data for the mesh. */ - void AddPolygon(int pIndex, int pTextureUVIndex = -1); - - //! End writing a polygon, it should be called after adding one polygon. - void EndPolygon(); - - /** Get the polygon count of this mesh. - * \return Return the number of polygons in the mesh. */ - inline int GetPolygonCount() const { return mPolygons.GetCount(); } - - /** Get the number of polygon vertices in a polygon. - * \param pPolygonIndex Index of the polygon. - * \return The number of polygon vertices in the indexed polygon. If the polygon index is out of bounds, return -1. */ - inline int GetPolygonSize(int pPolygonIndex) const - { - return ( pPolygonIndex >= 0 && pPolygonIndex < mPolygons.GetCount() ) ? mPolygons[pPolygonIndex].mSize : -1; - } - - /** Get the current group ID of the specified polygon. - * A polygon group can be useful to identify a number of polygons that share the same properties. The FBX SDK does not use this information internally - * but guarantee its persistence in the FBX files and in memory. - * \param pPolygonIndex Index of the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, return -1. */ - int GetPolygonGroup(int pPolygonIndex) const; - - /** Assign the specified polygon a group ID. - * A polygon can only be assigned to one group at the time. - * \param pPolygonIndex Index of the polygon. - * \param pGroup Group index assigned to the polygon. - * \return Group index assigned to the polygon. If the polygon index is out of bounds, do nothing. */ - inline void SetPolygonGroup(int pPolygonIndex, int pGroup) const - { - if( pPolygonIndex >= 0 && pPolygonIndex= 0 && pPolygonIndex < mPolygons.GetCount() && pPositionInPolygon >= 0 && pPositionInPolygon < mPolygons[pPolygonIndex].mSize ) ? - mPolygonVertices[mPolygons[pPolygonIndex].mIndex + pPositionInPolygon] : -1; - } - - /** Get the normal associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pNormal The returned normal. - * \return \c True on success, \c false on failure. - * \remark \c pNormal remain unchanged if the requested vertex does not exists. */ - bool GetPolygonVertexNormal(int pPolyIndex, int pVertexIndex, FbxVector4& pNormal) const; - - /** Get the normals associated with the mesh for every polygon vertex. - * \param pNormals The returned normals. - * \return \c True on success, \c false on failure. */ - bool GetPolygonVertexNormals(FbxArray& pNormals) const; - - /** Get the UV associated with the specified polygon vertex. - * \param pPolyIndex Index of the polygon. - * \param pVertexIndex Index of the vertex in the polygon. - * \param pUVSetName The name of the UV set that contains the UV. - * \param pUV The returned UV. - * \param pUnmapped State flag that indicates if the polygon vertex does not have an associated UV. - * \return \c True on success, \c false on failure. - * \remark \c pUV remain unchanged if the requested vertex does not exists. - * \remark This function return \c true if the specified polygon vertex does not have an associated UV. In this case, - * pUnampped is set to \c true and the content of \c pUV is undefined. - */ - bool GetPolygonVertexUV(int pPolyIndex, int pVertexIndex, const char* pUVSetName, FbxVector2& pUV, bool& pUnmapped) const; - - /** Get the UVs associated with the mesh for every polygon vertex. - * \param pUVSetName The name of the UV set that contains the UVs. - * \param pUVs The returned UVs. - * \param pUnmappedUVId If specified, this array will be filled with the indices of the UVs that are not associated to a polygon vertex and thus, - * have an undefined value. If the array as a size of 0, then all the polygon vertices have an associated UV coordinate and the \c pUVs - * array can be used as is. Otherwise, the calling application may be required to process the invalid UV coordinates to avoid inconsistent - * results. It is strongly suggested to use the FbxLayerElementUV's Direct and Indexed arrays directly (specially if the calling application - * supports indirection of the UVs). - * \remark unmapped UV coordinates are set to (0,0) - * \return \c True on success, \c false on failure. - */ - bool GetPolygonVertexUVs(const char* pUVSetName, FbxArray& pUVs, FbxArray* pUnmappedUVId = NULL) const; - - /** Get the array of polygon vertices (i.e: indices to the control points). - * This array is a concatenation of the list of polygon vertices of all the polygons. Example: a mesh made of 2 triangles with vertices [1,2,3] - * and vertices [2,3,4] results in [1,2,3,2,3,4]. The first polygon starts at position 0 and the second at position 3. - * \return The array of polygon vertices. */ - int* GetPolygonVertices() const; - - /** Gets the number of polygon vertices in the mesh. - * \return The overall size of the array of polygon vertices in the mesh. - * \remark This value can be smaller than the value returned by GetControlPointsCount() (meaning that not all of the control points stored in the object are used to define the mesh). - * However, typically it will be much bigger since any given control point can be used to define a vertex on multiple polygons. */ - inline int GetPolygonVertexCount() const { return mPolygonVertices.Size(); } - - /** Gets the start index into the array returned by GetPolygonVertices() for the given polygon. - * This method can be used for a faster access to the polygon vertices indices. If, for example, we want to - * access the indices for polygon 3, the following code would do the trick - * \code - * int lStartIndex = mesh.GetPolygonVertexIndex(3); - * if( lStartIndex == -1 ) return; - * int* lVertices = mesh.GetPolygonVertices()[lStartIndex]; - * int lCount = mesh.GetPolygonSize(3); - * for( int i = 0; i < lCount; ++i ) - * { - * int vertexID = lVertices[i]; - * ... - * } - * \endcode - * \param pPolygonIndex The polygon of interest. - * \return The index into the GetPolygonVertices() array. - * \remark If the polygon index is out of bounds, return -1. */ - int GetPolygonVertexIndex(int pPolygonIndex) const; - - /** Remove the specified polygon from the mesh. - * This method will automatically update the layers accordingly. - * \param pPolygonIndex Index of the polygon. - * \return Polygon index. - * \remark If the polygon index is out of bounds, return -1. */ - int RemovePolygon(int pPolygonIndex); - - /** Remove the duplicated edges from the mesh. - * This method will remove duplicated edges. It will not change any vertex and not change the mesh topology. - * \param pEdgeIndexList Index list of edges. - * \return the count of removed edges. - * \remark the edge index list must be ordered. The last one is the max. If the edge index is out of bounds, return -1. */ - int RemoveDuplicatedEdges(FbxArray& pEdgeIndexList); - //@} - - /** \name Texture UV Utility Functions. - * - * The methods found in this section are utility functions used to handle UV coordinates quickly. Internally, they - * refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. Except for the GetAllChannelUV(int pLayer), - * all the methods are implicitly working on Layer 0. Use the \c FbxLayer methods to have access to the other layers. */ - //@{ - /** Init texture UV coordinates. - * \param pCount Number of texture UV elements. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark \c pCount must equal the number of control points of the Mesh if - * the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void InitTextureUV(int pCount, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Add texture UV coordinates. - * Appends a new element at the end of the array of texture UV coordinates. - * \param pUV Texture UV coordinates, ranging between \c 0 and \c 1. - * \param pTypeIdentifier Specifies which texture channel this UV refers to. - * \remark The final number of texture UV elements must equal the number of control - * points if the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ - void AddTextureUV(FbxVector2 pUV, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of texture UV coordinates. - * \param pTypeIdentifier The texture channel the UV refers to. */ - int GetTextureUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get the number of layer containing at least one channel UVMap. - * return \e 0 if no UV maps have been defined. */ - int GetUVLayerCount() const; - - /** Fills an array describing, for the given layer, which texture channel have UVs associated to it. - * \param pLayer Index of the layer. - * \return Array with the channel descriptor. - * \remark Only the channels that have UVs associated are reported in the array. For example, let's assume that we have defined UVs for the Diffuse, - * Ambient and Bump channels on layer 0. The resulting array will have the following three entries: - * \li FbxLayerElement::eDIFFUSE_TEXTURE - * \li FbxLayerElement::eAMBIENT_TEXTURE - * \li FbxLayerElement::eBUMP_TEXTURE */ - FbxArray GetAllChannelUV(int pLayer); - //@} - - /** \name Material, Texture and UV Indices Utility Functions. - * The methods found in this section are utility functions used to handle Material, Texture and UV indices quickly. - * Internally, they refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. These functions are only - * working on Layer 0. Use the \c FbxLayer methods directly to access other layers. */ - //@{ - /** Initialize material indices. - * \param pMappingMode The mapping mode. - * This method must be called after FbxGeometryBase::InitControlPoints(). - * The material indices refer to the position of a material in the FbxLayerElementMaterial's direct array. - * See FbxLayerElementMaterial for more details. Supported mapping types are \e eByControlPoint, - * \e eByPolygon and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the material index array - * as there are control points. - * - If mapping mode is \e eByPolygon, there will be as many indices in the material index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the material index array. - * \remark This function will set the Reference mode of the FbxLayerElementMaterial on layer 0 to \e eIndexToDirect. */ - void InitMaterialIndices(FbxLayerElement::EMappingMode pMappingMode); - - /** Initialize texture indices. - * \param pMappingMode The mapping mode. - * The texture indices refer to the texture connection to the material. In older versions of the FBX SDK, the - * indices were referring to the entries in the direct array of the FbxLayerElementTexture. - * See FbxLayerElementTexture for more details. Supported mapping modes are \e eByPolygon - * and \e eALL_SAME. - * - If mapping mode is \e eByPolygon, there will be as many indices in the texture index array - * as there are polygons in the mesh. - * - If mapping mode is \e eALL_SAME, there will be only one index in the texture index array. - * \param pTextureType The texture channel identifier. - * \remark This function will set the Reference mode of the FbxLayerElementTexture on layer 0 to \e eIndexToDirect. */ - void InitTextureIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTextureType); - - /** Initialize texture UV indices. - * \param pMappingMode The mapping mode. - * The texture UV indices refer to the index of an element in the FbxLayerElementUV's direct array. - * See FbxLayerElementUV for more details. Supported mapping types are \e eByControlPoint , \e eByPolygonVertex - * and \e eALL_SAME. - * - If mapping mode is \e eByControlPoint, there will be as many indices in the UV index array - * as there are control points. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eDirect. - * - If mapping mode is \e eByPolygonVertex, there will be an index in the UV index array - * for each vertex, for each polygon it is part of. This will also set the Reference mode of the FbxLayerElementUV on - * layer 0 to \e eIndexToDirect. - * - If mapping mode is \e eALL_SAME, there will be no index in the UV index array. This will also set the Reference - * mode of the FbxLayerElementUV on layer 0 to \e eDirect. - * \param pTypeIdentifier The texture channel the UVIndices refers to. */ - void InitTextureUVIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Get a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \return Return a texture UV index. - * \remark This function only works if the texture UV mapping mode is set to \e eByPolygonVertex, - * otherwise it returns -1. */ - int GetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Set a texture UV index associated with a polygon vertex (i.e: an index to a control point). - * \param pPolygonIndex Index of polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). - * \param pPositionInPolygon Position of polygon vertex in indexed polygon. - * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). - * \param pIndex The index of the texture UV we want to assign to the polygon vertex. - * \param pTypeIdentifier The texture channel the UVIndex refers to. - * \remark This function only works if the texture UV mapping type is set to \e eByPolygonVertex. */ - void SetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, int pIndex, FbxLayerElement::EType pTypeIdentifier); - //@} - - /** \name Utility functions */ - //@{ - /** Reset the mesh to default values. - * Frees and set to \c NULL all layers and clear the polygon and the control point array. */ - void Reset(); - - /** Generate vertex normals on the mesh. - * The normal computation takes into consideration, as much as possible, the smoothing groups. - * \param pOverwrite If true, re-generate normals data regardless of availability, otherwise left untouched if exist. - * \param pByCtrlPoint If true, the recomputed normals will be defined by control points instead of by polygon vertex. - * \param pCW True if the normals are calculated clockwise, false otherwise (counter-clockwise). - * \return \c true if successfully generated normals data, or if already available and pOverwrite is false. */ - bool GenerateNormals(bool pOverwrite=false, bool pByCtrlPoint = false, bool pCW=false); - - /** Compares the normals calculated by doing cross-products between the polygon vertex and by the ones - * stored in the normal array. - * \returns \c false if ALL of them are Clockwise. Returns \c true otherwise. */ - bool CheckIfVertexNormalsCCW(); - - //! Internal structure used to keep the duplicate vertex information. - class DuplicateVertex - { - public: - DuplicateVertex() : - lVertexPolyIndex(0), - lNewVertexIndex(0), - lNormal(0, 0, 0), - lUV(0, 0), - lEdgeIndex(0) - { - } - - int lVertexPolyIndex; //!< Index in mPolygonsVertex where the vertex is found. - int lNewVertexIndex; //!< The new index of the vertex. - FbxVector4 lNormal; //!< The normal associated with this duplicate control point. - FbxVector2 lUV; //!< The UV associated with this duplicate control point. - int lEdgeIndex; //!< The edge index. - }; - - //! Internal structure used to compute the normals on a mesh - class VertexNormalInfo - { - public: - VertexNormalInfo() : - mTotalNormal(0, 0, 0), - mNumNormal(0) - { - } - - FbxVector4 mTotalNormal; //!< Sum of all the normals found. - int mNumNormal; //!< Number of normals added. - }; - - /** Verify if the mesh has polygons that are defined on the same point more than once. - * \return true if the mesh has that kind of polygon, false otherwise. */ - bool CheckSamePointTwice() const; - - /** Remove bad polygons from a mesh. - * Degenerate polygons use a vertex more than once. Remove them from the mesh and - * from the layer element indices as needed. - * \return Number of polygons removed from the mesh, -1 if an error occurred. */ - int RemoveBadPolygons(); - //@} - - /** \name Point Splitting/Merging utility functions */ - //@{ - /** Split points. - * \param pTypeIdentifier Specify which UVs are processed. - * \return \c true if a split occurred, false otherwise. - * \remark This method replaces the BuildSplitList and SplitPointsForHardEdge. */ - bool SplitPoints(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); - - /** Insert the new indexes of the object that have to be merged. - * \param pMergeList The list that will contain the indexes of the objects to merge. - * \param pExport If set to \c true, include the duplicate indexes in the merge list. */ - bool BuildMergeList(FbxArray& pMergeList, bool pExport=false); - - /** Merge the points specified in the list. - * \param pMergeList List containing the information on the points that will be merged. */ - void MergePointsForPolygonVerteNormals(FbxArray &pMergeList); - //@} - - /** \name Edge management functions */ - //@{ - /** Automatically generate edge data for the mesh. Clears all previously stored edge information */ - void BuildMeshEdgeArray(); - - /** Query the number of edges defined on this mesh - * \return The number of edges defined for this mesh */ - int GetMeshEdgeCount() const; - - /** Get the index for the edge between the given vertices. - * Note that the result of this method is the same if pStartVertexIndex and pEndVertexIndex are swapped. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pReversed flag will be set to true if the reverse edge is found, false otherwise. - * \param pExistedEdgeCount legal edge count in mEdgeArray - * \return -1 if no edge exists for the given pair of vertices. */ - int GetMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool& pReversed, int pExistedEdgeCount=-1); - - /** Use this method before calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * Once done calling GetMeshEdgeIndexForPolygon, call EndGetMeshEdgeIndex. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void BeginGetMeshEdgeIndexForPolygon(); - - /** Use this method after calling GetMeshEdgeIndexForPolygon if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ - void EndGetMeshEdgeIndexForPolygon(); - - /** Get the index for the specific edge of pPolygon. - * \param pPolygon The polygon of interest. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return -1 if the specific edge does not exist. - * \remark To optimize access time when making several calls to this method, enclose these calls - * between the BeginGetMeshEdgeIndexForPolygon() and EndGetMeshEdgeIndexForPolygon() calls. */ - int GetMeshEdgeIndexForPolygon(int pPolygon, int pPositionInPolygon); - - /** Get the vertices for the given edge. Note that the values returned are indices into the control point array. - * \param pEdgeIndex The edge to query. - * \param pStartVertexIndex The edge's starting point will be stored here. - * \param pEndVertexIndex The edge's starting point will be stored here. */ - void GetMeshEdgeVertices(int pEdgeIndex, int& pStartVertexIndex, int& pEndVertexIndex) const; - - /** Use this method before calling GetMeshEdgeVertices if making several calls to that method. - * Once done calling GetMeshEdgeVertices, call EndGetMeshEdgeVertices. This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void BeginGetMeshEdgeVertices(); - - /** Use this method after calling GetMeshEdgeVertices if making several calls to that method. - * This will optimize access time. - * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ - void EndGetMeshEdgeVertices(); - - /** Presets the number edge data elements. - * \param pEdgeCount The number of edges to allocate. */ - void SetMeshEdgeCount(int pEdgeCount); - - /** Sets element in edge array to specific value. - * \param pEdgeIndex The edge index - * \param pValue The edge data */ - inline void SetMeshEdge(int pEdgeIndex, int pValue){ if( pEdgeIndex >= 0 && pEdgeIndex < mEdgeArray.GetCount() ) mEdgeArray[pEdgeIndex] = pValue; } - - /** Add an edge with the given start/end points. Note that the inserted edge - * may start at the given end point, and end at the given start point. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \return Edge index of the new edge, or -1 on failure (edge/reverse edge already exists, no face using these 2 points consecutively ) */ - int AddMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates); - - /** Set the index for the edge with the given start/end points. Note that the edge - * may start at the given end point, and end at the given start point. - * \param pEdgeIndex The edge index of the edge. - * \param pStartVertexIndex The starting point of the edge. - * \param pEndVertexIndex The ending point of the edge. - * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. - * Can be set to false to speed up this method, when the incoming edges are known to be consistent. - * \param pExistedEdgeCount the valid edge count that we have created in edge array. This parameter only works when pCheckForDuplicates is true. - * The default value is -1 which meaning current edge array has been fully filled with valid edges, i.e., - * we will search the full edge array for the duplicated edge. - * \return Edge index of the edge, or -1 on failure (no face using these 2 points consecutively ), or -2 if edge/reverse edge already exists */ - int SetMeshEdgeIndex(int pEdgeIndex, int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates, int pExistedEdgeCount=-1); - - /** Call this before calling AddMeshEdgeIndex or SetMeshEdgeIndex to increase performance. - * Once finished adding/setting edges EndAddMeshEdgeIndex should be called. */ - void BeginAddMeshEdgeIndex(); - - /** After calling AddMeshEdgeIndex or SetMeshEdgeIndex, EndAddMeshEdgeIndex should be called. */ - void EndAddMeshEdgeIndex(); - - /** Adds an edge for the specified polygon, and edge number within the polygon. See SetMeshEdgeIndex for notes the the parameters. - * \param pPolygonIndex The polygon of interest. - * \param pPositionInPolygon The edge within the polygon - * \return edge index or -1 if failed. */ - int AddMeshEdgeIndexForPolygon(int pPolygonIndex, int pPositionInPolygon); - - /** Sets the specified edge to the specified polygon's edge. - * Note that the position in the polygon ranges from 0 to GetPolygonSize(pPolygonindex) - 1 - * and represents the edge from GetPolygonVertex(pPolygonIndex, pPositionInPolygon) to - * GetPolygonVertex( pPolygonIndex, pPositionInPolygon + 1 ) or from pPositionInPolygon to - * 0 if pPositionInPolygon == GetPolygonSize(pPolygonindex) - 1 - * \param pEdgeIndex The edge. - * \param pPolygonIndex The polygon. - * \param pPositionInPolygon The specific edge number in the polygon. - * \return true on success, false on failure. ( edge for the poly and position already exists ) */ - bool SetMeshEdgeIndex(int pEdgeIndex, int pPolygonIndex, int pPositionInPolygon); - - /** Determines if the mesh is composed entirely of triangles. - * \return true if all polygons are triangles, false otherwise */ - bool IsTriangleMesh() const; - //@} - - /** Reserve memory in the polygon array to hold the specified number of polygons - * \param pCount The number of polygons this mesh will hold */ - inline void ReservePolygonCount(int pCount) { mPolygons.Reserve(pCount); } - - /** Reserve memory in the polygon vertex array to hold the specified number of polygon vertices. - * \param pCount The number of polygon vertices */ - inline void ReservePolygonVertexCount(int pCount) { mPolygonVertices.Reserve(pCount); } - - bool GetTextureUV(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; - bool GetMaterialIndices(FbxLayerElementArrayTemplate** pLockableArray) const; - bool GetTextureIndices(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTextureType) const; - - /** \name Crease utility functions */ - //@{ - /** Get crease weight by edge index. - * \param pEdgeIndex Edge index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetEdgeCreaseInfo(int pEdgeIndex); - - /** Get crease edge array. - * \param pCreaseArray Edge crease data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetEdgeCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Get crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \return Crease weight value in the range [0.0 - 1.0]. */ - double GetVertexCreaseInfo(int pVertexIndex); - - /** Get vertex crease array. - * \param pCreaseArray Edge vertex data array. - * \return \c true if the pCreaseArray is filled successfully. */ - bool GetVertexCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); - - /** Set crease weight by edge index. - * \param pEdgeIndex Edge index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfo(int pEdgeIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Edge crease data. - * \return \c true if successfully set the crease weight. */ - bool SetEdgeCreaseInfoArray(FbxArray* pWeightArray); - - /** Set crease weight by vertex index. - * \param pVertexIndex Vertex index. - * \param pWeight Crease weight value in the range [0.0 - 1.0]. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfo(int pVertexIndex, double pWeight); - - /** Set crease weight data array. - * \param pWeightArray Vertex crease data. - * \return \c true if successfully set the crease weight. */ - bool SetVertexCreaseInfoArray(FbxArray* pWeightArray); - //@} - - /** \name Smooth mesh preview utility functions */ - //@{ - /** \enum ESmoothness Display Smoothness. - * It represents smooth mesh preview mode. This concept is not used in the FBX SDK but simply - * carried over so applications can access it and perform the appropriate tasks. */ - enum ESmoothness - { - eHull, //!< Default value, not active "smooth mesh preview". - eRough, //!< Not active "smooth mesh preview". - eMedium, //!< Both display cage and smooth mesh. - eFine //!< Display smooth mesh. - }; - - /** \enum EBoundaryRule the boundary rule. */ - enum EBoundaryRule - { - eLegacy, //!< Default value. - eCreaseAll, //!< Used for hard corner. - eCreaseEdge //!< Used for round corner. - }; - - /** Get display smoothness from mesh. - * \return Mesh smoothness. - * \remark It represents smooth mesh preview mode. */ - FbxMesh::ESmoothness GetMeshSmoothness() const; - - /** Set the mesh display smoothness mode. - * \param pSmoothness New smoothness factor. - * \remark It represents smooth mesh preview mode. */ - void SetMeshSmoothness(FbxMesh::ESmoothness pSmoothness); - - /** Get preview subdivision levels from mesh. - * \return Mesh preview subdivision levels. */ - int GetMeshPreviewDivisionLevels() const; - - /** Set mesh preview subdivision levels. - * \param pPreviewDivisionLevels Number of subdivisions levels. */ - void SetMeshPreviewDivisionLevels(int pPreviewDivisionLevels); - - /** Get render subdivision levels from mesh. - * \return Mesh render subdivision levels - * \remark Sometimes, render division level can be the same as preview level. */ - int GetMeshRenderDivisionLevels() const; - - /** Set mesh render subdivision levels. - * \param pRenderDivisionLevels Number of subdivision levels. */ - void SetMeshRenderDivisionLevels(int pRenderDivisionLevels); - - /** Query whether to display subdivisions isolines on mesh. - * \return The current state of the internal flag. */ - bool GetDisplaySubdivisions() const; - - /** Set the DisplySubdivisions state. - * \param pDisplySubdivisions New value for this flag. */ - void SetDisplaySubdivisions(bool pDisplySubdivisions); - - /** Get BoundaryRule from mesh. - * \return Current value of the internal state. */ - EBoundaryRule GetBoundaryRule() const; - - /** Set BoundaryRule for this mesh. - * \param pBoundaryRule New value for the internal state of this mesh. - * \remark BoundaryRule will affect the corners of smooth mesh. */ - void SetBoundaryRule(EBoundaryRule pBoundaryRule); - - /** Query whether to preserve borders when preview smooth mesh is enabled. - * \return The current state of the flag. */ - bool GetPreserveBorders() const; - - /** Set the state of the PreserveBorders flag. - * \param pPreserveBorders New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveBorders(bool pPreserveBorders); - - /** Query whether to preserve hard edges when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPreserveHardEdges() const; - - /** Set the state of the PreserveHardEdges flag. - * \param pPreserveHardEdges New value for this flag. - * \remark This flag value will affect smooth mesh preview results. */ - void SetPreserveHardEdges(bool pPreserveHardEdges); - - /** Query whether to PropagateEdgeHardness when preview smooth mesh. - * \return The current state of the flag. */ - bool GetPropagateEdgeHardness() const; - - /** Set state of the PropagateEdgeHardness flag. - * \param pPropagateEdgeHardness New value for this flag. - * \remark This flag will affect smooth mesh preview results. */ - void SetPropagateEdgeHardness(bool pPropagateEdgeHardness); - //@} - - /** \name Geometry hole management utility functions */ - //@{ - /** Get hole flag by face index (an index to a polygon). - * \param pFaceIndex Index of the queried polygon. - * \return The hole flag for the given face. */ - bool GetPolyHoleInfo(int pFaceIndex); - - /** Get hole flags Array. - * \param pHoleArray Hole flags array. - * \return \c true if the pHoleArray is filled successfully. */ - bool GetPolyHoleInfoArray(FbxLayerElementArrayTemplate** pHoleArray); - - /** Sets the flag indicating whether the face represents a hole or not. - * \param pFaceIndex Index of the processed polygon. - * \param pIsHole If \c true, this face represent a hole. - * \return \c true if successfully set the hole info. */ - bool SetPolyHoleInfo(int pFaceIndex, bool pIsHole); - - /** Set hole flags array. - * \param pHoleArray Hole flag array. - * \return \c true if successfully set the hole flags. */ - bool SetPolyHoleInfoArray(FbxArray* pHoleArray); - //@} - - /** \name Tangents data management utility functions */ - //@{ - /** Generate tangents data for UVSet with specific name. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetName The UVSet name to generate tangents data with. The UVSet on the first layer is the the default UVSet to generate. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(const char* pUVSetName=NULL, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - /** Generate tangents data for UVSet in specific layer. - * Note that the UV winding order is stored in the W component of the tangent. - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pUVSetLayerIndex The layer to generate tangents data with. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsData(int pUVSetLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - - - /** Generate tangents data for all UVSets in all layers. - * Note that the UV winding order is stored in the W component of the tangent: - * W = 1.0 (right-handed) - * W = -1.0 (left-handed) - * In the case of a left-handed tangent, this function automatically flips the - * resulting binormal to correct for mirrored geometry. - * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. - * \param pIgnoreTangentFlip If true, don't test for the tangent flip when deciding which smoothing group to assign. - * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ - bool GenerateTangentsDataForAllUVSets(bool pOverwrite=false, bool pIgnoreTangentFlip=false); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void Compact() override; - - //Please use GetPolygonVertexIndex and GetPolygonVertices to access these arrays. - //DO NOT MODIFY them directly, otherwise unexpected behavior will occur. - //These members are public only for application data copy performance reasons. - struct PolygonDef{ int mIndex; int mSize; int mGroup; }; - - FbxArray mPolygons; - FbxArray mPolygonVertices; - FbxArray mEdgeArray; - - //These are only used in context of triangulation to backup original polygon layout necessary for handling mesh cache after triangulation - FbxArray* mOriginalPolygons; - FbxArray* mOriginalPolygonVertices; - int mOriginalControlPointsCount; - - //Internal structure used to keep the mapping information between edges and polygons. - struct ComponentMap - { - FbxArray mData; // The array to store data. - FbxArray mOffsets; // The array to store the offsets of the data in mData. - - int GetDataCount(int pIndex) { return mOffsets[pIndex + 1] - mOffsets[pIndex]; } - int GetData(int pIndex, int pSubIndex) { return mData[ mOffsets[pIndex] + pSubIndex ]; } - int GetComponentCount() { return mOffsets.GetCount() - 1; } - }; - void ComputeComponentMaps(ComponentMap& pEdgeToPolyMap, ComponentMap& pPolyToEdgeMap); - - // Internal structure used to keep the mapping information between the control points and the - // vertices referencing them - class FBXSDK_DLL ControlPointToVerticesMap - { - public: - ControlPointToVerticesMap(); - ~ControlPointToVerticesMap(); - bool Valid(); - - void Fill(FbxMesh* pMesh); - - int GetCount(); - bool Init(int pNbEntries); - void Clear(); - - FbxArray* GetVerticesArray(int pControlPoint); - FbxArray* operator[](int pControlPoint); - - private: - FbxArray< FbxArray* > mMap; - }; - void ComputeControlPointToVerticesMap(ControlPointToVerticesMap& pMap); - - // this function will compare the vertex normals with the corresponding ones in pMesh and - // make them similar (i.e: if pMesh(NVi) == pMesh(NVj) then make this(NVi) == this(NVj)) - bool ConformNormalsTo(const FbxMesh* pMesh); - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ContentClear() override; - - void InitTextureIndices(FbxLayerElementTexture* pLayerElementTexture, FbxLayerElement::EMappingMode pMappingMode); - void RemoveTextureIndex(FbxLayerElementTexture* pLayerElementTextures, int pPolygonIndex, int pOffset); - void RemoveUVIndex(FbxLayerElementUV* pLayerElementUV, int pPolygonIndex, int pOffset); - - bool GetBadPolyIndices(FbxArray& pArrayBadPolyIndices, bool pCheckOne) const; - - struct SplitEdgeData { int mOriginalEdge; bool mIsNew; }; - - ESmoothness mSmoothness; - int mPreviewDivisionLevels; - int mRenderDivisionLevels; - - bool mDisplaySubdivisions; - EBoundaryRule mBoundaryRule; - bool mPreserveBorders; - bool mPreserveHardEdges; - bool mPropagateEdgeHardness; - - struct PolygonIndexDef { int mPolygonIndex; int mSubPolygonIndex; }; - - struct V2PVMap - { - PolygonIndexDef* mV2PV; - int* mV2PVOffset; - int* mV2PVCount; - FbxArray* > mPVEdge; - bool mValid; - - //Used for fast search in GetMeshEdgeIndexForPolygon this array does not follow the same allocation as the above ones because - //it is not used in the normal BeginAddMeshEdgeIndex(). It is filled only by the call to BeginGetMeshEdgeIndexForPolygon(). - FbxArray mV2Edge; - } mV2PVMap; - - struct EdgeLookupDef { FbxArray mPVFlags; bool mValid; } mPVEndFlags; - - //Finds the polygon index for the given edge - int FindPolygonIndex(int pEdgeIndex); - static int PolygonIndexCompare(const void* p1, const void* p2); - void PolySetTexture(FbxLayer* pLayer, int pTextureIndex, FbxLayerElement::EType pTextureType); - template bool GetPolygonVertexLayerElementIndex(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, int& pIndex) const; - template bool GetPolygonVertexLayerElementValue(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, T& pValue, bool pAllowUnmapped) const; - - friend class FbxGeometryConverter; - -private: - bool GenerateTangentsData(FbxLayerElementUV* pUVSet, int pLayerIndex, bool pOverwrite=false, bool pIgnoreTangentFlip = false); - void FillMeshEdgeTable(FbxArray& pTable, int* pValue, void (*FillFct)(FbxArray& pTable, int pIndex, int* pValue)); - void ComputeNormalsPerCtrlPoint(FbxArray& lNormalInfo, bool pCW=false); - void ComputeNormalsPerPolygonVertex(FbxArray& lNormalInfo, bool pCW=false); - void GenerateNormalsByCtrlPoint(bool pCW); - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_MESH_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnode.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnode.h deleted file mode 100755 index c438a66..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnode.h +++ /dev/null @@ -1,2391 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnode.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_H_ - -#include - -#include -#include - -#include - -class FbxStatus; -class FbxNodeAttribute; -class FbxCachedEffect; -class FbxLODGroup; -class FbxNull; -class FbxMarker; -class FbxSkeleton; -class FbxGeometry; -class FbxMesh; -class FbxNurbs; -class FbxNurbsCurve; -class FbxLine; -class FbxNurbsSurface; -class FbxTrimNurbsSurface; -class FbxPatch; -class FbxCamera; -class FbxCameraStereo; -class FbxCameraSwitcher; -class FbxLight; -class FbxOpticalReference; -class FbxSubDiv; -class FbxCharacter; -class FbxSurfaceMaterial; -class FbxAnimStack; -class FbxAnimCurveFilterMatrixConverter; - -/** Represents an element in the scene graph. A scene graph is a tree of FbxNode - * objects. The tree management services are self contained in this class. - * - * \note The FBX SDK does not test the validity of the constructed scene graph. It - * is the responsibility of the caller to make sure that it does not generate cyclic - * graphs in a node hierarchy. - * - * Besides the tree management, this class defines all the properties required to describe - * the position of the object in the scene. This information include the basic Translation, - * Rotation and Scaling properties and the more advanced options for pivots, limits, and IK joints - * attributes such the stiffness and dampening. - * - * When it is first created, the FbxNode object is "empty" (i.e: it is an object without any - * graphical representation that only contains the position information). In this state, it can - * be used to represent parents in the node tree structure but not much more. The normal use of - * this type of objects is to add them an attribute that will specialize the node (see the - * "Node Attribute Management" section). - * - * The node attribute is an object in itself and is connected to the the FbxNode. This also - * means that the same node attribute can be shared among multiple nodes. FbxCamera, FbxLight, - * FbxMesh, etc... are all node attributes and they all derive from the base class FbxNodeAttribute. - * - */ -class FBXSDK_DLL FbxNode : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNode, FbxObject); - -public: - /** - * \name Node Tree Management - */ - //@{ - /** Get the parent node. - * \return Pointer to parent node or \c NULL if the current node has no parent. - */ - FbxNode* GetParent(); - const FbxNode* GetParent() const; - - /** Add a child node and its underlying node tree. - * \param pNode Node we want to make child of \c this. - * \return \c true on success, \c false if \e pNode is \c NULL or the system is - * unable to make the connection. - * \remarks If \e pNode already has a parent, first it is removed from current parent and then - * added to this one. - */ - bool AddChild(FbxNode* pNode); - - /** Remove the child node. - * \param pNode The child node to be removed. - * \return The removed child node. - */ - FbxNode* RemoveChild(FbxNode* pNode); - - /** Get the number of children nodes. - * \param pRecursive If \c true the method will also count all the descendant children. - * \return Total number of children for this node. - */ - int GetChildCount(bool pRecursive = false) const; - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - FbxNode* GetChild(int pIndex); - - /** Get child by index. - * \param pIndex The child index. - * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). - */ - const FbxNode* GetChild(int pIndex) const; - - /** Finds a child node by name. - * \param pName Name of the searched child node. - * \param pRecursive Flag to request recursive calls. - * \param pInitial If set to \c true, the search compares the initial name of - * the node (see the FbxObject class) - * \return Found child node or \c NULL if no child node with this name exists. - */ - FbxNode* FindChild(const char* pName, bool pRecursive=true, bool pInitial=false); - //@} - - /** - * \name Node Target Management - * The FbxNode class allows the client to set a "follow" target node. This target - * forces the node to re-align itself so it points to the target. By default, the node - * uses its X axis as the aiming constraint. A rotation offset can be added to change - * this behavior. While the default relative orientation to the target (the X axis) is - * sufficient for the FBX cameras (with a (0,0,0) rotation vector, they are aiming - * along the X axis), this rotation offset becomes particularly useful with the lights - * objects because their default orientation (when they have a 0,0,0 rotation vector) is to - * point along the -Y axis and they need to be adjusted with a 90-degree offset on the Z axis. - * - * The FbxNode class also permits the use of node to define an Up-vector. By default, - * the node's up vector points towards the Up node. If the Up node is not specified, - * then the node's Up vector points towards the Y axis. Here too, a rotation offset can be - * added to change the default behavior. - * - * Of course, these offsets can be applied to anything, not only the cameras and lights. - * - * \note Objects in the FBX SDK are always created in the right handed, Y-Up system and need - * to be adjusted for any other axis system by explicitly convert them (the class - * FbxAxisSystem can help in that process). - * - */ - //@{ - /** The target must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTarget(FbxNode* pNode); - - /** Get the target for this node. - * \returns \c NULL if target isn't set. - */ - FbxNode* GetTarget() const; - - /** Set rotation offset from default relative orientation to target. - * \param pVector The rotation offset. - */ - void SetPostTargetRotation(FbxVector4 pVector); - - /** Get rotation offset from default relative orientation to target. - * \return The rotation offset. - */ - FbxVector4 GetPostTargetRotation() const; - - /** The target up node must be part of the same scene and it cannot be itself. - * \param pNode The target. - */ - void SetTargetUp(FbxNode* pNode); - - /** Get the target up node. - * \return \c NULL if the target up model isn't set. - */ - FbxNode* GetTargetUp() const; - - /** Set up vector offset from default relative target up vector. - * \param pVector The rotation offset. - */ - void SetTargetUpVector(FbxVector4 pVector); - - /** Get up vector offset from default relative target up vector. - * \return The up vector offset. - */ - FbxVector4 GetTargetUpVector() const; - //@} - - /** - * \name Node Display Parameters - */ - //@{ - /** Set the node Visibility value from the boolean parameter. - * \param pIsVisible Node is visible in the scene if set to \c true. - * \remarks This method checks for the validity of the property before attempting to - * set its value. In fact, the exact same result can be achieved by the following code: - * \code - * if( Visibility.IsValid() ) - * { - * Visibility.Set(FbxDouble(pIsVisible)); - * } - * \endcode - * - * \see Visibility property. - */ - void SetVisibility(bool pIsVisible); - - /** Get the current value of the Visibility property. - * \return \c false if the Visibility property value is 0.0 and \c true for any other value. - * \remarks This method expects the Visibility property to exist and to be valid. If this - * condition is not met, the returned value will be \c false. - */ - bool GetVisibility() const; - - /** \enum EShadingMode Shading modes. - * These shading modes are not directly used by the FBX SDK but it is guaranteed that the information is - * carried to and from the FBX files. The typical context of using these modes is to affect the rendering of - * geometric objects (this is, of course, performed at the application level) and the possible definition - * for each mode is: - */ - enum EShadingMode - { - eHardShading, //!< Solid geometries rendered with smooth surfaces - using the system light. - eWireFrame, //!< Geometries displayed in wire frame. - eFlatShading, //!< Solid geometries rendered faceted - using the system light. - eLightShading, //!< Solid geometries rendered with the scene lights. - eTextureShading, //!< Solid geometries rendered with smooth textured surfaces - using system light. - eFullShading //!< Solid geometries rendered with smooth textured surfaces and scene lights. - }; - - /** Set the shading mode. - * \param pShadingMode The shading mode. - */ - void SetShadingMode(EShadingMode pShadingMode); - - /** Get the shading mode. - * \return The currently set shading mode. - */ - EShadingMode GetShadingMode() const; - //@} - - /** - * \name Node Attribute Management - */ - //@{ - /** Set the node attribute. - * \param pNodeAttribute Node attribute object - * \return Pointer to previous node attribute object. - * \c NULL if the node didn't have a node attribute or if - * the new node attribute is equal to the one currently set. - * \remarks A node attribute can be shared between nodes. - * \remarks If this node has more than one attribute (added via the AddAttribute() method), this call - * will destroy all, but the default node attribute. - */ - FbxNodeAttribute* SetNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - FbxNodeAttribute* GetNodeAttribute(); - - /** Get the default node attribute. - * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(...). - * \return Pointer to the default node attribute or \c NULL if the node doesn't - * have a node attribute. - */ - const FbxNodeAttribute* GetNodeAttribute() const; - - //! Get the number of node attribute(s) connected to this node. - int GetNodeAttributeCount() const; - - /** Get the index, in the list of connected node attributes, of the node attribute that is set - * to be the default one. - * \return Index of the default node attribute or \c -1 if there is no default node attribute set. - */ - int GetDefaultNodeAttributeIndex() const; - - /** Set index of the default node attribute. - * \param pIndex Identifies which of the connected node attributes is becoming the default one. - * This value represent the connection number of the node. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeds or \c false if the passed index is invalid. - */ - bool SetDefaultNodeAttributeIndex(int pIndex, FbxStatus* pStatus = NULL); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex); - - /** Get the connected node attribute by specifying its index in the connection list. - * \param pIndex The connection number of the node. - * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. - */ - const FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex) const; - - /** Get the connection index of the specified node attribute. - * This method will do a linear search of all the connected node attributes (from the last to - * the first connection) until it finds \e pNodeAttribue. - * \param pNodeAttribute The pointer to the node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return The connection number of the node attribute or \c -1 if pNodeAttribute is \c NULL - * or not connected to this node. - */ - int GetNodeAttributeIndex(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL) const; - - /** Add the new node attribute to this node. - * If no other node attribute is already set as the default one, this new node attribute is - * automatically set as the default one. - * \param pNodeAttribute The pointer to a node attribute. - * \param pStatus The FbxStatus object to hold error codes. - * \return \c true if the operation succeeded or \c false if the operation failed. - * \remarks The failing conditions for this methods are: - * - The received object pointer is \c NULL. - * - The received object is already connected to this node. - * - An internal error prevented the connection to successfully complete. - */ - bool AddNodeAttribute(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL); - - /** Remove the node attribute from the connection list of this node. - * \param pNodeAttribute The pointer to a node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - */ - FbxNodeAttribute* RemoveNodeAttribute(FbxNodeAttribute* pNodeAttribute); - - /** Remove the node attribute, specified by the connection index, from the connection - * list of this node. - * \param pIndex Index of the node attribute. - * \return Pointer to the removed node attribute or \c NULL if the operation failed. - * \remarks If the specified node attribute is also the default one, its predecessor in - * the connection list will become the new default node attribute. And if there - * are no more predecessors, the node DefaultNodeAttributeIndex is reset to -1. - */ - FbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex); - - /** Get the default node attribute casted to a FbxCachedEffect pointer. - * \return Pointer to the cached effect object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCachedEffect* GetCachedEffect(); - - /** Get the default node attribute casted to a FbxLODGroup pointer. - * \return Pointer to the lod group object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLODGroup* GetLodGroup(); - - /** Get the default node attribute casted to a FbxNull pointer. - * \return Pointer to the null object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNull* GetNull(); - - /** Get the node attribute casted to a FbxMarker pointer. - * \return Pointer to the marker object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMarker* GetMarker(); - - /** Get the node attribute casted to a FbxSkeleton pointer. - * \return Pointer to the skeleton object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSkeleton* GetSkeleton(); - - /** Get the node attribute casted to a FbxGeometry pointer. - * \return Pointer to the geometry object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - * \remarks For this method to succeed, the node attribute's GetAttributeType() must returns one of the - * following: - * - FbxNodeAttribute::eMesh - * - FbxNodeAttribute::eNurbs - * - FbxNodeAttribute::eNurbsSurface - * - FbxNodeAttribute::ePatch - * - FbxNodeAttribute::eNurbsCurve - * - FbxNodeAttribute::eBoundary - * - FbxNodeAttribute::eTrimNurbsSurface - * - FbxNodeAttribute::eSubDiv - * - FbxNodeAttribute::eLine - */ - FbxGeometry* GetGeometry(); - - /** Get the node attribute casted to a FbxMesh pointer. - * \return Pointer to the mesh object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eMesh. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxMesh* GetMesh(); - - /** Get the node attribute casted to a FbxNurbs pointer. - * \return Pointer to the nurb object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbs. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbs* GetNurbs(); - - /** Get the node attribute casted to a FbxNurbsSurface pointer. - * \return Pointer to the nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Get the node attribute casted to a FbxNurbsCurve pointer. - * \return Pointer to the nurbs curve object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eNurbsCurve. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxNurbsCurve* GetNurbsCurve(); - - /** Get the node attribute casted to a FbxLine pointer. - * \return Pointer to the line object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eLine. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLine* GetLine(); - - /** Get the node attribute casted to a FbxTrimNurbsSurface pointer. - * \return Pointer to the trim nurbs surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eTrimNurbsSurface. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxTrimNurbsSurface* GetTrimNurbsSurface(); - - /** Get the node attribute casted to a FbxSubDiv pointer. - * \return Pointer to the subdivision surface object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::eSubDiv. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxSubDiv* GetSubdiv(); - - /** Get the node attribute casted to a FbxPatch pointer. - * \return Pointer to the patch object. - * \remarks This method will try to process the default node attribute first. If it cannot - * find it, it will scan the list of connected node attributes and get the first - * object that is a FbxNodeAttribute::ePatch. - * \remarks If the above search failed to get a valid pointer or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxPatch* GetPatch(); - - /** Get the node attribute casted to a FbxCamera pointer. - * \return Pointer to the camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCamera* GetCamera(); - const FbxCamera* GetCamera() const; - - /** Get the node attribute casted to a FbxCameraStereo pointer. - * \return Pointer to the stereo camera object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraStereo* GetCameraStereo(); - - /** Get the node attribute casted to a FbxCameraSwitcher pointer. - * \return Pointer to the camera switcher object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxCameraSwitcher* GetCameraSwitcher(); - - /** Get the node attribute casted to a FbxLight pointer. - * \return Pointer to the light object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxLight* GetLight(); - const FbxLight* GetLight() const; - - /** Get the node attribute casted to a FbxOpticalReference pointer. - * \return Pointer to the optical reference object. - * \remarks If the type cast failed because there is not default node attribute set or it cannot - * be successfully casted, this method will return \c NULL. - */ - FbxOpticalReference* GetOpticalReference(); - //@} - - /** - * \name Transformation propagation - * This set of functions provides direct access to the transformation propagations settings - * of the FbxNode. These settings determine how transformations must be applied when - * evaluating a node's transformation matrix. The possible values are: - * - eInheritRrSs : Scaling of parent is applied in the child world after the local child rotation. - * - eInheritRSrs : Scaling of parent is applied in the parent world. - * - eInheritRrs : Scaling of parent does not affect the scaling of children. - */ - //@{ - /** Sets how child transforms are inherited from parent transforms. - * \param pInheritType One of the following values eInheritRrSs, eInheritRSrs or eInheritRrs - */ - void SetTransformationInheritType(FbxTransform::EInheritType pInheritType); - - //! Get transformation inherit type. - void GetTransformationInheritType(FbxTransform::EInheritType& pInheritType) const; - //@} - - /** - * \name Pivot Management - * Pivots are used to specify translation, rotation and scaling centers in coordinates - * relative to a node's origin. - * A node has two pivot contexts defined by the EPivotSet enumeration. The node's animation - * data can be converted from one pivot context to the other. Each context can be set to be - * either active or passive (reference). By default the two pivot contexts are passive. They - * need to be active to be processed during the evaluation of the node final transformation - * matrix. In its passive state, a pivot context can still be accessed to retrieve its content - * for any other required purpose. Each pivot context stores values (as FbxVector4) for: - * \code - * - Rotation offset (Roff) - * - Rotation pivot (Rp) - * - Pre-rotation (Rpre) - * - Post-rotation (Rpost) - * - Scaling offset (Soff) - * - Scaling pivot (Sp) - * - Geometric translation (Gt) - * - Geometric rotation (Gr) - * - Geometric scaling (Gs) - * - * These values combine in the matrix form to compute the World transform of the node - * using the formula: - * - * World = ParentWorld * T * Roff * Rp * Rpre * R * Rpost * Rp-1 * Soff * Sp * S * Sp-1 - * \endcode - * - * The geometric transformation (Gt * Gr * Gs) is applied only to the node attribute and after - * the node transformations. This transformation is not inherited across the node hierarchy. - * - * \note Please refer to the FBX SDK programmers guide for more details. - * - * The application of the pivots is performed by calling the method ConvertPivotAnimationRecursive(). Typically, - * you set-up the eDestinationPivot context to match what your system can directly support and leave at (0,0,0) the - * attributes that are not supported by your system. When the values of a specific attribute in the - * two contexts (source and destination) are identical, the system considers that no adjustment is - * required because the attribute is directly supported in the destination world. - * - * Below is an example of code that shows how the pivot information could be setup before calling ConvertPivotAnimationRecursive(). - * \code - * FbxVector4 lZero(0,0,0); - * FbxVector4 lOne(1,1,1); - * pNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - * pNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - * - * EFbxRotationOrder lRotationOrder; - * pNode->GetRotationOrder(FbxNode::eSourcePivot , lRotationOrder); - * pNode->SetRotationOrder(FbxNode::eDestinationPivot , lRotationOrder); - * - * //For cameras and lights (without targets) let's compensate the postrotation. - * if( pNode->GetCamera() || pNode->GetLight() ) - * { - * if( !pNode->GetTarget() ) - * { - * FbxVector4 lRV(90, 0, 0); - * if( pNode->GetCamera() ) - * lRV.Set(0, 90, 0); - * - * FbxVector4 prV = pNode->GetPostRotation(FbxNode::eSourcePivot); - * FbxAMatrix lSourceR; - * FbxAMatrix lR(lZero, lRV, lOne); - * FbxVector4 res = prV; - * - * // Rotation order don't affect post rotation, so just use the default XYZ order - * FbxRotationOrder rOrder; - * rOrder.V2M(lSourceR, res); - * - * lR = lSourceR * lR; - * rOrder.M2V(res, lR); - * prV = res; - * pNode->SetPostRotation(FbxNode::eSourcePivot, prV); - * pNode->SetRotationActive(true); - * } - * - * // Point light do not need to be adjusted (since they radiate in all the directions). - * if( pNode->GetLight() && pNode->GetLight()->LightType.Get() == FbxLight::ePoint ) - * { - * pNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0,0,0,0)); - * } - * } - * // apply Pre rotations only on bones / end of chains - * if( pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorFK) - * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorIK) ) - * { - * if( pNode->GetRotationActive() ) - * { - * pNode->SetPreRotation(FbxNode::eDestinationPivot, pNode->GetPreRotation(FbxNode::eSourcePivot)); - * } - * - * // No pivots on bones - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * pNode->SetRotationOffset(FbxNode::eDestinationPivot,lZero); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, lZero); - * } - * else - * { - * // any other type: no pre-rotation support but... - * pNode->SetPreRotation(FbxNode::eDestinationPivot, lZero); - * - * // support for rotation and scaling pivots. - * pNode->SetRotationPivot(FbxNode::eDestinationPivot, pNode->GetRotationPivot(FbxNode::eSourcePivot)); - * pNode->SetScalingPivot(FbxNode::eDestinationPivot, pNode->GetScalingPivot(FbxNode::eSourcePivot)); - * // Rotation and scaling offset are supported - * pNode->SetRotationOffset(FbxNode::eDestinationPivot, pNode->GetRotationOffset(FbxNode::eSourcePivot)); - * pNode->SetScalingOffset(FbxNode::eDestinationPivot, pNode->GetScalingOffset(FbxNode::eSourcePivot)); - * // - * // If we don't "support" scaling pivots, we can simply do: - * // pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); - * // pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); - * } - * \endcode - * - */ - //@{ - /** \enum EPivotSet Pivot context identifier. - */ - enum EPivotSet - { - eSourcePivot, //!< The source pivot context. - eDestinationPivot //!< The destination pivot context. - }; - - /** \enum EPivotState Pivot context state. - */ - enum EPivotState - { - ePivotActive, //!< The pivot context with this state is affecting the node's transform computation. - ePivotReference //!< The pivot context with this state is not used during the node transform computation but can be accessed for reference purposes. - }; - - /** Change the state of the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pPivotState The new state of the pivot context. - */ - void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState); - - /** Get the pivot context state. - * The returned value tells if this pivot context is used in the - * evaluation of the node transform or not. - * \param pPivotSet Specify which pivot context is queried. - * \param pPivotState The current state of the pivot set. - */ - void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const; - - /** Set rotation space - * Determine the rotation space (Euler or Spheric) and the rotation order. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pRotationOrder The new value for the pivot rotation order. - */ - void SetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder pRotationOrder); - - /** Get rotation order - * \param pPivotSet Specify which pivot context is queried. - * \param pRotationOrder The current value of the pivot rotation order. - */ - void GetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder& pRotationOrder) const; - - /** Set rotation space for limit only. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pUseForLimitOnly When set to \c true, the current rotation space - * (set with SetRotationOrder) define the rotation space for - * the limit only; leaving the rotation animation in - * Euler XYZ space. When set to \c false, the current rotation - * space defines the rotation space for both the limits and the - * rotation animation data. - */ - void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly); - - /** Get rotation space for limit only. - * \param pPivotSet Specify which pivot context is queried. - * \return The current rotation space limit flag value. - */ - bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const; - - /** Set the RotationActive state. - * \param pVal The new state of the property. - * \remarks When this flag is set to false, the RotationOrder, the Pre/Post rotation values - * and the rotation limits should be ignored. - */ - void SetRotationActive(bool pVal); - - /** Get the RotationActive state. - * \return The value of the RotationActive flag. - */ - bool GetRotationActive() const; - - /** Specify which Quaternion interpolation mode is used on the pivot context. - * \param pPivotSet Specify which pivot context is manipulated. - * \param pQuatIterp The new value. - * \remarks When the \e pPivotSet is eSourcePivot, this method also updates the value of the - * QuaternionInterpolate property. - */ - void SetQuaternionInterpolation(EPivotSet pPivotSet, EFbxQuatInterpMode pQuatIterp); - - /** Get the Quaternion interpolation mode of the pivot context. - * \param pPivotSet Specify which pivot context is queried. - * \return The current mode set on the pivot context. - */ - EFbxQuatInterpMode GetQuaternionInterpolation(EPivotSet pPivotSet) const; - - /** Set the rotation stiffness. - * The stiffness attribute is used by IK solvers to generate a resistance - * to a joint motion. The higher the stiffness the less it will rotate. - * Stiffness works in a relative sense: it determines the willingness of - * this joint to rotate with respect to the other joint in the IK chain. - * \param pRotationStiffness The rotation stiffness values are limited to - * the range [0, 100]. - */ - void SetRotationStiffness(FbxVector4 pRotationStiffness); - - /** Get the rotation stiffness - * \return The currently set rotation stiffness values. - */ - FbxVector4 GetRotationStiffness() const; - - /** Set the minimum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampRange specifies when the - * deceleration should start. - * \param pMinDampRange Angle, in degrees, where deceleration should start - */ - void SetMinDampRange(FbxVector4 pMinDampRange); - - /** Get the minimum damp range angles - * \return The currently set minimum damp range angles. - */ - FbxVector4 GetMinDampRange() const; - - /** Set the maximum damp range angles. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampRange specifies when the - * deceleration should start. - * \param pMaxDampRange Angle, in degrees, where deceleration should start - */ - void SetMaxDampRange(FbxVector4 pMaxDampRange); - - /** Get the maximum damp range angles - * \return The currently set maximum damp range angles. - */ - FbxVector4 GetMaxDampRange() const; - - /** Set the minimum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * lower boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MinDampStrength defines the - * rate of deceleration. - * \param pMinDampStrength Values are limited to the range [0, 100]. - */ - void SetMinDampStrength(FbxVector4 pMinDampStrength); - - /** Get the minimum damp strength - * \return The currently set minimum damp strength values. - */ - FbxVector4 GetMinDampStrength() const; - - /** Set the maximum damp strength. - * This attributes apply resistance to a joint rotation as it approaches the - * upper boundary of its rotation limits. This functionality allows joint - * motion to slow down smoothly until the joint reaches its rotation limits - * instead of stopping abruptly. The MaxDampStrength defines the - * rate of deceleration. - * \param pMaxDampStrength Values are limited to the range [0, 100]. - */ - void SetMaxDampStrength(FbxVector4 pMaxDampStrength); - - /** Get the maximum damp strength - * \return The currently set maximum damp strength values. - */ - FbxVector4 GetMaxDampStrength() const; - - /** Set the preferred angle. - * The preferredAngle attribute defines the initial joint configuration used - * by a single chain IK solver to calculate the inverse kinematic solution. - * \param pPreferedAngle Angle in degrees - */ - void SetPreferedAngle(FbxVector4 pPreferedAngle); - - /** Get the preferred angle - * \return The currently set preferred angle. - */ - FbxVector4 GetPreferedAngle() const; - - /** Set a translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the rotation pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationOffset(EPivotSet pPivotSet) const; - - /** Set rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the rotation pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetRotationPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get rotation pivot. - * The rotation pivot is the center of rotation in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetRotationPivot(EPivotSet pPivotSet) const; - - /** Set pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPreRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get pre-rotation in Euler angles. - * The pre-rotation is the rotation applied to the node before - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPreRotation(EPivotSet pPivotSet) const; - - /** Set post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). - */ - void SetPostRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get post-rotation in Euler angles. - * The post-rotation is the rotation applied to the node after the - * rotation animation data. - * \param pPivotSet Specify which pivot set to query. - * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetPostRotation(EPivotSet pPivotSet) const; - - /** Set a translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingOffset(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get the translation offset for the scaling pivot. - * The translation offset is in coordinates relative to the node's origin. - * \param pPivotSet Specify which pivot set to query the value. - * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingOffset(EPivotSet pPivotSet) const; - - /** Set scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The new position of the scaling pivot (the 4th component of the FbxVector4 is ignored). - */ - void SetScalingPivot(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get scaling pivot. - * The scaling pivot is the center of scaling in coordinates relative to - * the node's origin. - * \param pPivotSet Specify which pivot set to query. - * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). - */ - const FbxVector4& GetScalingPivot(EPivotSet pPivotSet) const; - - /** Set geometric translation - * The geometric translation is a local translation that is applied - * to a node attribute only. This translation is applied to the node attribute - * after the node transformations. This translation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X, Y, and Z translation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricTranslation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric translation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric translation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const; - - /** Set geometric rotation - * The geometric rotation is a local rotation that is applied - * to a node attribute only. This rotation is applied to the node attribute - * after the node transformations. This rotation is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z rotation values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricRotation(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric rotation - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric rotation (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const; - - /** Set geometric scaling - * The geometric scaling is a local scaling that is applied - * to a node attribute only. This scaling is applied to the node attribute - * after the node transformations. This scaling is not inherited across the - * node hierarchy. - * \param pPivotSet Specify which pivot set to modify. - * \param pVector The X,Y and Z scale values (the 4th component of the FbxVector4 is ignored). - */ - void SetGeometricScaling(EPivotSet pPivotSet, FbxVector4 pVector); - - /** Get geometric scaling - * \param pPivotSet Specify which pivot set to query. - * \return The current geometric scaling (the 4th component of the FbxVector4 is always 1). - */ - FbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const; - - /** Reset a pivot set to the default pivot context. - * If the node has a geometry, reset the geometry's pivot to the identity matrix. - * \param pPivotSet Pivot set to reset. - * \remarks The default pivot context is a context with all the vector attributes - * set to (0,0,0) except the GeometricScaling attribute that is reset to (1,1,1). - */ - void ResetPivotSet( FbxNode::EPivotSet pPivotSet ); - - /** Fully supports all the attributes defined in the pivot sets and can process animation data defined on different animation - * stacks. - * \param pAnimStack The animation stack on which the conversion will take place. If equals \c NULL, convert the animation on all the animation stacks. - * \param pConversionTarget If set to EPivotSet::eDestinationPivot, - * convert animation data from the EPivotSet::eSourcePivot pivot context - * to the EPivotSet::eDestinationPivot pivot context. Otherwise, the - * conversion is computed the other way around. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \remarks Due to the intrinsic properties of the mathematical operations performed, - * sometimes, it is necessary to resample animation curves to maintain the accurate - * conversion. When this resampling is required, the method will use the \e pFrameRate - * value to specify the number of samples. To avoid a huge number of keys in the animation - * curves, a constant key reducer filter (FbxKFCurveFilterConstantKeyReducer) is - * automatically applied to all the affected curves to remove as much consecutive keys - * that have the same value. This filter is private and its settings cannot be changed. - * It is possible that, after the filtering pass, the animations curves do not contain keys - * anymore. This is a normal result and does not affect the overall results. - * \note Although it is possible to call this method several times with a different - * AnimStack name, users must be aware that some pivot computation can irreversibly - * modify the geometric nodes with a cumulative effect of the \e GeometricTranslation, - * \e GeometricRotation and \e GeometricScaling which will produce undesirable results. It is recommended - * to call ConvertPivotAnimationRecursive with \p pAnimStackName = NULL and let the method convert - * the animation on all the Anim stacks at once. - * In the case when there are no geometric nodes in the scene tree, specifying the animation stack - * is safe and somewhat faster. - * If any transform limits are active, they are applied during the conversion and disabled. - */ - void ConvertPivotAnimationRecursive(FbxAnimStack* pAnimStack, EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true); - - /** Reset all the pivot sets to the default pivot context and convert the animation. - * \param pFrameRate Resampling frame rate in frames per second. - * \param pKeyReduce Apply or skip key reducing filter. - * \param pToNodeCenter: Reset pivots to node center if \c true, or retain pivot places if \c false. - * \param pForceResetLimits If \c true, this flag will reset all the Translation, Rotation and Scaling - * limits and clears the enabled flags. - * \remarks The resulting animation will be visually equivalent and all the pivots will be cleared. - * The conversion is performed on all animation stacks. - * \remarks Will recursively convert the animation of all the children nodes. - * \remarks The \e pForceResetLimits flag has a destructive behavior and should be used only in very - * limited cases where the values of the limits are not required after the call to this method. - * \remarks Currently, this function just works under RSrs inherit type if pToNodeCenter is set to \c false. - */ - void ResetPivotSetAndConvertAnimation(double pFrameRate=30.0, bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits=false); - - /** Set rotation pivot as node center recursively - * \param pParentGeometricOffset Offset vector to be applied. - */ - void SetRotationPivotAsCenterRecursive(FbxVector4 pParentGeometricOffset=FbxVector4()); - //@} - - /** - * \name Node Evaluation Functions - */ - //@{ - /** Retrieve the proper animation evaluator to use for this node. - * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ - FbxAnimEvaluator* GetAnimationEvaluator() const; - - /** Returns this node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting global transform of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeGlobalTransform(). - */ - FbxAMatrix& EvaluateGlobalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting local transform of the specified node for the specified time. - * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. - * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately - * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). - * This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTransform(). - */ - FbxAMatrix& EvaluateLocalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclTranslation property at the specified time. - * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclTranslation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTranslation(). - */ - FbxVector4& EvaluateLocalTranslation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclRotation property at the specified time. - * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclRotation property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalRotation(). - */ - FbxVector4& EvaluateLocalRotation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Returns this node's LclScaling property at the specified time. - * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. - * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. - * \param pPivotSet The pivot set to take into account - * \param pApplyTarget Applies the necessary transform to align into the target node - * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. - * \return The resulting value of LclScaling property of the specified node at the specified time. - * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalScaling(). - */ - FbxVector4& EvaluateLocalScaling(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); - - /** Compute the node's bounding box and its center in global coordinates. - * \param pBBoxMin The minimum value of the bounding box upon successful return. - * \param pBBoxMax The maximum value of the bounding box upon successful return. - * \param pBBoxCenter The center value of the bounding box upon successful return. - * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. - * \return \c true if successful, otherwise \c false. - * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ - bool EvaluateGlobalBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Compute closest ray intersection point with mesh attributes of this node (triangle meshes only!). - * \param pOut The closest intersection point from pRayOrigin location in pRayDir direction. Variable is unchanged if return value is \c false. - * \param pRayOrigin The origin location to cast the ray from. - * \param pRayDir The direction the cast ray to test mesh triangles from. - * \param pCulling If \c true, only test triangles that are front facing, otherwise test both sides. - * \param pTime The time to use to evaluate mesh deformations. - * \return \c true if a triangle intersect with the ray, otherwise \c false. - * \remark This function will automatically fail if the node's meshes are not triangulated. */ - bool EvaluateRayIntersectionPoint(FbxVector4& pOut, const FbxVector4& pRayOrigin, const FbxVector4& pRayDir, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - //@} - - /** - * \name Character Link - */ - //@{ - /** Get number of character links. - * \return The number of character links. - */ - int GetCharacterLinkCount() const; - - /** Get character link at given index. - * \param pIndex Index of character link. - * \param pCharacter Pointer to receive linked character if function succeeds. - * \param pCharacterLinkType Pointer to receive character link type if function succeeds, - * cast to \c FbxCharacterLink::Type. - * \param pNodeId Pointer to receive the node ID if function succeeds. This ID should be casted - * to \c FbxCharacter::ENodeId type when the character link type is \c eCharacterLink or - * \c eControlSetLink else to the \c FbxEffector::ENodeId type if the character link type is - * \c eControlSetEffector or \c eControlSetEffectorAux. - * \param pNodeSubId For internal use. - * \return \c false if the index is out of range or any of the pointer arguments is NULL. - */ - bool GetCharacterLink(int pIndex, FbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int* pNodeSubId); - - /** Looks if the given character link exists on this node. - * \param pCharacter Character searched. - * \param pCharacterLinkType Character link type searched. Its value must be one of - * the \c FbxCharacterLink::Type symbols.. - * \param pNodeId Node ID searched. If \e pCharacterLinkType is \c eCharacterLink or \c eControlSetLink - * the \e pNodeId value is casted to the \c FbxCharacter::ENodeId type. If the \e pCharacterLinkType - * is \c eControlSetEffector or \c eControlSetEffectorAux then the \e pNodeId is casted to the - * \c FbxEffector::ENodeId type. - * \param pNodeSubId For internal use. - * \return Index of found character link if it exists, -1 otherwise. - */ - int FindCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const; - //@} - - /** Find out start and end time of the animation curves for this node (and its children). - * \param pInterval This node's animation interval. - * \param pAnimStack Animation stack where to retrieve animation curves. - * \param pAnimLayerId Specific animation layer on the animStack to use. - * \return \c true if the node (or its children) is animated, \c false otherwise. - * \remarks If pAnimStack is left NULL, the function will try to get the first AnimStack that is connected - * to the scene. \e pAnimLayerId represent the index of the connection. For example, the call: - * \code - * lNode->GetAnimationInterval(span, myStack, 3); - * \endcode - * will scan all the animation curves of this node, and it's children, that are defined on the third - * animation layer of \c myStack. - */ - bool GetAnimationInterval(FbxTimeSpan& pInterval, FbxAnimStack* pAnimStack=NULL, int pAnimLayerId=0); - - /** - * \name Material Management - */ - //@{ - /** Add a material to this node. - * \param pMaterial The material to add. - * \return non-negative index of added material, or -1 on error. - */ - int AddMaterial(FbxSurfaceMaterial* pMaterial); - - /** Remove a material from this node. - * \param pMaterial The material to remove. - * \return true on success, false otherwise - */ - bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); - - /** - * \return The number of materials applied to this node. - * \remarks If this node has an instanced node attribute, it is possible - * to have a material applied to this node more than once. The material - * count may not reflect the distinct material count. - */ - int GetMaterialCount() const; - - /** Access a material on this node. - * \param pIndex Valid range is [0, GetMaterialCount() - 1] - * \return The pIndex-th material, or NULL if pIndex is invalid. - */ - FbxSurfaceMaterial* GetMaterial(int pIndex) const; - - /** Remove all materials applied to this node. - */ - void RemoveAllMaterials(); - - /** Find an applied material with the given name. - * \param pName The requested name - * \return an index to a material, or -1 if no applied material - * has the requested name. - */ - int GetMaterialIndex(const char* pName) const; - //@} - - /** - * \name Public and fast access Properties - */ - //@{ - /** This property contains the translation information of the node - * - * To access this property do: LclTranslation.Get(). - * To set this property do: LclTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclTranslation; - - /** This property contains the rotation information of the node - * - * To access this property do: LclRotation.Get(). - * To set this property do: LclRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT LclRotation; - - /** This property contains the scaling information of the node - * - * To access this property do: LclScaling.Get(). - * To set this property do: LclScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT LclScaling; - - /** This property contains the visibility information of the node. - * The assumed behavior of this property is to affect the visibility of the node, all the - * nodes attributes connected to it as well as all its descendants. This property can be - * animated. - * - * To access this property do: Visibility.Get(). - * To set this property do: Visibility.Set(FbxDouble). - * - * Default value is 1. - * \remarks \li This property holds values ranging from 0.0 to 1.0 where the value 0.0 means - * a totally invisible object, the value 1.0, a full visible object and anything inbetween, a - * percentage degree of visibility.\n - * - * \li Since not all the applications may support a degree of visibility, it is agreed that - * a value of 0.0 means invisible and anything else means visible. - * - * \see Show property. - */ - FbxPropertyT Visibility; - - /** This property contains the visibility inheritance flag that allow applications to modify - * the Visibility property interpretation. By default, this value is set to \c true because it is - * assumed (as explained in the Visibility property description) that the node visibility is inherited - * from its parent. In other words, applications should always process the Visibility property of the - * node and, depending on its value, decide whether or not the node has to be displayed. After - * this first assessment, check the node VisibilityInheritance flag. If its value is set to \c false then - * move to the next object, else use the parent's Visibility value and modify this node display state - * by performing the logical AND operation between this node Visibility property and its parent's. - * - * To access this property do: VisibilityInheritance.Get(). - * To set this property do: VisibilityInheritance.Set(FbxBool). - * - * Default value is \c true. - * \remarks This property is non-animatable and is not used inside the FBX SDK but it is guaranteed - * to exist in FBX files with version 7.2 and above. - * \see Visibility property. - */ - FbxPropertyT VisibilityInheritance; - - - /** This property contains the quaternion interpolate flag of the node - * - * To access this property do: QuaternionInterpolate.Get(). - * To set this property do: QuaternionInterpolate.Set(EFbxQuatInterpMode). - * - * Default value is eQuatInterpOff. - */ - FbxPropertyT QuaternionInterpolate; - - /** This property contains the rotation offset information of the node - * - * To access this property do: RotationOffset.Get(). - * To set this property do: RotationOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationOffset; - - /** This property contains the rotation pivot information of the node - * - * To access this property do: RotationPivot.Get(). - * To set this property do: RotationPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationPivot; - - /** This property contains the scaling offset information of the node - * - * To access this property do: ScalingOffset.Get(). - * To set this property do: ScalingOffset.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingOffset; - - /** This property contains the scaling pivot information of the node - * - * To access this property do: ScalingPivot.Get(). - * To set this property do: ScalingPivot.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingPivot; - - /** This property enables or disables the limit on translation. - * When set to \c false the object can translate in any direction without limitations. - * Else the - * \ref TranslationMinX, \ref TranslationMinY, \ref TranslationMinZ, - * \ref TranslationMaxX, \ref TranslationMaxY and \ref TranslationMaxZ flags are used to - * limit the translation on each individual axis. - * - * To access this property do: TranslationActive.Get(). - * To set this property do: TranslationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationActive; - - /** This property sets the minimum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMin.Get(). - * To set this property do: TranslationMin.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMin; - - /** This property sets the maximum translation values the object can occupy on each individual axis. - * - * To access this property do: TranslationMax.Get(). - * To set this property do: TranslationMax.Set(FbxDouble3). - * Default value is 0.,0.,0. - * - */ - FbxPropertyT TranslationMax; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinX.Get(). - * To set this property do: TranslationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinY.Get(). - * To set this property do: TranslationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinY; - - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. - * - * To access this property do: TranslationMinZ.Get(). - * To set this property do: TranslationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMinZ; - - /** This property enables or disables the limit on translation X. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxX.Get(). - * To set this property do: TranslationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxX; - - /** This property enables or disables the limit on translation Y. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxY.Get(). - * To set this property do: TranslationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxY; - - /** This property enables or disables the limit on translation Z. - * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. - * - * To access this property do: TranslationMaxZ.Get(). - * To set this property do: TranslationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT TranslationMaxZ; - - /** This property contains the rotation order information of the node - * - * To access this property do: RotationOrder.Get(). - * To set this property do: RotationOrder.Set(EFbxRotationOrder). - * Default value is eEulerXYZ. - * - */ - FbxPropertyT RotationOrder; - - /** This property contains the rotation space for limit only flag of the node. - * When set to \c true, the Rotation space is applied only on the limit data (provided the \ref RotationActive is - * also \c true). - * - * To access this property do: RotationSpaceForLimitOnly.Get(). - * To set this property do: RotationSpaceForLimitOnly.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationSpaceForLimitOnly; - - /** This property contains the x value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessX.Get(). - * To set this property do: RotationStiffnessX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessX; - - /** This property contains the y value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessY.Get(). - * To set this property do: RotationStiffnessY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessY; - - /** This property contains the z value of the rotation stiffness of the node - * - * To access this property do: RotationStiffnessZ.Get(). - * To set this property do: RotationStiffnessZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT RotationStiffnessZ; - - /** This property contains axis length information of the node - * - * To access this property do: AxisLen.Get(). - * To set this property do: AxisLen.Set(FbxDouble). - * - * Default value is 10. - */ - FbxPropertyT AxisLen; - - /** This property contains pre-rotation information of the node - * - * To access this property do: PreRotation.Get(). - * To set this property do: PreRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PreRotation; - - /** This property contains post-rotation information of the node - * - * To access this property do: PostRotation.Get(). - * To set this property do: PostRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT PostRotation; - - /** This property enables or disables the limit on rotation. - * When set to \c false the object can rotate in any direction without limitations. - * Else the - * \ref RotationMinX, \ref RotationMinY, \ref RotationMinZ, - * \ref RotationMaxX, \ref RotationMaxY and \ref RotationMaxZ flags are used to - * limit the rotation on each individual axis. - * \remarks The PreRotation value is applied before the limit, while the PostRotation is applied - * after the limit. - * - * To access this property do: RotationActive.Get(). - * To set this property do: RotationActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationActive; - - /** This property sets the minimum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMin.Get(). - * To set this property do: RotationMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMin; - - /** This property sets the maximum rotation values the object can occupy on each individual axis. - * - * To access this property do: RotationMax.Get(). - * To set this property do: RotationMax.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT RotationMax; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinX.Get(). - * To set this property do: RotationMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinY.Get(). - * To set this property do: RotationMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. - * - * To access this property do: RotationMinZ.Get(). - * To set this property do: RotationMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMinZ; - - /** This property enables or disables the limit on rotation X. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxX.Get(). - * To set this property do: RotationMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxX; - - /** This property enables or disables the limit on rotation Y. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxY.Get(). - * To set this property do: RotationMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxY; - - /** This property enables or disables the limit on rotation Z. - * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. - * - * To access this property do: RotationMaxZ.Get(). - * To set this property do: RotationMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT RotationMaxZ; - - /** This property contains inherit type information of the node - * - * To access this property do: InheritType.Get(). - * To set this property do: InheritType.Set(FbxTransform::EInheritType). - * - * Default value is eInheritRrSs. - */ - FbxPropertyT InheritType; - - /** This property enables or disables the limit on scaling. - * When set to \c false the object can scale in any direction without limitations. - * Else the - * \ref ScalingMinX, \ref ScalingMinY, \ref ScalingMinZ, - * \ref ScalingMaxX, \ref ScalingMaxY and \ref ScalingMaxZ flags are used to - * limit the scaling on each individual axis. - * - * To access this property do: ScalingActive.Get(). - * To set this property do: ScalingActive.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingActive; - - /** This property sets the minimum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMin.Get(). - * To set this property do: ScalingMin.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT ScalingMin; - - /** This property sets the maximum scaling values the object can occupy on each individual axis. - * - * To access this property do: ScalingMax.Get(). - * To set this property do: ScalingMax.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT ScalingMax; - - /** This property activates or disables the limit on scaling X. When active, the object scaling - * is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinX.Get(). - * To set this property do: ScalingMinX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinY.Get(). - * To set this property do: ScalingMinY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. - * - * To access this property do: ScalingMinZ.Get(). - * To set this property do: ScalingMinZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMinZ; - - /** This property enables or disables the limit on scaling X. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxX.Get(). - * To set this property do: ScalingMaxX.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxX; - - /** This property enables or disables the limit on scaling Y. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxY.Get(). - * To set this property do: ScalingMaxY.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxY; - - /** This property enables or disables the limit on scaling Z. - * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. - * - * To access this property do: ScalingMaxZ.Get(). - * To set this property do: ScalingMaxZ.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT ScalingMaxZ; - - /** This property contains geometric translation information of the node - * - * To access this property do: GeometricTranslation.Get(). - * To set this property do: GeometricTranslation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricTranslation; - - /** This property contains geometric rotation information of the node - * - * To access this property do: GeometricRotation.Get(). - * To set this property do: GeometricRotation.Set(FbxDouble3). - * - * Default value is 0.,0.,0. - */ - FbxPropertyT GeometricRotation; - - /** This property contains geometric scaling information of the node - * - * To access this property do: GeometricScaling.Get(). - * To set this property do: GeometricScaling.Set(FbxDouble3). - * - * Default value is 1.,1.,1. - */ - FbxPropertyT GeometricScaling; - - // IK Settings - ////////////////////////////////////////////////////////// - - /** This property contains the x component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeX.Get(). - * To set this property do: MinDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeX; - - /** This property contains the y component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeY.Get(). - * To set this property do: MinDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeY; - - /** This property contains the z component of the minimum damp range angles of the node - * - * To access this property do: MinDampRangeZ.Get(). - * To set this property do: MinDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampRangeZ; - - /** This property contains the x component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeX.Get(). - * To set this property do: MaxDampRangeX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeX; - - /** This property contains the y component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeY.Get(). - * To set this property do: MaxDampRangeY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeY; - - /** This property contains the z component of the maximum damp range angles of the node - * - * To access this property do: MaxDampRangeZ.Get(). - * To set this property do: MaxDampRangeZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampRangeZ; - - /** This property contains the x component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthX.Get(). - * To set this property do: MinDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthX; - - /** This property contains the y component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthY.Get(). - * To set this property do: MinDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthY; - - /** This property contains the z component of the minimum damp strength of the node - * - * To access this property do: MinDampStrengthZ.Get(). - * To set this property do: MinDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MinDampStrengthZ; - - /** This property contains the x component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthX.Get(). - * To set this property do: MaxDampStrengthX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthX; - - /** This property contains the y component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthY.Get(). - * To set this property do: MaxDampStrengthY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthY; - - /** This property contains the z component of the maximum damp strength of the node - * - * To access this property do: MaxDampStrengthZ.Get(). - * To set this property do: MaxDampStrengthZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT MaxDampStrengthZ; - - /** This property contains the x component of the preferred angle of the node - * - * To access this property do: PreferedAngleX.Get(). - * To set this property do: PreferedAngleX.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleX; - - /** This property contains the y component of the preferred angle of the node - * - * To access this property do: PreferedAngleY.Get(). - * To set this property do: PreferedAngleY.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleY; - - /** This property contains the z component of the preferred angle of the node - * - * To access this property do: PreferedAngleZ.Get(). - * To set this property do: PreferedAngleZ.Set(FbxDouble). - * - * Default value is 0. - */ - FbxPropertyT PreferedAngleZ; - - /////////////////////////////////////////////////////// - - /** This property contains lookat property of the node - * - * To access this property do: LookAtProperty.Get(). - * To set this property do: LookAtProperty.Set(FbxReference). - * - */ - FbxPropertyT LookAtProperty; - - /** This property contains the up vector property of the node - * - * To access this property do: UpVectorProperty.Get(). - * To set this property do: UpVectorProperty.Set(FbxReference). - * - */ - FbxPropertyT UpVectorProperty; - - /** This property contains the show information of the node. - * As opposed to the Visibility property, this one cannot be animated. The assumed behavior of - * this property is to represent the show/hide state of all the nodes attributes connected to this - * node only. - * - * To access this property do: Show.Get(). - * To set this property do: Show.Set(FbxBool). - * - * Default value is true. - * - * \remarks \li Because node attributes can be shared by multiple nodes (instances), the FBX SDK provides an utility - * function FbxScene::SyncShowPropertyForInstance() to propagates the same Show value across all the nodes - * referencing the node attribute. The applied logic is that as soon as one of these nodes has the Show - * property set to \c false, all will be set to \c false (basically it is an AND operation on all the - * Show flags). - * - * \li Depending on the support of the Show and Visibility properties that applications will implement, there - * may be conflicts with these two states. In this case, it is suggested that the Visibility property - * always overrides the Show. - * - * \see Visibility property. - */ - FbxPropertyT Show; - - /** This property contains negative percent shape support information of the node - * - * To access this property do: NegativePercentShapeSupport.Get(). - * To set this property do: NegativePercentShapeSupport.Set(FbxBool). - * - * Default value is true. - */ - FbxPropertyT NegativePercentShapeSupport; - - /** This property contains default attribute index information of the node - * - * To access this property do: DefaultAttributeIndex.Get(). - * To set this property do: DefaultAttributeIndex.Set(FbxInt). - * - * Default value is -1. - */ - FbxPropertyT DefaultAttributeIndex; - - /** This property contains manipulation state information of the node - * - * To access this property do: Freeze.Get(). - * To set this property do: Freeze.Set(FbxBool). - * - * Default value is false. - */ - FbxPropertyT Freeze; - - /** This property contains level of detail mode information of the node - * - * To access this property do: LODBox.Get(). - * To set this property do: LODBox.Set(FbxBool). - * - * True: Bounding box - * False: Geometry object is displayed. - * Default value is false. - */ - FbxPropertyT LODBox; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - class FBXSDK_DLL Pivot - { - public: - static const FbxVector4 sZeroVector; - static const FbxVector4 sOneVector; - - Pivot() - { - mRotationOffset = NULL; - mRotationPivot = NULL; - mPreRotation = NULL; - mPostRotation = NULL; - mScalingOffset = NULL; - mScalingPivot = NULL; - mGeometricTranslation = NULL; - mGeometricRotation = NULL; - mGeometricScaling = NULL; - Reset(); - } - ~Pivot() { Reset(); } - - void Reset() - { - FBX_SAFE_DELETE(mRotationOffset); - FBX_SAFE_DELETE(mRotationPivot); - FBX_SAFE_DELETE(mPreRotation); - FBX_SAFE_DELETE(mPostRotation); - FBX_SAFE_DELETE(mScalingOffset); - FBX_SAFE_DELETE(mScalingPivot); - FBX_SAFE_DELETE(mGeometricTranslation); - FBX_SAFE_DELETE(mGeometricRotation); - FBX_SAFE_DELETE(mGeometricScaling); - mRotationOrder = eEulerXYZ; - mRotationSpaceForLimitOnly = false; - mPivotState = FbxNode::ePivotReference; - mQuaternionInterpolate = eQuatInterpOff; - } - - inline const FbxVector4& GetRotationOffset() const { return (mRotationOffset) ? *mRotationOffset : sZeroVector; } - inline void SetRotationOffset(const FbxVector4& pV) - { - if( !mRotationOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationOffset = pV; - } - } - - inline const FbxVector4& GetRotationPivot() const { return (mRotationPivot) ? *mRotationPivot : sZeroVector; } - inline void SetRotationPivot(const FbxVector4& pV) - { - if( !mRotationPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mRotationPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mRotationPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mRotationPivot = pV; - } - } - - inline const FbxVector4& GetPreRotation() const { return (mPreRotation) ? *mPreRotation : sZeroVector; } - inline void SetPreRotation(const FbxVector4& pV) - { - if( !mPreRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPreRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPreRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPreRotation = pV; - } - } - - inline const FbxVector4& GetPostRotation() const { return (mPostRotation) ? *mPostRotation : sZeroVector; } - inline void SetPostRotation(const FbxVector4& pV) - { - if( !mPostRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mPostRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mPostRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mPostRotation = pV; - } - } - - inline const FbxVector4& GetScalingOffset() const { return (mScalingOffset) ? *mScalingOffset : sZeroVector; } - inline void SetScalingOffset(const FbxVector4& pV) - { - if( !mScalingOffset ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingOffset = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingOffset = pV; - } - } - - inline const FbxVector4& GetScalingPivot() const { return (mScalingPivot) ? *mScalingPivot : sZeroVector; } - inline void SetScalingPivot(const FbxVector4& pV) - { - if( !mScalingPivot ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mScalingPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mScalingPivot = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mScalingPivot = pV; - } - } - - inline const FbxVector4& GetGeometricTranslation() const { return (mGeometricTranslation) ? *mGeometricTranslation : sZeroVector; } - inline void SetGeometricTranslation(const FbxVector4& pV) - { - if( !mGeometricTranslation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricTranslation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricTranslation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricTranslation = pV; - } - } - - inline const FbxVector4& GetGeometricRotation() const { return (mGeometricRotation) ? *mGeometricRotation : sZeroVector; } - inline void SetGeometricRotation(const FbxVector4& pV) - { - if( !mGeometricRotation ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricRotation = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricRotation = pV; - } - } - - inline const FbxVector4& GetGeometricScaling() const { return (mGeometricScaling) ? *mGeometricScaling : sOneVector; } - inline void SetGeometricScaling(const FbxVector4& pV) - { - if( !mGeometricScaling ) - { - #if defined(__GNUC__) && (__GNUC__ < 4) - mGeometricScaling = FbxNew< FbxVector4 >((FbxVector4&)pV); - #else - mGeometricScaling = FbxNew< FbxVector4 >(pV); - #endif - } - else - { - *mGeometricScaling = pV; - } - } - - inline EFbxRotationOrder GetRotationOrder() const { return mRotationOrder; } - inline void SetRotationOrder(EFbxRotationOrder pROrder) { mRotationOrder = pROrder; } - inline bool GetRotationSpaceForLimitOnly() const { return mRotationSpaceForLimitOnly; } - inline void SetRotationSpaceForLimitOnly(bool pVal) { mRotationSpaceForLimitOnly = pVal; } - inline EFbxQuatInterpMode GetQuaternionInterpolate() const { return mQuaternionInterpolate; } - inline void SetQuaternionInterpolate(EFbxQuatInterpMode pVal) { mQuaternionInterpolate = pVal; } - inline FbxNode::EPivotState GetPivotState() const { return mPivotState; } - inline void SetPivotState(FbxNode::EPivotState pVal) { mPivotState = pVal; } - - private: - FbxVector4* mRotationOffset; - FbxVector4* mRotationPivot; - FbxVector4* mPreRotation; - FbxVector4* mPostRotation; - FbxVector4* mScalingOffset; - FbxVector4* mScalingPivot; - FbxVector4* mGeometricTranslation; - FbxVector4* mGeometricRotation; - FbxVector4* mGeometricScaling; - EFbxRotationOrder mRotationOrder; - bool mRotationSpaceForLimitOnly; - EFbxQuatInterpMode mQuaternionInterpolate; - FbxNode::EPivotState mPivotState; - }; - - class FBXSDK_DLL Pivots - { - public: - Pivots() - { - for( int i = 0; i < 2; i++ ) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - mPivot[i] = NULL; - } - } - - ~Pivots() - { - FbxDelete(mPivot[0]); - FbxDelete(mPivot[1]); - } - - Pivot& Get(int id) - { - FBX_ASSERT(id == 0 || id == 1); - if (mPivot[id] == NULL && mIsDefault[id]) - { - smDefaultPivot.SetPivotState(mPivotState[id]); - return smDefaultPivot; - } - - if (!mPivot[id]) - mPivot[id] = FbxNew< Pivot >(); - - FBX_ASSERT(mPivot[id] != NULL); - if (mPivot[id]) - mPivot[id]->SetPivotState(mPivotState[id]); - - return *mPivot[id]; - } - - #define MACRO_PIVOT_VECTOR_FCTS(name, defVect) \ - inline const FbxVector4& Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, const FbxVector4& pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - if (mIsDefault[id] && pV[0] == defVect[0] && pV[1] == defVect[1] && pV[2] == defVect[2]) return; \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_VECTOR_FCTS(RotationOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(RotationPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PreRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(PostRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingOffset, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(ScalingPivot, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricTranslation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricRotation, Pivot::sZeroVector); - MACRO_PIVOT_VECTOR_FCTS(GeometricScaling, Pivot::sOneVector); - - #define MACRO_PIVOT_BOOL_FCTS(name) \ - inline bool Get##name(int id) const \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - Pivot* p = mPivot[id]; \ - if (p == NULL) p = &smDefaultPivot; \ - return p->Get##name(); \ - }\ - inline void Set##name(int id, bool pV) \ - {\ - FBX_ASSERT(id == 0 || id == 1); \ - mIsDefault[id] = false; \ - Get(id).Set##name(pV); \ - } - - MACRO_PIVOT_BOOL_FCTS(RotationSpaceForLimitOnly); - - inline EFbxQuatInterpMode GetQuaternionInterpolate(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetQuaternionInterpolate(); - } - - inline void SetQuaternionInterpolate(int id, EFbxQuatInterpMode pV) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default eQuatInterpOff, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pV == eQuatInterpOff) return; - mIsDefault[id] = false; - Get(id).SetQuaternionInterpolate(pV); - } - - inline EFbxRotationOrder GetRotationOrder(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - Pivot* p = mPivot[id]; - if (p == NULL) p = &smDefaultPivot; - return p->GetRotationOrder(); - } - - inline void SetRotationOrder(int id, EFbxRotationOrder pROrder) - { - FBX_ASSERT(id == 0 || id == 1); - // If pivot has default values, and we want to set default rotation order eEulerXYZ, - // return to avoid allocating memory for the pivot (in Get(id).) - if (mIsDefault[id] && pROrder == eEulerXYZ) return; - mIsDefault[id] = false; - Get(id).SetRotationOrder(pROrder); - } - - inline FbxNode::EPivotState GetPivotState(int id) const - { - FBX_ASSERT(id == 0 || id == 1); - return mPivotState[id]; - } - - inline void SetPivotState(int id, FbxNode::EPivotState pVal) - { - FBX_ASSERT(id == 0 || id == 1); - if (pVal == FbxNode::ePivotReference) return; - mPivotState[id] = pVal; - if (mPivot[id]) - mPivot[id]->SetPivotState(pVal); - } - - #undef MACRO_PIVOT_VECTOR_FCTS - #undef MACRO_PIVOT_BOOL_FCTS - - void Reset() - { - smDefaultPivot.Reset(); - for (int i = 0; i < 2; i++) - { - mIsDefault[i] = true; - mPivotState[i] = FbxNode::ePivotReference; - if (mPivot[i]) mPivot[i]->Reset(); - } - } - - private: - Pivot* mPivot[2]; - FbxNode::EPivotState mPivotState[2]; - bool mIsDefault[2]; - static Pivot smDefaultPivot; - }; - - class FBXSDK_DLL LinkToCharacter - { - public: - bool operator==(LinkToCharacter& pLinkToCharacter) - { - if (mCharacter == pLinkToCharacter.mCharacter && - mType == pLinkToCharacter.mType && - mIndex == pLinkToCharacter.mIndex && - mSubIndex == pLinkToCharacter.mSubIndex) - { - return true; - } - else return false; - } - - FbxCharacter* mCharacter; - int mType; - int mIndex; - int mSubIndex; - }; - - void AddChildName(const char* pChildName); - char* GetChildName(FbxUInt pIndex) const; - FbxUInt GetChildNameCount() const; - - FbxTransform& GetTransform(); - FbxLimits& GetTranslationLimits(); - FbxLimits& GetRotationLimits(); - FbxLimits& GetScalingLimits(); - Pivots& GetPivots(); - - void UpdatePivotsAndLimitsFromProperties(); - void UpdatePropertiesFromPivotsAndLimits(); - - void SetRotationActiveProperty(bool pVal); - void PivotSetToMBTransform(EPivotSet pPivotSet); - - int AddCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - int RemoveCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); - - // Duplicate this node as well as all its node attributes and the Target and UpTarget objects. - FbxNode* DeepCloneWithNodeAttributes(); - - FbxObject& Copy(const FbxObject& pObject) override; - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - enum ECullingType - { - eCullingOff, - eCullingOnCCW, - eCullingOnCW - }; - - ECullingType mCullingType; - bool mCorrectInheritType; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - - void Reset(); - bool GetAnimationIntervalRecursive(FbxTimeSpan& pTimeInterval, FbxAnimLayer* pAnimLayer); - -private: - typedef FbxSet GeomInstSet; - - void ResetLimitsRecursive(FbxNode* pNode); - - void ConvertPivotAnimationRecurseLoop(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - bool ConvertPivotAnimation_SetupMatrixConverter(FbxAnimCurveFilterMatrixConverter& pConverter, const EPivotSet& pSrcSet, const EPivotSet& pDstSet, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); - void ConvertPivotAnimation_ApplyGeometryPivot(const EPivotSet& pSrcSet, const EPivotSet& pDstSet, GeomInstSet& pGeomInstSet); - - FbxTransform mTransform; - Pivots mPivots; - FbxObject* mAnimCurveNodeContainer; - FbxArray mChildrenNameList; - FbxVector4 mPostTargetRotation; - FbxVector4 mTargetUpVector; - FbxNode::EShadingMode mShadingMode; - FbxArray mLinkToCharacter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const EFbxRotationOrder&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTransform::EInheritType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const EFbxQuatInterpMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h deleted file mode 100755 index 309e4d2..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnodeattribute.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** \brief This class is the base class to all types of node attributes. - * \nosubgrouping - * A node attribute is the content of a node. A \c NULL node attribute is set - * by calling function FbxNode::SetNodeAttribute() with a \c NULL pointer. - */ -class FBXSDK_DLL FbxNodeAttribute : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxNodeAttribute, FbxObject); - -public: - //! Property Names - static const char* sColor; - - //! Property Default Values - static const FbxDouble3 sDefaultColor; - - /** This property handles the color. - * - * Default value is (0.8, 0.8, 0.8) - */ - FbxPropertyT Color; - - /** \enum EType Node attribute types. - * - \e eUnknown - * - \e eNull - * - \e eMarker - * - \e eSkeleton - * - \e eMesh - * - \e eNurbs - * - \e ePatch - * - \e eCamera - * - \e eCameraStereo, - * - \e eCameraSwitcher - * - \e eLight - * - \e eOpticalReference - * - \e eOpticalMarker - * - \e eNurbsCurve - * - \e eTrimNurbsSurface - * - \e eBoundary - * - \e eNurbsSurface - * - \e eShape - * - \e eLODGroup - * - \e eSubDiv - * - \e eCachedEffect - * - \e eLine - */ - enum EType - { - eUnknown, - eNull, - eMarker, - eSkeleton, - eMesh, - eNurbs, - ePatch, - eCamera, - eCameraStereo, - eCameraSwitcher, - eLight, - eOpticalReference, - eOpticalMarker, - eNurbsCurve, - eTrimNurbsSurface, - eBoundary, - eNurbsSurface, - eShape, - eLODGroup, - eSubDiv, - eCachedEffect, - eLine - }; - - /** Return the type of node attribute. - * This class is pure virtual. - */ - virtual FbxNodeAttribute::EType GetAttributeType() const; - - /** Return the node count using this attribute. - * \return The count of nodes with this attribute set. - */ - int GetNodeCount() const; - - /** Return the node this attribute is set to. - * \param pIndex The index of the node to retrieve - * \return Pointer to the node, or \c NULL if the current attribute is not set to a node. - */ - FbxNode* GetNode(int pIndex=0) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnull.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnull.h deleted file mode 100755 index c4fd558..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnull.h +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnull.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NULL_H_ -#define _FBXSDK_SCENE_GEOMETRY_NULL_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of a null node. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNull : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxNull, FbxNodeAttribute); - -public: - //! Returns the EType::eNull node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the default values. - void Reset(); - - /** - * \name Null Node Properties - */ - //@{ - - /** \enum ELook Null node look types. - * - \e eNone - * - \e eCross - */ - enum ELook - { - eNone, - eCross, - }; - - /** Returns the default size value. - * \return The default size of this object (100). - */ - double GetSizeDefaultValue() const; - - //@} - - /** - * \name Property Names - */ - //@{ - static const char* sSize; - static const char* sLook; - //@} - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const ELook sDefaultLook; - //@} - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the null node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * The default value is 100. - */ - FbxPropertyT Size; - - /** This property handles the look of the null node. - * - * To access this property do: Look.Get(). - * To set this property do: Look.Set(ELook). - * - * The default value is true - */ - FbxPropertyT Look; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - -public: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxNull::ELook&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NULL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h deleted file mode 100755 index 6adae31..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbs.h +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbs.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_H_ - -#include - -#include - -#include - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V coordinates. - - For more information on the meaning of form, knot vectors and control points, - see the FbxNurbsCurve documentation. The same rules apply for the NURBS curves - and NURBS surfaces, but NURBS surfaces have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbs : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbs node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry) - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** NURBS types. - */ - enum EType - { - ePeriodic, //!< Periodic. - eClosed, //!< Closed. - eOpen //!< Open. - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbs::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Returns multiplicity of U-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the U count. - * Its elements are set to 1 by default. - */ - int* GetUMultiplicityVector() const; - - /** Returns multiplicity of V-dimension control points. - * \return Pointer to the array of multiplicity values. - * \remarks The length of this vector is equal to the V count. - * Its elements are set to 1 by default. - */ - int* GetVMultiplicityVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS export flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUMultiplicityVectorError, - eVMultiplicityVectorError, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - int* mUMultiplicityVector; - int* mVMultiplicityVector; - - ESurfaceMode mSurfaceMode; - - // Export flags. - bool mApplyFlipUV; - bool mApplyFlipLinks; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h deleted file mode 100755 index a06c29e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h +++ /dev/null @@ -1,233 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbscurve.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ - -#include - -#include -#include - -#include - -/** - A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry. A NURBS - curve is defined by the order, form, knot vector and control points. - - Let M be the order of the curve. - Let N be the number of control points of the curve. - - The form of the curve can be open, closed or periodic. A curve with end points - that do not meet is defined as an open curve. The number of knots in an open curve - is defined as N+(M+1). - - A closed curve simply has its last control point equal to its first control point. - Note that this does not imply tangent continuity at the end point. The curve may - have a kink at this point. In FBX the last control point is not specified by the user - in the InitControlPoints() method. For example, if there are to be 10 control points in - total, and the curve is to be closed, than only 9 control points need to be passed - into the InitControlPoints() method. The last control point is implied to be equal - to the first control point. Thus N represents the number of unique CVs. - - A periodic curve has its last M control points equal to its first M control points. - A periodic curve is tangent continuous at the ends. Similar to a closed curve, - when creating a periodic curve, only the unique control points need to be set. For - example a periodic curve of order 3 with 10 control points requires only 7 CVs to - be specified in the InitControlPoints() method. The last 3 CVs, which are the same as - the first 3, are not included. - - The calculation of the number of knots in closed and periodic curves is more complex. - Since we have excluded one CV in N in a closed curve, the number of knots is N+(M+1)+1. - Similarly, we excluded M CVs in periodic curves so the number of knots is N+(M+1)+M. - - Note that FBX stores one extra knot at the beginning and and end of the knot vector, - compared to some other graphics applications such as Maya. The two knots are not - used in calculation, but they are included so that no data is lost when converting - from file formats that do store the extra knots. - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsCurve : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsCurve,FbxGeometry); - -public: - //! Returns the EType::eNurbsCurve node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** \enum EDimension The dimension of the CVs. - * - \e e2D The CVs are two dimensional points. - * - \e e3D The CVs are three dimensional points. - */ - enum EDimension - { - e2D = 2, - e3D - }; - - /** \enum EType The curve's form. - * - \e eOpen - * - \e eClosed - * - \e ePeriodic - */ - enum EType - { - eOpen, - eClosed, - ePeriodic - }; - - /** Allocates memory space for the control points array as well as for the knot - * vector. - * \param pCount Number of control points. - * \param pVType NURBS type. - * \remarks This function should always be called after FbxNurbsCurve::SetOrder(). - */ - void InitControlPoints( int pCount, EType pVType ); - - /** Returns the knot vector. - * \return Pointer to the knots array. - */ - inline double* GetKnotVector() const { return mKnotVector; } - - /** Returns the number of elements in the knot vector. - * \return The number of knots. - */ - int GetKnotCount() const; - - /** Sets the order of the curve. - * \param pOrder The curve order. - * \remarks The curve order must be set before InitControlPoints() is called. - */ - inline void SetOrder( int pOrder ) { mOrder = pOrder; } - - /** Returns the NURBS curve order. - * \return The NURBS curve order. - */ - inline int GetOrder() const { return mOrder; } - - /** Sets the step of the curve. - * \param pStep The curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline void SetStep( int pStep ) { mStep = pStep; } - - /** Returns the NURBS curve step. - * \return The NURBS curve step. - * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. - */ - inline int GetStep() const { return mStep; } - - /** Sets the dimension of the CVs. - * For 3D curves: control point = ( x, y, z, w ), where w is the weight. - * For 2D curves: control point = ( x, y, 0, w ), where the z component is unused, and w is the weight. - * \param pDimension The control points dimension(3D or 2D). - */ - inline void SetDimension( EDimension pDimension ) { mDimension = pDimension; } - - /** Returns the control points dimension. - * \return The curve dimension. - */ - inline EDimension GetDimension() const { return mDimension; } - - /** Determines if the curve is rational or not. - * \return \c True if the curve is rational, return \c false if not. - */ - bool IsRational(); - - /** Calculates the number of curve spans with the following: - * Where - * S = Number of spans - * N = Number of CVs - * M = Order of the curve - * - * S = N - M + 1; - * - * In this calculation N includes the duplicate CVs for closed and periodic curves. - * - * \return The number of curve spans if the curve has been initialized, returns -1 if the curve has not been initialized. - */ - int GetSpanCount() const; - - /** Returns NURBS type. - * \return NURBS type identifier. - */ - inline EType GetType() const { return mNurbsType; } - - /** Checks if the curve is a poly line. (A poly line is a - * linear NURBS curve ) - * - * \return \c True if curve is a poly line, return \c false if it is not a poly line. - */ - inline bool IsPolyline() const { return ( GetOrder() == 2 ); } - - /** This function determines if this NURBS curve is a Bezier curve. - * Bezier curves are a special case of NURBS curve. - * \return \c True if curve is a Bezier curve. If it is not a Bezier curve return \c false. - */ - bool IsBezier() const; - - /** Evaluate the point on the curve. Save the result as a point array. Meanwhile, return the length of the point array. - * \param pPointArray Save the evaluate result as a point array. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return The length of the point array. - */ - int TessellateCurve(FbxArray& pPointArray, int pStep = 16); - - /** Evaluate the point on the curve. Per the evaluation result, create a FbxLine and return the pointer to the line. - * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. - * \return A line to hold the tessellate points. - */ - FbxLine* TessellateCurve(int pStep = 16); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool FullMultiplicity() const; - - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsCurveTypeUnknown, - eWeightTooSmall, - eKnotVectorError, - eWrongNumberOfControlPoint, - eErrorCount - }; - - bool mIsRational; - - void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - void Reset(); - -private: - double* mKnotVector; - EType mNurbsType; - int mOrder; - EDimension mDimension; - int mStep; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h deleted file mode 100755 index 5f63142..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ - -#include - -#include - -#include - -class FbxNode; - -/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the - order, form, knot vector and control points in the U and V directions. - - For more information on the meaning of the form, knot vector and control points, - see the documentation for the FbxNurbsCurve. The same concepts for NURBS curves - apply to NURBS surfaces. NURBS surfaces simply have two dimensions (U and V). - - * \nosubgrouping - */ -class FBXSDK_DLL FbxNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxNurbsSurface, FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::eNurbsSurface node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the NURBS surface its default values. - void Reset(); - - /** - * \name NURBS surface Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The surface mode identifier that is currently set. - */ - inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType NURBS types. - * - \e ePeriodic - * - \e eClosed - * - \e eOpen - */ - enum EType - { - ePeriodic, - eClosed, - eOpen - }; - - /** Allocates memory space for an array of control points as well as knot - * and multiplicity vectors. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension NURBS type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension NURBS type. - * \remarks Always call this function after FbxNurbsSurface::SetOrder(). - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of U-dimension control points. - * \return Number of U-dimension control points. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of V-dimension control points. - * \return Number of V-dimension control points. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsUType() const {return mUType;} - - /** Returns the V-dimension NURBS type. - * \return NURBS type identifier. - */ - inline EType GetNurbsVType() const {return mVType;} - - /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the U-dimension knot vector. - */ - int GetUKnotCount() const; - - /** Returns the U-dimension knot vector. - * \return Pointer to the U-dimension knot vector. - */ - double* GetUKnotVector() const; - - /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. - * \return The number of elements in the V-dimension knot vector. - */ - int GetVKnotCount() const; - - /** Returns the V-dimension knot vector. - * \return Pointer to the V-dimension knot vector. - */ - double* GetVKnotVector() const; - - /** Sets the order of the NURBS surface. - * \param pUOrder NURBS order in U dimension. - * \param pVOrder NURBS order in V dimension. - */ - void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); - - /** Returns the NURBS order in U dimension. - * \return NURBS order in U dimension. - */ - inline int GetUOrder() const {return mUOrder;} - - /** Returns the NURBS order in V dimension. - * \return NURBS order in V dimension. - */ - inline int GetVOrder() const {return mVOrder;} - - /** Sets the NURBS step. - * The step value is the number of divisions between adjacent control points. - * \param pUStep Steps in U dimension. - * \param pVStep Steps in V dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in U dimension. - * \return Steps in U dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in V dimension. - * \return Steps in V dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Calculates the number of surface spans in the U dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the U dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetUSpanCount() const; - - /** Calculates the number of surface spans in the V dimension. - * See FbxNurbsCurve::GetSpanCount() for more information. - * \return The number of spans in the V dimension if the surface has been initialized. - * If the spans have not been initialized, returns -1. - */ - int GetVSpanCount() const; - - //@} - - /** - * \name NURBS surface Export Flags - */ - //@{ - - /** Sets the flag that induces UV flipping at export. - * \param pFlag If \c true, UV flipping occurs. - */ - void SetApplyFlipUV(bool pFlag); - - /** Returns the flag that induces UV flipping at export. - * \return The current state of the UV flip flag. - */ - bool GetApplyFlipUV() const; - - /** Sets the flag that induces link flipping at export. - * \param pFlag If \c true, the links control points indices are flipped. - */ - void SetApplyFlipLinks(bool pFlag); - - /** Returns the flag that induces link flipping at export. - * \return The current state of the link flip flag. - */ - bool GetApplyFlipLinks() const; - - /** Returns flip flags state. - * \return \c True if we need to flip either the UV or the links. - */ - bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } - - /** Adds a curve to the NURBS surface. - * Adds a 2D, parametric space curve to this surface - * \param pCurve The curve to be added to the surface. - */ - void AddCurveOnSurface( FbxNode* pCurve ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - FbxNode* GetCurveOnSurface( int pIndex ); - - /** Retrieves a curve from this surface - * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). - * \return The curve at the specified index, or returns NULL if pIndex is out of range. - */ - const FbxNode* GetCurveOnSurface( int pIndex ) const; - - /** Returns the number of curves on this surface. - * \return The number of curves on this surface. - */ - int GetCurveOnSurfaceCount() const; - - /** Removes a curve from this surface. - * \param pCurve The curve to be removed. - * \return \c True if the curve is removed successfully, if unsuccessful, returns \c false. - */ - bool RemoveCurveOnSurface( FbxNode* pCurve ); - - //@} - - /** Checks if the surface has all rational control points. - * \return \c True if rational, \c false otherwise - */ - bool IsRational() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Error identifiers, these are only used internally. - enum EErrorCode - { - eNurbsTypeUnknown, - eWrongNumberOfControlPoint, - eWeightTooSmall, - eUKnotVectorError, - eVKnotVectorError, - eErrorCount - }; - - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - - void SetFlipNormals(bool pFlipNormals); - bool GetFlipNormals() const; - bool IsValidKnots() const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - FbxUInt mUOrder, mVOrder; - int mUCount, mVCount; - int mUStep, mVStep; - EType mUType, mVType; - - double* mUKnotVector; - double* mVKnotVector; - - ESurfaceMode mSurfaceMode; - - bool mApplyFlipUV; - bool mApplyFlipLinks; - bool mFlipNormals; - - friend class FbxGeometryConverter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h deleted file mode 100755 index 41b64fe..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxopticalreference.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxopticalreference.h -#ifndef _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ -#define _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ - -#include - -#include - -#include - -/** \brief This node attribute contains the properties of an optical reference. - * \nosubgrouping - * Mainly used for optical motion capture systems. - */ -class FBXSDK_DLL FbxOpticalReference : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxOpticalReference,FbxNodeAttribute); - -public: - //! Return the type of node attribute which is FbxNodeAttribute::EType::eOpticalReference. - FbxNodeAttribute::EType GetAttributeType() const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h deleted file mode 100755 index e4959b6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxpatch.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpatch.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PATCH_H_ -#define _FBXSDK_SCENE_GEOMETRY_PATCH_H_ - -#include - -#include - -#include - -/** A patch is a type of node attribute with parametric surface. - * A patch object is useful for creating gently curved surfaces, and provides very detailed control for manipulating complex geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxPatch : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxPatch,FbxGeometry); - -public: - //! Returns the FbxNodeAttribute::EType::ePatch node attribute type. - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Resets the patch to its default values. - void Reset(); - - /** - * \name Patch Properties - */ - //@{ - - /** Sets the surface mode. - * \param pMode Surface mode identifier (see Class FbxGeometry). - */ - void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); - - /** Returns the surface mode. - * \return The current surface mode identifier. - */ - inline FbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} - - /** \enum EType Patch types. - * - \e eBezier - * - \e eBezierQuadric - * - \e eCardinal - * - \e eBSpline - * - \e eLinear - */ - enum EType - { - eBezier, - eBezierQuadric, - eCardinal, - eBSpline, - eLinear - }; - - /** Allocates memory space for the control points array. - * \param pUCount Number of U-dimension control points. - * \param pUType U-dimension patch type. - * \param pVCount Number of V-dimension control points. - * \param pVType V-dimension patch type. - */ - void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); - - /** Returns the number of control points in the U-dimension. - * \return The number of control points in the U-dimension. - */ - inline int GetUCount() const {return mUCount;} - - /** Returns the number of control points in the V-dimension. - * \return The number of control points in the V-dimension. - */ - inline int GetVCount() const {return mVCount;} - - /** Returns the U-dimension patch type. - * \return Patch type identifier in the U-dimension. - */ - inline EType GetPatchUType() const {return mUType;} - - /** Returns the V-dimension patch type. - * \return Patch type identifier in the V-dimension. - */ - inline EType GetPatchVType () const {return mVType;} - - /** Sets the patch step. - * The step is the number of divisions between adjacent control points. - * \param pUStep Steps in U-dimension. - * \param pVStep Steps in V-dimension. - */ - void SetStep(int pUStep, int pVStep); - - /** Returns the number of divisions between adjacent control points in the U-dimension. - * \return Step value in the U-dimension. - */ - inline int GetUStep() const {return mUStep;} - - /** Returns the number of divisions between adjacent control points in the V-dimension. - * \return Step value in the V-dimension. - */ - inline int GetVStep() const {return mVStep;} - - /** Sets closed flags. - * \param pU Set to \c true if the patch is closed in U dimension. - * \param pV Set to \c true if the patch is closed in V dimension. - */ - void SetClosed(bool pU, bool pV); - - /** Returns state of the U closed flag. - * \return \c True if the patch is closed in U dimension. - */ - inline bool GetUClosed() const {return mUClosed;} - - /** Returns state of the V closed flag. - * \return \c True if the patch is closed in V dimension. - */ - inline bool GetVClosed() const {return mVClosed;} - - /** Sets U-capped flags. - * \param pUBottom Set to \c true if the patch is capped at the bottom in the U-dimension. - * \param pUTop \c Set to \c true if the patch is capped on the top in the U-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetUCapped(bool pUBottom, bool pUTop); - - /** Returns state of the bottom U-capped flag. - * \return \c True if the patch is capped at the bottom in the U-dimension. - */ - inline bool GetUCappedBottom() const {return mUCappedBottom;} - - /** Returns state of the top U-capped flag. - * \return \c True if the patch is capped on the top in the U-dimension. - */ - inline bool GetUCappedTop() const {return mUCappedTop;} - - /** Sets V-capped flags. - * \param pVBottom Sets to \c true if the patch is capped at the bottom in the V-dimension. - * \param pVTop Sets to \c true if the patch is capped on the top in the V-dimension. - * \remarks Capping options are saved but not loaded by Motionbuilder because they - * are computed from the patch topography. - */ - void SetVCapped(bool pVBottom, bool pVTop); - - /** Returns state of the bottom V-capped flag. - * \return \c True if the patch is capped at the bottom. - */ - inline bool GetVCappedBottom() const {return mVCappedBottom;} - - /** Returns state of the top V-capped flag. - * \return \c True if the patch is capped on the top. - */ - inline bool GetVCappedTop() const {return mVCappedTop;} - - //@} - - /** - * \name Off-loading Serialization section - */ - //@{ - /** Writes the content of the patch to the given stream. - * \param pStream The destination stream. - * \return \c True if the content is successfully processed by the receiving stream. - * If it is not successful, returns \c false. - */ - bool ContentWriteTo(FbxStream& pStream) const override; - - /** Reads the content of the patch from the given stream. - * \param pStream The source stream. - * \return \c True if the patch completes with the data received from the stream successfully. - * If it is not successful, returns \c false. - */ - bool ContentReadFrom(const FbxStream& pStream) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - void InitControlPoints(int pCount) override { ParentClass::InitControlPoints(pCount); } - void SetControlPointAt(const FbxVector4 &pCtrlPoint ,int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - - EType mUType, mVType; - int mUCount, mVCount; - int mUStep, mVStep; - bool mUClosed, mVClosed; - bool mUCappedBottom, mUCappedTop; - bool mVCappedBottom, mVCappedTop; - - FbxGeometry::ESurfaceMode mSurfaceMode; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PATCH_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h deleted file mode 100755 index 768ea5a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduralgeometry.h -#ifndef _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ -#define _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Base class for procedural geometry. In a standard geometry (FbxGeometry, FbxGeometryBase), control points, - * normals, possibly polygons (FbxMesh) and other specifications are described. A procedural geometry contains minimal information - * to be created on-the-fly. - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralGeometry : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralGeometry, FbxGeometry); -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxshape.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxshape.h deleted file mode 100755 index c243b4d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxshape.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshape.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ -#define _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ - -#include - -#include - -#include - -class FbxBlendShapeChannel; -class FbxGeometry; - -/** A shape describes the deformation on a set of control points, which is similar to the cluster deformer in Maya. - * For example, we can add a shape to a created geometry. And the shape and the geometry have the same - * topological information but different position of the control points. - * With varying amounts of influence, the geometry performs a deformation effect. - * \nosubgrouping - * \see FbxGeometry - */ -class FBXSDK_DLL FbxShape : public FbxGeometryBase -{ - FBXSDK_OBJECT_DECLARE(FbxShape, FbxGeometryBase); - -public: - /** Set the blend shape channel that contains this target shape. - * \param pBlendShapeChannel Pointer to the blend shape channel to set. - * \return \c true on success, \c false otherwise. - */ - bool SetBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); - - /** Get the blend shape channel that contains this target shape. - * \return a pointer to the blend shape channel if set or NULL. - */ - FbxBlendShapeChannel* GetBlendShapeChannel() const; - - /** Get the base geometry of this target shape. - * \return a pointer to the base geometry if set or NULL. - * \remarks Since target shape can only connected to its base geometry through - * blend shape channel and blend shape deformer. - * So only when this target shape is connected to a blend shape channel, - * and the blend shape channel is connected to a blend shape deformer, - * and the blend shape deformer is used on a base geometry, then to get - * base geometry will success. - */ - FbxGeometry* GetBaseGeometry(); - - /** Get the length of the arrays of control point indices and weights. - * \return Length of the arrays of control point indices and weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - - /** Set the array size for the control point indices - * \param pCount The new count. - */ - void SetControlPointIndicesCount(int pCount); - - /** Add a control point index to the control point indices array - * \param pIndex The control point index to add. - */ - void AddControlPointIndex(int pIndex); - - /** Restore the shape to its initial state. - * Calling this function will clear the following: - * \li Pointer to blend shape channel. - * \li Control point indices. - */ - void Reset(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - FbxNodeAttribute::EType GetAttributeType() const override; - FbxStringList GetTypeFlags() const override; - - FbxArray mControlPointIndices; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h deleted file mode 100755 index 8135885..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskeleton.h +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskeleton.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ - -#include - -#include - -#include - -/** This class specializes a node attribute to represent the elements forming "bone" - * chains. The FbxSkeleton name of the class comes from the analogy with the human body - * skeletal structure. In fact, an object of this type is nothing more than a transform - * node with special properties that are useful for its graphical representation and during - * IK/FK and skin deformation computations. Typically, a scene will contain chains of FbxSkeleton - * node attributes that, together, form a skeleton segment. For instance, the representation of the - * leg of a character can be achieved using one parent node with the attribute eRoot, followed by - * one child (femur) of type eLimb, this child having a child also (tibia) of the same type. Finally, - * terminated with a last node attribute of type eEffector (ankle). - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxSkeleton : public FbxNodeAttribute -{ - FBXSDK_OBJECT_DECLARE(FbxSkeleton,FbxNodeAttribute); - -public: - //! Return the type of node attribute (i.e: FbxNodeAttribute::EType::eSkeleton). - FbxNodeAttribute::EType GetAttributeType() const override; - - //! Reset the skeleton to default values and type to \c eRoot. - void Reset(); - - /** - * \name Skeleton Properties - */ - //@{ - - /** \enum EType Skeleton types. - * \remarks \e eEffector is synonymous to \e eRoot. - * \remarks The \e eLimbNode type is a bone defined uniquely by a transform and a size value while - * \remarks the \e eLimb type is a bone defined by a transform and a length. - */ - enum EType - { - eRoot, /*!< First element of a chain. */ - eLimb, /*!< Chain element. */ - eLimbNode, /*!< Chain element. */ - eEffector /*!< Last element of a chain. */ - }; - - /** Set the skeleton type. - * \param pSkeletonType Skeleton type identifier. - */ - void SetSkeletonType(EType pSkeletonType); - - /** Get the skeleton type. - * \return Skeleton type identifier. - */ - EType GetSkeletonType() const; - - /** Get a flag to know if the skeleton type was set. - * \return \c true if a call to SetSkeletonType() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetSkeletonTypeIsSet() const; - - /** Get the default value for the skeleton type. - * \return \c eRoot - */ - EType GetSkeletonTypeDefaultValue() const; - - /** Get the default value for the limb length. - * \return 1.0 - */ - double GetLimbLengthDefaultValue() const; - - /** Get the default value for the limb node size. - * \return 100.0 - */ - double GetLimbNodeSizeDefaultValue() const; - - /** Set limb or limb node color. - * \param pColor RGB values for the limb color. - * \return \c true if skeleton type is \c eLimb or \c eLimbNode, \c false otherwise. - * \remarks Limb or limb node color is only set if skeleton type is \c eLimb or \c eLimbNode. - */ - bool SetLimbNodeColor(const FbxColor& pColor); - - /** Get limb or limb node color. - * \return Currently set limb color. - * \remarks Limb or limb node color is only valid if skeleton type is \c eLimb or \c eLimbNode. - */ - FbxColor GetLimbNodeColor() const; - - /** Get a flag to know if the limb node color was set. - * \return \c true if a call to SetLimbNodeColor() has been made. - * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. - * \remarks The flag is set back to \c false when Reset() is called. - */ - bool GetLimbNodeColorIsSet() const; - - /** Get the default value for the limb node color. - * \return R=0.8, G=0.8, B=0.8 - */ - FbxColor GetLimbNodeColorDefaultValue() const; - - /** To see if this skeleton is Root. - * \return \c true if this is root of the skeleton, \c false otherwise. - * \remarks if a skeleton node do not have a parent or its parent is not a skeleton node itself, then this - * skeleton is root in the hierarchy. - */ - bool IsSkeletonRoot() const; - - //@} - - - /** - * \name Property Names - */ - static const char* sSize; - static const char* sLimbLength; - - /** - * \name Property Default Values - */ - //@{ - static const FbxDouble sDefaultSize; - static const FbxDouble sDefaultLimbLength; - - - ////////////////////////////////////////////////////////////////////////// - // - // Properties - // - ////////////////////////////////////////////////////////////////////////// - - /** This property handles the limb node size. - * - * To access this property do: Size.Get(). - * To set this property do: Size.Set(FbxDouble). - * - * Default value is 100.0 - */ - FbxPropertyT Size; - - /** This property handles the skeleton limb length. - * - * To access this property do: LimbLength.Get(). - * To set this property do: LimbLength.Set(FbxDouble). - * - * FbxSkeleton is a node attribute and it will be attached to a FbxNode which represents the transform. - * Given a chain of skeleton nodes the parent and child skeletons will be attached to a parent node and a child node. - * The orientation of the limb is computed from the vector between the parent and child position (from parent to child). - * The LimbLength represents the proportion - * of the parent node's position to the child node's position which is used to compute the actual limb length. - * The default value of 1.0 means the LimbLength is equal to the length between the parent and child node's position. - * So if the value is 0.5, it means the LimbLength will be half of the length between the parent and child node's position. - */ - FbxPropertyT LimbLength; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Reset( bool pResetProperties ); - - const char* GetTypeName() const override; - FbxStringList GetTypeFlags() const override; - - EType mSkeletonType; - - bool mLimbLengthIsSet; - bool mLimbNodeSizeIsSet; - bool mLimbNodeColorIsSet; - bool mSkeletonTypeIsSet; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskin.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskin.h deleted file mode 100755 index 9b00b7f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxskin.h +++ /dev/null @@ -1,192 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxskin.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SKIN_H_ -#define _FBXSDK_SCENE_GEOMETRY_SKIN_H_ - -#include - -#include - -#include - -class FbxCluster; -class FbxGeometry; - -/** Skin deformer class. - * - * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's - * control points, with different weights. For example, a mesh of humanoid shape - * can have a skin attached, that describes the way the humanoid mesh is deformed - * by bones. When the bones are animated, the clusters act on the geometry to - * animate it too. - * - * The corresponding deformer types are FbxDeformer::eSkin. - * \nosubgrouping - */ - -class FBXSDK_DLL FbxSkin : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxSkin, FbxDeformer); - -public: - /** Set deformation accuracy. - * \remarks Use the Accuracy option to set the accuracy of skin deformations. - * 100% is full accuracy and 1% is a rough estimation of the envelope deformation. - * \param pDeformAccuracy value for deformation accuracy. - */ - void SetDeformAccuracy(double pDeformAccuracy); - - /** Get deformation accuracy. - * \return deformation accuracy value. - */ - double GetDeformAccuracy() const; - - /** Set the geometry affected by this skin deformer. - * \param pGeometry Pointer to the geometry object to set. - * \return \c true on success, \c false otherwise. - */ - bool SetGeometry(FbxGeometry* pGeometry); - - /** Get the geometry affected by this skin deformer. - * \return a pointer to the geometry if set or NULL. - */ - FbxGeometry* GetGeometry(); - - /** Add a cluster. - * \param pCluster Pointer to the cluster object to add. - * \return \c true on success, \c false otherwise. - */ - bool AddCluster(FbxCluster* pCluster); - - /** Remove cluster at given index. - * \param pCluster Pointer to the cluster to remove from this skin deformer. - * \return Pointer to cluster or \c NULL if pCluster is not owned by this skin deformer. - */ - FbxCluster* RemoveCluster(FbxCluster* pCluster); - - /** Get the number of clusters. - * \return Number of clusters that have been added to this object. - */ - int GetClusterCount() const; - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - FbxCluster* GetCluster(int pIndex); - - /** Get cluster at given index. - * \param pIndex Index of cluster. - * \return Pointer to cluster or \c NULL if index is out of range. - */ - const FbxCluster* GetCluster(int pIndex) const; - - /** Get the type of the deformer. - * \return Deformer type identifier. - */ - EDeformerType GetDeformerType() const override {return eSkin; }; - - /** \enum EType Skinning type. - * The skinning type decides which method will be used to do the skinning. - * - \e eRigid Type eRigid means rigid skinning, which means only one joint can influence each control point. - * - \e eLinear Type eLinear means the classic linear smooth skinning. - * - \e eDualQuaternion Type eDualQuaternion means the dual quaternion smooth skinning. - * - \e eBlend Type eBlend means to blend classic linear and dual quaternion smooth skinning according to blend weights. - */ - enum EType - { - eRigid, - eLinear, - eDualQuaternion, - eBlend - }; - - /** Set the skinning type. - * \param pType The skinning type. - */ - void SetSkinningType(EType pType); - - /** Get the skinning type. - * \return The skinning type. - */ - EType GetSkinningType() const; - - /** - * \name Control Points - * A skin has an array of indices to control points and associated blend weights. - * The indices refer to the control points in the instance of class FbxGeometry. - * The blend weights are the influence of the different skinning type over the - * deformation effect of the indexed control points. - */ - //@{ - - /** Add an element in both arrays of control point indices and blendWeights. - * \param pIndex The index of the control point. - * \param pBlendWeight The blend weight for this control point. The value should between 0 and 1. - * Any value that is less than 0 will be set to 0, any value that is greater than 1 will be set to 1. - * 0 means completely linear skinning, 1 means completely dual quaternion skinning, - * a value between 0 and 1 means the weighted blending of the above two skinning methods. - */ - void AddControlPointIndex(int pIndex, double pBlendWeight = 0); - - /** Get the length of the arrays of control point indices and blend weights. - * \return Length of the arrays of control point indices and blend weights. - * Returns 0 if no control point indices have been added or the arrays have been reset. - */ - int GetControlPointIndicesCount() const; - - /** Get the array of control point indices. - * \return Pointer to the array of control point indices. - * \c NULL if no control point indices have been added or the array has been reset. - */ - int* GetControlPointIndices() const; - - /** Get the array of control point blend weights. - * \return Pointer to the array of control point blend weights. - * \c NULL if no control point indices have been added or the array has been reset. - */ - double* GetControlPointBlendWeights() const; - - /** Set the array size for the three arrays: the array of control point indices, the array of weights - * and the array of blend weights. - * \param pCount The new count. - */ - void SetControlPointIWCount(int pCount); - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - void Compact() override; - FbxObject& Copy(const FbxObject& pObject) override; - FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; - -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override; - - // Skin deformer - double mDeformAccuracy; - EType mSkinningType; - - //Control points - FbxArray mControlPointIndices; - FbxArray mControlPointBlendWeights; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SKIN_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h deleted file mode 100755 index 50464b7..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ - -#include - -#include - -#include - -/** Base class for cluster sub-deformer( FbxCluster) and blend shape channel sub-deformer( FbxBlendShapeChannel) - * - * The corresponding sub-deformer types are FbxSubDeformer::eCluster and FbxSubDeformer::eBlendShapeChannel. - * - * A cluster, or link, is an entity acting on a geometry (FbxGeometry). - * More precisely, the cluster acts on a subset of the geometry's control points. - * For each control point that the cluster acts on, the intensity of the cluster's - * action is modulated by a weight. The link mode (ELinkMode) specifies how - * the weights are taken into account. - * The cluster's link node specifies the node (FbxNode) that influences the - * control points of the cluster. If the node is animated, the control points - * will move accordingly. - * A cluster is usually part of a skin (see FbxDeformer, FbxSkin). For example, - * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. - * Each bone is represented by a node in FBX. - * To bind the geometry to the nodes, - * we create a skin (FbxSkin). The skin has many clusters, each one corresponding - * to a bone. - * Each node influences some control - * points of the mesh. A node has a high influence on some of the points (high weight) - * and lower influence on some other points (low weight). Some points of the mesh - * are not affected at all by the bone, so they would not be part of the corresponding - * cluster. - * - * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. - * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can - * control one or multiple target shapes. If there are multiple target shapes connected to one channel, - * and each target shape could have its own full deformation percentage, for example, one channel could have 3 target shapes, - * whose full deform percentage are 30, to 80 to 100, then when the percent change from 0 to 100, the base geometry will - * deform from the first target shape to the last one, this is called In-Between blend-shapes. - * The blend shape channel also control the deform percent of each target shape or In-Between blend shape on it. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSubDeformer : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSubDeformer, FbxObject); - public: - - /** Set multi layer state flag. - * \param pMultiLayer If \c true, multi-layering is enabled. - */ - void SetMultiLayer(bool pMultiLayer); - - /** Get multilayer state. - * \return The state of the multi-layer flag. - */ - bool GetMultiLayer() const; - - - /** \enum EType Sub-deformer type - */ - enum EType - { - eUnknown, //!< Untyped sub-deformer - eCluster, //!< Type FbxCluster - eBlendShapeChannel //!< Type FbxBlendShapeChannel - }; - - /** Get the type of the sub-deformer. - * \return SubDeformer type identifier. - */ - virtual EType GetSubDeformerType() const { return eUnknown; } - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - FbxStringList GetTypeFlags() const override { return FbxStringList(); } - - // Local - bool mMultiLayer; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h deleted file mode 100755 index 2ddc068..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxsubdiv.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsubdiv.h -#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ -#define _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ - -#include - -#include -#include - -#include - -class FbxMesh; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -class FBXSDK_DLL FbxSubDiv : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxSubDiv, FbxGeometry); - -public: - enum EScheme - { - eCatmullClark, //Catmull CClark subdivision surface - eDooCSabin, //Doo CSabin subdivision surface - eLoop, //Loop subdivision surface - eLinear, //Linear subdivision surface - }; - - enum ETesselationPattern - { - eOddFractional, - eEvenFractional, - eInteger, - ePower2, //Max, Maya use this one - }; - - enum EDisplaySmoothness - { - eHull, - eRough, - eMedium, - eFine, - }; - - /** InitSubdivLevel Initialize the subdiv - * \param pLevelCount number of levels - * \param pScheme subdivision scheme - * \param pPattern Tessellation pattern - */ - void InitSubdivLevel(int pLevelCount, - EScheme pScheme = eCatmullClark, - ETesselationPattern pPattern = ePower2); - - FbxNodeAttribute::EType GetAttributeType() const override; - - - //max subdivision level number - static const int MAX_SUBDIV_LEVEL = 16; - - //subdiv levels in subdivision, including the base mesh and each subdiv levels - FbxArray mSubDivLevel; - - //Get the base mesh - FbxMesh* GetBaseMesh() const; - - //Get the mesh from finest level - FbxMesh* GetFinestMesh() const; - - //Set the finest mesh - bool SetFinestMesh(FbxMesh* pMesh); - - //Set the finest mesh - bool SetBaseMesh(FbxMesh* pMesh); - - //Get the mesh from specific level - FbxMesh* GetMesh(int pLevel) const; - - /** SetSubdivLevelMesh Set certain subdivision mesh - * \param pLevel working level - * \param pMesh new level mesh. pLevel = 0 means base mesh, - pLevel = MaxLevel -1 means finest mesh - */ - void SetSubdivLevelMesh(int pLevel, FbxMesh* pMesh); - - int GetLevelCount() const; - void SetLevelCount(int pLevelCount); - - int GetCurrentLevel() const; - void SetCurrentLevel(int pCurrentLevel); - - FbxMesh* GetCurrentMesh() const; - - FbxSubDiv::EScheme GetSubdivScheme() const; - - FbxSubDiv::ETesselationPattern GetTessPattern() const; - - void SetSubdivScheme(FbxSubDiv::EScheme pScheme); - - void SetTessPattern(FbxSubDiv::ETesselationPattern pPattern); - - FbxSubDiv::EDisplaySmoothness GetDisplaySmoothness() const; - - void SetDisplaySmoothness(FbxSubDiv::EDisplaySmoothness pSmoothness); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - - //base geometry mesh for subdivision - FbxMesh* mBaseMesh; - - //finest geometry mesh for subdivision - FbxMesh* mFinestMesh; - - //current operating subdivision level - int mCurrLevel; - - //number of subdiv level - int mLevelCount; - - //scheme of subdiv - EScheme mScheme; - - //pattern of subdiv - ETesselationPattern mPattern; - - //display smoothness of subdiv - EDisplaySmoothness mSmoothness; -}; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h deleted file mode 100755 index 3da70ba..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h +++ /dev/null @@ -1,240 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtrimnurbssurface.h -#ifndef _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ -#define _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ - -#include - -#include -#include -#include - -#include - -/** FbxBoundary describes a trimming boundary for a trimmed NURBS object. - * Note:Outer boundaries run counter-clockwise in UV space and inner - * boundaries run clockwise. An outer boundary represents the outer edges - * of the trimmed surface whereas the inner boundaries define "holes" in - * the surface. - */ -class FBXSDK_DLL FbxBoundary : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxBoundary, FbxGeometry); - -public: - - //! Properties - static const char* sOuterFlag; - - /** This property handles outer flag. - * - * Default value is false. - */ - FbxPropertyT OuterFlag; - - /** Adds an edge to this boundary. - * \param pCurve The curve to be appended to the end of this boundary - */ - void AddCurve( FbxNurbsCurve* pCurve ); - - /** Returns the number of edges within this boundary. - * \return The number of edges within this boundary - */ - int GetCurveCount() const; - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise the return value is undefined. - */ - FbxNurbsCurve* GetCurve( int pIndex ); - - /** Returns the edge at the specified index. - * \param pIndex The specified index, no bound checking is done. - * \return The edge at the specified index if - * pIndex is in the range [0, GetEdgeCount() ), - * otherwise, the return value is undefined. - */ - const FbxNurbsCurve* GetCurve( int pIndex ) const; - - - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - /** Detects if the point is in the boundary's control hull. - * \param pPoint The point to be detected. - * \return \c True if the point is in the boundary's control hull, returns \c false if it is not in the control hull. - */ - bool IsPointInControlHull(const FbxVector4& pPoint ); - - /** Computes the origin point in the boundary - * \return The origin point. - */ - FbxVector4 ComputePointInBoundary(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - void ClearCurves(); - void CopyCurves( FbxBoundary const& pOther ); - bool IsValid(bool mustClosed = true); - bool IsCounterClockwise(); - -protected: - void ConstructProperties(bool pForceSet) override; - - void Reset(); - bool LineSegmentIntersect(const FbxVector4 & pStart1, const FbxVector4 & pEnd1, const FbxVector4 & pStart2, const FbxVector4 & pEnd2 ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** FbxTrimNurbsSurface describes a NURBS surface with regions - trimmed or cut away with trimming boundaries. - */ -class FBXSDK_DLL FbxTrimNurbsSurface : public FbxGeometry -{ - FBXSDK_OBJECT_DECLARE(FbxTrimNurbsSurface,FbxGeometry); -public: - //! Returns the type of node attribute. - FbxNodeAttribute::EType GetAttributeType() const override; - - - /** Returns the number of regions on this trimmed NURBS surface. - * Note: There is always at least one region. - * \return The number of regions - */ - int GetTrimRegionCount() const; - - /** Calls this function before adding boundaries to a new trim region. - * The number of regions is incremented on this call. - */ - void BeginTrimRegion(); - - /** Calls this function after the last boundary for a given region is added. - * If no boundaries are added between the calls to BeginTrimRegion - * and EndTrimRegion, the last region is removed. - */ - void EndTrimRegion(); - - /** Appends a trimming boundary to the set of trimming boundaries. - * The first boundary specified for a given trim region should be - * the outer boundary. All other boundaries are inner boundaries. - * This must be called after a call to BeginTrimRegion(). Boundaries - * cannot be shared among regions. Duplicate the boundary if necessary. - * \param pBoundary The boundary to add. - * \return \c True if the boundary is added successfully. - * If the boundary is not added successfully, returns \c false. - */ - bool AddBoundary( FbxBoundary* pBoundary ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ); - - /** Returns the boundary at a given index for the specified region - * \param pIndex The index of the boundary to retrieve, no bound checking is done. - * \param pRegionIndex The index of the region which is bordered by the boundary. - * \return The trimming boundary at index pIndex, - * if pIndex is in the range [0, GetBoundaryCount() ), - * otherwise the result is undefined. - */ - const FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ) const; - - /** Returns the number of boundaries for a given region. - * \param pRegionIndex The index of the region. - * \return The number of trim boundaries for the given region. - */ - int GetBoundaryCount(int pRegionIndex = 0) const; - - /** Sets the NURBS surface that is trimmed by the trimming boundaries. - * \param pNurbs The NURBS surface to be trimmed. - */ - void SetNurbsSurface( const FbxNurbsSurface* pNurbs ); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - FbxNurbsSurface* GetNurbsSurface(); - - /** Returns the NURBS surface that is trimmed by the trim boundaries. - * \return A pointer to the (untrimmed) NURBS surface. - */ - const FbxNurbsSurface* GetNurbsSurface() const; - - /** Sets the flag which indicates whether the surface normals are flipped. - * You can flip the normals of the surface to reverse the surface. - * \param pFlip If \c true, the surface is reversed. If it is false, the surface is not reversed. - */ - inline void SetFlipNormals( bool pFlip ) { mFlipNormals = pFlip; } - - /** Checks if the normals are flipped. - * \return \c True if normals are flipped, returns \c false if they are not flipped. - */ - inline bool GetFlipNormals() const { return mFlipNormals; } - - int GetControlPointsCount() const override; - - /** Sets the control point and the normal values for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pNormal The value of the normal. - * \param pIndex The specified index. - * \param pI2DSearch Unused in this implementation. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false) override; - - /** Sets the control point for a specified index. - * \param pCtrlPoint The value of the control point. - * \param pIndex The specified index. - */ - void SetControlPointAt(const FbxVector4 &pCtrlPoint, int pIndex) override { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } - - /** Returns the NURBS surface's control points. - * \param pStatus The FbxStatus object to hold error codes. - */ - FbxVector4* GetControlPoints(FbxStatus* pStatus = NULL) const override; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool IsValid(bool mustClosed = true); - void ClearBoundaries(); - void CopyBoundaries( FbxTrimNurbsSurface const& pOther ); - bool IsValid(int pRegion, bool mustClosed = true); - void RebuildRegions(); - -protected: - void Construct(const FbxObject* pFrom) override; - -private: - bool mFlipNormals; - FbxArray mRegionIndices; - bool mNewRegion; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h deleted file mode 100755 index 2656205..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxvertexcachedeformer.h -#ifndef _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ -#define _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ - -#include - -#include -#include - -#include - -/** \brief This class deforms control points of a geometry using control point positions - * stored in the associated cache object. - * \nosubgrouping - */ -class FBXSDK_DLL FbxVertexCacheDeformer : public FbxDeformer -{ - FBXSDK_OBJECT_DECLARE(FbxVertexCacheDeformer, FbxDeformer); - -public: - //! Vertex cache deformer data type - enum ECacheChannelType - { - ePositions, //!< This vertex cache deformer handles positions - eNormals, //!< This vertex cache deformer handles normals - eUVs, //!< This vertex cache deformer handles uvs - eTangents, //!< This vertex cache deformer handles tangents - eBinormals, //!< This vertex cache deformer handles binormals - eUserDefined //!< This vertex cache deformer handles user specified data (the cache channel string can provide a hint) - }; - - /** Assign a cache object to be used by this deformer. - * \param pCache The cache object. */ - void SetCache(FbxCache* pCache); - - /** Get the cache object used by this deformer. - * \return A pointer to the cache object used by this deformer, or \c NULL if no cache object is assigned. */ - FbxCache* GetCache() const; - - //! Indicate if the deformer is active or not. - FbxPropertyT Active; - - //! The channel name used in the cache file - FbxPropertyT Channel; - - //! The cache set used by this vertex cache deformer - FbxPropertyT CacheSet; - - //! The vertex cache deformer type - FbxPropertyT Type; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - EDeformerType GetDeformerType() const override { return FbxDeformer::eVertexCache; } - -protected: - void ConstructProperties(bool pForceSet) override; - FbxStringList GetTypeFlags() const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxVertexCacheDeformer::ECacheChannelType&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h b/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h deleted file mode 100755 index dd9738f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h +++ /dev/null @@ -1,139 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxweightedmapping.h -#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ -#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ - -#include - -#include - -#include - -/** Define a weighted bidirectional mapping relation on objects. - * \nosubgrouping - * There are two object set. The source object of mapping is in source set. - * The destination object is in destination set. - * Each object can have multiple mapping relation with other objects. - */ -class FBXSDK_DLL FbxWeightedMapping -{ -public: - /** Object set type in the mapping relation. - */ - enum ESet - { - eSource, //!< Object is as source. - eDestination //!< Object is as destination. - }; - - /** Record one mapping from one object. */ - struct Element - { - //! The index of another object in the mapping in the another ESet array. - int mIndex; - //! Weight of the mapping. - double mWeight; - }; - - /** - * \name Constructor and Destructor - */ - //@{ - - /** Constructor. - * Initialize the source set and destination set. - * \param pSourceSize Source set size - * \param pDestinationSize Destination set size - */ - FbxWeightedMapping(int pSourceSize, int pDestinationSize); - - //! Destructor. - ~FbxWeightedMapping(); - //@} - - - /** Remove all weighted relations and give new source and destination sets sizes. - * \param pSourceSize New source set size. - * \param pDestinationSize New destination set size. - */ - void Reset(int pSourceSize, int pDestinationSize); - - /** Add a weighted mapping relation. - * \param pSourceIndex Index of the source object. - * \param pDestinationIndex Index of the destination object. - * \param pWeight Weight of the mapping. - */ - void Add(int pSourceIndex, int pDestinationIndex, double pWeight); - - /** Get the number of elements of a set. - * \param pSet source or destination set. - */ - int GetElementCount(ESet pSet) const; - - /** Get the number of relations an element of a set is linked to. - * For example, for one object (which index is specified by pElement) in source set (specified by pSet), - * the function return how many objects (as destination) the object (as source) mapping to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - */ - int GetRelationCount(ESet pSet, int pElement) const; - - /** Get one of the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pIndex Relation index of the object linked to. - * \return Element gives the index of an element in the other set and the assigned weight. - */ - Element& GetRelation(ESet pSet, int pElement, int pIndex); - - /** Given the index of an element in the other set, get the index of one of the relations - * an element of a set is linked to. Returns -1 if there is not relation between these elements. - * \param pSet Source or destination set. - * \param pElementInSet Object index in the set. - * \param pElementInOtherSet Object index in another set. - * \return The index of one of the relations, -1 if there is not relation between these elements. - */ - int GetRelationIndex(ESet pSet, int pElementInSet, int pElementInOtherSet) const; - - /** Get the sum of the weights from the relations an element of a set is linked to. - * \param pSet Source or destination set. - * \param pElement Object index in the set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - * \return The sum of the weights from the relations. - */ - double GetRelationSum(ESet pSet, int pElement, bool pAbsoluteValue) const; - - - /** Normalize the weights of the relations of all the elements of a set. - * \param pSet Source or destination set. - * \param pAbsoluteValue Flag to convert negative value to positive value. - */ - void Normalize(ESet pSet, bool pAbsoluteValue); - - FbxWeightedMapping& operator=(const FbxWeightedMapping& pWMap); - -private: - - //! Remove all weighted relations. - void Clear(); - - FbxArray*> mElements[2]; - -}; - -typedef class FbxArray FbxArrayTemplateElement; -typedef class FbxArray*> FbxArrayTemplateArrayTemplateElement; - -#include - -#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h deleted file mode 100755 index 73734ed..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingoperator.h +++ /dev/null @@ -1,859 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingoperator.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ - -#include - -#include - -#include - -/** This object represents a binding operation on a FbxObject or FbxProperty. - * For example, FbxBindingOperator can be used to bind a light object - * to a parameter of shader via FbxNodeDirectionBOF or FbxNodePositionBOF. - * \code - * //Create an entry lEntry of binding table lTable. - * FbxBindingTableEntry& lEntry = lTable->AddNewEntry(); - * - * //Create a NodePositionConvert binding operator and add it as source of the lEntry. - * FbxOperatorEntryView lSrc(&lEntry, true, true); - * lSrc.SetOperatorName( "NodePositionConvert"); - * FbxBindingOperator* lOp = pImpl.AddNewBindingOperator( "NodePositionConvert", FbxNodePositionBOF::FunctionName); - * - * //Add a property entry to the binding operator. - * FbxBindingTableEntry& lEntryPropParam = lOp->AddNewEntry(); - * FbxPropertyEntryView lPropSrc(&lEntryPropParam, true, true); - * //Set the shader parameter (the property's name) as source of the lEntryPropParam. - * lPropSrc.SetProperty(lProp.GetHierarchicalName()); - * //Set the operator function FbxNodePositionBOF as destination of the lEntryPropParam. - * lEntryPropParam.SetDestination( FbxNodePositionBOF::FunctionName ); - * - * //Set the shader parameter as destination of the lEntry. - * FbxSemanticEntryView lDst( &lEntry, false, true ); - * lDst.SetSemantic( lProp.GetName() ); - * \endcode - * \nosubgrouping - * \see FbxOperatorEntryView, FbxBindingTableEntry, FbxPropertyEntryView - */ -class FBXSDK_DLL FbxBindingOperator : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingOperator, FbxBindingTableBase); - -public: - /** Run the operator on the given object. - * \param pObject The object that will be evaluated. - * \param pResult A pointer to a buffer to hold the result. - * \return \c true on success, \c false otherwise. - */ - template - bool Evaluate(const FbxObject* pObject, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = Evaluate(pObject, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pObject The object that will be evaluated. - * \param pInOut Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - template - bool ReverseEvaluation(const FbxObject* pObject, FBXTYPE * pInOut, - bool setObj=false, int index=0) const - { - - const void* lIn = pInOut; - void* lOut = NULL; - EFbxType lOutType; - - bool lSuccess = ReverseEvaluate(pObject, lIn, &lOut, &lOutType, setObj, index); - - if (lSuccess) - { - FbxTypeCopy(*pInOut, lOut, lOutType); - } - - FreeEvaluationResult(lOutType, lOut); - - return lSuccess; - } - - /** Evaluate the value of an operator parameter. - * \param pObject The object that will be evaluated. - * \param pEntryDestinationName The name of the parameter. - * This is used to get the property or operator that is related to this parameter, - * then to evaluate the property or operator. - * \param pResult A pointer to the result. - * \return \c true on success, \c false otherwise. - * \remarks This method can handle different types of entries. For property entry and constant entry, - * this method will find out the property via the pEntryDestinationName and then evaluate its value; - * for operator entry, this method will find out the operator via the pEntryDestinationName and - * evaluate the operator function to get the property's value; for any other types of entry, this method - * is meaningless. - */ - template - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, FBXTYPE* pResult) const - { - EFbxType lResultType; - void* lResult = NULL; - - bool lSuccess = EvaluateEntry(pObject, pEntryDestinationName, &lResultType, &lResult); - - if (lSuccess) - { - FbxTypeCopy(*pResult, lResult, lResultType); - } - - FreeEvaluationResult(lResultType, lResult); - - return lSuccess; - } - - /** This property stores the name of function. - * - * Default value is "". - */ - FbxPropertyT FunctionName; - - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Function name. - static const char* sFunctionName; - //! Target name. - static const char* sTargetName; - - //! Default value for function name. - static const char* sDefaultFunctionName; - //! Default value for target name. - static const char* sDefaultTargetName; - - - ////////////////////////////////////////////////////////////////////////// - // Functions - ////////////////////////////////////////////////////////////////////////// - - /** \internal - * - */ - static void RegisterFunctions(); - - /** \internal - * - */ - static void UnregisterFunctions(); - - - /** It represents a binding relationship between current object and the target. - * Any binding operation need to specify a certain kind of binding function. - * \nosubgrouping - */ - class FBXSDK_DLL Function - { - public: - //!Destructor. - virtual ~Function() {} - - /** Run the operator on the given object. - * \param pOperator The operator that will be applied. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - * The caller must call FreeEvaluationResult() when it is done with this pointer. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const = 0; - - /** Run the inverse operator on the given object, - * assigning the result directly to the object. - * \param pOperator The operator that will be applied. - * \param pTarget The object that will be evaluated. - * \param pIn - * \param pOut - * \param pOutType Type of value being reversed. - * \param setObj Control to set the property (only to query by the default ). - * \param index Used only in FbxMultiplyDistBOF. - * \return \c true on success, \c false otherwise. - */ - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const = 0; - }; - - /** The abstract factory class for binding function. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionCreatorBase - { - public: - //!Destructor. - virtual ~FunctionCreatorBase() {} - - /** Get name of the function. - * \return The name of the function. - */ - virtual const char* GetFunctionName() const = 0; - - /** Create the function. - */ - virtual Function* CreateFunction() const = 0; - }; - - /** The concrete factory class for binding function. - * \nosubgrouping - */ - template - class FunctionCreator : public FunctionCreatorBase - { - public: - - /** Get Name of the operation function. - * \return The Name of the operation function. - */ - virtual const char* GetFunctionName() const - { - return FUNCTION::FunctionName; - } - - /** Create the operation function. - */ - virtual Function* CreateFunction() const - { - return FbxNew< FUNCTION >(); - } - }; - - /** This utility class is used to register and unregister the binding function creators. - * \nosubgrouping - */ - class FBXSDK_DLL FunctionRegistry - { - public: - /** To register the binding function creator. - * \param pCreator The binding function creator to register. - */ - static void RegisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Insert(pCreator.GetFunctionName(), &pCreator); - } - - /** To unregister the binding function creator. - * \param pCreator The binding function creator to unregister. - */ - static void UnregisterFunctionCreator(FunctionCreatorBase const& pCreator) - { - sRegistry.Remove(pCreator.GetFunctionName()); - } - - /** To find the binding function creator by name. - * \param pName The name of the operation function creator to find. - */ - static const FunctionCreatorBase* FindCreator(const char* pName) - { - RegistryType::RecordType* lRecord = sRegistry.Find(pName); - - if (lRecord) - { - return lRecord->GetValue(); - } - else - { - return NULL; - } - } - - private: - typedef FbxMap RegistryType; - static RegistryType sRegistry; - }; - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, EFbxType* pResultType, void** pResult) const; - bool GetEntryProperty(const FbxObject* pObject, const char* pEntryDestinationName, FbxProperty & pProp) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - - void InstantiateFunction(); - bool Evaluate(const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - bool ReverseEvaluate(const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - void FreeEvaluationResult(EFbxType pResultType, void* pResult) const; - - Function* mFunction; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** An evaluation operator to get the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - */ -class FBXSDK_DLL FbxNodePositionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the position of the node that is bound with this operator via a certain property. - * The position of the node is represented by translation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodePositionBOF(); - virtual ~FbxNodePositionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** An evaluation operator to get the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - */ -class FBXSDK_DLL FbxNodeDirectionBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluate the direction of the node that is bound with this operator via a certain property. - * The direction of the node is represented by Euler rotation. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxNodeDirectionBOF(); - virtual ~FbxNodeDirectionBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** A pass through operator used to assign constants to parameters. -*/ -class FBXSDK_DLL FbxAssignBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" and returns it. - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType Will be filled by the type of the result. - * \param pResult Will be filled by a pointer to a buffer that hold the result. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAssignBOF(); - virtual ~FbxAssignBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A conditional operator that outputs one out of two properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxConditionalBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * If the property value is true (!= 0, != ""), returns the value of the - * property specified by "ifTrue", else returns the value of the property - * specified by "ifFalse". - * - * Currently the data types supported for the input property are - * limited to "integer", "boolean", "float", "double" and "string". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxConditionalBOF(); - virtual ~FbxConditionalBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A switch operator that outputs one out of n properties, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSwitchBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "predicate". - * Returns the value of the property specified by "case_n", where n - * is the value of "predicate". If there is no case_n entry, returns - * the value of the property specified by "default". - * - * Currently the data types supported for the predicate property are - * limited to "integer" and "boolean". - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSwitchBOF(); - virtual ~FbxSwitchBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxTRSToMatrixBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "T", "R" and "S" and - * return a transform matrix. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxTRSToMatrixBOF(); - virtual ~FbxTRSToMatrixBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxAddBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X+Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxAddBOF(); - virtual ~FbxAddBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxSubstractBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X-Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSubstractBOF(); - virtual ~FbxSubstractBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - //Set index to 1 to get realWorldScale. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyBOF(); - virtual ~FbxMultiplyBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxMultiplyDistBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X*Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxMultiplyDistBOF(); - virtual ~FbxMultiplyDistBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxOneOverXBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" - * return 1/X as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxOneOverXBOF(); - virtual ~FbxOneOverXBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxPowerBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object properties specified by "X" and "Y" - * return X^Y as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxPowerBOF(); - virtual ~FbxPowerBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -class FBXSDK_DLL FbxDegreeToRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a float. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDegreeToRadianBOF(); - virtual ~FbxDegreeToRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -class FBXSDK_DLL FbxVectorDegreeToVectorRadianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "X" - * return X converted to radian as a vector3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxVectorDegreeToVectorRadianBOF(); - virtual ~FbxVectorDegreeToVectorRadianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxSphericalToCartesianBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Evaluates the object property specified by "rho", "theta" and "phi" - * return the converted Cartesian coordinates as a double3. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSphericalToCartesianBOF(); - virtual ~FbxSphericalToCartesianBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -class FBXSDK_DLL FbxIsYupBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check if the scene coordinate system is y-up - * return a bool. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxIsYupBOF(); - virtual ~FbxIsYupBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - - -/** A symbol(string) operator that search the string table and return its corresponding unique id, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSymbolIDBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check in the symbol table the string and returns its unique ID as an integer - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSymbolIDBOF(); - virtual ~FbxSymbolIDBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - - -/** A chooser operator that check spot distribution and returns the correct value, based on - * the value of a predicate property. - */ -class FBXSDK_DLL FbxSpotDistributionChooserBOF : public FbxBindingOperator::Function -{ -public: - //! Name of the operation function. - static const char* FunctionName; - - /** Check the enum of the spot distribution and returns the correct value - * as an int. - * - * \param pOperator Operator running on the object. - * \param pObject The object that will be evaluated. - * \param pResultType The type of the result to be returned. - * \param pResult A pointer to a buffer that can hold the result. - * \return \c true on success, \c false otherwise. - */ - virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; - - //! Inverse evaluation for this binding function is not implemented yet. - virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxSpotDistributionChooserBOF(); - virtual ~FbxSpotDistributionChooserBOF(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h deleted file mode 100755 index a155070..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingsentryview.h -#ifndef _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ - -#include - -#include - -#include - -/** FbxBindingsEntryView represents binding table entry in entry tables. - * The name of the binding table can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxBindingsEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxBindingsEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxBindingsEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxBindingsEntryView(); - - /** Get the binding table's name for the binding entry. - * \return The binding table's name. - */ - const char* GetBindingTableName() const; - - /** Set the binding table's name for binding entry. - * \param pName The binding table's name to set. - */ - void SetBindingTableName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxBindingsEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h deleted file mode 100755 index f5e2db0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtable.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtable.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ - -#include - -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to corresponding destinations, usually a third party shader parameters. - * Binding represents a link between internal object(e.g. FbxObject) and - * external object(e.g. HLSL shader parameters). - * \nosubgrouping - * \see FbxBindingOperator, FbxBindingTableBase - */ -class FBXSDK_DLL FbxBindingTable : public FbxBindingTableBase -{ - FBXSDK_OBJECT_DECLARE(FbxBindingTable, FbxBindingTableBase); - -public: - /** This property stores the name of target. - * - * Default value is "". - */ - FbxPropertyT TargetName; - - /** This property stores the type of target. - * - * Default value is "". - */ - FbxPropertyT TargetType; - - /** Relative URL of file containing the shader implementation description. - * e.g.: ./shader.mi - * Default value is "". - */ - FbxPropertyT DescRelativeURL; - - /** Absolute URL of file containing the shader implementation description. - * e.g.: file:///usr/tmp/shader.mi - * Default value is "". - */ - FbxPropertyT DescAbsoluteURL; - - /** Identify the shader to use in previous description's URL. - * e.g.: MyOwnShader - * Default value is "". - */ - FbxPropertyT DescTAG; - - /** Relative URL of file containing the shader implementation code. - * e.g.: ./bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeRelativeURL; - - /** Absolute URL of file containing the shader implementation code. - * e.g.: file:///usr/tmp/bin/shader.dll - * Default value is "". - */ - FbxPropertyT CodeAbsoluteURL; - - /** Identify the shader function entry to use in previous code's URL. - * e.g.: MyOwnShaderFunc - * Default value is "". - */ - FbxPropertyT CodeTAG; - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - //! Target name. - static const char* sTargetName; - - //! Target type. - static const char* sTargetType; - - //! Relative URL for shader description. - static const char* sDescRelativeURL; - - //! Absolute URL for shader description. - static const char* sDescAbsoluteURL; - - //! Identify the shader to use in previous description's URL. - static const char* sDescTAG; - - //! Relative URL for shader code. - static const char* sCodeRelativeURL; - - //! Absolute URL for shader code. - static const char* sCodeAbsoluteURL; - - //! Identify the shader function entry to use in previous code's URL. - static const char* sCodeTAG; - - - //! Default value for target name. - static const char* sDefaultTargetName; - - //! Default value for target type. - static const char* sDefaultTargetType; - - //! Default value for relative URL for shader description. - static const char* sDefaultDescRelativeURL; - - //! Default value for absolute URL for shader description. - static const char* sDefaultDescAbsoluteURL; - - //! Default value for identifying the shader to use in previous description's URL. - static const char* sDefaultDescTAG; - - //! Default value for relative URL for shader code. - static const char* sDefaultCodeRelativeURL; - - //! Default value for absolute URL for shader code. - static const char* sDefaultCodeAbsoluteURL; - - //! Default value for identifying the shader function entry to use in previous code's URL. - static const char* sDefaultCodeTAG; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h deleted file mode 100755 index 4e94a22..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtablebase.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ - -#include - -#include -#include -#include - -#include - -/** A binding table represents a collection of bindings - * from source types such as FbxObject, or FbxLayerElements - * to destinations which can be of similar types. - * \see FbxBindingTableEntry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableBase : public FbxObject -{ - FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxBindingTableBase,FbxObject); - -public: - /** Adds a new entry to the binding table. - * \return The new entry. - */ - FbxBindingTableEntry& AddNewEntry(); - - /** Query the number of table entries. - * \return The number of entries. - */ - size_t GetEntryCount() const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry const& GetEntry( size_t pIndex ) const; - - /** Access a table entry. - * \param pIndex Valid range is [0, GetEntryCount()-1]. - * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. - */ - FbxBindingTableEntry& GetEntry( size_t pIndex ); - - /** Retrieve the table entry for the given source value. - * \param pSrcName The source value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a source equal in value to pSrcName. - */ - const FbxBindingTableEntry* GetEntryForSource(const char* pSrcName) const; - - /** Retrieve the table entry for the given destination value. - * \param pDestName The destination value to query. - * \return The corresponding entry, or NULL if no entry in - * the table has a destination equal in value to pDestName. - */ - const FbxBindingTableEntry* GetEntryForDestination(const char* pDestName) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Remark: This method copies the mEntries table AND clears the UserData on the resulting copy to prevent shared memory - // data between clones/copies. - FbxObject& Copy(const FbxObject& pObject) override; - -private: - FbxDynamicArray mEntries; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h deleted file mode 100755 index f62db26..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxbindingtableentry.h -#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ -#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ - -#include - -#include - -#include - -/** A binding table entry stores a binding between a source and a - * destination. Users should not instantiate this class directly, - * but always call FbxBindingTableBase::AddNewEntry() to create - * a new entry in the binding table. - * \nosubgrouping - */ -class FBXSDK_DLL FbxBindingTableEntry -{ -public: - /** - *\name Constructor and Destructor - */ - //@{ - //!Constructor. - FbxBindingTableEntry(); - - /**Copy constructor. - * \param pEntry FbxBindingTableEntry to be copied. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry(const FbxBindingTableEntry& pEntry); - - //!Destructor. - ~FbxBindingTableEntry(); - //@} - - /** - * \name Access - */ - //@{ - /** Set the source. - * \param pSource The source to set. - */ - void SetSource( const char* pSource ); - - //!Retrieve the source. - const char* GetSource() const; - - /** Set the destination. - * \param pDestination The destination to set. - */ - void SetDestination( const char* pDestination ); - - //!Retrieve the destination. - const char* GetDestination() const; - - /** Set the source type or destination type. - * \param pType The source type or destination type to set. - * \param pAsSource Flag indicates source type or destination type to set. - */ - void SetEntryType( const char* pType, bool pAsSource ); - - /** Get the source type or destination type. - * \param pAsSource Flag indicates source type or destination type to get. - * \return Source type or destination type. - */ - const char* GetEntryType( bool pAsSource ) const; - - /** Retrieve user data pointer. - * \return User data pointer. - */ - void* GetUserDataPtr(); - - /** Retrieve user data pointer. - * \return User data pointer. - */ - const void* GetUserDataPtr() const; - - /** Set user data pointer. - * \param pData user data pointer. - */ - void SetUserDataPtr(void* pData ); - //@} - - /** Assignment operator. - * \param pEntry FbxBindingTableEntry assigned to this one. - * \remark the UserDataPtr is a shared pointer. - */ - FbxBindingTableEntry& operator=(const FbxBindingTableEntry& pEntry); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxString mSource; - FbxString mDestination; - FbxString mSourceType; - FbxString mDestinationType; - void* mData; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h deleted file mode 100755 index b93fa32..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxconstantentryview.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxconstantentryview.h -#ifndef _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxConstantEntryView represents constant string entry in entry tables. - * The constant string can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxConstantEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxConstantEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxConstantEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxConstantEntryView(); - - /** Get the constant string for binding entry. - * \return The constant string. - */ - const char* GetConstantName() const; - - /** Set the constant string for binding entry. - * \param pName The constant string to set. - */ - void SetConstantName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxConstantEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxentryview.h deleted file mode 100755 index 6d1ea71..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxentryview.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxentryview.h -#ifndef _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ - -#include - -#include - -class FbxBindingTableEntry; - -/** Entry view class represents binding entry in entry tables. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxEntryView -{ -public: - - //! Entry type. - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxEntryView(); - //@} - - - /** Check whether this entry view is valid or not. - * If this entry view corresponds with an valid entry which is not NULL, and the - * entry type of this entry view is the same as that of the entry it corresponds with, - * then this entry view is valid. - * \return \c true if the entry view is valid, \c false otherwise. - */ - virtual bool IsValid() const; - - /** Create a new entry view. - * \return \c true if the entry view is created successfully, \c false otherwise. - */ - virtual bool Create(); - - /** Get the entry type of this entry view. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool mAsSource; - FbxBindingTableEntry* mEntry; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h deleted file mode 100755 index 12615dc..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxfiletexture.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxfiletexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ - -#include - -#include - -#include - -/** This class describes image mapping on top of geometry. - * \note To apply a texture to geometry, first connect the - * geometry to a FbxSurfaceMaterial object (e.g. FbxSurfaceLambert) - * and then connect one of its properties (e.g. Diffuse) to the - * FbxFileTexture object. - * \see FbxSurfaceLambert - * \see FbxSurfacePhong - * \see FbxSurfaceMaterial - * \note For some example code, see also the CreateTexture() function - * in the ExportScene03 of FBX SDK examples. - * \nosubgrouping - */ -class FBXSDK_DLL FbxFileTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxFileTexture, FbxTexture); - -public: - /** - * \name Texture Properties - */ - //@{ - /** This property handles the material use. - * Default value is false. - */ - FbxPropertyT UseMaterial; - - /** This property handles the Mipmap use. - * Default value is false. - */ - FbxPropertyT UseMipMap; - - /** Resets the default texture values. - * \remarks The texture file name is not reset. - */ - void Reset() override; - - /** Sets the associated texture file. - * \param pName The absolute path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid, you cannot leave the name empty. - */ - bool SetFileName(const char* pName); - - /** Sets the associated texture file. - * \param pName The relative path of the texture file. - * \return \c True if successful, returns \c false otherwise. - * \remarks The texture file name must be valid. - */ - bool SetRelativeFileName(const char* pName); - - /** Returns the absolute texture file path. - * \return The absolute texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetFileName() has not been called before. - */ - const char* GetFileName () const; - - /** Returns the relative texture file path. - * \return The relative texture file path. - * \remarks An empty string is returned if FbxFileTexture::SetRelativeFileName() has not been called before. - */ - const char* GetRelativeFileName() const; - - /** \enum EMaterialUse Specify if texture uses model material. - */ - enum EMaterialUse - { - eModelMaterial, //! Texture uses model material. - eDefaultMaterial //! Texture does not use model material. - }; - - /** Sets the material use. - * \param pMaterialUse Specify how texture uses model material. - */ - void SetMaterialUse(EMaterialUse pMaterialUse); - - /** Returns the material use. - * \return How the texture uses model material. - */ - EMaterialUse GetMaterialUse() const; - - - //@} - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxFileTexture const& pTexture) const; - - FbxString& GetMediaName(); - void SetMediaName(const char* pMediaName); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); - void SyncVideoFileName(const char* pFileName); - void SyncVideoRelativeFileName(const char* pFileName); - - FbxString mFileName; - FbxString mRelativeFileName; - FbxString mMediaName; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementation.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementation.h deleted file mode 100755 index 92c353c..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementation.h +++ /dev/null @@ -1,241 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementation.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ - -#include - -#include - -#include - -class FbxBindingOperator; -class FbxBindingTable; - -/** This object represents the shading node implementation. - * It defines basic information about the shader and the binding table(FbxBindingTable). - * For example, you can create a new FbxImplementation like this: - * \code - * FbxImplementation* lImpl = FbxImplementation::Create( &pMyScene, "MyImplementation" ); - * pMyObject.AddImplementation( lImpl ); - * pMyObject.SetDefaultImplementation( lImpl ); - * lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; //FBXSDK_RENDERING_API_DIRECTX, FBXSDK_RENDERING_API_OPENGL, FBXSDK_RENDERING_API_MENTALRAY or FBXSDK_RENDERING_API_PREVIEW - * lImpl->RenderAPIVersion = "9.0"; //API Version - * - * lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; //FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX or FBXSDK_SHADING_LANGUAGE_MRSL - * lImpl->LanguageVersion = "1.0"; //Language Version - * \endcode - * - * After the new FbxImplementation is created, you can access FbxBindingTable like this: - * \code - * FbxBindingTable* lTable = lImpl->GetTableByTargetName("root"); - * \endcode - * Also, you can access the exist FbxImplementation in FbxObject by this: - * \code - * const FbxImplementation* lImpl = GetImplementation( pMyObject, FBXSDK_IMPLEMENTATION_CGFX ); // FBXSDK_IMPLEMENTATION_PREVIEW, FBXSDK_IMPLEMENTATION_MENTALRAY, FBXSDK_IMPLEMENTATION_CGFX, FBXSDK_IMPLEMENTATION_HLSL, FBXSDK_IMPLEMENTATION_OGS or FBXSDK_IMPLEMENTATION_NONE - * \endcode - * \nosubgrouping - * \see FbxImplementationFilter - */ -class FBXSDK_DLL FbxImplementation : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxImplementation, FbxObject); - -public: - /** - * \name Target Name. - */ - //@{ - FbxString RenderName; - //@} - - /** - * \name Shader Language and API descriptions. - */ - //@{ - - /** Shader Language. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT Language; - - //! Shader Language version. - FbxPropertyT LanguageVersion; - - /** Render API. - * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h - */ - FbxPropertyT RenderAPI; - - //! Render API version. - FbxPropertyT RenderAPIVersion; - //@} - - - /** - * \name Binding description - */ - //@{ - - //! Name of root binding table. - FbxPropertyT RootBindingName; - - //! Property to store the shader parameters(constants) values in this implementation. - FbxProperty GetConstants() const; - - /** Add a new binding table to the table list. - * \param pTargetName The target name for the binding table. - * \param pTargetType The target type for the binding table. - * \return the new binding table. - */ - FbxBindingTable* AddNewTable( const char* pTargetName, const char* pTargetType ); - - /** Retrieves a handle on the root binding table. - * \return A const pointer to the root table or NULL if it does not exist. - */ - const FbxBindingTable* GetRootTable() const; - - /** Retrieves a handle on the root binding table. - * \return A pointer to the root table or NULL if it does not exist. - */ - FbxBindingTable* GetRootTable(); - - /** Gets the number of binding tables. - * \return the number of binding tables. - */ - int GetTableCount() const; - - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - const FbxBindingTable* GetTable( int pIndex ) const; - /** Retrieves a handle on the (pIndex)th binding table. - * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). - * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. - */ - FbxBindingTable* GetTable( int pIndex ); - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A const pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetName( const char* pName ) const; - - /** Returns the binding table that has the given target name. - * \param pName The target name of the table to look for. - * \return A pointer to the binding table with the given target name, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetName( const char* pName ); - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A const pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - const FbxBindingTable* GetTableByTargetType( const char* pTargetName ) const; - - /** Returns the binding table that has the given target type. - * \param pTargetName The target type to look for. - * \return A pointer to the binding table with the given target type, or NULL if there is no such binding table. - */ - FbxBindingTable* GetTableByTargetType( const char* pTargetName ); - - - /** Add a new binding operator to the operator list. - * \param pTargetName The target name for the binding operator. - * \param pFunctionName The function name for the binding operator. - * \return The new operator. - */ - FbxBindingOperator* AddNewBindingOperator( const char* pTargetName, const char* pFunctionName ); - - /** Gets the number of binding operators. - * \return the number of binding operators. - */ - int GetBindingOperatorCount() const; - - /** Returns the binding operator that has the given name. - * \param pTargetName The target name of the binding operator to look for. - * \return A const pointer to the binding operator with the given name, or NULL if there is no such binding table. - */ - const FbxBindingOperator* GetOperatorByTargetName( const char* pTargetName ) const; - //@} - - - /** - * \name Static values - */ - //@{ - - // property names - - /** Shader Language name. - * \see Language - */ - static const char* sLanguage; - - /** Shader Language version. - * \see LanguageVersion - */ - static const char* sLanguageVersion; - - /** Shader render API. - * \see RenderAPI - */ - static const char* sRenderAPI; - - /** Shader render API version. - * \see RenderAPIVersion - */ - static const char* sRenderAPIVersion; - - /** Name of root binding table. - * \see RootBindingName - */ - static const char* sRootBindingName; - - /** Name of property to store the shader parameters(constants) values in this implementation. - * \see GetConstants - */ - static const char* sConstants; - - //! default value for implementation type. - static const char* sDefaultType; - - //! default value for shader language. - static const char* sDefaultLanguage; - - //! default value for shader language version. - static const char* sDefaultLanguageVersion; - - //! default value for shader render API. - static const char* sDefaultRenderAPI; - - //! default value for shader render API version. - static const char* sDefaultRenderAPIVersion; - - //! default value for root binding table name. - static const char* sDefaultRootBindingName; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h deleted file mode 100755 index 0b05c68..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationfilter.h +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationfilter.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ - -#include - -#include - -#include - -class FbxCriteria; - -/** \brief This object represents a shading node filter criteria - * based on the shading node implementation. - * \nosubgrouping - */ -class FBXSDK_DLL FbxImplementationFilter : public FbxObjectFilter -{ - -public: - - /** The default shading API. - */ - static const char * sCHR_ANY_SHADING_API; - - /** The default shading API version. - */ - static const char * sCHR_ANY_SHADING_API_VERSION; - - /** The default shading language. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE; - - /** The default shading language version. - */ - static const char * sCHR_ANY_SHADING_LANGUAGE_VERSION; - - - /** Constructor - * \param pShadingAPI a string containing the implementation API name: - * MentalRay - * OpenGL - * DirectX - * - * \param pShadingAPIVersion a string containing the implementation API version: - * eg. 1.0 - * - * \param pShadingLanguage a string identifying the implementation language name: - * GLSL = GL Shading Language - * HLSL = High Level Shading Language - * CGFX = CG effect(NVidia) - * RIB = RenderMan (RIB) - * etc... - * - * \param pShadingLanguageVersion a string identifying the implementation language version: - * eg. 1.0 - * - * \remarks by default the created criteria correspond to any shader - */ - FbxImplementationFilter( - const char * pShadingAPI = sCHR_ANY_SHADING_API, - const char * pShadingAPIVersion = sCHR_ANY_SHADING_API_VERSION, - const char * pShadingLanguage = sCHR_ANY_SHADING_LANGUAGE, - const char * pShadingLanguageVersion = sCHR_ANY_SHADING_LANGUAGE_VERSION - ); - - //! Destructor. - virtual ~FbxImplementationFilter(); - - /** Tells if this filter matches the given shading node implementation - * \param pObjectPtr The given shading node implementation - */ - virtual bool Match(const FbxObject * pObjectPtr) const; - - //! Stores the shading API - FbxString mShadingAPI; - - //! Stores the shading API Version - FbxString mShadingAPIVersion; - - //! Stores the shading language - FbxString mShadingLanguage; - - //! Stores the shading language version - FbxString mShadingLanguageVersion; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - /** Utility method to determine if the given object is a shading node - * that we recognize. - */ - static bool IsShadingObject( const FbxObject* pObject ); - - /** Returns a criteria suitable for use with querying connections - * to shading nodes that we recognize, on FbxObject. - */ - static FbxCriteria Criteria(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h deleted file mode 100755 index 3f0ed2a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbximplementationutils.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbximplementationutils.h -#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ -#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ - -#include - -#include -#include -#include -#include - -#include - -/** Get FbxImplementation from FbxObject. - * \param pObject FbxObject to get FbxImplementation. - * \param pImplementationTarget Name of the implementation property to get. - * \return FbxImplementation Pointer to FbxImplementation. - */ -FBXSDK_DLL const FbxImplementation* GetImplementation( const FbxObject* pObject, const char* pImplementationTarget ); - -/** Get bound property value from FbxBindingTable. - * \param pBindingTable FbxBindingTable to get bound property value. - * \param pEntryName Name of the Entry type to get. - * \param pImplementation FbxImplementation of the bound property value to get if the Entry type is FbxOperatorEntryView::sEntryType. - * \param pBoundObject FbxObject of the bound property value to get if the Entry type is FbxPropertyEntryView::sEntryType. - * \param pValue Pointer to bound property value from FbxBindingTable. - * \return Whether get bound property value success or not. - */ -template bool GetBoundPropertyValue(const FbxBindingTable* pBindingTable, - const char* pEntryName, - const FbxImplementation* pImplementation, - const FbxObject* pBoundObject, - T& pValue) -{ - if ((NULL != pImplementation) && (NULL != pBindingTable) && (NULL != pBoundObject) && (NULL != pEntryName)) - { - const FbxBindingTableEntry* lEntry = pBindingTable->GetEntryForDestination(pEntryName); - - if (NULL != lEntry) - { - if (strcmp(lEntry->GetEntryType(true), FbxPropertyEntryView::sEntryType) == 0) - { - const char* lPropName = lEntry->GetSource(); - FbxProperty lProp = pBoundObject->FindPropertyHierarchical(lPropName); - if (lProp.IsValid()) - { - pValue = lProp.Get(); - return true; - } - } - else if (strcmp(lEntry->GetEntryType(true), FbxOperatorEntryView::sEntryType) == 0) - { - const char* lOperatorName = lEntry->GetSource(); - const FbxBindingOperator* lOp = pImplementation->GetOperatorByTargetName(lOperatorName); - if (lOp) - { - return lOp->Evaluate(pBoundObject, &pValue); - } - } - } - } - - return false; -} - -#include - -#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h deleted file mode 100755 index 430894f..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayeredtexture.h -#ifndef _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ - -#include - -#include - -#include - -/** FbxLayeredTexture is a combination of multiple textures(FbxTexture) blended sequentially. - * For example, you can access individual texture by: - * \code - * FbxTexture* pIndiTexture = lLayeredTexture->GetSrcObject(FbxTexture::ClassId, pTextureIndex); - * \endcode - * Another example to construct a layered texture with two sub textures. - * \code - * FbxFileTexture *background, *file1; - * FbxLayeredTexture* layeredTexture; - * - * // connect two file textures to a layered texture via OO connections - * layeredTexture->ConnectSrcObject(background); - * layeredTexture->ConnectSrcObject(file1); - * - * // set the second file texture's blend mode and alpha. - * layeredTexture->SetTextureBlendMode(1, FbxLayeredTexture::eOver); - * layeredTexture->SetTextureAlpha(1, 0.5); - * \endcode - * \nosubgrouping - * \see FbxTexture - */ -class FBXSDK_DLL FbxLayeredTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxLayeredTexture, FbxTexture); - -public: - /** \enum EBlendMode Blend modes. - * - \e eTranslucent, The new texture layer is transparent (depending on the Alpha value). - * - \e eAdditive, Add the color of the new texture to the previous texture. - * - \e eModulate, Multiples the color value of the new texture by the color values of all previous layers of texture. - * - \e eModulate2, Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. - * - \e eOver, Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. - * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. - * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. - * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. - * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. - * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. - * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. - * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. - * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer - * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. - * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. - * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. - * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. - * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. - * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. - * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. - * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. - * - \e eHardMix, Produces either white or black, depending on similarities between A and B. - * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. - * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. - * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. - * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. - * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. - * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. - * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. - * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. - * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. - * - \e eBlendModeCount, Marks the end of the blend mode enum. - */ - enum EBlendMode - { - eTranslucent, - eAdditive, - eModulate, - eModulate2, - eOver, - eNormal, - eDissolve, - eDarken, - eColorBurn, - eLinearBurn, - eDarkerColor, - eLighten, - eScreen, - eColorDodge, - eLinearDodge, - eLighterColor, - eSoftLight, - eHardLight, - eVividLight, - eLinearLight, - ePinLight, - eHardMix, - eDifference, - eExclusion, - eSubtract, - eDivide, - eHue, - eSaturation, - eColor, - eLuminosity, - eOverlay, - eBlendModeCount - }; - - /** Equivalence operator. - * \param pOther The object for comparison. - * \return \c True if pOther is equivalent to this object, returns \c false otherwise. - */ - bool operator==( const FbxLayeredTexture& pOther ) const; - - /** Sets the blending mode of a specified texture. - * \param pIndex The texture index. - * \param pMode The blend mode to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureBlendMode( int pIndex, EBlendMode pMode ); - - /** Returns the blending mode of a specified texture - * \param pIndex The texture index. - * \param pMode The parameter that will hold the returned blend mode. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureBlendMode( int pIndex, EBlendMode& pMode ) const; - - /** Sets the alpha of a specified texture. - * \param pIndex The texture index. - * \param pAlpha The alpha to be set. - * \return \c True if successful, returns \c false otherwise. - */ - bool SetTextureAlpha( int pIndex, double pAlpha ); - - /** Returns the alpha of a specified texture - * \param pIndex The texture index. - * \param pAlpha The parameter that will hold the returned alpha. - * \return \c True if successful, returns \c false otherwise. - */ - bool GetTextureAlpha( int pIndex, double& pAlpha ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - -protected: - struct InputData - { - EBlendMode mBlendMode; - double mAlpha; - }; - -public: - FbxArray mInputData; - -protected: - bool ConnectNotify (FbxConnectEvent const &pEvent) override; - - bool RemoveInputData( int pIndex ); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxLayeredTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h deleted file mode 100755 index 99419c6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxlayerentryview.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxlayerentryview.h -#ifndef _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ - -#include - -#include -#include -#include - -#include - -class FbxLayerContainer; - -/** FbxLayerEntryView encodes a layer element representation (the index of the layer, the type of the layer - * element and whether the layer element is a UVSet layer element) to a string stored in FbxBindingTableEntry - * and decodes the string back to a layer element representation. - * This class is used in combination with FbxBindingTableEntry to represent a source or a destination - * FbxLayerElement. - * \see FbxBindingTableEntry and FbxBindingTable. - */ -class FBXSDK_DLL FbxLayerEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxLayerEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxLayerEntryView(FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - virtual ~FbxLayerEntryView(); - - /** Set the layer element for the binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void SetLayerElement( int pLayerIndex, FbxLayerElement::EType pType, bool pUVSet ); - - /** Get the layer element for binding entry. - * \param pLayerIndex LayerElement index. - * \param pType LayerElement type. - * \param pUVSet Whether this is a UVSet LayerElement. - */ - void GetLayerElement( int &pLayerIndex, FbxLayerElement::EType& pType, bool& pUVSet ) const; - - /** Get the layer element for binding entry. - * \param pContainer FbxLayerContainer to get the layer element from. - * \return The layer element for binding entry. - */ - FbxLayerElement* GetLayerElement( FbxLayerContainer* pContainer ) const; - - /** Get the entry type. - * \return Entry type as string "FbxLayerEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - static const char* sDelimiter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h deleted file mode 100755 index 610741e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxoperatorentryview.h -#ifndef _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ - -#include - -#include - -#include - -class FbxBindingTableEntry; - -/** FbxOperatorEntryView represents binding operator entry in entry tables. - * The binding operator can be used as source or destination for the binding entry. - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxOperatorEntryView : public FbxEntryView -{ -public: - /** Name of the entry type used in the binding entry. - * It should be "FbxOperatorEntry" in this case. - */ - static const char* sEntryType; - - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxOperatorEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxOperatorEntryView(); - - /** Get the operator name from the binding entry. - * \return The operator name. - */ - const char* GetOperatorName() const; - - /** Set the operator name to the binding entry. - * \param pName The operator name to set. - */ - void SetOperatorName(const char* pName); - - /** Get the entry type. - * \return Entry type as string "FbxOperatorEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h deleted file mode 100755 index 2d0bcee..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxproceduraltexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ - -#include - -#include - -#include - -/** Contains the information to generate a texture procedurally. Data information for the texture - * generation is contained in a blob property. - * \see FbxTexture - * \nosubgrouping - */ -class FBXSDK_DLL FbxProceduralTexture : public FbxTexture -{ - FBXSDK_OBJECT_DECLARE(FbxProceduralTexture, FbxTexture); - - public: - /** - * \name Procedural Texture Properties - */ - //@{ - - /** This property handles the raw data for generating procedural texture. - */ - FbxPropertyT BlobProp; - - /** Resets the default procedural texture values. - */ - void Reset() override; - - //@} - - /** - * \name Property Access Methods - */ - //@{ - - /** Sets the blob. - * \param pBlob Blob containing information for the procedural texture - */ - void SetBlob(FbxBlob& pBlob); - - /** Get the blob. - * \return Blob containing information for the procedural texture - */ - FbxBlob GetBlob() const; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxProceduralTexture const& pTexture) const; - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h deleted file mode 100755 index 371f3d4..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxpropertyentryview.h -#ifndef _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxPropertyEntryView represents property entry in entry tables. - * The property can be used as source or destination for the binding entry. - * Use this class to manipulate binding table's attributes. - * - * \code Here is a code snippet to show how it used. - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lView( lEntry, true, true); - * lView.SetProperty( lProp.GetName()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * - * \nosubgrouping - */ -class FBXSDK_DLL FbxPropertyEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxPropertyEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxPropertyEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); - - //! Destructor. - ~FbxPropertyEntryView(); - //@} - - /** Get the property name from the binding entry. - * \return The property name. - */ - const char* GetProperty() const; - - /** Set the property name to the binding entry. - * \param pPropertyName The property name to set. - */ - void SetProperty(const char* pPropertyName); - - /** Get the entry type. - * \return Entry type as string "FbxPropertyEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h deleted file mode 100755 index 04998ff..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsemanticentryview.h -#ifndef _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ -#define _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ - -#include - -#include -#include - -#include - -/** FbxSemanticEntryView stores a binding corresponding to - * a semantic within a shader file. - * A shader semantic is a parameter, a constant or an operator. - * So a shader semantic could bind with FbxProperty ( parameter, constant) and FbxBindingOperator (operator). - * - * Here is a code snippet to show how it used. - * \code - * FbxProperty lProp; - * FbxBindingTable lTable; - * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); - * FbxPropertyEntryView lSrcView( lEntry, true, true); - * lSrcView.SetProperty( lProp.GetHierarchicalName()); - * FbxSemanticEntryView lDstView( &pEntry, false, true ); - * lDstView.SetSemantic( lProp.Getname()); - * \endcode - * - * \see FbxBindingTableEntry and FbxBindingTable. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSemanticEntryView : public FbxEntryView -{ -public: - - /** Name of the entry type used in the binding entry. - * It should be "FbxSemanticEntry" in this case. - */ - static const char* sEntryType; - - /** - * \name Constructor and Destructor. - */ - //@{ - /** Constructor. - * \param pEntry The binding table entry to create the entry view for. - * \param pAsSource \c true to create the entry view as source, \c false as destination. - * \param pCreate \c true to create the entry view, \c false otherwise. - */ - FbxSemanticEntryView (FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false); - - //! Destructor. - virtual ~FbxSemanticEntryView(); - //@} - - /** Set the semantic to the binding entry. - * \param pSemantic The semantic string to set. - */ - void SetSemantic( const char* pSemantic ); - - /** Get the semantic from the binding entry. - * \param pAppendIndex \c true if the returned semantic append a index, \c false otherwise. - * \return The semantic. - */ - FbxString GetSemantic(bool pAppendIndex = true) const; - - /** Get the semantic index suffix. - * \return Semantic index suffix. - */ - int GetIndex() const; - - /** Get the entry type. - * \return Entry type as string "FbxSemanticEntry". - * \remarks Always use EntryType() to get the right entry type. - */ - virtual const char* EntryType() const; -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h deleted file mode 100755 index d88e83a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxshadingconventions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxshadingconventions.h -#ifndef _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ -#define _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ - -#include - -#include - -//Predefined shader languages -#define FBXSDK_SHADING_LANGUAGE_HLSL "HLSL" -#define FBXSDK_SHADING_LANGUAGE_GLSL "GLSL" -#define FBXSDK_SHADING_LANGUAGE_CGFX "CGFX" -#define FBXSDK_SHADING_LANGUAGE_SFX "SFX" -#define FBXSDK_SHADING_LANGUAGE_MRSL "MentalRaySL" - -//Predefined rendering APIs -#define FBXSDK_RENDERING_API_DIRECTX "DirectX" -#define FBXSDK_RENDERING_API_OPENGL "OpenGL" -#define FBXSDK_RENDERING_API_MENTALRAY "MentalRay" -#define FBXSDK_RENDERING_API_PREVIEW "PreviewColorAPI" - -#define FBXSDK_IMPLEMENTATION_PREVIEW "ImplementationPreview" -#define FBXSDK_IMPLEMENTATION_MENTALRAY "ImplementationMentalRay" -#define FBXSDK_IMPLEMENTATION_CGFX "ImplementationCGFX" -#define FBXSDK_IMPLEMENTATION_HLSL "ImplementationHLSL" -#define FBXSDK_IMPLEMENTATION_SFX "ImplementationSFX" -#define FBXSDK_IMPLEMENTATION_OGS "ImplementaitonOGS" -#define FBXSDK_IMPLEMENTATION_NONE "ImplementationNone" - -//PROTEIN 1.0 conventions -#define FBXSDK_TYPE_ENVIRONMENT "KFbxEnvironment" -#define FBXSDK_TYPE_LIGHT "KFbxLight" -#define FBXSDK_TYPE_PROCEDURALGEOMETRY "KFbxProceduralGeometry" -#define FBXSDK_TYPE_SURFACEMATERIAL "KFbxSurfaceMaterial" -#define FBXSDK_TYPE_TEXTURE "KFbxTexture" -#define FBXSDK_TYPE_SWATCHSCENE "KFbxSwatchScene" - -//PROTEIN 2.0 conventions -#define ADSK_TYPE_ENVIRONMENT "ADSKEnvironmentDefinition" -#define ADSK_TYPE_LIGHT "ADSKLightDefinition" -#define ADSK_TYPE_PROCEDURALGEOMETRY "ADSKProceduralGeometryDefinition" -#define ADSK_TYPE_SURFACEMATERIAL "ADSKSurfaceMaterialDefinition" -#define ADSK_TYPE_TEXTURE "ADSKTextureDefinition" -#define ADSK_TYPE_SWATCHSCENE "ADSKSwatchSceneDefinition" - -//ASSET Definition conventions -#define ADSK_UI_DEFINITION_URL "UIDefinition" - -#include - -#endif /* _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h deleted file mode 100755 index 36329a6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacelambert.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ - -#include - -#include - -#include - -/** This class contains settings for Lambert Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceLambert : public FbxSurfaceMaterial -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceLambert,FbxSurfaceMaterial); - -public: - /** - * \name Material properties - */ - //@{ - - //! Emissive color property. - FbxPropertyT Emissive; - - /** Emissive factor property. This factor is used to - * attenuate the emissive color. - */ - FbxPropertyT EmissiveFactor; - - //! Ambient color property. - FbxPropertyT Ambient; - - /** Ambient factor property. This factor is used to - * attenuate the ambient color. - */ - FbxPropertyT AmbientFactor; - - //! Diffuse color property. - FbxPropertyT Diffuse; - - /** Diffuse factor property. This factor is used to - * attenuate the diffuse color. - */ - FbxPropertyT DiffuseFactor; - - /** NormalMap property. This property can be used to specify the distortion of the surface - * normals and create the illusion of a bumpy surface. - */ - FbxPropertyT NormalMap; - - /** Bump property. This property is used to distort the - * surface normal and create the illusion of a bumpy surface. - */ - FbxPropertyT Bump; - - /** Bump factor property. This factor is used to - * make a surface more or less bumpy. - */ - FbxPropertyT BumpFactor; - - //! Transparent color property. - FbxPropertyT TransparentColor; - - /** Transparency factor property. This property is used to make a - * surface more or less opaque (0 = opaque, 1 = transparent). - */ - FbxPropertyT TransparencyFactor; - - //! Displacement color property. - FbxPropertyT DisplacementColor; - - //! Displacement factor property. - FbxPropertyT DisplacementFactor; - - //! Vector displacement color property. - FbxPropertyT VectorDisplacementColor; - - //! Vector displacement factor property. - FbxPropertyT VectorDisplacementFactor; - - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sEmissiveDefault; - static const FbxDouble sEmissiveFactorDefault; - - static const FbxDouble3 sAmbientDefault; - static const FbxDouble sAmbientFactorDefault; - - static const FbxDouble3 sDiffuseDefault; - static const FbxDouble sDiffuseFactorDefault; - - static const FbxDouble3 sBumpDefault; - static const FbxDouble3 sNormalMapDefault; - static const FbxDouble sBumpFactorDefault; - - static const FbxDouble3 sTransparentDefault; - static const FbxDouble sTransparencyFactorDefault; - - static const FbxDouble3 sDisplacementDefault; - static const FbxDouble sDisplacementFactorDefault; - - static const FbxDouble3 sVectorDisplacementDefault; - static const FbxDouble sVectorDisplacementFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h deleted file mode 100755 index 23f2526..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacematerial.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ - -#include - -#include - -#include - -/** This class contains material settings. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfaceMaterial : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxSurfaceMaterial, FbxObject); - -public: - /** - * \name Standard Material Property Names - */ - //@{ - - static const char* sShadingModel; - static const char* sMultiLayer; - - static const char* sEmissive; - static const char* sEmissiveFactor; - - static const char* sAmbient; - static const char* sAmbientFactor; - - static const char* sDiffuse; - static const char* sDiffuseFactor; - - static const char* sSpecular; - static const char* sSpecularFactor; - static const char* sShininess; - - static const char* sBump; - static const char* sNormalMap; - static const char* sBumpFactor; - - static const char* sTransparentColor; - static const char* sTransparencyFactor; - - static const char* sReflection; - static const char* sReflectionFactor; - - static const char* sDisplacementColor; - static const char* sDisplacementFactor; - - static const char* sVectorDisplacementColor; - static const char* sVectorDisplacementFactor; - //@} - - /** - * \name Material Properties - */ - //@{ - FbxPropertyT ShadingModel; - FbxPropertyT MultiLayer; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxBool sMultiLayerDefault; - static const char* sShadingModelDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - bool SetColorParameter(FbxProperty pProperty, FbxColor const& pColor); - bool GetColorParameter(FbxProperty pProperty, FbxColor& pColor) const; - bool SetDoubleParameter(FbxProperty pProperty, double pDouble); - bool GetDoubleParameter(FbxProperty pProperty, double pDouble) const; - - void ConstructProperties(bool pForceSet) override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h deleted file mode 100755 index 00928c6..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxsurfacephong.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxsurfacephong.h -#ifndef _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ -#define _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ - -#include - -#include - -#include - -/** This class contains settings for Phong Materials. - * \nosubgrouping - */ -class FBXSDK_DLL FbxSurfacePhong : public FbxSurfaceLambert -{ - FBXSDK_OBJECT_DECLARE(FbxSurfacePhong, FbxSurfaceLambert); - -public: - /** - * \name Material properties - */ - //@{ - //! Specular property. - FbxPropertyT Specular; - - /** Specular factor property. This factor is used to - * attenuate the specular color. - */ - FbxPropertyT SpecularFactor; - - /** Shininess property. This property controls the aspect - * of the shiny spot. It is the specular exponent in the Phong - * illumination model. - */ - FbxPropertyT Shininess; - - /** Reflection color property. This property is used to - * implement reflection mapping. - */ - FbxPropertyT Reflection; - - /** Reflection factor property. This property is used to - * attenuate the reflection color. - */ - FbxPropertyT ReflectionFactor; - //@} - - ////////////////////////////////////////////////////////////////////////// - // Static values - ////////////////////////////////////////////////////////////////////////// - - /** - * \name Default property values - */ - //@{ - - static const FbxDouble3 sSpecularDefault; - static const FbxDouble sSpecularFactorDefault; - - static const FbxDouble sShininessDefault; - - static const FbxDouble3 sReflectionDefault; - static const FbxDouble sReflectionFactorDefault; - - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - - // Local - void Init(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxtexture.h b/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxtexture.h deleted file mode 100755 index 6fc3869..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/scene/shading/fbxtexture.h +++ /dev/null @@ -1,577 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxtexture.h -#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_H_ -#define _FBXSDK_SCENE_SHADING_TEXTURE_H_ - -#include - -#include - -#include - -/** This class is the base class for textures, ie classes FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. - * It describes image mapping on top of a geometry. - * \nosubgrouping - */ -class FBXSDK_DLL FbxTexture : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxTexture, FbxObject); - -public: - /** - * \name Texture Properties - */ - //@{ - /** \enum EUnifiedMappingType Internal enum for texture mapping types. - * Includes mapping types and planar mapping normal orientations. - * Use SetMappingType(), GetMappingType(), SetPlanarMappingNormal() - * and GetPlanarMappingNormal() to access these values. - */ - enum EUnifiedMappingType - { - eUMT_UV, //! Maps to EMappingType::eUV. - eUMT_XY, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalZ. - eUMT_YZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalX. - eUMT_XZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalY. - eUMT_SPHERICAL, //! Maps to EMappingType::eSpherical. - eUMT_CYLINDRICAL, //! Maps to EMappingType::eCylindrical. - eUMT_ENVIRONMENT, //! Maps to EMappingType::eEnvironment. - eUMT_PROJECTION, //! Unused. - eUMT_BOX, //! DEPRECATED! Maps to EMappingType::eBox. - eUMT_FACE, //! DEPRECATED! Maps to EMappingType::eFace. - eUMT_NO_MAPPING, //! Maps to EMappingType::eNull. - }; - - /** \enum ETextureUse6 Internal enum for texture usage. - * For example, the texture might be used as a standard texture, as a shadow map, as a bump map, etc. - * Use SetTextureUse() and GetTextureUse() to access these values. - */ - enum ETextureUse6 - { - eTEXTURE_USE_6_STANDARD, //! Maps to ETextureUse::eStandard. - eTEXTURE_USE_6_SPHERICAL_REFLEXION_MAP, //! Maps to ETextureUse::eSphericalReflectionMap. - eTEXTURE_USE_6_SPHERE_REFLEXION_MAP, //! Maps to ETextureUse::eSphereReflectionMap. - eTEXTURE_USE_6_SHADOW_MAP, //! Maps to ETextureUse::eShadowMap. - eTEXTURE_USE_6_LIGHT_MAP, //! Maps to ETextureUse::eLightMap. - eTEXTURE_USE_6_BUMP_NORMAL_MAP //! Maps to ETextureUse::eBumpNormalMap. - }; - - /** \enum EWrapMode Wrap modes. - * Use SetWrapMode(), GetWrapModeU() and GetWrapModeV() to access these values. - */ - enum EWrapMode - { - eRepeat, //! Apply the texture over and over on the model's surface until the model is covered. This is the default setting. - eClamp //! Apply the texture to a model only once, using the color at the ends of the texture as the "filter". - }; - - /** \enum EBlendMode Blend modes. - */ - enum EBlendMode - { - eTranslucent, //! The texture is transparent, depending on the Alpha settings. - eAdditive, //! The color of the texture is added to the previous texture. - eModulate, //! The color value of the texture is multiplied by the color values of all previous layers of texture. - eModulate2, //! The color value of the texture is multiplied by two and then multiplied by the color values of all previous layers of texture. - eOver //! The texture is opaque. - }; - - /** \enum EAlignMode Align indices for cropping. - */ - enum EAlignMode - { - eLeft, //! Left cropping. - eRight, //! Right cropping. - eTop, //! Top cropping. - eBottom //! Bottom cropping. - }; - - /** \enum ECoordinates Texture coordinates. - */ - enum ECoordinates - { - eU, //! U axis. - eV, //! V axis. - eW //! W axis. - }; - - // Type description - - /** This property handles the use of textures. - * Default value is eTEXTURE_USE_6_STANDARD. - */ - FbxPropertyT TextureTypeUse; - - /** This property handles the default alpha value for textures. - * Default value is 1.0 - */ - FbxPropertyT Alpha; - - - // Mapping information - - /** This property handles the texture mapping types. - * Default value is eUMT_UV. - */ - FbxPropertyT CurrentMappingType; - - /** This property handles the texture wrap modes in U. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeU; - - /** This property handles the texture wrap modes in V. - * Default value is eRepeat. - */ - FbxPropertyT WrapModeV; - - /** This property handles the swap UV flag. - * If swap UV flag is enabled, the texture's width and height are swapped. - * Default value is false. - */ - FbxPropertyT UVSwap; - - /** This property handles the PremultiplyAlpha flag. - * If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - * Default value is true. - */ - FbxPropertyT PremultiplyAlpha; - - // Texture positioning - - /** This property handles the default translation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Translation; - - /** This property handles the default rotation vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT Rotation; - - /** This property handles the default scale vector. - * Default value is FbxDouble3(1.0,1.0,1.0). - */ - FbxPropertyT Scaling; - - /** This property handles the rotation pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT RotationPivot; - - /** This property handles the scaling pivot vector. - * Default value is FbxDouble3(0.0,0.0,0.0). - */ - FbxPropertyT ScalingPivot; - - // Blend mode - /** This property handles the texture blend mode. - * Default value is eAdditive. - */ - FbxPropertyT CurrentTextureBlendMode; - - // UV set to use. - /** This property handles the use of UV sets. - * Default value is "default". - */ - FbxPropertyT UVSet; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "World", "Object" and "Tangent" - * Default value is "Object". - */ - static const char* sVectorSpace ; - static const char* sVectorSpaceWorld ; - static const char* sVectorSpaceObject ; - static const char* sVectorSpaceTangent ; - - /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. - * It is a dynamic enum property which has values : "Floating-point Absolute" and "Signed Encoding" - * Default value is "Floating-point Absolute". - */ - static const char* sVectorEncoding ; - static const char* sVectorEncodingFP ; - static const char* sVectorEncodingSE ; - - - /** Resets the default texture values. - */ - virtual void Reset(); - - /** Sets the swap UV flag. - * \param pSwapUV Set to \c true if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - void SetSwapUV(bool pSwapUV); - - /** Returns the swap UV flag. - * \return \c True if the swap UV flag is enabled. - * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. - */ - bool GetSwapUV() const; - - /** Sets the PremultiplyAlpha flag. - * \param pPremultiplyAlpha Set to \c true if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - void SetPremultiplyAlpha(bool pPremultiplyAlpha); - - /** Returns the PremultiplyAlpha flag. - * \return \c True if the method of storing alpha is PremultiplyAlpha. - * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. - */ - bool GetPremultiplyAlpha() const; - - /** \enum EAlphaSource Controls if the Alpha computation of the current texture comes from the Alpha channel, RGB Intensity channel, or if there is No Alpha. - */ - enum EAlphaSource - { - eNone, //! No Alpha. - eRGBIntensity, //! RGB Intensity (computed). - eBlack //! Alpha channel. Black is 100% transparency, white is opaque. - }; - - /** Sets the alpha source. - * \param pAlphaSource The alpha source identifier. - */ - void SetAlphaSource(EAlphaSource pAlphaSource); - - /** Returns the alpha source. - * \return The alpha source identifier for this texture. - */ - EAlphaSource GetAlphaSource() const; - - /** Sets cropping. - * \param pLeft Left cropping value. - * \param pTop Top cropping value. - * \param pRight Right cropping value. - * \param pBottom Bottom cropping value. - * \remarks The defined rectangle is not checked for invalid values. - * The caller must verify that the rectangle - * is meaningful for this texture. - */ - void SetCropping(int pLeft, int pTop, int pRight, int pBottom); - - /** Returns left cropping. - * \return The left side of the cropping rectangle. - */ - int GetCroppingLeft() const; - - /** Returns top cropping. - * \return The top side of the cropping rectangle. - */ - int GetCroppingTop() const; - - /** Returns right cropping. - * \return The right side of the cropping rectangle. - */ - int GetCroppingRight() const; - - /** Returns bottom cropping. - * \return The bottom side of the cropping rectangle. - */ - int GetCroppingBottom() const; - - /** \enum EMappingType Texture mapping types. - */ - enum EMappingType - { - eNull, //! No texture mapping defined. - ePlanar, //! Apply texture to the model viewed as a plane. - eSpherical, //! Wrap texture around the model as if it was a sphere. - eCylindrical, //! Wrap texture around the model as if it was a cylinder. - eBox, //! Wrap texture around the model as if it was a box. - eFace, //! Apply texture to the model viewed as a face. - eUV, //! Apply texture to the model according to UVs. - eEnvironment //! Texture is an environment map. - }; - - /** Sets the mapping type. - * \param pMappingType The mapping type identifier. - */ - void SetMappingType(EMappingType pMappingType); - - /** Returns the mapping type. - * \return The mapping type identifier. - */ - EMappingType GetMappingType() const; - - /** \enum EPlanarMappingNormal Planar mapping normal orientations. - */ - enum EPlanarMappingNormal - { - ePlanarNormalX, //! Normals are in the direction of the X axis, mapping plan is in the YZ axis. - ePlanarNormalY, //! Normals are in the direction of the Y axis, mapping plan is in the XZ axis. - ePlanarNormalZ //! Normals are in the direction of the Z axis, mapping plan is in the XY axis. - }; - - /** Sets the normal orientations for planar mapping. - * \param pPlanarMappingNormal The identifier for planar mapping normal orientation. - */ - void SetPlanarMappingNormal(EPlanarMappingNormal pPlanarMappingNormal); - - /** Returns the normal orientations for planar mapping. - * \return The identifier for planar mapping normal orientation. - */ - EPlanarMappingNormal GetPlanarMappingNormal() const; - - /** \enum ETextureUse Texture uses. - */ - enum ETextureUse - { - eStandard, //! Standard texture use (ex. image) - eShadowMap, //! Shadow map - eLightMap, //! Light map - eSphericalReflectionMap, //! Spherical reflection map: Object reflects the contents of the scene - eSphereReflectionMap, //! Sphere reflection map: Object reflects the contents of the scene from only one point of view - eBumpNormalMap //! Bump map: Texture contains two direction vectors, that are used to convey relief in a texture. - }; - - /** Sets the texture use. - * \param pTextureUse The texture use identifier. - */ - void SetTextureUse(ETextureUse pTextureUse); - - /** Returns the texture use. - * \return The texture use identifier. - */ - ETextureUse GetTextureUse() const; - - - /** Sets the U and V wrap mode. - * \param pWrapU Wrap mode identifier. - * \param pWrapV Wrap mode identifier. - */ - void SetWrapMode(EWrapMode pWrapU, EWrapMode pWrapV); - - /** Returns the U wrap mode. - * \return U wrap mode identifier. - */ - EWrapMode GetWrapModeU() const; - - /** Returns the V wrap mode. - * \return V wrap mode identifier. - */ - EWrapMode GetWrapModeV() const; - - - /** Sets the blend mode. - * \param pBlendMode Blend mode identifier. - */ - void SetBlendMode(EBlendMode pBlendMode); - - /** Returns the blend mode. - * \return Blend mode identifier. - */ - EBlendMode GetBlendMode() const; - - //@} - - /** - * \name Default Values Management By Vectors - * This set of functions provides direct access to the default values in vector base. - */ - //@{ - - /** Sets the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - */ - inline void SetDefaultT(const FbxVector4& pT) { Translation.Set( pT ); } - - /** Returns the default translation vector. - * \param pT The first element is the U translation applied to - * the texture. A displacement of one unit is equal to the texture - * width after the U scaling is applied. The second element is the - * V translation applied to the texture. A displacement of one unit is - * equal to the texture height after the V scaling is applied. - * The third and fourth elements have no effect on texture - * translation. - * \return The input parameter completed with appropriate data. - */ - FbxVector4& GetDefaultT(FbxVector4& pT) const; - - /** Sets the default rotation vector. - * \param pR The first element is the texture rotation around the - * U axis in degrees. The second element is the texture rotation - * around the V axis in degrees. The third element is the texture - * rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the - * vector product of the U and V axes that is W = U x V. - */ - inline void SetDefaultR(const FbxVector4& pR) { Rotation.Set( FbxDouble3(pR[0],pR[1],pR[2]) ); } - - /** Returns the default rotation vector. - * \param pR First element is the texture rotation around the - * U axis in degrees. Second element is the texture rotation - * around the V axis in degrees. Third element is the texture - * rotation around the W axis in degrees. - * \return Input parameter filled with appropriate data. - * \remarks The W axis is oriented towards the result of the - * vector product of the U axis and V axis i.e. W = U x V. - */ - FbxVector4& GetDefaultR(FbxVector4& pR) const; - - /** Sets the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - inline void SetDefaultS(const FbxVector4& pS) { Scaling.Set( FbxDouble3(pS[0],pS[1],pS[2]) ); } - - /** Returns the default scale vector. - * \param pS The first element is scale applied to the texture width. - * The second element is scale applied to the texture height. The third - * and fourth elements have no effect on the texture. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - FbxVector4& GetDefaultS(FbxVector4& pS) const; - - //@} - - /** - * \name Default Alpha Value - */ - //@{ - - /** Sets the default alpha. - * \param pAlpha A value on a scale from 0 to 1, with 0 being transparent. - */ - void SetDefaultAlpha(double pAlpha); - - /** Returns the default alpha. - * \return A value on a scale from 0 to 1, with 0 being transparent. - */ - double GetDefaultAlpha() const; - - //@} - - /** - * \name Default Values Management By Numbers - * This set of functions provides direct access to the default values in number base. - * U, V and W coordinates are mapped to the X, Y and Z coordinates of the default vectors - * found in the "Default Values By Vector" section. - */ - //@{ - - /** Sets translation. - * \param pU Horizontal translation applied to a texture. A displacement - * of one unit is equal to the texture's width after applying U scaling. - * \param pV Vertical translation applied to a texture. A displacement - * of one unit is equal to the texture's height after applying V scaling. - */ - void SetTranslation(double pU,double pV); - - /** Returns translation applied to the texture width. - * \remarks A displacement of one unit is equal to the texture's width - * after applying U scaling. - */ - double GetTranslationU() const; - - /** Returns translation applied to the texture height. - * \remarks A displacement of one unit is equal to the texture's height - * after applying V scaling. - */ - double GetTranslationV() const; - - /** Sets rotation. - * \param pU Texture rotation around the U axis in degrees. - * \param pV Texture rotation around the V axis in degrees. - * \param pW Texture rotation around the W axis in degrees. - * \remarks The W axis is oriented toward the result of the vector product of - * the U and V axes that is W = U x V. - */ - void SetRotation(double pU, double pV, double pW = 0.0); - - //! Returns the texture rotation around the U axis in degrees. - double GetRotationU() const; - - //! Returns the texture rotation around the V axis in degrees. - double GetRotationV() const; - - //! Returns the texture rotation around the W axis in degrees. - double GetRotationW() const; - - /** Sets scale. - * \param pU Scale applied to the texture width. - * \param pV Scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - void SetScale(double pU,double pV); - - /** Returns scale applied to the texture width. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleU() const; - - /** Returns scale applied to the texture height. - * \remarks A scale value less than 1 stretches the texture. - * A scale value greater than 1 compresses the texture. - */ - double GetScaleV() const; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxObject& Copy(const FbxObject& pObject) override; - - bool operator==(FbxTexture const& pTexture) const; - - void SetUVTranslation(FbxVector2& pT); - FbxVector2& GetUVTranslation(); - void SetUVScaling(FbxVector2& pS); - FbxVector2& GetUVScaling(); - - FbxString GetTextureType(); - -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - - void Init(); - - int mCropping[4]; // not a prop - - EAlphaSource mAlphaSource; // now unused in MB (always set to None); not a prop - EMappingType mMappingType; // CurrentMappingType - EPlanarMappingNormal mPlanarMappingNormal; // CurrentMappingType - - // Unsupported parameters in the FBX SDK, these are declared but not accessible. - // They are used to keep imported and exported data identical. - FbxVector2 mUVScaling; // not a prop - FbxVector2 mUVTranslation; // not a prop -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -inline EFbxType FbxTypeOf(const FbxTexture::EUnifiedMappingType&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::ETextureUse6&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EWrapMode&){ return eFbxEnum; } -inline EFbxType FbxTypeOf(const FbxTexture::EBlendMode&){ return eFbxEnum; } - -#include - -#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxclonemanager.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxclonemanager.h deleted file mode 100755 index 429b581..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxclonemanager.h +++ /dev/null @@ -1,284 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxclonemanager.h -#ifndef _FBXSDK_UTILS_CLONE_MANAGER_H_ -#define _FBXSDK_UTILS_CLONE_MANAGER_H_ - -#include - -#include -#include - -#include - -/** The clone manager is a utility for cloning entire networks of FbxObject. - * Options are available for specifying how the clones inherit the connections - * of the original. - * - * Networks of FbxObject (inter-connected objects by OO, OP, PO or PP connections) - * can be cloned. How the connections of clones are handled depends on mSrcPolicy and mExternalDstPolicy. - * - * To clone FbxObject instances and their dependents, put them into a CloneSet - * and pass the CloneSet to this class: - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * cloneSet.Insert(someObject, defaultCloneOptions); - * cloneManager.AddDependents(cloneSet, someObject, defaultCloneOptions); - * cloneManager.Clone(cloneSet, scene) - * \endcode - * - * \remark If cloning occurs on the same scene as the original objects, the system will contain duplicated names. Although this is acceptable in FBX, - * some applications may not behave correctly with duplicated names. It is the responsability of the caller to resolve any conflicts. - * - * \see FbxCloneManager::CloneSetElement - * \see FbxCloneManager::CloneSet - * \nosubgrouping - */ -class FBXSDK_DLL FbxCloneManager -{ -public: - - //! Maximum depth to clone dependents. - static const int sMaximumCloneDepth; - - /** Connect to objects that are connected to original object. - * This is a flag to mSrcPolicy or mExternalDstPolicy. - */ - static const int sConnectToOriginal; - - /** Connect to clones of objects that are connected to original object. - * (only if those original objects are also in the clone set) - * This is a flag to mSrcPolicy. - */ - static const int sConnectToClone; - - /** This represents an element in FbxCloneManager::CloneSet to be cloned. - * This class contains the option for specifying how connections are cloned and the - * cloned object. - * \see FbxCloneManager - * \see FbxCloneManager::CloneSet - */ - struct FBXSDK_DLL CloneSetElement - { - public: - /** Constructor. - * \param pSrcPolicy Specify how to handle source connections. Valid values are 0, sConnectToOriginal, - * sConnectToClone or sConnectToOriginal|sConnectToClone. - * \param pExternalDstPolicy Specify how to handle destination connections to objects NOT in - * the clone set. Valid values are 0 or sConnectToOriginal. - * \param pCloneType Specify the type of cloning. FbxObject::Clone uses the same parameter. - */ - CloneSetElement( int pSrcPolicy = 0, - int pExternalDstPolicy = 0, - FbxObject::ECloneType pCloneType = FbxObject::eReferenceClone ); - - //! the type of cloning to perform - FbxObject::ECloneType mType; - - /** Policy on how to handle source connections on the original object. Valid values are 0 - * or any bitwise OR'd combination of sConnectToOriginal, and sConnectToClone. - */ - int mSrcPolicy; - - /** policy on how to handle destination connections on the original object to - * objects NOT in the clone set. (Destination connections to objects in the set - * are handled by that object's source policy) Valid values are 0 or sConnectToOriginal. - */ - int mExternalDstPolicy; - - /** This is a pointer to the newly created clone. - * It is set after the call to FbxCloneManager::Clone() - */ - FbxObject* mObjectClone; - - /** Internal use. - */ - bool mLayerElementProcessed; - bool mConnectionsProcessed; - }; - - /** The CloneSet is a collection of pointers to objects that will be cloned in Clone() - * Attached to each object is a CloneSetElement. Its member variables dictate how - * the corresponding object will be cloned, and how it will inherit connections - * on the original object. - */ - typedef FbxMap CloneSet; - - /** Constructor - */ - FbxCloneManager(); - - /** Destructor - */ - virtual ~FbxCloneManager(); - - /** This function simplifies the process of cloning one object and all its depedency graph by automatically preparing - * the CloneSet and calling the Clone method using the code below. - * - * \code - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, - * FbxCloneManager::sConnectToOriginal, - * FbxObject::eDeepClone); - * FbxObject* lReturnObj = (FbxObject*)pObject; - * - * cloneManager.AddDependents(cloneSet, pObject, defaultCloneOptions, FbxCriteria::ObjectType(FbxObject::ClassId)); - * cloneSet.Insert((FbxObject*)pObject, defaultCloneOptions); - * - * // collect all the FbxCharacters, if any (these are indirect dependencies not visible by the AddDependents recursion) - * FbxArray lExtras; - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lObj = lIterator->GetKey(); - * cloneManager.LookForIndirectDependent(lObj, cloneSet, lExtras); - * lIterator = lIterator->Successor(); - * } - * - * // and add them to cloneSet - * for (int i = 0, c = lExtras.GetCount(); i < c; i++) - * { - * FbxObject* lObj = lExtras[i]; - * cloneManager.AddDependents(cloneSet, lObj, defaultCloneOptions); - * cloneSet.Insert(lObj, defaultCloneOptions); - * } - * - * // clone everything - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // get the clone of pObject - * CloneSet::RecordType* lIterator = cloneSet.Find((FbxObject* const)pObject); - * if( lIterator ) - * { - * lReturnObj = lIterator->GetValue().mObjectClone; - * } - * } - * return lReturnObj; - * \endcode - * - * \param pObject Object to clone. - * \param pContainer This object (typically a scene or document) will contain the new clones. - * \return The clone of \e pObject if all its depedency graph have been cloned successfully, NULL otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - * - * Example: - * \code - * FbxObject* lObj2BCloned = ... - * FbxNode* myNewParent = FbxNode::Create(lNewScene, "Clone"); - * lNewScene->GetRootNode()->AddChild(lN); - * - * FbxCloneManager cloneManager; - * FbxNode *lClone = (FbxNode*)cloneManager.Clone(lObj2BCloned); - * - * // make sure the cloned object is connected to the scene - * lClone->ConnectDstObject(lNewScene); - * \endcode - */ - static FbxObject* Clone(const FbxObject* pObject, FbxObject* pContainer = NULL); - - /** Clone all objects in the set using the given policies for duplication - * of connections. Each CloneSetElement in the set will have its mObjectClone - * pointer set to the newly created clone. The following code shows how to access the cloned objects: - * - * \code - * if (cloneManager.Clone(cloneSet, pContainer)) - * { - * // access the clones - * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); - * while( lIterator ) - * { - * FbxObject* lOriginalObject = lIterator->GetKey(); - * FbxObject* lClonedObject = lIterator->GetValue().mObjectClone; - * lIterator = lIterator->Successor(); - * } - * } - * \endcode - * - * \param pSet Set of objects to clone - * \param pContainer This object (typically a scene or document) will contain the new clones - * \return true if all objects were cloned, false otherwise. - * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. - * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene - * will not comply to the FBX standard and its behavior cannot be guaranteed. - * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be - * manually connected to the scene in order to be saved to disk. - */ - virtual bool Clone( CloneSet& pSet, FbxObject* pContainer = NULL ) const; - - /** Add all dependents of the given object to the CloneSet. - * Dependents of items already in the set are ignored to prevent - * infinite recursion on cyclic dependencies. - * \param pSet The set to add items. - * \param pObject Object to add dependents to - * \param pCloneOptions - * \param pTypes Types of dependent objects to consider - * \param pDepth Maximum recursive depth. Valid range is [0,sMaximumCloneDepth] - * - * The following example shows how to perform multiple calls to AddDependents() to collect several - * subgraphs to be cloned: - * \code - * FbxObject* lRoot = ... // initialized with the root of the graph to be cloned - * FbxCharacter* lCharacter = ... // points to the FbxCharacter driving the character defined by "lRoot" graph - * - * FbxCloneManager cloneManager; - * FbxCloneManager::CloneSet cloneSet; - * - * cloneManager.AddDependents(cloneSet, lRoot); - * cloneSet.Insert(lRoot, defaultCloneOptions); - * - * cloneManager.AddDependents(cloneSet, lCharacter); - * cloneSet.Insert(lCharacter, defaultCloneOptions); - * - * \endcode - */ - virtual void AddDependents( CloneSet& pSet, - const FbxObject* pObject, - const CloneSetElement& pCloneOptions = CloneSetElement(), - FbxCriteria pTypes = FbxCriteria::ObjectType(FbxObject::ClassId), - int pDepth = sMaximumCloneDepth ) const; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static FbxObject* Clone(const FbxObject* pObject, CloneSet* pSet, FbxObject* pContainer = NULL); - -private: - friend class FbxScene; - - bool ReAssignLayerElements( FbxCloneManager::CloneSet::RecordType* pIterator, const FbxCloneManager::CloneSet& pSet) const; - bool CloneConnections( CloneSet::RecordType* pIterator, const CloneSet& pSet) const; - bool CheckIfCloneOnSameScene(const FbxObject* pObject, FbxObject* pContainer) const; - - virtual void LookForIndirectDependent(const FbxObject* pObject, CloneSet& pSet, FbxArray& lIndirectDepend); - virtual bool NeedToBeExcluded(FbxObject* lObj) const; - - bool mCloneOnSameScene; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#define CloneSetCast(x) ((FbxCloneManager::CloneSet*)(x)) -#define CloneSetElementCast(x) ((FbxCloneManager::CloneSetElement*)((x!=NULL)?&(x->GetValue()):NULL)) - -#endif /* _FBXSDK_UTILS_CLONE_MANAGER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h deleted file mode 100755 index 37b32e0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxdeformationsevaluator.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxdeformationsevaluator.h -#ifndef _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ -#define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ - -#include - -#include - -class FbxNode; -class FbxMesh; -class FbxTime; -class FbxAnimLayer; -class FbxPose; -class FbxCluster; -class FbxVector4; -class FbxAMatrix; -class FbxDualQuaternion; - -class FBXSDK_DLL FbxDeformationsEvaluator -{ -public: - /** Configure this object to process the given mesh. - * \param pNode Node object owner of the mesh. - * \param pMesh Processed object. - * \return \c true if \e pMesh is connected to \e pNode and the internal data allocation succeeded. */ - bool Init(const FbxNode* pNode, const FbxMesh* pMesh); - - /** If this object is properly configured, evaluates the shape deformation of the mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime); - - /** If this object is properly configured, evaluates the skin deformation of the received mesh at the given time. - * \param pVertexArray The result of the evaluation. - * \param pTime Current time of the evaluation. - * \param pGX Local to World matrix to express the returned vertices in World space. - * \param pPose If defined, use the pose to evaluate the current transform. - * \return \c true if the function completed successfully and \c false in case of errors. - * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ - bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX=NULL, const FbxPose* pPose=NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxDeformationsEvaluator(); - virtual ~FbxDeformationsEvaluator(); - -private: - void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose); - void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); - void Cleanup(); - - bool mIsConfigured; - FbxNode* mNode; - FbxMesh* mMesh; - FbxAnimLayer* mAnimLayer; - - int mVertexCount; - FbxVector4* mDstVertexArray; - FbxVector4* mVertexArrayLinear; - FbxVector4* mVertexArrayDQ; - - FbxAMatrix* mClusterDeformation; - double* mClusterWeight; - FbxDualQuaternion* mDQClusterDeformation; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h deleted file mode 100755 index c9f25fb..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxembeddedfilesaccumulator.h -#ifndef _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ -#define _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ - -#include - -#include - -#include - -/** This processor is used to accumulate the list of file dependencies (embedded files) in a hierarchy of objects. - * It retrieves information of embedded files from objects and accumulates them to its class member mEmbeddedFiles. - * \see FbxProcessor::ProcessCollection(FbxCollection *) - * \nosubgrouping - */ -class FBXSDK_DLL FbxEmbeddedFilesAccumulator : public FbxProcessor -{ -public: - /** - * Map the object to the property's hierarchical name. - * An object may use the same file on multiple properties, hence the - * set. - * Each property may have multiple URLs, separate by |. - * We thus need to store the index along with the property. - */ - //@{ - struct PropertyUrlIndex - { - FbxString mPropName; - int mIndex; - - PropertyUrlIndex() : mIndex(0) - { - } - - PropertyUrlIndex(const FbxString& pUrl, int pIndex) - : mPropName(pUrl) - , mIndex(pIndex) - { - } - }; - - //! Comparer for PropertyUrlIndexSet, which outputs consistent partial orders for PropertyUrlIndex pairs - struct FbxPropertyUrlIndexCompare - { - inline int operator()(const PropertyUrlIndex& pKeyA, const PropertyUrlIndex& pKeyB) const - { - if( pKeyA.mPropName < pKeyB.mPropName ) return -1; - if( pKeyB.mPropName < pKeyA.mPropName ) return 1; - if( pKeyA.mIndex < pKeyB.mIndex ) return -1; - if( pKeyB.mIndex < pKeyA.mIndex ) return 1; - return 0; - } - }; - - typedef FbxSet PropertyUrlIndexSet; - - typedef FbxMap ObjectPropertyMap; - - struct EmbeddedFileInfo - { - FbxString mOriginalPropertyUrl; - ObjectPropertyMap mConsumers; - }; - //@} - - /** - * Map the (absolute filename) to which object/properties use this file. - * To simply get the list of file dependencies, iterate through this map and query - * all the keys. - */ - //@{ - typedef FbxMap EmbeddedFilesMap; - - EmbeddedFilesMap mEmbeddedFiles; - //@} - -public: - - /** Constructor. - * The name is not important. - * The property filter is a list of strings, property names, which are automatically ignored when - * encountered. Property names must be the full hierarchical property name (ie: parent|child|child). - * - * \param pManager Reference to the SDK manager. - * \param pName Name of this object. - * \param pPropertyFilter Reference to the property filter. - */ - FbxEmbeddedFilesAccumulator(FbxManager& pManager, const char* pName, FbxSet& pPropertyFilter); - virtual ~FbxEmbeddedFilesAccumulator(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - virtual bool internal_ProcessObject(FbxObject* pObject); - FbxSet mPropertyFilter; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h deleted file mode 100755 index be6f940..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxgeometryconverter.h +++ /dev/null @@ -1,345 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxgeometryconverter.h -#ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ -#define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ - -#include - -#include - -#include - -class FbxManager; -class FbxMesh; -class FbxPatch; -class FbxNurbs; -class FbxNurbsSurface; -class FbxNurbsCurve; -class FbxWeightedMapping; -class FbxSurfaceEvaluator; -class FbxScene; -class FbxNode; -class FbxNodeAttribute; -class FbxGeometry; - -/** -* This class provides the functionality to convert geometry nodes -* attributes (FbxMesh, FbxNurbs and FbxPatch) and mainly focuses on the two -* major categories: Triangulation and conversion between NURBS and Patches surfaces. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxGeometryConverter -{ -public: - /** \name Triangulation Utilities */ - //@{ - /** Triangulate all node attributes in the scene that can be triangulated. - * \param pScene The scene to iterate through to triangulate meshes. - * \param pReplace If \c true, replace the original meshes with the new triangulated meshes on all the nodes, and delete the original meshes. Otherwise, original meshes are left untouched. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return \c true if all node attributes that can be triangulated were triangulated successfully. - * \remark The function will still iterate through all meshes regardless if one fails to triangulate, but will return false in that case. This function - * currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. */ - bool Triangulate(FbxScene* pScene, bool pReplace, bool pLegacy=false); - - /** Triangulate a node attribute, if supported, and preserve the skins and shapes animation channels. - * \param pNodeAttribute Pointer to the node containing the geometry to triangulate. - * \param pReplace If \c true, replace the original geometry with the new triangulated geometry on the nodes, and delete the original geometry. - * Otherwise, the original geometry is left untouched, the new one is added to the nodes, and becomes the default one. - * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. - * \return The newly created node attribute if successful, otherwise NULL. If node attribute type is not supported by triangulation, it returns the original node attribute. - * \remark This function currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. If the node attribute does not support triangulation, - * or if it is already triangulated, this function will return pNodeAttribute. */ - FbxNodeAttribute* Triangulate(FbxNodeAttribute* pNodeAttribute, bool pReplace, bool pLegacy=false); - - /** Compute a "vertex-correspondence" table that helps passing from source to destination geometry. - * \param pSrcGeom Pointer to the source geometry. - * \param pDstGeom Pointer to the destination geometry. - * \param pSrcToDstWeightedMapping Pointer to the weighted mapping table. - * \param pSwapUV Set to \c true to swap UVs. - * \return \c true on success, \c false if the function fails to compute the correspondence. - * \remark Skins and shapes are also converted to fit the alternate geometry. */ - bool ComputeGeometryControlPointsWeightedMapping(FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom, FbxWeightedMapping* pSrcToDstWeightedMapping, bool pSwapUV=false); - //@} - - /** - * \name Geometry Conversion - */ - //@{ - /** Convert from patch to nurb. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb or \c NULL if the conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbs* ConvertPatchToNurbs(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb. Use this function to preserve the patch's - * skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsInPlace(FbxNode* pNode); - - /** Convert a patch to nurb surface. - * \param pPatch Pointer to the patch to convert. - * \return Created nurb surface or \c NULL if conversion fails. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - FbxNurbsSurface* ConvertPatchToNurbsSurface(FbxPatch *pPatch); - - /** Convert a patch contained in a node to a nurb surface. Use this function to preserve - * the patch's skins and shapes animation channels. - * \param pNode Pointer to the node containing the patch. - * \return \c true on success, \c false if the node attribute is not a patch. - * \remarks The patch must be of type eBSpline, eBezier or eLinear. - */ - bool ConvertPatchToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a FbxNurbs to a FbxNurbsSurface - * \param pNurbs Pointer to the original nurb - * \return A FbxNurbsSurface that is equivalent to the original nurb. - */ - FbxNurbsSurface* ConvertNurbsToNurbsSurface( FbxNurbs* pNurbs ); - - /** Convert a FbxNurbsSurface to a FbxNurbs - * \param pNurbs Pointer to the original nurbs surface - * \return A FbxNurbs that is equivalent to the original nurbs surface. - */ - FbxNurbs* ConvertNurbsSurfaceToNurbs( FbxNurbsSurface* pNurbs ); - - /** Convert a nurb, contained in a node, to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurb. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsToNurbsSurfaceInPlace(FbxNode* pNode); - - /** Convert a nurb contained in a node to a nurbs surface. Use this function to preserve - * the nurb's skins and shapes animation channels. - * \param pNode Pointer to the node containing the nurbs surface. - * \return \c true on success, \c false otherwise - */ - bool ConvertNurbsSurfaceToNurbsInPlace(FbxNode* pNode); - //@} - - /** - * \name Nurb UV and Links Swapping - */ - //@{ - /** Flip UV and/or skin clusters of a nurb. - * \param pNurbs Pointer to the Source nurb. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbs, or \c NULL if the function fails. - */ - FbxNurbs* FlipNurbs(FbxNurbs* pNurbs, bool pSwapUV, bool pSwapClusters); - - /** Flip UV and/or skin clusters of a nurb surface. - * \param pNurbs Pointer to the Source nurb surface. - * \param pSwapUV Set to \c true to swap the UVs. - * \param pSwapClusters Set to \c true to swap the control point indices of clusters. - * \return A flipped FbxNurbsSurface, or \c NULL if the function fails. - */ - FbxNurbsSurface* FlipNurbsSurface(FbxNurbsSurface* pNurbs, bool pSwapUV, bool pSwapClusters); - //@} - - /** - * \name Normals By Polygon Vertex Emulation - */ - //@{ - /** Emulate normals by polygon vertex mode for a mesh. - * \param pMesh Pointer to the mesh object. - * \return \c true on success, \c false if the number of normals in the - * mesh and in its associated shapes don't match the number of polygon - * vertices. - * \remarks For applications that only supports normals by control points, - * this function duplicates control points to equal the - * number of polygon vertices. skins and shapes are also converted. - * As preconditions: - * -# polygons must have been created - * -# the number of normals in the mesh and in its associated shapes must match the - * number of polygon vertices. - */ - bool EmulateNormalsByPolygonVertex(FbxMesh* pMesh); - - /** Create edge smoothing information from polygon-vertex mapped normals. - * Existing smoothing information is removed and edge data is created if - * none exists on the mesh. - * \param pMesh The mesh used to generate edge smoothing. - * \return \c true on success, \c false otherwise. - * \remarks The edge smoothing data is placed on Layer 0 of the mesh. - * Normals do not need to be on Layer 0, since the first layer with - * per polygon vertex normals is used. - */ - bool ComputeEdgeSmoothingFromNormals( FbxMesh* pMesh ) const; - - /** Convert edge smoothing to polygon smoothing group. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted. - * \return \c true on success, \c false otherwise. - * \remarks The smoothing group is bitwise. Each bit of the integer represents - * one smoothing group. Therefore, there is a maximum of 32 smoothing groups. - */ - bool ComputePolygonSmoothingFromEdgeSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - - /** Convert polygon smoothing group to edge smoothing. - * Existing smoothing information is replaced. - * - * \param pMesh The mesh that contains the smoothing to be converted. - * \param pIndex The index of the layer smoothing to be converted - * \return \c true on success, \c false otherwise. - */ - bool ComputeEdgeSmoothingFromPolygonSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; - //@} - - /** \name Split Mesh Per Materials */ - //@{ - /** Split all the mesh in the scene per material. - * \param pScene The scene to iterate through to split meshes. - * \param pReplace If \c true, replace the original mesh with new ones and delete the original meshes, but *only* if they got split into multiple meshes, otherwise they are left untouched. - * \return \c true if all splitable mesh were successfully split, \c false otherwise. - * \remark The function will still iterate through all meshes regardless if one fails to split, but will return false in that case. */ - bool SplitMeshesPerMaterial(FbxScene* pScene, bool pReplace); - - /** Split mesh per material. - * \param pMesh The mesh that will be split if it has multiple materials assigned. - * \param pReplace If \c true, replace the original mesh with new one and delete the original mesh, but *only* if they got split into multiple meshes, otherwise left untouched. - * \return \c true on success, \c false otherwise. - * \remark The function will fail if the mapped material is not per face (FbxLayerElement::eByPolygon) or if a material is multi-layered. It will create as many meshes as - * there are materials applied to it. If one mesh have some polygons with material A, some polygons with material B, and some polygons with NO material, 3 meshes distinct - * will be created. The newly created meshes will be automatically attached to the same FbxNode that holds the original FbxMesh. If the original mesh have tangents, they will - * be regenerated on the new meshes. */ - bool SplitMeshPerMaterial(FbxMesh* pMesh, bool pReplace); - //@} - - /** Re-parent nodes at root node level under a new node to re-center them at world center. - * Basically, this function calculates the scene bounding box in world coordinates, and test if the center of that bounding box distance from the - * world center is larger or equal than the threshold. If true, a new node with the proper negative offset position will become the new parent of all nodes at root node level. - * \param pScene The scene to process. - * \param pThreshold Threshold at which all nodes will be re-centered. - * \return \c true if any nodes were re-centered, otherwise \c false. */ - bool RecenterSceneToWorldCenter(FbxScene* pScene, FbxDouble pThreshold); - - /** - * Merge multiple meshes to one mesh. - * The method will merge: - * a) mesh vertex; - * b) mesh polygon; - * c) mesh edge; - * d) all mesh elements; only the layer 0 elements is merged. - * e) if there are skins for old mesh, merge these skins. The new skin clusters link to old skeletons. - * - * \param pMeshNodes FBX nodes that hold multiple meshes. These meshes will be merged. - * \param pNodeName Name of new mesh node. - * \param pScene The scene that will contain the new mesh node. - * \return The new mesh node if merge successfully, otherwise NULL is returned. - * \remarks This method creates a new mesh, leaving the source mesh unchanged. - * The transform of new mesh node is: translate (0, 0, 0), rotation (0, 0, 0), scale (1, 1, 1). - * For layer element material, normal, smoothing, UV set, vertex color, binormal, tangent and polygon group, - * if any mesh misses these element, the merge for this kind of element is skipped. - * For layer element crease, hole, visibility and user data, if any mesh has such element, the kind of element - * will be merged. The missing element will be filled with default values. - * For meshes with skin binding, if the pose of frame 0 is different with bind pose, the new mesh will be distorted. - */ - FbxNode* MergeMeshes(FbxArray& pMeshNodes, const char* pNodeName, FbxScene* pScene); - - /** - * Cleanup or remove degenerated meshes. - * \param pScene The scene to process. - * \param pAffectedNodes The list of nodes that have been affected by this operation. - * \remarks If the cleaned-up mesh becomes invalid, it is removed entirely. - */ - void RemoveBadPolygonsFromMeshes(FbxScene* pScene, FbxArray* pAffectedNodes = NULL); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - FbxGeometryConverter(FbxManager* pManager); - ~FbxGeometryConverter(); - -private: - FbxMesh* TriangulateMeshInternal(const FbxMesh* pMesh); - FbxMesh* TriangulateMeshInternalLegacy(const FbxMesh* pMesh); - FbxMesh* TriangulatePatchInternal(const FbxPatch* pPatch); - FbxMesh* TriangulateNurbsInternal(const FbxNurbs* pNurbs); - - bool AddAlternateGeometry(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pAltGeom, FbxWeightedMapping* pSrcToAltWeightedMapping, bool pConvertDeformations); - bool ConvertGeometryAnimation(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom); - void ReplaceNodeAttribute(FbxNode* pNode, FbxNodeAttribute* pNewNodeAttr); - bool AddTriangulatedMeshGeometry(FbxNode* pNode, int pUVStepCoeff); - bool CreateAndCopyLayerElement(FbxMesh *pNewMesh, FbxMesh *pRefMesh); - bool SetLayerElements(FbxMesh *pNewMesh, FbxMesh *pMesh, int pPolygonIndex, int pPolyPointIndex, int pLoopIndex, bool pIsSearched, bool pIsEndPolygon); - - /** FbxTriangulation - * \param Index Output array of triangle indices - * \param pNumSide Input number of sides of the polygon to triangulate - * -- Triangulation algorithm is strip, Sorting vertex index for strip in clockwise. - * - * 2 3 4 - * 0----------0---------0 - * / ` - * / ` 5 - * 1 / 0 - * 0 / - * ` / - * ` / - * 0 0-----0-------------0 6 - * 7 - * The result of this one will be [{0,1,2},{2,3,0},{0,3,7},{3,4,7},{7,4,6},{4,5,6}] - */ - static void FbxTriangulation(int *Index, int pNumSide); - - bool ComputePatchToMeshControlPointsWeightedMapping(FbxPatch* pSrcPatch, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pSwapUV=false); - bool ComputeNurbsToMeshControlPointsWeightedMapping(FbxNurbsSurface* pSrcNurbs, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pRescaleUVs=false, bool pSwapUV=false); - - void InitializeWeightInControlPoints(FbxGeometryBase* pGeometry); - void InitializeWeightInNormals(FbxLayerContainer* pLayerContainer); - void TriangulateContinuousSurface(FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface, FbxUInt pPointCountX, FbxUInt pPointCountY, bool ClockWise=false); - void CheckForZeroWeightInShape(FbxGeometry *pGeometry); - FbxMesh* CreateMeshFromParametricSurface(const FbxGeometry* pGeometry); - FbxNurbs* CreateNurbsFromPatch(FbxPatch* pPatch); - FbxNurbsSurface* CreateNurbsSurfaceFromPatch(FbxPatch* pPatch); - - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator, int pUCount, int pVCount); - void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); - void ConvertClusters(FbxArray const& pSourceClusters, int pSourceControlPointsCount, FbxArray& pDestinationClusters, int pDestinationControlPointsCount, FbxWeightedMapping* pSourceToDestinationMapping); - void BuildClusterToSourceMapping(FbxArray const& pSourceClusters, FbxWeightedMapping* pClusterToSourceMapping); - void CheckClusterToSourceMapping(FbxWeightedMapping* pClusterToSourceMapping); - void ConvertCluster(int pSourceClusterIndex, FbxWeightedMapping* pClusterToSourceMapping, FbxWeightedMapping* pSourceToDestinationMapping, FbxCluster* pDestinationCluster); - void DuplicateControlPoints(FbxArray& pControlPoints, FbxArray& pPolygonVertices); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated); - void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated, int pTriangleNum); - void ResizePolygon(FbxMesh *pNewMesh, int pNewCountVertices = 0, int pNewCountPolygons =0, bool pClearFlag = true); - - template void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb); - - bool CopyAnimationCurves(FbxNode* pNode, FbxGeometry* pNewGeometry); - bool FlipNurbsCurve(FbxNurbsCurve* pCurve) const; - void FlipControlPoints(FbxGeometryBase* pPoints, int pUCount, int pVCount) const; - bool ConvertMaterialReferenceMode(FbxMesh* pMeshRef) const; - void RevertMaterialReferenceModeConversion(FbxMesh* pMeshRef) const; - - FbxManager* mManager; - - friend class FbxWriter3ds; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmanipulators.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmanipulators.h deleted file mode 100755 index a599480..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmanipulators.h +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmanipulators.h -#ifndef _FBXSDK_UTILS_MANIPULATORS_H_ -#define _FBXSDK_UTILS_MANIPULATORS_H_ - -#include - -#include -#include -#include -#include - -#include - -class FbxCameraManipulationState; - -/** This class can be used to provide basic camera manipulation in any program using this library. - * \nosubgrouping - */ -class FBXSDK_DLL FbxCameraManipulator : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxCameraManipulator, FbxObject); - -public: - //! All possible manipulation actions that can be performed on a camera using this manipulator. - enum EAction - { - eNone, //!< No action. - eOrbit, //!< Orbiting camera around LootAt/Interest position. - eDolly, //!< Moving camera closer or away from its LookAt/Intest position. - ePan, //!< Panning camera up, down and sideways. - eFreePan //!< Panning and dollying all at once. - }; - - /** Begin manipulation of the camera. - * \param pAction The action performed for this manipulation scope. - * \param pX Begin horizontal position of the manipulation, in pixels. - * \param pY Begin vertical position of the manipulation, in pixels. */ - void Begin(EAction pAction, float pX, float pY); - - /** Notify manipulation of latest input. - * \param pTimeDelta Elapsed time since the last notify. Only used if Smoothing is enabled. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Notify(float pX, float pY, float pScale=0); - - //! End current manipulation. - void End(); - - /** Update the camera position. This must be called periodically in order for the camera to update its position. - * \param pTimeDelta Elapsed time since the last update. If Smooth is disabled, you can leave this value to zero. - * \remark Begin, Notify and End will not change the current camera position. */ - void Update(const FbxTime& pTimeDelta=FBXSDK_TIME_ZERO); - - /** Do a complete manipulation action in a single operation. This is the equivalent of calling Begin, Notify and End successively. - * \param pAction The action performed for this manipulation scope. - * \param pX Horizontal position of the manipulation, in pixels. - * \param pY Vertical position of the manipulation, in pixels. - * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ - void Action(EAction pAction, float pX, float pY, float pScale=0); - - /** Retrieve current manipulation action. - * \return The action currently performed by the camera manipulator. */ - EAction GetCurrentAction() const; - - /** Change camera position and LookAt node to frame all objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameAll(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame all selected objects. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameSelected(const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** Change camera position and LookAt to frame the selected position on screen. The LookAt will be placed - * at first closest intersecting geometry, and the distance between camera and LookAt will be preserved. - * \param pX The horizontal screen coordinate. - * \param pY The vertical screen coordinate. - * \param pCulling If \c true, only test triangles that are front-facing, otherwise test both sides. - * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ - void FrameScreenPosition(float pX, float pY, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); - - /** The camera controlled by the manipulator. */ - FbxPropertyT Camera; - - /** Width of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportWidth; - - /** Height of the camera viewport, in pixels. This is used to accurately calculate to movement speed. - * \remark If this property is not correctly set, movements will be erronous. */ - FbxPropertyT ViewportHeight; - - /** Camera manipulations will be smooth if enabled. True by default. */ - FbxPropertyT Smooth; - - /** Camera manipulations smoothing speed. Higher speed will stabilize the camera more quickly. Default is 10.0 */ - FbxPropertyT SmoothSpeed; - - /** Invert the camera horizontal manipulation direction if set to true. False by default. */ - FbxPropertyT InvertX; - - /** Invert the camera vertical manipulation direction if set to true. False by default. */ - FbxPropertyT InvertY; - - /** Restore the camera transform upon destruction of the manipulator. */ - FbxPropertyT Restore; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void Destruct(bool pRecursive) override; - void ConstructProperties(bool pForceSet) override; - bool ConnectNotify(const FbxConnectEvent& pEvent) override; - bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty) override; - -private: - void Reset(); - FbxCamera* GetCamera() const; - FbxNode* GetCameraNode() const; - FbxNode* GetCameraLookAtNode() const; - FbxNode* GetCameraTargetUpNode() const; - FbxVector4 GetCameraPosition() const; - void SetCameraPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraRotation() const; - void SetCameraRotation(const FbxVector4& pRotation); - FbxVector4 GetCameraLookAtPosition() const; - void SetCameraLookAtPosition(const FbxVector4& pPosition); - FbxVector4 GetCameraTargetUpPosition() const; - void SetCameraTargetUpPosition(const FbxVector4& pPosition); - FbxAMatrix GetCameraRotationMatrix() const; - void SetCameraRotationMatrix(const FbxAMatrix& pRM); - - double ComputeRotationAxis(FbxVector4& pFront, FbxVector4& pUp, FbxVector4& pRight, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector) const; - void ComputeRotationMatrix(FbxAMatrix& pRM, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector); - void UpdateCameraRotation(); - - bool FrameObjects(bool pSelected, const FbxTime& pTime); - FbxVector4 ComputePositionToFitBBoxInFrustum(const FbxVector4& pBBoxMin, const FbxVector4& pBBoxMax, const FbxVector4& pBBoxCenter, const FbxVector4& pCameraPosition, const FbxAMatrix& pCameraRM, const FbxTime& pTime); - - EAction mCurrentAction; - FbxFloat mBeginMouse[3], mLastMouse[3]; - FbxVector4 mBeginPosition, mBeginAxis[3]; - FbxBool mBeginFlipped; - - FbxDouble mDestOrthoZoom; - FbxVector4 mDestPosition, mDestLookAt, mDestTargetUp; - FbxAMatrix mDestRotation; - - FbxVector4 mInitialPosition, mInitialRotation, mInitialLookAt; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MANIPULATORS_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h deleted file mode 100755 index 70926da..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxmaterialconverter.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxmaterialconverter.h -#ifndef _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ -#define _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ - -#include - -#include - -#include - -class LayerConfig; -class FbxMaterialConverter_Impl; - -/** - * \brief This class provides functions to restructure the material and textures - * applied to geometries from FBX v5 material system to v6-and-up or the other way around. - * \nosubgrouping - * \see FbxSurfaceMaterial, FbxTexture - */ -class FBXSDK_DLL FbxMaterialConverter -{ -public: - FbxMaterialConverter( FbxManager& mManager, FbxSurfaceMaterial* pDefaultMaterial = NULL); - ~FbxMaterialConverter(); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for all geometries - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pScene The scene whose geometries should be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxScene& pScene ); - - /** Moves textures in texture layer elements to connections - * on the corresponding material's color properties, for the given geometry - * in the scene.(Convert scene from FBX v5 material system to v6-and-up) - * \param pNode The geometry node to be converted. - * \return true on success, false otherwise - */ - bool ConnectTexturesToMaterials( FbxNode* pNode ); - - /** This is the reverse operation of ConnectTexturesToMaterials() - * Textures connected to Materials' color properties are stored - * in layer elements, and their connections to the color properties - * are broken.(Convert scene from FBX v6-and-up material system to v5) - * \param pScene The scene whose geometries should be converted. - * \return true if all geometries were converted, false otherwise - */ - bool AssignTexturesToLayerElements( FbxScene& pScene ); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - typedef FbxPair TexData; - - FbxMaterialConverter& operator=(const FbxMaterialConverter&); - - FbxManager& mManager; - FbxSurfaceMaterial* mDefaultMaterial; - FbxMaterialConverter_Impl* mImpl; - - - void GetTextures( int pComponent, FbxLayer* pLayer, LayerConfig& pLayerConfig ) const; - FbxSurfaceMaterial* GetMaterial( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - int GetMaterialOrder( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); - - bool HasGoodMappingModes( FbxNode* pNode, FbxGeometry* pGeom ) const; - void ConnectTextures( FbxSurfaceMaterial* pMat, FbxObject* pTexture, int pTextureType ) const; - bool HasPerFaceMaterialMapping( FbxGeometry* pGeom ) const; - void SetTextureUVSets( FbxGeometry* pGeom ) const; - bool HasTextures( FbxGeometry* pGeom ) const; - - void GetTextureList( FbxArray& pTextures, FbxLayeredTexture* pTex ) const; - - FbxLayer* FindLayerForTexture( FbxTexture* pTex, - FbxLayerElement::EType pTexType, - FbxLayerElementTexture::EBlendMode pTexBlendMode, - FbxGeometry* pGeom, - int lComponentIndex, - int lStartIndex = 0 ) const; - - void InitTextureElement( FbxLayerElementTexture* pTexElm, int pComponentCount, - FbxLayerElementTexture::EBlendMode pMode) const; - - bool AssignTexturesToLayerElements( FbxNode* pNode); - - bool HasTextureLayerElements( FbxGeometry& pGeom ) const; - - void ConvertToPerFaceMapping( FbxMesh* pGeom ) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxnamehandler.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxnamehandler.h deleted file mode 100755 index 8e7592e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxnamehandler.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxnamehandler.h -#ifndef _FBXSDK_UTILS_NAMEHANDLER_H_ -#define _FBXSDK_UTILS_NAMEHANDLER_H_ - -#include - -#include -#include - -#include - -/** A name is a case-sensitive string ID of a property, a node, a node attribute, a texture, etc. The characters constituting a name has no specific limitation. - * An initial name is the original name (from importing a file, for example), which is saved up for reversible renaming. - * A current name is the name used in FBX. - * A namespace is a simple grouping of objects under a given name. Namespaces are primarily used to resolve - * name-clash issues in FBX, where a new object has the same name as an existing object. - * - * For example, Maya only accepts names with letters, digits, or underscores. And when a user import FBX into Maya, - * a node whose name contains whitespace will be renamed. But the connections and references to this node in FBX - * scene graph still use the original name, so users have to use the initial name to retrieve related information. - * \nosubgrouping - */ -class FBXSDK_DLL FbxNameHandler -{ -public: - /** Constructor. - * \param pInitialName Name string used to initialize both members (initialName and currentName) - * of this class. - */ - FbxNameHandler(const char* pInitialName = ""); - - /** Copy constructor. - * \param pName A FbxNameHandler copied to this one. - */ - FbxNameHandler(FbxNameHandler const& pName); - - // !Destructor - ~FbxNameHandler(); - - /** Set the initial name. - * \param pInitialName New string for the initial name. - * \remarks The current name will also be changed to this value. - */ - void SetInitialName(const char* pInitialName); - - /** Get the initial name. - * \return Pointer to the InitialName string buffer. - */ - const char* GetInitialName() const; - - /** Set the current name. - * \param pNewName New string for the current name. - * \remarks The initial name is not affected. - */ - void SetCurrentName(const char* pNewName); - - /** Get the current name. - * \return Pointer to the CurrentName string buffer. - */ - const char* GetCurrentName() const; - - /** Set the namespace. - * \param pNameSpace New string for the namespace. - * \remarks The initial name is not affected. - */ - void SetNameSpace(const char* pNameSpace); - - /** Get the namespace. - * \return Pointer to the namespace string buffer. - */ - const char* GetNameSpace() const; - - /** Check if the current name and initial name match. - * \return \c true if the current name isn't identical to the initial name. - */ - bool IsRenamed() const; - - /** Assignment operator - * \param pName FbxNameHandler assigned to this one. - */ - FbxNameHandler& operator= (FbxNameHandler const& pName); - - /** - * \name Private use for the renaming strategies classes. - * - * Some renaming strategies classes need to store the parent name to successfully apply the renaming algorithms. - * The methods in this section allow them to do so. - * \remark Because of the very specific use of the mParentName string, - * callers of the FbxNameHandler class should never assume that mParentName is correctly initialized - * nor contains a meaningful value outside the scope of the renaming strategy class that used it. - */ - //@{ - - /** Set the parent name. - * \param pParentName New string for the parent name. - * \remarks The parent name here could combine several hierarchy name. - * The full name should be "ParentName + CurrentName". - * A - * |_B - * |_C - * For the above hierarchy, the parent name of C is "AB". - * The full name of C is "ABC". - */ - void SetParentName(const char* pParentName); - - /** Get the parent name. - * \return Pointer to the ParentName string buffer. - */ - const char* GetParentName() const; - - //@} - - /** Get the namespaces in a string pointer array format. - * \return FbxArray . - * \remarks The array is filled in reverse order. For example, with a namespace string defined as: - * a:b:c:d, the filled array is: array[0]=d, array[1]=c, array[2]=b and array[3]=a - */ - FbxArray GetNameSpaceArray(char identifier); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - FbxString mParentName; - FbxString mInitialName; - FbxString mCurrentName; - FbxString mNameSpace; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_NAMEHANDLER_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessor.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessor.h deleted file mode 100755 index 2666dd9..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessor.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessor.h -#ifndef _FBXSDK_UTILS_PROCESSOR_H_ -#define _FBXSDK_UTILS_PROCESSOR_H_ - -#include - -#include - -#include - -class FbxCollection; - -/** The class and its derived classes(e.g. FbxProcessorXRefCopy, FbxProcessorXRefCopyUserLibrary, etc.) are used to process shader, library, asset, etc. - * For example, you could update object property and its value via FbxProcessor::ProcessObject(), FbxProcessor::internal_ProcessObject(), etc. - */ -class FBXSDK_DLL FbxProcessor : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(FbxProcessor, FbxObject); - -public: - /** - * \name Processor management - */ - //@{ - /** Process the specified collection. - * \param pCollection - */ - bool ProcessCollection(FbxCollection *pCollection=0); - - /** Process the specified object. - * \param pCollection FbxObject to process - */ - bool ProcessObject (FbxObject *pCollection=0); - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool internal_ProcessCollectionBegin (FbxCollection *pCollection); - virtual bool internal_ProcessCollectionEnd (FbxCollection *pCollection); - virtual bool internal_ProcessObject (FbxObject* pObject); - virtual bool internal_ProcessCollection (FbxCollection* pCollection); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h deleted file mode 100755 index 8510115..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorshaderdependency.h -#ifndef _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ -#define _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ - -#include - -#include -#include -#include - -#include - -/** Crawls CgFx and HLSL shader files, copies them, and all dependent - * shader files into the location specified by RootProcessPath. - */ -class FBXSDK_DLL FbxProcessorShaderDependency : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorShaderDependency, FbxProcessor); - -public: - FbxPropertyT RootProcessPath; - - FbxPropertyT CleanupOnDestroy; - - FbxPropertyT AdditionalIncludePaths; - - void ClearProcessedFiles(); - - /** - * \name Overridable internal function */ - //@{ -protected: - bool internal_ProcessObject(FbxObject* pObject) override; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -// Constructor / Destructor -protected: - void ConstructProperties(bool pForceSet) override; - void Destruct(bool pRecursive) override; - -public: - - class StringHash - { - public: - unsigned int operator()( const FbxString& pValue ) const - { - // from wikipedia.org - // Jenkins One-at-a-time hash - - size_t lLen = pValue.GetLen(); - unsigned int lHashValue = 0; - const char* lData = pValue.Buffer(); - for( size_t i = 0; i < lLen; ++i ) - { - lHashValue += lData[i]; - lHashValue += (lHashValue << 10); - lHashValue ^= (lHashValue >> 16); - } - lHashValue += (lHashValue << 3); - lHashValue ^= (lHashValue >> 11); - lHashValue += (lHashValue << 15); - - return lHashValue; - } - }; - -protected: - - class FileDeleter - { - public: - FileDeleter( const char* pFileUrl ) : mFileUrl( pFileUrl) {}; - ~FileDeleter() - { - if( !mFileUrl.IsEmpty() ) - { - remove( mFileUrl ); - } - }; - - void Release() { mFileUrl = ""; } - - private: FbxString mFileUrl; - }; - - // first == string as it appears in the file - // second == string URL - struct FilePathData - { - FbxString mOriginalStr; - FbxString mOriginalAbsUrl; - - FbxString mNewStr; - }; - - typedef FbxDynamicArray< FilePathData > FilePathList; - - virtual bool GetIncludePaths( FbxString& pFile, FilePathList& pPaths, FbxXRefManager& pManager ) const; - virtual bool ReplaceUrls( const FbxString& pFileUrl, const FbxString& pNewFileUrl, - const FilePathList& pPaths ) const; - -private: - struct Dependency - { - FbxString mNewUrl; - FbxString mOriginalUrl; - }; - - typedef FbxHashMap< FbxString, Dependency, StringHash > DependMap; - - DependMap mDependMap; - - FbxString mRootPath; - - FbxXRefManager mResolver; - int mSystemIndex; - - // magic number to limit the size of files we can parse =( - static const int sMaxFileSize; - - bool ParseDependencies( const FbxBindingTable& pTable ); - bool AddDependency( FbxString& pFileUrl ); - bool AddSystemPaths(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxref.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxref.h deleted file mode 100755 index 232ce01..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxref.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxref.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_H_ - -#include - -#include -#include - -#include - -/** This class contains objects - * This class also provides access to global settings and take information. - */ -class FBXSDK_DLL FbxProcessorXRefCopy : public FbxProcessor -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopy, FbxProcessor); - -public: - class FBXSDK_DLL MissingUrlHandler - { - public: - virtual ~MissingUrlHandler(); - virtual void MissingUrl(const FbxString& pUrl, const FbxProperty&) = 0; - }; - - /** - * \name Properties - */ - //@{ - FbxPropertyT OutputDirectory; - - /** As we resolve xref and copy assets, do we update properties to - * now use this relative path? Defaults to TRUE. - */ - FbxPropertyT UpdateProperties; - - /** Default to FALSE -- when set, this informs the processor to track - * every properties that were modified during the scene processing. - */ - FbxPropertyT TrackUpdatedProperties; - - /** Default to TRUE -- when not set, files are only copied if one of - * the following conditions is met: - * - * 1) Target does not exist - * 2) Target has a different time - * 3) Target has a different size - */ - FbxPropertyT ForceCopy; - - /** Default to TRUE -- when copying a file, also copy its modification - * time. A bit of a requirement if you're not going to use ForceCopy. - */ - FbxPropertyT CopyFileTimes; - //@} - - /** Optional callback; when set, this will be called when an Url cannot be - * be copied because the source is not found. - * Memory is owned by the client code, and will not be freed by us. - */ - MissingUrlHandler* MissingUrlHandler; - - /** Since FbxProperty is an opaque type, we can't do an efficient operator < - * on it, and must keep the data on the object, which can be compared through - * pointers, and then we can further compare against the property name. - */ - struct PropertyUpdate - { - FbxProperty mProperty; - FbxString mOriginalValue; - - inline PropertyUpdate() {} - inline PropertyUpdate(const FbxProperty& pProp, const FbxString& pVal) : - mProperty(pProp), mOriginalValue(pVal) {} - - inline bool operator <(const PropertyUpdate& pOther) const - { - return strcmp(mProperty.GetName(), pOther.mProperty.GetName()) < 0; - } - }; - typedef FbxSet UpdateSet; - typedef FbxMap PropertyUpdateMap; - - /** All properties that were updated, with their original value. - * Will always be empty if TrackUpdatedProperties - * was not set before calling ProcessCollection/ProcessObject. - * NOT cleared before each processing run. - */ - PropertyUpdateMap& GetUpdatedProperties(); - - /** If property tracking was enabled, goes through and reverts all changes - * to the properties. Does not un-copy the files, naturally. - */ - void RevertPropertyChanges(); - - /** This is just a safety net to make sure RevertPropertyChanges is called when - * this goes out of scope. - */ - struct FBXSDK_DLL AutoRevertPropertyChanges - { - AutoRevertPropertyChanges(FbxProcessorXRefCopy* pCopy) : mXRefCopy(pCopy) {} - ~AutoRevertPropertyChanges() - { - if( mXRefCopy ) - mXRefCopy->RevertPropertyChanges(); - } - - FbxProcessorXRefCopy* mXRefCopy; - }; - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void Construct(const FbxObject* pFrom) override; - void ConstructProperties(bool pForceSet) override; - - PropertyUpdateMap mUpdatedProperties; - - // Implements the rules specified for the ForceCopy property. - // Also checks the ForceCopy property. - bool ShouldCopyFile(const FbxString& pTarget, const FbxString& pSource) const; - - bool internal_ProcessCollectionBegin (FbxCollection* pObject) override; - bool internal_ProcessCollectionEnd (FbxCollection* pObject) override; - bool internal_ProcessObject (FbxObject* pObject) override; - bool ProcessPathProperty(FbxProperty &pProperty); - virtual bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h deleted file mode 100755 index f4c5057..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxprocessorxrefuserlib.h -#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ -#define _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ - -#include - -#include - -#include - -/** - * Specialized xref copy processor - */ -class FBXSDK_DLL FbxProcessorXRefCopyUserLibrary : public FbxProcessorXRefCopy -{ - FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopyUserLibrary, FbxProcessorXRefCopy); - -public: - /** - * \name Properties - */ - //@{ - // Do we copy files even if they are in the system library? - // Defaults to FALSE. - FbxPropertyT CopyAllAssets; - - // Do we copy files even if they are not within the scene? This is - // the typical use case when creating a new library, and defaults to - // TRUE. If you want to extract assets from a specific library you - // you would set this to FALSE to ignore assets from external (user, - // system) libraries. - FbxPropertyT CopyExternalAssets; - - // Do we copy assets that use absolute paths? If true, then after - // the scene processor has run through the URL will be relative to - // the scene document. - // Defaults to TRUE. - FbxPropertyT CopyAbsoluteUrlAssets; - //@} - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - void ConstructProperties(bool pForceSet) override; - bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const override; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h deleted file mode 100755 index 87abeea..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategy.h +++ /dev/null @@ -1,355 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategy.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ - -#include - -#include -#include - -#include - -class FbxScene; -class FbxNode; - -/** This base class is an abstract implementation of a renaming strategy for avoiding name clashes. - * An implementation of a reader (FbxReader) or writer (FbxWriter) class must call a concrete implementation - * of "FbxRenamingStrategyInterface::Rename()" every time a name is imported or exported to avoid name clashes. - * Any class deriving from FbxRenamingStrategyInterface must implement FbxRenamingStrategyInterface::Clear(), - * FbxRenamingStrategyInterface::Rename(), and FbxRenamingStrategyInterface::Clone(). - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyNumber - */ -class FBXSDK_DLL FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyInterface(); - - //! Destructor. - virtual ~FbxRenamingStrategyInterface (); - - //! Resets internal state regarding assigned names. - virtual void Clear() = 0; - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName) = 0; - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone() = 0; -}; - -/** Implements a renaming strategy that resolves name clashes by adding number postfixes. - * For example, when there are three objects with the same name "MyObject", - * they will be renamed to "MyObject", "MyObject1" and "MyObject2". - * \nosubgrouping - * \see FbxNameHandler FbxRenamingStrategyBase - */ -class FBXSDK_DLL FbxRenamingStrategyNumber : public FbxRenamingStrategyInterface -{ -public: - //! Constructor. - FbxRenamingStrategyNumber(); - - //! Destructor. - virtual ~FbxRenamingStrategyNumber (); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Rename a name if necessary to avoid name-clash issues. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxArray mNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxRenamingStrategy object can be set to rename all the objects in a scene. - * It can remove name clashing, remove illegal characters, manage namespaces and manage backward compatibility. - * It is better to choose FbxSceneRenamer instead of this class to simplify the usage. - * \remark This class implements a legacy renaming strategy where unsupported characters are replaced with the - * underscore character. Improved renaming strategies solvers can be implemented using the functions provided - * by the FbxRenamingStrategyUtils class and the FbxRenamingStrategyBase. - * \nosubgrouping - * \see FbxSceneRenamer - */ -class FBXSDK_DLL FbxRenamingStrategy : public FbxRenamingStrategyInterface -{ -public: - /** \enum EDirection The mode describing the convention direction, from FBX format or to FBX format. - * - \e eToFBX Convert to FBX format from another format. - * - \e eFromFBX Convert from FBX format to another format. - */ - enum EDirection - { - eToFBX, - eFromFBX - }; - - /** Constructor. - * \param pMod The mode describing the convention direction, from FBX format or to FBX format. - * \param pOnCreationRun - */ - FbxRenamingStrategy(EDirection pMod, bool pOnCreationRun = false); - - //! Destructor. - virtual ~FbxRenamingStrategy(); - - /** Rename a name if necessary. - * \param pName The name to be renamed. - * \return Return \c true on success, \c false otherwise. - */ - virtual bool Rename(FbxNameHandler& pName); - - //! Resets internal state regarding assigned names. - virtual void Clear(); - - /** Create a dynamic renaming strategy instance of the same type as the child class. - * \return New instance. - */ - virtual FbxRenamingStrategyInterface* Clone(); - - /** \enum EClashType - * - \e eNameClashAuto - * - \e eNameClashType1 - * - \e eNameClashType2 - */ - enum EClashType - { - eNameClashAuto, - eNameClashType1, - eNameClashType2 - }; - - /** Setup the strategy to perform this algorithm - * \param pType - */ - void SetClashSolverType(EClashType pType); - - /** Get the namespace of the last renamed object. - * \return Char pointer to the namespace. - */ - virtual char* GetNameSpace() { return mNameSpace.Buffer(); } - - /** Sets the current scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetInNameSpaceSymbol(FbxString pNameSpaceSymbol){mInNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets the wanted scene namespace symbol. - * \param pNameSpaceSymbol namespace symbol. - */ - virtual void SetOutNameSpaceSymbol(FbxString pNameSpaceSymbol){mOutNameSpaceSymbol = pNameSpaceSymbol;} - - /** Sets case sensitivity for name clashing. - * \param pIsCaseSensitive Set to \c true to make the name clashing case sensitive. - */ - virtual void SetCaseSensibility(bool pIsCaseSensitive){mCaseSensitive = pIsCaseSensitive ;} - - /** Sets the flag for character acceptance during renaming. - * \param pReplaceNonAlphaNum Set to \c true to replace illegal characters with an underscore ("_"). - */ - virtual void SetReplaceNonAlphaNum(bool pReplaceNonAlphaNum){mReplaceNonAlphaNum = pReplaceNonAlphaNum;} - - /** Sets the flag for first character acceptance during renaming. - * \param pFirstNotNum Set to \c true to add an underscore to the name if the first character is a number. - */ - virtual void SetFirstNotNum(bool pFirstNotNum){mFirstNotNum = pFirstNotNum;} - - /** Recursively renames all the unparented namespaced objects (Prefix mode) starting from this node. - * \param pNode Parent node. - * \param pIsRoot The root node. - * \return \c true if the "_NSclash" have been added to one or more node. - * \remarks This function adds "_NSclash" when it encounters an unparented namespaced object. - */ - virtual bool RenameUnparentNameSpace(FbxNode* pNode, bool pIsRoot = false); - - /** Recursively removes all the unparented namespaced "key" starting from this node. - * \param pNode Parent node. - * \return \c true if successfully removed the "_NSclash" from one or more nodes. - * \remarks This function removes "_NSclash" when encountered. This is the opposite from RenameUnparentNameSpace. - */ - virtual bool RemoveImportNameSpaceClash(FbxNode* pNode); - - /** Recursively get all the namespace starting from this node's parent. - * \param pNode Parent node. - * \param pNameSpaceList output the namespace list from pNode's parent to the root node. - */ - virtual void GetParentsNameSpaceList(FbxNode* pNode, FbxArray &pNameSpaceList); - - /** Recursively replace the namespace starting from this node to its children. - * \param pNode Current node. - * \param OldNS The old namespace to be replaced with the NewNs. - * \param NewNS The new namespace to replace OldNs. - * \return \c true if successfull - * \remarks This function only replaces the first occurence of OldNS with NewNS. - */ - virtual bool PropagateNameSpaceChange(FbxNode* pNode, FbxString OldNS, FbxString NewNS); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - virtual bool RenameToFBX(FbxNameHandler& pName); - virtual bool RenameFromFBX(FbxNameHandler& pName); - virtual FbxString& ReplaceNonAlphaNum(FbxString& pName, const char* pReplace, bool pIgnoreNameSpace); - - EDirection mMode; - EClashType mType; - - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - FbxCharPtrSet mStringNameArray; - FbxArray mExistingNsList; - bool mOnCreationRun; - bool mCaseSensitive; - bool mReplaceNonAlphaNum; - bool mFirstNotNum; - FbxString mNameSpace; - FbxString mInNameSpaceSymbol; //symbol identifying a name space - FbxString mOutNameSpaceSymbol; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -/** The FbxSceneRenamer provides a way to easily rename objects in a scene without using the FbxRenamingStrategy class. - * FbxSceneRenamer can remove name clashing and illegal characters. It also manages namespaces. - * - * Example: - * Maya only accepts names with letters, digits, or underscores, and we want to convert - * all the names of a scene from FBX format to Maya format. - * \code - * FbxSceneRenamer lSceneRenamer(pScene); - * lSceneRenamer.RenameFor(FbxSceneRenamer::eFBX_TO_MAYA); - * \endcode - * \nosubgrouping - * \see FbxRenamingStrategy - */ -class FBXSDK_DLL FbxSceneRenamer -{ -public: - /** Constructor - * \param pScene A scene which contains objects to be renamed. - */ - FbxSceneRenamer(FbxScene* pScene) {mScene = pScene;}; - - //! Destructor. - virtual ~FbxSceneRenamer(){}; - - /** \enum ERenamingMode The Mode describing from which format to which format. - * - \e eNone - * - \e eMAYA_TO_FBX5 - * - \e eMAYA_TO_FBX_MB75 - * - \e eMAYA_TO_FBX_MB70 - * - \e eFBXMB75_TO_FBXMB70 - * - \e eFBX_TO_FBX - * - \e eMAYA_TO_FBX - * - \e eFBX_TO_MAYA - * - \e eLW_TO_FBX - * - \e eFBX_TO_LW - * - \e eXSI_TO_FBX - * - \e eFBX_TO_XSI - * - \e eMAX_TO_FBX - * - \e eFBX_TO_MAX - * - \e eMB_TO_FBX - * - \e eFBX_TO_MB - * - \e eDAE_TO_FBX - * - \e eFBX_TO_DAE - */ - enum ERenamingMode - { - eNone, - eMAYA_TO_FBX5, - eMAYA_TO_FBX_MB75, - eMAYA_TO_FBX_MB70, - eFBXMB75_TO_FBXMB70, - eFBX_TO_FBX, - eMAYA_TO_FBX, - eFBX_TO_MAYA, - eLW_TO_FBX, - eFBX_TO_LW, - eXSI_TO_FBX, - eFBX_TO_XSI, - eMAX_TO_FBX, - eFBX_TO_MAX, - eMB_TO_FBX, - eFBX_TO_MB, - eDAE_TO_FBX, - eFBX_TO_DAE - }; - - /** Rename the objects of the scene according the specific mode. - * \param pMode A mode describing from which format to which format. - */ - void RenameFor(ERenamingMode pMode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -private: - void ResolveNameClashing(bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive, - bool pReplaceNonAlphaNum, bool pFirstNotNum, - FbxString pInNameSpaceSymbol, FbxString pOutNameSpaceSymbol, - bool pNoUnparentNS/*for MB < 7.5*/, bool pRemoveNameSpaceClash); - - FbxRenamingStrategyInterface* mNodeRenamingStrategy; - FbxScene* mScene; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ */ - diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h deleted file mode 100755 index 90ed1e0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategybase.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategybase.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ - -#include - -#include -#include - -#include - -/** \brief Base class for renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyBase(); - - /** Constructor. - * \param pNameSpaceSymbol - */ - FbxRenamingStrategyBase(char pNameSpaceSymbol); - - //! Destructor. - virtual ~FbxRenamingStrategyBase(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene)=0; - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene)=0; - - /** This method find the original name of a given string - * \param pString - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pString)=0; - - /** This method find the renaming name of a given string - * \param pString - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pString, bool pIsPropertyName=false)=0; - - //! clean up the name cells. - virtual void CleanUp(); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - struct NameCell - { - NameCell(const char* pName) : - mName(pName), - mInstanceCount(0) - { - } - - FbxString mName; - int mInstanceCount; - }; - - char mNamespaceSymbol; - FbxCharPtrSet mStringNameArray; -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h deleted file mode 100755 index cc8abc0..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx5.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 5. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx5: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx5(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx5(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h deleted file mode 100755 index d832b5d..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx6.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ - -#include - -#include - -#include - -/** \brief This class contains the description of the FBX renaming strategy for fbx file format 6. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyFbx6: public FbxRenamingStrategyBase -{ -public: - - //! Default constructor - FbxRenamingStrategyFbx6(); - - //! Destructor - virtual ~FbxRenamingStrategyFbx6(); - - /** This method put all the names in the scene back to the original values - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool DecodeScene(FbxScene* pScene); - - /** This method renames all the names in the scene - * \param pScene - * \return Returns true if some names have been modified. - */ - virtual bool EncodeScene(FbxScene* pScene); - - /** This method find the original name of a given string - * \param pName - * \return Returns true if the name has been modified. - */ - virtual bool DecodeString(FbxNameHandler& pName); - - /** This method find the renaming name of a given string - * \param pName - * \param pIsPropertyName - * \return Returns true if the name has been modified. - */ - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); - - //! clean up the name cells. - virtual void CleanUp(); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h deleted file mode 100755 index a6c2df9..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyfbx7.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ - -#include - -#include - -#include - -class FBXSDK_DLL FbxRenamingStrategyFbx7 : public FbxRenamingStrategyBase -{ -public: - FbxRenamingStrategyFbx7(); - virtual ~FbxRenamingStrategyFbx7(); - - virtual void CleanUp(); - virtual bool DecodeScene(FbxScene* pScene); - virtual bool EncodeScene(FbxScene* pScene); - virtual bool DecodeString(FbxNameHandler& pName); - virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h deleted file mode 100755 index 6b2597a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrenamingstrategyutilities.h -#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ -#define _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ - -#include - -#include - -#include - -#define NAMECLASH1_KEY "_ncl1_" // name (x) -#define NAMECLASH2_KEY "_ncl2_" // Upper/lower cases clash - -#define UPPERTOLOWER_KEY "ul" -#define LOWERTOUPPER_KEY "lu" - -/** \brief This class contains a set of utilities, which are used by the FBX renaming strategy. -* \nosubgrouping -*/ -class FBXSDK_DLL FbxRenamingStrategyUtils -{ -public: - - /** Check if the string has non alphanumeric characters and replace them with a special string containing a prefix and - * the character code. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \param pFirstCharMustBeAlphaOnly This flag tells whether the first char of the string must be alpha only. Its default - * value is \c false. - * \param pPermittedChars List of non alphanumeric characters that do not require to be converted because already - * supported by the destination application. When encountered, these characters are simply - * skipped and left as is. - * \param p8bitCharsOnly When \c true, this flag tells the routine that only 8 bit coded characters can be - * represented by the encoding format (see note below). If set to \c false, the range of supported - * character is increased and the memory usage may be less. But the routine will perform slower - * because of the internal conversions required. - * \return Returns \c true if at least one character in \c pString has been encoded. - * \note The encoding string depends on the value of \c p8bitCharsOnly argument. When this parameter value is \c true, - * each non-alphanumeric character is replaced with FBXASC### (where ### is the decimal code of the character). - * Inversely, when the value is \c false, each non-alphanumeric characters is replaced with FBXCHR##### (where - * ##### is the hexadecimal representation of the character code). - */ - static bool EncodeNonAlpha(FbxString &pString, bool pFirstCharMustBeAlphaOnly=false, FbxString pPermittedChars="", bool p8bitCharsOnly = true); - - /** Take a string that has been encoded by EncodeNonAlpha and re-extract the non-alphanumeric values. - * \param pString String to be processed. The result of the conversion is also returned in this string. - * \return Returns \c true if the \c pString argument has been decoded. - */ - static bool DecodeNonAlpha(FbxString &pString); - - /** This method will add the _ncl1_ with the provided pInstanceNumber to the string - * \param pString - * \param pInstanceNumber Its default value is 0. - * \return Always returns true. - * \remarks please ALWAYS call Encode Duplicate BEFORE Encode Case Insensitive. - */ - static bool EncodeDuplicate(FbxString &pString, int pInstanceNumber=0); - - /** This method will remove the _ncl1_xxx from the given string - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeDuplicate(FbxString &pString); - - /** This method will compare pString and pString2, set pString to pString2 and append the ncl2 suffix to it - * \param pString - * \param pString2 - * \return Returns true if the pString has been modified - * \remarks pString and pString2 must be identical except for casing. - */ - static bool EncodeCaseInsensitive(FbxString &pString, const FbxString pString2); - - /** This method will decode a string that has a ncl2 to it - * \param pString - * \return Returns true if the pString has been modified - */ - static bool DecodeCaseInsensitive(FbxString &pString); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(const char* pName); - - /** Returns a name with its prefix removed. - * \param pName A name containing a prefix. - * \return The part of pName following the "::" - */ - static FbxString NoPrefixName(FbxString& pName); -}; - -#include - -#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h deleted file mode 100755 index 6a29280..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxrootnodeutility.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxrootnodeutility.h -#ifndef _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ -#define _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ - -#include - -#include - -#include - -class FbxScene; -class FbxAxisSystem; -class FbxNode; - -/** \brief This class collects static functions for manipulating Fbx_Root nodes. - * Fbx_Root nodes were used to orient and scale scenes from other graphics applications. They have been replaced by the - * conversion routines in FbxAxisSystem and FbxSystemUnit. These methods are provided for backward compatibility only - * and will eventually be removed. Use the conversion routines in FbxSystemUnit and FbxAxisSystem when possible. - */ -class FBXSDK_DLL FbxRootNodeUtility -{ -public: - - static const char* sFbxRootNodePrefix; - - /** This method strips the scene of all Fbx_Root nodes. - * \param pScene The scene to convert - * \return \c true if successful, \c false otherwise. - * \remarks Converts the children of any Fbx_Roots to the orientation - * and units that the Fbx_Root transformation represented. - * The scene should look unchanged. - */ - static bool RemoveAllFbxRoots( FbxScene* pScene ); - - /** Inserts an Fbx_Root node into the scene to orient the - * scene from its axis and unit systems to the specified ones. - * \param pScene The scene to convert - * \param pDstAxis Destination axis. - * \param pDstUnit Destination unit - * \param pUnitOptions Unit conversion options - * - */ - static bool InsertFbxRoot( FbxScene* pScene, - const FbxAxisSystem& pDstAxis, - const FbxSystemUnit& pDstUnit, - const FbxSystemUnit::ConversionOptions& pUnitOptions = FbxSystemUnit::DefaultConversionOptions ); - - /** Check if a node is an Fbx_Root node - * \param pNode The node to query - * \return \c true if pNode is a Fbx_Root node, false otherwise - */ - static bool IsFbxRootNode(FbxNode* pNode); - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -protected: - FbxRootNodeUtility(); - FbxRootNodeUtility(const FbxRootNodeUtility& pOther); - ~FbxRootNodeUtility(); -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h deleted file mode 100755 index 2f8259a..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxscenecheckutility.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxscenecheckutility.h -#ifndef _FBXSDK_SCENE_CHECK_UTILITY_H_ -#define _FBXSDK_SCENE_CHECK_UTILITY_H_ - -#include -#include -#include -#include - -class FbxScene; -class FbxStatus; - -/** \brief This class defines functions to check the received scene graph for issues. - * remark This is still an experimental class and it is not expected to validate - every single data object. - */ -class FBXSDK_DLL FbxSceneCheckUtility -{ -public: - enum ECheckMode { - eCheckCycles = 1, - eCheckAnimationEmptyLayers = 2, - eCheckAnimatioCurveData = 4, - eCheckAnimationData = 6, - eCheckGeometryData = 8, - eCheckOtherData = 16, - eCkeckData = 30 // includes Geometry,Animation&Other - }; - - /** Construct the object - * pScene Input scene to check - * pStatus FbxStatus object to set error codes in (optional) - * pDetails Details messages of issues found (optional) - * - * remark The Details array and its content must be cleared by the caller - */ - FbxSceneCheckUtility(const FbxScene* pScene, FbxStatus* pStatus=NULL, FbxArray* pDetails = NULL); - ~FbxSceneCheckUtility(); - - /** Check for issues in the scene - * return \false if any issue is found in the scene - * remark Depending on the check mode settings, the processing time can increase dramatically. - * remark If a status and/or details object is provided, the error code is set and, details info is - logged. - */ - bool Validate(ECheckMode pCheckMode=eCheckCycles); - - -/***************************************************************************************************************************** -** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** -*****************************************************************************************************************************/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - - /** Validate that the data in the given structure is within acceptable ranges - * return \false if any issue is found - */ - static bool ValidateObjectData(const FbxNurbs* pNurbs); - static bool ValidateObjectData(const FbxNurbsCurve* pNurbs); - static bool ValidateObjectData(const FbxNurbsSurface* pNurbs); - -protected: - bool HaveCycles(); - bool HaveInvalidData(int pCheckMode); - -private: - FbxSceneCheckUtility(); - FbxSceneCheckUtility(const FbxSceneCheckUtility& pOther); - - // Check functions return true if valid, false otherwise - bool CheckMappingMode(FbxLayerElement::EMappingMode pMappingMode, const FbxString& pPrefix); - bool CheckReferenceMode(FbxLayerElement::EReferenceMode pReferenceMode, const FbxString& pPrefix); - bool CheckSurfaceMode(FbxGeometry::ESurfaceMode pSurfaceMode, const FbxString& pPrefix); - - template - bool CheckSurfaceType(T pSurfaceType, const FbxString& pPrefix, const char* pDir); - - int MaxCountLimit(FbxLayerElement::EMappingMode pMappingMode, - int pCtrlPointsCount, - int pVerticesCount, - int pPolygonsCount, - int pEdgesCount, - int pElseCount); - - enum { - eNoRestriction, - eDirectOnly, - eIndexOnly, - }; - - template - bool CheckLayerElement(FbxLayerElementTemplate* pLET, - int pMaxCount, - const char* pId, - const FbxString& pPrefix, - int pRestriction = eNoRestriction); - - bool MeshHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool NurbsHaveInvalidData(FbxGeometry* pGeom, const FbxString& pName); - bool GeometryHaveInvalidData(FbxGeometry* pGeom, const FbxString& pBase); - - bool GlobalSettingsHaveInvalidData(); - - bool AnimationHaveInvalidData(int pCheckMode); - bool AnimationHaveEmptyLayers(); - bool AnimationHaveInvalidCurveData(); - - const FbxScene* mScene; - - FbxStatus* mStatus; - FbxArray* mDetails; - FbxString mBuffer; - -#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ -}; - -#include - -#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxusernotification.h b/sdk/Windows/2019.2/include/fbxsdk/utils/fbxusernotification.h deleted file mode 100755 index 2114a5e..0000000 --- a/sdk/Windows/2019.2/include/fbxsdk/utils/fbxusernotification.h +++ /dev/null @@ -1,523 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//! \file fbxusernotification.h -#ifndef _FBXSDK_UTILS_USER_NOTIFICATION_H_ -#define _FBXSDK_UTILS_USER_NOTIFICATION_H_ - -#include - -#include -#include -#include - -#include - -class FbxLogFile; -class FbxMessageEmitter; -class FbxUserNotificationFilteredIterator; - -/** This class defines one entry object held by the FbxUserNotification class. - * \nosubgrouping - * An entry object is a message to show error, warning or information. - * Direct manipulation of this object should not be required. At most, access to - * its members can be granted for querying purposes. - */ -class FBXSDK_DLL FbxAccumulatorEntry -{ -public: - /** Category of the accumulator entry. - */ - enum EClass - { - eError=1, //!< Error message entry. - eWarning=2, //!< Warning message entry. - eInformation=4, //!< Information message entry. - eAny=7 //!< Entry that does not belong to above class. Cannot be used as a class ID - }; - - /** Constructor. - * \param pAEClass Specify the category for this entry. - * \param pName Identifies this entry (more than one object can have the same name). - * \param pDescr The description of the entry. This is the common message. The details - * are added separately by the FbxUserNotification classes. - * \param pDetail A list of detail string that will be copied into the local array. - * \param pMuteState Whether this entry is muted. - * \remarks By default the object is muted so it does not get processed by the low level - * output routines of the UserNotification accumulator. The entry gets activated - * (unmuted) by the calls to AddDetail() in the accumulator. - */ - FbxAccumulatorEntry(EClass pAEClass, const FbxString& pName, const FbxString& pDescr, - FbxString pDetail="", bool pMuteState=true); - - /** Copy Constructor. - * \param pAE Another FbxAccumulatorEntry object to be copied. - * \param pSkipDetails Flag to skip details. - */ - FbxAccumulatorEntry(const FbxAccumulatorEntry& pAE, bool pSkipDetails); - - //! Destructor. - ~FbxAccumulatorEntry(); - - //! Returns the category class of this entry. - EClass GetClass() const; - - //! Returns the name of this entry. - FbxString GetName() const; - - //! Returns the description of this entry. - FbxString GetDescription() const; - - //! Returns the number of details stored. - int GetDetailsCount() const; - - /** Returns a pointer to one specific detail string (or NULL if the id is invalid). - * Detail string is dynamic. One entry can have multiple detail strings to hold extra information. - * For example, if one entry message is related to many FBX nodes, user can add these nodes' name as details. - * \param id The detail id. - * \return Pointer to the specific detail. - */ - const FbxString* GetDetail(int id) const; - - //! Returns True if this entry is muted. - bool IsMuted() const; - -private: - FbxArray& GetDetails(); - void Mute(bool pState); - - bool mMute; - EClass mAEClass; - FbxString mName; - FbxString mDescr; - FbxArray mDetails; - - friend class FbxUserNotification; -}; - - -/** This class accumulates user notifications and sends them to any device opened by the derived classes. - * If this class is not derived, the data can only be sent to a log file. To send data to a log file, - * it must be opened before attempting to send data, otherwise, the messages will be lost. - */ -class FBXSDK_DLL FbxUserNotification -{ -public: - /** - * Create and initialize user notification object for the SDK manager. - * One SDK manager has one global user notification object. - * If the SDK manager already has global user notification object, the function will do nothing. - * - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \param pSessionDescription This string is used to separate session logs in the file. - * \return the global user notification object owned by the SDK manager. - */ - static FbxUserNotification* Create(FbxManager* pManager, - const FbxString& pLogFileName, - const FbxString& pSessionDescription); - - /** - * Destroy the global user notification object owned by the SDK manager. - */ - static void Destroy(FbxManager* pManager); - - /** Instantiate a FbxUserNotification but leave it uninitialized. The caller must - * explicitly call InitAccumulator to initialize it and ClearAccumulator when finished - * using it. - * \param pManager - * \param pLogFileName Name of the log file that will be open in the directory - * defined by the GetLogFilePath method. - * \remarks If pLogFileName is an empty string the log file does not get created and any - * output sent to it is lost. - * \param pSessionDescription This string is used to separate session logs in the file. - * \remarks If the specified log file already exists, messages are appended to it. This - * class never deletes the log file. Derived classes may delete the log file - * before opening (it must be done in the constructor because the log file is - * opened in the InitAccumulator) or at the end of the processing in the - * PostTerminate method. - */ - FbxUserNotification(FbxManager* pManager, - FbxString const& pLogFileName, - FbxString const& pSessionDescription); - - //! Destructor. - virtual ~FbxUserNotification(); - - /** - * Accumulator is to hold the notification entries. User can add entries to it. - * This method must be called before using the Accumulator. It opens the log file and - * calls AccumulatorInit followed by OpenExtraDevices. Failing to call this method - * will prevent other actions except ClearAccumulator, GetLogFileName and GetLogFilePath. - */ - void InitAccumulator(); - - /** This method must be called when the Accumulator is no longer needed. It calls - * CloseExtraDevices, followed by the AccumulatorClear, and then closes the log file. - */ - void ClearAccumulator(); - - /** IDs for pre-defined message entries. - */ - enum EEntryID - { - eBindPoseInvalidObject, - eBindPoseInvalidRoot, - eBindPoseNotAllAncestorsNodes, - eBindPoseNotAllDeformingNodes, - eBindPoseNotAllAncestorsDefinitionNodes, - eBindPoseRelativeMatrix, - eEmbedMediaNotify, - eFileIONotify, //!< this is generic for reader and writer to log notifications. - eFileIONotifyMaterial, - eFileIONotifyDXFNotSupportNurbs, - eEntryStartID //!< Starting ID for any Accumulator entry added by derived classes. - }; - - /** - * \name Accumulator Management - */ - //@{ - /** Adds one entry into the accumulator. - * \param pID This entry unique ID. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \return The ID of the newly allocated entry. This ID is pEntryId. - */ - int AddEntry(const int pID, const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass=FbxAccumulatorEntry::eWarning); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pString The detail string to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxString pString); - - /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines - * the sequence of events. Each call to this method is internally recorded, making it possible to output each - * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted - * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). - * \param pEntryId The entry index (as returned by AddEntry). - * \param pNode The node to add to the entry. - * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to - * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 - */ - int AddDetail(int pEntryId, FbxNode* pNode); - - //! Returns the number of AccumulatorEntries currently stored in this accumulator. - int GetNbEntries() const; - - /** Get the specified FbxAccumulatorEntry. - * \param pEntryId ID of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the id is invalid or the Accumulator - * is not properly initialized. - */ - const FbxAccumulatorEntry* GetEntry(int pEntryId); - - /** Get the FbxAccumulatorEntry at the specified index. - * \param pEntryIndex index of the entry to retrieve. - * \return Pointer to the specified entry, otherwise \c NULL if either the index is invalid or the Accumulator - * is not properly initialized.. - */ - const FbxAccumulatorEntry* GetEntryAt(int pEntryIndex) const; - - //! Returns the number of Details recorded so far in this accumulator. - int GetNbDetails() const; - - /** Get the specified detail. - * \param pDetailId Index of the detail. This is the id-th detail of type pClass as inserted - * when the AddDetail - * \param pAE Pointer to the FbxAccumulatorEntry object that contains the requested detail. - * The returned valued can be NULL if an error occurred. - * \return The index of the detail to be used when calling the GetDetail of the FbxAccumulatorEntry. - * \remarks A value of -1 is acceptable and means that the FbxAccumulatorEntry has no details. However, - * if pAE is NULL, the return value is meaningless. - */ - int GetDetail(int pDetailId, const FbxAccumulatorEntry*& pAE) const; - - //@} - - /** - * \name Accumulator Output - */ - //@{ - /** Specify send what kind of data to output device. - */ - enum EOutputSource - { - eAccumulatorEntry, //!< Entry with its details. - eSequencedDetails //!< Details in the recorded order. - }; - - /** Send the accumulator entries to the output devices. - * This method needs to be explicitly called by the program that uses this - * class. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred. - * \param pIndex If this parameter >= 0, only send the specified entry/detail index to the output devices. - * Otherwise send all of them. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(EOutputSource pOutSrc=eAccumulatorEntry, int pIndex = -1, bool pExtraDevicesOnly = false); - - /** Send the accumulator entry to the output devices. - * \param pId Send the entry/detail that matching pIdx to the output devices, - * otherwise send all of them. - * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS - * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send - * each entry with its details regardless of the order in which the events occurred.. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - */ - bool OutputById(EEntryID pId, EOutputSource pOutSrc=eAccumulatorEntry, bool pExtraDevicesOnly = false); - - /** Send an immediate entry to the output devices. - * This method bypasses the accumulator by sending the entry directly to the output devices - * and discarding it right after. The internal accumulator lists are left unchanged by this call. - * \param pName This entry name. - * \param pDescr The description of this entry. - * \param pClass The category of this entry. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass, bool pExtraDevicesOnly = false); - - /** Sends the content of the iterator to the output devices. - * This method bypasses the accumulator by sending each entry in the iterator directly to - * the output devices. The internal accumulator lists are left unchanged by this call. - * \param pAEFIter The Filtered FbxAccumulatorEntry iterator object. - * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. - * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. - */ - bool Output(FbxUserNotificationFilteredIterator& pAEFIter, bool pExtraDevicesOnly = false); - - /** Set log message emitter. - * \param pLogMessageEmitter The new log message emitter. - */ - void SetLogMessageEmitter(FbxMessageEmitter * pLogMessageEmitter); - - /** - * \name Utilities - */ - //@{ - /** Returns the absolute path to the log file. If this method is not overridden in a derived class, it - * returns the TEMP directory. - * \param pPath The returned path. - */ - virtual void GetLogFilePath(FbxString& pPath); - - /** Returns the log file name. */ - inline FbxString GetLogFileName() { return mLogFileName; } - //@} - -protected: - /** - * Identify one detail in all accumulator entries by record the entry object and its detail id. - */ - class AESequence - { - public: - AESequence(FbxAccumulatorEntry* pAE, int pDetailId) : - mAE(pAE), - mDetailId(pDetailId) - { - }; - - //! Return the entry object the detail belongs to. - FbxAccumulatorEntry* AE() { return mAE; } - //! Return the detail id in the entry object - int DetailId() { return mDetailId; } - - private: - FbxAccumulatorEntry* mAE; - int mDetailId; - }; - - friend class FbxUserNotificationFilteredIterator; - - /** Allow a derived class to finalize processing AFTER the log file handle has been - * deleted. This may be required if the log file needs to be moved or shown. - * \returns True if the object is properly cleaned. - */ - virtual bool PostTerminate(); - - /** Allow the implementation class to perform accumulator initializations before - * the Extra devices are opened. By default this method does nothing. - */ - virtual void AccumulatorInit(); - - /** Allow the implementation class to perform accumulator clear after the Extra devices are - * closed. By default this method does nothing. - */ - virtual void AccumulatorClear(); - - /** Allow the implementation class to opens its output devices (called by InitAccumulator). - * By default this method does nothing. - */ - virtual void OpenExtraDevices(); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pEntries Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pEntries); - - /** Allow the implementation class to send all the accumulator entries to the devices. - * By default this method loop trough all the elements of the received array and - * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. - * \param pOutputNow Flag indicates whether to output now. - * \param pAESequence Accumulator entries to output. - * \return \c true if successful, \c false otherwise. - */ - virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pAESequence); - - /** Allow the implementation class to send one accumulator entry to the devices. - * By default this method does nothing. - * \param pOutputNow Flag indicates whether to output now. - * \param pAccEntry Accumulator entry to output. - * \param pDetailId Detail id. - * \return \c true if successful, \c false otherwise. - * \remarks Derived methods should check for the IsMuted() state to decide if the accumulator - * entry should get through or get discarded. See AddDetail for more details. - */ - virtual bool SendToExtraDevices(bool pOutputNow, const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - - - /** Allow the implementation class to close it's output devices (called in the ClearAccumulator) - * By default this method does nothing. - */ - virtual void CloseExtraDevices(); - - //! Clears the Accumulator list, remove all user notification entries.. - void ResetAccumulator(); - - //! Clears the Sequence list. - void ResetSequence(); - - /** Send the pIdth element of the accumulator or sequence list to the log file. - * \param pOutSrc The output source, accumulator or sequence list. - * \param pId Element id. - */ - void SendToLog(EOutputSource pOutSrc, int pId); - - /** Send the accumulator entry to the log file. - * \param pAccEntry The accumulator entry. - * \param pDetailId Detail id. - */ - void SendToLog(const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); - -private: - FbxString mLogFileName; - FbxString* mLog; - FbxLogFile* mLogFile; - FbxMessageEmitter* mLogMessageEmitter; - - bool mProperlyInitialized; - FbxString mSessionDescription; - bool mProperlyCleaned; - - FbxMultiMap mAccuHT; // The set establish a relationship between an FbxAccumulatorEntry and it's ID - FbxArray mAccu; // The array defines the order the FbxAccumulatorEntry objects have been - // added to the accumulator (calls to AddEntry) - // Both structures share the same pointers. - FbxArray mAESequence; - FbxManager* mSdkManager; -}; - -/** This class iterates through the accumulated messages depending on the configuration - * flags (filter). The iterator keeps a local copy of the data extracted from the - * accumulator. - */ -class FBXSDK_DLL FbxUserNotificationFilteredIterator -{ -public: - /** Constructor. - * \param pAccumulator This reference is only used during construction for retrieving - * the data required to fill the iterator. - * \param pFilterClass The bitwise combination of the EClass identifiers. An FbxAccumulatorEntry - * element is copied from the accumulator if its Class matches one of the - * bits of this flag. - * \param pSrc Specify which data format is extracted from the accumulator. - * \param pNoDetail This parameter is used ONLY if pSrc == eAccumulatorEntry and, if set to - * false, the details of the FbxAccumulatorEntry are also sent to the output - * devices. If left to its default value, only the description of the - * FbxAccumulatorEntry is sent. - */ - FbxUserNotificationFilteredIterator(FbxUserNotification& pAccumulator, - int pFilterClass, - FbxUserNotification::EOutputSource pSrc = FbxUserNotification::eSequencedDetails, - bool pNoDetail = true); - - virtual ~FbxUserNotificationFilteredIterator(); - - //! Returns the number of elements contained in this iterator. - int GetNbItems() const; - - //! Put the iterator in its reset state. - void Reset(); - - /** Get this iterator's first item. - * \return NULL if the iterator is empty. - */ - FbxAccumulatorEntry* First(); - - /** Get this iterator's previous item. - * \return NULL if the iterator reached the beginning (or is empty). - * \remarks This method will also return NULL if it is called before - * or immediately after a call to First() and reset the iterator to - * its reset state (meaning that a call to First() is mandatory - * to be able to iterate again). - */ - FbxAccumulatorEntry* Previous(); - - /** Get this iterator's next item. - * \return NULL if the iterator reached the end (or is empty). - * \remarks This method will also return NULL if it is called while - * the iterator is in its reset state (called before - * First() or after a preceding call to Previous() reached - * beyond the beginning). - */ - FbxAccumulatorEntry* Next(); - -protected: - // Called in the constructor. - virtual void BuildFilteredList(FbxUserNotification& pAccumulator); - - int mIterator; - int mFilterClass; - bool mNoDetail; - FbxUserNotification::EOutputSource mAccuSrcData; - FbxArray mFilteredAE; -}; - -#include - -#endif /* _FBXSDK_UTILS_USER_NOTIFICATION_H_ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/DOCBparser.h b/sdk/Windows/2019.2/include/libxml2/libxml/DOCBparser.h deleted file mode 100755 index a044076..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/DOCBparser.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Summary: old DocBook SGML parser - * Description: interface for a DocBook SGML non-verifying parser - * This code is DEPRECATED, and should not be used anymore. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __DOCB_PARSER_H__ -#define __DOCB_PARSER_H__ -#include - -#ifdef LIBXML_DOCB_ENABLED - -#include -#include - -#ifndef IN_LIBXML -#ifdef __GNUC__ -#warning "The DOCBparser module has been deprecated in libxml2-2.6.0" -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Most of the back-end structures from XML and SGML are shared. - */ -typedef xmlParserCtxt docbParserCtxt; -typedef xmlParserCtxtPtr docbParserCtxtPtr; -typedef xmlSAXHandler docbSAXHandler; -typedef xmlSAXHandlerPtr docbSAXHandlerPtr; -typedef xmlParserInput docbParserInput; -typedef xmlParserInputPtr docbParserInputPtr; -typedef xmlDocPtr docbDocPtr; - -/* - * There is only few public functions. - */ -XMLPUBFUN int XMLCALL - docbEncodeEntities(unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen, int quoteChar); - -XMLPUBFUN docbDocPtr XMLCALL - docbSAXParseDoc (xmlChar *cur, - const char *encoding, - docbSAXHandlerPtr sax, - void *userData); -XMLPUBFUN docbDocPtr XMLCALL - docbParseDoc (xmlChar *cur, - const char *encoding); -XMLPUBFUN docbDocPtr XMLCALL - docbSAXParseFile (const char *filename, - const char *encoding, - docbSAXHandlerPtr sax, - void *userData); -XMLPUBFUN docbDocPtr XMLCALL - docbParseFile (const char *filename, - const char *encoding); - -/** - * Interfaces for the Push mode. - */ -XMLPUBFUN void XMLCALL - docbFreeParserCtxt (docbParserCtxtPtr ctxt); -XMLPUBFUN docbParserCtxtPtr XMLCALL - docbCreatePushParserCtxt(docbSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - docbParseChunk (docbParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -XMLPUBFUN docbParserCtxtPtr XMLCALL - docbCreateFileParserCtxt(const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - docbParseDocument (docbParserCtxtPtr ctxt); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_DOCB_ENABLED */ - -#endif /* __DOCB_PARSER_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/HTMLparser.h b/sdk/Windows/2019.2/include/libxml2/libxml/HTMLparser.h deleted file mode 100755 index 0ff8325..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/HTMLparser.h +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Summary: interface for an HTML 4.0 non-verifying parser - * Description: this module implements an HTML 4.0 non-verifying parser - * with API compatible with the XML parser ones. It should - * be able to parse "real world" HTML, even if severely - * broken from a specification point of view. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __HTML_PARSER_H__ -#define __HTML_PARSER_H__ -#include -#include - -#ifdef LIBXML_HTML_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Most of the back-end structures from XML and HTML are shared. - */ -typedef xmlParserCtxt htmlParserCtxt; -typedef xmlParserCtxtPtr htmlParserCtxtPtr; -typedef xmlParserNodeInfo htmlParserNodeInfo; -typedef xmlSAXHandler htmlSAXHandler; -typedef xmlSAXHandlerPtr htmlSAXHandlerPtr; -typedef xmlParserInput htmlParserInput; -typedef xmlParserInputPtr htmlParserInputPtr; -typedef xmlDocPtr htmlDocPtr; -typedef xmlNodePtr htmlNodePtr; - -/* - * Internal description of an HTML element, representing HTML 4.01 - * and XHTML 1.0 (which share the same structure). - */ -typedef struct _htmlElemDesc htmlElemDesc; -typedef htmlElemDesc *htmlElemDescPtr; -struct _htmlElemDesc { - const char *name; /* The tag name */ - char startTag; /* Whether the start tag can be implied */ - char endTag; /* Whether the end tag can be implied */ - char saveEndTag; /* Whether the end tag should be saved */ - char empty; /* Is this an empty element ? */ - char depr; /* Is this a deprecated element ? */ - char dtd; /* 1: only in Loose DTD, 2: only Frameset one */ - char isinline; /* is this a block 0 or inline 1 element */ - const char *desc; /* the description */ - -/* NRK Jan.2003 - * New fields encapsulating HTML structure - * - * Bugs: - * This is a very limited representation. It fails to tell us when - * an element *requires* subelements (we only have whether they're - * allowed or not), and it doesn't tell us where CDATA and PCDATA - * are allowed. Some element relationships are not fully represented: - * these are flagged with the word MODIFIER - */ - const char** subelts; /* allowed sub-elements of this element */ - const char* defaultsubelt; /* subelement for suggested auto-repair - if necessary or NULL */ - const char** attrs_opt; /* Optional Attributes */ - const char** attrs_depr; /* Additional deprecated attributes */ - const char** attrs_req; /* Required attributes */ -}; - -/* - * Internal description of an HTML entity. - */ -typedef struct _htmlEntityDesc htmlEntityDesc; -typedef htmlEntityDesc *htmlEntityDescPtr; -struct _htmlEntityDesc { - unsigned int value; /* the UNICODE value for the character */ - const char *name; /* The entity name */ - const char *desc; /* the description */ -}; - -/* - * There is only few public functions. - */ -XMLPUBFUN const htmlElemDesc * XMLCALL - htmlTagLookup (const xmlChar *tag); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlEntityLookup(const xmlChar *name); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlEntityValueLookup(unsigned int value); - -XMLPUBFUN int XMLCALL - htmlIsAutoClosed(htmlDocPtr doc, - htmlNodePtr elem); -XMLPUBFUN int XMLCALL - htmlAutoCloseTag(htmlDocPtr doc, - const xmlChar *name, - htmlNodePtr elem); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlParseEntityRef(htmlParserCtxtPtr ctxt, - const xmlChar **str); -XMLPUBFUN int XMLCALL - htmlParseCharRef(htmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - htmlParseElement(htmlParserCtxtPtr ctxt); - -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlNewParserCtxt(void); - -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlCreateMemoryParserCtxt(const char *buffer, - int size); - -XMLPUBFUN int XMLCALL - htmlParseDocument(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlDocPtr XMLCALL - htmlSAXParseDoc (const xmlChar *cur, - const char *encoding, - htmlSAXHandlerPtr sax, - void *userData); -XMLPUBFUN htmlDocPtr XMLCALL - htmlParseDoc (const xmlChar *cur, - const char *encoding); -XMLPUBFUN htmlDocPtr XMLCALL - htmlSAXParseFile(const char *filename, - const char *encoding, - htmlSAXHandlerPtr sax, - void *userData); -XMLPUBFUN htmlDocPtr XMLCALL - htmlParseFile (const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - UTF8ToHtml (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -XMLPUBFUN int XMLCALL - htmlEncodeEntities(unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen, int quoteChar); -XMLPUBFUN int XMLCALL - htmlIsScriptAttribute(const xmlChar *name); -XMLPUBFUN int XMLCALL - htmlHandleOmittedElem(int val); - -#ifdef LIBXML_PUSH_ENABLED -/** - * Interfaces for the Push mode. - */ -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - htmlParseChunk (htmlParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -#endif /* LIBXML_PUSH_ENABLED */ - -XMLPUBFUN void XMLCALL - htmlFreeParserCtxt (htmlParserCtxtPtr ctxt); - -/* - * New set of simpler/more flexible APIs - */ -/** - * xmlParserOption: - * - * This is the set of XML parser options that can be passed down - * to the xmlReadDoc() and similar calls. - */ -typedef enum { - HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ - HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */ - HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ - HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ - HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ - HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ - HTML_PARSE_NONET = 1<<11,/* Forbid network access */ - HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */ - HTML_PARSE_COMPACT = 1<<16,/* compact small text nodes */ - HTML_PARSE_IGNORE_ENC=1<<21 /* ignore internal document encoding hint */ -} htmlParserOption; - -XMLPUBFUN void XMLCALL - htmlCtxtReset (htmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - htmlCtxtUseOptions (htmlParserCtxtPtr ctxt, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadDoc (const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadFile (const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadDoc (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadFile (xmlParserCtxtPtr ctxt, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadMemory (xmlParserCtxtPtr ctxt, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadFd (xmlParserCtxtPtr ctxt, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadIO (xmlParserCtxtPtr ctxt, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -/* NRK/Jan2003: further knowledge of HTML structure - */ -typedef enum { - HTML_NA = 0 , /* something we don't check at all */ - HTML_INVALID = 0x1 , - HTML_DEPRECATED = 0x2 , - HTML_VALID = 0x4 , - HTML_REQUIRED = 0xc /* VALID bit set so ( & HTML_VALID ) is TRUE */ -} htmlStatus ; - -/* Using htmlElemDesc rather than name here, to emphasise the fact - that otherwise there's a lookup overhead -*/ -XMLPUBFUN htmlStatus XMLCALL htmlAttrAllowed(const htmlElemDesc*, const xmlChar*, int) ; -XMLPUBFUN int XMLCALL htmlElementAllowedHere(const htmlElemDesc*, const xmlChar*) ; -XMLPUBFUN htmlStatus XMLCALL htmlElementStatusHere(const htmlElemDesc*, const htmlElemDesc*) ; -XMLPUBFUN htmlStatus XMLCALL htmlNodeStatus(const htmlNodePtr, int) ; -/** - * htmlDefaultSubelement: - * @elt: HTML element - * - * Returns the default subelement for this element - */ -#define htmlDefaultSubelement(elt) elt->defaultsubelt -/** - * htmlElementAllowedHereDesc: - * @parent: HTML parent element - * @elt: HTML element - * - * Checks whether an HTML element description may be a - * direct child of the specified element. - * - * Returns 1 if allowed; 0 otherwise. - */ -#define htmlElementAllowedHereDesc(parent,elt) \ - htmlElementAllowedHere((parent), (elt)->name) -/** - * htmlRequiredAttrs: - * @elt: HTML element - * - * Returns the attributes required for the specified element. - */ -#define htmlRequiredAttrs(elt) (elt)->attrs_req - - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTML_ENABLED */ -#endif /* __HTML_PARSER_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/HTMLtree.h b/sdk/Windows/2019.2/include/libxml2/libxml/HTMLtree.h deleted file mode 100755 index 33730cf..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/HTMLtree.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Summary: specific APIs to process HTML tree, especially serialization - * Description: this module implements a few function needed to process - * tree in an HTML specific way. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __HTML_TREE_H__ -#define __HTML_TREE_H__ - -#include -#include -#include -#include - -#ifdef LIBXML_HTML_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - - -/** - * HTML_TEXT_NODE: - * - * Macro. A text node in a HTML document is really implemented - * the same way as a text node in an XML document. - */ -#define HTML_TEXT_NODE XML_TEXT_NODE -/** - * HTML_ENTITY_REF_NODE: - * - * Macro. An entity reference in a HTML document is really implemented - * the same way as an entity reference in an XML document. - */ -#define HTML_ENTITY_REF_NODE XML_ENTITY_REF_NODE -/** - * HTML_COMMENT_NODE: - * - * Macro. A comment in a HTML document is really implemented - * the same way as a comment in an XML document. - */ -#define HTML_COMMENT_NODE XML_COMMENT_NODE -/** - * HTML_PRESERVE_NODE: - * - * Macro. A preserved node in a HTML document is really implemented - * the same way as a CDATA section in an XML document. - */ -#define HTML_PRESERVE_NODE XML_CDATA_SECTION_NODE -/** - * HTML_PI_NODE: - * - * Macro. A processing instruction in a HTML document is really implemented - * the same way as a processing instruction in an XML document. - */ -#define HTML_PI_NODE XML_PI_NODE - -XMLPUBFUN htmlDocPtr XMLCALL - htmlNewDoc (const xmlChar *URI, - const xmlChar *ExternalID); -XMLPUBFUN htmlDocPtr XMLCALL - htmlNewDocNoDtD (const xmlChar *URI, - const xmlChar *ExternalID); -XMLPUBFUN const xmlChar * XMLCALL - htmlGetMetaEncoding (htmlDocPtr doc); -XMLPUBFUN int XMLCALL - htmlSetMetaEncoding (htmlDocPtr doc, - const xmlChar *encoding); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - htmlDocDumpMemory (xmlDocPtr cur, - xmlChar **mem, - int *size); -XMLPUBFUN void XMLCALL - htmlDocDumpMemoryFormat (xmlDocPtr cur, - xmlChar **mem, - int *size, - int format); -XMLPUBFUN int XMLCALL - htmlDocDump (FILE *f, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - htmlSaveFile (const char *filename, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - htmlNodeDump (xmlBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN void XMLCALL - htmlNodeDumpFile (FILE *out, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN int XMLCALL - htmlNodeDumpFileFormat (FILE *out, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding, - int format); -XMLPUBFUN int XMLCALL - htmlSaveFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN int XMLCALL - htmlSaveFileFormat (const char *filename, - xmlDocPtr cur, - const char *encoding, - int format); - -XMLPUBFUN void XMLCALL - htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - htmlDocContentDumpOutput(xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN void XMLCALL - htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - htmlNodeDumpOutput (xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding); - -#endif /* LIBXML_OUTPUT_ENABLED */ - -XMLPUBFUN int XMLCALL - htmlIsBooleanAttr (const xmlChar *name); - - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTML_ENABLED */ - -#endif /* __HTML_TREE_H__ */ - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/SAX.h b/sdk/Windows/2019.2/include/libxml2/libxml/SAX.h deleted file mode 100755 index 7cb6720..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/SAX.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Summary: Old SAX version 1 handler, deprecated - * Description: DEPRECATED set of SAX version 1 interfaces used to - * build the DOM tree. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SAX_H__ -#define __XML_SAX_H__ - -#include -#include -#include -#include -#include - -#ifdef LIBXML_LEGACY_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN const xmlChar * XMLCALL - getPublicId (void *ctx); -XMLPUBFUN const xmlChar * XMLCALL - getSystemId (void *ctx); -XMLPUBFUN void XMLCALL - setDocumentLocator (void *ctx, - xmlSAXLocatorPtr loc); - -XMLPUBFUN int XMLCALL - getLineNumber (void *ctx); -XMLPUBFUN int XMLCALL - getColumnNumber (void *ctx); - -XMLPUBFUN int XMLCALL - isStandalone (void *ctx); -XMLPUBFUN int XMLCALL - hasInternalSubset (void *ctx); -XMLPUBFUN int XMLCALL - hasExternalSubset (void *ctx); - -XMLPUBFUN void XMLCALL - internalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN void XMLCALL - externalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlEntityPtr XMLCALL - getEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - getParameterEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlParserInputPtr XMLCALL - resolveEntity (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); - -XMLPUBFUN void XMLCALL - entityDecl (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -XMLPUBFUN void XMLCALL - attributeDecl (void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -XMLPUBFUN void XMLCALL - elementDecl (void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - notationDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -XMLPUBFUN void XMLCALL - unparsedEntityDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); - -XMLPUBFUN void XMLCALL - startDocument (void *ctx); -XMLPUBFUN void XMLCALL - endDocument (void *ctx); -XMLPUBFUN void XMLCALL - attribute (void *ctx, - const xmlChar *fullname, - const xmlChar *value); -XMLPUBFUN void XMLCALL - startElement (void *ctx, - const xmlChar *fullname, - const xmlChar **atts); -XMLPUBFUN void XMLCALL - endElement (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - reference (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - characters (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - ignorableWhitespace (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - processingInstruction (void *ctx, - const xmlChar *target, - const xmlChar *data); -XMLPUBFUN void XMLCALL - globalNamespace (void *ctx, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - setNamespace (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlNsPtr XMLCALL - getNamespace (void *ctx); -XMLPUBFUN int XMLCALL - checkNamespace (void *ctx, - xmlChar *nameSpace); -XMLPUBFUN void XMLCALL - namespaceDecl (void *ctx, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - comment (void *ctx, - const xmlChar *value); -XMLPUBFUN void XMLCALL - cdataBlock (void *ctx, - const xmlChar *value, - int len); - -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN void XMLCALL - initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr, - int warning); -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN void XMLCALL - inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr); -#endif -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN void XMLCALL - initdocbDefaultSAXHandler (xmlSAXHandlerV1 *hdlr); -#endif -#endif /* LIBXML_SAX1_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_LEGACY_ENABLED */ - -#endif /* __XML_SAX_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/SAX2.h b/sdk/Windows/2019.2/include/libxml2/libxml/SAX2.h deleted file mode 100755 index 152ca0d..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/SAX2.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Summary: SAX2 parser interface used to build the DOM tree - * Description: those are the default SAX2 interfaces used by - * the library when building DOM tree. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SAX2_H__ -#define __XML_SAX2_H__ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN const xmlChar * XMLCALL - xmlSAX2GetPublicId (void *ctx); -XMLPUBFUN const xmlChar * XMLCALL - xmlSAX2GetSystemId (void *ctx); -XMLPUBFUN void XMLCALL - xmlSAX2SetDocumentLocator (void *ctx, - xmlSAXLocatorPtr loc); - -XMLPUBFUN int XMLCALL - xmlSAX2GetLineNumber (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2GetColumnNumber (void *ctx); - -XMLPUBFUN int XMLCALL - xmlSAX2IsStandalone (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2HasInternalSubset (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2HasExternalSubset (void *ctx); - -XMLPUBFUN void XMLCALL - xmlSAX2InternalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN void XMLCALL - xmlSAX2ExternalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlSAX2GetEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlSAX2GetParameterEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlSAX2ResolveEntity (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); - -XMLPUBFUN void XMLCALL - xmlSAX2EntityDecl (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -XMLPUBFUN void XMLCALL - xmlSAX2AttributeDecl (void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -XMLPUBFUN void XMLCALL - xmlSAX2ElementDecl (void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlSAX2NotationDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -XMLPUBFUN void XMLCALL - xmlSAX2UnparsedEntityDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); - -XMLPUBFUN void XMLCALL - xmlSAX2StartDocument (void *ctx); -XMLPUBFUN void XMLCALL - xmlSAX2EndDocument (void *ctx); -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || \ - defined(LIBXML_LEGACY_ENABLED) -XMLPUBFUN void XMLCALL - xmlSAX2StartElement (void *ctx, - const xmlChar *fullname, - const xmlChar **atts); -XMLPUBFUN void XMLCALL - xmlSAX2EndElement (void *ctx, - const xmlChar *name); -#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED or LIBXML_LEGACY_ENABLED */ -XMLPUBFUN void XMLCALL - xmlSAX2StartElementNs (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI, - int nb_namespaces, - const xmlChar **namespaces, - int nb_attributes, - int nb_defaulted, - const xmlChar **attributes); -XMLPUBFUN void XMLCALL - xmlSAX2EndElementNs (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI); -XMLPUBFUN void XMLCALL - xmlSAX2Reference (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlSAX2Characters (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - xmlSAX2IgnorableWhitespace (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - xmlSAX2ProcessingInstruction (void *ctx, - const xmlChar *target, - const xmlChar *data); -XMLPUBFUN void XMLCALL - xmlSAX2Comment (void *ctx, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlSAX2CDataBlock (void *ctx, - const xmlChar *value, - int len); - -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlSAXDefaultVersion (int version); -#endif /* LIBXML_SAX1_ENABLED */ - -XMLPUBFUN int XMLCALL - xmlSAXVersion (xmlSAXHandler *hdlr, - int version); -XMLPUBFUN void XMLCALL - xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr, - int warning); -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN void XMLCALL - xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr); -XMLPUBFUN void XMLCALL - htmlDefaultSAXHandlerInit (void); -#endif -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN void XMLCALL - xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr); -XMLPUBFUN void XMLCALL - docbDefaultSAXHandlerInit (void); -#endif -XMLPUBFUN void XMLCALL - xmlDefaultSAXHandlerInit (void); -#ifdef __cplusplus -} -#endif -#endif /* __XML_SAX2_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/c14n.h b/sdk/Windows/2019.2/include/libxml2/libxml/c14n.h deleted file mode 100755 index 2552d64..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/c14n.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Summary: Provide Canonical XML and Exclusive XML Canonicalization - * Description: the c14n modules provides a - * - * "Canonical XML" implementation - * http://www.w3.org/TR/xml-c14n - * - * and an - * - * "Exclusive XML Canonicalization" implementation - * http://www.w3.org/TR/xml-exc-c14n - - * Copy: See Copyright for the status of this software. - * - * Author: Aleksey Sanin - */ -#ifndef __XML_C14N_H__ -#define __XML_C14N_H__ -#ifdef LIBXML_C14N_ENABLED -#ifdef LIBXML_OUTPUT_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include -#include -#include - -/* - * XML Canonicazation - * http://www.w3.org/TR/xml-c14n - * - * Exclusive XML Canonicazation - * http://www.w3.org/TR/xml-exc-c14n - * - * Canonical form of an XML document could be created if and only if - * a) default attributes (if any) are added to all nodes - * b) all character and parsed entity references are resolved - * In order to achive this in libxml2 the document MUST be loaded with - * following global setings: - * - * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; - * xmlSubstituteEntitiesDefault(1); - * - * or corresponding parser context setting: - * xmlParserCtxtPtr ctxt; - * - * ... - * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; - * ctxt->replaceEntities = 1; - * ... - */ - -/* - * xmlC14NMode: - * - * Predefined values for C14N modes - * - */ -typedef enum { - XML_C14N_1_0 = 0, /* Origianal C14N 1.0 spec */ - XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ - XML_C14N_1_1 = 2 /* C14N 1.1 spec */ -} xmlC14NMode; - -XMLPUBFUN int XMLCALL - xmlC14NDocSaveTo (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlOutputBufferPtr buf); - -XMLPUBFUN int XMLCALL - xmlC14NDocDumpMemory (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlChar **doc_txt_ptr); - -XMLPUBFUN int XMLCALL - xmlC14NDocSave (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - const char* filename, - int compression); - - -/** - * This is the core C14N function - */ -/** - * xmlC14NIsVisibleCallback: - * @user_data: user data - * @node: the curent node - * @parent: the parent node - * - * Signature for a C14N callback on visible nodes - * - * Returns 1 if the node should be included - */ -typedef int (*xmlC14NIsVisibleCallback) (void* user_data, - xmlNodePtr node, - xmlNodePtr parent); - -XMLPUBFUN int XMLCALL - xmlC14NExecute (xmlDocPtr doc, - xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlOutputBufferPtr buf); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* LIBXML_OUTPUT_ENABLED */ -#endif /* LIBXML_C14N_ENABLED */ -#endif /* __XML_C14N_H__ */ - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/catalog.h b/sdk/Windows/2019.2/include/libxml2/libxml/catalog.h deleted file mode 100755 index 64a7428..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/catalog.h +++ /dev/null @@ -1,182 +0,0 @@ -/** - * Summary: interfaces to the Catalog handling system - * Description: the catalog module implements the support for - * XML Catalogs and SGML catalogs - * - * SGML Open Technical Resolution TR9401:1997. - * http://www.jclark.com/sp/catalog.htm - * - * XML Catalogs Working Draft 06 August 2001 - * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_CATALOG_H__ -#define __XML_CATALOG_H__ - -#include - -#include -#include -#include - -#ifdef LIBXML_CATALOG_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XML_CATALOGS_NAMESPACE: - * - * The namespace for the XML Catalogs elements. - */ -#define XML_CATALOGS_NAMESPACE \ - (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog" -/** - * XML_CATALOG_PI: - * - * The specific XML Catalog Processing Instuction name. - */ -#define XML_CATALOG_PI \ - (const xmlChar *) "oasis-xml-catalog" - -/* - * The API is voluntarily limited to general cataloging. - */ -typedef enum { - XML_CATA_PREFER_NONE = 0, - XML_CATA_PREFER_PUBLIC = 1, - XML_CATA_PREFER_SYSTEM -} xmlCatalogPrefer; - -typedef enum { - XML_CATA_ALLOW_NONE = 0, - XML_CATA_ALLOW_GLOBAL = 1, - XML_CATA_ALLOW_DOCUMENT = 2, - XML_CATA_ALLOW_ALL = 3 -} xmlCatalogAllow; - -typedef struct _xmlCatalog xmlCatalog; -typedef xmlCatalog *xmlCatalogPtr; - -/* - * Operations on a given catalog. - */ -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlNewCatalog (int sgml); -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlLoadACatalog (const char *filename); -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlLoadSGMLSuperCatalog (const char *filename); -XMLPUBFUN int XMLCALL - xmlConvertSGMLCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL - xmlACatalogAdd (xmlCatalogPtr catal, - const xmlChar *type, - const xmlChar *orig, - const xmlChar *replace); -XMLPUBFUN int XMLCALL - xmlACatalogRemove (xmlCatalogPtr catal, - const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolve (xmlCatalogPtr catal, - const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolveSystem(xmlCatalogPtr catal, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolvePublic(xmlCatalogPtr catal, - const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolveURI (xmlCatalogPtr catal, - const xmlChar *URI); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlACatalogDump (xmlCatalogPtr catal, - FILE *out); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL - xmlCatalogIsEmpty (xmlCatalogPtr catal); - -/* - * Global operations. - */ -XMLPUBFUN void XMLCALL - xmlInitializeCatalog (void); -XMLPUBFUN int XMLCALL - xmlLoadCatalog (const char *filename); -XMLPUBFUN void XMLCALL - xmlLoadCatalogs (const char *paths); -XMLPUBFUN void XMLCALL - xmlCatalogCleanup (void); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlCatalogDump (FILE *out); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolve (const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolveSystem (const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolvePublic (const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolveURI (const xmlChar *URI); -XMLPUBFUN int XMLCALL - xmlCatalogAdd (const xmlChar *type, - const xmlChar *orig, - const xmlChar *replace); -XMLPUBFUN int XMLCALL - xmlCatalogRemove (const xmlChar *value); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseCatalogFile (const char *filename); -XMLPUBFUN int XMLCALL - xmlCatalogConvert (void); - -/* - * Strictly minimal interfaces for per-document catalogs used - * by the parser. - */ -XMLPUBFUN void XMLCALL - xmlCatalogFreeLocal (void *catalogs); -XMLPUBFUN void * XMLCALL - xmlCatalogAddLocal (void *catalogs, - const xmlChar *URL); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogLocalResolve (void *catalogs, - const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogLocalResolveURI(void *catalogs, - const xmlChar *URI); -/* - * Preference settings. - */ -XMLPUBFUN int XMLCALL - xmlCatalogSetDebug (int level); -XMLPUBFUN xmlCatalogPrefer XMLCALL - xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer); -XMLPUBFUN void XMLCALL - xmlCatalogSetDefaults (xmlCatalogAllow allow); -XMLPUBFUN xmlCatalogAllow XMLCALL - xmlCatalogGetDefaults (void); - - -/* DEPRECATED interfaces */ -XMLPUBFUN const xmlChar * XMLCALL - xmlCatalogGetSystem (const xmlChar *sysID); -XMLPUBFUN const xmlChar * XMLCALL - xmlCatalogGetPublic (const xmlChar *pubID); - -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_CATALOG_ENABLED */ -#endif /* __XML_CATALOG_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/chvalid.h b/sdk/Windows/2019.2/include/libxml2/libxml/chvalid.h deleted file mode 100755 index 88c501e..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/chvalid.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Summary: Unicode character range checking - * Description: this module exports interfaces for the character - * range validation APIs - * - * This file is automatically generated from the cvs source - * definition files using the genChRanges.py Python script - * - * Generation date: Mon Mar 27 11:09:48 2006 - * Sources: chvalid.def - * Author: William Brack - */ - -#ifndef __XML_CHVALID_H__ -#define __XML_CHVALID_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Define our typedefs and structures - * - */ -typedef struct _xmlChSRange xmlChSRange; -typedef xmlChSRange *xmlChSRangePtr; -struct _xmlChSRange { - unsigned short low; - unsigned short high; -}; - -typedef struct _xmlChLRange xmlChLRange; -typedef xmlChLRange *xmlChLRangePtr; -struct _xmlChLRange { - unsigned int low; - unsigned int high; -}; - -typedef struct _xmlChRangeGroup xmlChRangeGroup; -typedef xmlChRangeGroup *xmlChRangeGroupPtr; -struct _xmlChRangeGroup { - int nbShortRange; - int nbLongRange; - const xmlChSRange *shortRange; /* points to an array of ranges */ - const xmlChLRange *longRange; -}; - -/** - * Range checking routine - */ -XMLPUBFUN int XMLCALL - xmlCharInRange(unsigned int val, const xmlChRangeGroup *group); - - -/** - * xmlIsBaseChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBaseChar_ch(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ - ((0x61 <= (c)) && ((c) <= 0x7a)) || \ - ((0xc0 <= (c)) && ((c) <= 0xd6)) || \ - ((0xd8 <= (c)) && ((c) <= 0xf6)) || \ - (0xf8 <= (c))) - -/** - * xmlIsBaseCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBaseCharQ(c) (((c) < 0x100) ? \ - xmlIsBaseChar_ch((c)) : \ - xmlCharInRange((c), &xmlIsBaseCharGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup; - -/** - * xmlIsBlank_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBlank_ch(c) (((c) == 0x20) || \ - ((0x9 <= (c)) && ((c) <= 0xa)) || \ - ((c) == 0xd)) - -/** - * xmlIsBlankQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBlankQ(c) (((c) < 0x100) ? \ - xmlIsBlank_ch((c)) : 0) - - -/** - * xmlIsChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsChar_ch(c) (((0x9 <= (c)) && ((c) <= 0xa)) || \ - ((c) == 0xd) || \ - (0x20 <= (c))) - -/** - * xmlIsCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsCharQ(c) (((c) < 0x100) ? \ - xmlIsChar_ch((c)) :\ - (((0x100 <= (c)) && ((c) <= 0xd7ff)) || \ - ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \ - ((0x10000 <= (c)) && ((c) <= 0x10ffff)))) - -XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup; - -/** - * xmlIsCombiningQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsCombiningQ(c) (((c) < 0x100) ? \ - 0 : \ - xmlCharInRange((c), &xmlIsCombiningGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup; - -/** - * xmlIsDigit_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsDigit_ch(c) (((0x30 <= (c)) && ((c) <= 0x39))) - -/** - * xmlIsDigitQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsDigitQ(c) (((c) < 0x100) ? \ - xmlIsDigit_ch((c)) : \ - xmlCharInRange((c), &xmlIsDigitGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup; - -/** - * xmlIsExtender_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsExtender_ch(c) (((c) == 0xb7)) - -/** - * xmlIsExtenderQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsExtenderQ(c) (((c) < 0x100) ? \ - xmlIsExtender_ch((c)) : \ - xmlCharInRange((c), &xmlIsExtenderGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup; - -/** - * xmlIsIdeographicQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsIdeographicQ(c) (((c) < 0x100) ? \ - 0 :\ - (((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \ - ((c) == 0x3007) || \ - ((0x3021 <= (c)) && ((c) <= 0x3029)))) - -XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup; -XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256]; - -/** - * xmlIsPubidChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsPubidChar_ch(c) (xmlIsPubidChar_tab[(c)]) - -/** - * xmlIsPubidCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsPubidCharQ(c) (((c) < 0x100) ? \ - xmlIsPubidChar_ch((c)) : 0) - -XMLPUBFUN int XMLCALL - xmlIsBaseChar(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsBlank(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsChar(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsCombining(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsDigit(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsExtender(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsIdeographic(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsPubidChar(unsigned int ch); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_CHVALID_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/debugXML.h b/sdk/Windows/2019.2/include/libxml2/libxml/debugXML.h deleted file mode 100755 index 409247e..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/debugXML.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Summary: Tree debugging APIs - * Description: Interfaces to a set of routines used for debugging the tree - * produced by the XML parser. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __DEBUG_XML__ -#define __DEBUG_XML__ -#include -#include -#include - -#ifdef LIBXML_DEBUG_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The standard Dump routines. - */ -XMLPUBFUN void XMLCALL - xmlDebugDumpString (FILE *output, - const xmlChar *str); -XMLPUBFUN void XMLCALL - xmlDebugDumpAttr (FILE *output, - xmlAttrPtr attr, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpAttrList (FILE *output, - xmlAttrPtr attr, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpOneNode (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpNode (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpNodeList (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpDocumentHead(FILE *output, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlDebugDumpDocument (FILE *output, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlDebugDumpDTD (FILE *output, - xmlDtdPtr dtd); -XMLPUBFUN void XMLCALL - xmlDebugDumpEntities (FILE *output, - xmlDocPtr doc); - -/**************************************************************** - * * - * Checking routines * - * * - ****************************************************************/ - -XMLPUBFUN int XMLCALL - xmlDebugCheckDocument (FILE * output, - xmlDocPtr doc); - -/**************************************************************** - * * - * XML shell helpers * - * * - ****************************************************************/ - -XMLPUBFUN void XMLCALL - xmlLsOneNode (FILE *output, xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlLsCountNode (xmlNodePtr node); - -XMLPUBFUN const char * XMLCALL - xmlBoolToText (int boolval); - -/**************************************************************** - * * - * The XML shell related structures and functions * - * * - ****************************************************************/ - -#ifdef LIBXML_XPATH_ENABLED -/** - * xmlShellReadlineFunc: - * @prompt: a string prompt - * - * This is a generic signature for the XML shell input function. - * - * Returns a string which will be freed by the Shell. - */ -typedef char * (* xmlShellReadlineFunc)(char *prompt); - -/** - * xmlShellCtxt: - * - * A debugging shell context. - * TODO: add the defined function tables. - */ -typedef struct _xmlShellCtxt xmlShellCtxt; -typedef xmlShellCtxt *xmlShellCtxtPtr; -struct _xmlShellCtxt { - char *filename; - xmlDocPtr doc; - xmlNodePtr node; - xmlXPathContextPtr pctxt; - int loaded; - FILE *output; - xmlShellReadlineFunc input; -}; - -/** - * xmlShellCmd: - * @ctxt: a shell context - * @arg: a string argument - * @node: a first node - * @node2: a second node - * - * This is a generic signature for the XML shell functions. - * - * Returns an int, negative returns indicating errors. - */ -typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); - -XMLPUBFUN void XMLCALL - xmlShellPrintXPathError (int errorType, - const char *arg); -XMLPUBFUN void XMLCALL - xmlShellPrintXPathResult(xmlXPathObjectPtr list); -XMLPUBFUN int XMLCALL - xmlShellList (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellBase (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellDir (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellLoad (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlShellPrintNode (xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlShellCat (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellWrite (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellSave (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -#endif /* LIBXML_OUTPUT_ENABLED */ -#ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL - xmlShellValidate (xmlShellCtxtPtr ctxt, - char *dtd, - xmlNodePtr node, - xmlNodePtr node2); -#endif /* LIBXML_VALID_ENABLED */ -XMLPUBFUN int XMLCALL - xmlShellDu (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr tree, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellPwd (xmlShellCtxtPtr ctxt, - char *buffer, - xmlNodePtr node, - xmlNodePtr node2); - -/* - * The Shell interface. - */ -XMLPUBFUN void XMLCALL - xmlShell (xmlDocPtr doc, - char *filename, - xmlShellReadlineFunc input, - FILE *output); - -#endif /* LIBXML_XPATH_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_DEBUG_ENABLED */ -#endif /* __DEBUG_XML__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/dict.h b/sdk/Windows/2019.2/include/libxml2/libxml/dict.h deleted file mode 100755 index 44b532e..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/dict.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Summary: string dictionary - * Description: dictionary of reusable strings, just used to avoid allocation - * and freeing operations. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_DICT_H__ -#define __XML_DICT_H__ - -#ifdef __cplusplus -#define __XML_EXTERNC extern "C" -#else -#define __XML_EXTERNC -#endif - -/* - * The dictionary. - */ -__XML_EXTERNC typedef struct _xmlDict xmlDict; -__XML_EXTERNC typedef xmlDict *xmlDictPtr; - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Initializer - */ -XMLPUBFUN int XMLCALL xmlInitializeDict(void); - -/* - * Constructor and destructor. - */ -XMLPUBFUN xmlDictPtr XMLCALL - xmlDictCreate (void); -XMLPUBFUN size_t XMLCALL - xmlDictSetLimit (xmlDictPtr dict, - size_t limit); -XMLPUBFUN size_t XMLCALL - xmlDictGetUsage (xmlDictPtr dict); -XMLPUBFUN xmlDictPtr XMLCALL - xmlDictCreateSub(xmlDictPtr sub); -XMLPUBFUN int XMLCALL - xmlDictReference(xmlDictPtr dict); -XMLPUBFUN void XMLCALL - xmlDictFree (xmlDictPtr dict); - -/* - * Lookup of entry in the dictionary. - */ -XMLPUBFUN const xmlChar * XMLCALL - xmlDictLookup (xmlDictPtr dict, - const xmlChar *name, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlDictExists (xmlDictPtr dict, - const xmlChar *name, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlDictQLookup (xmlDictPtr dict, - const xmlChar *prefix, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlDictOwns (xmlDictPtr dict, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlDictSize (xmlDictPtr dict); - -/* - * Cleanup function - */ -XMLPUBFUN void XMLCALL - xmlDictCleanup (void); - -#ifdef __cplusplus -} -#endif -#endif /* ! __XML_DICT_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/encoding.h b/sdk/Windows/2019.2/include/libxml2/libxml/encoding.h deleted file mode 100755 index 48b8b0d..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/encoding.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Summary: interface for the encoding conversion functions - * Description: interface for the encoding conversion functions needed for - * XML basic encoding and iconv() support. - * - * Related specs are - * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies - * [ISO-10646] UTF-8 and UTF-16 in Annexes - * [ISO-8859-1] ISO Latin-1 characters codes. - * [UNICODE] The Unicode Consortium, "The Unicode Standard -- - * Worldwide Character Encoding -- Version 1.0", Addison- - * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is - * described in Unicode Technical Report #4. - * [US-ASCII] Coded Character Set--7-bit American Standard Code for - * Information Interchange, ANSI X3.4-1986. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_CHAR_ENCODING_H__ -#define __XML_CHAR_ENCODING_H__ - -#include - -#ifdef LIBXML_ICONV_ENABLED -#include -#endif -#ifdef LIBXML_ICU_ENABLED -#include -#endif -#ifdef __cplusplus -extern "C" { -#endif - -/* - * xmlCharEncoding: - * - * Predefined values for some standard encodings. - * Libxml does not do beforehand translation on UTF8 and ISOLatinX. - * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default. - * - * Anything else would have to be translated to UTF8 before being - * given to the parser itself. The BOM for UTF16 and the encoding - * declaration are looked at and a converter is looked for at that - * point. If not found the parser stops here as asked by the XML REC. A - * converter can be registered by the user using xmlRegisterCharEncodingHandler - * but the current form doesn't allow stateful transcoding (a serious - * problem agreed !). If iconv has been found it will be used - * automatically and allow stateful transcoding, the simplest is then - * to be sure to enable iconv and to provide iconv libs for the encoding - * support needed. - * - * Note that the generic "UTF-16" is not a predefined value. Instead, only - * the specific UTF-16LE and UTF-16BE are present. - */ -typedef enum { - XML_CHAR_ENCODING_ERROR= -1, /* No char encoding detected */ - XML_CHAR_ENCODING_NONE= 0, /* No char encoding detected */ - XML_CHAR_ENCODING_UTF8= 1, /* UTF-8 */ - XML_CHAR_ENCODING_UTF16LE= 2, /* UTF-16 little endian */ - XML_CHAR_ENCODING_UTF16BE= 3, /* UTF-16 big endian */ - XML_CHAR_ENCODING_UCS4LE= 4, /* UCS-4 little endian */ - XML_CHAR_ENCODING_UCS4BE= 5, /* UCS-4 big endian */ - XML_CHAR_ENCODING_EBCDIC= 6, /* EBCDIC uh! */ - XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */ - XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */ - XML_CHAR_ENCODING_UCS2= 9, /* UCS-2 */ - XML_CHAR_ENCODING_8859_1= 10,/* ISO-8859-1 ISO Latin 1 */ - XML_CHAR_ENCODING_8859_2= 11,/* ISO-8859-2 ISO Latin 2 */ - XML_CHAR_ENCODING_8859_3= 12,/* ISO-8859-3 */ - XML_CHAR_ENCODING_8859_4= 13,/* ISO-8859-4 */ - XML_CHAR_ENCODING_8859_5= 14,/* ISO-8859-5 */ - XML_CHAR_ENCODING_8859_6= 15,/* ISO-8859-6 */ - XML_CHAR_ENCODING_8859_7= 16,/* ISO-8859-7 */ - XML_CHAR_ENCODING_8859_8= 17,/* ISO-8859-8 */ - XML_CHAR_ENCODING_8859_9= 18,/* ISO-8859-9 */ - XML_CHAR_ENCODING_2022_JP= 19,/* ISO-2022-JP */ - XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */ - XML_CHAR_ENCODING_EUC_JP= 21,/* EUC-JP */ - XML_CHAR_ENCODING_ASCII= 22 /* pure ASCII */ -} xmlCharEncoding; - -/** - * xmlCharEncodingInputFunc: - * @out: a pointer to an array of bytes to store the UTF-8 result - * @outlen: the length of @out - * @in: a pointer to an array of chars in the original encoding - * @inlen: the length of @in - * - * Take a block of chars in the original encoding and try to convert - * it to an UTF-8 block of chars out. - * - * Returns the number of bytes written, -1 if lack of space, or -2 - * if the transcoding failed. - * The value of @inlen after return is the number of octets consumed - * if the return value is positive, else unpredictiable. - * The value of @outlen after return is the number of octets consumed. - */ -typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen, - const unsigned char *in, int *inlen); - - -/** - * xmlCharEncodingOutputFunc: - * @out: a pointer to an array of bytes to store the result - * @outlen: the length of @out - * @in: a pointer to an array of UTF-8 chars - * @inlen: the length of @in - * - * Take a block of UTF-8 chars in and try to convert it to another - * encoding. - * Note: a first call designed to produce heading info is called with - * in = NULL. If stateful this should also initialize the encoder state. - * - * Returns the number of bytes written, -1 if lack of space, or -2 - * if the transcoding failed. - * The value of @inlen after return is the number of octets consumed - * if the return value is positive, else unpredictiable. - * The value of @outlen after return is the number of octets produced. - */ -typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen, - const unsigned char *in, int *inlen); - - -/* - * Block defining the handlers for non UTF-8 encodings. - * If iconv is supported, there are two extra fields. - */ -#ifdef LIBXML_ICU_ENABLED -/* Size of pivot buffer, same as icu/source/common/ucnv.cpp CHUNK_SIZE */ -#define ICU_PIVOT_BUF_SIZE 1024 -struct _uconv_t { - UConverter *uconv; /* for conversion between an encoding and UTF-16 */ - UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */ - UChar pivot_buf[ICU_PIVOT_BUF_SIZE]; - UChar *pivot_source; - UChar *pivot_target; -}; -typedef struct _uconv_t uconv_t; -#endif - -typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler; -typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr; -struct _xmlCharEncodingHandler { - char *name; - xmlCharEncodingInputFunc input; - xmlCharEncodingOutputFunc output; -#ifdef LIBXML_ICONV_ENABLED - iconv_t iconv_in; - iconv_t iconv_out; -#endif /* LIBXML_ICONV_ENABLED */ -#ifdef LIBXML_ICU_ENABLED - uconv_t *uconv_in; - uconv_t *uconv_out; -#endif /* LIBXML_ICU_ENABLED */ -}; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Interfaces for encoding handlers. - */ -XMLPUBFUN void XMLCALL - xmlInitCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL - xmlCleanupCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL - xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlGetCharEncodingHandler (xmlCharEncoding enc); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlFindCharEncodingHandler (const char *name); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlNewCharEncodingHandler (const char *name, - xmlCharEncodingInputFunc input, - xmlCharEncodingOutputFunc output); - -/* - * Interfaces for encoding names and aliases. - */ -XMLPUBFUN int XMLCALL - xmlAddEncodingAlias (const char *name, - const char *alias); -XMLPUBFUN int XMLCALL - xmlDelEncodingAlias (const char *alias); -XMLPUBFUN const char * XMLCALL - xmlGetEncodingAlias (const char *alias); -XMLPUBFUN void XMLCALL - xmlCleanupEncodingAliases (void); -XMLPUBFUN xmlCharEncoding XMLCALL - xmlParseCharEncoding (const char *name); -XMLPUBFUN const char * XMLCALL - xmlGetCharEncodingName (xmlCharEncoding enc); - -/* - * Interfaces directly used by the parsers. - */ -XMLPUBFUN xmlCharEncoding XMLCALL - xmlDetectCharEncoding (const unsigned char *in, - int len); - -XMLPUBFUN int XMLCALL - xmlCharEncOutFunc (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); - -XMLPUBFUN int XMLCALL - xmlCharEncInFunc (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); -XMLPUBFUN int XMLCALL - xmlCharEncFirstLine (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); -XMLPUBFUN int XMLCALL - xmlCharEncCloseFunc (xmlCharEncodingHandler *handler); - -/* - * Export a few useful functions - */ -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL - UTF8Toisolat1 (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - isolat1ToUTF8 (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -#ifdef __cplusplus -} -#endif - -#endif /* __XML_CHAR_ENCODING_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/entities.h b/sdk/Windows/2019.2/include/libxml2/libxml/entities.h deleted file mode 100755 index f21d4ca..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/entities.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Summary: interface for the XML entities handling - * Description: this module provides some of the entity API needed - * for the parser and applications. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_ENTITIES_H__ -#define __XML_ENTITIES_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The different valid entity types. - */ -typedef enum { - XML_INTERNAL_GENERAL_ENTITY = 1, - XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2, - XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3, - XML_INTERNAL_PARAMETER_ENTITY = 4, - XML_EXTERNAL_PARAMETER_ENTITY = 5, - XML_INTERNAL_PREDEFINED_ENTITY = 6 -} xmlEntityType; - -/* - * An unit of storage for an entity, contains the string, the value - * and the linkind data needed for the linking in the hash table. - */ - -struct _xmlEntity { - void *_private; /* application data */ - xmlElementType type; /* XML_ENTITY_DECL, must be second ! */ - const xmlChar *name; /* Entity name */ - struct _xmlNode *children; /* First child link */ - struct _xmlNode *last; /* Last child link */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - xmlChar *orig; /* content without ref substitution */ - xmlChar *content; /* content or ndata if unparsed */ - int length; /* the content length */ - xmlEntityType etype; /* The entity type */ - const xmlChar *ExternalID; /* External identifier for PUBLIC */ - const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC Entity */ - - struct _xmlEntity *nexte; /* unused */ - const xmlChar *URI; /* the full URI as computed */ - int owner; /* does the entity own the childrens */ - int checked; /* was the entity content checked */ - /* this is also used to count entities - * references done from that entity - * and if it contains '<' */ -}; - -/* - * All entities are stored in an hash table. - * There is 2 separate hash tables for global and parameter entities. - */ - -typedef struct _xmlHashTable xmlEntitiesTable; -typedef xmlEntitiesTable *xmlEntitiesTablePtr; - -/* - * External functions: - */ - -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL - xmlInitializePredefinedEntities (void); -#endif /* LIBXML_LEGACY_ENABLED */ - -XMLPUBFUN xmlEntityPtr XMLCALL - xmlNewEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlAddDocEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlAddDtdEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetPredefinedEntity (const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDocEntity (const xmlDoc *doc, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDtdEntity (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetParameterEntity (xmlDocPtr doc, - const xmlChar *name); -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN const xmlChar * XMLCALL - xmlEncodeEntities (xmlDocPtr doc, - const xmlChar *input); -#endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeEntitiesReentrant(xmlDocPtr doc, - const xmlChar *input); -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeSpecialChars (const xmlDoc *doc, - const xmlChar *input); -XMLPUBFUN xmlEntitiesTablePtr XMLCALL - xmlCreateEntitiesTable (void); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEntitiesTablePtr XMLCALL - xmlCopyEntitiesTable (xmlEntitiesTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeEntitiesTable (xmlEntitiesTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpEntitiesTable (xmlBufferPtr buf, - xmlEntitiesTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpEntityDecl (xmlBufferPtr buf, - xmlEntityPtr ent); -#endif /* LIBXML_OUTPUT_ENABLED */ -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL - xmlCleanupPredefinedEntities(void); -#endif /* LIBXML_LEGACY_ENABLED */ - - -#ifdef __cplusplus -} -#endif - -# endif /* __XML_ENTITIES_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/globals.h b/sdk/Windows/2019.2/include/libxml2/libxml/globals.h deleted file mode 100755 index 70f5f95..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/globals.h +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Summary: interface for all global variables of the library - * Description: all the global variables and thread handling for - * those variables is handled by this module. - * - * The bottom of this file is automatically generated by build_glob.py - * based on the description file global.data - * - * Copy: See Copyright for the status of this software. - * - * Author: Gary Pennington , Daniel Veillard - */ - -#ifndef __XML_GLOBALS_H -#define __XML_GLOBALS_H - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN void XMLCALL xmlInitGlobals(void); -XMLPUBFUN void XMLCALL xmlCleanupGlobals(void); - -/** - * xmlParserInputBufferCreateFilenameFunc: - * @URI: the URI to read from - * @enc: the requested source encoding - * - * Signature for the function doing the lookup for a suitable input method - * corresponding to an URI. - * - * Returns the new xmlParserInputBufferPtr in case of success or NULL if no - * method was found. - */ -typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, - xmlCharEncoding enc); - - -/** - * xmlOutputBufferCreateFilenameFunc: - * @URI: the URI to write to - * @enc: the requested target encoding - * - * Signature for the function doing the lookup for a suitable output method - * corresponding to an URI. - * - * Returns the new xmlOutputBufferPtr in case of success or NULL if no - * method was found. - */ -typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc -XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func); -XMLPUBFUN xmlOutputBufferCreateFilenameFunc -XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func); - -/* - * Externally global symbols which need to be protected for backwards - * compatibility support. - */ - -#undef docbDefaultSAXHandler -#undef htmlDefaultSAXHandler -#undef oldXMLWDcompatibility -#undef xmlBufferAllocScheme -#undef xmlDefaultBufferSize -#undef xmlDefaultSAXHandler -#undef xmlDefaultSAXLocator -#undef xmlDoValidityCheckingDefaultValue -#undef xmlFree -#undef xmlGenericError -#undef xmlStructuredError -#undef xmlGenericErrorContext -#undef xmlStructuredErrorContext -#undef xmlGetWarningsDefaultValue -#undef xmlIndentTreeOutput -#undef xmlTreeIndentString -#undef xmlKeepBlanksDefaultValue -#undef xmlLineNumbersDefaultValue -#undef xmlLoadExtDtdDefaultValue -#undef xmlMalloc -#undef xmlMallocAtomic -#undef xmlMemStrdup -#undef xmlParserDebugEntities -#undef xmlParserVersion -#undef xmlPedanticParserDefaultValue -#undef xmlRealloc -#undef xmlSaveNoEmptyTags -#undef xmlSubstituteEntitiesDefaultValue -#undef xmlRegisterNodeDefaultValue -#undef xmlDeregisterNodeDefaultValue -#undef xmlLastError -#undef xmlParserInputBufferCreateFilenameValue -#undef xmlOutputBufferCreateFilenameValue - -/** - * xmlRegisterNodeFunc: - * @node: the current node - * - * Signature for the registration callback of a created node - */ -typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node); -/** - * xmlDeregisterNodeFunc: - * @node: the current node - * - * Signature for the deregistration callback of a discarded node - */ -typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node); - -typedef struct _xmlGlobalState xmlGlobalState; -typedef xmlGlobalState *xmlGlobalStatePtr; -struct _xmlGlobalState -{ - const char *xmlParserVersion; - - xmlSAXLocator xmlDefaultSAXLocator; - xmlSAXHandlerV1 xmlDefaultSAXHandler; - xmlSAXHandlerV1 docbDefaultSAXHandler; - xmlSAXHandlerV1 htmlDefaultSAXHandler; - - xmlFreeFunc xmlFree; - xmlMallocFunc xmlMalloc; - xmlStrdupFunc xmlMemStrdup; - xmlReallocFunc xmlRealloc; - - xmlGenericErrorFunc xmlGenericError; - xmlStructuredErrorFunc xmlStructuredError; - void *xmlGenericErrorContext; - - int oldXMLWDcompatibility; - - xmlBufferAllocationScheme xmlBufferAllocScheme; - int xmlDefaultBufferSize; - - int xmlSubstituteEntitiesDefaultValue; - int xmlDoValidityCheckingDefaultValue; - int xmlGetWarningsDefaultValue; - int xmlKeepBlanksDefaultValue; - int xmlLineNumbersDefaultValue; - int xmlLoadExtDtdDefaultValue; - int xmlParserDebugEntities; - int xmlPedanticParserDefaultValue; - - int xmlSaveNoEmptyTags; - int xmlIndentTreeOutput; - const char *xmlTreeIndentString; - - xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; - xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; - - xmlMallocFunc xmlMallocAtomic; - xmlError xmlLastError; - - xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; - xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; - - void *xmlStructuredErrorContext; -}; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN void XMLCALL xmlInitializeGlobalState(xmlGlobalStatePtr gs); - -XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler); - -XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler); - -XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func); -XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func); -XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func); -XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); - -XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL - xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func); -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL - xmlThrDefParserInputBufferCreateFilenameDefault( - xmlParserInputBufferCreateFilenameFunc func); - -/** DOC_DISABLE */ -/* - * In general the memory allocation entry points are not kept - * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED - * - xmlMalloc - * - xmlMallocAtomic - * - xmlRealloc - * - xmlMemStrdup - * - xmlFree - */ - -#ifdef LIBXML_THREAD_ALLOC_ENABLED -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMalloc(void); -#define xmlMalloc \ -(*(__xmlMalloc())) -#else -XMLPUBVAR xmlMallocFunc xmlMalloc; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMallocAtomic(void); -#define xmlMallocAtomic \ -(*(__xmlMallocAtomic())) -#else -XMLPUBVAR xmlMallocFunc xmlMallocAtomic; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlReallocFunc * XMLCALL __xmlRealloc(void); -#define xmlRealloc \ -(*(__xmlRealloc())) -#else -XMLPUBVAR xmlReallocFunc xmlRealloc; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlFreeFunc * XMLCALL __xmlFree(void); -#define xmlFree \ -(*(__xmlFree())) -#else -XMLPUBVAR xmlFreeFunc xmlFree; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlStrdupFunc * XMLCALL __xmlMemStrdup(void); -#define xmlMemStrdup \ -(*(__xmlMemStrdup())) -#else -XMLPUBVAR xmlStrdupFunc xmlMemStrdup; -#endif - -#else /* !LIBXML_THREAD_ALLOC_ENABLED */ -XMLPUBVAR xmlMallocFunc xmlMalloc; -XMLPUBVAR xmlMallocFunc xmlMallocAtomic; -XMLPUBVAR xmlReallocFunc xmlRealloc; -XMLPUBVAR xmlFreeFunc xmlFree; -XMLPUBVAR xmlStrdupFunc xmlMemStrdup; -#endif /* LIBXML_THREAD_ALLOC_ENABLED */ - -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __docbDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define docbDefaultSAXHandler \ -(*(__docbDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 docbDefaultSAXHandler; -#endif -#endif - -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define htmlDefaultSAXHandler \ -(*(__htmlDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler; -#endif -#endif - -XMLPUBFUN xmlError * XMLCALL __xmlLastError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLastError \ -(*(__xmlLastError())) -#else -XMLPUBVAR xmlError xmlLastError; -#endif - -/* - * Everything starting from the line below is - * Automatically generated by build_glob.py. - * Do not modify the previous line. - */ - - -XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void); -#ifdef LIBXML_THREAD_ENABLED -#define oldXMLWDcompatibility \ -(*(__oldXMLWDcompatibility())) -#else -XMLPUBVAR int oldXMLWDcompatibility; -#endif - -XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlBufferAllocScheme \ -(*(__xmlBufferAllocScheme())) -#else -XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme; -#endif -XMLPUBFUN xmlBufferAllocationScheme XMLCALL - xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); - -XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultBufferSize \ -(*(__xmlDefaultBufferSize())) -#else -XMLPUBVAR int xmlDefaultBufferSize; -#endif -XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v); - -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultSAXHandler \ -(*(__xmlDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler; -#endif - -XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultSAXLocator \ -(*(__xmlDefaultSAXLocator())) -#else -XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator; -#endif - -XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDoValidityCheckingDefaultValue \ -(*(__xmlDoValidityCheckingDefaultValue())) -#else -XMLPUBVAR int xmlDoValidityCheckingDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v); - -XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGenericError \ -(*(__xmlGenericError())) -#else -XMLPUBVAR xmlGenericErrorFunc xmlGenericError; -#endif - -XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlStructuredError \ -(*(__xmlStructuredError())) -#else -XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError; -#endif - -XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGenericErrorContext \ -(*(__xmlGenericErrorContext())) -#else -XMLPUBVAR void * xmlGenericErrorContext; -#endif - -XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlStructuredErrorContext \ -(*(__xmlStructuredErrorContext())) -#else -XMLPUBVAR void * xmlStructuredErrorContext; -#endif - -XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGetWarningsDefaultValue \ -(*(__xmlGetWarningsDefaultValue())) -#else -XMLPUBVAR int xmlGetWarningsDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlIndentTreeOutput \ -(*(__xmlIndentTreeOutput())) -#else -XMLPUBVAR int xmlIndentTreeOutput; -#endif -XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v); - -XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlTreeIndentString \ -(*(__xmlTreeIndentString())) -#else -XMLPUBVAR const char * xmlTreeIndentString; -#endif -XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v); - -XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlKeepBlanksDefaultValue \ -(*(__xmlKeepBlanksDefaultValue())) -#else -XMLPUBVAR int xmlKeepBlanksDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLineNumbersDefaultValue \ -(*(__xmlLineNumbersDefaultValue())) -#else -XMLPUBVAR int xmlLineNumbersDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLoadExtDtdDefaultValue \ -(*(__xmlLoadExtDtdDefaultValue())) -#else -XMLPUBVAR int xmlLoadExtDtdDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserDebugEntities \ -(*(__xmlParserDebugEntities())) -#else -XMLPUBVAR int xmlParserDebugEntities; -#endif -XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v); - -XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserVersion \ -(*(__xmlParserVersion())) -#else -XMLPUBVAR const char * xmlParserVersion; -#endif - -XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlPedanticParserDefaultValue \ -(*(__xmlPedanticParserDefaultValue())) -#else -XMLPUBVAR int xmlPedanticParserDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlSaveNoEmptyTags \ -(*(__xmlSaveNoEmptyTags())) -#else -XMLPUBVAR int xmlSaveNoEmptyTags; -#endif -XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v); - -XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlSubstituteEntitiesDefaultValue \ -(*(__xmlSubstituteEntitiesDefaultValue())) -#else -XMLPUBVAR int xmlSubstituteEntitiesDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v); - -XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlRegisterNodeDefaultValue \ -(*(__xmlRegisterNodeDefaultValue())) -#else -XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; -#endif - -XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDeregisterNodeDefaultValue \ -(*(__xmlDeregisterNodeDefaultValue())) -#else -XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; -#endif - -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \ - __xmlParserInputBufferCreateFilenameValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserInputBufferCreateFilenameValue \ -(*(__xmlParserInputBufferCreateFilenameValue())) -#else -XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; -#endif - -XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlOutputBufferCreateFilenameValue \ -(*(__xmlOutputBufferCreateFilenameValue())) -#else -XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_GLOBALS_H */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/hash.h b/sdk/Windows/2019.2/include/libxml2/libxml/hash.h deleted file mode 100755 index b272645..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/hash.h +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Summary: Chained hash tables - * Description: This module implements the hash table support used in - * various places in the library. - * - * Copy: See Copyright for the status of this software. - * - * Author: Bjorn Reese - */ - -#ifndef __XML_HASH_H__ -#define __XML_HASH_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The hash table. - */ -typedef struct _xmlHashTable xmlHashTable; -typedef xmlHashTable *xmlHashTablePtr; - -#ifdef __cplusplus -} -#endif - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Recent version of gcc produce a warning when a function pointer is assigned - * to an object pointer, or vice versa. The following macro is a dirty hack - * to allow suppression of the warning. If your architecture has function - * pointers which are a different size than a void pointer, there may be some - * serious trouble within the library. - */ -/** - * XML_CAST_FPTR: - * @fptr: pointer to a function - * - * Macro to do a casting from an object pointer to a - * function pointer without encountering a warning from - * gcc - * - * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) - * This macro violated ISO C aliasing rules (gcc4 on s390 broke) - * so it is disabled now - */ - -#define XML_CAST_FPTR(fptr) fptr - - -/* - * function types: - */ -/** - * xmlHashDeallocator: - * @payload: the data in the hash - * @name: the name associated - * - * Callback to free data from a hash. - */ -typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name); -/** - * xmlHashCopier: - * @payload: the data in the hash - * @name: the name associated - * - * Callback to copy data from a hash. - * - * Returns a copy of the data or NULL in case of error. - */ -typedef void *(*xmlHashCopier)(void *payload, xmlChar *name); -/** - * xmlHashScanner: - * @payload: the data in the hash - * @data: extra scannner data - * @name: the name associated - * - * Callback when scanning data in a hash with the simple scanner. - */ -typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name); -/** - * xmlHashScannerFull: - * @payload: the data in the hash - * @data: extra scannner data - * @name: the name associated - * @name2: the second name associated - * @name3: the third name associated - * - * Callback when scanning data in a hash with the full scanner. - */ -typedef void (*xmlHashScannerFull)(void *payload, void *data, - const xmlChar *name, const xmlChar *name2, - const xmlChar *name3); - -/* - * Constructor and destructor. - */ -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCreate (int size); -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCreateDict(int size, - xmlDictPtr dict); -XMLPUBFUN void XMLCALL - xmlHashFree (xmlHashTablePtr table, - xmlHashDeallocator f); - -/* - * Add a new entry to the hash table. - */ -XMLPUBFUN int XMLCALL - xmlHashAddEntry (xmlHashTablePtr table, - const xmlChar *name, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry(xmlHashTablePtr table, - const xmlChar *name, - void *userdata, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashAddEntry2(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry2(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - void *userdata, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashAddEntry3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - void *userdata, - xmlHashDeallocator f); - -/* - * Remove an entry from the hash table. - */ -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, - const xmlChar *name2, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, - const xmlChar *name2, const xmlChar *name3, - xmlHashDeallocator f); - -/* - * Retrieve the userdata. - */ -XMLPUBFUN void * XMLCALL - xmlHashLookup (xmlHashTablePtr table, - const xmlChar *name); -XMLPUBFUN void * XMLCALL - xmlHashLookup2 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2); -XMLPUBFUN void * XMLCALL - xmlHashLookup3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3); -XMLPUBFUN void * XMLCALL - xmlHashQLookup (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN void * XMLCALL - xmlHashQLookup2 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix, - const xmlChar *name2, - const xmlChar *prefix2); -XMLPUBFUN void * XMLCALL - xmlHashQLookup3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix, - const xmlChar *name2, - const xmlChar *prefix2, - const xmlChar *name3, - const xmlChar *prefix3); - -/* - * Helpers. - */ -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCopy (xmlHashTablePtr table, - xmlHashCopier f); -XMLPUBFUN int XMLCALL - xmlHashSize (xmlHashTablePtr table); -XMLPUBFUN void XMLCALL - xmlHashScan (xmlHashTablePtr table, - xmlHashScanner f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScan3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - xmlHashScanner f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScanFull (xmlHashTablePtr table, - xmlHashScannerFull f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScanFull3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - xmlHashScannerFull f, - void *data); -#ifdef __cplusplus -} -#endif -#endif /* ! __XML_HASH_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/list.h b/sdk/Windows/2019.2/include/libxml2/libxml/list.h deleted file mode 100755 index 60d8e50..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/list.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Summary: lists interfaces - * Description: this module implement the list support used in - * various place in the library. - * - * Copy: See Copyright for the status of this software. - * - * Author: Gary Pennington - */ - -#ifndef __XML_LINK_INCLUDE__ -#define __XML_LINK_INCLUDE__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _xmlLink xmlLink; -typedef xmlLink *xmlLinkPtr; - -typedef struct _xmlList xmlList; -typedef xmlList *xmlListPtr; - -/** - * xmlListDeallocator: - * @lk: the data to deallocate - * - * Callback function used to free data from a list. - */ -typedef void (*xmlListDeallocator) (xmlLinkPtr lk); -/** - * xmlListDataCompare: - * @data0: the first data - * @data1: the second data - * - * Callback function used to compare 2 data. - * - * Returns 0 is equality, -1 or 1 otherwise depending on the ordering. - */ -typedef int (*xmlListDataCompare) (const void *data0, const void *data1); -/** - * xmlListWalker: - * @data: the data found in the list - * @user: extra user provided data to the walker - * - * Callback function used when walking a list with xmlListWalk(). - * - * Returns 0 to stop walking the list, 1 otherwise. - */ -typedef int (*xmlListWalker) (const void *data, const void *user); - -/* Creation/Deletion */ -XMLPUBFUN xmlListPtr XMLCALL - xmlListCreate (xmlListDeallocator deallocator, - xmlListDataCompare compare); -XMLPUBFUN void XMLCALL - xmlListDelete (xmlListPtr l); - -/* Basic Operators */ -XMLPUBFUN void * XMLCALL - xmlListSearch (xmlListPtr l, - void *data); -XMLPUBFUN void * XMLCALL - xmlListReverseSearch (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListInsert (xmlListPtr l, - void *data) ; -XMLPUBFUN int XMLCALL - xmlListAppend (xmlListPtr l, - void *data) ; -XMLPUBFUN int XMLCALL - xmlListRemoveFirst (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListRemoveLast (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListRemoveAll (xmlListPtr l, - void *data); -XMLPUBFUN void XMLCALL - xmlListClear (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListEmpty (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL - xmlListFront (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL - xmlListEnd (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListSize (xmlListPtr l); - -XMLPUBFUN void XMLCALL - xmlListPopFront (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListPopBack (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListPushFront (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListPushBack (xmlListPtr l, - void *data); - -/* Advanced Operators */ -XMLPUBFUN void XMLCALL - xmlListReverse (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListSort (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListWalk (xmlListPtr l, - xmlListWalker walker, - const void *user); -XMLPUBFUN void XMLCALL - xmlListReverseWalk (xmlListPtr l, - xmlListWalker walker, - const void *user); -XMLPUBFUN void XMLCALL - xmlListMerge (xmlListPtr l1, - xmlListPtr l2); -XMLPUBFUN xmlListPtr XMLCALL - xmlListDup (const xmlListPtr old); -XMLPUBFUN int XMLCALL - xmlListCopy (xmlListPtr cur, - const xmlListPtr old); -/* Link operators */ -XMLPUBFUN void * XMLCALL - xmlLinkGetData (xmlLinkPtr lk); - -/* xmlListUnique() */ -/* xmlListSwap */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_LINK_INCLUDE__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/nanoftp.h b/sdk/Windows/2019.2/include/libxml2/libxml/nanoftp.h deleted file mode 100755 index 3346bb3..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/nanoftp.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Summary: minimal FTP implementation - * Description: minimal FTP implementation allowing to fetch resources - * like external subset. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __NANO_FTP_H__ -#define __NANO_FTP_H__ - -#include - -#ifdef LIBXML_FTP_ENABLED - -/* Needed for portability to Windows 64 bits */ -#if defined(_WIN32) && !defined(__CYGWIN__) -#include -#else -/** - * SOCKET: - * - * macro used to provide portability of code to windows sockets - */ -#define SOCKET int -/** - * INVALID_SOCKET: - * - * macro used to provide portability of code to windows sockets - * the value to be used when the socket is not valid - */ -#undef INVALID_SOCKET -#define INVALID_SOCKET (-1) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * ftpListCallback: - * @userData: user provided data for the callback - * @filename: the file name (including "->" when links are shown) - * @attrib: the attribute string - * @owner: the owner string - * @group: the group string - * @size: the file size - * @links: the link count - * @year: the year - * @month: the month - * @day: the day - * @hour: the hour - * @minute: the minute - * - * A callback for the xmlNanoFTPList command. - * Note that only one of year and day:minute are specified. - */ -typedef void (*ftpListCallback) (void *userData, - const char *filename, const char *attrib, - const char *owner, const char *group, - unsigned long size, int links, int year, - const char *month, int day, int hour, - int minute); -/** - * ftpDataCallback: - * @userData: the user provided context - * @data: the data received - * @len: its size in bytes - * - * A callback for the xmlNanoFTPGet command. - */ -typedef void (*ftpDataCallback) (void *userData, - const char *data, - int len); - -/* - * Init - */ -XMLPUBFUN void XMLCALL - xmlNanoFTPInit (void); -XMLPUBFUN void XMLCALL - xmlNanoFTPCleanup (void); - -/* - * Creating/freeing contexts. - */ -XMLPUBFUN void * XMLCALL - xmlNanoFTPNewCtxt (const char *URL); -XMLPUBFUN void XMLCALL - xmlNanoFTPFreeCtxt (void * ctx); -XMLPUBFUN void * XMLCALL - xmlNanoFTPConnectTo (const char *server, - int port); -/* - * Opening/closing session connections. - */ -XMLPUBFUN void * XMLCALL - xmlNanoFTPOpen (const char *URL); -XMLPUBFUN int XMLCALL - xmlNanoFTPConnect (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPClose (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPQuit (void *ctx); -XMLPUBFUN void XMLCALL - xmlNanoFTPScanProxy (const char *URL); -XMLPUBFUN void XMLCALL - xmlNanoFTPProxy (const char *host, - int port, - const char *user, - const char *passwd, - int type); -XMLPUBFUN int XMLCALL - xmlNanoFTPUpdateURL (void *ctx, - const char *URL); - -/* - * Rather internal commands. - */ -XMLPUBFUN int XMLCALL - xmlNanoFTPGetResponse (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPCheckResponse (void *ctx); - -/* - * CD/DIR/GET handlers. - */ -XMLPUBFUN int XMLCALL - xmlNanoFTPCwd (void *ctx, - const char *directory); -XMLPUBFUN int XMLCALL - xmlNanoFTPDele (void *ctx, - const char *file); - -XMLPUBFUN SOCKET XMLCALL - xmlNanoFTPGetConnection (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPCloseConnection(void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPList (void *ctx, - ftpListCallback callback, - void *userData, - const char *filename); -XMLPUBFUN SOCKET XMLCALL - xmlNanoFTPGetSocket (void *ctx, - const char *filename); -XMLPUBFUN int XMLCALL - xmlNanoFTPGet (void *ctx, - ftpDataCallback callback, - void *userData, - const char *filename); -XMLPUBFUN int XMLCALL - xmlNanoFTPRead (void *ctx, - void *dest, - int len); - -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_FTP_ENABLED */ -#endif /* __NANO_FTP_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/nanohttp.h b/sdk/Windows/2019.2/include/libxml2/libxml/nanohttp.h deleted file mode 100755 index e4b5914..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/nanohttp.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Summary: minimal HTTP implementation - * Description: minimal HTTP implementation allowing to fetch resources - * like external subset. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __NANO_HTTP_H__ -#define __NANO_HTTP_H__ - -#include - -#ifdef LIBXML_HTTP_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN void XMLCALL - xmlNanoHTTPInit (void); -XMLPUBFUN void XMLCALL - xmlNanoHTTPCleanup (void); -XMLPUBFUN void XMLCALL - xmlNanoHTTPScanProxy (const char *URL); -XMLPUBFUN int XMLCALL - xmlNanoHTTPFetch (const char *URL, - const char *filename, - char **contentType); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPMethod (const char *URL, - const char *method, - const char *input, - char **contentType, - const char *headers, - int ilen); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPMethodRedir (const char *URL, - const char *method, - const char *input, - char **contentType, - char **redir, - const char *headers, - int ilen); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPOpen (const char *URL, - char **contentType); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPOpenRedir (const char *URL, - char **contentType, - char **redir); -XMLPUBFUN int XMLCALL - xmlNanoHTTPReturnCode (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPAuthHeader (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPRedir (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoHTTPContentLength( void * ctx ); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPEncoding (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPMimeType (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoHTTPRead (void *ctx, - void *dest, - int len); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL - xmlNanoHTTPSave (void *ctxt, - const char *filename); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNanoHTTPClose (void *ctx); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTTP_ENABLED */ -#endif /* __NANO_HTTP_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/parser.h b/sdk/Windows/2019.2/include/libxml2/libxml/parser.h deleted file mode 100755 index cb8de6e..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/parser.h +++ /dev/null @@ -1,1241 +0,0 @@ -/* - * Summary: the core parser module - * Description: Interfaces, constants and types related to the XML parser - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PARSER_H__ -#define __XML_PARSER_H__ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XML_DEFAULT_VERSION: - * - * The default version of XML used: 1.0 - */ -#define XML_DEFAULT_VERSION "1.0" - -/** - * xmlParserInput: - * - * An xmlParserInput is an input flow for the XML processor. - * Each entity parsed is associated an xmlParserInput (except the - * few predefined ones). This is the case both for internal entities - * - in which case the flow is already completely in memory - or - * external entities - in which case we use the buf structure for - * progressive reading and I18N conversions to the internal UTF-8 format. - */ - -/** - * xmlParserInputDeallocate: - * @str: the string to deallocate - * - * Callback for freeing some parser input allocations. - */ -typedef void (* xmlParserInputDeallocate)(xmlChar *str); - -struct _xmlParserInput { - /* Input buffer */ - xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */ - - const char *filename; /* The file analyzed, if any */ - const char *directory; /* the directory/base of the file */ - const xmlChar *base; /* Base of the array to parse */ - const xmlChar *cur; /* Current char being parsed */ - const xmlChar *end; /* end of the array to parse */ - int length; /* length if known */ - int line; /* Current line */ - int col; /* Current column */ - /* - * NOTE: consumed is only tested for equality in the parser code, - * so even if there is an overflow this should not give troubles - * for parsing very large instances. - */ - unsigned long consumed; /* How many xmlChars already consumed */ - xmlParserInputDeallocate free; /* function to deallocate the base */ - const xmlChar *encoding; /* the encoding string for entity */ - const xmlChar *version; /* the version string for entity */ - int standalone; /* Was that entity marked standalone */ - int id; /* an unique identifier for the entity */ -}; - -/** - * xmlParserNodeInfo: - * - * The parser can be asked to collect Node informations, i.e. at what - * place in the file they were detected. - * NOTE: This is off by default and not very well tested. - */ -typedef struct _xmlParserNodeInfo xmlParserNodeInfo; -typedef xmlParserNodeInfo *xmlParserNodeInfoPtr; - -struct _xmlParserNodeInfo { - const struct _xmlNode* node; - /* Position & line # that text that created the node begins & ends on */ - unsigned long begin_pos; - unsigned long begin_line; - unsigned long end_pos; - unsigned long end_line; -}; - -typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq; -typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr; -struct _xmlParserNodeInfoSeq { - unsigned long maximum; - unsigned long length; - xmlParserNodeInfo* buffer; -}; - -/** - * xmlParserInputState: - * - * The parser is now working also as a state based parser. - * The recursive one use the state info for entities processing. - */ -typedef enum { - XML_PARSER_EOF = -1, /* nothing is to be parsed */ - XML_PARSER_START = 0, /* nothing has been parsed */ - XML_PARSER_MISC, /* Misc* before int subset */ - XML_PARSER_PI, /* Within a processing instruction */ - XML_PARSER_DTD, /* within some DTD content */ - XML_PARSER_PROLOG, /* Misc* after internal subset */ - XML_PARSER_COMMENT, /* within a comment */ - XML_PARSER_START_TAG, /* within a start tag */ - XML_PARSER_CONTENT, /* within the content */ - XML_PARSER_CDATA_SECTION, /* within a CDATA section */ - XML_PARSER_END_TAG, /* within a closing tag */ - XML_PARSER_ENTITY_DECL, /* within an entity declaration */ - XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */ - XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */ - XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */ - XML_PARSER_EPILOG, /* the Misc* after the last end tag */ - XML_PARSER_IGNORE, /* within an IGNORED section */ - XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */ -} xmlParserInputState; - -/** - * XML_DETECT_IDS: - * - * Bit in the loadsubset context field to tell to do ID/REFs lookups. - * Use it to initialize xmlLoadExtDtdDefaultValue. - */ -#define XML_DETECT_IDS 2 - -/** - * XML_COMPLETE_ATTRS: - * - * Bit in the loadsubset context field to tell to do complete the - * elements attributes lists with the ones defaulted from the DTDs. - * Use it to initialize xmlLoadExtDtdDefaultValue. - */ -#define XML_COMPLETE_ATTRS 4 - -/** - * XML_SKIP_IDS: - * - * Bit in the loadsubset context field to tell to not do ID/REFs registration. - * Used to initialize xmlLoadExtDtdDefaultValue in some special cases. - */ -#define XML_SKIP_IDS 8 - -/** - * xmlParserMode: - * - * A parser can operate in various modes - */ -typedef enum { - XML_PARSE_UNKNOWN = 0, - XML_PARSE_DOM = 1, - XML_PARSE_SAX = 2, - XML_PARSE_PUSH_DOM = 3, - XML_PARSE_PUSH_SAX = 4, - XML_PARSE_READER = 5 -} xmlParserMode; - -/** - * xmlParserCtxt: - * - * The parser context. - * NOTE This doesn't completely define the parser state, the (current ?) - * design of the parser uses recursive function calls since this allow - * and easy mapping from the production rules of the specification - * to the actual code. The drawback is that the actual function call - * also reflect the parser state. However most of the parsing routines - * takes as the only argument the parser context pointer, so migrating - * to a state based parser for progressive parsing shouldn't be too hard. - */ -struct _xmlParserCtxt { - struct _xmlSAXHandler *sax; /* The SAX handler */ - void *userData; /* For SAX interface only, used by DOM build */ - xmlDocPtr myDoc; /* the document being built */ - int wellFormed; /* is the document well formed */ - int replaceEntities; /* shall we replace entities ? */ - const xmlChar *version; /* the XML version string */ - const xmlChar *encoding; /* the declared encoding, if any */ - int standalone; /* standalone document */ - int html; /* an HTML(1)/Docbook(2) document - * 3 is HTML after - * 10 is HTML after - */ - - /* Input stream stack */ - xmlParserInputPtr input; /* Current input stream */ - int inputNr; /* Number of current input streams */ - int inputMax; /* Max number of input streams */ - xmlParserInputPtr *inputTab; /* stack of inputs */ - - /* Node analysis stack only used for DOM building */ - xmlNodePtr node; /* Current parsed Node */ - int nodeNr; /* Depth of the parsing stack */ - int nodeMax; /* Max depth of the parsing stack */ - xmlNodePtr *nodeTab; /* array of nodes */ - - int record_info; /* Whether node info should be kept */ - xmlParserNodeInfoSeq node_seq; /* info about each node parsed */ - - int errNo; /* error code */ - - int hasExternalSubset; /* reference and external subset */ - int hasPErefs; /* the internal subset has PE refs */ - int external; /* are we parsing an external entity */ - - int valid; /* is the document valid */ - int validate; /* shall we try to validate ? */ - xmlValidCtxt vctxt; /* The validity context */ - - xmlParserInputState instate; /* current type of input */ - int token; /* next char look-ahead */ - - char *directory; /* the data directory */ - - /* Node name stack */ - const xmlChar *name; /* Current parsed Node */ - int nameNr; /* Depth of the parsing stack */ - int nameMax; /* Max depth of the parsing stack */ - const xmlChar * *nameTab; /* array of nodes */ - - long nbChars; /* number of xmlChar processed */ - long checkIndex; /* used by progressive parsing lookup */ - int keepBlanks; /* ugly but ... */ - int disableSAX; /* SAX callbacks are disabled */ - int inSubset; /* Parsing is in int 1/ext 2 subset */ - const xmlChar * intSubName; /* name of subset */ - xmlChar * extSubURI; /* URI of external subset */ - xmlChar * extSubSystem; /* SYSTEM ID of external subset */ - - /* xml:space values */ - int * space; /* Should the parser preserve spaces */ - int spaceNr; /* Depth of the parsing stack */ - int spaceMax; /* Max depth of the parsing stack */ - int * spaceTab; /* array of space infos */ - - int depth; /* to prevent entity substitution loops */ - xmlParserInputPtr entity; /* used to check entities boundaries */ - int charset; /* encoding of the in-memory content - actually an xmlCharEncoding */ - int nodelen; /* Those two fields are there to */ - int nodemem; /* Speed up large node parsing */ - int pedantic; /* signal pedantic warnings */ - void *_private; /* For user data, libxml won't touch it */ - - int loadsubset; /* should the external subset be loaded */ - int linenumbers; /* set line number in element content */ - void *catalogs; /* document's own catalog */ - int recovery; /* run in recovery mode */ - int progressive; /* is this a progressive parsing */ - xmlDictPtr dict; /* dictionary for the parser */ - const xmlChar * *atts; /* array for the attributes callbacks */ - int maxatts; /* the size of the array */ - int docdict; /* use strings from dict to build tree */ - - /* - * pre-interned strings - */ - const xmlChar *str_xml; - const xmlChar *str_xmlns; - const xmlChar *str_xml_ns; - - /* - * Everything below is used only by the new SAX mode - */ - int sax2; /* operating in the new SAX mode */ - int nsNr; /* the number of inherited namespaces */ - int nsMax; /* the size of the arrays */ - const xmlChar * *nsTab; /* the array of prefix/namespace name */ - int *attallocs; /* which attribute were allocated */ - void * *pushTab; /* array of data for push */ - xmlHashTablePtr attsDefault; /* defaulted attributes if any */ - xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */ - int nsWellFormed; /* is the document XML Nanespace okay */ - int options; /* Extra options */ - - /* - * Those fields are needed only for treaming parsing so far - */ - int dictNames; /* Use dictionary names for the tree */ - int freeElemsNr; /* number of freed element nodes */ - xmlNodePtr freeElems; /* List of freed element nodes */ - int freeAttrsNr; /* number of freed attributes nodes */ - xmlAttrPtr freeAttrs; /* List of freed attributes nodes */ - - /* - * the complete error informations for the last error. - */ - xmlError lastError; - xmlParserMode parseMode; /* the parser mode */ - unsigned long nbentities; /* number of entities references */ - unsigned long sizeentities; /* size of parsed entities */ - - /* for use by HTML non-recursive parser */ - xmlParserNodeInfo *nodeInfo; /* Current NodeInfo */ - int nodeInfoNr; /* Depth of the parsing stack */ - int nodeInfoMax; /* Max depth of the parsing stack */ - xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */ - - int input_id; /* we need to label inputs */ - unsigned long sizeentcopy; /* volume of entity copy */ -}; - -/** - * xmlSAXLocator: - * - * A SAX Locator. - */ -struct _xmlSAXLocator { - const xmlChar *(*getPublicId)(void *ctx); - const xmlChar *(*getSystemId)(void *ctx); - int (*getLineNumber)(void *ctx); - int (*getColumnNumber)(void *ctx); -}; - -/** - * xmlSAXHandler: - * - * A SAX handler is bunch of callbacks called by the parser when processing - * of the input generate data or structure informations. - */ - -/** - * resolveEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @publicId: The public ID of the entity - * @systemId: The system ID of the entity - * - * Callback: - * The entity loader, to control the loading of external entities, - * the application can either: - * - override this resolveEntity() callback in the SAX block - * - or better use the xmlSetExternalEntityLoader() function to - * set up it's own entity resolution routine - * - * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. - */ -typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); -/** - * internalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * @name: the root element name - * @ExternalID: the external ID - * @SystemID: the SYSTEM ID (e.g. filename or URL) - * - * Callback on internal subset declaration. - */ -typedef void (*internalSubsetSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * externalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * @name: the root element name - * @ExternalID: the external ID - * @SystemID: the SYSTEM ID (e.g. filename or URL) - * - * Callback on external subset declaration. - */ -typedef void (*externalSubsetSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * getEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Get an entity by name. - * - * Returns the xmlEntityPtr if found. - */ -typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx, - const xmlChar *name); -/** - * getParameterEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Get a parameter entity by name. - * - * Returns the xmlEntityPtr if found. - */ -typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx, - const xmlChar *name); -/** - * entityDeclSAXFunc: - * @ctx: the user data (XML parser context) - * @name: the entity name - * @type: the entity type - * @publicId: The public ID of the entity - * @systemId: The system ID of the entity - * @content: the entity value (without processing). - * - * An entity definition has been parsed. - */ -typedef void (*entityDeclSAXFunc) (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -/** - * notationDeclSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The name of the notation - * @publicId: The public ID of the entity - * @systemId: The system ID of the entity - * - * What to do when a notation declaration has been parsed. - */ -typedef void (*notationDeclSAXFunc)(void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -/** - * attributeDeclSAXFunc: - * @ctx: the user data (XML parser context) - * @elem: the name of the element - * @fullname: the attribute name - * @type: the attribute type - * @def: the type of default value - * @defaultValue: the attribute default value - * @tree: the tree of enumerated value set - * - * An attribute definition has been parsed. - */ -typedef void (*attributeDeclSAXFunc)(void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -/** - * elementDeclSAXFunc: - * @ctx: the user data (XML parser context) - * @name: the element name - * @type: the element type - * @content: the element value tree - * - * An element definition has been parsed. - */ -typedef void (*elementDeclSAXFunc)(void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -/** - * unparsedEntityDeclSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The name of the entity - * @publicId: The public ID of the entity - * @systemId: The system ID of the entity - * @notationName: the name of the notation - * - * What to do when an unparsed entity declaration is parsed. - */ -typedef void (*unparsedEntityDeclSAXFunc)(void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); -/** - * setDocumentLocatorSAXFunc: - * @ctx: the user data (XML parser context) - * @loc: A SAX Locator - * - * Receive the document locator at startup, actually xmlDefaultSAXLocator. - * Everything is available on the context, so this is useless in our case. - */ -typedef void (*setDocumentLocatorSAXFunc) (void *ctx, - xmlSAXLocatorPtr loc); -/** - * startDocumentSAXFunc: - * @ctx: the user data (XML parser context) - * - * Called when the document start being processed. - */ -typedef void (*startDocumentSAXFunc) (void *ctx); -/** - * endDocumentSAXFunc: - * @ctx: the user data (XML parser context) - * - * Called when the document end has been detected. - */ -typedef void (*endDocumentSAXFunc) (void *ctx); -/** - * startElementSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The element name, including namespace prefix - * @atts: An array of name/value attributes pairs, NULL terminated - * - * Called when an opening tag has been processed. - */ -typedef void (*startElementSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar **atts); -/** - * endElementSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The element name - * - * Called when the end of an element has been detected. - */ -typedef void (*endElementSAXFunc) (void *ctx, - const xmlChar *name); -/** - * attributeSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The attribute name, including namespace prefix - * @value: The attribute value - * - * Handle an attribute that has been read by the parser. - * The default handling is to convert the attribute into an - * DOM subtree and past it in a new xmlAttr element added to - * the element. - */ -typedef void (*attributeSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *value); -/** - * referenceSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Called when an entity reference is detected. - */ -typedef void (*referenceSAXFunc) (void *ctx, - const xmlChar *name); -/** - * charactersSAXFunc: - * @ctx: the user data (XML parser context) - * @ch: a xmlChar string - * @len: the number of xmlChar - * - * Receiving some chars from the parser. - */ -typedef void (*charactersSAXFunc) (void *ctx, - const xmlChar *ch, - int len); -/** - * ignorableWhitespaceSAXFunc: - * @ctx: the user data (XML parser context) - * @ch: a xmlChar string - * @len: the number of xmlChar - * - * Receiving some ignorable whitespaces from the parser. - * UNUSED: by default the DOM building will use characters. - */ -typedef void (*ignorableWhitespaceSAXFunc) (void *ctx, - const xmlChar *ch, - int len); -/** - * processingInstructionSAXFunc: - * @ctx: the user data (XML parser context) - * @target: the target name - * @data: the PI data's - * - * A processing instruction has been parsed. - */ -typedef void (*processingInstructionSAXFunc) (void *ctx, - const xmlChar *target, - const xmlChar *data); -/** - * commentSAXFunc: - * @ctx: the user data (XML parser context) - * @value: the comment content - * - * A comment has been parsed. - */ -typedef void (*commentSAXFunc) (void *ctx, - const xmlChar *value); -/** - * cdataBlockSAXFunc: - * @ctx: the user data (XML parser context) - * @value: The pcdata content - * @len: the block length - * - * Called when a pcdata block has been parsed. - */ -typedef void (*cdataBlockSAXFunc) ( - void *ctx, - const xmlChar *value, - int len); -/** - * warningSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format a warning messages, callback. - */ -typedef void (XMLCDECL *warningSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * errorSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format an error messages, callback. - */ -typedef void (XMLCDECL *errorSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * fatalErrorSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format fatal error messages, callback. - * Note: so far fatalError() SAX callbacks are not used, error() - * get all the callbacks for errors. - */ -typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * isStandaloneSAXFunc: - * @ctx: the user data (XML parser context) - * - * Is this document tagged standalone? - * - * Returns 1 if true - */ -typedef int (*isStandaloneSAXFunc) (void *ctx); -/** - * hasInternalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * - * Does this document has an internal subset. - * - * Returns 1 if true - */ -typedef int (*hasInternalSubsetSAXFunc) (void *ctx); - -/** - * hasExternalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * - * Does this document has an external subset? - * - * Returns 1 if true - */ -typedef int (*hasExternalSubsetSAXFunc) (void *ctx); - -/************************************************************************ - * * - * The SAX version 2 API extensions * - * * - ************************************************************************/ -/** - * XML_SAX2_MAGIC: - * - * Special constant found in SAX2 blocks initialized fields - */ -#define XML_SAX2_MAGIC 0xDEEDBEAF - -/** - * startElementNsSAX2Func: - * @ctx: the user data (XML parser context) - * @localname: the local name of the element - * @prefix: the element namespace prefix if available - * @URI: the element namespace name if available - * @nb_namespaces: number of namespace definitions on that node - * @namespaces: pointer to the array of prefix/URI pairs namespace definitions - * @nb_attributes: the number of attributes on that node - * @nb_defaulted: the number of defaulted attributes. The defaulted - * ones are at the end of the array - * @attributes: pointer to the array of (localname/prefix/URI/value/end) - * attribute values. - * - * SAX2 callback when an element start has been detected by the parser. - * It provides the namespace informations for the element, as well as - * the new namespace declarations on the element. - */ - -typedef void (*startElementNsSAX2Func) (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI, - int nb_namespaces, - const xmlChar **namespaces, - int nb_attributes, - int nb_defaulted, - const xmlChar **attributes); - -/** - * endElementNsSAX2Func: - * @ctx: the user data (XML parser context) - * @localname: the local name of the element - * @prefix: the element namespace prefix if available - * @URI: the element namespace name if available - * - * SAX2 callback when an element end has been detected by the parser. - * It provides the namespace informations for the element. - */ - -typedef void (*endElementNsSAX2Func) (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI); - - -struct _xmlSAXHandler { - internalSubsetSAXFunc internalSubset; - isStandaloneSAXFunc isStandalone; - hasInternalSubsetSAXFunc hasInternalSubset; - hasExternalSubsetSAXFunc hasExternalSubset; - resolveEntitySAXFunc resolveEntity; - getEntitySAXFunc getEntity; - entityDeclSAXFunc entityDecl; - notationDeclSAXFunc notationDecl; - attributeDeclSAXFunc attributeDecl; - elementDeclSAXFunc elementDecl; - unparsedEntityDeclSAXFunc unparsedEntityDecl; - setDocumentLocatorSAXFunc setDocumentLocator; - startDocumentSAXFunc startDocument; - endDocumentSAXFunc endDocument; - startElementSAXFunc startElement; - endElementSAXFunc endElement; - referenceSAXFunc reference; - charactersSAXFunc characters; - ignorableWhitespaceSAXFunc ignorableWhitespace; - processingInstructionSAXFunc processingInstruction; - commentSAXFunc comment; - warningSAXFunc warning; - errorSAXFunc error; - fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ - getParameterEntitySAXFunc getParameterEntity; - cdataBlockSAXFunc cdataBlock; - externalSubsetSAXFunc externalSubset; - unsigned int initialized; - /* The following fields are extensions available only on version 2 */ - void *_private; - startElementNsSAX2Func startElementNs; - endElementNsSAX2Func endElementNs; - xmlStructuredErrorFunc serror; -}; - -/* - * SAX Version 1 - */ -typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1; -typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr; -struct _xmlSAXHandlerV1 { - internalSubsetSAXFunc internalSubset; - isStandaloneSAXFunc isStandalone; - hasInternalSubsetSAXFunc hasInternalSubset; - hasExternalSubsetSAXFunc hasExternalSubset; - resolveEntitySAXFunc resolveEntity; - getEntitySAXFunc getEntity; - entityDeclSAXFunc entityDecl; - notationDeclSAXFunc notationDecl; - attributeDeclSAXFunc attributeDecl; - elementDeclSAXFunc elementDecl; - unparsedEntityDeclSAXFunc unparsedEntityDecl; - setDocumentLocatorSAXFunc setDocumentLocator; - startDocumentSAXFunc startDocument; - endDocumentSAXFunc endDocument; - startElementSAXFunc startElement; - endElementSAXFunc endElement; - referenceSAXFunc reference; - charactersSAXFunc characters; - ignorableWhitespaceSAXFunc ignorableWhitespace; - processingInstructionSAXFunc processingInstruction; - commentSAXFunc comment; - warningSAXFunc warning; - errorSAXFunc error; - fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ - getParameterEntitySAXFunc getParameterEntity; - cdataBlockSAXFunc cdataBlock; - externalSubsetSAXFunc externalSubset; - unsigned int initialized; -}; - - -/** - * xmlExternalEntityLoader: - * @URL: The System ID of the resource requested - * @ID: The Public ID of the resource requested - * @context: the XML parser context - * - * External entity loaders types. - * - * Returns the entity input parser. - */ -typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL, - const char *ID, - xmlParserCtxtPtr context); - -#ifdef __cplusplus -} -#endif - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Init/Cleanup - */ -XMLPUBFUN void XMLCALL - xmlInitParser (void); -XMLPUBFUN void XMLCALL - xmlCleanupParser (void); - -/* - * Input functions - */ -XMLPUBFUN int XMLCALL - xmlParserInputRead (xmlParserInputPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputGrow (xmlParserInputPtr in, - int len); - -/* - * Basic parsing Interfaces - */ -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseDoc (const xmlChar *cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseFile (const char *filename); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseMemory (const char *buffer, - int size); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN int XMLCALL - xmlSubstituteEntitiesDefault(int val); -XMLPUBFUN int XMLCALL - xmlKeepBlanksDefault (int val); -XMLPUBFUN void XMLCALL - xmlStopParser (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlPedanticParserDefault(int val); -XMLPUBFUN int XMLCALL - xmlLineNumbersDefault (int val); - -#ifdef LIBXML_SAX1_ENABLED -/* - * Recovery mode - */ -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverDoc (const xmlChar *cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverMemory (const char *buffer, - int size); -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverFile (const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ - -/* - * Less common routines and SAX interfaces - */ -XMLPUBFUN int XMLCALL - xmlParseDocument (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlSAXUserParseFile (xmlSAXHandlerPtr sax, - void *user_data, - const char *filename); -XMLPUBFUN int XMLCALL - xmlSAXUserParseMemory (xmlSAXHandlerPtr sax, - void *user_data, - const char *buffer, - int size); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseDoc (xmlSAXHandlerPtr sax, - const xmlChar *cur, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseMemory (xmlSAXHandlerPtr sax, - const char *buffer, - int size, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax, - const char *buffer, - int size, - int recovery, - void *data); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseFile (xmlSAXHandlerPtr sax, - const char *filename, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseFileWithData (xmlSAXHandlerPtr sax, - const char *filename, - int recovery, - void *data); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseEntity (xmlSAXHandlerPtr sax, - const char *filename); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseEntity (const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ - -#ifdef LIBXML_VALID_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL - xmlSAXParseDTD (xmlSAXHandlerPtr sax, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlParseDTD (const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlIOParseDTD (xmlSAXHandlerPtr sax, - xmlParserInputBufferPtr input, - xmlCharEncoding enc); -#endif /* LIBXML_VALID_ENABLE */ -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlParseBalancedChunkMemory(xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *string, - xmlNodePtr *lst); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN xmlParserErrors XMLCALL - xmlParseInNodeContext (xmlNodePtr node, - const char *data, - int datalen, - int options, - xmlNodePtr *lst); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *string, - xmlNodePtr *lst, - int recover); -XMLPUBFUN int XMLCALL - xmlParseExternalEntity (xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *URL, - const xmlChar *ID, - xmlNodePtr *lst); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN int XMLCALL - xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx, - const xmlChar *URL, - const xmlChar *ID, - xmlNodePtr *lst); - -/* - * Parser contexts handling. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlNewParserCtxt (void); -XMLPUBFUN int XMLCALL - xmlInitParserCtxt (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlClearParserCtxt (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlFreeParserCtxt (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN void XMLCALL - xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt, - const xmlChar* buffer, - const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateDocParserCtxt (const xmlChar *cur); - -#ifdef LIBXML_LEGACY_ENABLED -/* - * Reading/setting optional parsing features. - */ -XMLPUBFUN int XMLCALL - xmlGetFeaturesList (int *len, - const char **result); -XMLPUBFUN int XMLCALL - xmlGetFeature (xmlParserCtxtPtr ctxt, - const char *name, - void *result); -XMLPUBFUN int XMLCALL - xmlSetFeature (xmlParserCtxtPtr ctxt, - const char *name, - void *value); -#endif /* LIBXML_LEGACY_ENABLED */ - -#ifdef LIBXML_PUSH_ENABLED -/* - * Interfaces for the Push mode. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename); -XMLPUBFUN int XMLCALL - xmlParseChunk (xmlParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -#endif /* LIBXML_PUSH_ENABLED */ - -/* - * Special I/O mode. - */ - -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax, - void *user_data, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - xmlCharEncoding enc); - -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewIOInputStream (xmlParserCtxtPtr ctxt, - xmlParserInputBufferPtr input, - xmlCharEncoding enc); - -/* - * Node infos. - */ -XMLPUBFUN const xmlParserNodeInfo* XMLCALL - xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt, - const xmlNodePtr node); -XMLPUBFUN void XMLCALL - xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); -XMLPUBFUN void XMLCALL - xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); -XMLPUBFUN unsigned long XMLCALL - xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq, - const xmlNodePtr node); -XMLPUBFUN void XMLCALL - xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt, - const xmlParserNodeInfoPtr info); - -/* - * External entities handling actually implemented in xmlIO. - */ - -XMLPUBFUN void XMLCALL - xmlSetExternalEntityLoader(xmlExternalEntityLoader f); -XMLPUBFUN xmlExternalEntityLoader XMLCALL - xmlGetExternalEntityLoader(void); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlLoadExternalEntity (const char *URL, - const char *ID, - xmlParserCtxtPtr ctxt); - -/* - * Index lookup, actually implemented in the encoding module - */ -XMLPUBFUN long XMLCALL - xmlByteConsumed (xmlParserCtxtPtr ctxt); - -/* - * New set of simpler/more flexible APIs - */ -/** - * xmlParserOption: - * - * This is the set of XML parser options that can be passed down - * to the xmlReadDoc() and similar calls. - */ -typedef enum { - XML_PARSE_RECOVER = 1<<0, /* recover on errors */ - XML_PARSE_NOENT = 1<<1, /* substitute entities */ - XML_PARSE_DTDLOAD = 1<<2, /* load the external subset */ - XML_PARSE_DTDATTR = 1<<3, /* default DTD attributes */ - XML_PARSE_DTDVALID = 1<<4, /* validate with the DTD */ - XML_PARSE_NOERROR = 1<<5, /* suppress error reports */ - XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */ - XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ - XML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ - XML_PARSE_SAX1 = 1<<9, /* use the SAX1 interface internally */ - XML_PARSE_XINCLUDE = 1<<10,/* Implement XInclude substitition */ - XML_PARSE_NONET = 1<<11,/* Forbid network access */ - XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionary */ - XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */ - XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */ - XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */ - XML_PARSE_COMPACT = 1<<16,/* compact small text nodes; no modification of - the tree allowed afterwards (will possibly - crash if you try to modify the tree) */ - XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */ - XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */ - XML_PARSE_HUGE = 1<<19,/* relax any hardcoded limit from the parser */ - XML_PARSE_OLDSAX = 1<<20,/* parse using SAX2 interface before 2.7.0 */ - XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */ - XML_PARSE_BIG_LINES = 1<<22 /* Store big lines numbers in text PSVI field */ -} xmlParserOption; - -XMLPUBFUN void XMLCALL - xmlCtxtReset (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlCtxtResetPush (xmlParserCtxtPtr ctxt, - const char *chunk, - int size, - const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - xmlCtxtUseOptions (xmlParserCtxtPtr ctxt, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadDoc (const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadFile (const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadDoc (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadFile (xmlParserCtxtPtr ctxt, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadMemory (xmlParserCtxtPtr ctxt, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadFd (xmlParserCtxtPtr ctxt, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadIO (xmlParserCtxtPtr ctxt, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -/* - * Library wide options - */ -/** - * xmlFeature: - * - * Used to examine the existance of features that can be enabled - * or disabled at compile-time. - * They used to be called XML_FEATURE_xxx but this clashed with Expat - */ -typedef enum { - XML_WITH_THREAD = 1, - XML_WITH_TREE = 2, - XML_WITH_OUTPUT = 3, - XML_WITH_PUSH = 4, - XML_WITH_READER = 5, - XML_WITH_PATTERN = 6, - XML_WITH_WRITER = 7, - XML_WITH_SAX1 = 8, - XML_WITH_FTP = 9, - XML_WITH_HTTP = 10, - XML_WITH_VALID = 11, - XML_WITH_HTML = 12, - XML_WITH_LEGACY = 13, - XML_WITH_C14N = 14, - XML_WITH_CATALOG = 15, - XML_WITH_XPATH = 16, - XML_WITH_XPTR = 17, - XML_WITH_XINCLUDE = 18, - XML_WITH_ICONV = 19, - XML_WITH_ISO8859X = 20, - XML_WITH_UNICODE = 21, - XML_WITH_REGEXP = 22, - XML_WITH_AUTOMATA = 23, - XML_WITH_EXPR = 24, - XML_WITH_SCHEMAS = 25, - XML_WITH_SCHEMATRON = 26, - XML_WITH_MODULES = 27, - XML_WITH_DEBUG = 28, - XML_WITH_DEBUG_MEM = 29, - XML_WITH_DEBUG_RUN = 30, - XML_WITH_ZLIB = 31, - XML_WITH_ICU = 32, - XML_WITH_LZMA = 33, - XML_WITH_NONE = 99999 /* just to be sure of allocation size */ -} xmlFeature; - -XMLPUBFUN int XMLCALL - xmlHasFeature (xmlFeature feature); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_PARSER_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/parserInternals.h b/sdk/Windows/2019.2/include/libxml2/libxml/parserInternals.h deleted file mode 100755 index 05b71dd..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/parserInternals.h +++ /dev/null @@ -1,644 +0,0 @@ -/* - * Summary: internals routines and limits exported by the parser. - * Description: this module exports a number of internal parsing routines - * they are not really all intended for applications but - * can prove useful doing low level processing. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PARSER_INTERNALS_H__ -#define __XML_PARSER_INTERNALS_H__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlParserMaxDepth: - * - * arbitrary depth limit for the XML documents that we allow to - * process. This is not a limitation of the parser but a safety - * boundary feature, use XML_PARSE_HUGE option to override it. - */ -XMLPUBVAR unsigned int xmlParserMaxDepth; - -/** - * XML_MAX_TEXT_LENGTH: - * - * Maximum size allowed for a single text node when building a tree. - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Introduced in 2.9.0 - */ -#define XML_MAX_TEXT_LENGTH 10000000 - -/** - * XML_MAX_NAME_LENGTH: - * - * Maximum size allowed for a markup identitier - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Note that with the use of parsing dictionaries overriding the limit - * may result in more runtime memory usage in face of "unfriendly' content - * Introduced in 2.9.0 - */ -#define XML_MAX_NAME_LENGTH 50000 - -/** - * XML_MAX_DICTIONARY_LIMIT: - * - * Maximum size allowed by the parser for a dictionary by default - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Introduced in 2.9.0 - */ -#define XML_MAX_DICTIONARY_LIMIT 10000000 - -/** - * XML_MAX_LOOKUP_LIMIT: - * - * Maximum size allowed by the parser for ahead lookup - * This is an upper boundary enforced by the parser to avoid bad - * behaviour on "unfriendly' content - * Introduced in 2.9.0 - */ -#define XML_MAX_LOOKUP_LIMIT 10000000 - -/** - * XML_MAX_NAMELEN: - * - * Identifiers can be longer, but this will be more costly - * at runtime. - */ -#define XML_MAX_NAMELEN 100 - -/** - * INPUT_CHUNK: - * - * The parser tries to always have that amount of input ready. - * One of the point is providing context when reporting errors. - */ -#define INPUT_CHUNK 250 - -/************************************************************************ - * * - * UNICODE version of the macros. * - * * - ************************************************************************/ -/** - * IS_BYTE_CHAR: - * @c: an byte value (int) - * - * Macro to check the following production in the XML spec: - * - * [2] Char ::= #x9 | #xA | #xD | [#x20...] - * any byte character in the accepted range - */ -#define IS_BYTE_CHAR(c) xmlIsChar_ch(c) - -/** - * IS_CHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] - * | [#x10000-#x10FFFF] - * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. - */ -#define IS_CHAR(c) xmlIsCharQ(c) - -/** - * IS_CHAR_CH: - * @c: an xmlChar (usually an unsigned char) - * - * Behaves like IS_CHAR on single-byte value - */ -#define IS_CHAR_CH(c) xmlIsChar_ch(c) - -/** - * IS_BLANK: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [3] S ::= (#x20 | #x9 | #xD | #xA)+ - */ -#define IS_BLANK(c) xmlIsBlankQ(c) - -/** - * IS_BLANK_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Behaviour same as IS_BLANK - */ -#define IS_BLANK_CH(c) xmlIsBlank_ch(c) - -/** - * IS_BASECHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [85] BaseChar ::= ... long list see REC ... - */ -#define IS_BASECHAR(c) xmlIsBaseCharQ(c) - -/** - * IS_DIGIT: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [88] Digit ::= ... long list see REC ... - */ -#define IS_DIGIT(c) xmlIsDigitQ(c) - -/** - * IS_DIGIT_CH: - * @c: an xmlChar value (usually an unsigned char) - * - * Behaves like IS_DIGIT but with a single byte argument - */ -#define IS_DIGIT_CH(c) xmlIsDigit_ch(c) - -/** - * IS_COMBINING: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [87] CombiningChar ::= ... long list see REC ... - */ -#define IS_COMBINING(c) xmlIsCombiningQ(c) - -/** - * IS_COMBINING_CH: - * @c: an xmlChar (usually an unsigned char) - * - * Always false (all combining chars > 0xff) - */ -#define IS_COMBINING_CH(c) 0 - -/** - * IS_EXTENDER: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | - * #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | - * [#x309D-#x309E] | [#x30FC-#x30FE] - */ -#define IS_EXTENDER(c) xmlIsExtenderQ(c) - -/** - * IS_EXTENDER_CH: - * @c: an xmlChar value (usually an unsigned char) - * - * Behaves like IS_EXTENDER but with a single-byte argument - */ -#define IS_EXTENDER_CH(c) xmlIsExtender_ch(c) - -/** - * IS_IDEOGRAPHIC: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] - */ -#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c) - -/** - * IS_LETTER: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [84] Letter ::= BaseChar | Ideographic - */ -#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c)) - -/** - * IS_LETTER_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Macro behaves like IS_LETTER, but only check base chars - * - */ -#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c) - -/** - * IS_ASCII_LETTER: - * @c: an xmlChar value - * - * Macro to check [a-zA-Z] - * - */ -#define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ - ((0x61 <= (c)) && ((c) <= 0x7a))) - -/** - * IS_ASCII_DIGIT: - * @c: an xmlChar value - * - * Macro to check [0-9] - * - */ -#define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39)) - -/** - * IS_PUBIDCHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] - */ -#define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c) - -/** - * IS_PUBIDCHAR_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Same as IS_PUBIDCHAR but for single-byte value - */ -#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c) - -/** - * SKIP_EOL: - * @p: and UTF8 string pointer - * - * Skips the end of line chars. - */ -#define SKIP_EOL(p) \ - if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ - if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; } - -/** - * MOVETO_ENDTAG: - * @p: and UTF8 string pointer - * - * Skips to the next '>' char. - */ -#define MOVETO_ENDTAG(p) \ - while ((*p) && (*(p) != '>')) (p)++ - -/** - * MOVETO_STARTTAG: - * @p: and UTF8 string pointer - * - * Skips to the next '<' char. - */ -#define MOVETO_STARTTAG(p) \ - while ((*p) && (*(p) != '<')) (p)++ - -/** - * Global variables used for predefined strings. - */ -XMLPUBVAR const xmlChar xmlStringText[]; -XMLPUBVAR const xmlChar xmlStringTextNoenc[]; -XMLPUBVAR const xmlChar xmlStringComment[]; - -/* - * Function to finish the work of the macros where needed. - */ -XMLPUBFUN int XMLCALL xmlIsLetter (int c); - -/** - * Parser context. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateFileParserCtxt (const char *filename); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateURLParserCtxt (const char *filename, - int options); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateMemoryParserCtxt(const char *buffer, - int size); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateEntityParserCtxt(const xmlChar *URL, - const xmlChar *ID, - const xmlChar *base); -XMLPUBFUN int XMLCALL - xmlSwitchEncoding (xmlParserCtxtPtr ctxt, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, - xmlCharEncodingHandlerPtr handler); -XMLPUBFUN int XMLCALL - xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, - xmlParserInputPtr input, - xmlCharEncodingHandlerPtr handler); - -#ifdef IN_LIBXML -/* internal error reporting */ -XMLPUBFUN void XMLCALL - __xmlErrEncoding (xmlParserCtxtPtr ctxt, - xmlParserErrors xmlerr, - const char *msg, - const xmlChar * str1, - const xmlChar * str2) LIBXML_ATTR_FORMAT(3,0); -#endif - -/** - * Input Streams. - */ -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewStringInputStream (xmlParserCtxtPtr ctxt, - const xmlChar *buffer); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, - xmlEntityPtr entity); -XMLPUBFUN int XMLCALL - xmlPushInput (xmlParserCtxtPtr ctxt, - xmlParserInputPtr input); -XMLPUBFUN xmlChar XMLCALL - xmlPopInput (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlFreeInputStream (xmlParserInputPtr input); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewInputFromFile (xmlParserCtxtPtr ctxt, - const char *filename); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewInputStream (xmlParserCtxtPtr ctxt); - -/** - * Namespaces. - */ -XMLPUBFUN xmlChar * XMLCALL - xmlSplitQName (xmlParserCtxtPtr ctxt, - const xmlChar *name, - xmlChar **prefix); - -/** - * Generic production rules. - */ -XMLPUBFUN const xmlChar * XMLCALL - xmlParseName (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseNmtoken (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseEntityValue (xmlParserCtxtPtr ctxt, - xmlChar **orig); -XMLPUBFUN xmlChar * XMLCALL - xmlParseAttValue (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseCharData (xmlParserCtxtPtr ctxt, - int cdata); -XMLPUBFUN xmlChar * XMLCALL - xmlParseExternalID (xmlParserCtxtPtr ctxt, - xmlChar **publicID, - int strict); -XMLPUBFUN void XMLCALL - xmlParseComment (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL - xmlParsePITarget (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParsePI (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseNotationDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseEntityDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, - xmlChar **value); -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlParseNotationType (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlParseEnumerationType (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, - xmlEnumerationPtr *tree); -XMLPUBFUN int XMLCALL - xmlParseAttributeType (xmlParserCtxtPtr ctxt, - xmlEnumerationPtr *tree); -XMLPUBFUN void XMLCALL - xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlParseElementMixedContentDecl - (xmlParserCtxtPtr ctxt, - int inputchk); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlParseElementChildrenContentDecl - (xmlParserCtxtPtr ctxt, - int inputchk); -XMLPUBFUN int XMLCALL - xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, - const xmlChar *name, - xmlElementContentPtr *result); -XMLPUBFUN int XMLCALL - xmlParseElementDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseCharRef (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlParseEntityRef (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseReference (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParsePEReference (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN const xmlChar * XMLCALL - xmlParseAttribute (xmlParserCtxtPtr ctxt, - xmlChar **value); -XMLPUBFUN const xmlChar * XMLCALL - xmlParseStartTag (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseEndTag (xmlParserCtxtPtr ctxt); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN void XMLCALL - xmlParseCDSect (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseContent (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseElement (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseVersionNum (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseVersionInfo (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseEncName (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL - xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseSDDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseXMLDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseTextDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseMisc (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseExternalSubset (xmlParserCtxtPtr ctxt, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * XML_SUBSTITUTE_NONE: - * - * If no entities need to be substituted. - */ -#define XML_SUBSTITUTE_NONE 0 -/** - * XML_SUBSTITUTE_REF: - * - * Whether general entities need to be substituted. - */ -#define XML_SUBSTITUTE_REF 1 -/** - * XML_SUBSTITUTE_PEREF: - * - * Whether parameter entities need to be substituted. - */ -#define XML_SUBSTITUTE_PEREF 2 -/** - * XML_SUBSTITUTE_BOTH: - * - * Both general and parameter entities need to be substituted. - */ -#define XML_SUBSTITUTE_BOTH 3 - -XMLPUBFUN xmlChar * XMLCALL - xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, - const xmlChar *str, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); -XMLPUBFUN xmlChar * XMLCALL - xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, - const xmlChar *str, - int len, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); - -/* - * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. - */ -XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, - xmlNodePtr value); -XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, - xmlParserInputPtr value); -XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, - const xmlChar *value); - -/* - * other commodities shared between parser.c and parserInternals. - */ -XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - int *len); -XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); - -/* - * Really core function shared with HTML parser. - */ -XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, - int *len); -XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, - int val); -XMLPUBFUN int XMLCALL xmlCopyChar (int len, - xmlChar *out, - int val); -XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); - -#ifdef LIBXML_HTML_ENABLED -/* - * Actually comes from the HTML parser but launched from the init stuff. - */ -XMLPUBFUN void XMLCALL htmlInitAutoClose (void); -XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, - const char *encoding); -#endif - -/* - * Specific function to keep track of entities references - * and used by the XSLT debugger. - */ -#ifdef LIBXML_LEGACY_ENABLED -/** - * xmlEntityReferenceFunc: - * @ent: the entity - * @firstNode: the fist node in the chunk - * @lastNode: the last nod in the chunk - * - * Callback function used when one needs to be able to track back the - * provenance of a chunk of nodes inherited from an entity replacement. - */ -typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, - xmlNodePtr firstNode, - xmlNodePtr lastNode); - -XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); - -XMLPUBFUN xmlChar * XMLCALL - xmlParseQuotedString (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseNamespace (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlScanName (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, - xmlChar **prefix); -/** - * Entities - */ -XMLPUBFUN xmlChar * XMLCALL - xmlDecodeEntities (xmlParserCtxtPtr ctxt, - int len, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); -XMLPUBFUN void XMLCALL - xmlHandleEntity (xmlParserCtxtPtr ctxt, - xmlEntityPtr entity); - -#endif /* LIBXML_LEGACY_ENABLED */ - -#ifdef IN_LIBXML -/* - * internal only - */ -XMLPUBFUN void XMLCALL - xmlErrMemory (xmlParserCtxtPtr ctxt, - const char *extra); -#endif - -#ifdef __cplusplus -} -#endif -#endif /* __XML_PARSER_INTERNALS_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/pattern.h b/sdk/Windows/2019.2/include/libxml2/libxml/pattern.h deleted file mode 100755 index 017abed..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/pattern.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Summary: pattern expression handling - * Description: allows to compile and test pattern expressions for nodes - * either in a tree or based on a parser state. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PATTERN_H__ -#define __XML_PATTERN_H__ - -#include -#include -#include - -#ifdef LIBXML_PATTERN_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlPattern: - * - * A compiled (XPath based) pattern to select nodes - */ -typedef struct _xmlPattern xmlPattern; -typedef xmlPattern *xmlPatternPtr; - -/** - * xmlPatternFlags: - * - * This is the set of options affecting the behaviour of pattern - * matching with this module - * - */ -typedef enum { - XML_PATTERN_DEFAULT = 0, /* simple pattern match */ - XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */ - XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */ - XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */ -} xmlPatternFlags; - -XMLPUBFUN void XMLCALL - xmlFreePattern (xmlPatternPtr comp); - -XMLPUBFUN void XMLCALL - xmlFreePatternList (xmlPatternPtr comp); - -XMLPUBFUN xmlPatternPtr XMLCALL - xmlPatterncompile (const xmlChar *pattern, - xmlDict *dict, - int flags, - const xmlChar **namespaces); -XMLPUBFUN int XMLCALL - xmlPatternMatch (xmlPatternPtr comp, - xmlNodePtr node); - -/* streaming interfaces */ -typedef struct _xmlStreamCtxt xmlStreamCtxt; -typedef xmlStreamCtxt *xmlStreamCtxtPtr; - -XMLPUBFUN int XMLCALL - xmlPatternStreamable (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternMaxDepth (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternMinDepth (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternFromRoot (xmlPatternPtr comp); -XMLPUBFUN xmlStreamCtxtPtr XMLCALL - xmlPatternGetStreamCtxt (xmlPatternPtr comp); -XMLPUBFUN void XMLCALL - xmlFreeStreamCtxt (xmlStreamCtxtPtr stream); -XMLPUBFUN int XMLCALL - xmlStreamPushNode (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns, - int nodeType); -XMLPUBFUN int XMLCALL - xmlStreamPush (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlStreamPushAttr (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlStreamPop (xmlStreamCtxtPtr stream); -XMLPUBFUN int XMLCALL - xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_PATTERN_ENABLED */ - -#endif /* __XML_PATTERN_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/relaxng.h b/sdk/Windows/2019.2/include/libxml2/libxml/relaxng.h deleted file mode 100755 index de9c2af..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/relaxng.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Summary: implementation of the Relax-NG validation - * Description: implementation of the Relax-NG validation - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_RELAX_NG__ -#define __XML_RELAX_NG__ - -#include -#include -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _xmlRelaxNG xmlRelaxNG; -typedef xmlRelaxNG *xmlRelaxNGPtr; - - -/** - * xmlRelaxNGValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from a Relax-NG validation - */ -typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlRelaxNGValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from a Relax-NG validation - */ -typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * A schemas validation context - */ -typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt; -typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr; - -typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt; -typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr; - -/* - * xmlRelaxNGValidErr: - * - * List of possible Relax NG validation errors - */ -typedef enum { - XML_RELAXNG_OK = 0, - XML_RELAXNG_ERR_MEMORY, - XML_RELAXNG_ERR_TYPE, - XML_RELAXNG_ERR_TYPEVAL, - XML_RELAXNG_ERR_DUPID, - XML_RELAXNG_ERR_TYPECMP, - XML_RELAXNG_ERR_NOSTATE, - XML_RELAXNG_ERR_NODEFINE, - XML_RELAXNG_ERR_LISTEXTRA, - XML_RELAXNG_ERR_LISTEMPTY, - XML_RELAXNG_ERR_INTERNODATA, - XML_RELAXNG_ERR_INTERSEQ, - XML_RELAXNG_ERR_INTEREXTRA, - XML_RELAXNG_ERR_ELEMNAME, - XML_RELAXNG_ERR_ATTRNAME, - XML_RELAXNG_ERR_ELEMNONS, - XML_RELAXNG_ERR_ATTRNONS, - XML_RELAXNG_ERR_ELEMWRONGNS, - XML_RELAXNG_ERR_ATTRWRONGNS, - XML_RELAXNG_ERR_ELEMEXTRANS, - XML_RELAXNG_ERR_ATTREXTRANS, - XML_RELAXNG_ERR_ELEMNOTEMPTY, - XML_RELAXNG_ERR_NOELEM, - XML_RELAXNG_ERR_NOTELEM, - XML_RELAXNG_ERR_ATTRVALID, - XML_RELAXNG_ERR_CONTENTVALID, - XML_RELAXNG_ERR_EXTRACONTENT, - XML_RELAXNG_ERR_INVALIDATTR, - XML_RELAXNG_ERR_DATAELEM, - XML_RELAXNG_ERR_VALELEM, - XML_RELAXNG_ERR_LISTELEM, - XML_RELAXNG_ERR_DATATYPE, - XML_RELAXNG_ERR_VALUE, - XML_RELAXNG_ERR_LIST, - XML_RELAXNG_ERR_NOGRAMMAR, - XML_RELAXNG_ERR_EXTRADATA, - XML_RELAXNG_ERR_LACKDATA, - XML_RELAXNG_ERR_INTERNAL, - XML_RELAXNG_ERR_ELEMWRONG, - XML_RELAXNG_ERR_TEXTWRONG -} xmlRelaxNGValidErr; - -/* - * xmlRelaxNGParserFlags: - * - * List of possible Relax NG Parser flags - */ -typedef enum { - XML_RELAXNGP_NONE = 0, - XML_RELAXNGP_FREE_DOC = 1, - XML_RELAXNGP_CRNG = 2 -} xmlRelaxNGParserFlag; - -XMLPUBFUN int XMLCALL - xmlRelaxNGInitTypes (void); -XMLPUBFUN void XMLCALL - xmlRelaxNGCleanupTypes (void); - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewParserCtxt (const char *URL); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewMemParserCtxt (const char *buffer, - int size); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc); - -XMLPUBFUN int XMLCALL - xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt, - int flag); - -XMLPUBFUN void XMLCALL - xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc err, - xmlRelaxNGValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc *err, - xmlRelaxNGValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetParserStructuredErrors( - xmlRelaxNGParserCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN xmlRelaxNGPtr XMLCALL - xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlRelaxNGFree (xmlRelaxNGPtr schema); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlRelaxNGDump (FILE *output, - xmlRelaxNGPtr schema); -XMLPUBFUN void XMLCALL - xmlRelaxNGDumpTree (FILE * output, - xmlRelaxNGPtr schema); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc err, - xmlRelaxNGValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc *err, - xmlRelaxNGValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, void *ctx); -XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL - xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); -XMLPUBFUN void XMLCALL - xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc); -/* - * Interfaces for progressive validation when possible - */ -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt, - const xmlChar *data, - int len); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ - -#endif /* __XML_RELAX_NG__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/schemasInternals.h b/sdk/Windows/2019.2/include/libxml2/libxml/schemasInternals.h deleted file mode 100755 index 24ebe81..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/schemasInternals.h +++ /dev/null @@ -1,958 +0,0 @@ -/* - * Summary: internal interfaces for XML Schemas - * Description: internal interfaces for the XML Schemas handling - * and schema validity checking - * The Schemas development is a Work In Progress. - * Some of those interfaces are not guaranteed to be API or ABI stable ! - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_INTERNALS_H__ -#define __XML_SCHEMA_INTERNALS_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMAS_UNKNOWN = 0, - XML_SCHEMAS_STRING = 1, - XML_SCHEMAS_NORMSTRING = 2, - XML_SCHEMAS_DECIMAL = 3, - XML_SCHEMAS_TIME = 4, - XML_SCHEMAS_GDAY = 5, - XML_SCHEMAS_GMONTH = 6, - XML_SCHEMAS_GMONTHDAY = 7, - XML_SCHEMAS_GYEAR = 8, - XML_SCHEMAS_GYEARMONTH = 9, - XML_SCHEMAS_DATE = 10, - XML_SCHEMAS_DATETIME = 11, - XML_SCHEMAS_DURATION = 12, - XML_SCHEMAS_FLOAT = 13, - XML_SCHEMAS_DOUBLE = 14, - XML_SCHEMAS_BOOLEAN = 15, - XML_SCHEMAS_TOKEN = 16, - XML_SCHEMAS_LANGUAGE = 17, - XML_SCHEMAS_NMTOKEN = 18, - XML_SCHEMAS_NMTOKENS = 19, - XML_SCHEMAS_NAME = 20, - XML_SCHEMAS_QNAME = 21, - XML_SCHEMAS_NCNAME = 22, - XML_SCHEMAS_ID = 23, - XML_SCHEMAS_IDREF = 24, - XML_SCHEMAS_IDREFS = 25, - XML_SCHEMAS_ENTITY = 26, - XML_SCHEMAS_ENTITIES = 27, - XML_SCHEMAS_NOTATION = 28, - XML_SCHEMAS_ANYURI = 29, - XML_SCHEMAS_INTEGER = 30, - XML_SCHEMAS_NPINTEGER = 31, - XML_SCHEMAS_NINTEGER = 32, - XML_SCHEMAS_NNINTEGER = 33, - XML_SCHEMAS_PINTEGER = 34, - XML_SCHEMAS_INT = 35, - XML_SCHEMAS_UINT = 36, - XML_SCHEMAS_LONG = 37, - XML_SCHEMAS_ULONG = 38, - XML_SCHEMAS_SHORT = 39, - XML_SCHEMAS_USHORT = 40, - XML_SCHEMAS_BYTE = 41, - XML_SCHEMAS_UBYTE = 42, - XML_SCHEMAS_HEXBINARY = 43, - XML_SCHEMAS_BASE64BINARY = 44, - XML_SCHEMAS_ANYTYPE = 45, - XML_SCHEMAS_ANYSIMPLETYPE = 46 -} xmlSchemaValType; - -/* - * XML Schemas defines multiple type of types. - */ -typedef enum { - XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */ - XML_SCHEMA_TYPE_ANY, - XML_SCHEMA_TYPE_FACET, - XML_SCHEMA_TYPE_SIMPLE, - XML_SCHEMA_TYPE_COMPLEX, - XML_SCHEMA_TYPE_SEQUENCE = 6, - XML_SCHEMA_TYPE_CHOICE, - XML_SCHEMA_TYPE_ALL, - XML_SCHEMA_TYPE_SIMPLE_CONTENT, - XML_SCHEMA_TYPE_COMPLEX_CONTENT, - XML_SCHEMA_TYPE_UR, - XML_SCHEMA_TYPE_RESTRICTION, - XML_SCHEMA_TYPE_EXTENSION, - XML_SCHEMA_TYPE_ELEMENT, - XML_SCHEMA_TYPE_ATTRIBUTE, - XML_SCHEMA_TYPE_ATTRIBUTEGROUP, - XML_SCHEMA_TYPE_GROUP, - XML_SCHEMA_TYPE_NOTATION, - XML_SCHEMA_TYPE_LIST, - XML_SCHEMA_TYPE_UNION, - XML_SCHEMA_TYPE_ANY_ATTRIBUTE, - XML_SCHEMA_TYPE_IDC_UNIQUE, - XML_SCHEMA_TYPE_IDC_KEY, - XML_SCHEMA_TYPE_IDC_KEYREF, - XML_SCHEMA_TYPE_PARTICLE = 25, - XML_SCHEMA_TYPE_ATTRIBUTE_USE, - XML_SCHEMA_FACET_MININCLUSIVE = 1000, - XML_SCHEMA_FACET_MINEXCLUSIVE, - XML_SCHEMA_FACET_MAXINCLUSIVE, - XML_SCHEMA_FACET_MAXEXCLUSIVE, - XML_SCHEMA_FACET_TOTALDIGITS, - XML_SCHEMA_FACET_FRACTIONDIGITS, - XML_SCHEMA_FACET_PATTERN, - XML_SCHEMA_FACET_ENUMERATION, - XML_SCHEMA_FACET_WHITESPACE, - XML_SCHEMA_FACET_LENGTH, - XML_SCHEMA_FACET_MAXLENGTH, - XML_SCHEMA_FACET_MINLENGTH, - XML_SCHEMA_EXTRA_QNAMEREF = 2000, - XML_SCHEMA_EXTRA_ATTR_USE_PROHIB -} xmlSchemaTypeType; - -typedef enum { - XML_SCHEMA_CONTENT_UNKNOWN = 0, - XML_SCHEMA_CONTENT_EMPTY = 1, - XML_SCHEMA_CONTENT_ELEMENTS, - XML_SCHEMA_CONTENT_MIXED, - XML_SCHEMA_CONTENT_SIMPLE, - XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */ - XML_SCHEMA_CONTENT_BASIC, - XML_SCHEMA_CONTENT_ANY -} xmlSchemaContentType; - -typedef struct _xmlSchemaVal xmlSchemaVal; -typedef xmlSchemaVal *xmlSchemaValPtr; - -typedef struct _xmlSchemaType xmlSchemaType; -typedef xmlSchemaType *xmlSchemaTypePtr; - -typedef struct _xmlSchemaFacet xmlSchemaFacet; -typedef xmlSchemaFacet *xmlSchemaFacetPtr; - -/** - * Annotation - */ -typedef struct _xmlSchemaAnnot xmlSchemaAnnot; -typedef xmlSchemaAnnot *xmlSchemaAnnotPtr; -struct _xmlSchemaAnnot { - struct _xmlSchemaAnnot *next; - xmlNodePtr content; /* the annotation */ -}; - -/** - * XML_SCHEMAS_ANYATTR_SKIP: - * - * Skip unknown attribute from validation - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_SKIP 1 -/** - * XML_SCHEMAS_ANYATTR_LAX: - * - * Ignore validation non definition on attributes - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_LAX 2 -/** - * XML_SCHEMAS_ANYATTR_STRICT: - * - * Apply strict validation rules on attributes - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_STRICT 3 -/** - * XML_SCHEMAS_ANY_SKIP: - * - * Skip unknown attribute from validation - */ -#define XML_SCHEMAS_ANY_SKIP 1 -/** - * XML_SCHEMAS_ANY_LAX: - * - * Used by wildcards. - * Validate if type found, don't worry if not found - */ -#define XML_SCHEMAS_ANY_LAX 2 -/** - * XML_SCHEMAS_ANY_STRICT: - * - * Used by wildcards. - * Apply strict validation rules - */ -#define XML_SCHEMAS_ANY_STRICT 3 -/** - * XML_SCHEMAS_ATTR_USE_PROHIBITED: - * - * Used by wildcards. - * The attribute is prohibited. - */ -#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0 -/** - * XML_SCHEMAS_ATTR_USE_REQUIRED: - * - * The attribute is required. - */ -#define XML_SCHEMAS_ATTR_USE_REQUIRED 1 -/** - * XML_SCHEMAS_ATTR_USE_OPTIONAL: - * - * The attribute is optional. - */ -#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2 -/** - * XML_SCHEMAS_ATTR_GLOBAL: - * - * allow elements in no namespace - */ -#define XML_SCHEMAS_ATTR_GLOBAL 1 << 0 -/** - * XML_SCHEMAS_ATTR_NSDEFAULT: - * - * allow elements in no namespace - */ -#define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7 -/** - * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED: - * - * this is set when the "type" and "ref" references - * have been resolved. - */ -#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED 1 << 8 -/** - * XML_SCHEMAS_ATTR_FIXED: - * - * the attribute has a fixed value - */ -#define XML_SCHEMAS_ATTR_FIXED 1 << 9 - -/** - * xmlSchemaAttribute: - * An attribute definition. - */ - -typedef struct _xmlSchemaAttribute xmlSchemaAttribute; -typedef xmlSchemaAttribute *xmlSchemaAttributePtr; -struct _xmlSchemaAttribute { - xmlSchemaTypeType type; - struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */ - const xmlChar *name; /* the name of the declaration */ - const xmlChar *id; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - const xmlChar *typeName; /* the local name of the type definition */ - const xmlChar *typeNs; /* the ns URI of the type definition */ - xmlSchemaAnnotPtr annot; - - xmlSchemaTypePtr base; /* Deprecated; not used */ - int occurs; /* Deprecated; not used */ - const xmlChar *defValue; /* The initial value of the value constraint */ - xmlSchemaTypePtr subtypes; /* the type definition */ - xmlNodePtr node; - const xmlChar *targetNamespace; - int flags; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaValPtr defVal; /* The compiled value constraint */ - xmlSchemaAttributePtr refDecl; /* Deprecated; not used */ -}; - -/** - * xmlSchemaAttributeLink: - * Used to build a list of attribute uses on complexType definitions. - * WARNING: Deprecated; not used. - */ -typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink; -typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr; -struct _xmlSchemaAttributeLink { - struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */ - struct _xmlSchemaAttribute *attr;/* the linked attribute */ -}; - -/** - * XML_SCHEMAS_WILDCARD_COMPLETE: - * - * If the wildcard is complete. - */ -#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0 - -/** - * xmlSchemaCharValueLink: - * Used to build a list of namespaces on wildcards. - */ -typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs; -typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr; -struct _xmlSchemaWildcardNs { - struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */ - const xmlChar *value;/* the value */ -}; - -/** - * xmlSchemaWildcard. - * A wildcard. - */ -typedef struct _xmlSchemaWildcard xmlSchemaWildcard; -typedef xmlSchemaWildcard *xmlSchemaWildcardPtr; -struct _xmlSchemaWildcard { - xmlSchemaTypeType type; /* The kind of type */ - const xmlChar *id; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - int processContents; - int any; /* Indicates if the ns constraint is of ##any */ - xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */ - xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */ - int flags; -}; - -/** - * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED: - * - * The attribute wildcard has been already builded. - */ -#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0 -/** - * XML_SCHEMAS_ATTRGROUP_GLOBAL: - * - * The attribute wildcard has been already builded. - */ -#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1 -/** - * XML_SCHEMAS_ATTRGROUP_MARKED: - * - * Marks the attr group as marked; used for circular checks. - */ -#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2 - -/** - * XML_SCHEMAS_ATTRGROUP_REDEFINED: - * - * The attr group was redefined. - */ -#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3 -/** - * XML_SCHEMAS_ATTRGROUP_HAS_REFS: - * - * Whether this attr. group contains attr. group references. - */ -#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4 - -/** - * An attribute group definition. - * - * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures - * must be kept similar - */ -typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup; -typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr; -struct _xmlSchemaAttributeGroup { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ - const xmlChar *name; - const xmlChar *id; - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - - xmlSchemaAttributePtr attributes; /* Deprecated; not used */ - xmlNodePtr node; - int flags; - xmlSchemaWildcardPtr attributeWildcard; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */ - const xmlChar *targetNamespace; - void *attrUses; -}; - -/** - * xmlSchemaTypeLink: - * Used to build a list of types (e.g. member types of - * simpleType with variety "union"). - */ -typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink; -typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr; -struct _xmlSchemaTypeLink { - struct _xmlSchemaTypeLink *next;/* the next type link ... */ - xmlSchemaTypePtr type;/* the linked type */ -}; - -/** - * xmlSchemaFacetLink: - * Used to build a list of facets. - */ -typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink; -typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr; -struct _xmlSchemaFacetLink { - struct _xmlSchemaFacetLink *next;/* the next facet link ... */ - xmlSchemaFacetPtr facet;/* the linked facet */ -}; - -/** - * XML_SCHEMAS_TYPE_MIXED: - * - * the element content type is mixed - */ -#define XML_SCHEMAS_TYPE_MIXED 1 << 0 -/** - * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION: - * - * the simple or complex type has a derivation method of "extension". - */ -#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION 1 << 1 -/** - * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION: - * - * the simple or complex type has a derivation method of "restriction". - */ -#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION 1 << 2 -/** - * XML_SCHEMAS_TYPE_GLOBAL: - * - * the type is global - */ -#define XML_SCHEMAS_TYPE_GLOBAL 1 << 3 -/** - * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD: - * - * the complexType owns an attribute wildcard, i.e. - * it can be freed by the complexType - */ -#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD 1 << 4 /* Obsolete. */ -/** - * XML_SCHEMAS_TYPE_VARIETY_ABSENT: - * - * the simpleType has a variety of "absent". - * TODO: Actually not necessary :-/, since if - * none of the variety flags occur then it's - * automatically absent. - */ -#define XML_SCHEMAS_TYPE_VARIETY_ABSENT 1 << 5 -/** - * XML_SCHEMAS_TYPE_VARIETY_LIST: - * - * the simpleType has a variety of "list". - */ -#define XML_SCHEMAS_TYPE_VARIETY_LIST 1 << 6 -/** - * XML_SCHEMAS_TYPE_VARIETY_UNION: - * - * the simpleType has a variety of "union". - */ -#define XML_SCHEMAS_TYPE_VARIETY_UNION 1 << 7 -/** - * XML_SCHEMAS_TYPE_VARIETY_ATOMIC: - * - * the simpleType has a variety of "union". - */ -#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC 1 << 8 -/** - * XML_SCHEMAS_TYPE_FINAL_EXTENSION: - * - * the complexType has a final of "extension". - */ -#define XML_SCHEMAS_TYPE_FINAL_EXTENSION 1 << 9 -/** - * XML_SCHEMAS_TYPE_FINAL_RESTRICTION: - * - * the simpleType/complexType has a final of "restriction". - */ -#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION 1 << 10 -/** - * XML_SCHEMAS_TYPE_FINAL_LIST: - * - * the simpleType has a final of "list". - */ -#define XML_SCHEMAS_TYPE_FINAL_LIST 1 << 11 -/** - * XML_SCHEMAS_TYPE_FINAL_UNION: - * - * the simpleType has a final of "union". - */ -#define XML_SCHEMAS_TYPE_FINAL_UNION 1 << 12 -/** - * XML_SCHEMAS_TYPE_FINAL_DEFAULT: - * - * the simpleType has a final of "default". - */ -#define XML_SCHEMAS_TYPE_FINAL_DEFAULT 1 << 13 -/** - * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE: - * - * Marks the item as a builtin primitive. - */ -#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE 1 << 14 -/** - * XML_SCHEMAS_TYPE_MARKED: - * - * Marks the item as marked; used for circular checks. - */ -#define XML_SCHEMAS_TYPE_MARKED 1 << 16 -/** - * XML_SCHEMAS_TYPE_BLOCK_DEFAULT: - * - * the complexType did not specify 'block' so use the default of the - * item. - */ -#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT 1 << 17 -/** - * XML_SCHEMAS_TYPE_BLOCK_EXTENSION: - * - * the complexType has a 'block' of "extension". - */ -#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION 1 << 18 -/** - * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION: - * - * the complexType has a 'block' of "restriction". - */ -#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION 1 << 19 -/** - * XML_SCHEMAS_TYPE_ABSTRACT: - * - * the simple/complexType is abstract. - */ -#define XML_SCHEMAS_TYPE_ABSTRACT 1 << 20 -/** - * XML_SCHEMAS_TYPE_FACETSNEEDVALUE: - * - * indicates if the facets need a computed value - */ -#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE 1 << 21 -/** - * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED: - * - * indicates that the type was typefixed - */ -#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED 1 << 22 -/** - * XML_SCHEMAS_TYPE_INTERNAL_INVALID: - * - * indicates that the type is invalid - */ -#define XML_SCHEMAS_TYPE_INTERNAL_INVALID 1 << 23 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE: - * - * a whitespace-facet value of "preserve" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE 1 << 24 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE: - * - * a whitespace-facet value of "replace" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE 1 << 25 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE: - * - * a whitespace-facet value of "collapse" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE 1 << 26 -/** - * XML_SCHEMAS_TYPE_HAS_FACETS: - * - * has facets - */ -#define XML_SCHEMAS_TYPE_HAS_FACETS 1 << 27 -/** - * XML_SCHEMAS_TYPE_NORMVALUENEEDED: - * - * indicates if the facets (pattern) need a normalized value - */ -#define XML_SCHEMAS_TYPE_NORMVALUENEEDED 1 << 28 - -/** - * XML_SCHEMAS_TYPE_FIXUP_1: - * - * First stage of fixup was done. - */ -#define XML_SCHEMAS_TYPE_FIXUP_1 1 << 29 - -/** - * XML_SCHEMAS_TYPE_REDEFINED: - * - * The type was redefined. - */ -#define XML_SCHEMAS_TYPE_REDEFINED 1 << 30 -/** - * XML_SCHEMAS_TYPE_REDEFINING: - * - * The type redefines an other type. - */ -/* #define XML_SCHEMAS_TYPE_REDEFINING 1 << 31 */ - -/** - * _xmlSchemaType: - * - * Schemas type definition. - */ -struct _xmlSchemaType { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaType *next; /* the next type if in a sequence ... */ - const xmlChar *name; - const xmlChar *id ; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlSchemaTypePtr subtypes; - xmlSchemaAttributePtr attributes; /* Deprecated; not used */ - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - - int flags; - xmlSchemaContentType contentType; - const xmlChar *base; /* Base type's local name */ - const xmlChar *baseNs; /* Base type's target namespace */ - xmlSchemaTypePtr baseType; /* The base type component */ - xmlSchemaFacetPtr facets; /* Local facets */ - struct _xmlSchemaType *redef; /* Deprecated; not used */ - int recurse; /* Obsolete */ - xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */ - xmlSchemaWildcardPtr attributeWildcard; - int builtInType; /* Type of built-in types. */ - xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */ - xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */ - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types. - Could we use @subtypes for this? */ - xmlRegexpPtr contModel; /* Holds the automaton of the content model */ - const xmlChar *targetNamespace; - void *attrUses; -}; - -/* - * xmlSchemaElement: - * An element definition. - * - * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of - * structures must be kept similar - */ -/** - * XML_SCHEMAS_ELEM_NILLABLE: - * - * the element is nillable - */ -#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 -/** - * XML_SCHEMAS_ELEM_GLOBAL: - * - * the element is global - */ -#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 -/** - * XML_SCHEMAS_ELEM_DEFAULT: - * - * the element has a default value - */ -#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 -/** - * XML_SCHEMAS_ELEM_FIXED: - * - * the element has a fixed value - */ -#define XML_SCHEMAS_ELEM_FIXED 1 << 3 -/** - * XML_SCHEMAS_ELEM_ABSTRACT: - * - * the element is abstract - */ -#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 -/** - * XML_SCHEMAS_ELEM_TOPLEVEL: - * - * the element is top level - * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead - */ -#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 -/** - * XML_SCHEMAS_ELEM_REF: - * - * the element is a reference to a type - */ -#define XML_SCHEMAS_ELEM_REF 1 << 6 -/** - * XML_SCHEMAS_ELEM_NSDEFAULT: - * - * allow elements in no namespace - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7 -/** - * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED: - * - * this is set when "type", "ref", "substitutionGroup" - * references have been resolved. - */ -#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED 1 << 8 - /** - * XML_SCHEMAS_ELEM_CIRCULAR: - * - * a helper flag for the search of circular references. - */ -#define XML_SCHEMAS_ELEM_CIRCULAR 1 << 9 -/** - * XML_SCHEMAS_ELEM_BLOCK_ABSENT: - * - * the "block" attribute is absent - */ -#define XML_SCHEMAS_ELEM_BLOCK_ABSENT 1 << 10 -/** - * XML_SCHEMAS_ELEM_BLOCK_EXTENSION: - * - * disallowed substitutions are absent - */ -#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION 1 << 11 -/** - * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION: - * - * disallowed substitutions: "restriction" - */ -#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION 1 << 12 -/** - * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION: - * - * disallowed substitutions: "substituion" - */ -#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION 1 << 13 -/** - * XML_SCHEMAS_ELEM_FINAL_ABSENT: - * - * substitution group exclusions are absent - */ -#define XML_SCHEMAS_ELEM_FINAL_ABSENT 1 << 14 -/** - * XML_SCHEMAS_ELEM_FINAL_EXTENSION: - * - * substitution group exclusions: "extension" - */ -#define XML_SCHEMAS_ELEM_FINAL_EXTENSION 1 << 15 -/** - * XML_SCHEMAS_ELEM_FINAL_RESTRICTION: - * - * substitution group exclusions: "restriction" - */ -#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION 1 << 16 -/** - * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD: - * - * the declaration is a substitution group head - */ -#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD 1 << 17 -/** - * XML_SCHEMAS_ELEM_INTERNAL_CHECKED: - * - * this is set when the elem decl has been checked against - * all constraints - */ -#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED 1 << 18 - -typedef struct _xmlSchemaElement xmlSchemaElement; -typedef xmlSchemaElement *xmlSchemaElementPtr; -struct _xmlSchemaElement { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaType *next; /* Not used? */ - const xmlChar *name; - const xmlChar *id; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlSchemaTypePtr subtypes; /* the type definition */ - xmlSchemaAttributePtr attributes; - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - - int flags; - const xmlChar *targetNamespace; - const xmlChar *namedType; - const xmlChar *namedTypeNs; - const xmlChar *substGroup; - const xmlChar *substGroupNs; - const xmlChar *scope; - const xmlChar *value; /* The original value of the value constraint. */ - struct _xmlSchemaElement *refDecl; /* This will now be used for the - substitution group affiliation */ - xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */ - xmlSchemaContentType contentType; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaValPtr defVal; /* The compiled value contraint. */ - void *idcs; /* The identity-constraint defs */ -}; - -/* - * XML_SCHEMAS_FACET_UNKNOWN: - * - * unknown facet handling - */ -#define XML_SCHEMAS_FACET_UNKNOWN 0 -/* - * XML_SCHEMAS_FACET_PRESERVE: - * - * preserve the type of the facet - */ -#define XML_SCHEMAS_FACET_PRESERVE 1 -/* - * XML_SCHEMAS_FACET_REPLACE: - * - * replace the type of the facet - */ -#define XML_SCHEMAS_FACET_REPLACE 2 -/* - * XML_SCHEMAS_FACET_COLLAPSE: - * - * collapse the types of the facet - */ -#define XML_SCHEMAS_FACET_COLLAPSE 3 -/** - * A facet definition. - */ -struct _xmlSchemaFacet { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ - const xmlChar *value; /* The original value */ - const xmlChar *id; /* Obsolete */ - xmlSchemaAnnotPtr annot; - xmlNodePtr node; - int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */ - int whitespace; - xmlSchemaValPtr val; /* The compiled value */ - xmlRegexpPtr regexp; /* The regex for patterns */ -}; - -/** - * A notation definition. - */ -typedef struct _xmlSchemaNotation xmlSchemaNotation; -typedef xmlSchemaNotation *xmlSchemaNotationPtr; -struct _xmlSchemaNotation { - xmlSchemaTypeType type; /* The kind of type */ - const xmlChar *name; - xmlSchemaAnnotPtr annot; - const xmlChar *identifier; - const xmlChar *targetNamespace; -}; - -/* -* TODO: Actually all those flags used for the schema should sit -* on the schema parser context, since they are used only -* during parsing an XML schema document, and not available -* on the component level as per spec. -*/ -/** - * XML_SCHEMAS_QUALIF_ELEM: - * - * Reflects elementFormDefault == qualified in - * an XML schema document. - */ -#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 -/** - * XML_SCHEMAS_QUALIF_ATTR: - * - * Reflects attributeFormDefault == qualified in - * an XML schema document. - */ -#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 -/** - * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION: - * - * the schema has "extension" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION 1 << 2 -/** - * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION: - * - * the schema has "restriction" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION 1 << 3 -/** - * XML_SCHEMAS_FINAL_DEFAULT_LIST: - * - * the cshema has "list" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_LIST 1 << 4 -/** - * XML_SCHEMAS_FINAL_DEFAULT_UNION: - * - * the schema has "union" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_UNION 1 << 5 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION: - * - * the schema has "extension" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION 1 << 6 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION: - * - * the schema has "restriction" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION 1 << 7 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION: - * - * the schema has "substitution" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION 1 << 8 -/** - * XML_SCHEMAS_INCLUDING_CONVERT_NS: - * - * the schema is currently including an other schema with - * no target namespace. - */ -#define XML_SCHEMAS_INCLUDING_CONVERT_NS 1 << 9 -/** - * _xmlSchema: - * - * A Schemas definition - */ -struct _xmlSchema { - const xmlChar *name; /* schema name */ - const xmlChar *targetNamespace; /* the target namespace */ - const xmlChar *version; - const xmlChar *id; /* Obsolete */ - xmlDocPtr doc; - xmlSchemaAnnotPtr annot; - int flags; - - xmlHashTablePtr typeDecl; - xmlHashTablePtr attrDecl; - xmlHashTablePtr attrgrpDecl; - xmlHashTablePtr elemDecl; - xmlHashTablePtr notaDecl; - - xmlHashTablePtr schemasImports; - - void *_private; /* unused by the library for users or bindings */ - xmlHashTablePtr groupDecl; - xmlDictPtr dict; - void *includes; /* the includes, this is opaque for now */ - int preserve; /* whether to free the document */ - int counter; /* used to give ononymous components unique names */ - xmlHashTablePtr idcDef; /* All identity-constraint defs. */ - void *volatiles; /* Obsolete */ -}; - -XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type); -XMLPUBFUN void XMLCALL xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_INTERNALS_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/schematron.h b/sdk/Windows/2019.2/include/libxml2/libxml/schematron.h deleted file mode 100755 index e47ba0c..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/schematron.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Summary: XML Schemastron implementation - * Description: interface to the XML Schematron validity checking. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMATRON_H__ -#define __XML_SCHEMATRON_H__ - -#include - -#ifdef LIBXML_SCHEMATRON_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMATRON_OUT_QUIET = 1 << 0, /* quiet no report */ - XML_SCHEMATRON_OUT_TEXT = 1 << 1, /* build a textual report */ - XML_SCHEMATRON_OUT_XML = 1 << 2, /* output SVRL */ - XML_SCHEMATRON_OUT_ERROR = 1 << 3, /* output via xmlStructuredErrorFunc */ - XML_SCHEMATRON_OUT_FILE = 1 << 8, /* output to a file descriptor */ - XML_SCHEMATRON_OUT_BUFFER = 1 << 9, /* output to a buffer */ - XML_SCHEMATRON_OUT_IO = 1 << 10 /* output to I/O mechanism */ -} xmlSchematronValidOptions; - -/** - * The schemas related types are kept internal - */ -typedef struct _xmlSchematron xmlSchematron; -typedef xmlSchematron *xmlSchematronPtr; - -/** - * xmlSchematronValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from a Schematron validation - */ -typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...); - -/** - * xmlSchematronValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from a Schematron validation - */ -typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...); - -/** - * A schemas validation context - */ -typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt; -typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr; - -typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt; -typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr; - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewMemParserCtxt(const char *buffer, - int size); -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewDocParserCtxt(xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt); -/***** -XMLPUBFUN void XMLCALL - xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt, - xmlSchematronValidityErrorFunc err, - xmlSchematronValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt, - xmlSchematronValidityErrorFunc * err, - xmlSchematronValidityWarningFunc * warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt); - *****/ -XMLPUBFUN xmlSchematronPtr XMLCALL - xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchematronFree (xmlSchematronPtr schema); -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlSchematronSetValidStructuredErrors( - xmlSchematronValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -/****** -XMLPUBFUN void XMLCALL - xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt, - xmlSchematronValidityErrorFunc err, - xmlSchematronValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchematronGetValidErrors (xmlSchematronValidCtxtPtr ctxt, - xmlSchematronValidityErrorFunc *err, - xmlSchematronValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt, - int options); -XMLPUBFUN int XMLCALL - xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt, - xmlNodePtr elem); - *******/ - -XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL - xmlSchematronNewValidCtxt (xmlSchematronPtr schema, - int options); -XMLPUBFUN void XMLCALL - xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt, - xmlDocPtr instance); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMATRON_ENABLED */ -#endif /* __XML_SCHEMATRON_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/threads.h b/sdk/Windows/2019.2/include/libxml2/libxml/threads.h deleted file mode 100755 index e5a6d9f..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/threads.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Summary: interfaces for thread handling - * Description: set of generic threading related routines - * should work with pthreads, Windows native or TLS threads - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_THREADS_H__ -#define __XML_THREADS_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * xmlMutex are a simple mutual exception locks. - */ -typedef struct _xmlMutex xmlMutex; -typedef xmlMutex *xmlMutexPtr; - -/* - * xmlRMutex are reentrant mutual exception locks. - */ -typedef struct _xmlRMutex xmlRMutex; -typedef xmlRMutex *xmlRMutexPtr; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN xmlMutexPtr XMLCALL - xmlNewMutex (void); -XMLPUBFUN void XMLCALL - xmlMutexLock (xmlMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlMutexUnlock (xmlMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlFreeMutex (xmlMutexPtr tok); - -XMLPUBFUN xmlRMutexPtr XMLCALL - xmlNewRMutex (void); -XMLPUBFUN void XMLCALL - xmlRMutexLock (xmlRMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlRMutexUnlock (xmlRMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlFreeRMutex (xmlRMutexPtr tok); - -/* - * Library wide APIs. - */ -XMLPUBFUN void XMLCALL - xmlInitThreads (void); -XMLPUBFUN void XMLCALL - xmlLockLibrary (void); -XMLPUBFUN void XMLCALL - xmlUnlockLibrary(void); -XMLPUBFUN int XMLCALL - xmlGetThreadId (void); -XMLPUBFUN int XMLCALL - xmlIsMainThread (void); -XMLPUBFUN void XMLCALL - xmlCleanupThreads(void); -XMLPUBFUN xmlGlobalStatePtr XMLCALL - xmlGetGlobalState(void); - -#ifdef HAVE_PTHREAD_H -#elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL)) -#if defined(LIBXML_STATIC_FOR_DLL) -int XMLCALL -xmlDllMain(void *hinstDLL, unsigned long fdwReason, - void *lpvReserved); -#endif -#endif - -#ifdef __cplusplus -} -#endif - - -#endif /* __XML_THREADS_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/tree.h b/sdk/Windows/2019.2/include/libxml2/libxml/tree.h deleted file mode 100755 index 2db2c3a..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/tree.h +++ /dev/null @@ -1,1311 +0,0 @@ -/* - * Summary: interfaces for tree manipulation - * Description: this module describes the structures found in an tree resulting - * from an XML or HTML parsing, as well as the API provided for - * various processing on that tree - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_TREE_H__ -#define __XML_TREE_H__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Some of the basic types pointer to structures: - */ -/* xmlIO.h */ -typedef struct _xmlParserInputBuffer xmlParserInputBuffer; -typedef xmlParserInputBuffer *xmlParserInputBufferPtr; - -typedef struct _xmlOutputBuffer xmlOutputBuffer; -typedef xmlOutputBuffer *xmlOutputBufferPtr; - -/* parser.h */ -typedef struct _xmlParserInput xmlParserInput; -typedef xmlParserInput *xmlParserInputPtr; - -typedef struct _xmlParserCtxt xmlParserCtxt; -typedef xmlParserCtxt *xmlParserCtxtPtr; - -typedef struct _xmlSAXLocator xmlSAXLocator; -typedef xmlSAXLocator *xmlSAXLocatorPtr; - -typedef struct _xmlSAXHandler xmlSAXHandler; -typedef xmlSAXHandler *xmlSAXHandlerPtr; - -/* entities.h */ -typedef struct _xmlEntity xmlEntity; -typedef xmlEntity *xmlEntityPtr; - -/** - * BASE_BUFFER_SIZE: - * - * default buffer size 4000. - */ -#define BASE_BUFFER_SIZE 4096 - -/** - * LIBXML_NAMESPACE_DICT: - * - * Defines experimental behaviour: - * 1) xmlNs gets an additional field @context (a xmlDoc) - * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc. - */ -/* #define LIBXML_NAMESPACE_DICT */ - -/** - * xmlBufferAllocationScheme: - * - * A buffer allocation scheme can be defined to either match exactly the - * need or double it's allocated size each time it is found too small. - */ - -typedef enum { - XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ - XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ - XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ - XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ - XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ - XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ -} xmlBufferAllocationScheme; - -/** - * xmlBuffer: - * - * A buffer structure, this old construct is limited to 2GB and - * is being deprecated, use API with xmlBuf instead - */ -typedef struct _xmlBuffer xmlBuffer; -typedef xmlBuffer *xmlBufferPtr; -struct _xmlBuffer { - xmlChar *content; /* The buffer content UTF8 */ - unsigned int use; /* The buffer size used */ - unsigned int size; /* The buffer size */ - xmlBufferAllocationScheme alloc; /* The realloc method */ - xmlChar *contentIO; /* in IO mode we may have a different base */ -}; - -/** - * xmlBuf: - * - * A buffer structure, new one, the actual structure internals are not public - */ - -typedef struct _xmlBuf xmlBuf; - -/** - * xmlBufPtr: - * - * A pointer to a buffer structure, the actual structure internals are not - * public - */ - -typedef xmlBuf *xmlBufPtr; - -/* - * A few public routines for xmlBuf. As those are expected to be used - * mostly internally the bulk of the routines are internal in buf.h - */ -XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); -XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); -XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); -XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); - -/* - * LIBXML2_NEW_BUFFER: - * - * Macro used to express that the API use the new buffers for - * xmlParserInputBuffer and xmlOutputBuffer. The change was - * introduced in 2.9.0. - */ -#define LIBXML2_NEW_BUFFER - -/** - * XML_XML_NAMESPACE: - * - * This is the namespace for the special xml: prefix predefined in the - * XML Namespace specification. - */ -#define XML_XML_NAMESPACE \ - (const xmlChar *) "http://www.w3.org/XML/1998/namespace" - -/** - * XML_XML_ID: - * - * This is the name for the special xml:id attribute - */ -#define XML_XML_ID (const xmlChar *) "xml:id" - -/* - * The different element types carried by an XML tree. - * - * NOTE: This is synchronized with DOM Level1 values - * See http://www.w3.org/TR/REC-DOM-Level-1/ - * - * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should - * be deprecated to use an XML_DTD_NODE. - */ -typedef enum { - XML_ELEMENT_NODE= 1, - XML_ATTRIBUTE_NODE= 2, - XML_TEXT_NODE= 3, - XML_CDATA_SECTION_NODE= 4, - XML_ENTITY_REF_NODE= 5, - XML_ENTITY_NODE= 6, - XML_PI_NODE= 7, - XML_COMMENT_NODE= 8, - XML_DOCUMENT_NODE= 9, - XML_DOCUMENT_TYPE_NODE= 10, - XML_DOCUMENT_FRAG_NODE= 11, - XML_NOTATION_NODE= 12, - XML_HTML_DOCUMENT_NODE= 13, - XML_DTD_NODE= 14, - XML_ELEMENT_DECL= 15, - XML_ATTRIBUTE_DECL= 16, - XML_ENTITY_DECL= 17, - XML_NAMESPACE_DECL= 18, - XML_XINCLUDE_START= 19, - XML_XINCLUDE_END= 20 -#ifdef LIBXML_DOCB_ENABLED - ,XML_DOCB_DOCUMENT_NODE= 21 -#endif -} xmlElementType; - - -/** - * xmlNotation: - * - * A DTD Notation definition. - */ - -typedef struct _xmlNotation xmlNotation; -typedef xmlNotation *xmlNotationPtr; -struct _xmlNotation { - const xmlChar *name; /* Notation name */ - const xmlChar *PublicID; /* Public identifier, if any */ - const xmlChar *SystemID; /* System identifier, if any */ -}; - -/** - * xmlAttributeType: - * - * A DTD Attribute type definition. - */ - -typedef enum { - XML_ATTRIBUTE_CDATA = 1, - XML_ATTRIBUTE_ID, - XML_ATTRIBUTE_IDREF , - XML_ATTRIBUTE_IDREFS, - XML_ATTRIBUTE_ENTITY, - XML_ATTRIBUTE_ENTITIES, - XML_ATTRIBUTE_NMTOKEN, - XML_ATTRIBUTE_NMTOKENS, - XML_ATTRIBUTE_ENUMERATION, - XML_ATTRIBUTE_NOTATION -} xmlAttributeType; - -/** - * xmlAttributeDefault: - * - * A DTD Attribute default definition. - */ - -typedef enum { - XML_ATTRIBUTE_NONE = 1, - XML_ATTRIBUTE_REQUIRED, - XML_ATTRIBUTE_IMPLIED, - XML_ATTRIBUTE_FIXED -} xmlAttributeDefault; - -/** - * xmlEnumeration: - * - * List structure used when there is an enumeration in DTDs. - */ - -typedef struct _xmlEnumeration xmlEnumeration; -typedef xmlEnumeration *xmlEnumerationPtr; -struct _xmlEnumeration { - struct _xmlEnumeration *next; /* next one */ - const xmlChar *name; /* Enumeration name */ -}; - -/** - * xmlAttribute: - * - * An Attribute declaration in a DTD. - */ - -typedef struct _xmlAttribute xmlAttribute; -typedef xmlAttribute *xmlAttributePtr; -struct _xmlAttribute { - void *_private; /* application data */ - xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */ - const xmlChar *name; /* Attribute name */ - struct _xmlNode *children; /* NULL */ - struct _xmlNode *last; /* NULL */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - struct _xmlAttribute *nexth; /* next in hash table */ - xmlAttributeType atype; /* The attribute type */ - xmlAttributeDefault def; /* the default */ - const xmlChar *defaultValue; /* or the default value */ - xmlEnumerationPtr tree; /* or the enumeration tree if any */ - const xmlChar *prefix; /* the namespace prefix if any */ - const xmlChar *elem; /* Element holding the attribute */ -}; - -/** - * xmlElementContentType: - * - * Possible definitions of element content types. - */ -typedef enum { - XML_ELEMENT_CONTENT_PCDATA = 1, - XML_ELEMENT_CONTENT_ELEMENT, - XML_ELEMENT_CONTENT_SEQ, - XML_ELEMENT_CONTENT_OR -} xmlElementContentType; - -/** - * xmlElementContentOccur: - * - * Possible definitions of element content occurrences. - */ -typedef enum { - XML_ELEMENT_CONTENT_ONCE = 1, - XML_ELEMENT_CONTENT_OPT, - XML_ELEMENT_CONTENT_MULT, - XML_ELEMENT_CONTENT_PLUS -} xmlElementContentOccur; - -/** - * xmlElementContent: - * - * An XML Element content as stored after parsing an element definition - * in a DTD. - */ - -typedef struct _xmlElementContent xmlElementContent; -typedef xmlElementContent *xmlElementContentPtr; -struct _xmlElementContent { - xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */ - xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */ - const xmlChar *name; /* Element name */ - struct _xmlElementContent *c1; /* first child */ - struct _xmlElementContent *c2; /* second child */ - struct _xmlElementContent *parent; /* parent */ - const xmlChar *prefix; /* Namespace prefix */ -}; - -/** - * xmlElementTypeVal: - * - * The different possibilities for an element content type. - */ - -typedef enum { - XML_ELEMENT_TYPE_UNDEFINED = 0, - XML_ELEMENT_TYPE_EMPTY = 1, - XML_ELEMENT_TYPE_ANY, - XML_ELEMENT_TYPE_MIXED, - XML_ELEMENT_TYPE_ELEMENT -} xmlElementTypeVal; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlElement: - * - * An XML Element declaration from a DTD. - */ - -typedef struct _xmlElement xmlElement; -typedef xmlElement *xmlElementPtr; -struct _xmlElement { - void *_private; /* application data */ - xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */ - const xmlChar *name; /* Element name */ - struct _xmlNode *children; /* NULL */ - struct _xmlNode *last; /* NULL */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - xmlElementTypeVal etype; /* The type */ - xmlElementContentPtr content; /* the allowed element content */ - xmlAttributePtr attributes; /* List of the declared attributes */ - const xmlChar *prefix; /* the namespace prefix if any */ -#ifdef LIBXML_REGEXP_ENABLED - xmlRegexpPtr contModel; /* the validating regexp */ -#else - void *contModel; -#endif -}; - - -/** - * XML_LOCAL_NAMESPACE: - * - * A namespace declaration node. - */ -#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL -typedef xmlElementType xmlNsType; - -/** - * xmlNs: - * - * An XML namespace. - * Note that prefix == NULL is valid, it defines the default namespace - * within the subtree (until overridden). - * - * xmlNsType is unified with xmlElementType. - */ - -typedef struct _xmlNs xmlNs; -typedef xmlNs *xmlNsPtr; -struct _xmlNs { - struct _xmlNs *next; /* next Ns link for this node */ - xmlNsType type; /* global or local */ - const xmlChar *href; /* URL for the namespace */ - const xmlChar *prefix; /* prefix for the namespace */ - void *_private; /* application data */ - struct _xmlDoc *context; /* normally an xmlDoc */ -}; - -/** - * xmlDtd: - * - * An XML DTD, as defined by parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - /* End of common part */ - void *notations; /* Hash table for notations if any */ - void *elements; /* Hash table for elements if any */ - void *attributes; /* Hash table for attributes if any */ - void *entities; /* Hash table for entities if any */ - const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */ - const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */ - void *pentities; /* Hash table for param entities if any */ -}; - -/** - * xmlAttr: - * - * An attribute on an XML node. - */ -typedef struct _xmlAttr xmlAttr; -typedef xmlAttr *xmlAttrPtr; -struct _xmlAttr { - void *_private; /* application data */ - xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */ - const xmlChar *name; /* the name of the property */ - struct _xmlNode *children; /* the value of the property */ - struct _xmlNode *last; /* NULL */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlAttr *next; /* next sibling link */ - struct _xmlAttr *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - xmlNs *ns; /* pointer to the associated namespace */ - xmlAttributeType atype; /* the attribute type if validating */ - void *psvi; /* for type/PSVI informations */ -}; - -/** - * xmlID: - * - * An XML ID instance. - */ - -typedef struct _xmlID xmlID; -typedef xmlID *xmlIDPtr; -struct _xmlID { - struct _xmlID *next; /* next ID */ - const xmlChar *value; /* The ID name */ - xmlAttrPtr attr; /* The attribute holding it */ - const xmlChar *name; /* The attribute if attr is not available */ - int lineno; /* The line number if attr is not available */ - struct _xmlDoc *doc; /* The document holding the ID */ -}; - -/** - * xmlRef: - * - * An XML IDREF instance. - */ - -typedef struct _xmlRef xmlRef; -typedef xmlRef *xmlRefPtr; -struct _xmlRef { - struct _xmlRef *next; /* next Ref */ - const xmlChar *value; /* The Ref name */ - xmlAttrPtr attr; /* The attribute holding it */ - const xmlChar *name; /* The attribute if attr is not available */ - int lineno; /* The line number if attr is not available */ -}; - -/** - * xmlNode: - * - * A node in an XML tree. - */ -typedef struct _xmlNode xmlNode; -typedef xmlNode *xmlNodePtr; -struct _xmlNode { - void *_private; /* application data */ - xmlElementType type; /* type number, must be second ! */ - const xmlChar *name; /* the name of the node, or the entity */ - struct _xmlNode *children; /* parent->childs link */ - struct _xmlNode *last; /* last child link */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - /* End of common part */ - xmlNs *ns; /* pointer to the associated namespace */ - xmlChar *content; /* the content */ - struct _xmlAttr *properties;/* properties list */ - xmlNs *nsDef; /* namespace definitions on this node */ - void *psvi; /* for type/PSVI informations */ - unsigned short line; /* line number */ - unsigned short extra; /* extra data for XPath/XSLT */ -}; - -/** - * XML_GET_CONTENT: - * - * Macro to extract the content pointer of a node. - */ -#define XML_GET_CONTENT(n) \ - ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content) - -/** - * XML_GET_LINE: - * - * Macro to extract the line number of an element node. - */ -#define XML_GET_LINE(n) \ - (xmlGetLineNo(n)) - -/** - * xmlDocProperty - * - * Set of properties of the document as found by the parser - * Some of them are linked to similary named xmlParserOption - */ -typedef enum { - XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ - XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ - XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ - XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ - XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ - XML_DOC_USERBUILT = 1<<5, /* Document was built using the API - and not by parsing an instance */ - XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ - XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ -} xmlDocProperties; - -/** - * xmlDoc: - * - * An XML document. - */ -typedef struct _xmlDoc xmlDoc; -typedef xmlDoc *xmlDocPtr; -struct _xmlDoc { - void *_private; /* application data */ - xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */ - char *name; /* name/filename/URI of the document */ - struct _xmlNode *children; /* the document tree */ - struct _xmlNode *last; /* last child link */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* autoreference to itself */ - - /* End of common part */ - int compression;/* level of zlib compression */ - int standalone; /* standalone document (no external refs) - 1 if standalone="yes" - 0 if standalone="no" - -1 if there is no XML declaration - -2 if there is an XML declaration, but no - standalone attribute was specified */ - struct _xmlDtd *intSubset; /* the document internal subset */ - struct _xmlDtd *extSubset; /* the document external subset */ - struct _xmlNs *oldNs; /* Global namespace, the old way */ - const xmlChar *version; /* the XML version string */ - const xmlChar *encoding; /* external initial encoding, if any */ - void *ids; /* Hash table for ID attributes if any */ - void *refs; /* Hash table for IDREFs attributes if any */ - const xmlChar *URL; /* The URI for that document */ - int charset; /* encoding of the in-memory content - actually an xmlCharEncoding */ - struct _xmlDict *dict; /* dict used to allocate names or NULL */ - void *psvi; /* for type/PSVI informations */ - int parseFlags; /* set of xmlParserOption used to parse the - document */ - int properties; /* set of xmlDocProperties for this document - set at the end of parsing */ -}; - - -typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt; -typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr; - -/** - * xmlDOMWrapAcquireNsFunction: - * @ctxt: a DOM wrapper context - * @node: the context node (element or attribute) - * @nsName: the requested namespace name - * @nsPrefix: the requested namespace prefix - * - * A function called to acquire namespaces (xmlNs) from the wrapper. - * - * Returns an xmlNsPtr or NULL in case of an error. - */ -typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt, - xmlNodePtr node, - const xmlChar *nsName, - const xmlChar *nsPrefix); - -/** - * xmlDOMWrapCtxt: - * - * Context for DOM wrapper-operations. - */ -struct _xmlDOMWrapCtxt { - void * _private; - /* - * The type of this context, just in case we need specialized - * contexts in the future. - */ - int type; - /* - * Internal namespace map used for various operations. - */ - void * namespaceMap; - /* - * Use this one to acquire an xmlNsPtr intended for node->ns. - * (Note that this is not intended for elem->nsDef). - */ - xmlDOMWrapAcquireNsFunction getNsForNodeFunc; -}; - -/** - * xmlChildrenNode: - * - * Macro for compatibility naming layer with libxml1. Maps - * to "children." - */ -#ifndef xmlChildrenNode -#define xmlChildrenNode children -#endif - -/** - * xmlRootNode: - * - * Macro for compatibility naming layer with libxml1. Maps - * to "children". - */ -#ifndef xmlRootNode -#define xmlRootNode children -#endif - -/* - * Variables. - */ - -/* - * Some helper functions - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ - defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ - defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ - defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateNCName (const xmlChar *value, - int space); -#endif - -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateQName (const xmlChar *value, - int space); -XMLPUBFUN int XMLCALL - xmlValidateName (const xmlChar *value, - int space); -XMLPUBFUN int XMLCALL - xmlValidateNMToken (const xmlChar *value, - int space); -#endif - -XMLPUBFUN xmlChar * XMLCALL - xmlBuildQName (const xmlChar *ncname, - const xmlChar *prefix, - xmlChar *memory, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlSplitQName2 (const xmlChar *name, - xmlChar **prefix); -XMLPUBFUN const xmlChar * XMLCALL - xmlSplitQName3 (const xmlChar *name, - int *len); - -/* - * Handling Buffers, the old ones see @xmlBuf for the new ones. - */ - -XMLPUBFUN void XMLCALL - xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); -XMLPUBFUN xmlBufferAllocationScheme XMLCALL - xmlGetBufferAllocationScheme(void); - -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreate (void); -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreateSize (size_t size); -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreateStatic (void *mem, - size_t size); -XMLPUBFUN int XMLCALL - xmlBufferResize (xmlBufferPtr buf, - unsigned int size); -XMLPUBFUN void XMLCALL - xmlBufferFree (xmlBufferPtr buf); -XMLPUBFUN int XMLCALL - xmlBufferDump (FILE *file, - xmlBufferPtr buf); -XMLPUBFUN int XMLCALL - xmlBufferAdd (xmlBufferPtr buf, - const xmlChar *str, - int len); -XMLPUBFUN int XMLCALL - xmlBufferAddHead (xmlBufferPtr buf, - const xmlChar *str, - int len); -XMLPUBFUN int XMLCALL - xmlBufferCat (xmlBufferPtr buf, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlBufferCCat (xmlBufferPtr buf, - const char *str); -XMLPUBFUN int XMLCALL - xmlBufferShrink (xmlBufferPtr buf, - unsigned int len); -XMLPUBFUN int XMLCALL - xmlBufferGrow (xmlBufferPtr buf, - unsigned int len); -XMLPUBFUN void XMLCALL - xmlBufferEmpty (xmlBufferPtr buf); -XMLPUBFUN const xmlChar* XMLCALL - xmlBufferContent (const xmlBuffer *buf); -XMLPUBFUN xmlChar* XMLCALL - xmlBufferDetach (xmlBufferPtr buf); -XMLPUBFUN void XMLCALL - xmlBufferSetAllocationScheme(xmlBufferPtr buf, - xmlBufferAllocationScheme scheme); -XMLPUBFUN int XMLCALL - xmlBufferLength (const xmlBuffer *buf); - -/* - * Creating/freeing new structures. - */ -XMLPUBFUN xmlDtdPtr XMLCALL - xmlCreateIntSubset (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlNewDtd (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlGetIntSubset (const xmlDoc *doc); -XMLPUBFUN void XMLCALL - xmlFreeDtd (xmlDtdPtr cur); -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN xmlNsPtr XMLCALL - xmlNewGlobalNs (xmlDocPtr doc, - const xmlChar *href, - const xmlChar *prefix); -#endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlNsPtr XMLCALL - xmlNewNs (xmlNodePtr node, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - xmlFreeNs (xmlNsPtr cur); -XMLPUBFUN void XMLCALL - xmlFreeNsList (xmlNsPtr cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlNewDoc (const xmlChar *version); -XMLPUBFUN void XMLCALL - xmlFreeDoc (xmlDocPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewDocProp (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *value); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewProp (xmlNodePtr node, - const xmlChar *name, - const xmlChar *value); -#endif -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewNsPropEatName (xmlNodePtr node, - xmlNsPtr ns, - xmlChar *name, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlFreePropList (xmlAttrPtr cur); -XMLPUBFUN void XMLCALL - xmlFreeProp (xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlCopyProp (xmlNodePtr target, - xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlCopyPropList (xmlNodePtr target, - xmlAttrPtr cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL - xmlCopyDtd (xmlDtdPtr dtd); -#endif /* LIBXML_TREE_ENABLED */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlDocPtr XMLCALL - xmlCopyDoc (xmlDocPtr doc, - int recursive); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ -/* - * Creating new nodes. - */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocNode (xmlDocPtr doc, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocNodeEatName (xmlDocPtr doc, - xmlNsPtr ns, - xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewNode (xmlNsPtr ns, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewNodeEatName (xmlNsPtr ns, - xmlChar *name); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewChild (xmlNodePtr parent, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -#endif -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocText (const xmlDoc *doc, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewText (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocPI (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewPI (const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocTextLen (xmlDocPtr doc, - const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewTextLen (const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocComment (xmlDocPtr doc, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewComment (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewCDataBlock (xmlDocPtr doc, - const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewCharRef (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewReference (const xmlDoc *doc, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNode (xmlNodePtr node, - int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNode (xmlNodePtr node, - xmlDocPtr doc, - int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNodeList (xmlDocPtr doc, - xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNodeList (xmlNodePtr node); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewTextChild (xmlNodePtr parent, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocRawNode (xmlDocPtr doc, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocFragment (xmlDocPtr doc); -#endif /* LIBXML_TREE_ENABLED */ - -/* - * Navigating. - */ -XMLPUBFUN long XMLCALL - xmlGetLineNo (const xmlNode *node); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) -XMLPUBFUN xmlChar * XMLCALL - xmlGetNodePath (const xmlNode *node); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocGetRootElement (const xmlDoc *doc); -XMLPUBFUN xmlNodePtr XMLCALL - xmlGetLastChild (const xmlNode *parent); -XMLPUBFUN int XMLCALL - xmlNodeIsText (const xmlNode *node); -XMLPUBFUN int XMLCALL - xmlIsBlankNode (const xmlNode *node); - -/* - * Changing the structure. - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocSetRootElement (xmlDocPtr doc, - xmlNodePtr root); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetName (xmlNodePtr cur, - const xmlChar *name); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddChild (xmlNodePtr parent, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddChildList (xmlNodePtr parent, - xmlNodePtr cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlReplaceNode (xmlNodePtr old, - xmlNodePtr cur); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddPrevSibling (xmlNodePtr cur, - xmlNodePtr elem); -#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddSibling (xmlNodePtr cur, - xmlNodePtr elem); -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddNextSibling (xmlNodePtr cur, - xmlNodePtr elem); -XMLPUBFUN void XMLCALL - xmlUnlinkNode (xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextMerge (xmlNodePtr first, - xmlNodePtr second); -XMLPUBFUN int XMLCALL - xmlTextConcat (xmlNodePtr node, - const xmlChar *content, - int len); -XMLPUBFUN void XMLCALL - xmlFreeNodeList (xmlNodePtr cur); -XMLPUBFUN void XMLCALL - xmlFreeNode (xmlNodePtr cur); -XMLPUBFUN void XMLCALL - xmlSetTreeDoc (xmlNodePtr tree, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSetListDoc (xmlNodePtr list, - xmlDocPtr doc); -/* - * Namespaces. - */ -XMLPUBFUN xmlNsPtr XMLCALL - xmlSearchNs (xmlDocPtr doc, - xmlNodePtr node, - const xmlChar *nameSpace); -XMLPUBFUN xmlNsPtr XMLCALL - xmlSearchNsByHref (xmlDocPtr doc, - xmlNodePtr node, - const xmlChar *href); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNsPtr * XMLCALL - xmlGetNsList (const xmlDoc *doc, - const xmlNode *node); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ - -XMLPUBFUN void XMLCALL - xmlSetNs (xmlNodePtr node, - xmlNsPtr ns); -XMLPUBFUN xmlNsPtr XMLCALL - xmlCopyNamespace (xmlNsPtr cur); -XMLPUBFUN xmlNsPtr XMLCALL - xmlCopyNamespaceList (xmlNsPtr cur); - -/* - * Changing the content. - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL - xmlSetProp (xmlNodePtr node, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlSetNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *value); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ -XMLPUBFUN xmlChar * XMLCALL - xmlGetNoNsProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlGetProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasNsProp (const xmlNode *node, - const xmlChar *name, - const xmlChar *nameSpace); -XMLPUBFUN xmlChar * XMLCALL - xmlGetNsProp (const xmlNode *node, - const xmlChar *name, - const xmlChar *nameSpace); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringGetNodeList (const xmlDoc *doc, - const xmlChar *value); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringLenGetNodeList (const xmlDoc *doc, - const xmlChar *value, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetString (xmlDocPtr doc, - const xmlNode *list, - int inLine); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetRawString (const xmlDoc *doc, - const xmlNode *list, - int inLine); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNodeSetContent (xmlNodePtr cur, - const xmlChar *content); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetContentLen (xmlNodePtr cur, - const xmlChar *content, - int len); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNodeAddContent (xmlNodePtr cur, - const xmlChar *content); -XMLPUBFUN void XMLCALL - xmlNodeAddContentLen (xmlNodePtr cur, - const xmlChar *content, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetContent (const xmlNode *cur); - -XMLPUBFUN int XMLCALL - xmlNodeBufGetContent (xmlBufferPtr buffer, - const xmlNode *cur); -XMLPUBFUN int XMLCALL - xmlBufGetNodeContent (xmlBufPtr buf, - const xmlNode *cur); - -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetLang (const xmlNode *cur); -XMLPUBFUN int XMLCALL - xmlNodeGetSpacePreserve (const xmlNode *cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetLang (xmlNodePtr cur, - const xmlChar *lang); -XMLPUBFUN void XMLCALL - xmlNodeSetSpacePreserve (xmlNodePtr cur, - int val); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetBase (const xmlDoc *doc, - const xmlNode *cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN void XMLCALL - xmlNodeSetBase (xmlNodePtr cur, - const xmlChar *uri); -#endif - -/* - * Removing content. - */ -XMLPUBFUN int XMLCALL - xmlRemoveProp (xmlAttrPtr cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlUnsetNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlUnsetProp (xmlNodePtr node, - const xmlChar *name); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ - -/* - * Internal, don't use. - */ -XMLPUBFUN void XMLCALL - xmlBufferWriteCHAR (xmlBufferPtr buf, - const xmlChar *string); -XMLPUBFUN void XMLCALL - xmlBufferWriteChar (xmlBufferPtr buf, - const char *string); -XMLPUBFUN void XMLCALL - xmlBufferWriteQuotedString(xmlBufferPtr buf, - const xmlChar *string); - -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf, - xmlDocPtr doc, - xmlAttrPtr attr, - const xmlChar *string); -#endif /* LIBXML_OUTPUT_ENABLED */ - -#ifdef LIBXML_TREE_ENABLED -/* - * Namespace handling. - */ -XMLPUBFUN int XMLCALL - xmlReconciliateNs (xmlDocPtr doc, - xmlNodePtr tree); -#endif - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Saving. - */ -XMLPUBFUN void XMLCALL - xmlDocDumpFormatMemory (xmlDocPtr cur, - xmlChar **mem, - int *size, - int format); -XMLPUBFUN void XMLCALL - xmlDocDumpMemory (xmlDocPtr cur, - xmlChar **mem, - int *size); -XMLPUBFUN void XMLCALL - xmlDocDumpMemoryEnc (xmlDocPtr out_doc, - xmlChar **doc_txt_ptr, - int * doc_txt_len, - const char *txt_encoding); -XMLPUBFUN void XMLCALL - xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, - xmlChar **doc_txt_ptr, - int * doc_txt_len, - const char *txt_encoding, - int format); -XMLPUBFUN int XMLCALL - xmlDocFormatDump (FILE *f, - xmlDocPtr cur, - int format); -XMLPUBFUN int XMLCALL - xmlDocDump (FILE *f, - xmlDocPtr cur); -XMLPUBFUN void XMLCALL - xmlElemDump (FILE *f, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN int XMLCALL - xmlSaveFile (const char *filename, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - xmlSaveFormatFile (const char *filename, - xmlDocPtr cur, - int format); -XMLPUBFUN size_t XMLCALL - xmlBufNodeDump (xmlBufPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format); -XMLPUBFUN int XMLCALL - xmlNodeDump (xmlBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format); - -XMLPUBFUN int XMLCALL - xmlSaveFileTo (xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN int XMLCALL - xmlSaveFormatFileTo (xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - xmlNodeDumpOutput (xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format, - const char *encoding); - -XMLPUBFUN int XMLCALL - xmlSaveFormatFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding, - int format); - -XMLPUBFUN int XMLCALL - xmlSaveFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding); - -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * XHTML - */ -XMLPUBFUN int XMLCALL - xmlIsXHTML (const xmlChar *systemID, - const xmlChar *publicID); - -/* - * Compression. - */ -XMLPUBFUN int XMLCALL - xmlGetDocCompressMode (const xmlDoc *doc); -XMLPUBFUN void XMLCALL - xmlSetDocCompressMode (xmlDocPtr doc, - int mode); -XMLPUBFUN int XMLCALL - xmlGetCompressMode (void); -XMLPUBFUN void XMLCALL - xmlSetCompressMode (int mode); - -/* -* DOM-wrapper helper functions. -*/ -XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL - xmlDOMWrapNewCtxt (void); -XMLPUBFUN void XMLCALL - xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt, - xmlNodePtr elem, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr sourceDoc, - xmlNodePtr node, - xmlDocPtr destDoc, - xmlNodePtr destParent, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr node, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr sourceDoc, - xmlNodePtr node, - xmlNodePtr *clonedNode, - xmlDocPtr destDoc, - xmlNodePtr destParent, - int deep, - int options); - -#ifdef LIBXML_TREE_ENABLED -/* - * 5 interfaces from DOM ElementTraversal, but different in entities - * traversal. - */ -XMLPUBFUN unsigned long XMLCALL - xmlChildElementCount (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNextElementSibling (xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlFirstElementChild (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlLastElementChild (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlPreviousElementSibling (xmlNodePtr node); -#endif -#ifdef __cplusplus -} -#endif -#ifndef __XML_PARSER_H__ -#include -#endif - -#endif /* __XML_TREE_H__ */ - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/uri.h b/sdk/Windows/2019.2/include/libxml2/libxml/uri.h deleted file mode 100755 index 47795fd..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/uri.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Summary: library of generic URI related routines - * Description: library of generic URI related routines - * Implements RFC 2396 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_URI_H__ -#define __XML_URI_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlURI: - * - * A parsed URI reference. This is a struct containing the various fields - * as described in RFC 2396 but separated for further processing. - * - * Note: query is a deprecated field which is incorrectly unescaped. - * query_raw takes precedence over query if the former is set. - * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 - */ -typedef struct _xmlURI xmlURI; -typedef xmlURI *xmlURIPtr; -struct _xmlURI { - char *scheme; /* the URI scheme */ - char *opaque; /* opaque part */ - char *authority; /* the authority part */ - char *server; /* the server part */ - char *user; /* the user part */ - int port; /* the port number */ - char *path; /* the path string */ - char *query; /* the query string (deprecated - use with caution) */ - char *fragment; /* the fragment identifier */ - int cleanup; /* parsing potentially unclean URI */ - char *query_raw; /* the query string (as it appears in the URI) */ -}; - -/* - * This function is in tree.h: - * xmlChar * xmlNodeGetBase (xmlDocPtr doc, - * xmlNodePtr cur); - */ -XMLPUBFUN xmlURIPtr XMLCALL - xmlCreateURI (void); -XMLPUBFUN xmlChar * XMLCALL - xmlBuildURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlChar * XMLCALL - xmlBuildRelativeURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlURIPtr XMLCALL - xmlParseURI (const char *str); -XMLPUBFUN xmlURIPtr XMLCALL - xmlParseURIRaw (const char *str, - int raw); -XMLPUBFUN int XMLCALL - xmlParseURIReference (xmlURIPtr uri, - const char *str); -XMLPUBFUN xmlChar * XMLCALL - xmlSaveUri (xmlURIPtr uri); -XMLPUBFUN void XMLCALL - xmlPrintURI (FILE *stream, - xmlURIPtr uri); -XMLPUBFUN xmlChar * XMLCALL - xmlURIEscapeStr (const xmlChar *str, - const xmlChar *list); -XMLPUBFUN char * XMLCALL - xmlURIUnescapeString (const char *str, - int len, - char *target); -XMLPUBFUN int XMLCALL - xmlNormalizeURIPath (char *path); -XMLPUBFUN xmlChar * XMLCALL - xmlURIEscape (const xmlChar *str); -XMLPUBFUN void XMLCALL - xmlFreeURI (xmlURIPtr uri); -XMLPUBFUN xmlChar* XMLCALL - xmlCanonicPath (const xmlChar *path); -XMLPUBFUN xmlChar* XMLCALL - xmlPathToURI (const xmlChar *path); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_URI_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/valid.h b/sdk/Windows/2019.2/include/libxml2/libxml/valid.h deleted file mode 100755 index cabbd94..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/valid.h +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Summary: The DTD validation - * Description: API for the DTD handling and the validity checking - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_VALID_H__ -#define __XML_VALID_H__ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Validation state added for non-determinist content model. - */ -typedef struct _xmlValidState xmlValidState; -typedef xmlValidState *xmlValidStatePtr; - -/** - * xmlValidityErrorFunc: - * @ctx: usually an xmlValidCtxtPtr to a validity error context, - * but comes from ctxt->userData (which normally contains such - * a pointer); ctxt->userData can be changed by the user. - * @msg: the string to format *printf like vararg - * @...: remaining arguments to the format - * - * Callback called when a validity error is found. This is a message - * oriented function similar to an *printf function. - */ -typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlValidityWarningFunc: - * @ctx: usually an xmlValidCtxtPtr to a validity error context, - * but comes from ctxt->userData (which normally contains such - * a pointer); ctxt->userData can be changed by the user. - * @msg: the string to format *printf like vararg - * @...: remaining arguments to the format - * - * Callback called when a validity warning is found. This is a message - * oriented function similar to an *printf function. - */ -typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -#ifdef IN_LIBXML -/** - * XML_CTXT_FINISH_DTD_0: - * - * Special value for finishDtd field when embedded in an xmlParserCtxt - */ -#define XML_CTXT_FINISH_DTD_0 0xabcd1234 -/** - * XML_CTXT_FINISH_DTD_1: - * - * Special value for finishDtd field when embedded in an xmlParserCtxt - */ -#define XML_CTXT_FINISH_DTD_1 0xabcd1235 -#endif - -/* - * xmlValidCtxt: - * An xmlValidCtxt is used for error reporting when validating. - */ -typedef struct _xmlValidCtxt xmlValidCtxt; -typedef xmlValidCtxt *xmlValidCtxtPtr; -struct _xmlValidCtxt { - void *userData; /* user specific data block */ - xmlValidityErrorFunc error; /* the callback in case of errors */ - xmlValidityWarningFunc warning; /* the callback in case of warning */ - - /* Node analysis stack used when validating within entities */ - xmlNodePtr node; /* Current parsed Node */ - int nodeNr; /* Depth of the parsing stack */ - int nodeMax; /* Max depth of the parsing stack */ - xmlNodePtr *nodeTab; /* array of nodes */ - - unsigned int finishDtd; /* finished validating the Dtd ? */ - xmlDocPtr doc; /* the document */ - int valid; /* temporary validity check result */ - - /* state state used for non-determinist content validation */ - xmlValidState *vstate; /* current state */ - int vstateNr; /* Depth of the validation stack */ - int vstateMax; /* Max depth of the validation stack */ - xmlValidState *vstateTab; /* array of validation states */ - -#ifdef LIBXML_REGEXP_ENABLED - xmlAutomataPtr am; /* the automata */ - xmlAutomataStatePtr state; /* used to build the automata */ -#else - void *am; - void *state; -#endif -}; - -/* - * ALL notation declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlNotationTable; -typedef xmlNotationTable *xmlNotationTablePtr; - -/* - * ALL element declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlElementTable; -typedef xmlElementTable *xmlElementTablePtr; - -/* - * ALL attribute declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlAttributeTable; -typedef xmlAttributeTable *xmlAttributeTablePtr; - -/* - * ALL IDs attributes are stored in a table. - * There is one table per document. - */ - -typedef struct _xmlHashTable xmlIDTable; -typedef xmlIDTable *xmlIDTablePtr; - -/* - * ALL Refs attributes are stored in a table. - * There is one table per document. - */ - -typedef struct _xmlHashTable xmlRefTable; -typedef xmlRefTable *xmlRefTablePtr; - -/* Notation */ -XMLPUBFUN xmlNotationPtr XMLCALL - xmlAddNotationDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *name, - const xmlChar *PublicID, - const xmlChar *SystemID); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNotationTablePtr XMLCALL - xmlCopyNotationTable (xmlNotationTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeNotationTable (xmlNotationTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpNotationDecl (xmlBufferPtr buf, - xmlNotationPtr nota); -XMLPUBFUN void XMLCALL - xmlDumpNotationTable (xmlBufferPtr buf, - xmlNotationTablePtr table); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* Element Content */ -/* the non Doc version are being deprecated */ -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlNewElementContent (const xmlChar *name, - xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlCopyElementContent (xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlFreeElementContent (xmlElementContentPtr cur); -/* the new versions with doc argument */ -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlNewDocElementContent (xmlDocPtr doc, - const xmlChar *name, - xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlCopyDocElementContent(xmlDocPtr doc, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlFreeDocElementContent(xmlDocPtr doc, - xmlElementContentPtr cur); -XMLPUBFUN void XMLCALL - xmlSnprintfElementContent(char *buf, - int size, - xmlElementContentPtr content, - int englob); -#ifdef LIBXML_OUTPUT_ENABLED -/* DEPRECATED */ -XMLPUBFUN void XMLCALL - xmlSprintfElementContent(char *buf, - xmlElementContentPtr content, - int englob); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* DEPRECATED */ - -/* Element */ -XMLPUBFUN xmlElementPtr XMLCALL - xmlAddElementDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *name, - xmlElementTypeVal type, - xmlElementContentPtr content); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlElementTablePtr XMLCALL - xmlCopyElementTable (xmlElementTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeElementTable (xmlElementTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpElementTable (xmlBufferPtr buf, - xmlElementTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpElementDecl (xmlBufferPtr buf, - xmlElementPtr elem); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* Enumeration */ -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlCreateEnumeration (const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlFreeEnumeration (xmlEnumerationPtr cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlCopyEnumeration (xmlEnumerationPtr cur); -#endif /* LIBXML_TREE_ENABLED */ - -/* Attribute */ -XMLPUBFUN xmlAttributePtr XMLCALL - xmlAddAttributeDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name, - const xmlChar *ns, - xmlAttributeType type, - xmlAttributeDefault def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlAttributeTablePtr XMLCALL - xmlCopyAttributeTable (xmlAttributeTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeAttributeTable (xmlAttributeTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpAttributeTable (xmlBufferPtr buf, - xmlAttributeTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpAttributeDecl (xmlBufferPtr buf, - xmlAttributePtr attr); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* IDs */ -XMLPUBFUN xmlIDPtr XMLCALL - xmlAddID (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *value, - xmlAttrPtr attr); -XMLPUBFUN void XMLCALL - xmlFreeIDTable (xmlIDTablePtr table); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlGetID (xmlDocPtr doc, - const xmlChar *ID); -XMLPUBFUN int XMLCALL - xmlIsID (xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveID (xmlDocPtr doc, - xmlAttrPtr attr); - -/* IDREFs */ -XMLPUBFUN xmlRefPtr XMLCALL - xmlAddRef (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *value, - xmlAttrPtr attr); -XMLPUBFUN void XMLCALL - xmlFreeRefTable (xmlRefTablePtr table); -XMLPUBFUN int XMLCALL - xmlIsRef (xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveRef (xmlDocPtr doc, - xmlAttrPtr attr); -XMLPUBFUN xmlListPtr XMLCALL - xmlGetRefs (xmlDocPtr doc, - const xmlChar *ID); - -/** - * The public function calls related to validity checking. - */ -#ifdef LIBXML_VALID_ENABLED -/* Allocate/Release Validation Contexts */ -XMLPUBFUN xmlValidCtxtPtr XMLCALL - xmlNewValidCtxt(void); -XMLPUBFUN void XMLCALL - xmlFreeValidCtxt(xmlValidCtxtPtr); - -XMLPUBFUN int XMLCALL - xmlValidateRoot (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateElementDecl (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlElementPtr elem); -XMLPUBFUN xmlChar * XMLCALL - xmlValidNormalizeAttributeValue(xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlAttributePtr attr); -XMLPUBFUN int XMLCALL - xmlValidateAttributeValue(xmlAttributeType type, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNotationDecl (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNotationPtr nota); -XMLPUBFUN int XMLCALL - xmlValidateDtd (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlDtdPtr dtd); -XMLPUBFUN int XMLCALL - xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateDocument (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlValidateOneElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlValidateOneAttribute (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateOneNamespace (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *prefix, - xmlNsPtr ns, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -#endif /* LIBXML_VALID_ENABLED */ - -#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateNotationUse (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *notationName); -#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */ - -XMLPUBFUN int XMLCALL - xmlIsMixedElement (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL - xmlGetDtdAttrDesc (xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL - xmlGetDtdQAttrDesc (xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN xmlNotationPtr XMLCALL - xmlGetDtdNotationDesc (xmlDtdPtr dtd, - const xmlChar *name); -XMLPUBFUN xmlElementPtr XMLCALL - xmlGetDtdQElementDesc (xmlDtdPtr dtd, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN xmlElementPtr XMLCALL - xmlGetDtdElementDesc (xmlDtdPtr dtd, - const xmlChar *name); - -#ifdef LIBXML_VALID_ENABLED - -XMLPUBFUN int XMLCALL - xmlValidGetPotentialChildren(xmlElementContent *ctree, - const xmlChar **names, - int *len, - int max); - -XMLPUBFUN int XMLCALL - xmlValidGetValidElements(xmlNode *prev, - xmlNode *next, - const xmlChar **names, - int max); -XMLPUBFUN int XMLCALL - xmlValidateNameValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNamesValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNmtokenValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNmtokensValue(const xmlChar *value); - -#ifdef LIBXML_REGEXP_ENABLED -/* - * Validation based on the regexp support - */ -XMLPUBFUN int XMLCALL - xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, - xmlElementPtr elem); - -XMLPUBFUN int XMLCALL - xmlValidatePushElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *qname); -XMLPUBFUN int XMLCALL - xmlValidatePushCData (xmlValidCtxtPtr ctxt, - const xmlChar *data, - int len); -XMLPUBFUN int XMLCALL - xmlValidatePopElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *qname); -#endif /* LIBXML_REGEXP_ENABLED */ -#endif /* LIBXML_VALID_ENABLED */ -#ifdef __cplusplus -} -#endif -#endif /* __XML_VALID_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xinclude.h b/sdk/Windows/2019.2/include/libxml2/libxml/xinclude.h deleted file mode 100755 index f9c5131..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xinclude.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Summary: implementation of XInclude - * Description: API to handle XInclude processing, - * implements the - * World Wide Web Consortium Last Call Working Draft 10 November 2003 - * http://www.w3.org/TR/2003/WD-xinclude-20031110 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XINCLUDE_H__ -#define __XML_XINCLUDE_H__ - -#include -#include - -#ifdef LIBXML_XINCLUDE_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XINCLUDE_NS: - * - * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude - */ -#define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude" -/** - * XINCLUDE_OLD_NS: - * - * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude - */ -#define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude" -/** - * XINCLUDE_NODE: - * - * Macro defining "include" - */ -#define XINCLUDE_NODE (const xmlChar *) "include" -/** - * XINCLUDE_FALLBACK: - * - * Macro defining "fallback" - */ -#define XINCLUDE_FALLBACK (const xmlChar *) "fallback" -/** - * XINCLUDE_HREF: - * - * Macro defining "href" - */ -#define XINCLUDE_HREF (const xmlChar *) "href" -/** - * XINCLUDE_PARSE: - * - * Macro defining "parse" - */ -#define XINCLUDE_PARSE (const xmlChar *) "parse" -/** - * XINCLUDE_PARSE_XML: - * - * Macro defining "xml" - */ -#define XINCLUDE_PARSE_XML (const xmlChar *) "xml" -/** - * XINCLUDE_PARSE_TEXT: - * - * Macro defining "text" - */ -#define XINCLUDE_PARSE_TEXT (const xmlChar *) "text" -/** - * XINCLUDE_PARSE_ENCODING: - * - * Macro defining "encoding" - */ -#define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding" -/** - * XINCLUDE_PARSE_XPOINTER: - * - * Macro defining "xpointer" - */ -#define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer" - -typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt; -typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr; - -/* - * standalone processing - */ -XMLPUBFUN int XMLCALL - xmlXIncludeProcess (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessFlags (xmlDocPtr doc, - int flags); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessFlagsData(xmlDocPtr doc, - int flags, - void *data); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, - int flags, - void *data); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTree (xmlNodePtr tree); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTreeFlags(xmlNodePtr tree, - int flags); -/* - * contextual processing - */ -XMLPUBFUN xmlXIncludeCtxtPtr XMLCALL - xmlXIncludeNewContext (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXIncludeSetFlags (xmlXIncludeCtxtPtr ctxt, - int flags); -XMLPUBFUN void XMLCALL - xmlXIncludeFreeContext (xmlXIncludeCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessNode (xmlXIncludeCtxtPtr ctxt, - xmlNodePtr tree); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XINCLUDE_ENABLED */ - -#endif /* __XML_XINCLUDE_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xlink.h b/sdk/Windows/2019.2/include/libxml2/libxml/xlink.h deleted file mode 100755 index 79e75e1..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xlink.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Summary: unfinished XLink detection module - * Description: unfinished XLink detection module - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XLINK_H__ -#define __XML_XLINK_H__ - -#include -#include - -#ifdef LIBXML_XPTR_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Various defines for the various Link properties. - * - * NOTE: the link detection layer will try to resolve QName expansion - * of namespaces. If "foo" is the prefix for "http://foo.com/" - * then the link detection layer will expand role="foo:myrole" - * to "http://foo.com/:myrole". - * NOTE: the link detection layer will expand URI-Refences found on - * href attributes by using the base mechanism if found. - */ -typedef xmlChar *xlinkHRef; -typedef xmlChar *xlinkRole; -typedef xmlChar *xlinkTitle; - -typedef enum { - XLINK_TYPE_NONE = 0, - XLINK_TYPE_SIMPLE, - XLINK_TYPE_EXTENDED, - XLINK_TYPE_EXTENDED_SET -} xlinkType; - -typedef enum { - XLINK_SHOW_NONE = 0, - XLINK_SHOW_NEW, - XLINK_SHOW_EMBED, - XLINK_SHOW_REPLACE -} xlinkShow; - -typedef enum { - XLINK_ACTUATE_NONE = 0, - XLINK_ACTUATE_AUTO, - XLINK_ACTUATE_ONREQUEST -} xlinkActuate; - -/** - * xlinkNodeDetectFunc: - * @ctx: user data pointer - * @node: the node to check - * - * This is the prototype for the link detection routine. - * It calls the default link detection callbacks upon link detection. - */ -typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node); - -/* - * The link detection module interact with the upper layers using - * a set of callback registered at parsing time. - */ - -/** - * xlinkSimpleLinkFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @href: the target of the link - * @role: the role string - * @title: the link title - * - * This is the prototype for a simple link detection callback. - */ -typedef void -(*xlinkSimpleLinkFunk) (void *ctx, - xmlNodePtr node, - const xlinkHRef href, - const xlinkRole role, - const xlinkTitle title); - -/** - * xlinkExtendedLinkFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @nbLocators: the number of locators detected on the link - * @hrefs: pointer to the array of locator hrefs - * @roles: pointer to the array of locator roles - * @nbArcs: the number of arcs detected on the link - * @from: pointer to the array of source roles found on the arcs - * @to: pointer to the array of target roles found on the arcs - * @show: array of values for the show attributes found on the arcs - * @actuate: array of values for the actuate attributes found on the arcs - * @nbTitles: the number of titles detected on the link - * @title: array of titles detected on the link - * @langs: array of xml:lang values for the titles - * - * This is the prototype for a extended link detection callback. - */ -typedef void -(*xlinkExtendedLinkFunk)(void *ctx, - xmlNodePtr node, - int nbLocators, - const xlinkHRef *hrefs, - const xlinkRole *roles, - int nbArcs, - const xlinkRole *from, - const xlinkRole *to, - xlinkShow *show, - xlinkActuate *actuate, - int nbTitles, - const xlinkTitle *titles, - const xmlChar **langs); - -/** - * xlinkExtendedLinkSetFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @nbLocators: the number of locators detected on the link - * @hrefs: pointer to the array of locator hrefs - * @roles: pointer to the array of locator roles - * @nbTitles: the number of titles detected on the link - * @title: array of titles detected on the link - * @langs: array of xml:lang values for the titles - * - * This is the prototype for a extended link set detection callback. - */ -typedef void -(*xlinkExtendedLinkSetFunk) (void *ctx, - xmlNodePtr node, - int nbLocators, - const xlinkHRef *hrefs, - const xlinkRole *roles, - int nbTitles, - const xlinkTitle *titles, - const xmlChar **langs); - -/** - * This is the structure containing a set of Links detection callbacks. - * - * There is no default xlink callbacks, if one want to get link - * recognition activated, those call backs must be provided before parsing. - */ -typedef struct _xlinkHandler xlinkHandler; -typedef xlinkHandler *xlinkHandlerPtr; -struct _xlinkHandler { - xlinkSimpleLinkFunk simple; - xlinkExtendedLinkFunk extended; - xlinkExtendedLinkSetFunk set; -}; - -/* - * The default detection routine, can be overridden, they call the default - * detection callbacks. - */ - -XMLPUBFUN xlinkNodeDetectFunc XMLCALL - xlinkGetDefaultDetect (void); -XMLPUBFUN void XMLCALL - xlinkSetDefaultDetect (xlinkNodeDetectFunc func); - -/* - * Routines to set/get the default handlers. - */ -XMLPUBFUN xlinkHandlerPtr XMLCALL - xlinkGetDefaultHandler (void); -XMLPUBFUN void XMLCALL - xlinkSetDefaultHandler (xlinkHandlerPtr handler); - -/* - * Link detection module itself. - */ -XMLPUBFUN xlinkType XMLCALL - xlinkIsLink (xmlDocPtr doc, - xmlNodePtr node); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPTR_ENABLED */ - -#endif /* __XML_XLINK_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlIO.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlIO.h deleted file mode 100755 index a6a17f7..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlIO.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Summary: interface for the I/O interfaces used by the parser - * Description: interface for the I/O interfaces used by the parser - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_IO_H__ -#define __XML_IO_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Those are the functions and datatypes for the parser input - * I/O structures. - */ - -/** - * xmlInputMatchCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Input API to detect if the current handler - * can provide input fonctionnalities for this resource. - * - * Returns 1 if yes and 0 if another Input module should be used - */ -typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); -/** - * xmlInputOpenCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Input API to open the resource - * - * Returns an Input context or NULL in case or error - */ -typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); -/** - * xmlInputReadCallback: - * @context: an Input context - * @buffer: the buffer to store data read - * @len: the length of the buffer in bytes - * - * Callback used in the I/O Input API to read the resource - * - * Returns the number of bytes read or -1 in case of error - */ -typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); -/** - * xmlInputCloseCallback: - * @context: an Input context - * - * Callback used in the I/O Input API to close the resource - * - * Returns 0 or -1 in case of error - */ -typedef int (XMLCALL *xmlInputCloseCallback) (void * context); - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Those are the functions and datatypes for the library output - * I/O structures. - */ - -/** - * xmlOutputMatchCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Output API to detect if the current handler - * can provide output fonctionnalities for this resource. - * - * Returns 1 if yes and 0 if another Output module should be used - */ -typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); -/** - * xmlOutputOpenCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Output API to open the resource - * - * Returns an Output context or NULL in case or error - */ -typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); -/** - * xmlOutputWriteCallback: - * @context: an Output context - * @buffer: the buffer of data to write - * @len: the length of the buffer in bytes - * - * Callback used in the I/O Output API to write to the resource - * - * Returns the number of bytes written or -1 in case of error - */ -typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, - int len); -/** - * xmlOutputCloseCallback: - * @context: an Output context - * - * Callback used in the I/O Output API to close the resource - * - * Returns 0 or -1 in case of error - */ -typedef int (XMLCALL *xmlOutputCloseCallback) (void * context); -#endif /* LIBXML_OUTPUT_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -struct _xmlParserInputBuffer { - void* context; - xmlInputReadCallback readcallback; - xmlInputCloseCallback closecallback; - - xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ - xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ - int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ - int error; - unsigned long rawconsumed;/* amount consumed from raw */ -}; - - -#ifdef LIBXML_OUTPUT_ENABLED -struct _xmlOutputBuffer { - void* context; - xmlOutputWriteCallback writecallback; - xmlOutputCloseCallback closecallback; - - xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ - xmlBufPtr conv; /* if encoder != NULL buffer for output */ - int written; /* total number of byte written */ - int error; -}; -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* - * Interfaces for input - */ -XMLPUBFUN void XMLCALL - xmlCleanupInputCallbacks (void); - -XMLPUBFUN int XMLCALL - xmlPopInputCallbacks (void); - -XMLPUBFUN void XMLCALL - xmlRegisterDefaultInputCallbacks (void); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlAllocParserInputBuffer (xmlCharEncoding enc); - -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFilename (const char *URI, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFile (FILE *file, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFd (int fd, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateMem (const char *mem, int size, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateStatic (const char *mem, int size, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - xmlParserInputBufferRead (xmlParserInputBufferPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputBufferGrow (xmlParserInputBufferPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputBufferPush (xmlParserInputBufferPtr in, - int len, - const char *buf); -XMLPUBFUN void XMLCALL - xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); -XMLPUBFUN char * XMLCALL - xmlParserGetDirectory (const char *filename); - -XMLPUBFUN int XMLCALL - xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, - xmlInputOpenCallback openFunc, - xmlInputReadCallback readFunc, - xmlInputCloseCallback closeFunc); - -xmlParserInputBufferPtr - __xmlParserInputBufferCreateFilename(const char *URI, - xmlCharEncoding enc); - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Interfaces for output - */ -XMLPUBFUN void XMLCALL - xmlCleanupOutputCallbacks (void); -XMLPUBFUN void XMLCALL - xmlRegisterDefaultOutputCallbacks(void); -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFilename (const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFile (FILE *file, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFd (int fd, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, - xmlOutputCloseCallback ioclose, - void *ioctx, - xmlCharEncodingHandlerPtr encoder); - -/* Couple of APIs to get the output without digging into the buffers */ -XMLPUBFUN const xmlChar * XMLCALL - xmlOutputBufferGetContent (xmlOutputBufferPtr out); -XMLPUBFUN size_t XMLCALL - xmlOutputBufferGetSize (xmlOutputBufferPtr out); - -XMLPUBFUN int XMLCALL - xmlOutputBufferWrite (xmlOutputBufferPtr out, - int len, - const char *buf); -XMLPUBFUN int XMLCALL - xmlOutputBufferWriteString (xmlOutputBufferPtr out, - const char *str); -XMLPUBFUN int XMLCALL - xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, - const xmlChar *str, - xmlCharEncodingOutputFunc escaping); - -XMLPUBFUN int XMLCALL - xmlOutputBufferFlush (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL - xmlOutputBufferClose (xmlOutputBufferPtr out); - -XMLPUBFUN int XMLCALL - xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, - xmlOutputOpenCallback openFunc, - xmlOutputWriteCallback writeFunc, - xmlOutputCloseCallback closeFunc); - -xmlOutputBufferPtr - __xmlOutputBufferCreateFilename(const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -#ifdef LIBXML_HTTP_ENABLED -/* This function only exists if HTTP support built into the library */ -XMLPUBFUN void XMLCALL - xmlRegisterHTTPPostCallbacks (void ); -#endif /* LIBXML_HTTP_ENABLED */ - -#endif /* LIBXML_OUTPUT_ENABLED */ - -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, - xmlParserInputPtr ret); - -/* - * A predefined entity loader disabling network accesses - */ -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNoNetExternalEntityLoader (const char *URL, - const char *ID, - xmlParserCtxtPtr ctxt); - -/* - * xmlNormalizeWindowsPath is obsolete, don't use it. - * Check xmlCanonicPath in uri.h for a better alternative. - */ -XMLPUBFUN xmlChar * XMLCALL - xmlNormalizeWindowsPath (const xmlChar *path); - -XMLPUBFUN int XMLCALL - xmlCheckFilename (const char *path); -/** - * Default 'file://' protocol callbacks - */ -XMLPUBFUN int XMLCALL - xmlFileMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlFileOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlFileRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlFileClose (void * context); - -/** - * Default 'http://' protocol callbacks - */ -#ifdef LIBXML_HTTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOHTTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpen (const char *filename); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpenW (const char * post_uri, - int compression ); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - xmlIOHTTPRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlIOHTTPClose (void * context); -#endif /* LIBXML_HTTP_ENABLED */ - -/** - * Default 'ftp://' protocol callbacks - */ -#ifdef LIBXML_FTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOFTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOFTPOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlIOFTPRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlIOFTPClose (void * context); -#endif /* LIBXML_FTP_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_IO_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlautomata.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlautomata.h deleted file mode 100755 index 7825c1a..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlautomata.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Summary: API to build regexp automata - * Description: the API to build regexp automata - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_AUTOMATA_H__ -#define __XML_AUTOMATA_H__ - -#include -#include - -#ifdef LIBXML_REGEXP_ENABLED -#ifdef LIBXML_AUTOMATA_ENABLED -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlAutomataPtr: - * - * A libxml automata description, It can be compiled into a regexp - */ -typedef struct _xmlAutomata xmlAutomata; -typedef xmlAutomata *xmlAutomataPtr; - -/** - * xmlAutomataStatePtr: - * - * A state int the automata description, - */ -typedef struct _xmlAutomataState xmlAutomataState; -typedef xmlAutomataState *xmlAutomataStatePtr; - -/* - * Building API - */ -XMLPUBFUN xmlAutomataPtr XMLCALL - xmlNewAutomata (void); -XMLPUBFUN void XMLCALL - xmlFreeAutomata (xmlAutomataPtr am); - -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataGetInitState (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL - xmlAutomataSetFinalState (xmlAutomataPtr am, - xmlAutomataStatePtr state); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewState (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewTransition (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewTransition2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewNegTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - void *data); - -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountTrans2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewAllTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int lax); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewEpsilon (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountedTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int counter); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCounterTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int counter); -XMLPUBFUN int XMLCALL - xmlAutomataNewCounter (xmlAutomataPtr am, - int min, - int max); - -XMLPUBFUN xmlRegexpPtr XMLCALL - xmlAutomataCompile (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL - xmlAutomataIsDeterminist (xmlAutomataPtr am); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_AUTOMATA_ENABLED */ -#endif /* LIBXML_REGEXP_ENABLED */ - -#endif /* __XML_AUTOMATA_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlerror.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlerror.h deleted file mode 100755 index d2879b5..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlerror.h +++ /dev/null @@ -1,945 +0,0 @@ -/* - * Summary: error handling - * Description: the API used to report errors - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#include - -#ifndef __XML_ERROR_H__ -#define __XML_ERROR_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlErrorLevel: - * - * Indicates the level of an error - */ -typedef enum { - XML_ERR_NONE = 0, - XML_ERR_WARNING = 1, /* A simple warning */ - XML_ERR_ERROR = 2, /* A recoverable error */ - XML_ERR_FATAL = 3 /* A fatal error */ -} xmlErrorLevel; - -/** - * xmlErrorDomain: - * - * Indicates where an error may have come from - */ -typedef enum { - XML_FROM_NONE = 0, - XML_FROM_PARSER, /* The XML parser */ - XML_FROM_TREE, /* The tree module */ - XML_FROM_NAMESPACE, /* The XML Namespace module */ - XML_FROM_DTD, /* The XML DTD validation with parser context*/ - XML_FROM_HTML, /* The HTML parser */ - XML_FROM_MEMORY, /* The memory allocator */ - XML_FROM_OUTPUT, /* The serialization code */ - XML_FROM_IO, /* The Input/Output stack */ - XML_FROM_FTP, /* The FTP module */ - XML_FROM_HTTP, /* The HTTP module */ - XML_FROM_XINCLUDE, /* The XInclude processing */ - XML_FROM_XPATH, /* The XPath module */ - XML_FROM_XPOINTER, /* The XPointer module */ - XML_FROM_REGEXP, /* The regular expressions module */ - XML_FROM_DATATYPE, /* The W3C XML Schemas Datatype module */ - XML_FROM_SCHEMASP, /* The W3C XML Schemas parser module */ - XML_FROM_SCHEMASV, /* The W3C XML Schemas validation module */ - XML_FROM_RELAXNGP, /* The Relax-NG parser module */ - XML_FROM_RELAXNGV, /* The Relax-NG validator module */ - XML_FROM_CATALOG, /* The Catalog module */ - XML_FROM_C14N, /* The Canonicalization module */ - XML_FROM_XSLT, /* The XSLT engine from libxslt */ - XML_FROM_VALID, /* The XML DTD validation with valid context */ - XML_FROM_CHECK, /* The error checking module */ - XML_FROM_WRITER, /* The xmlwriter module */ - XML_FROM_MODULE, /* The dynamically loaded module module*/ - XML_FROM_I18N, /* The module handling character conversion */ - XML_FROM_SCHEMATRONV,/* The Schematron validator module */ - XML_FROM_BUFFER, /* The buffers module */ - XML_FROM_URI /* The URI module */ -} xmlErrorDomain; - -/** - * xmlError: - * - * An XML Error instance. - */ - -typedef struct _xmlError xmlError; -typedef xmlError *xmlErrorPtr; -struct _xmlError { - int domain; /* What part of the library raised this error */ - int code; /* The error code, e.g. an xmlParserError */ - char *message;/* human-readable informative error message */ - xmlErrorLevel level;/* how consequent is the error */ - char *file; /* the filename */ - int line; /* the line number if available */ - char *str1; /* extra string information */ - char *str2; /* extra string information */ - char *str3; /* extra string information */ - int int1; /* extra number information */ - int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */ - void *ctxt; /* the parser context if available */ - void *node; /* the node in the tree */ -}; - -/** - * xmlParserError: - * - * This is an error that the XML (or HTML) parser can generate - */ -typedef enum { - XML_ERR_OK = 0, - XML_ERR_INTERNAL_ERROR, /* 1 */ - XML_ERR_NO_MEMORY, /* 2 */ - XML_ERR_DOCUMENT_START, /* 3 */ - XML_ERR_DOCUMENT_EMPTY, /* 4 */ - XML_ERR_DOCUMENT_END, /* 5 */ - XML_ERR_INVALID_HEX_CHARREF, /* 6 */ - XML_ERR_INVALID_DEC_CHARREF, /* 7 */ - XML_ERR_INVALID_CHARREF, /* 8 */ - XML_ERR_INVALID_CHAR, /* 9 */ - XML_ERR_CHARREF_AT_EOF, /* 10 */ - XML_ERR_CHARREF_IN_PROLOG, /* 11 */ - XML_ERR_CHARREF_IN_EPILOG, /* 12 */ - XML_ERR_CHARREF_IN_DTD, /* 13 */ - XML_ERR_ENTITYREF_AT_EOF, /* 14 */ - XML_ERR_ENTITYREF_IN_PROLOG, /* 15 */ - XML_ERR_ENTITYREF_IN_EPILOG, /* 16 */ - XML_ERR_ENTITYREF_IN_DTD, /* 17 */ - XML_ERR_PEREF_AT_EOF, /* 18 */ - XML_ERR_PEREF_IN_PROLOG, /* 19 */ - XML_ERR_PEREF_IN_EPILOG, /* 20 */ - XML_ERR_PEREF_IN_INT_SUBSET, /* 21 */ - XML_ERR_ENTITYREF_NO_NAME, /* 22 */ - XML_ERR_ENTITYREF_SEMICOL_MISSING, /* 23 */ - XML_ERR_PEREF_NO_NAME, /* 24 */ - XML_ERR_PEREF_SEMICOL_MISSING, /* 25 */ - XML_ERR_UNDECLARED_ENTITY, /* 26 */ - XML_WAR_UNDECLARED_ENTITY, /* 27 */ - XML_ERR_UNPARSED_ENTITY, /* 28 */ - XML_ERR_ENTITY_IS_EXTERNAL, /* 29 */ - XML_ERR_ENTITY_IS_PARAMETER, /* 30 */ - XML_ERR_UNKNOWN_ENCODING, /* 31 */ - XML_ERR_UNSUPPORTED_ENCODING, /* 32 */ - XML_ERR_STRING_NOT_STARTED, /* 33 */ - XML_ERR_STRING_NOT_CLOSED, /* 34 */ - XML_ERR_NS_DECL_ERROR, /* 35 */ - XML_ERR_ENTITY_NOT_STARTED, /* 36 */ - XML_ERR_ENTITY_NOT_FINISHED, /* 37 */ - XML_ERR_LT_IN_ATTRIBUTE, /* 38 */ - XML_ERR_ATTRIBUTE_NOT_STARTED, /* 39 */ - XML_ERR_ATTRIBUTE_NOT_FINISHED, /* 40 */ - XML_ERR_ATTRIBUTE_WITHOUT_VALUE, /* 41 */ - XML_ERR_ATTRIBUTE_REDEFINED, /* 42 */ - XML_ERR_LITERAL_NOT_STARTED, /* 43 */ - XML_ERR_LITERAL_NOT_FINISHED, /* 44 */ - XML_ERR_COMMENT_NOT_FINISHED, /* 45 */ - XML_ERR_PI_NOT_STARTED, /* 46 */ - XML_ERR_PI_NOT_FINISHED, /* 47 */ - XML_ERR_NOTATION_NOT_STARTED, /* 48 */ - XML_ERR_NOTATION_NOT_FINISHED, /* 49 */ - XML_ERR_ATTLIST_NOT_STARTED, /* 50 */ - XML_ERR_ATTLIST_NOT_FINISHED, /* 51 */ - XML_ERR_MIXED_NOT_STARTED, /* 52 */ - XML_ERR_MIXED_NOT_FINISHED, /* 53 */ - XML_ERR_ELEMCONTENT_NOT_STARTED, /* 54 */ - XML_ERR_ELEMCONTENT_NOT_FINISHED, /* 55 */ - XML_ERR_XMLDECL_NOT_STARTED, /* 56 */ - XML_ERR_XMLDECL_NOT_FINISHED, /* 57 */ - XML_ERR_CONDSEC_NOT_STARTED, /* 58 */ - XML_ERR_CONDSEC_NOT_FINISHED, /* 59 */ - XML_ERR_EXT_SUBSET_NOT_FINISHED, /* 60 */ - XML_ERR_DOCTYPE_NOT_FINISHED, /* 61 */ - XML_ERR_MISPLACED_CDATA_END, /* 62 */ - XML_ERR_CDATA_NOT_FINISHED, /* 63 */ - XML_ERR_RESERVED_XML_NAME, /* 64 */ - XML_ERR_SPACE_REQUIRED, /* 65 */ - XML_ERR_SEPARATOR_REQUIRED, /* 66 */ - XML_ERR_NMTOKEN_REQUIRED, /* 67 */ - XML_ERR_NAME_REQUIRED, /* 68 */ - XML_ERR_PCDATA_REQUIRED, /* 69 */ - XML_ERR_URI_REQUIRED, /* 70 */ - XML_ERR_PUBID_REQUIRED, /* 71 */ - XML_ERR_LT_REQUIRED, /* 72 */ - XML_ERR_GT_REQUIRED, /* 73 */ - XML_ERR_LTSLASH_REQUIRED, /* 74 */ - XML_ERR_EQUAL_REQUIRED, /* 75 */ - XML_ERR_TAG_NAME_MISMATCH, /* 76 */ - XML_ERR_TAG_NOT_FINISHED, /* 77 */ - XML_ERR_STANDALONE_VALUE, /* 78 */ - XML_ERR_ENCODING_NAME, /* 79 */ - XML_ERR_HYPHEN_IN_COMMENT, /* 80 */ - XML_ERR_INVALID_ENCODING, /* 81 */ - XML_ERR_EXT_ENTITY_STANDALONE, /* 82 */ - XML_ERR_CONDSEC_INVALID, /* 83 */ - XML_ERR_VALUE_REQUIRED, /* 84 */ - XML_ERR_NOT_WELL_BALANCED, /* 85 */ - XML_ERR_EXTRA_CONTENT, /* 86 */ - XML_ERR_ENTITY_CHAR_ERROR, /* 87 */ - XML_ERR_ENTITY_PE_INTERNAL, /* 88 */ - XML_ERR_ENTITY_LOOP, /* 89 */ - XML_ERR_ENTITY_BOUNDARY, /* 90 */ - XML_ERR_INVALID_URI, /* 91 */ - XML_ERR_URI_FRAGMENT, /* 92 */ - XML_WAR_CATALOG_PI, /* 93 */ - XML_ERR_NO_DTD, /* 94 */ - XML_ERR_CONDSEC_INVALID_KEYWORD, /* 95 */ - XML_ERR_VERSION_MISSING, /* 96 */ - XML_WAR_UNKNOWN_VERSION, /* 97 */ - XML_WAR_LANG_VALUE, /* 98 */ - XML_WAR_NS_URI, /* 99 */ - XML_WAR_NS_URI_RELATIVE, /* 100 */ - XML_ERR_MISSING_ENCODING, /* 101 */ - XML_WAR_SPACE_VALUE, /* 102 */ - XML_ERR_NOT_STANDALONE, /* 103 */ - XML_ERR_ENTITY_PROCESSING, /* 104 */ - XML_ERR_NOTATION_PROCESSING, /* 105 */ - XML_WAR_NS_COLUMN, /* 106 */ - XML_WAR_ENTITY_REDEFINED, /* 107 */ - XML_ERR_UNKNOWN_VERSION, /* 108 */ - XML_ERR_VERSION_MISMATCH, /* 109 */ - XML_ERR_NAME_TOO_LONG, /* 110 */ - XML_ERR_USER_STOP, /* 111 */ - XML_NS_ERR_XML_NAMESPACE = 200, - XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */ - XML_NS_ERR_QNAME, /* 202 */ - XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */ - XML_NS_ERR_EMPTY, /* 204 */ - XML_NS_ERR_COLON, /* 205 */ - XML_DTD_ATTRIBUTE_DEFAULT = 500, - XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */ - XML_DTD_ATTRIBUTE_VALUE, /* 502 */ - XML_DTD_CONTENT_ERROR, /* 503 */ - XML_DTD_CONTENT_MODEL, /* 504 */ - XML_DTD_CONTENT_NOT_DETERMINIST, /* 505 */ - XML_DTD_DIFFERENT_PREFIX, /* 506 */ - XML_DTD_ELEM_DEFAULT_NAMESPACE, /* 507 */ - XML_DTD_ELEM_NAMESPACE, /* 508 */ - XML_DTD_ELEM_REDEFINED, /* 509 */ - XML_DTD_EMPTY_NOTATION, /* 510 */ - XML_DTD_ENTITY_TYPE, /* 511 */ - XML_DTD_ID_FIXED, /* 512 */ - XML_DTD_ID_REDEFINED, /* 513 */ - XML_DTD_ID_SUBSET, /* 514 */ - XML_DTD_INVALID_CHILD, /* 515 */ - XML_DTD_INVALID_DEFAULT, /* 516 */ - XML_DTD_LOAD_ERROR, /* 517 */ - XML_DTD_MISSING_ATTRIBUTE, /* 518 */ - XML_DTD_MIXED_CORRUPT, /* 519 */ - XML_DTD_MULTIPLE_ID, /* 520 */ - XML_DTD_NO_DOC, /* 521 */ - XML_DTD_NO_DTD, /* 522 */ - XML_DTD_NO_ELEM_NAME, /* 523 */ - XML_DTD_NO_PREFIX, /* 524 */ - XML_DTD_NO_ROOT, /* 525 */ - XML_DTD_NOTATION_REDEFINED, /* 526 */ - XML_DTD_NOTATION_VALUE, /* 527 */ - XML_DTD_NOT_EMPTY, /* 528 */ - XML_DTD_NOT_PCDATA, /* 529 */ - XML_DTD_NOT_STANDALONE, /* 530 */ - XML_DTD_ROOT_NAME, /* 531 */ - XML_DTD_STANDALONE_WHITE_SPACE, /* 532 */ - XML_DTD_UNKNOWN_ATTRIBUTE, /* 533 */ - XML_DTD_UNKNOWN_ELEM, /* 534 */ - XML_DTD_UNKNOWN_ENTITY, /* 535 */ - XML_DTD_UNKNOWN_ID, /* 536 */ - XML_DTD_UNKNOWN_NOTATION, /* 537 */ - XML_DTD_STANDALONE_DEFAULTED, /* 538 */ - XML_DTD_XMLID_VALUE, /* 539 */ - XML_DTD_XMLID_TYPE, /* 540 */ - XML_DTD_DUP_TOKEN, /* 541 */ - XML_HTML_STRUCURE_ERROR = 800, - XML_HTML_UNKNOWN_TAG, /* 801 */ - XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000, - XML_RNGP_ATTR_CONFLICT, /* 1001 */ - XML_RNGP_ATTRIBUTE_CHILDREN, /* 1002 */ - XML_RNGP_ATTRIBUTE_CONTENT, /* 1003 */ - XML_RNGP_ATTRIBUTE_EMPTY, /* 1004 */ - XML_RNGP_ATTRIBUTE_NOOP, /* 1005 */ - XML_RNGP_CHOICE_CONTENT, /* 1006 */ - XML_RNGP_CHOICE_EMPTY, /* 1007 */ - XML_RNGP_CREATE_FAILURE, /* 1008 */ - XML_RNGP_DATA_CONTENT, /* 1009 */ - XML_RNGP_DEF_CHOICE_AND_INTERLEAVE, /* 1010 */ - XML_RNGP_DEFINE_CREATE_FAILED, /* 1011 */ - XML_RNGP_DEFINE_EMPTY, /* 1012 */ - XML_RNGP_DEFINE_MISSING, /* 1013 */ - XML_RNGP_DEFINE_NAME_MISSING, /* 1014 */ - XML_RNGP_ELEM_CONTENT_EMPTY, /* 1015 */ - XML_RNGP_ELEM_CONTENT_ERROR, /* 1016 */ - XML_RNGP_ELEMENT_EMPTY, /* 1017 */ - XML_RNGP_ELEMENT_CONTENT, /* 1018 */ - XML_RNGP_ELEMENT_NAME, /* 1019 */ - XML_RNGP_ELEMENT_NO_CONTENT, /* 1020 */ - XML_RNGP_ELEM_TEXT_CONFLICT, /* 1021 */ - XML_RNGP_EMPTY, /* 1022 */ - XML_RNGP_EMPTY_CONSTRUCT, /* 1023 */ - XML_RNGP_EMPTY_CONTENT, /* 1024 */ - XML_RNGP_EMPTY_NOT_EMPTY, /* 1025 */ - XML_RNGP_ERROR_TYPE_LIB, /* 1026 */ - XML_RNGP_EXCEPT_EMPTY, /* 1027 */ - XML_RNGP_EXCEPT_MISSING, /* 1028 */ - XML_RNGP_EXCEPT_MULTIPLE, /* 1029 */ - XML_RNGP_EXCEPT_NO_CONTENT, /* 1030 */ - XML_RNGP_EXTERNALREF_EMTPY, /* 1031 */ - XML_RNGP_EXTERNAL_REF_FAILURE, /* 1032 */ - XML_RNGP_EXTERNALREF_RECURSE, /* 1033 */ - XML_RNGP_FORBIDDEN_ATTRIBUTE, /* 1034 */ - XML_RNGP_FOREIGN_ELEMENT, /* 1035 */ - XML_RNGP_GRAMMAR_CONTENT, /* 1036 */ - XML_RNGP_GRAMMAR_EMPTY, /* 1037 */ - XML_RNGP_GRAMMAR_MISSING, /* 1038 */ - XML_RNGP_GRAMMAR_NO_START, /* 1039 */ - XML_RNGP_GROUP_ATTR_CONFLICT, /* 1040 */ - XML_RNGP_HREF_ERROR, /* 1041 */ - XML_RNGP_INCLUDE_EMPTY, /* 1042 */ - XML_RNGP_INCLUDE_FAILURE, /* 1043 */ - XML_RNGP_INCLUDE_RECURSE, /* 1044 */ - XML_RNGP_INTERLEAVE_ADD, /* 1045 */ - XML_RNGP_INTERLEAVE_CREATE_FAILED, /* 1046 */ - XML_RNGP_INTERLEAVE_EMPTY, /* 1047 */ - XML_RNGP_INTERLEAVE_NO_CONTENT, /* 1048 */ - XML_RNGP_INVALID_DEFINE_NAME, /* 1049 */ - XML_RNGP_INVALID_URI, /* 1050 */ - XML_RNGP_INVALID_VALUE, /* 1051 */ - XML_RNGP_MISSING_HREF, /* 1052 */ - XML_RNGP_NAME_MISSING, /* 1053 */ - XML_RNGP_NEED_COMBINE, /* 1054 */ - XML_RNGP_NOTALLOWED_NOT_EMPTY, /* 1055 */ - XML_RNGP_NSNAME_ATTR_ANCESTOR, /* 1056 */ - XML_RNGP_NSNAME_NO_NS, /* 1057 */ - XML_RNGP_PARAM_FORBIDDEN, /* 1058 */ - XML_RNGP_PARAM_NAME_MISSING, /* 1059 */ - XML_RNGP_PARENTREF_CREATE_FAILED, /* 1060 */ - XML_RNGP_PARENTREF_NAME_INVALID, /* 1061 */ - XML_RNGP_PARENTREF_NO_NAME, /* 1062 */ - XML_RNGP_PARENTREF_NO_PARENT, /* 1063 */ - XML_RNGP_PARENTREF_NOT_EMPTY, /* 1064 */ - XML_RNGP_PARSE_ERROR, /* 1065 */ - XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME, /* 1066 */ - XML_RNGP_PAT_ATTR_ATTR, /* 1067 */ - XML_RNGP_PAT_ATTR_ELEM, /* 1068 */ - XML_RNGP_PAT_DATA_EXCEPT_ATTR, /* 1069 */ - XML_RNGP_PAT_DATA_EXCEPT_ELEM, /* 1070 */ - XML_RNGP_PAT_DATA_EXCEPT_EMPTY, /* 1071 */ - XML_RNGP_PAT_DATA_EXCEPT_GROUP, /* 1072 */ - XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE, /* 1073 */ - XML_RNGP_PAT_DATA_EXCEPT_LIST, /* 1074 */ - XML_RNGP_PAT_DATA_EXCEPT_ONEMORE, /* 1075 */ - XML_RNGP_PAT_DATA_EXCEPT_REF, /* 1076 */ - XML_RNGP_PAT_DATA_EXCEPT_TEXT, /* 1077 */ - XML_RNGP_PAT_LIST_ATTR, /* 1078 */ - XML_RNGP_PAT_LIST_ELEM, /* 1079 */ - XML_RNGP_PAT_LIST_INTERLEAVE, /* 1080 */ - XML_RNGP_PAT_LIST_LIST, /* 1081 */ - XML_RNGP_PAT_LIST_REF, /* 1082 */ - XML_RNGP_PAT_LIST_TEXT, /* 1083 */ - XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME, /* 1084 */ - XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME, /* 1085 */ - XML_RNGP_PAT_ONEMORE_GROUP_ATTR, /* 1086 */ - XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR, /* 1087 */ - XML_RNGP_PAT_START_ATTR, /* 1088 */ - XML_RNGP_PAT_START_DATA, /* 1089 */ - XML_RNGP_PAT_START_EMPTY, /* 1090 */ - XML_RNGP_PAT_START_GROUP, /* 1091 */ - XML_RNGP_PAT_START_INTERLEAVE, /* 1092 */ - XML_RNGP_PAT_START_LIST, /* 1093 */ - XML_RNGP_PAT_START_ONEMORE, /* 1094 */ - XML_RNGP_PAT_START_TEXT, /* 1095 */ - XML_RNGP_PAT_START_VALUE, /* 1096 */ - XML_RNGP_PREFIX_UNDEFINED, /* 1097 */ - XML_RNGP_REF_CREATE_FAILED, /* 1098 */ - XML_RNGP_REF_CYCLE, /* 1099 */ - XML_RNGP_REF_NAME_INVALID, /* 1100 */ - XML_RNGP_REF_NO_DEF, /* 1101 */ - XML_RNGP_REF_NO_NAME, /* 1102 */ - XML_RNGP_REF_NOT_EMPTY, /* 1103 */ - XML_RNGP_START_CHOICE_AND_INTERLEAVE, /* 1104 */ - XML_RNGP_START_CONTENT, /* 1105 */ - XML_RNGP_START_EMPTY, /* 1106 */ - XML_RNGP_START_MISSING, /* 1107 */ - XML_RNGP_TEXT_EXPECTED, /* 1108 */ - XML_RNGP_TEXT_HAS_CHILD, /* 1109 */ - XML_RNGP_TYPE_MISSING, /* 1110 */ - XML_RNGP_TYPE_NOT_FOUND, /* 1111 */ - XML_RNGP_TYPE_VALUE, /* 1112 */ - XML_RNGP_UNKNOWN_ATTRIBUTE, /* 1113 */ - XML_RNGP_UNKNOWN_COMBINE, /* 1114 */ - XML_RNGP_UNKNOWN_CONSTRUCT, /* 1115 */ - XML_RNGP_UNKNOWN_TYPE_LIB, /* 1116 */ - XML_RNGP_URI_FRAGMENT, /* 1117 */ - XML_RNGP_URI_NOT_ABSOLUTE, /* 1118 */ - XML_RNGP_VALUE_EMPTY, /* 1119 */ - XML_RNGP_VALUE_NO_CONTENT, /* 1120 */ - XML_RNGP_XMLNS_NAME, /* 1121 */ - XML_RNGP_XML_NS, /* 1122 */ - XML_XPATH_EXPRESSION_OK = 1200, - XML_XPATH_NUMBER_ERROR, /* 1201 */ - XML_XPATH_UNFINISHED_LITERAL_ERROR, /* 1202 */ - XML_XPATH_START_LITERAL_ERROR, /* 1203 */ - XML_XPATH_VARIABLE_REF_ERROR, /* 1204 */ - XML_XPATH_UNDEF_VARIABLE_ERROR, /* 1205 */ - XML_XPATH_INVALID_PREDICATE_ERROR, /* 1206 */ - XML_XPATH_EXPR_ERROR, /* 1207 */ - XML_XPATH_UNCLOSED_ERROR, /* 1208 */ - XML_XPATH_UNKNOWN_FUNC_ERROR, /* 1209 */ - XML_XPATH_INVALID_OPERAND, /* 1210 */ - XML_XPATH_INVALID_TYPE, /* 1211 */ - XML_XPATH_INVALID_ARITY, /* 1212 */ - XML_XPATH_INVALID_CTXT_SIZE, /* 1213 */ - XML_XPATH_INVALID_CTXT_POSITION, /* 1214 */ - XML_XPATH_MEMORY_ERROR, /* 1215 */ - XML_XPTR_SYNTAX_ERROR, /* 1216 */ - XML_XPTR_RESOURCE_ERROR, /* 1217 */ - XML_XPTR_SUB_RESOURCE_ERROR, /* 1218 */ - XML_XPATH_UNDEF_PREFIX_ERROR, /* 1219 */ - XML_XPATH_ENCODING_ERROR, /* 1220 */ - XML_XPATH_INVALID_CHAR_ERROR, /* 1221 */ - XML_TREE_INVALID_HEX = 1300, - XML_TREE_INVALID_DEC, /* 1301 */ - XML_TREE_UNTERMINATED_ENTITY, /* 1302 */ - XML_TREE_NOT_UTF8, /* 1303 */ - XML_SAVE_NOT_UTF8 = 1400, - XML_SAVE_CHAR_INVALID, /* 1401 */ - XML_SAVE_NO_DOCTYPE, /* 1402 */ - XML_SAVE_UNKNOWN_ENCODING, /* 1403 */ - XML_REGEXP_COMPILE_ERROR = 1450, - XML_IO_UNKNOWN = 1500, - XML_IO_EACCES, /* 1501 */ - XML_IO_EAGAIN, /* 1502 */ - XML_IO_EBADF, /* 1503 */ - XML_IO_EBADMSG, /* 1504 */ - XML_IO_EBUSY, /* 1505 */ - XML_IO_ECANCELED, /* 1506 */ - XML_IO_ECHILD, /* 1507 */ - XML_IO_EDEADLK, /* 1508 */ - XML_IO_EDOM, /* 1509 */ - XML_IO_EEXIST, /* 1510 */ - XML_IO_EFAULT, /* 1511 */ - XML_IO_EFBIG, /* 1512 */ - XML_IO_EINPROGRESS, /* 1513 */ - XML_IO_EINTR, /* 1514 */ - XML_IO_EINVAL, /* 1515 */ - XML_IO_EIO, /* 1516 */ - XML_IO_EISDIR, /* 1517 */ - XML_IO_EMFILE, /* 1518 */ - XML_IO_EMLINK, /* 1519 */ - XML_IO_EMSGSIZE, /* 1520 */ - XML_IO_ENAMETOOLONG, /* 1521 */ - XML_IO_ENFILE, /* 1522 */ - XML_IO_ENODEV, /* 1523 */ - XML_IO_ENOENT, /* 1524 */ - XML_IO_ENOEXEC, /* 1525 */ - XML_IO_ENOLCK, /* 1526 */ - XML_IO_ENOMEM, /* 1527 */ - XML_IO_ENOSPC, /* 1528 */ - XML_IO_ENOSYS, /* 1529 */ - XML_IO_ENOTDIR, /* 1530 */ - XML_IO_ENOTEMPTY, /* 1531 */ - XML_IO_ENOTSUP, /* 1532 */ - XML_IO_ENOTTY, /* 1533 */ - XML_IO_ENXIO, /* 1534 */ - XML_IO_EPERM, /* 1535 */ - XML_IO_EPIPE, /* 1536 */ - XML_IO_ERANGE, /* 1537 */ - XML_IO_EROFS, /* 1538 */ - XML_IO_ESPIPE, /* 1539 */ - XML_IO_ESRCH, /* 1540 */ - XML_IO_ETIMEDOUT, /* 1541 */ - XML_IO_EXDEV, /* 1542 */ - XML_IO_NETWORK_ATTEMPT, /* 1543 */ - XML_IO_ENCODER, /* 1544 */ - XML_IO_FLUSH, /* 1545 */ - XML_IO_WRITE, /* 1546 */ - XML_IO_NO_INPUT, /* 1547 */ - XML_IO_BUFFER_FULL, /* 1548 */ - XML_IO_LOAD_ERROR, /* 1549 */ - XML_IO_ENOTSOCK, /* 1550 */ - XML_IO_EISCONN, /* 1551 */ - XML_IO_ECONNREFUSED, /* 1552 */ - XML_IO_ENETUNREACH, /* 1553 */ - XML_IO_EADDRINUSE, /* 1554 */ - XML_IO_EALREADY, /* 1555 */ - XML_IO_EAFNOSUPPORT, /* 1556 */ - XML_XINCLUDE_RECURSION=1600, - XML_XINCLUDE_PARSE_VALUE, /* 1601 */ - XML_XINCLUDE_ENTITY_DEF_MISMATCH, /* 1602 */ - XML_XINCLUDE_NO_HREF, /* 1603 */ - XML_XINCLUDE_NO_FALLBACK, /* 1604 */ - XML_XINCLUDE_HREF_URI, /* 1605 */ - XML_XINCLUDE_TEXT_FRAGMENT, /* 1606 */ - XML_XINCLUDE_TEXT_DOCUMENT, /* 1607 */ - XML_XINCLUDE_INVALID_CHAR, /* 1608 */ - XML_XINCLUDE_BUILD_FAILED, /* 1609 */ - XML_XINCLUDE_UNKNOWN_ENCODING, /* 1610 */ - XML_XINCLUDE_MULTIPLE_ROOT, /* 1611 */ - XML_XINCLUDE_XPTR_FAILED, /* 1612 */ - XML_XINCLUDE_XPTR_RESULT, /* 1613 */ - XML_XINCLUDE_INCLUDE_IN_INCLUDE, /* 1614 */ - XML_XINCLUDE_FALLBACKS_IN_INCLUDE, /* 1615 */ - XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE, /* 1616 */ - XML_XINCLUDE_DEPRECATED_NS, /* 1617 */ - XML_XINCLUDE_FRAGMENT_ID, /* 1618 */ - XML_CATALOG_MISSING_ATTR = 1650, - XML_CATALOG_ENTRY_BROKEN, /* 1651 */ - XML_CATALOG_PREFER_VALUE, /* 1652 */ - XML_CATALOG_NOT_CATALOG, /* 1653 */ - XML_CATALOG_RECURSION, /* 1654 */ - XML_SCHEMAP_PREFIX_UNDEFINED = 1700, - XML_SCHEMAP_ATTRFORMDEFAULT_VALUE, /* 1701 */ - XML_SCHEMAP_ATTRGRP_NONAME_NOREF, /* 1702 */ - XML_SCHEMAP_ATTR_NONAME_NOREF, /* 1703 */ - XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF, /* 1704 */ - XML_SCHEMAP_ELEMFORMDEFAULT_VALUE, /* 1705 */ - XML_SCHEMAP_ELEM_NONAME_NOREF, /* 1706 */ - XML_SCHEMAP_EXTENSION_NO_BASE, /* 1707 */ - XML_SCHEMAP_FACET_NO_VALUE, /* 1708 */ - XML_SCHEMAP_FAILED_BUILD_IMPORT, /* 1709 */ - XML_SCHEMAP_GROUP_NONAME_NOREF, /* 1710 */ - XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI, /* 1711 */ - XML_SCHEMAP_IMPORT_REDEFINE_NSNAME, /* 1712 */ - XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI, /* 1713 */ - XML_SCHEMAP_INVALID_BOOLEAN, /* 1714 */ - XML_SCHEMAP_INVALID_ENUM, /* 1715 */ - XML_SCHEMAP_INVALID_FACET, /* 1716 */ - XML_SCHEMAP_INVALID_FACET_VALUE, /* 1717 */ - XML_SCHEMAP_INVALID_MAXOCCURS, /* 1718 */ - XML_SCHEMAP_INVALID_MINOCCURS, /* 1719 */ - XML_SCHEMAP_INVALID_REF_AND_SUBTYPE, /* 1720 */ - XML_SCHEMAP_INVALID_WHITE_SPACE, /* 1721 */ - XML_SCHEMAP_NOATTR_NOREF, /* 1722 */ - XML_SCHEMAP_NOTATION_NO_NAME, /* 1723 */ - XML_SCHEMAP_NOTYPE_NOREF, /* 1724 */ - XML_SCHEMAP_REF_AND_SUBTYPE, /* 1725 */ - XML_SCHEMAP_RESTRICTION_NONAME_NOREF, /* 1726 */ - XML_SCHEMAP_SIMPLETYPE_NONAME, /* 1727 */ - XML_SCHEMAP_TYPE_AND_SUBTYPE, /* 1728 */ - XML_SCHEMAP_UNKNOWN_ALL_CHILD, /* 1729 */ - XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD, /* 1730 */ - XML_SCHEMAP_UNKNOWN_ATTR_CHILD, /* 1731 */ - XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD, /* 1732 */ - XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP, /* 1733 */ - XML_SCHEMAP_UNKNOWN_BASE_TYPE, /* 1734 */ - XML_SCHEMAP_UNKNOWN_CHOICE_CHILD, /* 1735 */ - XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD, /* 1736 */ - XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD, /* 1737 */ - XML_SCHEMAP_UNKNOWN_ELEM_CHILD, /* 1738 */ - XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD, /* 1739 */ - XML_SCHEMAP_UNKNOWN_FACET_CHILD, /* 1740 */ - XML_SCHEMAP_UNKNOWN_FACET_TYPE, /* 1741 */ - XML_SCHEMAP_UNKNOWN_GROUP_CHILD, /* 1742 */ - XML_SCHEMAP_UNKNOWN_IMPORT_CHILD, /* 1743 */ - XML_SCHEMAP_UNKNOWN_LIST_CHILD, /* 1744 */ - XML_SCHEMAP_UNKNOWN_NOTATION_CHILD, /* 1745 */ - XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD, /* 1746 */ - XML_SCHEMAP_UNKNOWN_REF, /* 1747 */ - XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, /* 1748 */ - XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD, /* 1749 */ - XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD, /* 1750 */ - XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD, /* 1751 */ - XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD, /* 1752 */ - XML_SCHEMAP_UNKNOWN_TYPE, /* 1753 */ - XML_SCHEMAP_UNKNOWN_UNION_CHILD, /* 1754 */ - XML_SCHEMAP_ELEM_DEFAULT_FIXED, /* 1755 */ - XML_SCHEMAP_REGEXP_INVALID, /* 1756 */ - XML_SCHEMAP_FAILED_LOAD, /* 1757 */ - XML_SCHEMAP_NOTHING_TO_PARSE, /* 1758 */ - XML_SCHEMAP_NOROOT, /* 1759 */ - XML_SCHEMAP_REDEFINED_GROUP, /* 1760 */ - XML_SCHEMAP_REDEFINED_TYPE, /* 1761 */ - XML_SCHEMAP_REDEFINED_ELEMENT, /* 1762 */ - XML_SCHEMAP_REDEFINED_ATTRGROUP, /* 1763 */ - XML_SCHEMAP_REDEFINED_ATTR, /* 1764 */ - XML_SCHEMAP_REDEFINED_NOTATION, /* 1765 */ - XML_SCHEMAP_FAILED_PARSE, /* 1766 */ - XML_SCHEMAP_UNKNOWN_PREFIX, /* 1767 */ - XML_SCHEMAP_DEF_AND_PREFIX, /* 1768 */ - XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD, /* 1769 */ - XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI, /* 1770 */ - XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI, /* 1771 */ - XML_SCHEMAP_NOT_SCHEMA, /* 1772 */ - XML_SCHEMAP_UNKNOWN_MEMBER_TYPE, /* 1773 */ - XML_SCHEMAP_INVALID_ATTR_USE, /* 1774 */ - XML_SCHEMAP_RECURSIVE, /* 1775 */ - XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE, /* 1776 */ - XML_SCHEMAP_INVALID_ATTR_COMBINATION, /* 1777 */ - XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION, /* 1778 */ - XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD, /* 1779 */ - XML_SCHEMAP_INVALID_ATTR_NAME, /* 1780 */ - XML_SCHEMAP_REF_AND_CONTENT, /* 1781 */ - XML_SCHEMAP_CT_PROPS_CORRECT_1, /* 1782 */ - XML_SCHEMAP_CT_PROPS_CORRECT_2, /* 1783 */ - XML_SCHEMAP_CT_PROPS_CORRECT_3, /* 1784 */ - XML_SCHEMAP_CT_PROPS_CORRECT_4, /* 1785 */ - XML_SCHEMAP_CT_PROPS_CORRECT_5, /* 1786 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, /* 1787 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1, /* 1788 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, /* 1789 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, /* 1790 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, /* 1791 */ - XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER, /* 1792 */ - XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE, /* 1793 */ - XML_SCHEMAP_UNION_NOT_EXPRESSIBLE, /* 1794 */ - XML_SCHEMAP_SRC_IMPORT_3_1, /* 1795 */ - XML_SCHEMAP_SRC_IMPORT_3_2, /* 1796 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, /* 1797 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, /* 1798 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3, /* 1799 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_3, /* 1800 */ - XML_SCHEMAV_NOROOT = 1801, - XML_SCHEMAV_UNDECLAREDELEM, /* 1802 */ - XML_SCHEMAV_NOTTOPLEVEL, /* 1803 */ - XML_SCHEMAV_MISSING, /* 1804 */ - XML_SCHEMAV_WRONGELEM, /* 1805 */ - XML_SCHEMAV_NOTYPE, /* 1806 */ - XML_SCHEMAV_NOROLLBACK, /* 1807 */ - XML_SCHEMAV_ISABSTRACT, /* 1808 */ - XML_SCHEMAV_NOTEMPTY, /* 1809 */ - XML_SCHEMAV_ELEMCONT, /* 1810 */ - XML_SCHEMAV_HAVEDEFAULT, /* 1811 */ - XML_SCHEMAV_NOTNILLABLE, /* 1812 */ - XML_SCHEMAV_EXTRACONTENT, /* 1813 */ - XML_SCHEMAV_INVALIDATTR, /* 1814 */ - XML_SCHEMAV_INVALIDELEM, /* 1815 */ - XML_SCHEMAV_NOTDETERMINIST, /* 1816 */ - XML_SCHEMAV_CONSTRUCT, /* 1817 */ - XML_SCHEMAV_INTERNAL, /* 1818 */ - XML_SCHEMAV_NOTSIMPLE, /* 1819 */ - XML_SCHEMAV_ATTRUNKNOWN, /* 1820 */ - XML_SCHEMAV_ATTRINVALID, /* 1821 */ - XML_SCHEMAV_VALUE, /* 1822 */ - XML_SCHEMAV_FACET, /* 1823 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1, /* 1824 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2, /* 1825 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3, /* 1826 */ - XML_SCHEMAV_CVC_TYPE_3_1_1, /* 1827 */ - XML_SCHEMAV_CVC_TYPE_3_1_2, /* 1828 */ - XML_SCHEMAV_CVC_FACET_VALID, /* 1829 */ - XML_SCHEMAV_CVC_LENGTH_VALID, /* 1830 */ - XML_SCHEMAV_CVC_MINLENGTH_VALID, /* 1831 */ - XML_SCHEMAV_CVC_MAXLENGTH_VALID, /* 1832 */ - XML_SCHEMAV_CVC_MININCLUSIVE_VALID, /* 1833 */ - XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID, /* 1834 */ - XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID, /* 1835 */ - XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID, /* 1836 */ - XML_SCHEMAV_CVC_TOTALDIGITS_VALID, /* 1837 */ - XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID, /* 1838 */ - XML_SCHEMAV_CVC_PATTERN_VALID, /* 1839 */ - XML_SCHEMAV_CVC_ENUMERATION_VALID, /* 1840 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, /* 1841 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2, /* 1842 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, /* 1843 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4, /* 1844 */ - XML_SCHEMAV_CVC_ELT_1, /* 1845 */ - XML_SCHEMAV_CVC_ELT_2, /* 1846 */ - XML_SCHEMAV_CVC_ELT_3_1, /* 1847 */ - XML_SCHEMAV_CVC_ELT_3_2_1, /* 1848 */ - XML_SCHEMAV_CVC_ELT_3_2_2, /* 1849 */ - XML_SCHEMAV_CVC_ELT_4_1, /* 1850 */ - XML_SCHEMAV_CVC_ELT_4_2, /* 1851 */ - XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ - XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ - XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ - XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ - XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ - XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ - XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ - XML_SCHEMAV_CVC_ELT_6, /* 1859 */ - XML_SCHEMAV_CVC_ELT_7, /* 1860 */ - XML_SCHEMAV_CVC_ATTRIBUTE_1, /* 1861 */ - XML_SCHEMAV_CVC_ATTRIBUTE_2, /* 1862 */ - XML_SCHEMAV_CVC_ATTRIBUTE_3, /* 1863 */ - XML_SCHEMAV_CVC_ATTRIBUTE_4, /* 1864 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1, /* 1865 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1, /* 1866 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2, /* 1867 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_4, /* 1868 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1, /* 1869 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2, /* 1870 */ - XML_SCHEMAV_ELEMENT_CONTENT, /* 1871 */ - XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING, /* 1872 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_1, /* 1873 */ - XML_SCHEMAV_CVC_AU, /* 1874 */ - XML_SCHEMAV_CVC_TYPE_1, /* 1875 */ - XML_SCHEMAV_CVC_TYPE_2, /* 1876 */ - XML_SCHEMAV_CVC_IDC, /* 1877 */ - XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ - XML_SCHEMAV_MISC, /* 1879 */ - XML_XPTR_UNKNOWN_SCHEME = 1900, - XML_XPTR_CHILDSEQ_START, /* 1901 */ - XML_XPTR_EVAL_FAILED, /* 1902 */ - XML_XPTR_EXTRA_OBJECTS, /* 1903 */ - XML_C14N_CREATE_CTXT = 1950, - XML_C14N_REQUIRES_UTF8, /* 1951 */ - XML_C14N_CREATE_STACK, /* 1952 */ - XML_C14N_INVALID_NODE, /* 1953 */ - XML_C14N_UNKNOW_NODE, /* 1954 */ - XML_C14N_RELATIVE_NAMESPACE, /* 1955 */ - XML_FTP_PASV_ANSWER = 2000, - XML_FTP_EPSV_ANSWER, /* 2001 */ - XML_FTP_ACCNT, /* 2002 */ - XML_FTP_URL_SYNTAX, /* 2003 */ - XML_HTTP_URL_SYNTAX = 2020, - XML_HTTP_USE_IP, /* 2021 */ - XML_HTTP_UNKNOWN_HOST, /* 2022 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000, - XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ - XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ - XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ - XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ - XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ - XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ - XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ - XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1, /* 3016 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2, /* 3017 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1, /* 3018 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2, /* 3019 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3, /* 3020 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4, /* 3021 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5, /* 3022 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_1, /* 3023 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1, /* 3024 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2, /* 3025 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2, /* 3026 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1, /* 3027 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ - XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ - XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, /* 3035 */ - XML_SCHEMAP_S4S_ATTR_MISSING, /* 3036 */ - XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, /* 3037 */ - XML_SCHEMAP_SRC_ELEMENT_1, /* 3038 */ - XML_SCHEMAP_SRC_ELEMENT_2_1, /* 3039 */ - XML_SCHEMAP_SRC_ELEMENT_2_2, /* 3040 */ - XML_SCHEMAP_SRC_ELEMENT_3, /* 3041 */ - XML_SCHEMAP_P_PROPS_CORRECT_1, /* 3042 */ - XML_SCHEMAP_P_PROPS_CORRECT_2_1, /* 3043 */ - XML_SCHEMAP_P_PROPS_CORRECT_2_2, /* 3044 */ - XML_SCHEMAP_E_PROPS_CORRECT_2, /* 3045 */ - XML_SCHEMAP_E_PROPS_CORRECT_3, /* 3046 */ - XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ - XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ - XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ - XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ - XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ - XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ - XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ - XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ - XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ - XML_SCHEMAP_NO_XMLNS, /* 3056 */ - XML_SCHEMAP_NO_XSI, /* 3057 */ - XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2, /* 3061 */ - XML_SCHEMAP_CVC_SIMPLE_TYPE, /* 3062 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_1, /* 3063 */ - XML_SCHEMAP_SRC_IMPORT_1_1, /* 3064 */ - XML_SCHEMAP_SRC_IMPORT_1_2, /* 3065 */ - XML_SCHEMAP_SRC_IMPORT_2, /* 3066 */ - XML_SCHEMAP_SRC_IMPORT_2_1, /* 3067 */ - XML_SCHEMAP_SRC_IMPORT_2_2, /* 3068 */ - XML_SCHEMAP_INTERNAL, /* 3069 non-W3C */ - XML_SCHEMAP_NOT_DETERMINISTIC, /* 3070 non-W3C */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1, /* 3071 */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2, /* 3072 */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3, /* 3073 */ - XML_SCHEMAP_MG_PROPS_CORRECT_1, /* 3074 */ - XML_SCHEMAP_MG_PROPS_CORRECT_2, /* 3075 */ - XML_SCHEMAP_SRC_CT_1, /* 3076 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, /* 3077 */ - XML_SCHEMAP_AU_PROPS_CORRECT_2, /* 3078 */ - XML_SCHEMAP_A_PROPS_CORRECT_2, /* 3079 */ - XML_SCHEMAP_C_PROPS_CORRECT, /* 3080 */ - XML_SCHEMAP_SRC_REDEFINE, /* 3081 */ - XML_SCHEMAP_SRC_IMPORT, /* 3082 */ - XML_SCHEMAP_WARN_SKIP_SCHEMA, /* 3083 */ - XML_SCHEMAP_WARN_UNLOCATED_SCHEMA, /* 3084 */ - XML_SCHEMAP_WARN_ATTR_REDECL_PROH, /* 3085 */ - XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, /* 3085 */ - XML_SCHEMAP_AG_PROPS_CORRECT, /* 3086 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_2, /* 3087 */ - XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */ - XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */ - XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */ - XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */ - XML_SCHEMATRONV_REPORT, - XML_MODULE_OPEN = 4900, /* 4900 */ - XML_MODULE_CLOSE, /* 4901 */ - XML_CHECK_FOUND_ELEMENT = 5000, - XML_CHECK_FOUND_ATTRIBUTE, /* 5001 */ - XML_CHECK_FOUND_TEXT, /* 5002 */ - XML_CHECK_FOUND_CDATA, /* 5003 */ - XML_CHECK_FOUND_ENTITYREF, /* 5004 */ - XML_CHECK_FOUND_ENTITY, /* 5005 */ - XML_CHECK_FOUND_PI, /* 5006 */ - XML_CHECK_FOUND_COMMENT, /* 5007 */ - XML_CHECK_FOUND_DOCTYPE, /* 5008 */ - XML_CHECK_FOUND_FRAGMENT, /* 5009 */ - XML_CHECK_FOUND_NOTATION, /* 5010 */ - XML_CHECK_UNKNOWN_NODE, /* 5011 */ - XML_CHECK_ENTITY_TYPE, /* 5012 */ - XML_CHECK_NO_PARENT, /* 5013 */ - XML_CHECK_NO_DOC, /* 5014 */ - XML_CHECK_NO_NAME, /* 5015 */ - XML_CHECK_NO_ELEM, /* 5016 */ - XML_CHECK_WRONG_DOC, /* 5017 */ - XML_CHECK_NO_PREV, /* 5018 */ - XML_CHECK_WRONG_PREV, /* 5019 */ - XML_CHECK_NO_NEXT, /* 5020 */ - XML_CHECK_WRONG_NEXT, /* 5021 */ - XML_CHECK_NOT_DTD, /* 5022 */ - XML_CHECK_NOT_ATTR, /* 5023 */ - XML_CHECK_NOT_ATTR_DECL, /* 5024 */ - XML_CHECK_NOT_ELEM_DECL, /* 5025 */ - XML_CHECK_NOT_ENTITY_DECL, /* 5026 */ - XML_CHECK_NOT_NS_DECL, /* 5027 */ - XML_CHECK_NO_HREF, /* 5028 */ - XML_CHECK_WRONG_PARENT,/* 5029 */ - XML_CHECK_NS_SCOPE, /* 5030 */ - XML_CHECK_NS_ANCESTOR, /* 5031 */ - XML_CHECK_NOT_UTF8, /* 5032 */ - XML_CHECK_NO_DICT, /* 5033 */ - XML_CHECK_NOT_NCNAME, /* 5034 */ - XML_CHECK_OUTSIDE_DICT, /* 5035 */ - XML_CHECK_WRONG_NAME, /* 5036 */ - XML_CHECK_NAME_NOT_NULL, /* 5037 */ - XML_I18N_NO_NAME = 6000, - XML_I18N_NO_HANDLER, /* 6001 */ - XML_I18N_EXCESS_HANDLER, /* 6002 */ - XML_I18N_CONV_FAILED, /* 6003 */ - XML_I18N_NO_OUTPUT, /* 6004 */ - XML_BUF_OVERFLOW = 7000 -} xmlParserErrors; - -/** - * xmlGenericErrorFunc: - * @ctx: a parsing context - * @msg: the message - * @...: the extra arguments of the varags to format the message - * - * Signature of the function to use when there is an error and - * no parsing or validity context available . - */ -typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -/** - * xmlStructuredErrorFunc: - * @userData: user provided data for the error callback - * @error: the error being raised. - * - * Signature of the function to use when there is an error and - * the module handles the new error reporting mechanism. - */ -typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error); - -/* - * Use the following function to reset the two global variables - * xmlGenericError and xmlGenericErrorContext. - */ -XMLPUBFUN void XMLCALL - xmlSetGenericErrorFunc (void *ctx, - xmlGenericErrorFunc handler); -XMLPUBFUN void XMLCALL - initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); - -XMLPUBFUN void XMLCALL - xmlSetStructuredErrorFunc (void *ctx, - xmlStructuredErrorFunc handler); -/* - * Default message routines used by SAX and Valid context for error - * and warning reporting. - */ -XMLPUBFUN void XMLCDECL - xmlParserError (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserWarning (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserValidityError (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserValidityWarning (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCALL - xmlParserPrintFileInfo (xmlParserInputPtr input); -XMLPUBFUN void XMLCALL - xmlParserPrintFileContext (xmlParserInputPtr input); - -/* - * Extended error information routines - */ -XMLPUBFUN xmlErrorPtr XMLCALL - xmlGetLastError (void); -XMLPUBFUN void XMLCALL - xmlResetLastError (void); -XMLPUBFUN xmlErrorPtr XMLCALL - xmlCtxtGetLastError (void *ctx); -XMLPUBFUN void XMLCALL - xmlCtxtResetLastError (void *ctx); -XMLPUBFUN void XMLCALL - xmlResetError (xmlErrorPtr err); -XMLPUBFUN int XMLCALL - xmlCopyError (xmlErrorPtr from, - xmlErrorPtr to); - -#ifdef IN_LIBXML -/* - * Internal callback reporting routine - */ -XMLPUBFUN void XMLCALL - __xmlRaiseError (xmlStructuredErrorFunc schannel, - xmlGenericErrorFunc channel, - void *data, - void *ctx, - void *node, - int domain, - int code, - xmlErrorLevel level, - const char *file, - int line, - const char *str1, - const char *str2, - const char *str3, - int int1, - int col, - const char *msg, - ...) LIBXML_ATTR_FORMAT(16,17); -XMLPUBFUN void XMLCALL - __xmlSimpleError (int domain, - int code, - xmlNodePtr node, - const char *msg, - const char *extra) LIBXML_ATTR_FORMAT(4,0); -#endif -#ifdef __cplusplus -} -#endif -#endif /* __XML_ERROR_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlexports.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlexports.h deleted file mode 100755 index ab10ef7..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlexports.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Summary: macros for marking symbols as exportable/importable. - * Description: macros for marking symbols as exportable/importable. - * - * Copy: See Copyright for the status of this software. - * - * Author: Igor Zlatovic - */ - -#ifndef __XML_EXPORTS_H__ -#define __XML_EXPORTS_H__ - -/** - * XMLPUBFUN, XMLPUBVAR, XMLCALL - * - * Macros which declare an exportable function, an exportable variable and - * the calling convention used for functions. - * - * Please use an extra block for every platform/compiler combination when - * modifying this, rather than overlong #ifdef lines. This helps - * readability as well as the fact that different compilers on the same - * platform might need different definitions. - */ - -/** - * XMLPUBFUN: - * - * Macros which declare an exportable function - */ -#define XMLPUBFUN -/** - * XMLPUBVAR: - * - * Macros which declare an exportable variable - */ -#define XMLPUBVAR extern -/** - * XMLCALL: - * - * Macros which declare the called convention for exported functions - */ -#define XMLCALL -/** - * XMLCDECL: - * - * Macro which declares the calling convention for exported functions that - * use '...'. - */ -#define XMLCDECL - -/** DOC_DISABLE */ - -/* Windows platform with MS compiler */ -#if defined(_WIN32) && defined(_MSC_VER) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #if defined(LIBXML_FASTCALL) - #define XMLCALL __fastcall - #else - #define XMLCALL __cdecl - #endif - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Windows platform with Borland compiler */ -#if defined(_WIN32) && defined(__BORLANDC__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) extern - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Windows platform with GNU compiler (Mingw) */ -#if defined(_WIN32) && defined(__MINGW32__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - /* - * if defined(IN_LIBXML) this raises problems on mingw with msys - * _imp__xmlFree listed as missing. Try to workaround the problem - * by also making that declaration when compiling client code. - */ - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) extern - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Cygwin platform, GNU compiler */ -#if defined(_WIN32) && defined(__CYGWIN__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl -#endif - -/* Compatibility */ -#if !defined(LIBXML_DLL_IMPORT) -#define LIBXML_DLL_IMPORT XMLPUBVAR -#endif - -#endif /* __XML_EXPORTS_H__ */ - - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlmemory.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlmemory.h deleted file mode 100755 index 8ad1ba9..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlmemory.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Summary: interface for the memory allocator - * Description: provides interfaces for the memory allocator, - * including debugging capabilities. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __DEBUG_MEMORY_ALLOC__ -#define __DEBUG_MEMORY_ALLOC__ - -#include -#include - -/** - * DEBUG_MEMORY: - * - * DEBUG_MEMORY replaces the allocator with a collect and debug - * shell to the libc allocator. - * DEBUG_MEMORY should only be activated when debugging - * libxml i.e. if libxml has been configured with --with-debug-mem too. - */ -/* #define DEBUG_MEMORY_FREED */ -/* #define DEBUG_MEMORY_LOCATION */ - -#ifdef DEBUG -#ifndef DEBUG_MEMORY -#define DEBUG_MEMORY -#endif -#endif - -/** - * DEBUG_MEMORY_LOCATION: - * - * DEBUG_MEMORY_LOCATION should be activated only when debugging - * libxml i.e. if libxml has been configured with --with-debug-mem too. - */ -#ifdef DEBUG_MEMORY_LOCATION -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The XML memory wrapper support 4 basic overloadable functions. - */ -/** - * xmlFreeFunc: - * @mem: an already allocated block of memory - * - * Signature for a free() implementation. - */ -typedef void (XMLCALL *xmlFreeFunc)(void *mem); -/** - * xmlMallocFunc: - * @size: the size requested in bytes - * - * Signature for a malloc() implementation. - * - * Returns a pointer to the newly allocated block or NULL in case of error. - */ -typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); - -/** - * xmlReallocFunc: - * @mem: an already allocated block of memory - * @size: the new size requested in bytes - * - * Signature for a realloc() implementation. - * - * Returns a pointer to the newly reallocated block or NULL in case of error. - */ -typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size); - -/** - * xmlStrdupFunc: - * @str: a zero terminated string - * - * Signature for an strdup() implementation. - * - * Returns the copy of the string or NULL in case of error. - */ -typedef char *(XMLCALL *xmlStrdupFunc)(const char *str); - -/* - * The 4 interfaces used for all memory handling within libxml. -LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; -LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; -LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; -LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; -LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; - */ - -/* - * The way to overload the existing functions. - * The xmlGc function have an extra entry for atomic block - * allocations useful for garbage collected memory allocators - */ -XMLPUBFUN int XMLCALL - xmlMemSetup (xmlFreeFunc freeFunc, - xmlMallocFunc mallocFunc, - xmlReallocFunc reallocFunc, - xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL - xmlMemGet (xmlFreeFunc *freeFunc, - xmlMallocFunc *mallocFunc, - xmlReallocFunc *reallocFunc, - xmlStrdupFunc *strdupFunc); -XMLPUBFUN int XMLCALL - xmlGcMemSetup (xmlFreeFunc freeFunc, - xmlMallocFunc mallocFunc, - xmlMallocFunc mallocAtomicFunc, - xmlReallocFunc reallocFunc, - xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL - xmlGcMemGet (xmlFreeFunc *freeFunc, - xmlMallocFunc *mallocFunc, - xmlMallocFunc *mallocAtomicFunc, - xmlReallocFunc *reallocFunc, - xmlStrdupFunc *strdupFunc); - -/* - * Initialization of the memory layer. - */ -XMLPUBFUN int XMLCALL - xmlInitMemory (void); - -/* - * Cleanup of the memory layer. - */ -XMLPUBFUN void XMLCALL - xmlCleanupMemory (void); -/* - * These are specific to the XML debug memory wrapper. - */ -XMLPUBFUN int XMLCALL - xmlMemUsed (void); -XMLPUBFUN int XMLCALL - xmlMemBlocks (void); -XMLPUBFUN void XMLCALL - xmlMemDisplay (FILE *fp); -XMLPUBFUN void XMLCALL - xmlMemDisplayLast(FILE *fp, long nbBytes); -XMLPUBFUN void XMLCALL - xmlMemShow (FILE *fp, int nr); -XMLPUBFUN void XMLCALL - xmlMemoryDump (void); -XMLPUBFUN void * XMLCALL - xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN void * XMLCALL - xmlMemRealloc (void *ptr,size_t size); -XMLPUBFUN void XMLCALL - xmlMemFree (void *ptr); -XMLPUBFUN char * XMLCALL - xmlMemoryStrdup (const char *str); -XMLPUBFUN void * XMLCALL - xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN void * XMLCALL - xmlReallocLoc (void *ptr, size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL - xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN char * XMLCALL - xmlMemStrdupLoc (const char *str, const char *file, int line); - - -#ifdef DEBUG_MEMORY_LOCATION -/** - * xmlMalloc: - * @size: number of bytes to allocate - * - * Wrapper for the malloc() function used in the XML library. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__) -/** - * xmlMallocAtomic: - * @size: number of bytes to allocate - * - * Wrapper for the malloc() function used in the XML library for allocation - * of block not containing pointers to other areas. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__) -/** - * xmlRealloc: - * @ptr: pointer to the existing allocated area - * @size: number of bytes to allocate - * - * Wrapper for the realloc() function used in the XML library. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__) -/** - * xmlMemStrdup: - * @str: pointer to the existing string - * - * Wrapper for the strdup() function, xmlStrdup() is usually preferred. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__) - -#endif /* DEBUG_MEMORY_LOCATION */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#ifndef __XML_GLOBALS_H -#ifndef __XML_THREADS_H__ -#include -#include -#endif -#endif - -#endif /* __DEBUG_MEMORY_ALLOC__ */ - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlmodule.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlmodule.h deleted file mode 100755 index 2d66db7..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlmodule.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Summary: dynamic module loading - * Description: basic API for dynamic module loading, used by - * libexslt added in 2.6.17 - * - * Copy: See Copyright for the status of this software. - * - * Author: Joel W. Reed - */ - -#ifndef __XML_MODULE_H__ -#define __XML_MODULE_H__ - -#include - -#ifdef LIBXML_MODULES_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlModulePtr: - * - * A handle to a dynamically loaded module - */ -typedef struct _xmlModule xmlModule; -typedef xmlModule *xmlModulePtr; - -/** - * xmlModuleOption: - * - * enumeration of options that can be passed down to xmlModuleOpen() - */ -typedef enum { - XML_MODULE_LAZY = 1, /* lazy binding */ - XML_MODULE_LOCAL= 2 /* local binding */ -} xmlModuleOption; - -XMLPUBFUN xmlModulePtr XMLCALL xmlModuleOpen (const char *filename, - int options); - -XMLPUBFUN int XMLCALL xmlModuleSymbol (xmlModulePtr module, - const char* name, - void **result); - -XMLPUBFUN int XMLCALL xmlModuleClose (xmlModulePtr module); - -XMLPUBFUN int XMLCALL xmlModuleFree (xmlModulePtr module); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_MODULES_ENABLED */ - -#endif /*__XML_MODULE_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlreader.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlreader.h deleted file mode 100755 index 077239c..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlreader.h +++ /dev/null @@ -1,428 +0,0 @@ -/* - * Summary: the XMLReader implementation - * Description: API of the XML streaming API based on C# interfaces. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XMLREADER_H__ -#define __XML_XMLREADER_H__ - -#include -#include -#include -#ifdef LIBXML_SCHEMAS_ENABLED -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlParserSeverities: - * - * How severe an error callback is when the per-reader error callback API - * is used. - */ -typedef enum { - XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, - XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, - XML_PARSER_SEVERITY_WARNING = 3, - XML_PARSER_SEVERITY_ERROR = 4 -} xmlParserSeverities; - -#ifdef LIBXML_READER_ENABLED - -/** - * xmlTextReaderMode: - * - * Internal state values for the reader. - */ -typedef enum { - XML_TEXTREADER_MODE_INITIAL = 0, - XML_TEXTREADER_MODE_INTERACTIVE = 1, - XML_TEXTREADER_MODE_ERROR = 2, - XML_TEXTREADER_MODE_EOF =3, - XML_TEXTREADER_MODE_CLOSED = 4, - XML_TEXTREADER_MODE_READING = 5 -} xmlTextReaderMode; - -/** - * xmlParserProperties: - * - * Some common options to use with xmlTextReaderSetParserProp, but it - * is better to use xmlParserOption and the xmlReaderNewxxx and - * xmlReaderForxxx APIs now. - */ -typedef enum { - XML_PARSER_LOADDTD = 1, - XML_PARSER_DEFAULTATTRS = 2, - XML_PARSER_VALIDATE = 3, - XML_PARSER_SUBST_ENTITIES = 4 -} xmlParserProperties; - -/** - * xmlReaderTypes: - * - * Predefined constants for the different types of nodes. - */ -typedef enum { - XML_READER_TYPE_NONE = 0, - XML_READER_TYPE_ELEMENT = 1, - XML_READER_TYPE_ATTRIBUTE = 2, - XML_READER_TYPE_TEXT = 3, - XML_READER_TYPE_CDATA = 4, - XML_READER_TYPE_ENTITY_REFERENCE = 5, - XML_READER_TYPE_ENTITY = 6, - XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, - XML_READER_TYPE_COMMENT = 8, - XML_READER_TYPE_DOCUMENT = 9, - XML_READER_TYPE_DOCUMENT_TYPE = 10, - XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, - XML_READER_TYPE_NOTATION = 12, - XML_READER_TYPE_WHITESPACE = 13, - XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, - XML_READER_TYPE_END_ELEMENT = 15, - XML_READER_TYPE_END_ENTITY = 16, - XML_READER_TYPE_XML_DECLARATION = 17 -} xmlReaderTypes; - -/** - * xmlTextReader: - * - * Structure for an xmlReader context. - */ -typedef struct _xmlTextReader xmlTextReader; - -/** - * xmlTextReaderPtr: - * - * Pointer to an xmlReader context. - */ -typedef xmlTextReader *xmlTextReaderPtr; - -/* - * Constructors & Destructor - */ -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlNewTextReader (xmlParserInputBufferPtr input, - const char *URI); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlNewTextReaderFilename(const char *URI); - -XMLPUBFUN void XMLCALL - xmlFreeTextReader (xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderSetup(xmlTextReaderPtr reader, - xmlParserInputBufferPtr input, const char *URL, - const char *encoding, int options); - -/* - * Iterators - */ -XMLPUBFUN int XMLCALL - xmlTextReaderRead (xmlTextReaderPtr reader); - -#ifdef LIBXML_WRITER_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); -#endif - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadString (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); - -/* - * Attributes of the node - */ -XMLPUBFUN int XMLCALL - xmlTextReaderAttributeCount(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderDepth (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderHasAttributes(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderHasValue(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsDefault (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNodeType (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderQuoteChar (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadState (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); - -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstLocalName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstPrefix (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstString (xmlTextReaderPtr reader, - const xmlChar *str); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstValue (xmlTextReaderPtr reader); - -/* - * use the Const version of the routine for - * better performance and simpler code - */ -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocalName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderPrefix (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderValue (xmlTextReaderPtr reader); - -/* - * Methods of the XmlTextReader - */ -XMLPUBFUN int XMLCALL - xmlTextReaderClose (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, - int no); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttribute (xmlTextReaderPtr reader, - const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, - const xmlChar *localName, - const xmlChar *namespaceURI); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlTextReaderGetRemainder (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, - const xmlChar *prefix); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, - int no); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, - const xmlChar *localName, - const xmlChar *namespaceURI); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToElement (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNormalization (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstEncoding (xmlTextReaderPtr reader); - -/* - * Extensions - */ -XMLPUBFUN int XMLCALL - xmlTextReaderSetParserProp (xmlTextReaderPtr reader, - int prop, - int value); -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserProp (xmlTextReaderPtr reader, - int prop); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderCurrentNode (xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); - -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderPreserve (xmlTextReaderPtr reader); -#ifdef LIBXML_PATTERN_ENABLED -XMLPUBFUN int XMLCALL - xmlTextReaderPreservePattern(xmlTextReaderPtr reader, - const xmlChar *pattern, - const xmlChar **namespaces); -#endif /* LIBXML_PATTERN_ENABLED */ -XMLPUBFUN xmlDocPtr XMLCALL - xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderExpand (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNext (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNextSibling (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsValid (xmlTextReaderPtr reader); -#ifdef LIBXML_SCHEMAS_ENABLED -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, - const char *rng); -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, - xmlRelaxNGValidCtxtPtr ctxt, - int options); - -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, - xmlRelaxNGPtr schema); -XMLPUBFUN int XMLCALL - xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, - const char *xsd); -XMLPUBFUN int XMLCALL - xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, - xmlSchemaValidCtxtPtr ctxt, - int options); -XMLPUBFUN int XMLCALL - xmlTextReaderSetSchema (xmlTextReaderPtr reader, - xmlSchemaPtr schema); -#endif -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderStandalone (xmlTextReaderPtr reader); - - -/* - * Index lookup - */ -XMLPUBFUN long XMLCALL - xmlTextReaderByteConsumed (xmlTextReaderPtr reader); - -/* - * New more complete APIs for simpler creation and reuse of readers - */ -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderWalker (xmlDocPtr doc); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForDoc (const xmlChar * cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForFile (const char *filename, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -XMLPUBFUN int XMLCALL - xmlReaderNewWalker (xmlTextReaderPtr reader, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlReaderNewDoc (xmlTextReaderPtr reader, - const xmlChar * cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewFile (xmlTextReaderPtr reader, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewMemory (xmlTextReaderPtr reader, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewFd (xmlTextReaderPtr reader, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewIO (xmlTextReaderPtr reader, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -/* - * Error handling extensions - */ -typedef void * xmlTextReaderLocatorPtr; - -/** - * xmlTextReaderErrorFunc: - * @arg: the user argument - * @msg: the message - * @severity: the severity of the error - * @locator: a locator indicating where the error occurred - * - * Signature of an error callback from a reader parser - */ -typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, - const char *msg, - xmlParserSeverities severity, - xmlTextReaderLocatorPtr locator); -XMLPUBFUN int XMLCALL - xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); -XMLPUBFUN void XMLCALL - xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg); - -#endif /* LIBXML_READER_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_XMLREADER_H__ */ - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlregexp.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlregexp.h deleted file mode 100755 index b244db0..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlregexp.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Summary: regular expressions handling - * Description: basic API for libxml regular expressions handling used - * for XML Schemas and validation. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_REGEXP_H__ -#define __XML_REGEXP_H__ - -#include - -#ifdef LIBXML_REGEXP_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlRegexpPtr: - * - * A libxml regular expression, they can actually be far more complex - * thank the POSIX regex expressions. - */ -typedef struct _xmlRegexp xmlRegexp; -typedef xmlRegexp *xmlRegexpPtr; - -/** - * xmlRegExecCtxtPtr: - * - * A libxml progressive regular expression evaluation context - */ -typedef struct _xmlRegExecCtxt xmlRegExecCtxt; -typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; - -#ifdef __cplusplus -} -#endif -#include -#include -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The POSIX like API - */ -XMLPUBFUN xmlRegexpPtr XMLCALL - xmlRegexpCompile (const xmlChar *regexp); -XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL - xmlRegexpExec (xmlRegexpPtr comp, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlRegexpPrint (FILE *output, - xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL - xmlRegexpIsDeterminist(xmlRegexpPtr comp); - -/** - * xmlRegExecCallbacks: - * @exec: the regular expression context - * @token: the current token string - * @transdata: transition data - * @inputdata: input data - * - * Callback function when doing a transition in the automata - */ -typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, - const xmlChar *token, - void *transdata, - void *inputdata); - -/* - * The progressive API - */ -XMLPUBFUN xmlRegExecCtxtPtr XMLCALL - xmlRegNewExecCtxt (xmlRegexpPtr comp, - xmlRegExecCallbacks callback, - void *data); -XMLPUBFUN void XMLCALL - xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); -XMLPUBFUN int XMLCALL - xmlRegExecPushString(xmlRegExecCtxtPtr exec, - const xmlChar *value, - void *data); -XMLPUBFUN int XMLCALL - xmlRegExecPushString2(xmlRegExecCtxtPtr exec, - const xmlChar *value, - const xmlChar *value2, - void *data); - -XMLPUBFUN int XMLCALL - xmlRegExecNextValues(xmlRegExecCtxtPtr exec, - int *nbval, - int *nbneg, - xmlChar **values, - int *terminal); -XMLPUBFUN int XMLCALL - xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, - const xmlChar **string, - int *nbval, - int *nbneg, - xmlChar **values, - int *terminal); -#ifdef LIBXML_EXPR_ENABLED -/* - * Formal regular expression handling - * Its goal is to do some formal work on content models - */ - -/* expressions are used within a context */ -typedef struct _xmlExpCtxt xmlExpCtxt; -typedef xmlExpCtxt *xmlExpCtxtPtr; - -XMLPUBFUN void XMLCALL - xmlExpFreeCtxt (xmlExpCtxtPtr ctxt); -XMLPUBFUN xmlExpCtxtPtr XMLCALL - xmlExpNewCtxt (int maxNodes, - xmlDictPtr dict); - -XMLPUBFUN int XMLCALL - xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt); - -/* Expressions are trees but the tree is opaque */ -typedef struct _xmlExpNode xmlExpNode; -typedef xmlExpNode *xmlExpNodePtr; - -typedef enum { - XML_EXP_EMPTY = 0, - XML_EXP_FORBID = 1, - XML_EXP_ATOM = 2, - XML_EXP_SEQ = 3, - XML_EXP_OR = 4, - XML_EXP_COUNT = 5 -} xmlExpNodeType; - -/* - * 2 core expressions shared by all for the empty language set - * and for the set with just the empty token - */ -XMLPUBVAR xmlExpNodePtr forbiddenExp; -XMLPUBVAR xmlExpNodePtr emptyExp; - -/* - * Expressions are reference counted internally - */ -XMLPUBFUN void XMLCALL - xmlExpFree (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr); -XMLPUBFUN void XMLCALL - xmlExpRef (xmlExpNodePtr expr); - -/* - * constructors can be either manual or from a string - */ -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpParse (xmlExpCtxtPtr ctxt, - const char *expr); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewAtom (xmlExpCtxtPtr ctxt, - const xmlChar *name, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewOr (xmlExpCtxtPtr ctxt, - xmlExpNodePtr left, - xmlExpNodePtr right); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewSeq (xmlExpCtxtPtr ctxt, - xmlExpNodePtr left, - xmlExpNodePtr right); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewRange (xmlExpCtxtPtr ctxt, - xmlExpNodePtr subset, - int min, - int max); -/* - * The really interesting APIs - */ -XMLPUBFUN int XMLCALL - xmlExpIsNillable(xmlExpNodePtr expr); -XMLPUBFUN int XMLCALL - xmlExpMaxToken (xmlExpNodePtr expr); -XMLPUBFUN int XMLCALL - xmlExpGetLanguage(xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar**langList, - int len); -XMLPUBFUN int XMLCALL - xmlExpGetStart (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar**tokList, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpStringDerive(xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar *str, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpExpDerive (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - xmlExpNodePtr sub); -XMLPUBFUN int XMLCALL - xmlExpSubsume (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - xmlExpNodePtr sub); -XMLPUBFUN void XMLCALL - xmlExpDump (xmlBufferPtr buf, - xmlExpNodePtr expr); -#endif /* LIBXML_EXPR_ENABLED */ -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_REGEXP_ENABLED */ - -#endif /*__XML_REGEXP_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlsave.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlsave.h deleted file mode 100755 index 1eb724a..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlsave.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Summary: the XML document serializer - * Description: API to save document or subtree of document - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XMLSAVE_H__ -#define __XML_XMLSAVE_H__ - -#include -#include -#include -#include - -#ifdef LIBXML_OUTPUT_ENABLED -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlSaveOption: - * - * This is the set of XML save options that can be passed down - * to the xmlSaveToFd() and similar calls. - */ -typedef enum { - XML_SAVE_FORMAT = 1<<0, /* format save output */ - XML_SAVE_NO_DECL = 1<<1, /* drop the xml declaration */ - XML_SAVE_NO_EMPTY = 1<<2, /* no empty tags */ - XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */ - XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */ - XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */ - XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */ - XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */ -} xmlSaveOption; - - -typedef struct _xmlSaveCtxt xmlSaveCtxt; -typedef xmlSaveCtxt *xmlSaveCtxtPtr; - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToFd (int fd, - const char *encoding, - int options); -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToFilename (const char *filename, - const char *encoding, - int options); - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToBuffer (xmlBufferPtr buffer, - const char *encoding, - int options); - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToIO (xmlOutputWriteCallback iowrite, - xmlOutputCloseCallback ioclose, - void *ioctx, - const char *encoding, - int options); - -XMLPUBFUN long XMLCALL - xmlSaveDoc (xmlSaveCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN long XMLCALL - xmlSaveTree (xmlSaveCtxtPtr ctxt, - xmlNodePtr node); - -XMLPUBFUN int XMLCALL - xmlSaveFlush (xmlSaveCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSaveClose (xmlSaveCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSaveSetEscape (xmlSaveCtxtPtr ctxt, - xmlCharEncodingOutputFunc escape); -XMLPUBFUN int XMLCALL - xmlSaveSetAttrEscape (xmlSaveCtxtPtr ctxt, - xmlCharEncodingOutputFunc escape); -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_OUTPUT_ENABLED */ -#endif /* __XML_XMLSAVE_H__ */ - - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemas.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemas.h deleted file mode 100755 index 350f406..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemas.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Summary: incomplete XML Schemas structure implementation - * Description: interface to the XML Schemas handling and schema validity - * checking, it is incomplete right now. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_H__ -#define __XML_SCHEMA_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This error codes are obsolete; not used any more. - */ -typedef enum { - XML_SCHEMAS_ERR_OK = 0, - XML_SCHEMAS_ERR_NOROOT = 1, - XML_SCHEMAS_ERR_UNDECLAREDELEM, - XML_SCHEMAS_ERR_NOTTOPLEVEL, - XML_SCHEMAS_ERR_MISSING, - XML_SCHEMAS_ERR_WRONGELEM, - XML_SCHEMAS_ERR_NOTYPE, - XML_SCHEMAS_ERR_NOROLLBACK, - XML_SCHEMAS_ERR_ISABSTRACT, - XML_SCHEMAS_ERR_NOTEMPTY, - XML_SCHEMAS_ERR_ELEMCONT, - XML_SCHEMAS_ERR_HAVEDEFAULT, - XML_SCHEMAS_ERR_NOTNILLABLE, - XML_SCHEMAS_ERR_EXTRACONTENT, - XML_SCHEMAS_ERR_INVALIDATTR, - XML_SCHEMAS_ERR_INVALIDELEM, - XML_SCHEMAS_ERR_NOTDETERMINIST, - XML_SCHEMAS_ERR_CONSTRUCT, - XML_SCHEMAS_ERR_INTERNAL, - XML_SCHEMAS_ERR_NOTSIMPLE, - XML_SCHEMAS_ERR_ATTRUNKNOWN, - XML_SCHEMAS_ERR_ATTRINVALID, - XML_SCHEMAS_ERR_VALUE, - XML_SCHEMAS_ERR_FACET, - XML_SCHEMAS_ERR_, - XML_SCHEMAS_ERR_XXX -} xmlSchemaValidError; - -/* -* ATTENTION: Change xmlSchemaSetValidOptions's check -* for invalid values, if adding to the validation -* options below. -*/ -/** - * xmlSchemaValidOption: - * - * This is the set of XML Schema validation options. - */ -typedef enum { - XML_SCHEMA_VAL_VC_I_CREATE = 1<<0 - /* Default/fixed: create an attribute node - * or an element's text node on the instance. - */ -} xmlSchemaValidOption; - -/* - XML_SCHEMA_VAL_XSI_ASSEMBLE = 1<<1, - * assemble schemata using - * xsi:schemaLocation and - * xsi:noNamespaceSchemaLocation -*/ - -/** - * The schemas related types are kept internal - */ -typedef struct _xmlSchema xmlSchema; -typedef xmlSchema *xmlSchemaPtr; - -/** - * xmlSchemaValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from an XSD validation - */ -typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) - (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlSchemaValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from an XSD validation - */ -typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) - (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * A schemas validation context - */ -typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; -typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; - -typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; -typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; - -/** - * xmlSchemaValidityLocatorFunc: - * @ctx: user provided context - * @file: returned file information - * @line: returned line information - * - * A schemas validation locator, a callback called by the validator. - * This is used when file or node informations are not available - * to find out what file and line number are affected - * - * Returns: 0 in case of success and -1 in case of error - */ - -typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx, - const char **file, unsigned long *line); - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewMemParserCtxt (const char *buffer, - int size); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewDocParserCtxt (xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, - xmlSchemaValidityErrorFunc err, - xmlSchemaValidityWarningFunc warn, - void *ctx); -XMLPUBFUN void XMLCALL - xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, - xmlSchemaValidityErrorFunc * err, - xmlSchemaValidityWarningFunc * warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); - -XMLPUBFUN xmlSchemaPtr XMLCALL - xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchemaFree (xmlSchemaPtr schema); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlSchemaDump (FILE *output, - xmlSchemaPtr schema); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, - xmlSchemaValidityErrorFunc err, - xmlSchemaValidityWarningFunc warn, - void *ctx); -XMLPUBFUN void XMLCALL - xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, - xmlSchemaValidityErrorFunc *err, - xmlSchemaValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, - int options); -XMLPUBFUN void XMLCALL - xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, - const char *filename); -XMLPUBFUN int XMLCALL - xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); - -XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL - xmlSchemaNewValidCtxt (xmlSchemaPtr schema); -XMLPUBFUN void XMLCALL - xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, - xmlDocPtr instance); -XMLPUBFUN int XMLCALL - xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, - xmlParserInputBufferPtr input, - xmlCharEncoding enc, - xmlSAXHandlerPtr sax, - void *user_data); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt, - const char * filename, - int options); - -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); - -/* - * Interface to insert Schemas SAX validation in a SAX stream - */ -typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; -typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; - -XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL - xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, - xmlSAXHandlerPtr *sax, - void **user_data); -XMLPUBFUN int XMLCALL - xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); - - -XMLPUBFUN void XMLCALL - xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt, - xmlSchemaValidityLocatorFunc f, - void *ctxt); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemastypes.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemastypes.h deleted file mode 100755 index 219789e..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlschemastypes.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Summary: implementation of XML Schema Datatypes - * Description: module providing the XML Schema Datatypes implementation - * both definition and validity checking - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_TYPES_H__ -#define __XML_SCHEMA_TYPES_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMA_WHITESPACE_UNKNOWN = 0, - XML_SCHEMA_WHITESPACE_PRESERVE = 1, - XML_SCHEMA_WHITESPACE_REPLACE = 2, - XML_SCHEMA_WHITESPACE_COLLAPSE = 3 -} xmlSchemaWhitespaceValueType; - -XMLPUBFUN void XMLCALL - xmlSchemaInitTypes (void); -XMLPUBFUN void XMLCALL - xmlSchemaCleanupTypes (void); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetPredefinedType (const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val); -XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val, - xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFacet (xmlSchemaTypePtr base, - xmlSchemaFacetPtr facet, - const xmlChar *value, - xmlSchemaValPtr val); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet, - xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, - const xmlChar *value, - xmlSchemaValPtr val, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN void XMLCALL - xmlSchemaFreeValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaFacetPtr XMLCALL - xmlSchemaNewFacet (void); -XMLPUBFUN int XMLCALL - xmlSchemaCheckFacet (xmlSchemaFacetPtr facet, - xmlSchemaTypePtr typeDecl, - xmlSchemaParserCtxtPtr ctxt, - const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlSchemaFreeFacet (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL - xmlSchemaCompareValues (xmlSchemaValPtr x, - xmlSchemaValPtr y); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type); -XMLPUBFUN int XMLCALL - xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet, - const xmlChar *value, - unsigned long actualLen, - unsigned long *expectedLen); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetBuiltInType (xmlSchemaValType type); -XMLPUBFUN int XMLCALL - xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, - int facetType); -XMLPUBFUN xmlChar * XMLCALL - xmlSchemaCollapseString (const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlSchemaWhiteSpaceReplace (const xmlChar *value); -XMLPUBFUN unsigned long XMLCALL - xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, - xmlSchemaFacetPtr facet, - const xmlChar *value, - xmlSchemaValPtr val, - unsigned long *length); -XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet, - xmlSchemaValType valType, - const xmlChar *value, - xmlSchemaValPtr val, - unsigned long *length, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val, - xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValue (xmlSchemaValPtr val, - const xmlChar **retValue); -XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, - const xmlChar **retValue, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN int XMLCALL - xmlSchemaValueAppend (xmlSchemaValPtr prev, - xmlSchemaValPtr cur); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaValueGetNext (xmlSchemaValPtr cur); -XMLPUBFUN const xmlChar * XMLCALL - xmlSchemaValueGetAsString (xmlSchemaValPtr val); -XMLPUBFUN int XMLCALL - xmlSchemaValueGetAsBoolean (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewStringValue (xmlSchemaValType type, - const xmlChar *value); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewNOTATIONValue (const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewQNameValue (const xmlChar *namespaceName, - const xmlChar *localName); -XMLPUBFUN int XMLCALL - xmlSchemaCompareValuesWhtsp (xmlSchemaValPtr x, - xmlSchemaWhitespaceValueType xws, - xmlSchemaValPtr y, - xmlSchemaWhitespaceValueType yws); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaCopyValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaValType XMLCALL - xmlSchemaGetValType (xmlSchemaValPtr val); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_TYPES_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlstring.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlstring.h deleted file mode 100755 index 0cb254a..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlstring.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Summary: set of routines to process strings - * Description: type and interfaces needed for the internal string handling - * of the library, especially UTF8 processing. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_STRING_H__ -#define __XML_STRING_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlChar: - * - * This is a basic byte in an UTF-8 encoded string. - * It's unsigned allowing to pinpoint case where char * are assigned - * to xmlChar * (possibly making serialization back impossible). - */ -typedef unsigned char xmlChar; - -/** - * BAD_CAST: - * - * Macro to cast a string to an xmlChar * when one know its safe. - */ -#define BAD_CAST (xmlChar *) - -/* - * xmlChar handling - */ -XMLPUBFUN xmlChar * XMLCALL - xmlStrdup (const xmlChar *cur); -XMLPUBFUN xmlChar * XMLCALL - xmlStrndup (const xmlChar *cur, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlCharStrndup (const char *cur, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlCharStrdup (const char *cur); -XMLPUBFUN xmlChar * XMLCALL - xmlStrsub (const xmlChar *str, - int start, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrchr (const xmlChar *str, - xmlChar val); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrstr (const xmlChar *str, - const xmlChar *val); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrcasestr (const xmlChar *str, - const xmlChar *val); -XMLPUBFUN int XMLCALL - xmlStrcmp (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrncmp (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrcasecmp (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrncasecmp (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrEqual (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrQEqual (const xmlChar *pref, - const xmlChar *name, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlStrlen (const xmlChar *str); -XMLPUBFUN xmlChar * XMLCALL - xmlStrcat (xmlChar *cur, - const xmlChar *add); -XMLPUBFUN xmlChar * XMLCALL - xmlStrncat (xmlChar *cur, - const xmlChar *add, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlStrncatNew (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrPrintf (xmlChar *buf, - int len, - const char *msg, - ...) LIBXML_ATTR_FORMAT(3,4); -XMLPUBFUN int XMLCALL - xmlStrVPrintf (xmlChar *buf, - int len, - const char *msg, - va_list ap) LIBXML_ATTR_FORMAT(3,0); - -XMLPUBFUN int XMLCALL - xmlGetUTF8Char (const unsigned char *utf, - int *len); -XMLPUBFUN int XMLCALL - xmlCheckUTF8 (const unsigned char *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Strsize (const xmlChar *utf, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlUTF8Strndup (const xmlChar *utf, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlUTF8Strpos (const xmlChar *utf, - int pos); -XMLPUBFUN int XMLCALL - xmlUTF8Strloc (const xmlChar *utf, - const xmlChar *utfchar); -XMLPUBFUN xmlChar * XMLCALL - xmlUTF8Strsub (const xmlChar *utf, - int start, - int len); -XMLPUBFUN int XMLCALL - xmlUTF8Strlen (const xmlChar *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Size (const xmlChar *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Charcmp (const xmlChar *utf1, - const xmlChar *utf2); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_STRING_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlunicode.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlunicode.h deleted file mode 100755 index 74e10e4..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlunicode.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Summary: Unicode character APIs - * Description: API for the Unicode character APIs - * - * This file is automatically generated from the - * UCS description files of the Unicode Character Database - * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html - * using the genUnicode.py Python script. - * - * Generation date: Mon Mar 27 11:09:52 2006 - * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt - * Author: Daniel Veillard - */ - -#ifndef __XML_UNICODE_H__ -#define __XML_UNICODE_H__ - -#include - -#ifdef LIBXML_UNICODE_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN int XMLCALL xmlUCSIsAegeanNumbers (int code); -XMLPUBFUN int XMLCALL xmlUCSIsAlphabeticPresentationForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArmenian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArrows (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBasicLatin (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBengali (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBlockElements (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBopomofo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBopomofoExtended (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBoxDrawing (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBraillePatterns (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBuhid (int code); -XMLPUBFUN int XMLCALL xmlUCSIsByzantineMusicalSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibility (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKRadicalsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKSymbolsandPunctuation (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCherokee (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarks (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarksforSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningHalfMarks (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningMarksforSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsControlPictures (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCurrencySymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCypriotSyllabary (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCyrillic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCyrillicSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDeseret (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDevanagari (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDingbats (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEnclosedAlphanumerics (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEnclosedCJKLettersandMonths (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEthiopic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeneralPunctuation (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeometricShapes (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeorgian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGothic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreek (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreekExtended (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreekandCoptic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGujarati (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGurmukhi (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHalfwidthandFullwidthForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulCompatibilityJamo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulJamo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulSyllables (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHanunoo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHebrew (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHighPrivateUseSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHighSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHiragana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsIPAExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsIdeographicDescriptionCharacters (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKanbun (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKangxiRadicals (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKannada (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKatakana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKatakanaPhoneticExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKhmer (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKhmerSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLao (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatin1Supplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedAdditional (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLetterlikeSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLimbu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLinearBIdeograms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLinearBSyllabary (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLowSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMalayalam (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMathematicalAlphanumericSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMathematicalOperators (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbolsandArrows (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousTechnical (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMongolian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMusicalSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMyanmar (int code); -XMLPUBFUN int XMLCALL xmlUCSIsNumberForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOgham (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOldItalic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOpticalCharacterRecognition (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOriya (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOsmanya (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPhoneticExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPrivateUse (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPrivateUseArea (int code); -XMLPUBFUN int XMLCALL xmlUCSIsRunic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsShavian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSinhala (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSmallFormVariants (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSpacingModifierLetters (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSpecials (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSuperscriptsandSubscripts (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalMathematicalOperators (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSyriac (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTagalog (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTagbanwa (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTags (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTaiLe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTaiXuanJingSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTamil (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTelugu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsThaana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsThai (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTibetan (int code); -XMLPUBFUN int XMLCALL xmlUCSIsUgaritic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsUnifiedCanadianAboriginalSyllabics (int code); -XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectors (int code); -XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectorsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYiRadicals (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYiSyllables (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYijingHexagramSymbols (int code); - -XMLPUBFUN int XMLCALL xmlUCSIsBlock (int code, const char *block); - -XMLPUBFUN int XMLCALL xmlUCSIsCatC (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCf (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatL (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLm (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLt (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatM (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMn (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatN (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNd (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatP (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPd (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPf (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPi (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatS (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSk (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSm (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZ (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZp (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZs (int code); - -XMLPUBFUN int XMLCALL xmlUCSIsCat (int code, const char *cat); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_UNICODE_ENABLED */ - -#endif /* __XML_UNICODE_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlversion.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlversion.h deleted file mode 100755 index 549dcf9..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlversion.h +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Summary: compile-time version informations - * Description: compile-time version informations for the XML library - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_VERSION_H__ -#define __XML_VERSION_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * use those to be sure nothing nasty will happen if - * your library and includes mismatch - */ -#ifndef LIBXML2_COMPILING_MSCCDEF -XMLPUBFUN void XMLCALL xmlCheckVersion(int version); -#endif /* LIBXML2_COMPILING_MSCCDEF */ - -/** - * LIBXML_DOTTED_VERSION: - * - * the version string like "1.2.3" - */ -#define LIBXML_DOTTED_VERSION "2.9.7" - -/** - * LIBXML_VERSION: - * - * the version number: 1.2.3 value is 10203 - */ -#define LIBXML_VERSION 20907 - -/** - * LIBXML_VERSION_STRING: - * - * the version number string, 1.2.3 value is "10203" - */ -#define LIBXML_VERSION_STRING "20907" - -/** - * LIBXML_VERSION_EXTRA: - * - * extra version information, used to show a CVS compilation - */ -#define LIBXML_VERSION_EXTRA "" - -/** - * LIBXML_TEST_VERSION: - * - * Macro to check that the libxml version in use is compatible with - * the version the software has been compiled against - */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20907); - -#ifndef VMS -#if 0 -/** - * WITH_TRIO: - * - * defined if the trio support need to be configured in - */ -#define WITH_TRIO -#else -/** - * WITHOUT_TRIO: - * - * defined if the trio support should not be configured in - */ -#define WITHOUT_TRIO -#endif -#else /* VMS */ -/** - * WITH_TRIO: - * - * defined if the trio support need to be configured in - */ -#define WITH_TRIO 1 -#endif /* VMS */ - -/** - * LIBXML_THREAD_ENABLED: - * - * Whether the thread support is configured in - */ -#if 0 -#if defined(_REENTRANT) || defined(__MT__) || \ - (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L)) -#define LIBXML_THREAD_ENABLED -#endif -#endif - -/** - * LIBXML_THREAD_ALLOC_ENABLED: - * - * Whether the allocation hooks are per-thread - */ -#if 0 -#define LIBXML_THREAD_ALLOC_ENABLED -#endif - -/** - * LIBXML_TREE_ENABLED: - * - * Whether the DOM like tree manipulation API support is configured in - */ -#if 1 -#define LIBXML_TREE_ENABLED -#endif - -/** - * LIBXML_OUTPUT_ENABLED: - * - * Whether the serialization/saving support is configured in - */ -#if 1 -#define LIBXML_OUTPUT_ENABLED -#endif - -/** - * LIBXML_PUSH_ENABLED: - * - * Whether the push parsing interfaces are configured in - */ -#if 1 -#define LIBXML_PUSH_ENABLED -#endif - -/** - * LIBXML_READER_ENABLED: - * - * Whether the xmlReader parsing interface is configured in - */ -#if 1 -#define LIBXML_READER_ENABLED -#endif - -/** - * LIBXML_PATTERN_ENABLED: - * - * Whether the xmlPattern node selection interface is configured in - */ -#if 1 -#define LIBXML_PATTERN_ENABLED -#endif - -/** - * LIBXML_WRITER_ENABLED: - * - * Whether the xmlWriter saving interface is configured in - */ -#if 1 -#define LIBXML_WRITER_ENABLED -#endif - -/** - * LIBXML_SAX1_ENABLED: - * - * Whether the older SAX1 interface is configured in - */ -#if 1 -#define LIBXML_SAX1_ENABLED -#endif - -/** - * LIBXML_FTP_ENABLED: - * - * Whether the FTP support is configured in - */ -#if 0 -#define LIBXML_FTP_ENABLED -#endif - -/** - * LIBXML_HTTP_ENABLED: - * - * Whether the HTTP support is configured in - */ -#if 0 -#define LIBXML_HTTP_ENABLED -#endif - -/** - * LIBXML_VALID_ENABLED: - * - * Whether the DTD validation support is configured in - */ -#if 0 -#define LIBXML_VALID_ENABLED -#endif - -/** - * LIBXML_HTML_ENABLED: - * - * Whether the HTML support is configured in - */ -#if 0 -#define LIBXML_HTML_ENABLED -#endif - -/** - * LIBXML_LEGACY_ENABLED: - * - * Whether the deprecated APIs are compiled in for compatibility - */ -#if 0 -#define LIBXML_LEGACY_ENABLED -#endif - -/** - * LIBXML_C14N_ENABLED: - * - * Whether the Canonicalization support is configured in - */ -#if 0 -#define LIBXML_C14N_ENABLED -#endif - -/** - * LIBXML_CATALOG_ENABLED: - * - * Whether the Catalog support is configured in - */ -#if 0 -#define LIBXML_CATALOG_ENABLED -#endif - -/** - * LIBXML_DOCB_ENABLED: - * - * Whether the SGML Docbook support is configured in - */ -#if 0 -#define LIBXML_DOCB_ENABLED -#endif - -/** - * LIBXML_XPATH_ENABLED: - * - * Whether XPath is configured in - */ -#if 1 -#define LIBXML_XPATH_ENABLED -#endif - -/** - * LIBXML_XPTR_ENABLED: - * - * Whether XPointer is configured in - */ -#if 1 -#define LIBXML_XPTR_ENABLED -#endif - -/** - * LIBXML_XINCLUDE_ENABLED: - * - * Whether XInclude is configured in - */ -#if 1 -#define LIBXML_XINCLUDE_ENABLED -#endif - -/** - * LIBXML_ICONV_ENABLED: - * - * Whether iconv support is available - */ -#if 0 -#define LIBXML_ICONV_ENABLED -#endif - -/** - * LIBXML_ICU_ENABLED: - * - * Whether icu support is available - */ -#if 0 -#define LIBXML_ICU_ENABLED -#endif - -/** - * LIBXML_ISO8859X_ENABLED: - * - * Whether ISO-8859-* support is made available in case iconv is not - */ -#if 0 -#define LIBXML_ISO8859X_ENABLED -#endif - -/** - * LIBXML_DEBUG_ENABLED: - * - * Whether Debugging module is configured in - */ -#if 0 -#define LIBXML_DEBUG_ENABLED -#endif - -/** - * DEBUG_MEMORY_LOCATION: - * - * Whether the memory debugging is configured in - */ -#if 0 -#define DEBUG_MEMORY_LOCATION -#endif - -/** - * LIBXML_DEBUG_RUNTIME: - * - * Whether the runtime debugging is configured in - */ -#if 0 -#define LIBXML_DEBUG_RUNTIME -#endif - -/** - * LIBXML_UNICODE_ENABLED: - * - * Whether the Unicode related interfaces are compiled in - */ -#if 1 -#define LIBXML_UNICODE_ENABLED -#endif - -/** - * LIBXML_REGEXP_ENABLED: - * - * Whether the regular expressions interfaces are compiled in - */ -#if 1 -#define LIBXML_REGEXP_ENABLED -#endif - -/** - * LIBXML_AUTOMATA_ENABLED: - * - * Whether the automata interfaces are compiled in - */ -#if 1 -#define LIBXML_AUTOMATA_ENABLED -#endif - -/** - * LIBXML_EXPR_ENABLED: - * - * Whether the formal expressions interfaces are compiled in - */ -#if 1 -#define LIBXML_EXPR_ENABLED -#endif - -/** - * LIBXML_SCHEMAS_ENABLED: - * - * Whether the Schemas validation interfaces are compiled in - */ -#if 1 -#define LIBXML_SCHEMAS_ENABLED -#endif - -/** - * LIBXML_SCHEMATRON_ENABLED: - * - * Whether the Schematron validation interfaces are compiled in - */ -#if 1 -#define LIBXML_SCHEMATRON_ENABLED -#endif - -/** - * LIBXML_MODULES_ENABLED: - * - * Whether the module interfaces are compiled in - */ -#if 0 -#define LIBXML_MODULES_ENABLED -/** - * LIBXML_MODULE_EXTENSION: - * - * the string suffix used by dynamic modules (usually shared libraries) - */ -#define LIBXML_MODULE_EXTENSION ".dll" -#endif - -/** - * LIBXML_ZLIB_ENABLED: - * - * Whether the Zlib support is compiled in - */ -#if 0 -#define LIBXML_ZLIB_ENABLED -#endif - -/** - * LIBXML_LZMA_ENABLED: - * - * Whether the Lzma support is compiled in - */ -#if 0 -#define LIBXML_LZMA_ENABLED -#endif - -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif - -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - */ - -#ifndef ATTRIBUTE_UNUSED -# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7))) -# define ATTRIBUTE_UNUSED __attribute__((unused)) -# else -# define ATTRIBUTE_UNUSED -# endif -#endif - -/** - * LIBXML_ATTR_ALLOC_SIZE: - * - * Macro used to indicate to GCC this is an allocator function - */ - -#ifndef LIBXML_ATTR_ALLOC_SIZE -# if (!defined(__clang__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))) -# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) -# else -# define LIBXML_ATTR_ALLOC_SIZE(x) -# endif -#else -# define LIBXML_ATTR_ALLOC_SIZE(x) -#endif - -/** - * LIBXML_ATTR_FORMAT: - * - * Macro used to indicate to GCC the parameter are printf like - */ - -#ifndef LIBXML_ATTR_FORMAT -# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) -# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) -# else -# define LIBXML_ATTR_FORMAT(fmt,args) -# endif -#else -# define LIBXML_ATTR_FORMAT(fmt,args) -#endif - -#else /* ! __GNUC__ */ -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - */ -#define ATTRIBUTE_UNUSED -/** - * LIBXML_ATTR_ALLOC_SIZE: - * - * Macro used to indicate to GCC this is an allocator function - */ -#define LIBXML_ATTR_ALLOC_SIZE(x) -/** - * LIBXML_ATTR_FORMAT: - * - * Macro used to indicate to GCC the parameter are printf like - */ -#define LIBXML_ATTR_FORMAT(fmt,args) -#endif /* __GNUC__ */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif - - diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlwin32version.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlwin32version.h deleted file mode 100755 index 63a68ba..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlwin32version.h +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Summary: compile-time version informations on Windows - * Description: compile-time version informations for the XML library - * when compiled on the Windows platform - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_VERSION_H__ -#define __XML_VERSION_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * use those to be sure nothing nasty will happen if - * your library and includes mismatch - */ -#ifndef LIBXML2_COMPILING_MSCCDEF -extern void xmlCheckVersion(int version); -#endif /* LIBXML2_COMPILING_MSCCDEF */ - -/** - * LIBXML_DOTTED_VERSION: - * - * the version string like "1.2.3" - */ -#define LIBXML_DOTTED_VERSION "2.9.7" - -/** - * LIBXML_VERSION: - * - * the version number: 1.2.3 value is 1002003 - */ -#define LIBXML_VERSION 20907 - -/** - * LIBXML_VERSION_STRING: - * - * the version number string, 1.2.3 value is "1002003" - */ -#define LIBXML_VERSION_STRING "20907" - -/** - * LIBXML_VERSION_EXTRA: - * - * extra version information, used to show a CVS compilation - */ -#define LIBXML_VERSION_EXTRA "-win32" - -/** - * LIBXML_TEST_VERSION: - * - * Macro to check that the libxml version in use is compatible with - * the version the software has been compiled against - */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20907); - -#if 0 -/** - * WITH_TRIO: - * - * defined if the trio support need to be configured in - */ -#define WITH_TRIO -#else -/** - * WITHOUT_TRIO: - * - * defined if the trio support should not be configured in - */ -#define WITHOUT_TRIO -#endif - -/** - * LIBXML_THREAD_ENABLED: - * - * Whether the thread support is configured in - */ -#if 0 -#define LIBXML_THREAD_ENABLED -#endif - -/** - * LIBXML_FTP_ENABLED: - * - * Whether the FTP support is configured in - */ -#if 1 -#define LIBXML_FTP_ENABLED -#endif - -/** - * LIBXML_HTTP_ENABLED: - * - * Whether the HTTP support is configured in - */ -#if 1 -#define LIBXML_HTTP_ENABLED -#endif - -/** - * LIBXML_HTML_ENABLED: - * - * Whether the HTML support is configured in - */ -#if 1 -#define LIBXML_HTML_ENABLED -#endif - -/** - * LIBXML_CATALOG_ENABLED: - * - * Whether the Catalog support is configured in - */ -#if 1 -#define LIBXML_CATALOG_ENABLED -#endif - -/** - * LIBXML_DOCB_ENABLED: - * - * Whether the SGML Docbook support is configured in - */ -#if 1 -#define LIBXML_DOCB_ENABLED -#endif - -/** - * LIBXML_XPATH_ENABLED: - * - * Whether XPath is configured in - */ -#if 1 -#define LIBXML_XPATH_ENABLED -#endif - -/** - * LIBXML_XPTR_ENABLED: - * - * Whether XPointer is configured in - */ -#if 1 -#define LIBXML_XPTR_ENABLED -#endif - -/** - * LIBXML_C14N_ENABLED: - * - * Whether the Canonicalization support is configured in - */ -#if 0 -#define LIBXML_C14N_ENABLED -#endif - -/** - * LIBXML_XINCLUDE_ENABLED: - * - * Whether XInclude is configured in - */ -#if 1 -#define LIBXML_XINCLUDE_ENABLED -#endif - -/** - * LIBXML_SCHEMATRON_ENABLED: - * - * Whether the Schematron validation interfaces are compiled in - */ -#if 1 -#define LIBXML_SCHEMATRON_ENABLED -#endif - -/** - * LIBXML_ICONV_ENABLED: - * - * Whether iconv support is available - */ -#if 0 -#define LIBXML_ICONV_ENABLED -#endif - -/** - * LIBXML_ISO8859X_ENABLED: - * - * Whether ISO-8859-* support is made available in case iconv is not - */ -#if 1 -#define LIBXML_ISO8859X_ENABLED -#endif - -/** - * LIBXML_DEBUG_ENABLED: - * - * Whether Debugging module is configured in - */ -#if 1 -#define LIBXML_DEBUG_ENABLED -#endif - -/** - * DEBUG_MEMORY_LOCATION: - * - * Whether the memory debugging is configured in - */ -#if 0 -#define DEBUG_MEMORY_LOCATION -#endif - -/** - * LIBXML_DEBUG_RUNTIME: - * - * Whether the runtime debugging is configured in - */ -#if 0 -#define LIBXML_DEBUG_RUNTIME -#endif - -/** - * LIBXML_DLL_IMPORT: - * - * Used on Windows (MS C compiler only) to declare a variable as - * imported from the library. This macro should be empty when compiling - * libxml itself. It should expand to __declspec(dllimport) - * when the client code includes this header, and that only if the client - * links dynamically against libxml. - * For this to work, we need three macros. One tells us which compiler is - * being used and luckily the compiler defines such a thing: _MSC_VER. The - * second macro tells us if we are compiling libxml or the client code and - * we define the macro IN_LIBXML on the compiler's command line for this - * purpose. The third macro, LIBXML_STATIC, must be defined by any client - * code which links against libxml statically. - */ -#ifndef LIBXML_DLL_IMPORT -#if defined(_MSC_VER) && !defined(IN_LIBXML) && !defined(LIBXML_STATIC) -#define LIBXML_DLL_IMPORT __declspec(dllimport) -#else -#define LIBXML_DLL_IMPORT -#endif -#endif - -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif - -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - */ - -#ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED -#endif - -/** - * ATTRIBUTE_ALLOC_SIZE: - * - * Macro used to indicate to GCC this is an allocator function - */ - -#ifndef ATTRIBUTE_ALLOC_SIZE -# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))) -# define ATTRIBUTE_ALLOC_SIZE(x) __attribute__((alloc_size(x))) -# else -# define ATTRIBUTE_ALLOC_SIZE(x) -# endif -#else -# define ATTRIBUTE_ALLOC_SIZE(x) -#endif - -/** - * LIBXML_ATTR_FORMAT: - * - * Macro used to indicate to GCC the parameter are printf like - */ - -#ifndef LIBXML_ATTR_FORMAT -# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) -# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) -# else -# define LIBXML_ATTR_FORMAT(fmt,args) -# endif -#else -# define LIBXML_ATTR_FORMAT(fmt,args) -#endif - -#else /* !__GNUC__ */ -#define ATTRIBUTE_UNUSED -#define LIBXML_ATTR_FORMAT(fmt,args) -#define ATTRIBUTE_ALLOC_SIZE(x) -#endif /* __GNUC__ */ - -/* - * #pragma comment(lib, "iconv.lib") - * - * pragma understood my MS compiler which enables a conditional link with - * iconv. - */ -#ifdef _MSC_VER -#if defined LIBXML_ICONV_ENABLED && !defined LIBXML2_COMPILING_MSCCDEF -#pragma comment(lib, "iconv.lib") -#endif -#endif - -/* - * #pragma comment(lib, "kernel32.lib") - * - * pragma understood my MS compiler which enables a conditional link with - * kernel32. - */ -#ifdef _MSC_VER -#if defined LIBXML_MODULES_ENABLED -#pragma comment(lib, "kernel32.lib") -#endif -#endif - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xmlwriter.h b/sdk/Windows/2019.2/include/libxml2/libxml/xmlwriter.h deleted file mode 100755 index 2e512f0..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xmlwriter.h +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Summary: text writing API for XML - * Description: text writing API for XML - * - * Copy: See Copyright for the status of this software. - * - * Author: Alfred Mickautsch - */ - -#ifndef __XML_XMLWRITER_H__ -#define __XML_XMLWRITER_H__ - -#include - -#ifdef LIBXML_WRITER_ENABLED - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct _xmlTextWriter xmlTextWriter; - typedef xmlTextWriter *xmlTextWriterPtr; - -/* - * Constructors & Destructor - */ - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriter(xmlOutputBufferPtr out); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterFilename(const char *uri, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterMemory(xmlBufferPtr buf, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterDoc(xmlDocPtr * doc, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, - int compression); - XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer); - -/* - * Functions - */ - - -/* - * Document - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDocument(xmlTextWriterPtr writer, - const char *version, - const char *encoding, - const char *standalone); - XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr - writer); - -/* - * Comments - */ - XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr - writer); - XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr - writer, - const xmlChar * - content); - -/* - * Elements - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartElement(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * name, - const xmlChar * - namespaceURI); - XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr - writer); - -/* - * Elements conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr - writer, - const xmlChar * name, - const xmlChar * - content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * name, - const xmlChar * - namespaceURI, - const xmlChar * - content); - -/* - * Text - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, - const xmlChar * content, int len); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteRaw(xmlTextWriterPtr writer, - const xmlChar * content); - XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr - writer, - const char - *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr - writer, - const char - *format, - va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, - const xmlChar * - content); - XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer, - const char *data, - int start, int len); - XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, - const char *data, - int start, int len); - -/* - * Attributes - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartAttribute(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * - name, - const xmlChar * - namespaceURI); - XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr - writer); - -/* - * Attributes conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr - writer, - const xmlChar * name, - const xmlChar * - content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * - name, - const xmlChar * - namespaceURI, - const xmlChar * - content); - -/* - * PI's - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartPI(xmlTextWriterPtr writer, - const xmlChar * target); - XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer); - -/* - * PI conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, - const xmlChar * target, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, - const xmlChar * target, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWritePI(xmlTextWriterPtr writer, - const xmlChar * target, - const xmlChar * content); - -/** - * xmlTextWriterWriteProcessingInstruction: - * - * This macro maps to xmlTextWriterWritePI - */ -#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI - -/* - * CDATA - */ - XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer); - -/* - * CDATA conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, - const xmlChar * content); - -/* - * DTD - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer); - -/* - * DTD conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * subset); - -/** - * xmlTextWriterWriteDocType: - * - * this macro maps to xmlTextWriterWriteDTD - */ -#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD - -/* - * DTD element definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr - writer); - -/* - * DTD element definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr - writer, - const xmlChar * - name, - const xmlChar * - content); - -/* - * DTD attribute list definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr - writer); - -/* - * DTD attribute list definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr - writer, - const xmlChar * - name, - const xmlChar * - content); - -/* - * DTD entity definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer, - int pe, const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr - writer); - -/* - * DTD entity definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(4,5); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(4,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const xmlChar * content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * ndataid); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr - writer, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * - ndataid); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr - writer, int pe, - const xmlChar * name, - const xmlChar * - pubid, - const xmlChar * - sysid, - const xmlChar * - ndataid, - const xmlChar * - content); - -/* - * DTD notation definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid); - -/* - * Indentation - */ - XMLPUBFUN int XMLCALL - xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent); - XMLPUBFUN int XMLCALL - xmlTextWriterSetIndentString(xmlTextWriterPtr writer, - const xmlChar * str); - - XMLPUBFUN int XMLCALL - xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); - - -/* - * misc - */ - XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_WRITER_ENABLED */ - -#endif /* __XML_XMLWRITER_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xpath.h b/sdk/Windows/2019.2/include/libxml2/libxml/xpath.h deleted file mode 100755 index e1cc17a..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xpath.h +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Summary: XML Path Language implementation - * Description: API for the XML Path Language implementation - * - * XML Path Language implementation - * XPath is a language for addressing parts of an XML document, - * designed to be used by both XSLT and XPointer - * http://www.w3.org/TR/xpath - * - * Implements - * W3C Recommendation 16 November 1999 - * http://www.w3.org/TR/1999/REC-xpath-19991116 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPATH_H__ -#define __XML_XPATH_H__ - -#include - -#ifdef LIBXML_XPATH_ENABLED - -#include -#include -#include -#endif /* LIBXML_XPATH_ENABLED */ - -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -#ifdef __cplusplus -extern "C" { -#endif -#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */ - -#ifdef LIBXML_XPATH_ENABLED - -typedef struct _xmlXPathContext xmlXPathContext; -typedef xmlXPathContext *xmlXPathContextPtr; -typedef struct _xmlXPathParserContext xmlXPathParserContext; -typedef xmlXPathParserContext *xmlXPathParserContextPtr; - -/** - * The set of XPath error codes. - */ - -typedef enum { - XPATH_EXPRESSION_OK = 0, - XPATH_NUMBER_ERROR, - XPATH_UNFINISHED_LITERAL_ERROR, - XPATH_START_LITERAL_ERROR, - XPATH_VARIABLE_REF_ERROR, - XPATH_UNDEF_VARIABLE_ERROR, - XPATH_INVALID_PREDICATE_ERROR, - XPATH_EXPR_ERROR, - XPATH_UNCLOSED_ERROR, - XPATH_UNKNOWN_FUNC_ERROR, - XPATH_INVALID_OPERAND, - XPATH_INVALID_TYPE, - XPATH_INVALID_ARITY, - XPATH_INVALID_CTXT_SIZE, - XPATH_INVALID_CTXT_POSITION, - XPATH_MEMORY_ERROR, - XPTR_SYNTAX_ERROR, - XPTR_RESOURCE_ERROR, - XPTR_SUB_RESOURCE_ERROR, - XPATH_UNDEF_PREFIX_ERROR, - XPATH_ENCODING_ERROR, - XPATH_INVALID_CHAR_ERROR, - XPATH_INVALID_CTXT, - XPATH_STACK_ERROR, - XPATH_FORBID_VARIABLE_ERROR -} xmlXPathError; - -/* - * A node-set (an unordered collection of nodes without duplicates). - */ -typedef struct _xmlNodeSet xmlNodeSet; -typedef xmlNodeSet *xmlNodeSetPtr; -struct _xmlNodeSet { - int nodeNr; /* number of nodes in the set */ - int nodeMax; /* size of the array as allocated */ - xmlNodePtr *nodeTab; /* array of nodes in no particular order */ - /* @@ with_ns to check wether namespace nodes should be looked at @@ */ -}; - -/* - * An expression is evaluated to yield an object, which - * has one of the following four basic types: - * - node-set - * - boolean - * - number - * - string - * - * @@ XPointer will add more types ! - */ - -typedef enum { - XPATH_UNDEFINED = 0, - XPATH_NODESET = 1, - XPATH_BOOLEAN = 2, - XPATH_NUMBER = 3, - XPATH_STRING = 4, - XPATH_POINT = 5, - XPATH_RANGE = 6, - XPATH_LOCATIONSET = 7, - XPATH_USERS = 8, - XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */ -} xmlXPathObjectType; - -typedef struct _xmlXPathObject xmlXPathObject; -typedef xmlXPathObject *xmlXPathObjectPtr; -struct _xmlXPathObject { - xmlXPathObjectType type; - xmlNodeSetPtr nodesetval; - int boolval; - double floatval; - xmlChar *stringval; - void *user; - int index; - void *user2; - int index2; -}; - -/** - * xmlXPathConvertFunc: - * @obj: an XPath object - * @type: the number of the target type - * - * A conversion function is associated to a type and used to cast - * the new type to primitive values. - * - * Returns -1 in case of error, 0 otherwise - */ -typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type); - -/* - * Extra type: a name and a conversion function. - */ - -typedef struct _xmlXPathType xmlXPathType; -typedef xmlXPathType *xmlXPathTypePtr; -struct _xmlXPathType { - const xmlChar *name; /* the type name */ - xmlXPathConvertFunc func; /* the conversion function */ -}; - -/* - * Extra variable: a name and a value. - */ - -typedef struct _xmlXPathVariable xmlXPathVariable; -typedef xmlXPathVariable *xmlXPathVariablePtr; -struct _xmlXPathVariable { - const xmlChar *name; /* the variable name */ - xmlXPathObjectPtr value; /* the value */ -}; - -/** - * xmlXPathEvalFunc: - * @ctxt: an XPath parser context - * @nargs: the number of arguments passed to the function - * - * An XPath evaluation function, the parameters are on the XPath context stack. - */ - -typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt, - int nargs); - -/* - * Extra function: a name and a evaluation function. - */ - -typedef struct _xmlXPathFunct xmlXPathFunct; -typedef xmlXPathFunct *xmlXPathFuncPtr; -struct _xmlXPathFunct { - const xmlChar *name; /* the function name */ - xmlXPathEvalFunc func; /* the evaluation function */ -}; - -/** - * xmlXPathAxisFunc: - * @ctxt: the XPath interpreter context - * @cur: the previous node being explored on that axis - * - * An axis traversal function. To traverse an axis, the engine calls - * the first time with cur == NULL and repeat until the function returns - * NULL indicating the end of the axis traversal. - * - * Returns the next node in that axis or NULL if at the end of the axis. - */ - -typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr cur); - -/* - * Extra axis: a name and an axis function. - */ - -typedef struct _xmlXPathAxis xmlXPathAxis; -typedef xmlXPathAxis *xmlXPathAxisPtr; -struct _xmlXPathAxis { - const xmlChar *name; /* the axis name */ - xmlXPathAxisFunc func; /* the search function */ -}; - -/** - * xmlXPathFunction: - * @ctxt: the XPath interprestation context - * @nargs: the number of arguments - * - * An XPath function. - * The arguments (if any) are popped out from the context stack - * and the result is pushed on the stack. - */ - -typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs); - -/* - * Function and Variable Lookup. - */ - -/** - * xmlXPathVariableLookupFunc: - * @ctxt: an XPath context - * @name: name of the variable - * @ns_uri: the namespace name hosting this variable - * - * Prototype for callbacks used to plug variable lookup in the XPath - * engine. - * - * Returns the XPath object value or NULL if not found. - */ -typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt, - const xmlChar *name, - const xmlChar *ns_uri); - -/** - * xmlXPathFuncLookupFunc: - * @ctxt: an XPath context - * @name: name of the function - * @ns_uri: the namespace name hosting this function - * - * Prototype for callbacks used to plug function lookup in the XPath - * engine. - * - * Returns the XPath function or NULL if not found. - */ -typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt, - const xmlChar *name, - const xmlChar *ns_uri); - -/** - * xmlXPathFlags: - * Flags for XPath engine compilation and runtime - */ -/** - * XML_XPATH_CHECKNS: - * - * check namespaces at compilation - */ -#define XML_XPATH_CHECKNS (1<<0) -/** - * XML_XPATH_NOVAR: - * - * forbid variables in expression - */ -#define XML_XPATH_NOVAR (1<<1) - -/** - * xmlXPathContext: - * - * Expression evaluation occurs with respect to a context. - * he context consists of: - * - a node (the context node) - * - a node list (the context node list) - * - a set of variable bindings - * - a function library - * - the set of namespace declarations in scope for the expression - * Following the switch to hash tables, this need to be trimmed up at - * the next binary incompatible release. - * The node may be modified when the context is passed to libxml2 - * for an XPath evaluation so you may need to initialize it again - * before the next call. - */ - -struct _xmlXPathContext { - xmlDocPtr doc; /* The current document */ - xmlNodePtr node; /* The current node */ - - int nb_variables_unused; /* unused (hash table) */ - int max_variables_unused; /* unused (hash table) */ - xmlHashTablePtr varHash; /* Hash table of defined variables */ - - int nb_types; /* number of defined types */ - int max_types; /* max number of types */ - xmlXPathTypePtr types; /* Array of defined types */ - - int nb_funcs_unused; /* unused (hash table) */ - int max_funcs_unused; /* unused (hash table) */ - xmlHashTablePtr funcHash; /* Hash table of defined funcs */ - - int nb_axis; /* number of defined axis */ - int max_axis; /* max number of axis */ - xmlXPathAxisPtr axis; /* Array of defined axis */ - - /* the namespace nodes of the context node */ - xmlNsPtr *namespaces; /* Array of namespaces */ - int nsNr; /* number of namespace in scope */ - void *user; /* function to free */ - - /* extra variables */ - int contextSize; /* the context size */ - int proximityPosition; /* the proximity position */ - - /* extra stuff for XPointer */ - int xptr; /* is this an XPointer context? */ - xmlNodePtr here; /* for here() */ - xmlNodePtr origin; /* for origin() */ - - /* the set of namespace declarations in scope for the expression */ - xmlHashTablePtr nsHash; /* The namespaces hash table */ - xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */ - void *varLookupData; /* variable lookup data */ - - /* Possibility to link in an extra item */ - void *extra; /* needed for XSLT */ - - /* The function name and URI when calling a function */ - const xmlChar *function; - const xmlChar *functionURI; - - /* function lookup function and data */ - xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */ - void *funcLookupData; /* function lookup data */ - - /* temporary namespace lists kept for walking the namespace axis */ - xmlNsPtr *tmpNsList; /* Array of namespaces */ - int tmpNsNr; /* number of namespaces in scope */ - - /* error reporting mechanism */ - void *userData; /* user specific data block */ - xmlStructuredErrorFunc error; /* the callback in case of errors */ - xmlError lastError; /* the last error */ - xmlNodePtr debugNode; /* the source node XSLT */ - - /* dictionary */ - xmlDictPtr dict; /* dictionary if any */ - - int flags; /* flags to control compilation */ - - /* Cache for reusal of XPath objects */ - void *cache; -}; - -/* - * The structure of a compiled expression form is not public. - */ - -typedef struct _xmlXPathCompExpr xmlXPathCompExpr; -typedef xmlXPathCompExpr *xmlXPathCompExprPtr; - -/** - * xmlXPathParserContext: - * - * An XPath parser context. It contains pure parsing informations, - * an xmlXPathContext, and the stack of objects. - */ -struct _xmlXPathParserContext { - const xmlChar *cur; /* the current char being parsed */ - const xmlChar *base; /* the full expression */ - - int error; /* error code */ - - xmlXPathContextPtr context; /* the evaluation context */ - xmlXPathObjectPtr value; /* the current value */ - int valueNr; /* number of values stacked */ - int valueMax; /* max number of values stacked */ - xmlXPathObjectPtr *valueTab; /* stack of values */ - - xmlXPathCompExprPtr comp; /* the precompiled expression */ - int xptr; /* it this an XPointer expression */ - xmlNodePtr ancestor; /* used for walking preceding axis */ - - int valueFrame; /* used to limit Pop on the stack */ -}; - -/************************************************************************ - * * - * Public API * - * * - ************************************************************************/ - -/** - * Objects and Nodesets handling - */ - -XMLPUBVAR double xmlXPathNAN; -XMLPUBVAR double xmlXPathPINF; -XMLPUBVAR double xmlXPathNINF; - -/* These macros may later turn into functions */ -/** - * xmlXPathNodeSetGetLength: - * @ns: a node-set - * - * Implement a functionality similar to the DOM NodeList.length. - * - * Returns the number of nodes in the node-set. - */ -#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0) -/** - * xmlXPathNodeSetItem: - * @ns: a node-set - * @index: index of a node in the set - * - * Implements a functionality similar to the DOM NodeList.item(). - * - * Returns the xmlNodePtr at the given @index in @ns or NULL if - * @index is out of range (0 to length-1) - */ -#define xmlXPathNodeSetItem(ns, index) \ - ((((ns) != NULL) && \ - ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \ - (ns)->nodeTab[(index)] \ - : NULL) -/** - * xmlXPathNodeSetIsEmpty: - * @ns: a node-set - * - * Checks whether @ns is empty or not. - * - * Returns %TRUE if @ns is an empty node-set. - */ -#define xmlXPathNodeSetIsEmpty(ns) \ - (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL)) - - -XMLPUBFUN void XMLCALL - xmlXPathFreeObject (xmlXPathObjectPtr obj); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetCreate (xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL - xmlXPathFreeNodeSet (xmlNodeSetPtr obj); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathObjectCopy (xmlXPathObjectPtr val); -XMLPUBFUN int XMLCALL - xmlXPathCmpNodes (xmlNodePtr node1, - xmlNodePtr node2); -/** - * Conversion functions to basic types. - */ -XMLPUBFUN int XMLCALL - xmlXPathCastNumberToBoolean (double val); -XMLPUBFUN int XMLCALL - xmlXPathCastStringToBoolean (const xmlChar * val); -XMLPUBFUN int XMLCALL - xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns); -XMLPUBFUN int XMLCALL - xmlXPathCastToBoolean (xmlXPathObjectPtr val); - -XMLPUBFUN double XMLCALL - xmlXPathCastBooleanToNumber (int val); -XMLPUBFUN double XMLCALL - xmlXPathCastStringToNumber (const xmlChar * val); -XMLPUBFUN double XMLCALL - xmlXPathCastNodeToNumber (xmlNodePtr node); -XMLPUBFUN double XMLCALL - xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns); -XMLPUBFUN double XMLCALL - xmlXPathCastToNumber (xmlXPathObjectPtr val); - -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastBooleanToString (int val); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNumberToString (double val); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNodeToString (xmlNodePtr node); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNodeSetToString (xmlNodeSetPtr ns); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastToString (xmlXPathObjectPtr val); - -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertBoolean (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertString (xmlXPathObjectPtr val); - -/** - * Context handling. - */ -XMLPUBFUN xmlXPathContextPtr XMLCALL - xmlXPathNewContext (xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlXPathFreeContext (xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXPathContextSetCache(xmlXPathContextPtr ctxt, - int active, - int value, - int options); -/** - * Evaluation functions. - */ -XMLPUBFUN long XMLCALL - xmlXPathOrderDocElems (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXPathSetContextNode (xmlNodePtr node, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNodeEval (xmlNodePtr node, - const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathEval (const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathEvalExpression (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXPathEvalPredicate (xmlXPathContextPtr ctxt, - xmlXPathObjectPtr res); -/** - * Separate compilation/evaluation entry points. - */ -XMLPUBFUN xmlXPathCompExprPtr XMLCALL - xmlXPathCompile (const xmlChar *str); -XMLPUBFUN xmlXPathCompExprPtr XMLCALL - xmlXPathCtxtCompile (xmlXPathContextPtr ctxt, - const xmlChar *str); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathCompiledEval (xmlXPathCompExprPtr comp, - xmlXPathContextPtr ctx); -XMLPUBFUN int XMLCALL - xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp); -#endif /* LIBXML_XPATH_ENABLED */ -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN void XMLCALL - xmlXPathInit (void); -XMLPUBFUN int XMLCALL - xmlXPathIsNaN (double val); -XMLPUBFUN int XMLCALL - xmlXPathIsInf (double val); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/ -#endif /* ! __XML_XPATH_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xpathInternals.h b/sdk/Windows/2019.2/include/libxml2/libxml/xpathInternals.h deleted file mode 100755 index e8303fc..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xpathInternals.h +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Summary: internal interfaces for XML Path Language implementation - * Description: internal interfaces for XML Path Language implementation - * used to build new modules on top of XPath like XPointer and - * XSLT - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPATH_INTERNALS_H__ -#define __XML_XPATH_INTERNALS_H__ - -#include -#include - -#ifdef LIBXML_XPATH_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************ - * * - * Helpers * - * * - ************************************************************************/ - -/* - * Many of these macros may later turn into functions. They - * shouldn't be used in #ifdef's preprocessor instructions. - */ -/** - * xmlXPathSetError: - * @ctxt: an XPath parser context - * @err: an xmlXPathError code - * - * Raises an error. - */ -#define xmlXPathSetError(ctxt, err) \ - { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \ - if ((ctxt) != NULL) (ctxt)->error = (err); } - -/** - * xmlXPathSetArityError: - * @ctxt: an XPath parser context - * - * Raises an XPATH_INVALID_ARITY error. - */ -#define xmlXPathSetArityError(ctxt) \ - xmlXPathSetError((ctxt), XPATH_INVALID_ARITY) - -/** - * xmlXPathSetTypeError: - * @ctxt: an XPath parser context - * - * Raises an XPATH_INVALID_TYPE error. - */ -#define xmlXPathSetTypeError(ctxt) \ - xmlXPathSetError((ctxt), XPATH_INVALID_TYPE) - -/** - * xmlXPathGetError: - * @ctxt: an XPath parser context - * - * Get the error code of an XPath context. - * - * Returns the context error. - */ -#define xmlXPathGetError(ctxt) ((ctxt)->error) - -/** - * xmlXPathCheckError: - * @ctxt: an XPath parser context - * - * Check if an XPath error was raised. - * - * Returns true if an error has been raised, false otherwise. - */ -#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK) - -/** - * xmlXPathGetDocument: - * @ctxt: an XPath parser context - * - * Get the document of an XPath context. - * - * Returns the context document. - */ -#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc) - -/** - * xmlXPathGetContextNode: - * @ctxt: an XPath parser context - * - * Get the context node of an XPath context. - * - * Returns the context node. - */ -#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node) - -XMLPUBFUN int XMLCALL - xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt); -XMLPUBFUN double XMLCALL - xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathPopString (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void * XMLCALL - xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); - -/** - * xmlXPathReturnBoolean: - * @ctxt: an XPath parser context - * @val: a boolean - * - * Pushes the boolean @val on the context stack. - */ -#define xmlXPathReturnBoolean(ctxt, val) \ - valuePush((ctxt), xmlXPathNewBoolean(val)) - -/** - * xmlXPathReturnTrue: - * @ctxt: an XPath parser context - * - * Pushes true on the context stack. - */ -#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1) - -/** - * xmlXPathReturnFalse: - * @ctxt: an XPath parser context - * - * Pushes false on the context stack. - */ -#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0) - -/** - * xmlXPathReturnNumber: - * @ctxt: an XPath parser context - * @val: a double - * - * Pushes the double @val on the context stack. - */ -#define xmlXPathReturnNumber(ctxt, val) \ - valuePush((ctxt), xmlXPathNewFloat(val)) - -/** - * xmlXPathReturnString: - * @ctxt: an XPath parser context - * @str: a string - * - * Pushes the string @str on the context stack. - */ -#define xmlXPathReturnString(ctxt, str) \ - valuePush((ctxt), xmlXPathWrapString(str)) - -/** - * xmlXPathReturnEmptyString: - * @ctxt: an XPath parser context - * - * Pushes an empty string on the stack. - */ -#define xmlXPathReturnEmptyString(ctxt) \ - valuePush((ctxt), xmlXPathNewCString("")) - -/** - * xmlXPathReturnNodeSet: - * @ctxt: an XPath parser context - * @ns: a node-set - * - * Pushes the node-set @ns on the context stack. - */ -#define xmlXPathReturnNodeSet(ctxt, ns) \ - valuePush((ctxt), xmlXPathWrapNodeSet(ns)) - -/** - * xmlXPathReturnEmptyNodeSet: - * @ctxt: an XPath parser context - * - * Pushes an empty node-set on the context stack. - */ -#define xmlXPathReturnEmptyNodeSet(ctxt) \ - valuePush((ctxt), xmlXPathNewNodeSet(NULL)) - -/** - * xmlXPathReturnExternal: - * @ctxt: an XPath parser context - * @val: user data - * - * Pushes user data on the context stack. - */ -#define xmlXPathReturnExternal(ctxt, val) \ - valuePush((ctxt), xmlXPathWrapExternal(val)) - -/** - * xmlXPathStackIsNodeSet: - * @ctxt: an XPath parser context - * - * Check if the current value on the XPath stack is a node set or - * an XSLT value tree. - * - * Returns true if the current object on the stack is a node-set. - */ -#define xmlXPathStackIsNodeSet(ctxt) \ - (((ctxt)->value != NULL) \ - && (((ctxt)->value->type == XPATH_NODESET) \ - || ((ctxt)->value->type == XPATH_XSLT_TREE))) - -/** - * xmlXPathStackIsExternal: - * @ctxt: an XPath parser context - * - * Checks if the current value on the XPath stack is an external - * object. - * - * Returns true if the current object on the stack is an external - * object. - */ -#define xmlXPathStackIsExternal(ctxt) \ - ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS)) - -/** - * xmlXPathEmptyNodeSet: - * @ns: a node-set - * - * Empties a node-set. - */ -#define xmlXPathEmptyNodeSet(ns) \ - { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; } - -/** - * CHECK_ERROR: - * - * Macro to return from the function if an XPath error was detected. - */ -#define CHECK_ERROR \ - if (ctxt->error != XPATH_EXPRESSION_OK) return - -/** - * CHECK_ERROR0: - * - * Macro to return 0 from the function if an XPath error was detected. - */ -#define CHECK_ERROR0 \ - if (ctxt->error != XPATH_EXPRESSION_OK) return(0) - -/** - * XP_ERROR: - * @X: the error code - * - * Macro to raise an XPath error and return. - */ -#define XP_ERROR(X) \ - { xmlXPathErr(ctxt, X); return; } - -/** - * XP_ERROR0: - * @X: the error code - * - * Macro to raise an XPath error and return 0. - */ -#define XP_ERROR0(X) \ - { xmlXPathErr(ctxt, X); return(0); } - -/** - * CHECK_TYPE: - * @typeval: the XPath type - * - * Macro to check that the value on top of the XPath stack is of a given - * type. - */ -#define CHECK_TYPE(typeval) \ - if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ - XP_ERROR(XPATH_INVALID_TYPE) - -/** - * CHECK_TYPE0: - * @typeval: the XPath type - * - * Macro to check that the value on top of the XPath stack is of a given - * type. Return(0) in case of failure - */ -#define CHECK_TYPE0(typeval) \ - if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ - XP_ERROR0(XPATH_INVALID_TYPE) - -/** - * CHECK_ARITY: - * @x: the number of expected args - * - * Macro to check that the number of args passed to an XPath function matches. - */ -#define CHECK_ARITY(x) \ - if (ctxt == NULL) return; \ - if (nargs != (x)) \ - XP_ERROR(XPATH_INVALID_ARITY); \ - if (ctxt->valueNr < ctxt->valueFrame + (x)) \ - XP_ERROR(XPATH_STACK_ERROR); - -/** - * CAST_TO_STRING: - * - * Macro to try to cast the value on the top of the XPath stack to a string. - */ -#define CAST_TO_STRING \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \ - xmlXPathStringFunction(ctxt, 1); - -/** - * CAST_TO_NUMBER: - * - * Macro to try to cast the value on the top of the XPath stack to a number. - */ -#define CAST_TO_NUMBER \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \ - xmlXPathNumberFunction(ctxt, 1); - -/** - * CAST_TO_BOOLEAN: - * - * Macro to try to cast the value on the top of the XPath stack to a boolean. - */ -#define CAST_TO_BOOLEAN \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \ - xmlXPathBooleanFunction(ctxt, 1); - -/* - * Variable Lookup forwarding. - */ - -XMLPUBFUN void XMLCALL - xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt, - xmlXPathVariableLookupFunc f, - void *data); - -/* - * Function Lookup forwarding. - */ - -XMLPUBFUN void XMLCALL - xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt, - xmlXPathFuncLookupFunc f, - void *funcCtxt); - -/* - * Error reporting. - */ -XMLPUBFUN void XMLCALL - xmlXPatherror (xmlXPathParserContextPtr ctxt, - const char *file, - int line, - int no); - -XMLPUBFUN void XMLCALL - xmlXPathErr (xmlXPathParserContextPtr ctxt, - int error); - -#ifdef LIBXML_DEBUG_ENABLED -XMLPUBFUN void XMLCALL - xmlXPathDebugDumpObject (FILE *output, - xmlXPathObjectPtr cur, - int depth); -XMLPUBFUN void XMLCALL - xmlXPathDebugDumpCompExpr(FILE *output, - xmlXPathCompExprPtr comp, - int depth); -#endif -/** - * NodeSet handling. - */ -XMLPUBFUN int XMLCALL - xmlXPathNodeSetContains (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDifference (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathIntersection (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDistinctSorted (xmlNodeSetPtr nodes); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDistinct (xmlNodeSetPtr nodes); - -XMLPUBFUN int XMLCALL - xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeLeading (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathLeading (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeTrailing (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathTrailing (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - - -/** - * Extending a context. - */ - -XMLPUBFUN int XMLCALL - xmlXPathRegisterNs (xmlXPathContextPtr ctxt, - const xmlChar *prefix, - const xmlChar *ns_uri); -XMLPUBFUN const xmlChar * XMLCALL - xmlXPathNsLookup (xmlXPathContextPtr ctxt, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt); - -XMLPUBFUN int XMLCALL - xmlXPathRegisterFunc (xmlXPathContextPtr ctxt, - const xmlChar *name, - xmlXPathFunction f); -XMLPUBFUN int XMLCALL - xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri, - xmlXPathFunction f); -XMLPUBFUN int XMLCALL - xmlXPathRegisterVariable (xmlXPathContextPtr ctxt, - const xmlChar *name, - xmlXPathObjectPtr value); -XMLPUBFUN int XMLCALL - xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri, - xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathFunction XMLCALL - xmlXPathFunctionLookup (xmlXPathContextPtr ctxt, - const xmlChar *name); -XMLPUBFUN xmlXPathFunction XMLCALL - xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathVariableLookup (xmlXPathContextPtr ctxt, - const xmlChar *name); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt); - -/** - * Utilities to extend XPath. - */ -XMLPUBFUN xmlXPathParserContextPtr XMLCALL - xmlXPathNewParserContext (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt); - -/* TODO: remap to xmlXPathValuePop and Push. */ -XMLPUBFUN xmlXPathObjectPtr XMLCALL - valuePop (xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL - valuePush (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr value); - -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewString (const xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewCString (const char *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapString (xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapCString (char * val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewFloat (double val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewBoolean (int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewNodeSet (xmlNodePtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewValueTree (xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAdd (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, - xmlNodePtr node, - xmlNsPtr ns); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetSort (xmlNodeSetPtr set); - -XMLPUBFUN void XMLCALL - xmlXPathRoot (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathParseName (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathParseNCName (xmlXPathParserContextPtr ctxt); - -/* - * Existing functions. - */ -XMLPUBFUN double XMLCALL - xmlXPathStringEvalNumber (const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr res); -XMLPUBFUN void XMLCALL - xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetMerge (xmlNodeSetPtr val1, - xmlNodeSetPtr val2); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetDel (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetRemove (xmlNodeSetPtr cur, - int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewNodeSetList (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapNodeSet (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapExternal (void *val); - -XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict); -XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt); - -XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name); - -/* - * Some of the axis navigation routines. - */ -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -/* - * The official core of XPath functions. - */ -XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs); - -/** - * Really internal functions - */ -XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPATH_ENABLED */ -#endif /* ! __XML_XPATH_INTERNALS_H__ */ diff --git a/sdk/Windows/2019.2/include/libxml2/libxml/xpointer.h b/sdk/Windows/2019.2/include/libxml2/libxml/xpointer.h deleted file mode 100755 index 9b37793..0000000 --- a/sdk/Windows/2019.2/include/libxml2/libxml/xpointer.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Summary: API to handle XML Pointers - * Description: API to handle XML Pointers - * Base implementation was made accordingly to - * W3C Candidate Recommendation 7 June 2000 - * http://www.w3.org/TR/2000/CR-xptr-20000607 - * - * Added support for the element() scheme described in: - * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPTR_H__ -#define __XML_XPTR_H__ - -#include - -#ifdef LIBXML_XPTR_ENABLED - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A Location Set - */ -typedef struct _xmlLocationSet xmlLocationSet; -typedef xmlLocationSet *xmlLocationSetPtr; -struct _xmlLocationSet { - int locNr; /* number of locations in the set */ - int locMax; /* size of the array as allocated */ - xmlXPathObjectPtr *locTab;/* array of locations */ -}; - -/* - * Handling of location sets. - */ - -XMLPUBFUN xmlLocationSetPtr XMLCALL - xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); -XMLPUBFUN xmlLocationSetPtr XMLCALL - xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, - xmlLocationSetPtr val2); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRange (xmlNodePtr start, - int startindex, - xmlNodePtr end, - int endindex); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangePoints (xmlXPathObjectPtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodePoint (xmlNodePtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodes (xmlNodePtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewLocationSetNodes (xmlNodePtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodeObject (xmlNodePtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewCollapsedRange (xmlNodePtr start); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, - xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrWrapLocationSet (xmlLocationSetPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetDel (xmlLocationSetPtr cur, - xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, - int val); - -/* - * Functions. - */ -XMLPUBFUN xmlXPathContextPtr XMLCALL - xmlXPtrNewContext (xmlDocPtr doc, - xmlNodePtr here, - xmlNodePtr origin); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrEval (const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN void XMLCALL - xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, - int nargs); -XMLPUBFUN xmlNodePtr XMLCALL - xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL - xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPTR_ENABLED */ -#endif /* __XML_XPTR_H__ */ diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-md.lib deleted file mode 100755 index 148273a..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1aa105996069c747358865d032cefcb3bd36bd2ab7397dfaab44442b93ce1e5 -size 179020480 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-mt.lib deleted file mode 100755 index 9a5a659..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:82b31e790bd45c98908f99c001883104fb0518c83e4a6b38c25c7baab5194285 -size 198766846 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.dll b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.dll deleted file mode 100755 index 96007e3..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:337b91e5fe1d47a21c06d82bdaed6de23d09f0c3f60f6048369eaaec77478dc1 -size 19263872 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.lib deleted file mode 100755 index ca3f38e..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2f64ebb4416f40e41de5d365f29d1619f6ec6d13fb8e5d1f1dcbb6f1d74d0ad -size 4457388 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.pdb b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.pdb deleted file mode 100755 index 2a61ba3..0000000 Binary files a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libfbxsdk.pdb and /dev/null differ diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-md.lib deleted file mode 100755 index c899124..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bdce329e6cb2a8850a682e713ea8277dac2ca79a5cec14e7bd25ca67e0c7b999 -size 2597260 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-mt.lib deleted file mode 100755 index b2b1cac..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/libxml2-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8413d18d3d806ded684ad60818844d2340386b361e7f9ab888a992795f3e5a7d -size 2596174 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-md.lib deleted file mode 100755 index 387b507..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ccf147295d4f4ad1ae6f07406bbf33c60f70801f498d1dd38ab61f749f50e85a -size 188330 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-mt.lib deleted file mode 100755 index fd280e4..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/debug/zlib-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9b6fa18c7fd9ad440447d58f81a1917d851d876d6d7b293fc30033d40c18fa4 -size 187994 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-md.lib deleted file mode 100755 index 7adbb6c..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6dfbec67e6efb3b99f3e9d48bdf3c558764a5ae0b8f86b6e860e3e68afcaec3d -size 60118806 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-mt.lib deleted file mode 100755 index 3cb38b1..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:575c439ea8a84cb369a5402c21612b031a3b760ca2dff2414bf13ed483d02eff -size 68737544 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.dll b/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.dll deleted file mode 100755 index db2cda7..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d7a90a3ad149b71f1d028e9afed6a0ffd3e085d2b6663d9810a2f51883e58ca -size 10160512 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.lib deleted file mode 100755 index 281efba..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libfbxsdk.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55e10ccd8d916599257ce6aef96b16228b4c3fcf994c4532857f6d2e93054a52 -size 4456082 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-md.lib deleted file mode 100755 index 53467a5..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:056fafac26fea62bf7fb820afdc9b95d94d865543677b154864ec6cc44eec1cf -size 2803152 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-mt.lib deleted file mode 100755 index 5c3fddc..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/libxml2-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d061a4e1ee8aacda87d00897229b22c9644687fed519d786d51678ffbba9dda0 -size 2802690 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-md.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-md.lib deleted file mode 100755 index 0dbd09e..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39fa6381940cb7a8c6f8c798dca5531e3203be68f01c90444ef0fdd08f988a1c -size 148372 diff --git a/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-mt.lib deleted file mode 100755 index 57f5e29..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x64/release/zlib-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6c01bc95004bb981cfa53488bd49519d03ef9e483c7062d478337449dece9146 -size 148064 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-md.lib deleted file mode 100755 index 247417b..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4a07e55103868aee8d726d9b496f7708469ff4da7d56c5653c348ba63f3f2ac -size 89688332 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-mt.lib deleted file mode 100755 index d42035e..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26e7e8bf8817d89f5d69975e02694ca6f0730c55808ab49baacb4eb33c98b2f2 -size 98620926 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.dll b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.dll deleted file mode 100755 index 40bbf61..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3f128223f85c48aab027a4d4f815a322e67f7df8ae82aac67f374ba66bfab39 -size 14046592 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.lib deleted file mode 100755 index 87e3596..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac769bf7fc73a31f158b61c3073ee2ae1c107354477fcd05bbc64b9d01be34f6 -size 4351918 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.pdb b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.pdb deleted file mode 100755 index 5b0b7d3..0000000 Binary files a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libfbxsdk.pdb and /dev/null differ diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-md.lib deleted file mode 100755 index ce4fb25..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cf875fbd5bd39b351846efeab5e6e80d9080c6976a5ea1181bf11f39da9b95d -size 1861600 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-mt.lib deleted file mode 100755 index 37d56a3..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/libxml2-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c48438cd8d3c7a0c9543858fc15978b5d4939f549dff96f931cac88f218befaa -size 1856546 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-md.lib deleted file mode 100755 index a3ef4ec..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e22a42fbfa6c5bc6e595456698611af1d240ae4c09b62357869f2fe40c4522b -size 136720 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-mt.lib deleted file mode 100755 index 86a8c7a..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/debug/zlib-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a24373ed8671f69f13ee08fba276c631f9e16f1ca2fa2af53a8e25a402e9ac90 -size 135332 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-md.lib deleted file mode 100755 index 2d881d3..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af14df95b0cc00bb9b914a67ca6f50db98403c23036ab1b17df419c449db1aec -size 38842686 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-mt.lib deleted file mode 100755 index dac75c7..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59e05f6f06ce7df44a470b61d549528b5cd7b93283459ab9d822d9c5fd28c23c -size 44561708 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.dll b/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.dll deleted file mode 100755 index c87cb0b..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be9ccfc82730556636c0df0d621e9a939ac106257810dafb64f45cc7a5338549 -size 8212864 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.lib deleted file mode 100755 index 3633832..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libfbxsdk.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8580665f52a6c1f1119eacf356ab6af8a315dbd6e524dff76c03efd2e9ce0fb -size 4350634 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-md.lib deleted file mode 100755 index 1991dd6..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ecc818b600ee20affb04fbb61c5fedcf74cf810267208382b4f31a1705c4f1d0 -size 1496880 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-mt.lib deleted file mode 100755 index 2e16013..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/libxml2-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5083e42fbbe430971ee11bfbe3f7e1d3882f6c78807c41f806504768d998819a -size 1496636 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-md.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-md.lib deleted file mode 100755 index 30f9316..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-md.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:986ae0b9308d55a1f7c7ecae1f809a85fd9c2f93bb9a2be650fc9bc4c4d518b8 -size 99544 diff --git a/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-mt.lib b/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-mt.lib deleted file mode 100755 index 3219034..0000000 --- a/sdk/Windows/2019.2/lib/vs2017/x86/release/zlib-mt.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2842a733a68b71bbe0fd4dd91772e4bf8ea71e740ee2dc57e4edfc7f9033a3af -size 99346 diff --git a/sdk/Windows/2019.2/readme.txt b/sdk/Windows/2019.2/readme.txt deleted file mode 100755 index 8b41213..0000000 --- a/sdk/Windows/2019.2/readme.txt +++ /dev/null @@ -1,1821 +0,0 @@ -================================================================================ - - README - - Autodesk FBX SDK 2019 - ----------------------- - - -Welcome to the FBX SDK readme! This document includes the latest changes since -the previous release version of the Autodesk FBX SDK, such as new features, bug -fixes, known issues, deprecated functions/classes and previous releases notes. - -For more information, please visit us at http://www.autodesk.com/fbx/ - -To join the FBX Beta Program, please visit the Autodesk Feedback Community site -at http://beta.autodesk.com - -Sincerely, -the Autodesk FBX team - -================================================================================ - - - -TABLE OF CONTENTS ------------------ - - 1. Features, Improvements And Changes - 2. Fixed And Known Issues - 3. Release Notes From Previous Releases - 4. Legal Disclaimer - - - -1. FEATURES, IMPROVEMENTS AND CHANGES -------------------------------------- - -1.1 Improvements and New Features - - * Re-enabled the Alembic caches support for Ogawa archives. HDF5 is not supported anymore inside the FBX SDK. - Note that all the WindowStore and IOs architectures do not provide Alembic support. - -1.2 Changes and Deprecated Features - - * Consider animation corrupted if keys times are not ordered by increase value - (i.e: T(i) must be less or equal to T(i+1)) - - -2. FIXED AND KNOWN ISSUES -------------------------- - -2.1 Fixed Issues - - [FBXX-1499] Fix potential crash when writing Acclaim file. - [FBXX-1483] Security Improvements. - [FBXX-1481] Fix potential crash in FbxGeometryConverter::ComputeEdgeSmoothingFromNormals - [FBXX-1480] 3DS Reader returns a false positive error. - [FBXX-1479] FBXCollada improve write time of mesh data. - [FBXX-1476] FbxIO::GetTmpProjectName and FbxIO::SwapFromTmpProject bad execution. - [FBXX-1474] Password protected files status is overwritten. - [FBXX-1433] Update Alembic to version 1.7.5. - -2.2 Known Issues - - -3. RELEASE NOTES FROM PREVIOUS RELEASES ---------------------------------------- -2019.1 - * Added the FBX standardized renaming strategy to the Collada file read/write. This renaming - strategy will replace every character in the object names/ids, which does not comply with - the XML NCName scheme, with a string in the form "FBXASC###" were ### is the decimal value - of the ASCII character. - - * Added extra parameter to GenerateTangentsData() family functions to skip testing for the tangent flip - - * moved the static functions FbxRenamingStrategy::NoPrefixName to FbxRenamingStrategyUtils::NoPrefixName - and it now returns an FbxString instead of a char* - - * Starting with this version of the FBX SDK your programs must explicitly link with the zlib and - libxml2 libraries. On Linux and MacOS, these libraries should already be part of the system. If - not, you must install them. - - * disabled Alembic support - - [FBXX-1438] Fixed EvaluateGlobalBoundingBoxMinMaxCenter so it correctly returns the 3D volume bounding box. - [FBXX-1417] Fixed Wgettimeofday and Wgetlogin already define linker error. - [FBXX-1383] Fixed stack overflow when importing Collada files defining external references. - -2018.1.1 - * [FBXX-1384] Regression issue introduced by the Audio transport feature. - * [FBXX-1386] Copying FbxSkin object into another does not copy all data. - -2018.1 - * [FBXX-1258] Add Audio transport support. - * [FBXX-1279] Added more options to the FbxSceneCheck utility class. - -2018.0 - - * [FBXX-1303] Crash when deleting NURBS created with FbxGeometryConverter::ConvertPatchToNurbsSurface() - * [FBXX-1280] Invalid pointer access - * [FBXX-1257] Invalid value for a malloc - * [FBXX-1143] Collada reader - * [FBXX-1140] Crash in FbxGeometryConverter::Triangulate with huge poly count (60 millions +) - -2017.1.1 - - Fixed some global HDF5 symbols that were missed during the previous namespacing. These - symbols only caused an issue on Linux builds when an application links with both the - FBX SDK and its own version of Alembic/HDF5 libraries static libraries. - -2017.1 - - * [FBXX-1225] Security Improvements. - * Alembic code has been fully namespaced to avoid duplicated function conflicts when applications - link the FBX SDK and other Alembic libraries. - -2017.0.2 - - * [FBXX-1207] FBX SDK library for VS2015 builds with the Target Platform Version 10.0.10586.0 - -2017.0.1 - - * [FBXX-999] Added the new eRelativeRepetition flag to the animation curves extrapolation flags. - * [FBXX-1023] Refactored FbxUtils to minimize possible buffer under/overflows. - * [FBXX-1031] Added new roll bones to the FbxCharacter definition. - * [FBXX-1066] The SDK version is still reported as an "Alpha" release - * [FBXX-1019] Loading a .3ds file with a texture is very slow when using Python bindings - * [FBXX-1026] Crash when triangulating NURBS surfaces - * [FBXX-1051] In some cases shape normals are written beyond array boundaries - Removed deprecated functions - - FbxObject::Is(const FbxClassId& pClassId) - FbxObject::DisconnectAllSrcObject(FbxClassId pClassId) - FbxObject::GetSrcObjectCount(FbxClassId pClassId) - FbxObject::GetSrcObject(FbxClassId pClassId, int pIndex=0) - FbxObject::FindSrcObject(FbxClassId pClassId, const char* pName, int pStartIndex=0) - FbxObject::DisconnectAllDstObject(FbxClassId pClassId) - FbxObject::GetDstObjectCount(FbxClassId pClassId) - FbxObject::GetDstObject(FbxClassId pClassId, int pIndex=0) - FbxObject::FindDstObject(FbxClassId pClassId, const char* pName,int pStartIndex=0) - - FbxProperty::DisconnectAllSrcObject(const FbxClassId& pClassId) - FbxProperty::GetSrcObjectCount(const FbxClassId& pClassId) - FbxProperty::GetSrcObject(const FbxClassId& pClassId, const int pIndex=0) - FbxProperty::FindSrcObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0) - FbxProperty::DisconnectAllDstObject(const FbxClassId& pClassId) - FbxProperty::GetDstObjectCount(const FbxClassId& pClassId) - FbxProperty::GetDstObject(const FbxClassId& pClassId, const int pIndex=0) - FbxProperty::FindDstObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0) - -2016.1.2 - - * [FBXX-1009] StringList default values not correctly initialized (regression in 2016.1). - Properties created with the FbxStringListDT data type were failing to initialize their default - value since the implementation of [FBXX-946] - -2016.1.1 - - * Added the GetMatrix(FbxAMAtrix& pMatrix) function to the FbxAxisSystem class that retrieves - the axis definition in the 4x4 matrix form. - - * [FBXX-997] FBX SDK Sample ExportScene05 uses a "reserved" (ABC) file extension. - the ABC extension being also used by the Alembic reader, the sample was selecting - the wrong reader when trying to load the custom file. Changed the extension of the - sample so no more conflict can occur. Note that the ABC extension can still be used - but a manual detection of the readerID, by calling FindReaderIDByDescription(), - is mandatory. - - - * [FBXX-988] Resolved use of arbitrary up vector on cameras driven by a target. - The FbxAnimEvalClassic::ComputeGlobalTransform() was implicitly assuming in its calculations, - when the pApplyTarget is true, that the global up vector of cameras constrained by an aim - target is always (0,1,0). This was a false assumption if a different FbxSystemAxis had been - applied to the scene and, at best, produced an arbitrary rotation of these cameras when the - aim vector was parallel to the (0,1,0) vector. - - * [FBXX-986] Fixed potential security issue when reading certain legacy FBX files - - -2016.1 - - * [FBXX-967] Improved the LodGroup object to allow it to store thresholds - as percentage values or distance from camera. - - * [FBXX-946] Properties with the FbxEnumDT data type now perform a strict - validation to forbid duplicates when items are added, inserted or replaced - in the enumeration list. The new eFbxEnumM type identifier is available for - users who want to create their own runtime enumeration data type that can - accept duplicated entries. - - * [FBXX-963] In the Collada reader, replaced xmlParseFile() function call with - xmlReadFile() so we can set XML_PARSE_HUGE flag, which relaxes any hard-coded - limit from the parser. This affects limits like maximum depth of a document or - the entity recursion, as well as limits of the size of text nodes. - - * [FBXX-952] Fixed an issue with the Animation Curve Pre/Post Extrapolation - data. In the very particular case of a program creating an animation curve - directly in memory that set the extrapolation flags and then tries to evaluate - the curve outside the animation range, the extrapolation flags were not - considered until the curve was saved to disk. - - * [MAYA-54538] An overlooked condition from the fix above introduced a regression - in the FBX SDK 2016.1 alpha. - - * [MAXX-23051] An update to the FbxAMatrix::GetROnly() caused a regression when - detecting the Euler gimbal locks while extracting the rotation vector value. - The default threshold value used for this detection can be to small for a - correct detection if the matrix is constructed with very low precision single - floating point values. - The FBX SDK now provides a method (FbxEuler::SetDegenerateThreshold()) to allow - the client application to change the threshold value at runtime. - -2016.0 - - * Visual Studio 2008 builds are no longer supported. Visual Studio 2010, - 2012 and 2013 are supported. - - * Updated file format to 7.5 (compatible with 2016+ products) which now - uses 64bit integers in the binary block headers to allow for large file - support (>2GB). These new FBX files will NOT import in older products - (2015 or less), so make sure you set the right export format if you need - to target these older products. - - * iPhone Simulator build is now a universal binary that contain both 32 and - 64bit architectures. - - * Starting in this release, the FBX SDK name space will no longer contain - version indications. - - * Improved the camera manipulator speed when very close to camera interest - position. - - * Added RemoveBadPolygonsFromMeshes to FbxGeometryConverter class to allow - clean-up whole scene (typically, this function must be called before - Triangulate or any other utility functions that are manipulating meshes). - - * Default export file format is now 7.5 (compatible with 2016+ products). - - * Removed deprecated functions - - FbxProperty::SetParent - - FbxProperty::SetArraySize - - FbxProperty::GetArraySize - - FbxProperty::GetArrayItem - - FbxProperty::operator[] - - * If user code retrieves the transform values directly from the LclTranslation, - LclRotation and LclScaling properties, the fixes made to the ConvertPivotAnimation - may require to change how these property values are retrieved. - - Now, when ConvertPivotAnimation is called, the computed value may be stored on - the CurveNode channel instead of overwriting the property value. To correctly retrieve - the computed values, we encourage using the function FbxProperty::EvaluateValue() with the - time argument value different than FBXSDK_TIME_INFINITE. - - Alternatively, users can test for the presence of the CurveNode and retrieve the value - directly from this object: - - ex: if (LclTranslation.GetCurveNode()) - x = LclTranslation.GetCurveNode()->GetChannelValue(0L); - - * Fixed a compilation error when attempting to use FbxAutoDeletePtr on Unix - based systems. - - * Fixed an issue with bounding box calculations. - - * Fixed FbxPathUtils::Exist that was failing on MacOS for Sandboxed - applications. - - * Fixed an issue with ConvertPivotAnimation that wasn't properly - de-activating Rotation pivots/limits after conversion. - - * Fixed FbxMesh::RemoveBadPolygons() so that polygons with less than three - vertices are properly considered invalid. - - * Improved CloneManager to avoid duplicating already cloned objects. - - * Fix rare crash in FbxScene::ForceKill caused by FbxCharacterPose. - - * Fixed an issue with GenerateTangentsDataForAllUVSets that was processing - tangents for each polygon instead of each mesh when calling - FbxGeometryConverter::SplitMeshPerMaterial. - - * Fixed an issue with ConvertPivotAnimation when processing multiple takes. - - * Fixed a crash with ReadUserElementData that was referencing invalid - pointers. - - * Fixed a BVH import rotation issue on joints related to constant key - reducer. - - * Fixed circular dependency in fbxsdk_nsbegin.h. - - * Fixed missing template instantiation for FbxSimpleMap and FbxObjectMap. - - * FbxAMatrix only works with XYZ rotation order. - - * Skew and Stretch matrices are not supported. - - * The FBX SDK is *NOT* thread safe. - - * Deformers do not support instancing. This causes point cache deforming to - not be re-usable. - - * While assigned material can change on the node, material layers on the - mesh cannot be instanced. - - * When exporting various file format, sometimes the scene gets modified - permanently, resulting in data loss. - -2015.1 - - * Added support for Visual Studio 2013 compiler. - - * iOS build changes: minimum iOS version is now 7.0 and now supports 3 main - architectures (armv7, armv7s and arm64). - - * MacOS build changes: GCC build support dropped. MacOS minimum version is - now 10.8, and is built with XCode 5.0 default Clang compiler. - - * Native Alembic support added: now .abc files can be directly opened, - which will create the appropriate nodes and mesh in the FBX scene. - Afterwards, users can access FbxCache data in order to read cache data. - NOTE: Alembic support is currently only enabled for desktop operating - systems (i.e. disabled on iOS/WinStore). - - * FbxCache now has a newer function, Read, which works regardless of cache - type. - - * Add .zip read support: files and their dependencies, such as textures, - can now be packaged into a .zip file, which can be directly read by the - FBX SDK without unpacking. This is useful for file formats that don't - support embedding textures. Only one scene per .zip file is supported. - - * FbxObject now has a virtual function Compact that can be overloaded, to - implement object compacting. Calling Compact on FbxScene or FbxDocument - will compact every objects connected as source. - - * FbxArray now provides a AddCompact and Compact function to reduce memory - used by arrays. - - * Added operator equality and inequality to FbxPair. - - * Added new class FbxSharedPtr. - - * Improved the FbxCameraManipulator behavior: - - Upon Frame-All, camera rotation is preserved - - Upon Frame-All, take into account deformations on meshes - - Make minimum distance to LookAt more robust - - Improved minimum speed when camera is at minimum distance to LookAt - - * Added a new FBX_TRACE macro for debugging. - - * Added a new parameter to FbxCamera::ComputeProjectionMatrix to specify if - the FOV should be preserved even if the viewport height is larger than - the viewport width. - - * FbxGeometryConverter function ResetMeshesCenterToWorld renamed to - RecenterSceneToWorldCenter because it doesn't change the vertices data. - - * Recent endianness changes were reverted because they are not necessary. - - * Fixed an issue with the matrix converter filter that wasn't resetting all - members properly. - - * Made path utility functions more robust: files are no longer mistaken for - folders, and trying to write in read-only folders should not crash any - more. - - * The geometry converter Triangulate and SplitMeshesPerMaterials now - properly handles blend shapes. - - * Fixed an issue with left over shape data upon reading FBX files. - - * Fixed a major corruption problem when trying to save files in iOS builds. - - * FBXSDK_ENV_IOS should no longer be defined on MacOS builds. - - * FbxThumbnails are now properly shared between document and importer's - scene info. - - * Converting a scene's axis system with the FbxAxisSystem will now ignore - pre/post rotation and rotation order values on node if RotationActive - property is set to false. - - * Cleaned-up many warnings when compiling using XCode 5.0. - - * Fix a crash with layer element material cloning that was still pointing - to an not-cloned FbxSurfaceMaterial object. - - * Fixed an issue with local time span not always written to FBX file. - - * Now when using FbxGeometryConverter::SplitMeshesPerMaterial, all layer - elements will be copied to the new meshes instead of only the first one. - - * Fixed a rare crash upon loading corrupted FBX files. - - * Fixed multiple crashes upon loading Collada and OBJ files. - -2015.0 - - * Added 4 new functions in FbxMatrix to generate LookTo and LookAt - matrices. - - * Class FbxVertexCacheDeformer now has a type property to define the type - of data it uses in the cache file channel. - - * Added a new generic read function to FbxCache, which returns an array of - float managed internally. This function now works regardless of the cache - file type. - - * FbxArray now use reference to elements rather than copies for greater - memory performance. - - * Added a new function overload FbxMatrix::GetElements which now can return - a rotation vector instead of a quaternion. - - * Matrix converter curve filter now supports TRS limits. - - * Cleaned and standardized comparison functors across the SDK. - - * Added operator += and -= to FbxRedBlackTree. FbxMap use this model. - - * Added new function FbxArray::RemoveRange that allows removing multiple - items. - - * Renamed FbxSet to FbxMultiMap to clearly describe what it does. - - * Renamed FbxSet2 to FbxSet, since this is the actual set class in FBX SDK. - - * Polished the interface of FbxVertexCacheDeformer class to use the FBX SDK - standard property model. - - * FbxArray will now use reference values for most of its functions. - - * FbxPropertyAttr members have been merged into FbxPropertyFlags for - consistency. - - * Fix a regression with edge smoothing. - - * Fixed multiple memory alignment issues for iOS builds. - - * FbxProperty map in evaluate state now properly use an FbxProperty - reference instead of a pointer. - - * Fixed issue with the evaluation state not properly clearing itself when - the scene changes. This was causing memory corruption. - - * Fixed a crash when freeing the FbxManager in some circumstances. - - * Fixed a crash when importing some Collada files. - - * Fixed a crash when trying to create a folder in read-only locations on - Linux/Mac. - - * Fixed an issue with tangents smoothing not considering flip. - -2014.2.1 - - * The change to have the animation evaluator per manager instead of per - scene has been reverted because it was causing a loss of functionality - for some applications. - - * Now to retrieve the current animation stack, please use - FbxScene::GetCurrentAnimationStack instead of - FbxAnimEvaluator::GetContext. - - * FbxProperty::GetCurveNode should once again return the right curve node. - This caused animation to be completely wrong in some cases. - - * Fixed an issue with camera node's LclTranslation property being - incorrectly overwritten by the camera Position property. - -2014.2 - - * Added new FBX SDK library targets: Windows Store, Mac Clang and iOS. - - * Major improvement to animation evaluation functions: - - Now, the FbxAnimEvaluator instance is stored in the manager rather than - the scene. - - Add evaluation state to animation stacks to allow simultaneous - evaluation of takes. - - One evaluation state remains in the evaluator to be able to evaluate - scene-less objects. - - Remove the necessity to provide an index to evaluation functions of the - evaluator. All 'fast' versions of these functions are no longer - necessary so they have been removed. - - Added a new function in FbxProperty to evaluate their value. - - Greatly improve performance of FbxProperty::GetCurveNode by caching - results in a map inside evaluation state. - - Greatly reduce the size of a node and property evaluation states. - - * Greatly reduced the amount of memory allocations/free that were caused by - FbxCriteria and FbxQuery. Should improve performance in most cases. - - * Added new global function FbxTypeComponentCount to retrieve a type's - component count. - - * Added new functions FbxMapDelete, FbxMapFree and FbxMapDestroy to ease - the process of deleting map content. - - * New function in FbxTime to retrieve the time string, which allow to - specify which 'start' and 'end' element it can returns. - - * Added a new property to the camera manipulator to allow inverting - controls. - - * FbxGeometry::ComputeBBox will no longer compute or change the bounding - box value if the content is unloaded. - - * FbxString is now using a char pointer allocation again rather than an - opaque std::string implementation, for easier debugging and better - performance/memory footprint. It is no longer necessary to modify the - autoexp.dat file of Visual Studio to see string content with debuggers. - - * More work has been put in to make it possible to clone a character and - its dependencies. Please see fbxclonemanager.h comments for more info. - - * FbxGeometryConverter::SplitMeshesPerMaterial now correctly handles - skinning on splitted meshes. - - * Exposed bounding box calculation function scene and nodes. Please check - out FbxScene::ComputeBoundingBoxMinMaxCenter and - FbxNode::EvaluateGlobalBoundingBoxMinMaxCenter. - - * Added new function in FbxGeometryConverter to re-center the scene meshes, - please check out FbxGeometryConverter::ResetMeshesCenterToWorld. - - * Added new function in mesh to generate normals, working the same way - generating tangents, which replace the old function - FbxMesh::ComputeVertexNormals which only supported smooth normals. Please - see FbxMesh::GenerateNormals. - - * Implemented FbxScene::Clone to properly duplicate scenes. - - * Added two new functions to FbxTime: SetFramePrecise and - GetFrameCountPrecise, which use double values instead of longlong. - - * Added FbxMod to fbxmath.h. - - * Added a sample code to demonstrate FbxStream class usage. - - * FbxString no longer use std::string implementation. - - * FBXSDK_sprintf, FBXSDK_snprintf, FBXSDK_vsprintf and FBXSDK_vsnprintf now - always take a single size parameter instead of being variant on different - platforms. - - * Removed thumbnails in animation stack. Now only one thumbnail can be - saved per FBX file, found in the FbxSceneInfo class. - - * Removed GetCurveNode in FbxProperty that used an animation stack name for - performance reasons. - - * Changed ConvertPivot functions in FbxNode to use an animation stack - pointer instead of animation stack for performance reasons. - - * Renamed class FbxPropertyFlagsExt to FbxPropertyFlags. - - * Moved class FbxPropertyValue to a more global locations because it is now - also used by evaluation state. - - * When using the camera manipulator, and the camera got flipped vertically, - the horizontal orbit was inversed. This has been fixed. - - * Fixed an issue with matrix conversion to euler angles; degenerate case - (gimbal lock) detection was too sensitive. - - * ContentUnload will now properly unload layers on geometry. - - * When performing a 'frame-all' using the camera manipulator, if the mesh - content is unloaded, it will use the pre-computed bounding box, if it - exist, otherwise it will skip it. - - * When performing a 'frame-all' using the camera manipulator, the camera - will now correctly center itself on the global bounding box center rather - than its centroid. - - * Fixed many compilation warnings with clang compiler on Mac. - - * Fixed camera orthogonal projection matrix generation issue. - - * When manipulating camera, it shall no longer go through the interest - position. - - * Fixed crash when writing encrypted FBX file. - - * Fixed crash when opening OBJ files. - - * Fixed typo with return value of FbxExporter::GetCurrentWritableVersions. - - * FbxCameraManipulator Frame-All now works on orthographic cameras. - - * Fixed edge detection to be more accurate. Previous code only stored one - edge from a single point. Now save all edges from one point and detect - duplicated edges in all situation. - - * Fixed various warnings in macros generated when compiling with C++11. - - * Fixed an issue when reading textures for OBJ files. - - * Fixed an issue when reading material transparent properties in MTL files. - - * Fix rare crash when reading 3DS files. - - * Fixed rare memory leaks in specific situations. - - * Fixed reversed normals when reading DXF files. - - * Fixed a crash when writing collada files containing shapes. - - * Fix function to generate tangents/binormals incorrectly sets W component - to greater values than -1 or 1. - - * Cameras with a target up node or a look at node will now be able to be - moved around properly using the camera manipulator. - -2014.1 - - * Introduced FBXSDK_ENV_WINRT preprocessor define (previously known as - FBXSDK_ENV_WINMETRO) which disable unsupported functions when targeting - Microsoft Windows Store applications. This define will automatically be - defined if you set Windows Store App Support to Yes in your Visual Studio - project settings. - - * A number of changes to the architecture defines in fbxarch.h were changed - to add support for ARM processor: - Added FBXSDK_ARCH_IX86, only defined on Intel x86 targets. - Added FBXSDK_ARCH_AMD64, only defined on AMD64 targets. - Added FBXSDK_ARCH_ARM, only defined on ARM targets. - Renamed FBXSDK_ARCH_32 to FBXSDK_CPU_32, only defined for 32bit targets. - Renamed FBXSDK_ARCH_64 to FBXSDK_CPU_64, only defined for 64bit targets. - Also, please see deprecated details below. - - * Added version information to the FBX SDK dll on Windows platform. - - * Updated ViewScene sample to show how to support in-between blendshape - (progressive morph). - - * Added support for the new Maya 2014 Cache files (*.mcx). - - * Improved the tangents/binormals calculation functions to properly handle - mirrored faces by flipping the binormal when the face is inverted. It - also sets the fourth component of the tangent to -1 if it is flipped, 1 - otherwise. - - * FbxReference is now defined as FbxObject* rather than void*. This will - allow properties of FbxReference type to correctly respond to FbxCast and - other FBX SDK API, as well as restraining the assignment to FbxObject* - types. - - * Improved the FbxCameraManipulator by adding a new action type: eFreePan. - It combines dollying and panning into a single action. For example, this - is very useful for manipulating the camera using a touch screen. - - * Added a new object flag: FbxObject::eInitialized. This flag is - automatically set on all object after they are done with the Construct - stage. This is also used to prevent PropertyNotify to be called during - ConstructProperties stage. - - * Now the class FbxCameraManipulator does not use an hidden class - internally anymore, and use the PropertyNotify event to re-initialize - when changing its affected camera. - - * Added a new IOSetting flag (IMP_FBX_EXTRACT_EMBEDDED_DATA) to completely - disable embedded files extraction, which is set to true by default. - - * Added a new function (FbxObject::ResetProperties) to reset all properties - to their default value. - - * The parameter pForceSet of function StaticInit on FbxProperty is not - optional anymore. When calling it in ConstructProperties, the value of - pForceSet must be correctly passed to StaticInit for all properties to - ensure properties are not initialized more than once. - - * Added new function FbxGeometryConverter::Triangulate which now replace - the old TriangulateMesh, TriangulateMeshAdvanced and TriangulateInPlace. - The new function can either take a node attribute, or a scene in - parameter. It can also replace original nodes with new ones and make sure - the scene stays clean. - - * Added new function FbxGeometryConverter::SplitMeshesPerMaterial which can - take a scene in parameter, and can replace original meshes and make sure - the scene stays clean. - - * Added a new constructor to FbxArray class, which takes an integer in - parameter to reserve the memory for that specific size. - - * Added a new parameter to FbxMesh::GetPolygonVertexUV to allow it to return - an array of unmapped polygons. This is extremely useful to determine which - vertex has no UV associated. - - * Removed the version number in library names on disk for all platforms. - Also, debug and release versions are now named the same, but in different - subfolders. - - * FBXSDK_ARCH_32 and FBXSDK_ARCH_64 got renamed to FBXSDK_CPU_32 and - FBXSDK_CPU_64 respectively to dissociate them from the architecture. - - * Cannot set void* types to FbxReference properties anymore to improve - robustness. - - * Changed the signature of FbxObject::PropertyNotify to pass a reference to - the property instead of a pointer. - - * Old triangulation functions are now deprecated. Please use - FbxGeometryConverter::Triangulate instead. - - * Improve manipulation of free cameras by preventing nasty flips when view - axis reaches vertical. - - * A regression with ConvertPivotAnimationRecursive that was introduced in - FBX 2013.3 has been fixed. It was causing some scenes to become resampled - and key-reduced wrongly. - - * When including fbxsdk.h in your project, the define WIN32_LEAN_AND_MEAN - will not be automatically defined anymore. - - * Fixed an issue with FbxPathUtils::GetRelativePath that wasn't working - properly with localized paths. - - * Fixed a crash when exporting to 2010/2011 compatible files (FBX 6.1/7.1). - - * Fixed a performance issue with Quaternion FCurve evaluation. - - * All properties of FbxReference type now use the Source connection. Only a - handful of them weren't complying, in various FbxConstraint classes. In - FBX 2014 (7.4) or lower files, this will not change anything, but in - memory these objects are now always connected to the source of the - property. - - * Blend Shape animation was missing when a take other than first is - imported, this has been corrected. - - * FbxObject::PropertyNotify callback will not be called anymore during - ConstructProperties object creation stage. - - * FbxPropertyT now correctly receive the PropertyNotify event. - - * Fixed an issue with FbxTime::SetTimeString when passing spaces between - elements. - - * Fixed an issue with the FbxCamera Position property synchronization with - its node's local translation. - - * Fixed FbxMarker class to not return property pointers. - - * For all FbxMesh::GenerateTangentsData function: When the tangents data - already exist on the mesh, and that pOverwrite is set to false, the - function will now return true so that it is not considered as an error. - - * Added a notification in the doxygen documentation of FbxStream that it - does not support other formats than FBX. - - * Fixed a crash in FbxCache evaluation under Linux/Mac platforms. - - * Fixed a rotation order issue with ASF motion files. - - * Fixed a candidate value initialization with ASF motion files. - - * Fixed a crash on Mac/Linux version in FbxPathUtils::Create. - - * Made FbxGeoemetryConverter::SplitMeshPerMaterial much more robust; now - meshes that have material indexes that points to invalid materials will - not be assigned any materials, and they will be regrouped together. - - * Fixed a crash when exporting blend shapes to an old FBX 6.x file format. - - * Fixed an issue with tangents/binormals generation when some vertices - didn't have an UV mapped. - -2014.0 - - * Visual Studio 2012 is now officially supported. - - * FbxCamera::EvaluateUpDirection now support the Roll property. - - * Added FBX 2014 file version, and his now the default target. - - * The 4th vector element of normals, binormals and tangents are now - properly exported to FBX files in FBX 2014 file format. - - * A new status reporting class has been introduced to replace the old - FbxError class. Please refer to the FbxStatus class. More usage of this - new class will be added over time. - - * Added new functions for the default IK Pull value on markers. - - * A default IK Pull value is now stored on markers. - - * TimeMarkers functionality has been re-introduced in FBX 2014 file format. - The API to access them has been placed in FbxGlobalSettings class. - - * Updated Python 3.1 support to Python 3.2 in the FBX Python SDK. - - * MotionFiles readers/writers are now registered in the public FBX SDK. - This means the FBX SDK can now import and export the following motion - file formats: Biovision (BVH), MotionAnalysis (HTR/TRC), Acclaim (ASF/AMC), - Vicon (C3D), Adaptive Optics (AOA) and Superfluo (MCD). - - * The FBX SDK libraries on Mac and Linux are now compiled with default - visibility set to hidden. Only symbols marked with FBXSDK_DLL are exported, - which makes it equal to the Windows version. - - * FbxProperty flags have been clean-up. The flag ePublished as been renamed - to eAnimated, and eUser to eUserDefined, for clarity. The flag eStatic - now works, and will be turned on for all static properties by default. - Introduced the flag eImported, for properties that are created upon - import. - - * New environment define FBXSDK_ENV_WINRT for Windows Metro support. Also - added FBXSDK_ARCH_ARM for ARM processor support, under work. - - * FbxFolder has been re-worked. FbxFolder::Create, FbxFolder::Delete and - FbxFolder::Exist has been moved in FbxPathUtils, and now work pass the - Microsoft Certification Validation Kit for Windows Store applications. - Other functions of FbxFolder have been renamed for consistency. Please - see fbxfolder.h. - - * New function FbxPathUtils::Exist now works on relative paths. - - * New function FbxPathUtils::Create can take multiple paths as argument, - and they will all be created (if possible), just like mkdir on Unix. - - * Improved FbxMesh::GetPolygonVertexCount to simply return the array size. - - * Updated FbxProgress class to be simpler, and allow an additional argument - to be passed to the single-thread callback. - - * The file fbxsdk_compatibility.h has been removed from the FBX SDK - distribution, so now it is required to use the latest API. Defining - FBXSDK_NEW_API is not necessary anymore and should be removed from your - projects. - - * The support for Visual Studio 2005 has been discontinued. - - * The support for MacOS/X SDK 10.5 has been discontinued. The minimum - requirement is now MacOS/X SDK 10.6. - - * FbxString::Empty was renamed for FbxString::Clear to avoid confusion with - FbxString::IsEmpty. - - * FbxError has been removed from all classes. Instead, functions that needs - to return an error string now use an optional parameter of type FbxStatus - similar to the MStatus in Maya API. - - * FbxFolder::Create has been removed, please use FbxPathUtils::Create - instead. - - * FbxFolder::Delete has been removed, please use FbxPathUtils::Delete - instead. - - * FbxFolder::Exist has been removed, please use FbxPathUtils::Exist instead. - - * FbxFolder::Remove has been removed from the FBX SDK API. Please now use - FbxPathUtils::Delete, which is now always recursive. - - * Fixed a small issue with FbxCamera::EvaluateUpDirection that was - incorrectly using the TargetUp object. - - * Updated various doxygen comments for clarity. - - * Fixed a buffer overrun crash issue when importing specific 3DS files. - - * Fixed a crash issue when trying to destroy the FbxManager at application - exit. - - * Some samples were erroneously calling FbxString::Empty instead of - FbxString::IsEmpty. - - * Fixed a buffer overflow in FbxStream::ReadString. - - * Importing an OBJ file will not un-weld UV anymore. - - * Fixed curve key comment in ASCII version; the code was not distinguishing - between the GenericTimeIndependent only and GenericClampProgressive. - - * Improved the TranslationActive, RotationActive and ScalingActive - properties doxygen documentation. - - * Fixed a crash when exporting to Collada when the scene was containing - other kinds of deformers than skins. - - * The default value of FbxMarker::DrawLink is now set to true. - - * Fixed a small issue with FbxCamera::EvaluateLookAtPosition that wasn't - returning the expected value. - - * Fixed an issue when writing Collada files that was resulting in the - Effect field being written for each polygon, wrongly increasing the file - size. - - * Various functions, such as FbxMin, that were returning a const reference - type value were fixed to return a copy of the value instead. - - * Various function parameters that were asking for const reference intrinsic - type were changed to ask a copy of the intrinsic type (which is faster - than a const reference in this case). - - * Fixed a small typo error in the Transform sample code. - - * Small optimization on connection management for large scenes. - - * Fixed a crash when calling FbxScene::ForceKill on a scene imported which - contained thumbnails. - - * Made fbxiosettingspath.h header file compatible with C++x11 standard. - -2013.3 - - * The class FbxCameraManipulator has been improved so that the FrameAll and - FrameSelected functions now take deformations into account, and also - properly adjust the camera distance for a better framing. - - * Removed the FbxNode_internal class. Now all attributes of FbxNode are - visible within the FbxNode class declaration itself. This caused some - changes to the Pivot informations. - - * Now the FbxCache using IFF component can scale to 64bit, allowing for - much larger cache files to be used. - - * The dynamic library version of the FBX SDK library on the Windows - platform now use the static MSVCRT (/mt) rather than the dynamic MSVCRT - (/MD). This allows to distribute applications using the FBX SDK dll - without having to install the Microsoft Visual Studio Redist. - - * From now on, all classes that previously overloaded Clone will now only - clone itself, and not its sources. For instance, cloning an FbxNode will - NOT clone its FbxNodeAttribute anymore. Instead, to reproduce this - behavior, one must use the FbxCloneManager which handles cloning object - networks. This now holds true for most objects of the FBX SDK. However, - objects such as meshes with their skins and clusters remain considered as - one entity. - - * The class FbxScene now overload the Clone function, and uses the - FbxCloneManager to successfully clone the entire scene network. - - * The FBX SDK now use default memory allocation functions when they are - called without being initialized. This only happens when static variables - are initialized before main. If you need to change the FBX SDK memory - allocation functions, make sure you are not using static FBX SDK objects - that could potentially be initialized before your main call. - - * Added new functions to retrieve the memory allocation function currently - set, as well as the default ones. Please see fbxalloc.h file. - - * Added support for 'locked' flags on properties. This won't prevent FBX - SDK users from changing property values, but it will allow applications - to store/retrieve the flags across. Since properties can have up to 4 - members, we're using 4 bits to differenciate them. - - * Fixed an issue when importing files with bump textures using foreign - languages. - - * Added a bit more details to the installers detail pane on Windows. - - * Fixed a crash with the Geometry Converter; duplicated edges are now - correctly detected. - - * Fixed a minor issue in the ViewScene sample, concerning holes in the - mSubMeshes table. - - * A lot of classes using direct pointers to objects have been corrected to - use reference properties, which makes the SDK more robust. - - * Properties that have the NotSavable flag now do not write their - connections, thus making FBX files smaller. - - * The ShadingModel property on FbxSurfaceMaterial inherited classes will - only be overwritten for unknown types. - - * Clean-up remaining cases where the specified memory allocator wasn't - correctly used internally in the FBX SDK. - - * Several classes needed an update to their ::Copy method so that all - elements are correctly copied. - - * Fixed the MatrixConverter filter so that it doesn't get fooled by the - LeftHand system if the input animation has a negative scaling vector. - - * Fix several issues with CharacterPose reading/writing mechanics. - - * An invalid FBX reader/writer was chosen when opening older FBX files - (5.x/6.x) using FbxStream. Now the correct reader/writer are instanced. - - * Fixed various warnings with FBX SDK samples on Mac/Linux. - - * Fixed a crash when attempting to initialize objects before main, caused - by uninitialized memory allocation functions. - - * Fixed an issue with the tangents/binormals generation in the smoothing - phase not taking into account UV seams. Now the smoothing should not - cross UV seams boundaries. - -2013.2 - - * Basic Lambert and Phong material properties are now animatable. - - * Installation paths for all FBX products is now consistent. For instance, - the FBX SDK will now install in ".../FBX/FBX SDK/20xx.x". - - * Added support for FBX Python SDK on Linux 32bit. - - * Added new function to evaluate camera target up, that will take into - account the Target-Up object position specified on the Node. - - * Added new parameter to Readers and Writers registration process so that - now it is possible to override one, rather than just add it at the end of - the list. - - * Removed dependency to WININET library on the Windows platform. Now, when - linking with the FBX SDK, no other dependency are generated. All samples - have been updated to reflect this. - - * The FBX SDK library is now roughly ~10% smaller, since a lot of obsolete - code has been removed. - - * The constructor and destructor mechanics have been standardized across - the whole SDK. Now, the required constructor when declaring a class that - inherit from FbxObject is defined by default in the FBXSDK_OBJECT_DECLARE - macro. If you need to execute code in the constructor or destructor, you - will need to override Construct and Destruct as detailed in the - documentation. - - * The virtual function ConstructProperties signature now do not have any - return value. please update your code accordingly. As a reminder, please - do not forget to call ParentClass::ConstructProperties at the beginning - if you intend to override it. - - * FbxRedBlackTree has been moved into its own file, which makes it easier - to read fbxmap.h now. - - * The class FbxScopedPtr has been renamed FbxAutoPtr and has been moved - in fbxalloc.h so it is accessible by default. Also, a few basic overloads - with different deletion policy have been implemented. Those are - FbxAutoFreePtr, FbxAutoDeletePtr and FbxAutoDestroyPtr. - - * All functions of the FBX SDK that used to take a ClassId or a FBX_TYPE - macro as input for filtering are now deprecated. Now, the templated - version of the same function name must be used. Since it is templated, - they now return the correct value type, and it is no longer necessary to - call FbxCast on the return value. - - * Fixed an issue when specifying "ApplyTarget" with the classic evaluator. - - * The tangents/binormals generation function in the FBX SDK has been - updated and now works on polygons with more than three sides. - - * The class FbxExposureControl has been retired. - - * The class FbxPlug has been retired. - - * The function FbxProperty::GetCurve is not templated anymore. - - * The function FbxObject::GetRootProperty is now deprecated. Please use the - member FbxObject::RootProperty instead. - - * The function FbxCamera::GetUpVector is now deprecated. Please use - FbxCamera::EvaluateUpDirection instead. - - * The function FbxCamera::ComputePerspective is now deprecated. Please use - FbxCamera::ComputeProjectionMatrix instead. - - * Deprecated functions in fbxcompatibility.h file have been removed. - - * The class FbxPointerGuard has been retired, because FbxAutoPtr and its - derivates replaces it. - - * The function FbxArray::SetCount has been retired. Please use - FbxArray::Reserve or FbxArray::Resize instead. - - * The function FbxArray::Empty is now deprecated. Please use - FbxArray::Clear instead. - - * The function FbxArray::FindAfter is now deprecated. Please use - FbxArray::Find instead. - - * The function FbxArray::FindBefore is now deprecated. Please use - FbxArray::FindReverse instead. - - * The function FbxArray::AddMultiple is now deprecated. Please use - FbxArray::Grow instead. - - * All functions in FbxObject, FbxProperty, FbxCollection and FbxDocument - that used to take a FbxClassId or an FBX_TYPE() macro, as the filtering - mechanism, are now deprecated. Please use the templated version of these - functions, such as: FbxObject::GetSrcObjectCount() or - FbxObject::GetSrcObject() The templated version returns the correct - type, so it is no longer needed to use FbxCast upon return of these - functions. - - * All functions in FbxObject and FbxProperty that used to take a FbxClassId - plus an FbxCriteria have been retired instead of being deprecated, - because they didn't make sense from a logical standpoint, and can now - safely be replaced with the form Obj->Function(Criteria). - - * The following functions have been made deprecated, and should be replaced - with their equivalent found in FbxObject: - FbxConnectSrc(Dst, Src) -> Dst->ConnectSrcObject(Src) - FbxConnectDst(Src, Dst) -> Src->ConnectDstObject(Dst) - FbxGetSrcCount(Obj) -> Obj->GetSrcCount() - FbxGetSrcCount(Obj, ClassId) -> Obj->GetSrcCount() - FbxGetSrc(Obj, Index) -> Obj->GetSrcObject(Index) - FbxGetSrc(Obj, Index, ClassId) -> Obj->GetSrcObject(Index) - FbxFindSrc(Obj, Name, Index) -> Obj->FindSrcObject(Name, Index) - FbxFindSrc(Obj, Name, ClassId, Index) -> Obj->FindSrcObject(Name, Index) - FbxDisconnectAllSrc(Obj) -> Obj->DisconnectAllSrcObject() - FbxGetDstCount(Obj) -> Obj->GetDstCount() - FbxGetDstCount(Obj, ClassId) -> Obj->GetDstCount() - FbxGetDst(Obj, Index) -> Obj->GetDstObject(Index) - FbxGetDst(Obj, Index, ClassId) -> Obj->GetDstObject(Index) - FbxFindDst(Obj, Name, Index) -> Obj->FindDstObject(Name, Index) - FbxFindDst(Obj, Name, ClassId, Index) -> Obj->FindDstObject(Name, Index) - FbxDisconnectAllDst(Obj) -> Obj->DisconnectAllDstObject() - - * Fixed an issue with scaling inheritance not being computed properly by - the classic evaluator. - - * The tangents and binormals generated by the FBX SDK will now be smoothed - according to the normal smoothing. - - * Optimized tangents/binormals generation so that there not more of them - than there is normals on the mesh. - - * The FBX SDK release version can now be safely linked into a debug app. - - * Fixed a texture indice issue with old FBX 5.x content. - - * Fixed a memory leak with runtime classes. - - * The FBX SDK now uses the memory allocator in the FbxString class for all - allocations done by std::string. - - * Changed the behavior of GetAnimationInterval so that it doesn't do a - union anymore. Now, the timespan parameter is always initialized properly - inside the function. - - * Improved how the FBX SDK handle testing if file exist, resulting in a - faster file opening for missing assets that are over the network. - - * Fixed a file crash when importing an FBX 5.x file without setting an IO - setting. - - * Fix some issues with samples, as reported by users. - - * Resolved issues with the memory allocator. For instance, FbxString now - use the specified memory allocator rather than the default STL allocator. - - * Fixed a crash with a specific OBJ file. - - * An issue with ResetPivotSetAndConvertAnimation breaking instanced mesh as - been corrected. - - * Fixed multiple FBX Python SDK errors in samples. - - * Fixed an issue with Collada export for meshes with multiple materials. - -2013.1 - - * Renamed all classes with prefix "Fbx". Also renamed all structures with - the same prefix. - - * Global functions and enumerations now start with the "Fbx" prefix. - - * By default, the file fbxsdk_compatibility.h will be included when - including fbxsdk.h. This file defines a lot of the old class names to - help with the transition. However, if you want to use the new API, you - can define FBXSDK_NEW_API in your project and the compatibility file will - not be included, but will most likely result in a lot of errors to fix - in your application. - - It is highly recommended that you start by fixing compilation errors - before defining FBXSDK_NEW_API in your project, but it is also highly - recommended to fully fix your code since the compatibility file might - be removed in a future release. - - * Moved and renamed all enumerations into classes when possible. - - * Moved files into appropriate folders, and grouped them. - - * Removed KFbxMemoryAllocator class, instead use handlers setters functions - found in fbxalloc.h, such as FbxSetMallocHandler. - - * Removed all KFCurveFilter classes, please use FbxAnimCurveFilter classes - instead. - - * FbxFile is now exposed! See fbxfile.h for the list of available - functions. - - * A new class, FbxFileUtils, now expose all static functions related to - file handling, such as remove or rename, etc. - - * A new class, FbxPathUtils, now expose all static functions related to - file path handling, such as IsRelative or Clean, etc. - - * Completely re-designed how Character Poses are stored in FBX. - - * The FbxLight class has been augmented to support area lights and barn - doors. - - * The FbxGeometryBase class has been augmented to support render options - such as PrimaryVisibility, CastShadow and ReceiveShadow. - - * Many FBX SDK functions that were asking for file paths as inputs were - updated to support UTF-8. Their parameter names were updated to reflect - this change. - - * It is now possible to retrieve the "long" version string of the FBX SDK - via the function FbxManager::GetVersion(true). This will allow developers - to get the version string of this library along with the name and the - revision number. - - * Fixed various issues with sample codes. - - * Now sample codes compile with warning level 4. - - * Fixed an issue with animation evaluation that wasn't updated correctly - when told to. - - * Fixed an issue with constraints being lost after export. - - * Fixed an issue with animation evaluation sometimes returning twice the - value amount. - - * Fixed an issue with RemovePolygon function on mesh class when mapping is - by polygon. - - * Initial property values of LclTranslation, LclRotation and LclScaling - affect the evaluator's result when there are actually animation curves - connected to these properties. This has been corrected. - - * Fixed an issue with writing cache data on Mac when a space was present - in the file path. - - * Fixed a crash with xstring use in VS2010, caused by an assert. - - * Improved precision in time and timecode classes. - - * Changed how absolute and relative paths are handled during import. Now - if one of the two path is opening successfully, the other is changed to - work. - - * Fixed an issue with the unroll animation filter. - - * Now, when resampling animation, we move the default at the end rather - than at the start of the resampling. - -2012.2 - - * Added Area Light support to KFbxLight class. - - * Added Barn Doors support to KFbxLight class. - - * HotSpot property on KFbxLight has been changed for InnerAngle. - - * ConeAngle property on KFbxLight has been changed for OuterAngle. - - * Various file I/O crashes. - - * Duplicate material issue with material converter is fixed. - - * Some minor fixes in sample codes. - - * Fixed path issue in Collada reader. - - * After writing FBX file, the scene should come back to its initial state. - - * Fixed a crash on import of old scenes when it didn't contain blendshapes - or morpher data. - - * Fixed issue with incorrect normals when converting from OBJ to FBX. - - * Sample code "Cube Creator" was modifying the scene when exporting in OBJ, - This has been fixed. - - * Fixed an issue with absolute versus relative file paths; now if one of them - is valid and the other is not, we fix the broken one. - - * Fixed an issue with cache writing on Mac when there was a space in the file - name. - - * Fixed an issue with the FBX exporter that would duplicate materials in very - specific conditions. - - * After writing an FBX 6.x file with shapes, the scene was modified and data - was potentially lost. This has been corrected. - - * Fixed an assert caused by stl string in VS2010. - - * We now open FBX files in read-only mode rather than read+write. This allow - for other process to access the FBX file in parallel. - -2012.1 - - * Added support for Image Sequences into KFbxVideo. - - * Improved the reference documentation quite substantially. - - * Refined how visibility inheritance works: added a new property for each - node allowing to specify if it should be inherited or not. - - * Added a new option in IO Settings to import the time span found in FBX - files. - - * Added a new function to KFbxAxisSystem to retrieve the front vector. - - * Added a new function to KFbxAnimEvaluator and KFbxAnimEvalClassic to - allow users to calculate the local TRS from the global, with an offset. - See ComputeLocalTRSFromGlobal in kfbxanimevaluator.h for more info. - - * Fix an issue with scale values of zero when passed to the matrix - converter. - - * Added indentation to various parts of FBX ASCII files. - - * Fixed an issue with some curves evaluating to infinite values. - - * Multiple blend shapes with the same target resulted in corrupted file, - this has been corrected. - - * An optimization to the file i/o reader and writer improved import - and export speed up to 60% faster. - - * Fixed an issue with constant key mode in the filters. - - * Changed the marker look property enum initialization to match the enum - in the header file. - - * Fixed an issue in the classic evaluator which caused channels not - animated to sometimes return twice the value. - -2012.0 - - * The FBX SDK Packaging on the Microsoft Windows platform has changed to - reduce the size of the downloads. Now the different compilers flavors are - distributed in separate installers. As a result of this, we also - uniformized the library file names across platforms. - - * The file format version of FBX files as been incremented to 7.2. - There have been various small changes in the file format to support new - data. - - * The preprocessor identifier that must be defined when linking with the - dynamic library version of the FBX SDK has changed from KFBX_DLLINFO to - FBXSDK_SHARED. KFBX_DLLINFO now serves no purpose. For any other FBX - SDK configuration no other preprocessor identifiers must be defined. - - Note: Please change your projects to define FBXSDK_SHARED if you - intend to use the dynamic library version of the FBX SDK. - - * Many improvements to the KFbxCharacter class have been made to improve - interoperability of character data with other Autodesk 3D applications. - - * Support for vector displacement maps has been added to the FBX SDK. - - * Support for Allegorithmic's Substance (procedural textures) has been - added to the FBX SDK core. Now the class KFbxTexture serves as the base - class for KFbxFileTexture, KFbxLayeredTexture and KFbxProceduralTexture. - KFbxFileTexture should now be used for bitmap textures, replacing - KFbxTexture. - - * The Collada importer now supports the Collada 1.4.1 standard. - - * New quaternion evaluation modes for rotation animation curves are now - available, equivalent to those found in Autodesk Maya. - - * A new type of animation curve key has been added to the FBX SDK core to - allow for a better support of Autodesk 3dsMax "auto" keys with crease - in/out. - - * Added support for Dual Quaternion Skinning. Please refer to the new class - KFbxDualQuaternion for more information. - - * The visibility inheritance behavior of scene nodes have changed to better - align with popular Autodesk 3D applications. - - * Many improvements to the import time of FBX files have been made. - - * The memory footprint of FBX files has been reduced. - - * Support for "in-between" blend shapes has been added in the FBX SDK core - to allow application plug-ins to import/export these states. - - * Added five new functions to the KFbxNode class : - - KFbxXMatrix& KFbxNode::EvaluateGlobalTransform(...) - KFbxXMatrix& KFbxNode::EvaluateLocalTransform(...) - KFbxVector4& KFbxNode::EvaluateLocalTranslation(...) - KFbxVector4& KFbxNode::EvaluateLocalRotation(...) - KFbxVector4& KFbxNode::EvaluateLocalScaling(...) - - These functions are equivalent to calling KFbxScene-> - GetEvaluator()->..., but have been made directly on the FbxNode for - convenience. - - * Added a new function to the KFbxEvaluator abstract class : - - void KFbxEvaluator::ResetEvaluationState() - - This function enables users to completely clear the whole evaluation - cache by deleting all entries in it. - - * The API documentation generated by Doxygen requires less disk space. Many - larger images have been removed to make the documentation easier to use. - - * Added support for line geometry to FBX via the KFbxLine class. - - * Added an option to KMemoryPool to control concurrent allocations. - Previously, the allocation was always in concurrent mode. - - * The FBX SDK is now built with full optimization settings (i.e. both - size and speed) instead of being optimized for speed only. - - * Roughly 25 new texture blend modes were added. Also, the default blend - mode is now Normal instead of Translucent. - - * Object names will now appear in ASCII FBX files as comments in the - connection section for easier debugging. - - * A new tessellation function was added to NURB curves to provide a work- - around for applications that do not support them. The tessellation will - produce a KFbxLine object (a series of vertices). - - * A new file, fbxfilesdk_version.h has been added that contains all the - versioning information of the FBX SDK. It also defines a new preprocessor - identifier FBXSDK_VERSION_STRING that represents the version information - as a string. - - * Ptex files can be transported just like any other texture format (png, - jpeg, etc.) provided that they are connected to a material property. For - more information about Ptex please visit http://ptex.us/documentation.html - - * A new function KFbxImporter::SetEmbeddingExtractionFolder as been added - to allow developers to specify an extract folder when importing FBX files. - - * New functions added to KFbxCache class: GetNextTimeWithData(), - GetDataCount() and GetDataTime(). - - * All FBX related DLLs shipped are now officially signed with the Autodesk - certificate. - - * The two KFbxSdkManager::CreateClass(...) functions have been marked - deprecated and KFbxSdkManager::CreateNewObjectFromClassId(...) should be - used instead. - - * The methods KFbxNode::Set/GetUseQuaternionForInterpolation() have been - marked deprecated. Their usage should be replaced with calls to - KFbxNode::Set/GetQuaternionInterpolation() respectively. These new - methods are using the following enumeration symbols to activate new - evaluation algorithms: - - eQUATINTERP_OFF = 0 - eQUATINTERP_CLASSIC = 1 - eQUATINTERP_SLERP - eQUATINTERP_CUBIC - eQUATINTERP_TANGENTDEPENDENT - - The eQUATINTERP_OFF is equivalent to the old way of passing the "false" - value to the parameter of the SetUseQuaternionForInterpolation() while - eQUATINTERP_CLASSIC correspond to the "true" value. The classic mode call - the evaluation algorithm that has been defined in the FBX SDK from the - earlier versions. - - * The methods KFbxSdkManager::CreateClass have been deprecated in favor for - a new function, KFbxSdkManager::CreateNewObjectFromClassId(...) which - removes non-used parameters, and combine all functions into this single - call. The new function name also clearly indicate that a new object - instance is created, rather than a new class. - - * The methods to access the properties of KFbxSurfaceMaterial and sub-class - have been deprecated. Now users can simply access the properties directly - just like any other FBX SDK object class. - - * Many functions of KFbxShape have been deprecated with the introduction - of the support for in-between blendshapes. - - * The .3DS file format writing as been retired. However, the .3DS file - reader will persist. - - * The mDEBUG_String member was removed from the KString class to make sure - the debug and release version are the same size. As a result of this, to - debug the KString class on the Microsoft Windows platform, please open - and read the file kstring.txt provided along this readme.txt file. - - * The static libraries are now built with _SECURE_SCL=1, which is the - default value when not specified by projects. If your project used to - define _SECURE_SCL=0 just to be able to link with the FBX SDK, then it - can now be safely removed from the predefined preprocessor identifiers. - - * KFbxObject::Clone has been reviewed, and now offers an implementation - that should fit most, if not all, cloning logic for all classes that - inherit from KFbxObject. As a result objects that don't implement Clone - behave correctly and similarly across the SDK. - - * Fixed an issue in the conversion of Euler value to quaternion values with - some corner cases. - - * The FBX SDK no longer requires RTTI to be enabled by the host software. - This also means dynamic_cast can no longer be used to convert FBX SDK - objects. KFbxCast should be used instead. - - * The class KFbxSurfacePhong can now be converted into its parent class, - KFbxSurfaceLambert, using KFbxCast. - - * The properties of KFbxSurfaceMaterial and all its sub-classes are now - declared public. - - * The function KFbxObject::GetTypeName() has been re-vamped to return a - const char* type instead of KString. Many classes that were - re-implementing this function without reason have been cleaned-up - throughout the SDK. - - * The function ResetPivotSetAndConvertAnimation will now also iterate - through all animation stacks instead of just the first one it finds in - the scene. - - * Fixed a crash wih KFbxAnimEvaluator::SetContext(...). - - * A pragma pack directive was added to the file fbxsdk.h to set it to the - value used when the FBX SDK was compiled. This will allow developers - to include the FBX SDK in their project without having to worry about the - packing size used by their application. - - * KFbxCache::GetChannelIndex() should return -1 instead of 0 when error - occurs or channel not found. - - * Fixed several issues and memory leaks in FBX SDK sample codes. - - * KString size in debug and release should now be the same, which fix the - crash resulting of that incompatibility. - - * The Microsoft Visual Studio 2008 builds are now compiled using the - Service Pack 1. - - * Added the const qualifier to several functions and members. - - * Stereo Cameras now have the correct post-rotation set on export. - - * An issue with multiple property-to-property connections in FBX files has - been corrected. - - * An optimization to the way we allocate animation curves has been done to - improve the destroy speed with large scenes. - - * Fixed an issue in KFbxMesh::TriangulateMeshAdvance(), an incorrect mesh - smooth group was set when the original mapping mode was "by edge". - - * An issue with skew matrix in the classic evaluator has been fixed. - -2011.3.1 - - * All functions related to local and global "state" in the KFbxNode - declaration were removed since their implementation didn't work anymore - since the last release. They should have been set to deprecated within - the header files, but they were forgotten. - - * The unroll filter was inconsistent when applying its process on curves - data, this has been corrected. - - * Fixed a crash in the function EmulateNormalsByPolygonVertex. - - * Visual Studio 2010 builds were reporting missing PDB files, this has been - corrected. - - * Importing various .OBJ file sometime resulted in much more vertices, this - is now working as intended. - - * The mesh triangulation method has been re-written for a much more robust - algorithm. Now it can handle non-concave shapes. The method can be called - using TriangulateMeshAdvanced. - - * A conversion error from Euler to Quaternion has been corrected, it is now - much more robust for corner cases. - -2011.3 - - * The FBX SDK is now also ship in a dynamic library package format. To link - against the dynamic version, users will have to define KFBX_DLLINFO in - their project preprocessor settings. The static version still doesn't - require any preprocessor to be defined. - - * Augmented the KFbxCache class to correctly support multiple data channels. - - * Stereo Cameras now correctly support aim/up. - - * Added three new functions to the KFbxAnimEvaluator class : - - KFbxVector4& GetNodeLocalTranslation(...) - KFbxVector4& GetNodeLocalRotation(...) - KFbxVector4& GetNodeLocalScaling(...) - - Allow users to calculate the local translation, rotation and scaling as it - was done in previous versions of the FBX SDK. On purpose, these new - functions will not take pre/post rotations, offsets and pivots in - consideration, but they still will consider translation, rotation and - scaling limits. - - * Added the new KFbxCachedEffect node attribute. These are used to store - other kind of vertex (or position) caching. - - * Fixed a crash at import time for various legacy FBX files when importing - animation curves data. - - * Some UV Sets were lost in very specific cases during export, this has - been corrected. - - * Fixed an issue with node's local transform calculation. Now it should - correctly return the result of ParentGlobal.Inverse * Global. - - * Protein 2.0 Materials are now extract in the .fbm folder along the .fbx - file first, rather than the user's operating system temporary folder. - - * The following files contain many newly deprecated calls. Please open them - and search for the macro K_DEPRECATED to find out. Because the list is so - big, it will not be listed here. - - kfbxconstraint.h, kfbxconstraintaim.h, kfbxconstraintparent.h, - kfbxgeometry.h, kfbxnode.h, kfbxscene.h, kfbxkfcurvefilters.h, - kfbxdocument.h, kfbxreaderfbx.h, kfbxreaderfbx6.h, kfbximporter.h, - kfbxproperty.h - -2011.2 - - * Officially dropped support for PowerPC architecture. Universal binaries - found in MacOS builds will now only contain 32/64-bit variances. - - * Fixed a crash when importing some legacy MotionBuilder FBX 5.x files. - - * Corrected the computation of the smoothing group for in mesh triangulation - function. - - * Fixed Localization problems on the DAE, DFX and OBJ readers/writers. - - * Extended the file size limit for FBX files from 2GB to 4GB. - - * Augmented the Reference Documentation for a certain number of classes. For - example, check out KFbxNode or KFbxObject and tell us what you think! :) - -2011.1 - - * Removed the KFbxTakeNodeContainer class. This was done with the redesign - of the animation system. - - * A whole new set of classes are now available to evaluate animation with - the FBX SDK. For more information, please look at the reference - documentation for KFbxAnimStack, KFbxAnimLayer, KFbxAnimCurve, - KFbxAnimCurveNode, KFbxAnimEvaluator and KFbxAnimEvalClassic classes. Also - the evaluation result will now be stored outside the KFbxNode class and - only created on demand, resulting in a much smaller memory footprint. - - * Removed all needed preprocessor defines to be able to correctly link with - the static version of the FBX SDK. Namely, those defines were K_PLUGIN, - K_FBXSDK and K_NODLL. - - * The FBX file format as now been upgraded to our latest new technology, - FBX 7.1! This new FBX file format allow for much more flexibility, - supporting any number of instances, connections by GUID, reduced file size - with compression, embedding in ASCII files and much more! - - * The KFbxSystemUnit class changed so that it doesn't modify the multiplier - parameter. Now it is simply carried along in the FBX file. - - * A Python Binding for FBX SDK has been released for the first time! In this - first release, only the most basic functions to allow import/export and - scene traversal and property query has been exposed. More will be exposed - later on when we gather more feedback from user experience. - -2010.2 - - * Improved processing speed of the function to retrieve polygon's indexes in - the mesh class KFbxMesh. - - * Removed SetFileFormat on all classes that inherit from KFbxImporter and - KFbxExporter. Instead, the file format can be overwritten in the - Initialize functions. By default, the file format will now be auto- - matically be detected. - - * Extended the KFbxMesh class to support standard mesh smoothing. We are - referring to edge/vertex creases, mesh smoothness, division levels, - subdivisions, continuity and border/edge preservation. - - * Added Stereo Cameras support via the KFbxCameraStereo class. - - * Added Display Layer and Selection Sets support via the KFbxDisplayLayer - and KFbxSelectionSet classes respectively. - - * Fixed an issue preventing the use of the slash ( / ) character in property - names. - - * Fixed a stack overflow error in KFbxRenamingStrategy. - - * Added support for many new texture blend mode. See KFbxLayerElementTexture - for more information. - - * Files not ending in .fbx but that still contain FBX formatting can now - successfully be opened with the FBX SDK. - - * Properties can now be destroyed with KFbxProperty::Destroy(). - - * Fixed FBX 5.x reader to correctly set pivot information when importing - legacy files. - -2010.0 - - * Dropped support for Microsoft Visual Studio 2003 libraries. - - * Many, many issues fixed. Please refer to previous readme versions for more - details. - -2009.x - - * KFbxCache class supports int array. - - * Added the Subdivision Display Smoothness to the KFbxSubdiv class. - - * Added the optional argument to the IsValid() method in the KFbxTrimSurface - class to skip the check of boundary curves CV's overlaps. - - * Re-factoring of the KFbxCamera class. - - * Updates to class documentation. - - * Added methods and properties to manipulate front/back planes & plates. - - * Deprecated ECameraBackgroundDrawingMode type and replaced with - ECameraPlateDrawingMode - - * Deprecated ECameraBackgroundPlacementOptions. This has been replaced with - the individual properties: FitImage, Center, KeepRatio and Crop. - - * Deprecated GetBackgroundPlacementOptions() since now the flags are stored - in the above mentioned properties. - - * Deprecated SetViewFrustum(bool pEnable), use SetViewNearFarPlanes() - - * Deprecated GetViewFrustum(), use GetViewNearFarPlanes() - - * Support of non-convex polygons in the triangulation algorithms. - - * Overload of the new operator is not possible anymore (the - FBXSDK_OVERLOAD_NEW_OPERATOR macro has been removed). The usage of the - custom memory allocator can only be achieve by using the - KFbxMemoryAllocator class. See the ExportScene05 for an implementation - example. - - * Enhanced algorithm for smoothing groups generation. - - * Support of displacement map channel. - - * The class KFbxStreamOptions is now obsolete and is gradually being - replaced by the class KFbxIOSettings. - - * Added KFbxConstraintCustom class. - - * Added KFbxContainerTemplate class. - - * Added KFbxSubdiv class. - - * Added KFbxEmbeddedFilesAccumulator class. - - * Adjusted tangents to stay closer to the real value when the weight gets - ridiculously small. - - * Fixed Collada plug-in to handle operating system locale. Depending on the - locale, the decimal point for numbers may have been represented with the - comma instead of the point causing parsing errors. - - * Fixed support for the floor contact to the KFbxCharacter. - - * Fixed infinite loop when loading .obj files on MAC OS. - - * Removed some more memory leaks. - - * Added the HasDefaultValue(KFbxProperty&) function to check if a property - value has changed from its default one. - - * Added the BumpFactor property to the SurfaceMaterial class. - - * Defined plug-ins of plug-ins interface in the fbxsdk manager. See the - Autodesk FBX SDK PRW readme file for more details. - - * Re-factoring of the renaming strategy object. - - * Removed unused eCONSTRAINT from the KFbxNodeAttribute. - - * Deprecated FillNodeArray and FillNodeArrayRecursive - - * Overwrite empty relative filename in texture objects with the correct - value. - - * Fix for internal TRS cache so it correctly get reset when changing takes. - - * Bug fixes in the Collada reader/writer. - - * Fixed a bug that was causing the loss of Shape animation on NURBS objects. - - * Fixed the fact that the layers were losing their name after a clone. - - * Corrections for pivot conversion functions: - - - Set source pivot to ACTIVE in function ResetPivotSetAndConvertAnimation. - - - Update default transformation values to match the results of the pivot - conversion functions. - - * Fixed the endless loop in the RemoveChar() method of the KString class. - - * Fixed default values in the KFbxCharacter structure. - - - -4. LEGAL DISCLAIMER -------------------- - -Autodesk and FBX are registered trademarks or trademarks of Autodesk, Inc., in -the USA and/or other countries. All other brand names, product names, or trade- -marks belong to their respective holders. - - Copyright (C) 2018 Autodesk, Inc. - All Rights Reserved - -================================================================================ diff --git a/sdk/Windows/2019.2/samples/Animation/CMakeLists.txt b/sdk/Windows/2019.2/samples/Animation/CMakeLists.txt deleted file mode 100755 index 68292df..0000000 --- a/sdk/Windows/2019.2/samples/Animation/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Animation .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Windows/2019.2/samples/Animation/main.cxx b/sdk/Windows/2019.2/samples/Animation/main.cxx deleted file mode 100755 index ff6e5ea..0000000 --- a/sdk/Windows/2019.2/samples/Animation/main.cxx +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of animation stacks, layers, curvenodes and curves. -// -// 1. Create a stack. -// 2. Add the mandatory base layer. -// 3. Show how to set the layer blend mode bypass. -// 4. Animate the layers's weight property. -// 5. Show how to use AddChannel and ResetChannels. -// 6. Create a 3 components curvenode and animate two of the three channels. -// 7. Add the curve node to the animation layer. -// 8. Create curves and add keys. -// 9. Create an extra layer with a different blend mode. -// 10. Show how to share the same animation curve on two layers (different channels) -// 11. Evaluate the overall result. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - int i; - FbxTime lTime; - FbxAnimCurveKey key; - FbxAnimCurve* lCurve = NULL; - - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Stack001"); - - // this stack animation range is limited from 0 to 1 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Set and get the blend mode bypass of the layer - bool val; - lAnimLayer->SetBlendModeBypass(eFbxTypeCount, true); // set the bypass to all the datatypes. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = true - lAnimLayer->SetBlendModeBypass(eFbxBool, false); // overwrite just for the bool datatype. - val = lAnimLayer->GetBlendModeBypass(eFbxBool); // val = false - val = lAnimLayer->GetBlendModeBypass(eFbxChar); // val = true - val = lAnimLayer->GetBlendModeBypass(eFbxDateTime); // val = true - val = lAnimLayer->GetBlendModeBypass((EFbxType)-1); // invalid type, val = false - val = lAnimLayer->GetBlendModeBypass((EFbxType)120); // invalid type (>MAX_TYPES), val = false - - - // we want to animate the layer's weight property. - FbxAnimCurveNode* wcn = lAnimLayer->CreateCurveNode(lAnimLayer->Weight); - if (wcn) - { - // the curve node from the Weight property already contains 1 channel (Weight). - i = wcn->GetChannelsCount(); // i = 1 - - // Now, let's add a second channel to the animation node. Note that this code - // is useless and has only been provided to show the usage of the AddChannel and - // ResetChannels - bool ret; - ret = wcn->AddChannel("MyAddedIntChannel", 99); // this call will succed - i = wcn->GetChannelsCount(); // i = 2 - ret = wcn->AddChannel("MyAddedIntChannel", 10); // this call will fail, since the channel already exists. - i = wcn->GetChannelsCount(); // i = 2 - wcn->ResetChannels(); // remove any added channels - i = wcn->GetChannelsCount(); // i = 1 - } - - // get the Weight curve (and create it if it does not exist, wich is the case!) - lCurve = lAnimLayer->Weight.GetCurve(lAnimLayer, true); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*100.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // - // now create a 3 components curvenode and animate two of the three channels. - // - // first, we need a "dummy" property so we can call the CreateTypedCurveNode - FbxProperty p = FbxProperty::Create(pScene, FbxDouble3DT, "Vector3Property"); - p.Set(FbxDouble3(1.1, 2.2, 3.3)); - FbxAnimCurveNode* lCurveNode = FbxAnimCurveNode::CreateTypedCurveNode(p, pScene); - - // let's make sure the curveNode is added to the animation layer. - lAnimLayer->AddMember(lCurveNode); - - // and to the "Vector3Property" since CreateTypedCurveNode does not make any connection - p.ConnectSrcObject(lCurveNode); - - //Example of channel get value: - //double v1 = lCurveNode->GetChannelValue(0U, 0.0); // v1 = 1.1 - //float v2 = lCurveNode->GetChannelValue (1U, 0.0f); // v2 = 2.2 - //int v3 = lCurveNode->GetChannelValue (2U, 0); // v3 = 3 - - // - // create two free curves (not connected to anything) - // - - // first curve - lCurve = FbxAnimCurve::Create(pScene, "curve1"); - if (lCurve) - { - // add two keys at time 0 sec and 1 sec with values 0 and 10 respectively. - lCurve->KeyModifyBegin(); - for (i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*10.0f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - - // connect it to the second channel - lCurveNode->ConnectToChannel(lCurve, 1); - - // second curve - lCurve = FbxAnimCurve::Create(pScene, "curve2"); - if (lCurve) - { - // add three keys at time 1, 2 and 3 sec with values 3.33, 6.66 and 9.99 respectively - lCurve->KeyModifyBegin(); - for (i = 1; i < 4; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, i*3.33f); - lCurve->KeyAdd(lTime, key); - } - lCurve->KeyModifyEnd(); - } - // connect it to the third channel - lCurveNode->ConnectToChannel(lCurve, "Z"); // for backward compatibility, string identifier are still - // allowed for the X,Y,Z and W components or "0", "1", ... "9", "A", "B", ... "F" for the Matrix44 datatype - - - // ====================================================================== - // - // Add a second animation layer and evaluate using the FbxAnimEvaluator - // - // ====================================================================== - lAnimLayer = FbxAnimLayer::Create(pScene, "Layer2"); - lAnimStack->AddMember(lAnimLayer); - - // get the number of animation layers in the stack - // int nbLayers = lAnimStack->GetMemberCount(); // nblayers = 2 - lAnimLayer = lAnimStack->GetMember(1); // get the second layer - - // set its blend mode to Additive - lAnimLayer->BlendMode.Set(FbxAnimLayer::eBlendAdditive); - - // Now, let's animate the first channel of the "Vector3Property" (remember, we animated the second and - // third ones on the base layer - when we connected "curve1" and "curve2" on lCurveNode above) - // but first, make sure the property is animatable otherwise the creation of the curveNode is prohibited. - p.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lCurveNode = p.GetCurveNode(lAnimLayer, true); // create it since it does not exist yet - - // use "curve2" to animate it on channel 0 - lCurveNode->ConnectToChannel(lCurve, 0U); - - // and set the other two channels values - lCurveNode->SetChannelValue(1U, 5.0); - lCurveNode->SetChannelValue(2U, 0.0); - - // evaluate the "Vector3Property" value at three different times - // with the use of the FbxAnimEvaluator so we take into account the two layers - - // make sure the evaluator is using the correct context (context == animstack) - pScene->SetCurrentAnimationStack(lAnimStack); - for (i = 0; i < 3; i++) - { - lTime.SetSecondDouble((float)i); - FbxDouble3 value = p.EvaluateValue(lTime); - } - - /* - The base layer has a weight curve: - - Time | 0 | 1 | 2 | - Weight +-------------+----------------+--------------| - Base Layer | 0.0 | 100.0% | (100.0%) | - Layer2 | <100.0%> | <100.0%> | <100.0%> | - +-------------+----------------+--------------| - - () Querying values outside the first and/or last keys in a curve will return - the first/last key defined. - <> Since it has never been set, it defaults to the multiplication neutral element (in percent). - - At the specified times each channel value on their respective layers is: - - Time | 0 | 1 | 2 | - Channel +-------------+----------------+--------------| - 0 Base | 0* | 1.1* | 1.1* | - Layer2 | (3.33) | 3.33 | 6.66 | (curve2) - +-------------+----------------+--------------| - 1 Base | 0* | 10.0* | (10.0) | (curve1) - Layer2 | 5.0 | 5.0 | 5.0 | - +-------------+----------------+--------------| - 2 Base | 0* | 3.3* | 6.66* | (curve2) - Layer2 | 0.0 | 0.0 | 0.0 | - +-------------+----------------+--------------| - - * key (or property, if not animated) value multiplied by the weight. - () same as value at time 1 since there is no key here. - - therefore, considering that the second animation layer's blend mode is set - to additive, the evaluated values for v at 0, 1 and 2 seconds are: - - time | 0 | 1 | 2 | - v +-------------+----------------+--------------| - 0 | 3.33 | 4.43 | 7.76 | - 1 | 5.0 | 15.00 | 15.00 | - 2 | 0.0 | 3.33 | 6.66 | - +-------------+----------------+--------------| - */ - return true; -} - diff --git a/sdk/Windows/2019.2/samples/Audio/CMakeLists.txt b/sdk/Windows/2019.2/samples/Audio/CMakeLists.txt deleted file mode 100755 index 22ca595..0000000 --- a/sdk/Windows/2019.2/samples/Audio/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Audio .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio1.mp3" "${FBX_BUILD_ROOT}/audio1.mp3" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Audio/audio2.wav" "${FBX_BUILD_ROOT}/audio2.wav" -) - -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Windows/2019.2/samples/Audio/audio1.mp3 b/sdk/Windows/2019.2/samples/Audio/audio1.mp3 deleted file mode 100755 index f50ed8f..0000000 Binary files a/sdk/Windows/2019.2/samples/Audio/audio1.mp3 and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/Audio/audio2.wav b/sdk/Windows/2019.2/samples/Audio/audio2.wav deleted file mode 100755 index b04b59d..0000000 Binary files a/sdk/Windows/2019.2/samples/Audio/audio2.wav and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/Audio/main.cxx b/sdk/Windows/2019.2/samples/Audio/main.cxx deleted file mode 100755 index d55bede..0000000 --- a/sdk/Windows/2019.2/samples/Audio/main.cxx +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2016 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates the use of audio tracks and audio clips. -// -// 1. Create a stack. -// 2. Add the mandatory animation base layer. -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - if( !CreateScene(lSdkManager, lScene) ) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, false); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, true); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Create one animation stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Take 001"); - - // this stack animation range is limited from 0 to 10 second - lAnimStack->LocalStop = FBXSDK_TIME_ONE_SECOND * 10; - lAnimStack->Description = "This is the animation stack description field."; - - // all animation stacks need, at least, one animation layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); // the AnimLayer object name is "Base Layer" - lAnimStack->AddMember(lAnimLayer); // add the layer to the stack - - // Now, we create two audio tracks - FbxAudioLayer* lAudioTrack1 = FbxAudioLayer::Create(pScene, "AudioTrack0"); - lAnimStack->AddMember(lAudioTrack1); - FbxAudioLayer* lAudioTrack2 = FbxAudioLayer::Create(pScene, "AudioTrack1"); - lAnimStack->AddMember(lAudioTrack2); - lAudioTrack2->Solo = true; - - // Add a second animation layer - FbxAnimLayer* lAnimLayer1 = FbxAnimLayer::Create(pScene, "Layer1"); - lAnimStack->AddMember(lAnimLayer1); - - /* At this point the FbxAnimStack object has the following members: - GetMember(0) = lAnimLayer - GetMember(1) = lAudioTrack1 - GetMember(2) = lAudioTrack2 - GetMember(3) = lAnimLayer1 - */ - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(2) == lAudioTrack2); - FBX_ASSERT(lAnimStack->GetMember(3) == lAnimLayer1); - - FBX_ASSERT(lAnimStack->GetMember(0) == lAnimLayer); - FBX_ASSERT(lAnimStack->GetMember(1) == lAnimLayer1); - FBX_ASSERT(lAnimStack->GetMember(0) == lAudioTrack1); - FBX_ASSERT(lAnimStack->GetMember(1) == lAudioTrack2); - - // Create the audio clips - FbxTime t; - FbxAudio* lAudio1 = FbxAudio::Create(pScene, "Clip1"); - lAudio1->SetFileName("audio2.wav"); - lAudio1->BitRate = 176000; - lAudio1->Channels = 1; - lAudio1->SampleRate = 22050; - t.SetMilliSeconds(500); - lAudio1->Duration = t; - lAudio1->ClipIn = FBXSDK_TIME_ONE_SECOND * 25; - lAudio1->ClipOut = FBXSDK_TIME_ONE_SECOND * 40; - - FbxAudio* lAudio2 = FbxAudio::Create(pScene, "Clip2"); - lAudio2->SetFileName("audio1.mp3"); - lAudio2->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio2->Channels = 1; - lAudio2->BitRate = 64000; - lAudio2->SampleRate = 22050; - lAudio2->ClipIn = 0; - lAudio2->ClipOut = FBXSDK_TIME_ONE_SECOND; - - FbxAudio* lAudio3 = FbxAudio::Create(pScene, "Clip3"); - lAudio3->SetFileName("audio1.mp3"); // same file as Clip2 thus, same attributes - lAudio3->Duration = FBXSDK_TIME_ONE_SECOND; - lAudio3->Channels = 1; - lAudio3->BitRate = 64000; - lAudio3->SampleRate = 22050; - lAudio3->ClipIn = FBXSDK_TIME_ONE_SECOND*5; - lAudio3->ClipOut = FBXSDK_TIME_ONE_SECOND*10; - t.SetMilliSeconds(333); - lAudio3->Offset = t; - - // Attach the audio clips to the audio tracks - lAudioTrack1->AddMember(lAudio1); - - lAudioTrack2->AddMember(lAudio1); - lAudioTrack2->AddMember(lAudio2); - lAudioTrack2->AddMember(lAudio3); - - // animate the volume on the audio clip 2 - // animate the volume on the audio clip 2 - lAudio2->Volume().Set(-3.0); - FbxAnimCurve* lVolCurve = lAudio2->Volume().GetCurve(lAnimLayer, true); - if (lVolCurve) - { - FbxTime lTime; - FbxAnimCurveKey key; - - // add two keys at time 0 sec and 1 sec with values 0 and 100 respectively. - lVolCurve->KeyModifyBegin(); - for (int i = 0; i < 2; i++) - { - lTime.SetSecondDouble((float)i); - key.Set(lTime, (1-i)*1.0f); - lVolCurve->KeyAdd(lTime, key); - } - lVolCurve->KeyModifyEnd(); - } - - return true; -} - diff --git a/sdk/Windows/2019.2/samples/CMakeSettings.txt b/sdk/Windows/2019.2/samples/CMakeSettings.txt deleted file mode 100755 index 1750f93..0000000 --- a/sdk/Windows/2019.2/samples/CMakeSettings.txt +++ /dev/null @@ -1,266 +0,0 @@ -# =================================================================================== -# -# PRE-REQUISITES -# -# =================================================================================== - -STRING(REGEX REPLACE "/[^/]*$" "" FBX_CMAKE_ROOT "${CMAKE_CURRENT_LIST_FILE}") -GET_FILENAME_COMPONENT(FBX_ROOT "${FBX_CMAKE_ROOT}/.." ABSOLUTE) -STRING(REGEX MATCH "[^/]+$" FBX_CMAKE_OUTPUT_FOLDER "${CMAKE_CURRENT_BINARY_DIR}") - -SET(FBX_CMAKELIST_DEPENDENT) -IF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - SET(FBX_CMAKELIST_DEPENDENT "CMakeLists.txt") -ENDIF(WIN32 AND CMAKE_SUPPRESS_REGENERATION) - -IF (NOT WIN32 AND NOT APPLE) - # assume we are on Linux - SET(LINUX 1) -ENDIF() - -# =================================================================================== -# -# MACROS SECTION -# -# =================================================================================== - -MACRO(SETPOLICY policy state) - if(POLICY ${policy}) - cmake_policy(SET ${policy} ${state}) - endif() -ENDMACRO(SETPOLICY policy state) - - -MACRO(SET_SAMPLES_GLOBAL_FLAGS) - SET(FBX_TMP_TARGET_LIBS ${FBX_REQUIRED_LIBS_DEPENDENCY}) - IF(NOT WIN32) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} dl pthread) - IF(APPLE) - IF(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework Carbon -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ELSE(NOT FBX_CLANG) - SET(FBX_LINKER_FLAGS "-framework CoreFoundation -framework SystemConfiguration ${FBX_LINKER_FLAGS}") - ENDIF(NOT FBX_CLANG) - SET(FBX_TMP_TARGET_LIBS ${FBX_TMP_TARGET_LIBS} iconv) - ELSEIF(LINUX) - SET(FBX_LINKER_FLAGS ${FBX_LINKER_FLAGS} "-Wl,-rpath,${FBX_BUILD_ROOT}") - ENDIF() - IF(FBX_LINKER_FLAGS) - SET_TARGET_PROPERTIES(${FBX_TARGET_NAME} PROPERTIES LINK_FLAGS ${FBX_LINKER_FLAGS}) - ENDIF() - ENDIF(NOT WIN32) - - INCLUDE_DIRECTORIES(BEFORE "${FBX_ROOT}/include") - INCLUDE_DIRECTORIES(AFTER "${FBX_CMAKE_ROOT}/Common") - - IF(WIN32) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4 ${FBX_CC_RTLd}") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${FBX_CC_RTL}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${FBX_CC_RTL}") - ELSE(WIN32) - SET(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - IF(FBX_ARCH STREQUAL "x64") - SET(CMAKE_CXX_FLAGS "-m64 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m64 ${CMAKE_C_FLAGS}") - ELSEIF(FBX_ARCH STREQUAL "x86") - SET(CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}") - ENDIF() - IF (FBX_DEBUG) - SET(CMAKE_CXX_FLAGS "-D_DEBUG -g ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_DEBUG -g ${CMAKE_C_FLAGS}") - ELSE() - SET(CMAKE_CXX_FLAGS "-D_NDEBUG -Os ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-D_NDEBUG -Os ${CMAKE_C_FLAGS}") - ENDIF() - - IF(APPLE) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") - ENDIF(APPLE) - ENDIF(WIN32) - - IF(FBX_SHARED) - ADD_DEFINITIONS(-DFBXSDK_SHARED) - IF(WIN32) - STRING(REGEX REPLACE "\\.lib" ".dll" DLL_FILE "${FBX_REQUIRED_LIBS_DEPENDENCY}") - ADD_CUSTOM_COMMAND(TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${DLL_FILE} - $) - ENDIF() - - # copy the fbxsdk dynamic library to the output directory - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FBX_SDK_ABS} ${FBX_BUILD_ROOT}/${FBX_SDK} - ) - ENDIF(FBX_SHARED) - - TARGET_LINK_LIBRARIES(${FBX_TARGET_NAME} ${FBX_TMP_TARGET_LIBS}) - SET(FBX_TMP_TARGET_LIBS) -ENDMACRO(SET_SAMPLES_GLOBAL_FLAGS) - - -MACRO(FBX_PROJECT project subdir) - SET(FBX_PROJECT_NAME ${project}) - SET(FBX_TARGET_NAME ${project}) - SET(FBX_PROJECT_SUBDIR ${subdir} ) - - SET(TMP_COMPILER ${FBX_COMPILER}) - IF(FBX_RTL_SUFFX) - SET(TMP_COMPILER ${FBX_COMPILER}${FBX_RTL_SUFFX}) - ENDIF() - IF(NOT WIN32) - IF (NOT FBX_SHARED) - SET(TMP_COMPILER ${FBX_COMPILER}-static) - ENDIF() - ENDIF() - - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}") #${CMAKE_CFG_INTDIR} is automatically added by CMake - ELSEIF(LINUX OR APPLE) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${FBX_ARCH}/${TMP_COMPILER}/${FBX_VARIANT}") - ELSE() - MESSAGE(FATAL_ERROR "Unsupported platform.") - RETURN() - ENDIF() - - PROJECT(${project} ${ARGN}) - SET(PROJECT_BINARY_DIR "${FBX_BUILD_ROOT}") - SET(EXECUTABLE_OUTPUT_PATH "${FBX_BUILD_ROOT}") - SET(LIBRARY_OUTPUT_PATH "${FBX_BUILD_ROOT}") - - # Put the Variant part back into FBX_BUILD_ROOT - IF (WIN32) - SET(FBX_BUILD_ROOT "${FBX_ROOT}/bin/${TMP_COMPILER}/${CMAKE_CFG_INTDIR}") - ENDIF() -ENDMACRO(FBX_PROJECT project subdir) - - -# =================================================================================== -# -# COMMON SECTION -# -# =================================================================================== -IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER ${CMAKE_MIN_REQ_VERSION}) - IF (${CMAKE_MAJOR_VERSION} LESS 3) - SETPOLICY(CMP0005 OLD) - SETPOLICY(CMP0003 OLD) - SETPOLICY(CMP0011 OLD) - ELSE() - SETPOLICY(CMP0003 NEW) - SETPOLICY(CMP0011 NEW) - ENDIF() - SETPOLICY(CMP0042 OLD) - SETPOLICY(CMP0045 OLD) -ENDIF() - -SET(FBX_SHARED) # can be set at command line with -DFBX_SHARED=1 -SET(FBX_STATIC_RTL) # can be set at command line with -DFBX_STATIC_RTL=1 (use static MSVCRT (/MT), otherwise use dynamic MSVCRT (/MD)) -SET(FBX_VARIANT) # can be set at command line with -DFBX_VARIANT=debug or release (Unix only) -SET(FBX_ARCH) # can be set at command line with -DFBX_ARCH=x64 or x86 (Unix only) -SET(FBX_LINKER_FLAGS) - -IF (FBX_SHARED AND FBX_STATIC_RTL) - SET(FBX_STATIC_RTL) - MESSAGE("\nBoth FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only.") -ENDIF() - -IF(NOT FBX_VARIANT) - SET(FBX_VARIANT "debug") -ENDIF() - -SET(FBX_DEBUG) -IF (FBX_VARIANT MATCHES "debug") - SET(FBX_DEBUG 1) -ENDIF() - -IF(NOT FBX_ARCH) - SET(FBX_ARCH "x64") - IF(WIN32 AND NOT CMAKE_CL_64) - SET(FBX_ARCH "x86") - ENDIF() -ENDIF() - -IF(WIN32) - SET(CMAKE_USE_RELATIVE_PATHS 1) - SET(LIB_EXTENSION ".lib") -ELSE(WIN32) - SET(LIB_EXTENSION ".a") - IF(FBX_SHARED) - IF(APPLE) - SET(LIB_EXTENSION ".dylib") - ELSEIF(LINUX) - SET(LIB_EXTENSION ".so") - ENDIF() - ENDIF() -ENDIF(WIN32) - -SET(FBX_SDK libfbxsdk${LIB_EXTENSION}) -IF(WIN32) - IF(CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo) - set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configurations to what we need" FORCE) - ENDIF() - - SET(FBX_VARIANT "$(Configuration)") - IF(MSVC_VERSION EQUAL 1700) - SET(FBX_COMPILER "vs2012") - ELSEIF(MSVC_VERSION EQUAL 1800) - SET(FBX_COMPILER "vs2013") - ELSEIF(MSVC_VERSION EQUAL 1900) - SET(FBX_COMPILER "vs2015") - ELSEIF(MSVC_VERSION EQUAL 1911) - SET(FBX_COMPILER "vs2017") - ENDIF() - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_SDK_ABS ${FBX_TARGET_LIBS_PATH}/${FBX_SDK}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS}) - IF(NOT FBX_SHARED) - IF(FBX_STATIC_RTL) - SET(FBX_CC_RTL "/MT") - SET(FBX_CC_RTLd "/MTd") - SET(FBX_RTL_SUFFX "-mt") - ELSE() - SET(FBX_CC_RTL "/MD") - SET(FBX_CC_RTLd "/MDd") - SET(FBX_RTL_SUFFX "-md") - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY - ${FBX_TARGET_LIBS_PATH}/libfbxsdk${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/libxml2${FBX_RTL_SUFFX}${LIB_EXTENSION} - ${FBX_TARGET_LIBS_PATH}/zlib${FBX_RTL_SUFFX}${LIB_EXTENSION}) - ENDIF() -ELSE() - MESSAGE("Detecting compiler version used") - EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) - IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - MESSAGE("Detected Clang ${CMAKE_CXX_COMPILER_VERSION}") - SET(FBX_COMPILER "clang") - SET(FBX_CLANG 1) - ELSE() - SET(FBX_COMPILER "gcc") - IF(CMAKE_CXX_COMPILER_VERSION MATCHES " [4-9]\\.[0-9].*") - MESSAGE( "Detected GCC >= 4.0" ) - ELSE() - MESSAGE(FATAL_ERROR "Detected " ${GCC_PREFIX} " only GCC 4.x and higher supported") - ENDIF() - ENDIF() - - IF(APPLE) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_VARIANT}") - IF(FBX_COMPILER STREQUAL "gcc") - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/ub/${FBX_VARIANT}") - ENDIF() - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ELSEIF(LINUX) - SET(FBX_TARGET_LIBS_PATH "${FBX_ROOT}/lib/${FBX_COMPILER}/${FBX_ARCH}/${FBX_VARIANT}") - SET(FBX_EXTRA_LIBS_PATH ${FBX_TARGET_LIBS_PATH}/lib) - ENDIF() - SET(FBX_SDK_ABS ${FBX_EXTRA_LIBS_PATH}fbxsdk${LIB_EXTENSION}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_SDK_ABS} z xml2) -ENDIF() \ No newline at end of file diff --git a/sdk/Windows/2019.2/samples/Camera/CMakeLists.txt b/sdk/Windows/2019.2/samples/Camera/CMakeLists.txt deleted file mode 100755 index 2356cdd..0000000 --- a/sdk/Windows/2019.2/samples/Camera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Camera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Camera/Camera.fbx" "${FBX_BUILD_ROOT}/Camera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/Camera/Camera.fbx b/sdk/Windows/2019.2/samples/Camera/Camera.fbx deleted file mode 100755 index 361bda7..0000000 --- a/sdk/Windows/2019.2/samples/Camera/Camera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4c6de8e9b23c05bd0bd2c227e9d817deb30efea5779db5afe03752a2869e2cd -size 23180 diff --git a/sdk/Windows/2019.2/samples/Camera/main.cxx b/sdk/Windows/2019.2/samples/Camera/main.cxx deleted file mode 100755 index 278800c..0000000 --- a/sdk/Windows/2019.2/samples/Camera/main.cxx +++ /dev/null @@ -1,593 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) Get a camera from a scene. -// 2) Inspect the camera attributes and show them. -// 3) Create my own camera. -// 4) Inspect the camera attributes and show them. -// 5) Modify the new camera aspect. -// 6) Inspect the camera attributes and show them. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene from the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get camera from node attribute type. -// 6. Inspect the camera attributes and show the result. -// 7. Create camera using NTSC format. -// 8. Inspect the camera attributes and show the result. -// 9. Reset the new camera's aspect attributes with NTSC standard. -// 10. Inspect the camera attributes and show the result. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Camera.fbx" - -#define GET_MAX(a, b) (a) < (b) ? (b) : (a) - -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio); - -void DisplayCameraInfo(FbxNode* pNode); - -FbxCamera* CreateMyCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if( lScene) - { - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - //This function illustrates how to get camera info from scene. - if( gVerbose ) DisplayCameraInfo(lRootNode); - - //create my own camera set - FbxCamera* lMyCamera = CreateMyCamera(lScene); - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - //modify the camera's aspect attributes - lMyCamera->SetAspect( FbxCamera::eFixedResolution, 640, 480); - //Though we set the aspect attributes according to the NTSC standard, camera format is modified as eCUSTOM_FORMAT. - FBXSDK_printf("\n\rInspect camera's attributes from the scene...\n"); - if( gVerbose ) DisplayCameraInfo(lRootNode); - } - else - { - FBXSDK_printf("\n\nNull scene...\n"); - } - - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get camera info from scene. -void DisplayCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //get camera - FbxCamera* lCamera = pNode->GetCamera(); - - if( lCamera != NULL) - { - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - //get camera's information - - double lResolutionHeight = 0.0; - double lResolutionWidth = 0.0; - //get camera format - FbxCamera::EFormat lCameraFormat = lCamera->GetFormat(); - //camera using specific format has a given resolution(aspect) width and height. - /* - resolution width resolution height - eD1_NTSC 720 486 - eNTSC 640 480 - ePAL 570 486 - eD1_PAL 720 576 - eHD 1980 1080 - e640x480 640 480 - e320x200 320 200 - e320x240 320 240 - e128x128 128 128 - eFULL_SCREEN 1280 1024 - */ - switch( lCameraFormat) - { - case FbxCamera::eCustomFormat: - FBXSDK_printf( "Camera format is customized.\n"); - break; - case FbxCamera::eNTSC: - FBXSDK_printf( "Camera format is NTSC.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::eD1NTSC: - FBXSDK_printf( "Camera format is D1 NTSC.\n"); - lResolutionWidth = 720; - lResolutionHeight = 486; - break; - case FbxCamera::ePAL: - FBXSDK_printf( "Camera format is PAL.\n"); - lResolutionWidth = 570; - lResolutionHeight = 486; - break; - case FbxCamera::eD1PAL: - FBXSDK_printf( "Camera format is D1 PAL.\n"); - lResolutionWidth = 720; - lResolutionHeight = 576; - break; - case FbxCamera::eHD: - FBXSDK_printf( "Camera format is HD.\n"); - lResolutionWidth = 1980; - lResolutionHeight = 1080; - break; - case FbxCamera::e640x480: - FBXSDK_printf( "Camera format is 640x480.\n"); - lResolutionWidth = 640; - lResolutionHeight = 480; - break; - case FbxCamera::e320x200: - FBXSDK_printf( "Camera format is 320x200.\n"); - lResolutionWidth = 320; - lResolutionHeight = 200; - break; - case FbxCamera::e320x240: - FBXSDK_printf( "Camera format is 320x240.\n"); - lResolutionWidth = 320; - lResolutionHeight = 240; - break; - case FbxCamera::e128x128: - FBXSDK_printf( "Camera format is 128x128.\n"); - lResolutionWidth = 128; - lResolutionHeight = 128; - break; - case FbxCamera::eFullscreen: - FBXSDK_printf( "Camera format is full screen.\n"); - lResolutionWidth = 1280; - lResolutionHeight = 1024; - break; - default: - FBXSDK_printf( "Unknown camera format.\n"); - break; - } - - //get camera's inherent properties - { - //get aspect height - double lAspectHeight = lCamera->AspectHeight.Get(); - //get aspect width - double lAspectWidth = lCamera->AspectWidth.Get(); - //get aspect ratio - double lPixeltRatio = lCamera->GetPixelRatio(); - //verify the pixel ratio - double lScreenRatio = 4 / 3; // default screen ratio is 4 : 3; - if( lCamera->GetFormat() == FbxCamera::eHD) - { - lScreenRatio = 16 / 9; // in HD mode, screen ratio is 16 : 9; - } - double lInspectedPixelRatio = ComputePixelRatio( lResolutionWidth, lResolutionHeight, lScreenRatio); - if( lPixeltRatio != lInspectedPixelRatio) - { - FBXSDK_printf( "Camera pixel ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lPixeltRatio, lInspectedPixelRatio); - lCamera->PixelAspectRatio.Set( lInspectedPixelRatio); - lPixeltRatio = lInspectedPixelRatio; - } - else - { - FBXSDK_printf( "camera pixel ratio is %lf.\n", lPixeltRatio); - } - //get aspect ratio mode - /* - If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - If the ratio mode is eFIXED_RATIO, the height value is set to 1.0 and the width value is relative to the height value. - If the ratio mode is eFIXED_RESOLUTION, both width and height values are in pixels. - If the ratio mode is eFIXED_WIDTH, the width value is in pixels and the height value is relative to the width value. - If the ratio mode is eFIXED_HEIGHT, the height value is in pixels and the width value is relative to the height value. - */ - FbxCamera::EAspectRatioMode lCameraAspectRatioMode = lCamera->GetAspectRatioMode(); - switch( lCameraAspectRatioMode) - { - case FbxCamera::eWindowSize: - FBXSDK_printf( "Camera aspect ratio mode is window size.\n"); - break; - case FbxCamera::eFixedRatio: - FBXSDK_printf( "Camera aspect ratio mode is fixed ratio.\n"); - break; - case FbxCamera::eFixedResolution: - FBXSDK_printf( "Camera aspect ratio mode is fixed resolution.\n"); - break; - case FbxCamera::eFixedWidth: - FBXSDK_printf( "Camera aspect ratio mode is fixed width.\n"); - break; - case FbxCamera::eFixedHeight: - FBXSDK_printf( "Camera aspect ratio mode is fixed height.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aspect ratio mode.\n"); - break; - - } - //inspect the aspect width and height - if( lCameraFormat != FbxCamera::eCustomFormat && lCameraAspectRatioMode != FbxCamera::eWindowSize) - { - double lInspectedAspectHeight = 0.0; - double lInspectedAspectWidth = 0.0; - switch( lCameraAspectRatioMode) - { - default: - break; - case FbxCamera::eFixedRatio: - if( lAspectHeight != 1.0) - { - FBXSDK_printf( "Camera aspect height should be 1.0 in fixed ratio mode.\n\rRevise the height: %lf to 1.0.\n\n", lAspectHeight); - lCamera->AspectHeight.Set( 1.0); - lAspectHeight = 1.0; - } - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight * lPixeltRatio; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectWidth.Set( lInspectedAspectWidth); - lAspectWidth = lInspectedAspectWidth; - } - break; - case FbxCamera::eFixedResolution: - if( lAspectWidth != lResolutionWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lResolutionWidth); - lCamera->AspectWidth.Set( lResolutionWidth); - lAspectWidth = lResolutionWidth; - } - if( lAspectHeight != lResolutionHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lResolutionHeight); - lCamera->AspectHeight.Set( lResolutionHeight); - lAspectHeight = lResolutionHeight; - } - break; - case FbxCamera::eFixedWidth: - lInspectedAspectHeight = lResolutionHeight / lResolutionWidth; - if( lAspectHeight != lInspectedAspectHeight) - { - FBXSDK_printf( "Camera aspect height is not right.\n\rRevise the height: %lf to %lf.\n\n", lAspectHeight, lInspectedAspectHeight); - lCamera->AspectHeight.Set( lInspectedAspectHeight); - lAspectHeight = lInspectedAspectHeight; - } - break; - case FbxCamera::eFixedHeight: - lInspectedAspectWidth = lResolutionWidth / lResolutionHeight; - if( lAspectWidth != lInspectedAspectWidth) - { - FBXSDK_printf( "Camera aspect width is not right.\n\rRevise the width: %lf to %lf.\n\n", lAspectWidth, lInspectedAspectWidth); - lCamera->AspectHeight.Set( lInspectedAspectWidth); - lAspectHeight = lInspectedAspectWidth; - } - break; - - } - } - FBXSDK_printf( "Camera aspect width: %lf .\n Camera aspect height: %lf .\n", lAspectWidth, lAspectHeight); - - //inspect aperture width and height - double lInspectedApertureHeight = 0.0; - double lInspectedApertureWidth = 0.0; - //get camera's aperture format - FbxCamera::EApertureFormat lApertureFormat = lCamera->GetApertureFormat(); - //camera using specific aperture format has a given aperture width and height. - /* - aperture width aperture width aperture height (unit: inch) - e16MM_THEATRICAL 0.4040 0.2950 - eSUPER_16MM 0.4930 0.2920 - e35MM_ACADEMY 0.8640 0.6300 - e35MM_TV_PROJECTION 0.8160 0.6120 - e35MM_FULL_APERTURE 0.9800 0.7350 - e35MM_185_PROJECTION 0.8250 0.4460 - e35MM_ANAMORPHIC 0.8640 0.7320 - e70MM_PROJECTION 2.0660 0.9060 - eVISTAVISION 1.4850 0.9910 - eDYNAVISION 2.0800 1.4800 - eIMAX 2.7720 2.0720 - */ - switch( lApertureFormat) - { - case FbxCamera::eCustomAperture: - FBXSDK_printf( "Camera aperture format is customized.\n"); - break; - case FbxCamera::e16mmTheatrical: - FBXSDK_printf( "Camera aperture format is 16mm theatrical.\n"); - lInspectedApertureWidth = 0.4040; - lInspectedApertureHeight = 0.2950; - break; - case FbxCamera::eSuper16mm: - FBXSDK_printf( "Camera aperture format is super 16mm.\n"); - lInspectedApertureWidth = 0.4930; - lInspectedApertureHeight = 0.2920; - break; - case FbxCamera::e35mmAcademy: - FBXSDK_printf( "Camera aperture format is 35mm academy.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.6300; - break; - case FbxCamera::e35mmTVProjection: - FBXSDK_printf( "Camera aperture format is 35mm TV projection.\n"); - lInspectedApertureWidth = 0.8160; - lInspectedApertureHeight = 0.6120; - break; - case FbxCamera::e35mmFullAperture: - FBXSDK_printf( "Camera aperture format is 35mm full projection.\n"); - lInspectedApertureWidth = 0.9800; - lInspectedApertureHeight = 0.7350; - break; - case FbxCamera::e35mm185Projection: - FBXSDK_printf( "Camera aperture format is 35mm 185 projection.\n"); - lInspectedApertureWidth = 0.8250; - lInspectedApertureHeight = 0.4460; - break; - case FbxCamera::e35mmAnamorphic: - FBXSDK_printf( "Camera aperture format is 35mm anamorphic.\n"); - lInspectedApertureWidth = 0.8640; - lInspectedApertureHeight = 0.7320; - break; - case FbxCamera::e70mmProjection: - FBXSDK_printf( "Camera aperture format is 70mm projection.\n"); - lInspectedApertureWidth = 2.0660; - lInspectedApertureHeight = 0.9060; - break; - case FbxCamera::eVistaVision: - FBXSDK_printf( "Camera aperture format is vistavision.\n"); - lInspectedApertureWidth = 1.4850; - lInspectedApertureHeight = 0.9910; - break; - case FbxCamera::eDynaVision: - FBXSDK_printf( "Camera aperture format is dynavision.\n"); - lInspectedApertureWidth = 2.0800; - lInspectedApertureHeight = 1.4800; - break; - case FbxCamera::eIMAX: - FBXSDK_printf( "Camera aperture format is imax.\n"); - lInspectedApertureWidth = 2.7720; - lInspectedApertureHeight = 2.0720; - break; - default: - FBXSDK_printf( "Unknown camera aperture format.\n"); - break; - } - - //get camera's aperture mode - FbxCamera::EApertureMode lApertureMode = lCamera->GetApertureMode(); - /* - Camera aperture modes. The aperture mode determines which values drive the camera aperture. - If the aperture mode is eHORIZONTAL_AND_VERTICAL, then the FOVX and FOVY is used. - If the aperture mode is eHORIZONTAL or eVERTICAL, then the FOV is used. - if the aperture mode is eFOCAL_LENGTH, then the focal length is used. - */ - switch( lApertureMode) - { - //fit the resolution gate within the film gate - case FbxCamera::eHorizAndVert: - FBXSDK_printf( "Camera aperture mode is horizontal and vertical.\n"); - break; - //fit the resolution gate horizontally within the film gate - case FbxCamera::eHorizontal: - FBXSDK_printf( "Camera aperture mode is horizontal.\n"); - break; - //fit the resolution gate vertically within the film gate - case FbxCamera::eVertical: - FBXSDK_printf( "Camera aperture mode is vertical.\n"); - break; - //fit the resolution gate according to the focal length - case FbxCamera::eFocalLength: - FBXSDK_printf( "Camera aperture mode is focal length.\n"); - break; - default: - FBXSDK_printf( "Unknown camera aperture mode.\n"); - break; - - } - //get camera's aperture height. - double lApertureHeight = lCamera->GetApertureHeight(); - //get camera's aperture width. - double lApertureWidth = lCamera->GetApertureWidth(); - //get camera's aperture ratio. - double lApertureRatio = lCamera->FilmAspectRatio.Get(); - if( lApertureFormat != FbxCamera::eCustomAperture) - { - //inspect aperture width. - if( lApertureWidth != lInspectedApertureWidth) - { - FBXSDK_printf( "Camera aperture width is not right.\n\rRevise the width: %lf inches to %lf inches.\n\n", lApertureWidth, lInspectedApertureWidth); - lCamera->FilmWidth.Set( lInspectedApertureWidth); - lApertureWidth = lInspectedApertureWidth; - } - //inspect aperture height - if( lApertureHeight != lInspectedApertureHeight) - { - FBXSDK_printf( "Camera aperture height is not right.\n\rRevise the height: %lf inches to %lf inches.\n\n", lApertureHeight, lInspectedApertureHeight); - lCamera->FilmHeight.Set( lInspectedApertureHeight); - lApertureHeight = lInspectedApertureHeight; - } - //inspect aperture ratio. - double lInspectedApertureRatio = lApertureWidth / lApertureHeight; - if( lApertureRatio != lInspectedApertureRatio) - { - FBXSDK_printf( "Camera aperture ratio is not right.\n\rRevise the ratio: %lf to %lf.\n\n", lApertureRatio, lInspectedApertureRatio); - lCamera->FilmAspectRatio.Set( lInspectedApertureRatio); - lApertureRatio = lInspectedApertureRatio; - } - } - - FBXSDK_printf( "Camera aperture width: %lf inches.\n\rCamera aperture height: %lf inches.\n", lApertureWidth, lApertureHeight); - FBXSDK_printf( "Camera aperture ratio is %lf.\n\n", lApertureRatio); - - - //get focal length - double lFocalLength = lCamera->FocalLength.Get(); - //get FOV - double lFocalAngle = lCamera->FieldOfView.Get(); - //get squeeze ratio - double lFilmSqueezeRatio = lCamera->GetSqueezeRatio(); - if( lApertureMode == FbxCamera::eHorizAndVert) - { - //compute the focal length using FOVX. - double lFocalAngleX = lCamera->FieldOfViewX.Get();//horizontal fov - double lFocalAngleY = lCamera->FieldOfViewY.Get();//vertical fov - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngleX); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera horizontal FOV: %lf.\n\rCamera vertical FOV: %lf.\n ", lFocalAngleX, lFocalAngleY); - } - else if( lApertureMode == FbxCamera::eFocalLength) - { - //compute the FOV using focal length - double lComputedFOV = lCamera->ComputeFieldOfView( lFocalLength); - if( lFocalAngle != lComputedFOV) - { - FBXSDK_printf( "Camera FOV is not right.\n\rRevise the FOV: %lf degrees to %lf degrees.\n\n", lFocalAngle, lComputedFOV); - lCamera->FieldOfView.Set( lComputedFOV); - lFocalAngle = lComputedFOV; - } - else - { - FBXSDK_printf( "Camera FOV is %lf degrees.\n", lFocalAngle); - } - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - else - { - //compute the focal length using FOV - double lComputedFocalLength = lCamera->ComputeFocalLength( lFocalAngle); - if( lFocalLength != lComputedFocalLength) - { - FBXSDK_printf( "Camera focal length is not right.\n\rRevise the focal length: %lf mm to %lf mm.\n\n", lFocalLength, lComputedFocalLength); - lCamera->FocalLength.Set( lComputedFocalLength); - lFocalLength = lComputedFocalLength; - } - else - { - FBXSDK_printf( "Camera focal length is %lf mm.\n", lFocalLength); - } - FBXSDK_printf("Camera FOV: %lf.\n", lFocalAngle); - } - FBXSDK_printf( "Camera squeeze ratio is %lf \n", lFilmSqueezeRatio); - - } - FBXSDK_printf( "/*-----------------Camera: %s----------------------*/\n\r", lCamera->GetName()); - } - - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - DisplayCameraInfo(pNode->GetChild(i)); - } -} - -//This function illustrates how to create and connect camera. -FbxCamera* CreateMyCamera(FbxScene* pScene) -{ - if(!pScene) - return NULL; - - //create a fbx node for camera - FbxNode* lMyCameraNode = FbxNode::Create(pScene,"myCameraNode"); - //connect camera node to root node - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->ConnectSrcObject( lMyCameraNode); - //create a cameraStereo, it's a node attribute of camera node. - FbxCamera* lMyCamera = FbxCamera::Create(pScene,"myCamera"); - //set Camera as a node attribute of the FBX node. - lMyCameraNode->SetNodeAttribute (lMyCamera); - //we recommend to use existed format - //set camera format - lMyCamera->SetFormat( FbxCamera::eNTSC); - //set camera aperture format - lMyCamera->SetApertureFormat( FbxCamera::e16mmTheatrical); - //set camera aperture mode - lMyCamera->SetApertureMode(FbxCamera::eVertical); - //set camera FOV - double lFOV = 45; - lMyCamera->FieldOfView.Set( lFOV); - //set camera FOV - double lFocalLength = lMyCamera->ComputeFocalLength( lFOV); - lMyCamera->FocalLength.Set( lFocalLength); - - - - return lMyCamera; - -} - -//This function computes the pixel ratio -double ComputePixelRatio( double pWidth, double pHeight, double pScreenRatio) -{ - if( pWidth < 0.0 || pHeight < 0.0) - return 0.0; - - pWidth = GET_MAX( pWidth, 1.0 ); - pHeight = GET_MAX( pHeight, 1.0 ); - - double lResolutionRatio = (double) pWidth / pHeight; - - return pScreenRatio / lResolutionRatio; -} - - diff --git a/sdk/Windows/2019.2/samples/Common/AnimationUtility.cxx b/sdk/Windows/2019.2/samples/Common/AnimationUtility.cxx deleted file mode 100755 index 1a85209..0000000 --- a/sdk/Windows/2019.2/samples/Common/AnimationUtility.cxx +++ /dev/null @@ -1,27 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "AnimationUtility.h" - -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack) -{ - const char * DEFAULT_STACK_NAME = "Base_Stack"; - const char * DEFAULT_LAYER_NAME = "Base_Layer"; - - // Create one animation stack - pAnimStack = FbxAnimStack::Create(pScene, DEFAULT_STACK_NAME); - - // all animation stacks need, at least, one layer. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, DEFAULT_LAYER_NAME); - pAnimStack->AddMember(lAnimLayer); - - return lAnimLayer; -} diff --git a/sdk/Windows/2019.2/samples/Common/AnimationUtility.h b/sdk/Windows/2019.2/samples/Common/AnimationUtility.h deleted file mode 100755 index 2f15aed..0000000 --- a/sdk/Windows/2019.2/samples/Common/AnimationUtility.h +++ /dev/null @@ -1,24 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_ANIMATION_UTILITY_H_ -#define INCLUDE_ANIMATION_UTILITY_H_ - -#include - -/** Create a default animation stack and a default animation layer for the given scene. - * /param pScene The scene in which the animation stack and layer are created. - * /param pAnimStack The created animation stack. - * /return The created animation layer. - */ -FbxAnimLayer * CreateDefaultAnimStackAndLayer(FbxScene * pScene, FbxAnimStack* &pAnimStack); - -#endif // INCLUDE_ANIMATION_UTILITY_H_ diff --git a/sdk/Windows/2019.2/samples/Common/Common.cxx b/sdk/Windows/2019.2/samples/Common/Common.cxx deleted file mode 100755 index 04715cf..0000000 --- a/sdk/Windows/2019.2/samples/Common/Common.cxx +++ /dev/null @@ -1,244 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "../Common/Common.h" - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); - - //Load plugins from the executable directory (optional) - FbxString lPath = FbxGetApplicationDirectory(); - pManager->LoadPluginsDirectory(lPath.Buffer()); - - //Create an FBX scene. This object holds most objects imported/exported from/to files. - pScene = FbxScene::Create(pManager, "My Scene"); - if( !pScene ) - { - FBXSDK_printf("Error: Unable to create FBX scene!\n"); - exit(1); - } -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat, bool pEmbedMedia) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format in less no ASCII format found - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(EXP_FBX_GOBO, true); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX file format version %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pScene); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename) -{ - int lFileMajor, lFileMinor, lFileRevision; - int lSDKMajor, lSDKMinor, lSDKRevision; - //int lFileFormat = -1; - int lAnimStackCount; - bool lStatus; - char lPassword[1024]; - - // Get the file version number generate by the FBX SDK. - FbxManager::GetFileFormatVersion(lSDKMajor, lSDKMinor, lSDKRevision); - - // Create an importer. - FbxImporter* lImporter = FbxImporter::Create(pManager,""); - - // Initialize the importer by providing a filename. - const bool lImportStatus = lImporter->Initialize(pFilename, -1, pManager->GetIOSettings()); - lImporter->GetFileVersion(lFileMajor, lFileMinor, lFileRevision); - - if( !lImportStatus ) - { - FbxString error = lImporter->GetStatus().GetErrorString(); - FBXSDK_printf("Call to FbxImporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", error.Buffer()); - - if (lImporter->GetStatus().GetCode() == FbxStatus::eInvalidFileVersion) - { - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - } - - return false; - } - - FBXSDK_printf("FBX file format version for this FBX SDK is %d.%d.%d\n", lSDKMajor, lSDKMinor, lSDKRevision); - - if (lImporter->IsFBX()) - { - FBXSDK_printf("FBX file format version for file '%s' is %d.%d.%d\n\n", pFilename, lFileMajor, lFileMinor, lFileRevision); - - // From this point, it is possible to access animation stack information without - // the expense of loading the entire file. - - FBXSDK_printf("Animation Stack Information\n"); - - lAnimStackCount = lImporter->GetAnimStackCount(); - - FBXSDK_printf(" Number of Animation Stacks: %d\n", lAnimStackCount); - FBXSDK_printf(" Current Animation Stack: \"%s\"\n", lImporter->GetActiveAnimStackName().Buffer()); - FBXSDK_printf("\n"); - - for(int i = 0; i < lAnimStackCount; i++) - { - FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(i); - - FBXSDK_printf(" Animation Stack %d\n", i); - FBXSDK_printf(" Name: \"%s\"\n", lTakeInfo->mName.Buffer()); - FBXSDK_printf(" Description: \"%s\"\n", lTakeInfo->mDescription.Buffer()); - - // Change the value of the import name if the animation stack should be imported - // under a different name. - FBXSDK_printf(" Import Name: \"%s\"\n", lTakeInfo->mImportName.Buffer()); - - // Set the value of the import state to false if the animation stack should be not - // be imported. - FBXSDK_printf(" Import State: %s\n", lTakeInfo->mSelect ? "true" : "false"); - FBXSDK_printf("\n"); - } - - // Set the import states. By default, the import states are always set to - // true. The code below shows how to change these states. - IOS_REF.SetBoolProp(IMP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(IMP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(IMP_FBX_LINK, true); - IOS_REF.SetBoolProp(IMP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(IMP_FBX_GOBO, true); - IOS_REF.SetBoolProp(IMP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(IMP_FBX_GLOBAL_SETTINGS, true); - } - - // Import the scene. - lStatus = lImporter->Import(pScene); - if (lStatus == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(pScene), &status, &details); - lStatus = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lStatus == false) - { - if (details.GetCount()) - { - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - } - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("Please enter password: "); - - lPassword[0] = '\0'; - - FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - scanf("%s", lPassword); - FBXSDK_CRT_SECURE_NO_WARNING_END - - FbxString lString(lPassword); - - IOS_REF.SetStringProp(IMP_FBX_PASSWORD, lString); - IOS_REF.SetBoolProp(IMP_FBX_PASSWORD_ENABLE, true); - - lStatus = lImporter->Import(pScene); - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - FBXSDK_printf("\nPassword is wrong, import aborted.\n"); - } - } - - // Destroy the importer. - lImporter->Destroy(); - - return lStatus; -} diff --git a/sdk/Windows/2019.2/samples/Common/Common.h b/sdk/Windows/2019.2/samples/Common/Common.h deleted file mode 100755 index 701453d..0000000 --- a/sdk/Windows/2019.2/samples/Common/Common.h +++ /dev/null @@ -1,25 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ -#ifndef _COMMON_H -#define _COMMON_H - -#include - -void InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene); -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus); -void CreateAndFillIOSettings(FbxManager* pManager); - -bool SaveScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false); -bool LoadScene(FbxManager* pManager, FbxDocument* pScene, const char* pFilename); - -#endif // #ifndef _COMMON_H - - diff --git a/sdk/Windows/2019.2/samples/Common/GeometryUtility.cxx b/sdk/Windows/2019.2/samples/Common/GeometryUtility.cxx deleted file mode 100755 index 9ef5325..0000000 --- a/sdk/Windows/2019.2/samples/Common/GeometryUtility.cxx +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GeometryUtility.h" - -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight) -{ - FbxMesh * lPyramid = FbxMesh::Create(pScene, pName); - - // Calculate the vertices of the pyramid - const double lBottomWidthHalf = pBottomWidth / 2; - const FbxVector4 PyramidControlPointArray[] = - { - FbxVector4(0, pHeight, 0), - FbxVector4(lBottomWidthHalf, 0, lBottomWidthHalf), - FbxVector4(lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, -lBottomWidthHalf), - FbxVector4(-lBottomWidthHalf, 0, lBottomWidthHalf) - }; - - // Initialize and set the control points of the mesh - const int lControlPointCount = sizeof(PyramidControlPointArray) / sizeof(FbxVector4); - lPyramid->InitControlPoints(lControlPointCount); - for (int lIndex = 0; lIndex < lControlPointCount; ++lIndex) - { - lPyramid->SetControlPointAt(PyramidControlPointArray[lIndex], lIndex); - } - - // Set the control point indices of the bottom side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the front side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(1); - lPyramid->AddPolygon(2); - lPyramid->EndPolygon(); - - // Set the control point indices of the left side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(2); - lPyramid->AddPolygon(3); - lPyramid->EndPolygon(); - - // Set the control point indices of the back side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(3); - lPyramid->AddPolygon(4); - lPyramid->EndPolygon(); - - // Set the control point indices of the right side of the pyramid - lPyramid->BeginPolygon(); - lPyramid->AddPolygon(0); - lPyramid->AddPolygon(4); - lPyramid->AddPolygon(1); - lPyramid->EndPolygon(); - - // Attach the mesh to a node - FbxNode * lPyramidNode = FbxNode::Create(pScene, pName); - lPyramidNode->SetNodeAttribute(lPyramid); - - // Set this node as a child of the root node - pScene->GetRootNode()->AddChild(lPyramidNode); - - return lPyramidNode; -} - - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -5.0, 0.0, 5.0, 1.0}, { 5.0, 0.0, 5.0, 1.0}, { 5.0,10.0, 5.0, 1.0}, { -5.0,10.0, 5.0, 1.0}, - { -5.0, 0.0, -5.0, 1.0}, { 5.0, 0.0, -5.0, 1.0}, { 5.0,10.0, -5.0, 1.0}, { -5.0,10.0, -5.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // uvs - static Vector2 lUVs[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eAllSame); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lMaterialElement->GetIndexArray().Add(0); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->LclTranslation.Set(pLclTranslation); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - // create UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV("UVSet1"); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (int i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs[i][0], lUVs[i][1])); - - for (int i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - return lNode; -} - diff --git a/sdk/Windows/2019.2/samples/Common/GeometryUtility.h b/sdk/Windows/2019.2/samples/Common/GeometryUtility.h deleted file mode 100755 index 65b6c6c..0000000 --- a/sdk/Windows/2019.2/samples/Common/GeometryUtility.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef INCLUDE_GEOMETRY_UTILITY_H_ -#define INCLUDE_GEOMETRY_UTILITY_H_ - -#include - -/** Create a pyramid mesh with specific bottom width and height, and attach it to a node. - * /param pScene The scene in which the pyramid mesh is created. - * /param pName The name of the pyramid mesh and the node to which the pyramid is attached. - * /param pBottomWidht The width of the bottom side of the pyramid. - * /param pHeight The height of the pyramid. - * /return Return the node to which the pyramid mesh is attached. - */ -FbxNode * CreatePyramid(FbxScene * pScene, const char * pName, double pBottomWidth, double pHeight); - -FbxNode* CreateCube(FbxScene* pScene, const char* pName, FbxDouble3& pLclTranslation); - -#endif // INCLUDE_GEOMETRY_UTILITY_H_ diff --git a/sdk/Windows/2019.2/samples/ConvertScene/CMakeLists.txt b/sdk/Windows/2019.2/samples/ConvertScene/CMakeLists.txt deleted file mode 100755 index 8a85a7c..0000000 --- a/sdk/Windows/2019.2/samples/ConvertScene/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ConvertScene .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ConvertScene/box.fbx" "${FBX_BUILD_ROOT}/box.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ConvertScene/box.fbx b/sdk/Windows/2019.2/samples/ConvertScene/box.fbx deleted file mode 100755 index d78a3cb..0000000 --- a/sdk/Windows/2019.2/samples/ConvertScene/box.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:862247f82d91dab7a998c6110775eaed0bd7196368e40f3bf6115f9221bf1875 -size 12128 diff --git a/sdk/Windows/2019.2/samples/ConvertScene/main.cxx b/sdk/Windows/2019.2/samples/ConvertScene/main.cxx deleted file mode 100755 index 410f63f..0000000 --- a/sdk/Windows/2019.2/samples/ConvertScene/main.cxx +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This program converts any file in a format supported by the FBX SDK -// into DAE, FBX, 3DS, OBJ and DXF files. -// -// Steps: -// 1. Initialize SDK objects. -// 2. Load a file(fbx, obj,...) to a FBX scene. -// 3. Create a exporter. -// 4. Retrieve the writer ID according to the description of file format. -// 5. Initialize exporter with specified file format -// 6. Export. -// 7. Destroy the exporter -// 8. Destroy the FBX SDK manager -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "box.fbx" - -const char* lFileTypes[] = -{ - "_dae.dae", "Collada DAE (*.dae)", - "_fbx7binary.fbx", "FBX binary (*.fbx)", - "_fbx7ascii.fbx", "FBX ascii (*.fbx)", - "_fbx6binary.fbx", "FBX 6.0 binary (*.fbx)", - "_fbx6ascii.fbx", "FBX 6.0 ascii (*.fbx)", - "_obj.obj", "Alias OBJ (*.obj)", - "_dxf.dxf", "AutoCAD DXF (*.dxf)" -}; - -int main(int argc, char** argv) -{ - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - bool lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - if( lResult ) - { - const size_t lFileNameLength = strlen((argc>=3)?argv[2]:lFilePath.Buffer()); - char* lNewFileName = new char[lFileNameLength+64]; - FBXSDK_strcpy(lNewFileName,lFileNameLength+64,(argc>=3)?argv[2]:lFilePath.Buffer()); - - const size_t lFileTypeCount = sizeof(lFileTypes)/sizeof(lFileTypes[0])/2; - - for(size_t i=0; iGetIOPluginRegistry()->FindWriterIDByDescription(lFileTypes[i*2+1]); - - // Construct the output file name. - FBXSDK_strcpy(lNewFileName+lFileNameLength-4,60, lFileTypes[i*2]); - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - // Initialize the exporter. - lResult = lExporter->Initialize(lNewFileName, lFormat, lSdkManager->GetIOSettings()); - if( !lResult ) - { - FBXSDK_printf("%s:\tCall to FbxExporter::Initialize() failed.\n", lFileTypes[i*2+1]); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - } - else - { - // Export the scene. - lResult = lExporter->Export(lScene); - if( !lResult ) - { - FBXSDK_printf("Call to FbxExporter::Export() failed.\n"); - } - } - - // Destroy the exporter. - lExporter->Destroy(); - } - delete[] lNewFileName; - } - else - { - FBXSDK_printf("Call to LoadScene() failed.\n"); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - diff --git a/sdk/Windows/2019.2/samples/ExportDocument/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportDocument/CMakeLists.txt deleted file mode 100755 index f873b48..0000000 --- a/sdk/Windows/2019.2/samples/ExportDocument/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportDocument .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportDocument/main.cxx b/sdk/Windows/2019.2/samples/ExportDocument/main.cxx deleted file mode 100755 index c332e6c..0000000 --- a/sdk/Windows/2019.2/samples/ExportDocument/main.cxx +++ /dev/null @@ -1,494 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The document created in this example is a container for objects. -// The document includes two sub-documents to contain materials and lights separately. -// -// The example illustrates how to: -// 1) create document and export -// 2) create objects that connect to document directly -// 3) create sub-document -// 4) create materials and textures, connect texture to material -// 5) create lights -// 6) export a document in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pManager->GetIOSettings())) -#endif - -#define SAMPLE_FILENAME "ExportDocument.fbx" - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument); -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument); -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument); -FbxNode* CreatePlane(FbxManager* pManager, const char* pName); -FbxSurfacePhong* CreateMaterial(FbxManager* pManager); -FbxTexture* CreateTexture(FbxManager* pManager); -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType); - - -void InitializeSdkObjects(FbxManager*& pManager) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -// Export document, the format is ascii by default -bool SaveDocument(FbxManager* pManager, FbxDocument* pDocument, const char* pFilename, int pFileFormat=-1, bool pEmbedMedia=false) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format if pEmbedMedia is true - pFileFormat = pManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - if (!pEmbedMedia) - { - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - const char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - FBXSDK_printf("FBX version number for this version of the FBX SDK is %d.%d.%d\n\n", lMajor, lMinor, lRevision); - - // Export the scene. - lStatus = lExporter->Export(pDocument); - - // Destroy the exporter. - lExporter->Destroy(); - return lStatus; -} - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxDocument* lDocument = NULL; - bool lResult = false; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager); - - // create the main document - lDocument = FbxDocument::Create(lSdkManager, "RootDoc"); - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - // Create the scene. - lResult = CreateDocument(lSdkManager, lDocument); - if( lResult ) - { - //Save the document - lResult = SaveDocument(lSdkManager, lDocument, lSampleFileName); - if( !lResult ) FBXSDK_printf("\n\nAn error occurred while saving the document...\n"); - } - else FBXSDK_printf("\n\nAn error occurred while creating the document...\n"); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateDocument(FbxManager* pManager, FbxDocument* pDocument) -{ - int lCount; - - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Example document"; - lDocInfo->mSubject = "Illustrates the creation of FbxDocument with geometries, materials and lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pDocument->SetDocumentInfo(lDocInfo); - - // NOTE: Objects created directly in the SDK Manager are not visible - // to the disk save routines unless they are manually connected to the - // documents (see below). Ideally, one would directly use the FbxScene/FbxDocument - // during the creation of objects so they are automatically connected and become visible - // to the disk save routines. - FbxNode* lPlane = CreatePlane(pManager, "Plane"); - - // add the geometry to the main document. - pDocument->AddRootMember(lPlane); - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 3: the FbxNode - lPlane; FbxMesh belongs to lPlane; Material that connect to lPlane - - // Create sub document to contain materials. - FbxDocument* lMatDocument = FbxDocument::Create(pManager,"Material"); - - CreateMatDocument(pManager, lMatDocument); - // Connect the light sub document to main document - pDocument->AddMember(lMatDocument); - - // Create sub document to contain lights - FbxDocument* lLightDocument = FbxDocument::Create(pManager,"Light"); - CreateLightDocument(pManager, lLightDocument); - // Connect the light sub document to main document - pDocument->AddMember(lLightDocument); - - lCount = pDocument->GetMemberCount(); // lCount = 5 : 3 add two sub document - - // document can contain animation. Please refer to other sample about how to set animation - pDocument->CreateAnimStack("PlanAnim"); - - lCount = pDocument->GetRootMemberCount(); // lCount = 1: only the lPlane - lCount = pDocument->GetMemberCount(); // lCount = 7: 5 add AnimStack and AnimLayer - lCount = pDocument->GetMemberCount(); // lCount = 2 - - return true; -} - -// Create material sub document -void CreateMatDocument(FbxManager* pManager, FbxDocument* pMatDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for materials"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with materials."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx material document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pMatDocument->SetDocumentInfo(lDocInfo); - - // add material object to the sub document - pMatDocument->AddMember(CreateMaterial(pManager)); -} - -// Create light sub document -void CreateLightDocument(FbxManager* pManager, FbxDocument* pLightDocument) -{ - // create document info - FbxDocumentInfo* lDocInfo = FbxDocumentInfo::Create(pManager,"DocInfo"); - lDocInfo->mTitle = "Sub document for lights"; - lDocInfo->mSubject = "Illustrates the creation of sub-FbxDocument with lights."; - lDocInfo->mAuthor = "ExportDocument.exe sample program."; - lDocInfo->mRevision = "rev. 1.0"; - lDocInfo->mKeywords = "Fbx light document"; - lDocInfo->mComment = "no particular comments required."; - - // add the documentInfo - pLightDocument->SetDocumentInfo(lDocInfo); - - // add light objects to the sub document - pLightDocument->AddMember(CreateLight(pManager, FbxLight::eSpot)); - pLightDocument->AddMember(CreateLight(pManager, FbxLight::ePoint)); -} - -// Create a plane mesh. -FbxNode* CreatePlane(FbxManager* pManager, const char* pName) -{ - int i; - FbxMesh* lMesh = FbxMesh::Create(pManager,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - - FbxVector4 lNormalZPos(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lElementNormal= lMesh->CreateElementNormal(); - - lElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the normal values for every control point. - lElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - lElementNormal->GetDirectArray().Add(lNormalZPos); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel. - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygons. Assign texture and texture UV indices. - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(i = 0; i < 4; i++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseElement->GetIndexArray().SetAt(i, i); - } - - lMesh->EndPolygon (); - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // rotate the plane - lNode->LclRotation.Set(FbxVector4(90, 0, 0)); - - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - if( !lMesh->GetElementMaterial( 0)) - return NULL; - - // add material to the node. - // the material can't in different document with the geometry node or in sub-document - // we create a simple material here which belong to main document - FbxString lMaterialName = "material_for_plane"; - FbxString lShadingName = "Phong"; - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - lMaterial->Diffuse.Set(FbxDouble3(1.0, 1.0, 0)); - lMaterial->DiffuseFactor.Set(1.); - - lNode->AddMaterial(lMaterial); - - // We are in eByPolygon, so there's only need for index (a plane has 1 polygon). - lMaterialElement->GetIndexArray().SetCount(lMesh->GetPolygonCount()); - - // Set the Index to the material - for(i=0; iGetPolygonCount(); ++i) - lMaterialElement->GetIndexArray().SetAt(i,0); - - // return the FbxNode - return lNode; -} - - -// Create a texture -FbxTexture* CreateTexture(FbxManager* pManager) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pManager,""); - - // Resource file must be in the application's directory. - FbxString lPath = FbxGetApplicationDirectory(); - FbxString lTexPath = lPath + "\\Crate.jpg"; - - // Set texture properties. - lTexture->SetFileName(lTexPath.Buffer()); - lTexture->SetName("Diffuse Texture"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetAlphaSource (FbxTexture::eNone); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - return lTexture; -} - -// Create material. -// FBX scene must connect materials FbxNode, otherwise materials will not be exported. -// FBX document don't need connect materials to FbxNode, it can export standalone materials. -FbxSurfacePhong* CreateMaterial(FbxManager* pManager) -{ - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pManager, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .ConnectSrcObject(CreateTexture(pManager)); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor .Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - - return lMaterial; -} - -// Create light. -FbxNode* CreateLight(FbxManager* pManager, FbxLight::EType pType) -{ - FbxString lLightName; - FbxDouble val; - - switch (pType) - { - case FbxLight::eSpot: - lLightName = "SpotLight"; - break; - case FbxLight::ePoint: - lLightName = "PointLight"; - break; - case FbxLight::eDirectional: - lLightName = "DirectionalLight"; - break; - default: - break; - } - - FbxLight* lFbxLight = FbxLight::Create(pManager, lLightName.Buffer()); - - lFbxLight->LightType.Set(pType); - - // parameters for spot light - if (pType == FbxLight::eSpot) - { - lFbxLight->InnerAngle.Set(40.0); - val = lFbxLight->InnerAngle.Get(); // val = 40 - - lFbxLight->OuterAngle.Set(40); - val = lFbxLight->OuterAngle.Get(); // val = 40 - } - - // - // Light Color... - // - FbxDouble3 lColor; - lColor[0] = 0.0; - lColor[1] = 1.0; - lColor[2] = 0.5; - lFbxLight->Color.Set(lColor); - FbxDouble3 val3 = lFbxLight->Color.Get(); // val3 = (0, 1, 0.5) - - // - // Light Intensity... - // - lFbxLight->Intensity.Set(100.0); - val = lFbxLight->Intensity.Get(); // val = 100 - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pManager,lLightName+"Node"); - - // set the node attribute - lNode->SetNodeAttribute(lFbxLight); - lNode->LclTranslation.Set(FbxDouble3(20, 30, 100)); - val3 = lNode->LclTranslation.Get(); // val3 = (20, 30, 100) - - return lNode; -} - - diff --git a/sdk/Windows/2019.2/samples/ExportScene01/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportScene01/CMakeLists.txt deleted file mode 100755 index 4681b9c..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene01/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene01 .) -SET(FBX_TARGET_SOURCE - main.cxx - Thumbnail.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Windows/2019.2/samples/ExportScene01/Thumbnail.h b/sdk/Windows/2019.2/samples/ExportScene01/Thumbnail.h deleted file mode 100755 index 69d1be1..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene01/Thumbnail.h +++ /dev/null @@ -1,792 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _THUMBNAIL_H -#define _THUMBNAIL_H - -/** Thumbnail images to be exported by ExportScene01 example. - */ - -// Thumbnail for the scene. -// 64x64 RGB pixels -const unsigned char cSceneThumbnail[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe7, 0xe7, 0xc3, - 0xc2, 0xc2, 0xdb, 0xda, 0xda, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xf7, 0xf7, 0xf7, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa6, 0xa6, 0x37, 0x35, 0x36, 0x1c, - 0x18, 0x19, 0x25, 0x22, 0x23, 0xb1, 0xb0, 0xb1, 0xf4, 0xf4, 0xf4, 0xeb, 0xeb, 0xeb, 0xf1, 0xf1, - 0xf1, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfc, 0xfc, 0xfc, 0xef, 0xef, 0xef, 0x7c, 0x79, 0x7a, 0x2d, 0x29, 0x2a, 0x1c, 0x18, 0x19, 0x1f, - 0x1d, 0x1f, 0x1c, 0x1a, 0x1c, 0xa8, 0xa9, 0xab, 0xf1, 0xf2, 0xf4, 0xeb, 0xec, 0xed, 0xf0, 0xf0, - 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf3, 0xf3, 0xf3, 0xd7, 0xd7, 0xd7, 0xcd, 0xcd, 0xcd, 0xe6, 0xe6, 0xe6, 0xf6, 0xf6, 0xf6, - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, - 0xbc, 0xbc, 0xbc, 0x43, 0x43, 0x43, 0x24, 0x21, 0x21, 0x1f, 0x1b, 0x1c, 0x20, 0x1d, 0x1e, 0x41, - 0x3f, 0x40, 0xa8, 0xa5, 0xa7, 0xde, 0xdf, 0xe1, 0xee, 0xef, 0xf0, 0xf1, 0xf1, 0xf2, 0xfc, 0xfc, - 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfd, 0xfd, 0x98, 0x97, - 0x98, 0x39, 0x36, 0x37, 0x1d, 0x18, 0x19, 0x22, 0x1e, 0x1f, 0x1e, 0x1b, 0x1c, 0x5c, 0x5a, 0x5a, - 0xbc, 0xbb, 0xbc, 0xf0, 0xf2, 0xf4, 0xea, 0xeb, 0xec, 0xf5, 0xf5, 0xf5, 0xfd, 0xfc, 0xfc, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xed, 0xed, 0x8f, 0x8d, 0x8d, - 0x22, 0x1e, 0x1f, 0x24, 0x1f, 0x20, 0x1e, 0x18, 0x1a, 0x2f, 0x2d, 0x2d, 0x81, 0x82, 0x83, 0xe1, - 0xe2, 0xe4, 0xe7, 0xe8, 0xe9, 0xef, 0xef, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0x85, 0x84, 0x85, 0x31, 0x2d, - 0x2e, 0x1c, 0x17, 0x18, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1f, 0x20, 0x13, 0x11, 0x11, - 0x50, 0x4f, 0x50, 0xbb, 0xbd, 0xbf, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xf5, 0xf5, 0xf5, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x61, 0x18, 0x15, 0x16, - 0x22, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x55, 0x53, 0x53, 0xb7, 0xb8, 0xb7, 0xf2, 0xf4, 0xf5, 0xe9, - 0xea, 0xec, 0xf4, 0xf5, 0xf6, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xcf, 0xcf, 0xcf, - 0xbc, 0xbb, 0xbb, 0xde, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0xf9, 0xf9, 0xf9, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xe1, 0xe0, 0xe0, 0x46, 0x43, 0x43, 0x19, 0x14, - 0x15, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x1f, 0x1b, 0x19, - 0x2c, 0x29, 0x29, 0x71, 0x71, 0x72, 0xea, 0xeb, 0xeb, 0xeb, 0xed, 0xec, 0xee, 0xf0, 0xef, 0xf9, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf4, 0xf4, 0xf4, 0xb6, 0xb6, 0xb6, 0x45, 0x42, 0x43, 0x1b, 0x16, 0x18, 0x1d, 0x19, 0x1a, - 0x2f, 0x2d, 0x2d, 0x83, 0x83, 0x83, 0xd8, 0xd9, 0xd9, 0xf0, 0xf2, 0xf1, 0xee, 0xef, 0xee, 0xfa, - 0xfa, 0xfa, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd9, 0xd9, 0x41, 0x3d, 0x3e, - 0x09, 0x05, 0x06, 0x74, 0x73, 0x73, 0xf2, 0xf2, 0xf2, 0xe9, 0xe9, 0xe9, 0xec, 0xec, 0xec, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xd5, 0xd4, 0xd4, 0x40, 0x3d, 0x3d, 0x18, 0x13, - 0x15, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x1f, 0x20, 0x1c, 0x1b, - 0x25, 0x22, 0x22, 0x64, 0x64, 0x65, 0xe9, 0xeb, 0xea, 0xeb, 0xed, 0xec, 0xed, 0xee, 0xed, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xec, - 0xec, 0x98, 0x98, 0x98, 0x28, 0x27, 0x27, 0x1f, 0x1c, 0x1d, 0x19, 0x14, 0x15, 0x49, 0x46, 0x47, - 0xb2, 0xb2, 0xb2, 0xe4, 0xe6, 0xe6, 0xea, 0xed, 0xec, 0xf2, 0xf3, 0xf3, 0xfc, 0xfd, 0xfd, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x04, 0x05, 0x65, 0x63, 0x65, 0xdc, 0xdd, 0xdf, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xef, 0x55, 0x55, 0x55, 0x1c, 0x1a, - 0x1b, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1c, 0x17, 0x18, - 0x39, 0x36, 0x36, 0x8a, 0x8a, 0x89, 0xe9, 0xeb, 0xea, 0xea, 0xec, 0xeb, 0xf0, 0xf2, 0xf1, 0xfc, - 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe2, 0xe1, 0x79, 0x77, - 0x78, 0x1b, 0x16, 0x17, 0x23, 0x1f, 0x20, 0x18, 0x16, 0x16, 0x69, 0x69, 0x69, 0xcb, 0xcc, 0xcc, - 0xee, 0xf0, 0xef, 0xe9, 0xec, 0xea, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xb3, 0xb2, 0xb2, 0x36, 0x32, 0x33, - 0x08, 0x03, 0x04, 0x64, 0x62, 0x63, 0xdb, 0xdb, 0xdd, 0xea, 0xea, 0xec, 0xeb, 0xeb, 0xeb, 0xf8, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xc2, 0xc2, 0xc3, 0x4e, 0x4b, - 0x4c, 0x15, 0x11, 0x12, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x1e, 0x19, 0x1b, - 0x74, 0x71, 0x72, 0xe4, 0xe4, 0xe3, 0xe8, 0xea, 0xe9, 0xeb, 0xed, 0xec, 0xf7, 0xf8, 0xf8, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x61, 0x61, 0x60, 0x14, 0x12, - 0x12, 0x21, 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x87, 0x86, 0x86, 0xd8, 0xda, 0xda, 0xee, 0xf2, 0xf0, - 0xec, 0xee, 0xed, 0xf9, 0xfa, 0xfa, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf9, 0xf9, 0xbf, 0xbe, 0xbe, 0x37, 0x33, 0x34, - 0x07, 0x03, 0x05, 0x5e, 0x5c, 0x5d, 0xd2, 0xd3, 0xd2, 0xeb, 0xeb, 0xeb, 0xe9, 0xeb, 0xea, 0xf6, - 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xdf, - 0xdf, 0x96, 0x95, 0x96, 0x56, 0x55, 0x56, 0x52, 0x50, 0x51, 0x6a, 0x69, 0x69, 0xb2, 0xb2, 0xb2, - 0xe8, 0xe8, 0xe8, 0xef, 0xef, 0xef, 0xf4, 0xf4, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xcc, 0xcc, 0xcc, 0x4a, 0x47, 0x48, 0x1a, 0x16, 0x17, 0x1b, 0x17, - 0x18, 0x38, 0x36, 0x37, 0xa6, 0xa6, 0xa6, 0xdf, 0xe1, 0xe0, 0xed, 0xef, 0xee, 0xef, 0xf1, 0xf0, - 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xd2, 0xd1, 0xd2, 0x3a, 0x37, 0x38, - 0x09, 0x05, 0x06, 0x57, 0x54, 0x55, 0xc4, 0xc4, 0xc4, 0xea, 0xeb, 0xeb, 0xe8, 0xea, 0xe9, 0xf5, - 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, - 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, - 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, - 0xf9, 0xf9, 0xb2, 0xb2, 0xb2, 0x32, 0x32, 0x32, 0x20, 0x1d, 0x1e, 0x17, 0x13, 0x14, 0x53, 0x51, - 0x51, 0xbd, 0xbe, 0xbe, 0xe7, 0xea, 0xe9, 0xea, 0xec, 0xeb, 0xf3, 0xf4, 0xf4, 0xfd, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0x46, 0x43, 0x44, - 0x0e, 0x0a, 0x0b, 0x49, 0x47, 0x48, 0xae, 0xad, 0xb0, 0xeb, 0xeb, 0xed, 0xe8, 0xea, 0xe9, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xa1, - 0xa0, 0xa0, 0x27, 0x23, 0x24, 0x23, 0x1f, 0x20, 0x17, 0x13, 0x14, 0x65, 0x63, 0x64, 0xc9, 0xca, - 0xca, 0xef, 0xf1, 0xf0, 0xeb, 0xec, 0xeb, 0xf7, 0xf7, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x63, 0x60, 0x60, - 0x1c, 0x18, 0x19, 0x35, 0x33, 0x34, 0x92, 0x92, 0x94, 0xec, 0xed, 0xef, 0xe9, 0xeb, 0xea, 0xf1, - 0xf2, 0xf2, 0xfc, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x26, - 0x24, 0x24, 0x1f, 0x1a, 0x1b, 0x21, 0x1d, 0x1e, 0x78, 0x78, 0x78, 0xce, 0xd1, 0xd0, 0xf0, 0xf3, - 0xf2, 0xeb, 0xed, 0xec, 0xf8, 0xfb, 0xfa, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0x8d, 0x8d, 0x8d, - 0x31, 0x2e, 0x2f, 0x1d, 0x19, 0x1a, 0x71, 0x6e, 0x6f, 0xee, 0xee, 0xef, 0xea, 0xeb, 0xed, 0xed, - 0xee, 0xf0, 0xf9, 0xf9, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xf4, 0xf4, 0x7b, 0x78, 0x79, 0x2d, 0x29, 0x2a, 0x17, - 0x13, 0x14, 0x32, 0x2e, 0x2f, 0x84, 0x83, 0x83, 0xd9, 0xdb, 0xda, 0xee, 0xf1, 0xf0, 0xee, 0xef, - 0xee, 0xfb, 0xfb, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xc4, 0xc3, 0xc3, - 0x4a, 0x47, 0x48, 0x08, 0x05, 0x06, 0x51, 0x4f, 0x4f, 0xdd, 0xdd, 0xdd, 0xe8, 0xe9, 0xeb, 0xeb, - 0xeb, 0xee, 0xf6, 0xf6, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xe4, 0xe4, 0xe4, 0x6f, 0x6f, 0x6f, 0x2e, 0x2b, 0x2b, 0x14, 0x10, 0x11, 0x39, - 0x37, 0x38, 0x91, 0x91, 0x92, 0xe5, 0xe6, 0xe6, 0xea, 0xec, 0xeb, 0xef, 0xf1, 0xf0, 0xfa, 0xfb, - 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, - 0x67, 0x65, 0x66, 0x07, 0x04, 0x05, 0x3d, 0x3a, 0x3b, 0xaa, 0xab, 0xab, 0xe1, 0xe2, 0xe4, 0xeb, - 0xec, 0xee, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xd9, 0xd8, 0xd9, 0x73, 0x70, 0x71, 0x24, 0x1f, 0x20, 0x1a, 0x14, 0x16, 0x3d, 0x3a, 0x3c, 0x9b, - 0x9b, 0x9c, 0xf2, 0xf3, 0xf5, 0xe8, 0xe9, 0xeb, 0xf2, 0xf2, 0xf2, 0xfc, 0xfc, 0xfc, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x9d, 0x9a, 0x9b, 0x33, 0x2e, 0x2f, 0x24, 0x21, 0x22, 0x64, 0x64, 0x64, 0xd8, 0xd8, 0xda, 0xf1, - 0xf2, 0xf3, 0xee, 0xee, 0xef, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdb, 0xdc, - 0x6f, 0x6d, 0x6e, 0x16, 0x13, 0x14, 0x24, 0x1f, 0x20, 0x3b, 0x39, 0x39, 0xab, 0xac, 0xab, 0xf3, - 0xf5, 0xf5, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf4, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe1, 0xe1, 0xe1, 0x71, 0x6f, 0x70, 0x0e, 0x09, 0x0a, 0x2d, 0x29, 0x2a, 0xba, 0xb9, 0xb9, 0xeb, - 0xec, 0xec, 0xec, 0xec, 0xec, 0xf2, 0xf2, 0xf2, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe4, 0xe5, 0xe5, 0x67, 0x67, 0x68, - 0x14, 0x10, 0x12, 0x25, 0x20, 0x22, 0x41, 0x3f, 0x40, 0xbc, 0xbc, 0xbe, 0xed, 0xef, 0xf0, 0xed, - 0xed, 0xee, 0xf4, 0xf4, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xb0, 0xae, 0xaf, 0x2b, 0x26, 0x27, 0x24, 0x20, 0x21, 0x63, 0x62, 0x62, 0xc6, - 0xc6, 0xc6, 0xf4, 0xf4, 0xf4, 0xed, 0xed, 0xed, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xe6, 0xe5, 0xe6, 0x58, 0x56, 0x57, 0x1e, 0x1a, 0x1b, - 0x1b, 0x17, 0x19, 0x4c, 0x4b, 0x4b, 0xcc, 0xce, 0xcd, 0xe6, 0xe8, 0xe9, 0xec, 0xec, 0xef, 0xf4, - 0xf4, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xeb, 0xea, 0xea, 0x8b, 0x89, 0x89, 0x1f, 0x1b, 0x1c, 0x17, 0x15, 0x16, 0x8c, - 0x8d, 0x8c, 0xe7, 0xe9, 0xe8, 0xeb, 0xed, 0xec, 0xec, 0xee, 0xed, 0xfa, 0xfb, 0xfa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xd7, 0xd7, 0xd7, 0x56, 0x53, 0x54, 0x27, 0x24, 0x25, 0x13, 0x0f, 0x10, - 0x5d, 0x5c, 0x5d, 0xcc, 0xce, 0xd0, 0xe9, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xf6, 0xf6, 0xf6, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0xd6, 0xd7, 0x55, 0x51, 0x52, 0x24, 0x1f, 0x21, 0x2c, - 0x29, 0x2a, 0x94, 0x95, 0x95, 0xf4, 0xf7, 0xf5, 0xe8, 0xea, 0xe9, 0xf0, 0xf1, 0xf0, 0xff, 0xff, - 0xff, 0xd3, 0xd3, 0xd3, 0x60, 0x5f, 0x5f, 0x22, 0x1f, 0x20, 0x15, 0x13, 0x14, 0x64, 0x64, 0x64, - 0xc8, 0xc9, 0xc9, 0xf0, 0xf1, 0xf3, 0xea, 0xea, 0xec, 0xf7, 0xf6, 0xf7, 0xfd, 0xfd, 0xfd, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xd4, 0xd3, 0xd4, 0x42, 0x40, 0x41, 0x0f, - 0x0d, 0x0e, 0x3c, 0x3a, 0x3b, 0x96, 0x94, 0x95, 0xeb, 0xed, 0xec, 0xf0, 0xf3, 0xf2, 0xd0, 0xd1, - 0xd0, 0x6f, 0x6d, 0x6d, 0x14, 0x0f, 0x10, 0x22, 0x1f, 0x20, 0x62, 0x62, 0x64, 0xc4, 0xc4, 0xc6, - 0xf4, 0xf4, 0xf5, 0xec, 0xec, 0xec, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xb9, 0xb7, 0xb8, 0x49, - 0x47, 0x48, 0x0d, 0x0a, 0x0b, 0x32, 0x2e, 0x2f, 0x82, 0x80, 0x81, 0xcc, 0xcc, 0xcc, 0x6a, 0x68, - 0x69, 0x14, 0x10, 0x11, 0x29, 0x24, 0x25, 0x59, 0x55, 0x56, 0xd0, 0xcf, 0xd1, 0xf1, 0xf1, 0xf3, - 0xed, 0xed, 0xef, 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, - 0xb0, 0xb0, 0x44, 0x43, 0x43, 0x1b, 0x16, 0x17, 0x24, 0x20, 0x21, 0x2c, 0x28, 0x29, 0x24, 0x20, - 0x21, 0x20, 0x1c, 0x1e, 0x5c, 0x5b, 0x5b, 0xd9, 0xdb, 0xda, 0xe8, 0xea, 0xeb, 0xec, 0xed, 0xef, - 0xf6, 0xf7, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xbb, 0xba, 0xba, 0x48, 0x44, 0x45, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x17, 0x12, - 0x13, 0x45, 0x42, 0x44, 0xaa, 0xa9, 0xaa, 0xe9, 0xea, 0xea, 0xe9, 0xea, 0xeb, 0xf2, 0xf2, 0xf4, - 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xe4, 0xe4, 0xe5, 0x86, 0x85, 0x86, 0x1f, 0x1c, 0x1d, 0x1e, 0x1c, 0x1d, 0x21, 0x1f, - 0x20, 0x1c, 0x1a, 0x1b, 0x2e, 0x2a, 0x2b, 0x6b, 0x67, 0x68, 0xc2, 0xc2, 0xc3, 0xe8, 0xea, 0xe9, - 0xef, 0xf1, 0xf0, 0xf4, 0xf5, 0xf6, 0xfc, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x93, 0x93, 0x93, 0x1b, 0x19, 0x1a, 0x23, 0x20, 0x21, 0x3f, 0x3d, 0x3e, 0x42, 0x40, - 0x41, 0x30, 0x2c, 0x2d, 0x21, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x1f, 0x1e, 0x1e, 0x4b, 0x4a, 0x4b, - 0x96, 0x96, 0x97, 0xd0, 0xd1, 0xd3, 0xea, 0xeb, 0xed, 0xf2, 0xf2, 0xf2, 0xf8, 0xf8, 0xf8, 0xfd, - 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, - 0x9d, 0x9d, 0x36, 0x32, 0x33, 0x1a, 0x16, 0x17, 0x31, 0x2f, 0x30, 0xb1, 0xb2, 0xb4, 0xed, 0xee, - 0xf1, 0xcb, 0xcb, 0xcd, 0x79, 0x79, 0x78, 0x36, 0x35, 0x35, 0x23, 0x20, 0x21, 0x21, 0x1d, 0x1e, - 0x20, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x41, 0x3e, 0x3f, 0x6b, 0x6a, 0x6b, 0x9b, 0x9a, 0x9a, 0xc4, - 0xc3, 0xc3, 0xe4, 0xe4, 0xe4, 0xf3, 0xf3, 0xf3, 0xf8, 0xf8, 0xf8, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, - 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xbf, 0xbe, 0xbe, 0x4d, - 0x4a, 0x4b, 0x0a, 0x07, 0x08, 0x37, 0x37, 0x36, 0xa2, 0xa3, 0xa3, 0xdf, 0xe0, 0xe2, 0xed, 0xee, - 0xf0, 0xf1, 0xf2, 0xf3, 0xfe, 0xfe, 0xfe, 0xf7, 0xf7, 0xf7, 0xc4, 0xc4, 0xc4, 0x81, 0x80, 0x80, - 0x42, 0x40, 0x40, 0x23, 0x1e, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x21, 0x1e, 0x1f, 0x20, - 0x1d, 0x1e, 0x24, 0x21, 0x22, 0x33, 0x30, 0x31, 0x48, 0x47, 0x47, 0x5f, 0x5e, 0x5e, 0x73, 0x72, - 0x72, 0x81, 0x81, 0x81, 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0xb8, 0xb8, 0xb8, - 0xf8, 0xf8, 0xf8, 0xf1, 0xf1, 0xf1, 0xf6, 0xf6, 0xf6, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xe1, 0xe1, 0xe1, 0x4d, 0x49, 0x4a, 0x17, - 0x12, 0x13, 0x30, 0x2d, 0x2d, 0x7f, 0x7e, 0x7e, 0xea, 0xec, 0xeb, 0xeb, 0xec, 0xec, 0xf0, 0xf0, - 0xf0, 0xfa, 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0xfe, 0xfe, 0xe8, 0xe8, 0xe8, 0xba, 0xba, 0xba, 0x91, 0x90, 0x91, 0x67, 0x66, 0x67, 0x44, - 0x41, 0x42, 0x2b, 0x27, 0x28, 0x21, 0x1e, 0x1f, 0x20, 0x1d, 0x1e, 0x22, 0x1e, 0x1f, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x10, 0x0d, 0x0e, 0x5b, 0x5b, 0x5a, - 0xe4, 0xe7, 0xe6, 0xe7, 0xe9, 0xe8, 0xeb, 0xeb, 0xeb, 0xf6, 0xf6, 0xf6, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0x65, 0x65, 0x65, 0x29, 0x26, 0x26, 0x15, - 0x11, 0x12, 0x77, 0x74, 0x75, 0xe8, 0xe8, 0xe9, 0xea, 0xeb, 0xea, 0xec, 0xec, 0xec, 0xf8, 0xf8, - 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf9, 0xf8, 0xf8, 0xe9, 0xe8, 0xe9, 0xd6, 0xd5, 0xd6, 0xc0, 0xbf, 0xc0, 0xae, 0xad, - 0xae, 0xa2, 0xa1, 0xa2, 0x9c, 0x9b, 0x9c, 0x97, 0x97, 0x97, 0x9e, 0x9e, 0x9e, 0xc7, 0xc8, 0xc7, - 0xf6, 0xf9, 0xf7, 0xf1, 0xf3, 0xf2, 0xf7, 0xf7, 0xf7, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xed, 0xee, 0xee, 0x91, 0x91, 0x91, 0x20, 0x1b, 0x1d, 0x17, 0x12, 0x14, 0x65, - 0x63, 0x64, 0xc6, 0xc7, 0xc8, 0xf0, 0xf1, 0xf3, 0xe9, 0xea, 0xeb, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xa4, 0xa4, 0xa5, 0x23, 0x21, 0x22, 0x23, 0x20, 0x21, 0x3e, 0x3b, 0x3c, 0xb5, - 0xb3, 0xb4, 0xf7, 0xf7, 0xf8, 0xea, 0xeb, 0xed, 0xf4, 0xf5, 0xf5, 0xfd, 0xfd, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xba, 0xb9, 0xb9, 0x51, 0x4d, 0x4e, 0x14, 0x0f, 0x10, 0x2b, 0x27, 0x28, 0xaa, 0xab, 0xab, 0xe5, - 0xe7, 0xe6, 0xed, 0xed, 0xed, 0xf0, 0xf0, 0xf0, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfd, 0xeb, 0xeb, 0xeb, - 0x60, 0x5d, 0x5e, 0x0e, 0x09, 0x0a, 0x31, 0x2d, 0x2e, 0x7a, 0x76, 0x77, 0xda, 0xdb, 0xda, 0xef, - 0xf1, 0xf0, 0xef, 0xf0, 0xf0, 0xfb, 0xfa, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xf3, 0x77, 0x73, 0x74, - 0x2c, 0x27, 0x28, 0x14, 0x11, 0x12, 0x55, 0x55, 0x55, 0xdb, 0xdd, 0xdc, 0xe8, 0xea, 0xe9, 0xeb, - 0xed, 0xec, 0xf6, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xa4, 0xa3, 0xa3, 0x33, 0x30, 0x31, - 0x0f, 0x0a, 0x0c, 0x49, 0x46, 0x46, 0xac, 0xac, 0xac, 0xeb, 0xed, 0xec, 0xe9, 0xeb, 0xea, 0xf3, - 0xf5, 0xf4, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfa, 0xf9, 0xf9, 0xaa, 0xa8, 0xa9, 0x27, 0x22, 0x23, 0x1f, 0x1c, 0x1d, - 0x1d, 0x1c, 0x1d, 0x82, 0x83, 0x82, 0xf3, 0xf5, 0xf4, 0xe9, 0xea, 0xe9, 0xef, 0xef, 0xef, 0xfa, - 0xfa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xb0, 0xb0, 0xb1, 0x33, 0x32, 0x33, 0x20, 0x1d, 0x1e, 0x18, 0x14, 0x15, - 0x6b, 0x69, 0x69, 0xc8, 0xc9, 0xc8, 0xf0, 0xf2, 0xf1, 0xea, 0xec, 0xeb, 0xf8, 0xf9, 0xf9, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xca, 0xc9, 0xc9, 0x63, 0x61, 0x62, 0x3d, 0x3c, 0x3c, 0x6a, 0x6a, 0x6a, - 0xca, 0xca, 0xca, 0xf5, 0xf5, 0xf5, 0xed, 0xed, 0xed, 0xf6, 0xf6, 0xf6, 0xfe, 0xfe, 0xfe, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfd, 0xfe, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x78, 0x77, 0x78, 0x89, 0x89, 0x89, 0xad, 0xad, 0xad, - 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, - 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, - 0x23, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x20, 0x21, 0x22, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x21, 0x1d, 0x1e, 0x3d, 0x3b, 0x3c, 0x66, 0x63, 0x64, 0x68, 0x65, 0x66, 0x46, 0x43, 0x44, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x21, 0x1d, 0x1e, 0x25, 0x22, 0x23, 0x46, 0x44, - 0x45, 0x97, 0x95, 0x96, 0x7e, 0x7c, 0x7d, 0x3b, 0x38, 0x39, 0x22, 0x1f, 0x20, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x64, 0x60, 0x61, 0xb2, 0xaf, 0xb0, 0xaf, 0xad, - 0xae, 0x43, 0x41, 0x42, 0x21, 0x1f, 0x20, 0x1d, 0x1b, 0x1c, 0x2b, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x1f, 0x1b, 0x1c, 0x2e, - 0x2a, 0x2b, 0x72, 0x6f, 0x70, 0xd8, 0xd6, 0xd7, 0xc4, 0xc3, 0xc4, 0x5e, 0x5c, 0x5c, 0x1e, 0x1a, - 0x1b, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x1c, 0x18, 0x19, 0x3a, 0x36, 0x38, 0x91, 0x8f, 0x90, 0xe3, - 0xe3, 0xe3, 0xe1, 0xe0, 0xe0, 0x76, 0x74, 0x75, 0x2a, 0x26, 0x27, 0x1f, 0x1b, 0x1c, 0x24, 0x20, - 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1e, 0x1f, 0x25, 0x22, 0x22, 0x2d, 0x2c, 0x2c, 0x33, - 0x30, 0x30, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, - 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, - 0x35, 0x32, 0x33, 0x2b, 0x28, 0x29, 0x22, 0x20, 0x21, 0x2c, 0x2a, 0x2b, 0x33, 0x2f, 0x30, 0x35, - 0x30, 0x31, 0x34, 0x30, 0x32, 0x34, 0x30, 0x32, 0x34, 0x30, 0x31, 0x34, 0x30, 0x31, 0x34, 0x31, - 0x32, 0x31, 0x2e, 0x2f, 0x2f, 0x2b, 0x2c, 0x2e, 0x2a, 0x2b, 0x27, 0x23, 0x24, 0x22, 0x1e, 0x1f, - 0x21, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x2e, 0x2a, 0x2b, 0x35, - 0x32, 0x33, 0x33, 0x30, 0x31, 0x34, 0x30, 0x31, 0x2e, 0x2b, 0x2c, 0x26, 0x23, 0x24, 0x22, 0x1e, - 0x1f, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x1f, 0x1c, 0x1d, - 0x26, 0x23, 0x24, 0x46, 0x43, 0x44, 0xa4, 0xa3, 0xa3, 0xf4, 0xf5, 0xf5, 0xed, 0xee, 0xee, 0x93, - 0x93, 0x93, 0x30, 0x2f, 0x2f, 0x20, 0x1c, 0x1d, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x16, 0x12, 0x13, 0x45, 0x42, 0x43, 0xc2, 0xc1, 0xc2, 0xf9, - 0xf8, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x96, 0x95, 0x95, 0x30, 0x2e, 0x2f, 0xa5, 0xa3, 0xa4, 0xf4, 0xf3, 0xf4, 0xff, - 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0xfa, 0xfb, 0xed, 0xec, 0xed, - 0xc1, 0xc0, 0xc2, 0x7a, 0x79, 0x7a, 0x2c, 0x2b, 0x2b, 0x1b, 0x18, 0x18, 0x4b, 0x47, 0x48, 0xac, - 0xaa, 0xab, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xb9, 0xb8, 0xb8, 0x51, 0x4f, - 0x4f, 0x1d, 0x19, 0x1a, 0x24, 0x20, 0x21, 0x21, 0x1c, 0x1d, 0x26, 0x22, 0x23, 0x5f, 0x5d, 0x5d, - 0xc0, 0xc1, 0xc0, 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xab, 0xac, 0xac, 0x43, 0x41, 0x42, 0x1e, - 0x1a, 0x1b, 0x22, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd7, 0xd6, 0xd6, 0x74, 0x72, 0x73, 0x39, 0x35, 0x36, 0x3b, 0x39, - 0x39, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3a, 0x3c, 0x3a, 0x3b, 0x3b, 0x39, 0x3a, - 0x3d, 0x3c, 0x3d, 0x28, 0x25, 0x26, 0x3b, 0x37, 0x38, 0xa3, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe3, 0xe3, 0xe3, 0x8c, 0x8b, 0x8b, 0x3a, 0x37, 0x38, 0x39, 0x37, 0x38, 0x3b, 0x39, - 0x3a, 0x3a, 0x38, 0x39, 0x3c, 0x3a, 0x3b, 0x4c, 0x4a, 0x4b, 0xa0, 0xa0, 0xa0, 0xea, 0xea, 0xea, - 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf3, 0xa6, 0xa6, 0xa6, 0x3a, 0x37, 0x38, 0x17, 0x12, 0x13, 0x23, - 0x20, 0x21, 0x52, 0x52, 0x52, 0xba, 0xb9, 0xba, 0xf5, 0xf4, 0xf5, 0xff, 0xff, 0xff, 0xf1, 0xf1, - 0xf1, 0xb0, 0xb0, 0xb0, 0x4d, 0x4d, 0x4d, 0x74, 0x74, 0x74, 0xd0, 0xd0, 0xd0, 0xff, 0xff, 0xff, - 0xf9, 0xf8, 0xf8, 0xce, 0xcd, 0xce, 0x5c, 0x58, 0x59, 0x23, 0x1e, 0x1f, 0x20, 0x1c, 0x1d, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x11, 0x12, 0x45, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xde, 0xdf, 0xdf, 0x91, 0x90, 0x91, 0x64, 0x61, 0x62, 0x65, 0x63, - 0x63, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x65, 0x63, 0x64, 0x67, 0x65, 0x66, - 0x39, 0x37, 0x38, 0x13, 0x10, 0x11, 0x3b, 0x37, 0x38, 0xa4, 0xa3, 0xa4, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xea, 0xe9, 0xea, 0xa7, 0xa6, 0xa7, 0x69, 0x66, 0x67, 0x69, 0x67, 0x68, 0x6b, 0x69, - 0x6a, 0x6a, 0x68, 0x69, 0x6e, 0x6c, 0x6d, 0x80, 0x7f, 0x80, 0xc7, 0xc6, 0xc7, 0xf8, 0xf8, 0xf8, - 0xff, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0x54, 0x54, 0x54, 0x29, 0x25, 0x26, 0x1f, 0x1b, 0x1c, 0x23, - 0x1f, 0x20, 0x21, 0x1d, 0x1f, 0x22, 0x1f, 0x20, 0x5b, 0x5a, 0x5a, 0xc2, 0xc2, 0xc2, 0xff, 0xff, - 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xd8, 0xd8, - 0x74, 0x71, 0x72, 0x2b, 0x27, 0x28, 0x20, 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xee, 0xee, 0xee, 0xe9, 0xe9, 0xe9, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, - 0x68, 0x67, 0x68, 0x0b, 0x09, 0x0a, 0x3a, 0x37, 0x38, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xfa, 0xfa, 0xfa, 0xec, 0xec, 0xec, 0xe1, 0xe1, 0xe1, 0xe3, 0xe2, 0xe2, 0xe4, 0xe3, - 0xe3, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xec, 0xeb, 0xeb, 0xf9, 0xfa, 0xfa, 0xff, 0xff, 0xff, - 0xe0, 0xe1, 0xe0, 0xa1, 0xa1, 0xa1, 0x63, 0x62, 0x62, 0x2d, 0x2a, 0x2a, 0x1f, 0x1b, 0x1c, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x7d, 0x7a, 0x7b, 0xe4, 0xe2, - 0xe3, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xf6, 0xf6, 0xf6, 0xa3, 0xa2, 0xa2, - 0x33, 0x30, 0x31, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x15, 0x12, 0x13, 0x44, 0x42, 0x43, 0xc2, 0xc2, 0xc2, 0xf9, - 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xd2, 0xd1, 0xd1, 0x63, 0x60, 0x61, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, - 0x22, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa4, 0xa3, 0xa3, 0xf4, 0xf4, 0xf4, 0xff, - 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0x7c, 0x7b, 0x7b, 0x1c, 0x1b, 0x1b, 0x1d, 0x1a, 0x1b, 0x21, 0x1d, - 0x1e, 0x22, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x22, 0x1f, 0x20, 0x2a, 0x27, 0x28, 0xa5, 0xa4, 0xa5, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0x90, 0x8e, 0x8f, 0x36, 0x32, 0x33, 0x16, - 0x12, 0x13, 0x2c, 0x28, 0x29, 0x68, 0x64, 0x65, 0xd1, 0xd0, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xec, 0xec, 0xec, 0xab, 0xab, 0xab, 0xdb, 0xdb, 0xdb, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, - 0xe7, 0xe6, 0xe7, 0x8e, 0x8e, 0x8e, 0x38, 0x34, 0x35, 0x1d, 0x18, 0x1a, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x2c, 0x28, 0x29, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x15, 0x10, 0x12, 0x45, 0x42, 0x42, 0xc2, 0xc2, 0xc2, 0xf8, - 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xd2, 0xd2, 0xd2, 0x62, 0x62, 0x62, 0x1e, 0x1b, 0x1c, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x19, 0x15, 0x16, 0x3b, 0x38, 0x39, 0xa3, 0xa2, 0xa3, 0xf3, 0xf3, 0xf3, 0xff, - 0xff, 0xff, 0xeb, 0xeb, 0xeb, 0xaf, 0xaf, 0xaf, 0x77, 0x77, 0x77, 0x78, 0x77, 0x77, 0x7a, 0x78, - 0x79, 0x7a, 0x78, 0x79, 0x7b, 0x79, 0x7a, 0x82, 0x81, 0x82, 0xa1, 0xa1, 0xa1, 0xe0, 0xe0, 0xe0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xec, 0xed, 0x6a, 0x69, 0x6a, 0x24, 0x22, 0x23, 0x5d, - 0x5c, 0x5c, 0xcd, 0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xa6, 0xa3, - 0xa4, 0x3f, 0x3b, 0x3c, 0x23, 0x1f, 0x20, 0x25, 0x23, 0x25, 0x81, 0x80, 0x81, 0xe2, 0xe1, 0xe1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xe6, 0xe6, 0x83, 0x83, 0x82, 0x2b, 0x29, 0x29, 0x21, - 0x1c, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x18, 0x15, 0x16, 0x3e, 0x3c, 0x3c, 0x9f, 0x9f, 0x9f, 0xc8, - 0xc8, 0xc8, 0xda, 0xda, 0xda, 0xaa, 0xab, 0xaa, 0x54, 0x53, 0x54, 0x1f, 0x1c, 0x1d, 0x22, 0x1e, - 0x1f, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x1b, 0x17, 0x18, 0x35, 0x33, 0x34, 0x87, 0x87, 0x87, 0xc5, 0xc5, 0xc5, 0xd2, - 0xd2, 0xd2, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcd, 0xcd, 0xcc, 0xcd, - 0xcd, 0xcc, 0xce, 0xcd, 0xcc, 0xce, 0xcd, 0xca, 0xcb, 0xcb, 0xc4, 0xc4, 0xc4, 0xba, 0xb9, 0xba, - 0xa0, 0x9e, 0x9f, 0x70, 0x6d, 0x6e, 0x34, 0x31, 0x32, 0x37, 0x35, 0x36, 0x8e, 0x8d, 0x8e, 0xce, - 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xce, 0xce, 0xce, 0xa6, 0xa7, 0xa7, 0x50, 0x4f, 0x4f, 0x1a, 0x18, - 0x18, 0x23, 0x1e, 0x1f, 0x23, 0x1f, 0x20, 0x22, 0x1f, 0x20, 0x19, 0x17, 0x17, 0x39, 0x38, 0x37, - 0x89, 0x89, 0x89, 0xc7, 0xc7, 0xc7, 0xd0, 0xd0, 0xd0, 0xd3, 0xd3, 0xd3, 0xa6, 0xa5, 0xa5, 0x4f, - 0x4e, 0x4e, 0x24, 0x23, 0x23, 0x20, 0x1d, 0x1d, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, - 0x1e, 0x1f, 0x22, 0x1e, 0x1f, 0x22, 0x1e, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, - 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, - 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x1f, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x21, 0x1d, 0x1e, 0x22, - 0x1e, 0x1f, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, - 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, - 0x1f, 0x24, 0x20, 0x1f, 0x23, 0x1f, 0x20, 0x20, 0x1c, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x24, 0x20, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x23, 0x1f, 0x20, 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, - 0x22, 0x1e, 0x20, 0x22, 0x1e, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, - 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x21, - 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x23, 0x1f, 0x20, 0x24, - 0x20, 0x21, 0x24, 0x20, 0x21, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x20, 0x20, 0x21, 0x1d, 0x1d, 0x2b, 0x27, 0x28, 0x41, 0x3d, 0x3e, - 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, - 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, - 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, - 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, - 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x24, 0x26, 0x22, 0x24, 0x26, 0x22, 0x23, - 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x26, 0x22, 0x23, 0x27, - 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, - 0x24, 0x27, 0x23, 0x24, 0x27, 0x23, 0x24, 0x24, 0x20, 0x21, 0x2f, 0x2b, 0x2c, 0x44, 0x40, 0x41 -}; - -#endif // _THUMBNAIL_H - diff --git a/sdk/Windows/2019.2/samples/ExportScene01/main.cxx b/sdk/Windows/2019.2/samples/ExportScene01/main.cxx deleted file mode 100755 index de86add..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene01/main.cxx +++ /dev/null @@ -1,573 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cylinder linked to a skeleton -// made of 2 segments. Two animation stacks show the influence of the -// skeleton segments over the cylinder. -// -// The example illustrates how to: -// 1) create a patch -// 2) create a skeleton segment -// 3) create a link -// 4) store the bind pose -// 5) store one arbitrary rest pose -// 6) create multiple animation stacks -// 7) create meta-data and add a thumbnail -// 8) export a scene in a .FBX file (ASCII mode) -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "Thumbnail.h" - -#define SAMPLE_FILENAME "ExportScene01.fbx" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); - -FbxNode* CreatePatch(FbxScene* pScene, const char* pName); -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName); - -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot); -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch); -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot); -void AddThumbnailToScene(FbxScene* pScene); -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode); - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation and animation of a deformed cylinder."; - sceneInfo->mAuthor = "ExportScene01.exe sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "deformed cylinder"; - sceneInfo->mComment = "no particular comments required."; - - // we need to add the sceneInfo before calling AddThumbNailToScene because - // that function is asking the scene for the sceneInfo. - pScene->SetSceneInfo(sceneInfo); - - AddThumbnailToScene(pScene); - - FbxNode* lPatch = CreatePatch(pScene, "Patch"); - FbxNode* lSkeletonRoot = CreateSkeleton(pScene, "Skeleton"); - - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPatch); - lRootNode->AddChild(lSkeletonRoot); - - // Store poses - LinkPatchToSkeleton(pScene, lPatch, lSkeletonRoot); - StoreBindPose(pScene, lPatch); - StoreRestPose(pScene, lSkeletonRoot); - - // Animation - AnimateSkeleton(pScene, lSkeletonRoot); - - return true; -} - -// Create a cylinder centered on the Z axis. -FbxNode* CreatePatch(FbxScene* pScene, const char* pName) -{ - FbxPatch* lPatch = FbxPatch::Create(pScene,pName); - - // Set patch properties. - lPatch->InitControlPoints(4, FbxPatch::eBSpline, 7, FbxPatch::eBSpline); - lPatch->SetStep(4, 4); - lPatch->SetClosed(true, false); - - FbxVector4* lVector4 = lPatch->GetControlPoints(); - int i; - - for (i = 0; i < 7; i++) - { - double lRadius = 15.0; - double lSegmentLength = 20.0; - lVector4[4*i + 0].Set(lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 1].Set(0.0, -lRadius, (i-3)*lSegmentLength); - lVector4[4*i + 2].Set(-lRadius, 0.0, (i-3)*lSegmentLength); - lVector4[4*i + 3].Set(0.0, lRadius, (i-3)*lSegmentLength); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // Rotate the cylinder along the X axis so the axis - // of the cylinder is the same as the bone axis (Y axis) - FbxVector4 lR(-90.0, 0.0, 0.0); - lNode->LclRotation.Set(lR); - lNode->SetNodeAttribute(lPatch); - - return lNode; -} - -// Create a skeleton with 2 segments. -FbxNode* CreateSkeleton(FbxScene* pScene, const char* pName) -{ - // Create skeleton root. - FbxString lRootName(pName); - lRootName += "Root"; - FbxSkeleton* lSkeletonRootAttribute = FbxSkeleton::Create(pScene, pName); - lSkeletonRootAttribute->SetSkeletonType(FbxSkeleton::eRoot); - FbxNode* lSkeletonRoot = FbxNode::Create(pScene,lRootName.Buffer()); - lSkeletonRoot->SetNodeAttribute(lSkeletonRootAttribute); - lSkeletonRoot->LclTranslation.Set(FbxVector4(0.0, -40.0, 0.0)); - - // Create skeleton first limb node. - FbxString lLimbNodeName1(pName); - lLimbNodeName1 += "LimbNode1"; - FbxSkeleton* lSkeletonLimbNodeAttribute1 = FbxSkeleton::Create(pScene,lLimbNodeName1); - lSkeletonLimbNodeAttribute1->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute1->Size.Set(1.0); - FbxNode* lSkeletonLimbNode1 = FbxNode::Create(pScene,lLimbNodeName1.Buffer()); - lSkeletonLimbNode1->SetNodeAttribute(lSkeletonLimbNodeAttribute1); - lSkeletonLimbNode1->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Create skeleton second limb node. - FbxString lLimbNodeName2(pName); - lLimbNodeName2 += "LimbNode2"; - FbxSkeleton* lSkeletonLimbNodeAttribute2 = FbxSkeleton::Create(pScene,lLimbNodeName2); - lSkeletonLimbNodeAttribute2->SetSkeletonType(FbxSkeleton::eLimbNode); - lSkeletonLimbNodeAttribute2->Size.Set(1.0); - FbxNode* lSkeletonLimbNode2 = FbxNode::Create(pScene,lLimbNodeName2.Buffer()); - lSkeletonLimbNode2->SetNodeAttribute(lSkeletonLimbNodeAttribute2); - lSkeletonLimbNode2->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - - // Build skeleton node hierarchy. - lSkeletonRoot->AddChild(lSkeletonLimbNode1); - lSkeletonLimbNode1->AddChild(lSkeletonLimbNode2); - - return lSkeletonRoot; -} - -// Set the influence of the skeleton segments over the cylinder. -// The link mode is FbxCluster::eTotalOne which means the total -// of the weights assigned to a given control point must equal 1. -void LinkPatchToSkeleton(FbxScene* pScene, FbxNode* pPatch, FbxNode* pSkeletonRoot) -{ - int i, j; - FbxAMatrix lXMatrix; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - FbxNode* lLimbNode2 = lLimbNode1->GetChild(0); - - // Bottom section of cylinder is clustered to skeleton root. - FbxCluster *lClusterToRoot = FbxCluster::Create(pScene,""); - lClusterToRoot->SetLink(lRoot); - lClusterToRoot->SetLinkMode(FbxCluster::eTotalOne); - for(i=0; i<4; ++i) - for(j=0; j<4; ++j) - lClusterToRoot->AddControlPointIndex(4*i + j, 1.0 - 0.25*i); - - // Center section of cylinder is clustered to skeleton limb node. - FbxCluster* lClusterToLimbNode1 = FbxCluster::Create(pScene, ""); - lClusterToLimbNode1->SetLink(lLimbNode1); - lClusterToLimbNode1->SetLinkMode(FbxCluster::eTotalOne); - - for (i =1; i<6; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode1->AddControlPointIndex(4*i + j, (i == 1 || i == 5 ? 0.25 : 0.50)); - - - // Top section of cylinder is clustered to skeleton limb. - - FbxCluster * lClusterToLimbNode2 = FbxCluster::Create(pScene,""); - lClusterToLimbNode2->SetLink(lLimbNode2); - lClusterToLimbNode2->SetLinkMode(FbxCluster::eTotalOne); - - for (i=3; i<7; ++i) - for (j=0; j<4; ++j) - lClusterToLimbNode2->AddControlPointIndex(4*i + j, 0.25*(i - 2)); - - // Now we have the Patch and the skeleton correctly positioned, - // set the Transform and TransformLink matrix accordingly. - FbxScene* lScene = pPatch->GetScene(); - if( lScene ) lXMatrix = pPatch->EvaluateGlobalTransform(); - - lClusterToRoot->SetTransformMatrix(lXMatrix); - lClusterToLimbNode1->SetTransformMatrix(lXMatrix); - lClusterToLimbNode2->SetTransformMatrix(lXMatrix); - - - - if( lScene ) lXMatrix = lRoot->EvaluateGlobalTransform(); - lClusterToRoot->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode1->EvaluateGlobalTransform(); - lClusterToLimbNode1->SetTransformLinkMatrix(lXMatrix); - - - if( lScene ) lXMatrix = lLimbNode2->EvaluateGlobalTransform(); - lClusterToLimbNode2->SetTransformLinkMatrix(lXMatrix); - - - // Add the clusters to the patch by creating a skin and adding those clusters to that skin. - // After add that skin. - - FbxGeometry* lPatchAttribute = (FbxGeometry*) pPatch->GetNodeAttribute(); - FbxSkin* lSkin = FbxSkin::Create(pScene, ""); - lSkin->AddCluster(lClusterToRoot); - lSkin->AddCluster(lClusterToLimbNode1); - lSkin->AddCluster(lClusterToLimbNode2); - lPatchAttribute->AddDeformer(lSkin); - -} - -// Create two animation stacks. -void AnimateSkeleton(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - FbxNode* lRoot = pSkeletonRoot; - FbxNode* lLimbNode1 = pSkeletonRoot->GetChild(0); - - // First animation stack. - lAnimStackName = "Bend on 2 sides"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Z channel - FbxAnimCurve* lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -45.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Same thing for the next object - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - // Second animation stack. - lAnimStackName = "Bend and turn around"; - lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Create the AnimCurve on the Rotation.Y channel - lCurve = lRoot->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 720.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } - - lCurve = lLimbNode1->LclRotation.GetCurve(lAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lCurve->KeyModifyEnd(); - } -} - -// Add a thumbnail to the scene -void AddThumbnailToScene(FbxScene* pScene) -{ - FbxThumbnail* lThumbnail = FbxThumbnail::Create(pScene,""); - - lThumbnail->SetDataFormat(FbxThumbnail::eRGB_24); - lThumbnail->SetSize(FbxThumbnail::e64x64); - lThumbnail->SetThumbnailImage(cSceneThumbnail); - - if (pScene->GetSceneInfo()) - { - pScene->GetSceneInfo()->SetSceneThumbnail(lThumbnail); - } -} - -// Store the Bind Pose -void StoreBindPose(FbxScene* pScene, FbxNode* pPatch) -{ - // In the bind pose, we must store all the link's global matrix at the time of the bind. - // Plus, we must store all the parent(s) global matrix of a link, even if they are not - // themselves deforming any model. - - // In this example, since there is only one model deformed, we don't need walk through - // the scene - // - - // Now list the all the link involve in the patch deformation - FbxArray lClusteredFbxNodes; - int i, j; - - if (pPatch && pPatch->GetNodeAttribute()) - { - int lSkinCount=0; - int lClusterCount=0; - switch (pPatch->GetNodeAttribute()->GetAttributeType()) - { - default: - break; - case FbxNodeAttribute::eMesh: - case FbxNodeAttribute::eNurbs: - case FbxNodeAttribute::ePatch: - - lSkinCount = ((FbxGeometry*)pPatch->GetNodeAttribute())->GetDeformerCount(FbxDeformer::eSkin); - //Go through all the skins and count them - //then go through each skin and get their cluster count - for(i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount+=lSkin->GetClusterCount(); - } - break; - } - //if we found some clusters we must add the node - if (lClusterCount) - { - //Again, go through all the skins get each cluster link and add them - for (i=0; iGetNodeAttribute())->GetDeformer(i, FbxDeformer::eSkin); - lClusterCount=lSkin->GetClusterCount(); - for (j=0; jGetCluster(j)->GetLink(); - AddNodeRecursively(lClusteredFbxNodes, lClusterNode); - } - - } - - // Add the patch to the pose - lClusteredFbxNodes.Add(pPatch); - } - } - - // Now create a bind pose with the link list - if (lClusteredFbxNodes.GetCount()) - { - // A pose must be named. Arbitrarily use the name of the patch node. - FbxPose* lPose = FbxPose::Create(pScene,pPatch->GetName()); - - // default pose type is rest pose, so we need to set the type as bind pose - lPose->SetIsBindPose(true); - - for (i=0; iEvaluateGlobalTransform(); - - lPose->Add(lKFbxNode, lBindMatrix); - } - - // Add the pose to the scene - pScene->AddPose(lPose); - } -} - -// Store a Rest Pose -void StoreRestPose(FbxScene* pScene, FbxNode* pSkeletonRoot) -{ - // This example show an arbitrary rest pose assignment. - // This rest pose will set the bone rotation to the same value - // as time 1 second in the first stack of animation, but the - // position of the bone will be set elsewhere in the scene. - FbxString lNodeName; - FbxNode* lKFbxNode; - FbxMatrix lTransformMatrix; - FbxVector4 lT,lR,lS(1.0, 1.0, 1.0); - - // Create the rest pose - FbxPose* lPose = FbxPose::Create(pScene,"A Bind Pose"); - - // Set the skeleton root node to the global position (10, 10, 10) - // and global rotation of 45deg along the Z axis. - lT.Set(10.0, 10.0, 10.0); - lR.Set( 0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton root node to the pose - lKFbxNode = pSkeletonRoot; - lPose->Add(lKFbxNode, lTransformMatrix, false /*it's a global matrix*/); - - // Set the lLimbNode1 node to the local position of (0, 40, 0) - // and local rotation of -90deg along the Z axis. This show that - // you can mix local and global coordinates in a rest pose. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, -90.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Set the lLimbNode2 node to the local position of (0, 40, 0) - // and local rotation of 45deg along the Z axis. - lT.Set(0.0, 40.0, 0.0); - lR.Set(0.0, 0.0, 45.0); - - lTransformMatrix.SetTRS(lT, lR, lS); - - // Add the skeleton second node to the pose - lKFbxNode = lKFbxNode->GetChild(0); - lNodeName = lKFbxNode->GetName(); - lPose->Add(lKFbxNode, lTransformMatrix, true /*it's a local matrix*/); - - // Now add the pose to the scene - pScene->AddPose(lPose); -} - -// Add the specified node to the node array. Also, add recursively -// all the parent node of the specified node to the array. -void AddNodeRecursively(FbxArray& pNodeArray, FbxNode* pNode) -{ - if (pNode) - { - AddNodeRecursively(pNodeArray, pNode->GetParent()); - - if (pNodeArray.Find(pNode) == -1) - { - // Node not in the list, add it - pNodeArray.Add(pNode); - } - } -} - -void SetXMatrix(FbxAMatrix& pXMatrix, const FbxMatrix& pMatrix) -{ - memcpy((double*)pXMatrix, &pMatrix.mData[0][0], sizeof(pMatrix.mData)); -} diff --git a/sdk/Windows/2019.2/samples/ExportScene02/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportScene02/CMakeLists.txt deleted file mode 100755 index bacd27f..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene02/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene02 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportScene02/gradient.jpg b/sdk/Windows/2019.2/samples/ExportScene02/gradient.jpg deleted file mode 100755 index 20c1c0f..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene02/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Windows/2019.2/samples/ExportScene02/main.cxx b/sdk/Windows/2019.2/samples/ExportScene02/main.cxx deleted file mode 100755 index 11c71d9..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene02/main.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a sphere morphed by 2 shapes. A -// animation stack shows the influence of the shapes over the sphere. -// -// The example illustrates how to: -// 1) create a nurbs -// 2) map a shape over a nurbs -// 3) map a texture over a nurbs on material channel Diffuse -// and Ambient -// 4) map a material over a nurbs -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene02.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName); - -void MapStretchedShape(FbxScene* pScene, FbxNode* pNurbs); -void MapBoxShape(FbxScene* pScene, FbxNode* pNurbs); -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs); -void MapTexture(FbxScene* pScene, FbxNode* pNurbs); -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs); - -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lNurbs = CreateNurbs(pScene, "Nurbs"); - - MapShapesOnNurbs(pScene, lNurbs); - MapMaterial(pScene, lNurbs); - MapTexture(pScene, lNurbs); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lNurbs); - - AnimateNurbs(lNurbs, pScene); - return true; -} - -// Create a sphere. -FbxNode* CreateNurbs(FbxScene* pScene, const char* pName) -{ - FbxNurbs* lNurbs = FbxNurbs::Create(pScene,pName); - - // Set nurbs properties. - lNurbs->SetOrder(4, 4); - lNurbs->SetStep(2, 2); - lNurbs->InitControlPoints(8, FbxNurbs::ePeriodic, 7, FbxNurbs::eOpen); - - double lUKnotVector[] = { -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 }; - memcpy(lNurbs->GetUKnotVector(), lUKnotVector, lNurbs->GetUKnotCount()*sizeof(double)); - - double lVKnotVector[] = { 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0 }; - memcpy(lNurbs->GetVKnotVector(), lVKnotVector, lNurbs->GetVKnotCount()*sizeof(double)); - - FbxVector4* lVector4 = lNurbs->GetControlPoints(); - int i, j; - double lScale = 20.0; - double lPi = 3.14159; - double lYAngle[] = { 90.0, 90.0, 52.0, 0.0, -52.0, -90.0, -90.0 }; - double lRadius[] = { 0.0, 0.283, 0.872, 1.226, 0.872, 0.283, 0.0}; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - double lX = lScale * lRadius[i] * cos(lPi/4*j); - double lY = lScale * sin(2*lPi/360*lYAngle[i]); - double lZ = lScale * lRadius[i] * sin(lPi/4*j); - double lWeight = 1.0; - - lVector4[8*i + j].Set(lX, lY, lZ, lWeight); - } - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lNurbs); - - return lNode; -} - -// Map nurbs control points onto a stretched shape. -void MapStretchedShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"StretchedShape"); - - FbxVector4 lExtremeRight(-250.0, 0.0, 0.0); - FbxVector4 lExtremeLeft(250.0, 0.0, 0.0); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - - for (i = 0; i < 7; i++) - { - for (j = 0; j < 8; j++) - { - if (j < 3 || j > 6) - { - lVector4[8*i + j] = lExtremeLeft; - } - else - { - lVector4[8*i + j] = lExtremeRight; - } - } - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -// Map nurbs control points onto a box shape. -void MapBoxShape(FbxScene* pScene, FbxBlendShapeChannel* lBlendShapeChannel) -{ - FbxShape* lShape = FbxShape::Create(pScene,"BoxShape"); - - lShape->InitControlPoints(8*7); - - FbxVector4* lVector4 = lShape->GetControlPoints(); - - int i, j; - double lScale = 20.0; - double lWeight = 1.0; - double lX[] = { 0.9, 1.1, 0.0, -1.1, -0.9, -1.1, 0.0, 1.1 }; - double lZ[] = { 0.0, 1.1, 0.9, 1.1, 0.0, -1.1, -0.9, -1.1 }; - - // Top control points. - for (i = 0; i < 8; i++) - { - lVector4[i].Set(0.0, lScale, 0.0, lWeight); - } - - // Middle control points. - for (i = 1; i < 6; i++) - { - double lY = 1.0 - 0.5 * (i - 1); - - for (j = 0; j < 8; j++) - { - lVector4[8*i + j].Set(lScale*lX[j], lScale*lY, lScale*lZ[j], lWeight); - } - } - - // Bottom control points. - for (i = 48; i < 56; i++) - { - lVector4[i].Set(0.0, -lScale, 0.0, lWeight); - } - - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapShapesOnNurbs(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,"MyBlendShape"); - FbxBlendShapeChannel* lBlendShapeChannel01 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel01"); - FbxBlendShapeChannel* lBlendShapeChannel02 = FbxBlendShapeChannel::Create(pScene,"MyBlendShapeChannel02"); - - //Create and add two target shapes on the lBlendShapeChannel. - MapStretchedShape(pScene, lBlendShapeChannel01); - MapBoxShape(pScene, lBlendShapeChannel01); - - MapBoxShape(pScene, lBlendShapeChannel02); - - //Set the lBlendShapeChannel on lBlendShape. - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel01); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel02); - - //Set the lBlendShape on pNurbs. - FbxGeometry* lGeometry = pNurbs->GetGeometry(); - lGeometry->AddDeformer(lBlendShape); -}; - -// Map texture over sphere. -void MapTexture(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"scene02.jpg"); - - // The texture won't be displayed if node shading mode isn't set to FbxNode::eTextureShading. - pNurbs->SetShadingMode(FbxNode::eTextureShading); - - // Set texture properties. - lTexture->SetFileName("scene02.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.45, -0.05); - lTexture->SetScale(4.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - - // we connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNurbs->GetSrcObject(0); - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - //now, we can try to map a texture on the AMBIENT channel of a material. - - //It is important to create a NEW texture and not to simply change the - //properties of lTexture. - - //Set the Texture properties - lTexture=FbxFileTexture::Create(pScene, "grandient.jpg"); - lTexture->SetFileName("gradient.jpg"); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eCylindrical); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - - // we connect the texture to the material Ambient property - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - -} - -// Map material over sphere. -void MapMaterial(FbxScene* pScene, FbxNode* pNurbs) -{ - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene,"scene02"); - FbxDouble3 lBlue(0.0, 0.0, 1.0); - FbxDouble3 lBlack(0.0, 0.0, 0.0); - - lMaterial->Emissive.Set(lBlue); - lMaterial->Ambient.Set(lBlack); - lMaterial->Specular.Set(lBlack); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->Shininess.Set(0.0); - lMaterial->ReflectionFactor.Set(0.0); - - // Create GeometryElementMaterial - FbxNurbs* lNurbs = pNurbs->GetNurbs(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lNurbs->GetElementMaterial( 0); - - if (!lGeometryElementMaterial) - { - lGeometryElementMaterial = lNurbs->CreateElementMaterial(); - } - - // The material is mapped to the whole Nurbs - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNurbs->AddMaterial(lMaterial); -} - -// Morph sphere into box shape. -void AnimateNurbs(FbxNode* pNurbs, FbxScene* pScene) -{ - FbxString lAnimStackName; - FbxTime lTime; - int lKeyIndex = 0; - - // First animation stack. - lAnimStackName = "Morph sphere into box"; - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, lAnimStackName); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxGeometry* lNurbsAttribute = (FbxGeometry*) pNurbs->GetNodeAttribute(); - - // The stretched shape is at index 0 because it was added first to the nurbs. - FbxAnimCurve* lCurve = lNurbsAttribute->GetShapeChannel(0, 0, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 75.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - // The box shape is at index 1 because it was added second to the nurbs. - lCurve = lNurbsAttribute->GetShapeChannel(0, 1, lAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.25); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - - diff --git a/sdk/Windows/2019.2/samples/ExportScene02/scene02.jpg b/sdk/Windows/2019.2/samples/ExportScene02/scene02.jpg deleted file mode 100755 index f162280..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene02/scene02.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Windows/2019.2/samples/ExportScene03/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportScene03/CMakeLists.txt deleted file mode 100755 index 234188f..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene03 .) -SET(FBX_TARGET_SOURCE - main.cxx - MyKFbxMesh.cxx - MyKFbxMesh.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.cxx b/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.cxx deleted file mode 100755 index 32f6d36..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyKFbxMesh.h" - -FBXSDK_OBJECT_IMPLEMENT(MyKFbxMesh); -FBXSDK_OBJECT_IMPLEMENT(MyFbxObject); - -const char* MyKFbxMesh::GetTypeName() const -{ - return "MyKFbxMesh"; -} - -FbxProperty MyKFbxMesh::GetProperty(int pId) -{ - FbxProperty dummy; - switch (pId) - { - case eMY_PROPERTY1 : return FindProperty("MyExtraPropertyBool"); - case eMY_PROPERTY2 : return FindProperty("MyExtraPropertyInteger"); - case eMY_PROPERTY3 : return FindProperty("MyExtraPropertyFloat"); - case eMY_PROPERTY4 : return FindProperty("MyExtraPropertyDouble"); - case eMY_PROPERTY5 : return FindProperty("MyExtraPropertyString"); - case eMY_PROPERTY6 : return FindProperty("MyExtraPropertyVector3"); - case eMY_PROPERTY7 : return FindProperty("MyExtraPropertyColor"); - case eMY_PROPERTY8 : return FindProperty("MyExtraPropertyVector4"); - case eMY_PROPERTY9 : return FindProperty("MyExtraPropertyMatrix4x4"); - case eMY_PROPERTY10: return FindProperty("MyExtraPropertyEnum"); - case eMY_PROPERTY11: return FindProperty("MyExtraPropertyTime"); - default: - break; - }; - - return dummy; -} - -void MyKFbxMesh::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - - FbxProperty::Create(this, FbxBoolDT, "MyExtraPropertyBool", "MyExtraPropertyLabel1"); - FbxProperty::Create(this, FbxIntDT, "MyExtraPropertyInteger", "MyExtraPropertyLabel2"); - FbxProperty::Create(this, FbxFloatDT, "MyExtraPropertyFloat", "MyExtraPropertyLabel3"); - FbxProperty::Create(this, FbxDoubleDT, "MyExtraPropertyDouble", "MyExtraPropertyLabel4"); - FbxProperty::Create(this, FbxStringDT, "MyExtraPropertyString", "MyExtraPropertyLabel5"); - FbxProperty::Create(this, FbxDouble3DT, "MyExtraPropertyVector3", "MyExtraPropertyLabel6"); - FbxProperty::Create(this, FbxColor3DT, "MyExtraPropertyColor", "MyExtraPropertyLabel7"); - FbxProperty::Create(this, FbxDouble4DT, "MyExtraPropertyVector4", "MyExtraPropertyLabel8"); - FbxProperty::Create(this, FbxDouble4x4DT, "MyExtraPropertyMatrix4x4", "MyExtraPropertyLabel9"); - FbxProperty::Create(this, FbxEnumDT, "MyExtraPropertyEnum", "MyExtraPropertyLabel10"); - FbxProperty::Create(this, FbxTimeDT, "MyExtraPropertyTime", "MyExtraPropertyLabel11"); - - //we must set the flag to eUser if it is FbxEnumDT or FbxStringListDT - this->GetProperty((int)eMY_PROPERTY10).ModifyFlag(FbxPropertyFlags::eUserDefined, true); -} - -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -const char* MyFbxObject::GetTypeName() const -{ - return "MyFbxObject"; -} - -void MyFbxObject::Destruct(bool pRecursive) -{ - ParentClass::Destruct(pRecursive); -} - -void MyFbxObject::ConstructProperties(bool pForceSet) -{ - ParentClass::ConstructProperties(pForceSet); - FbxProperty::Create(this, FbxDoubleDT, "MyAnimatedPropertyName", "MyFbxObject Animated Property Label"); -} diff --git a/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.h b/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.h deleted file mode 100755 index 000f286..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/MyKFbxMesh.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _MYKFBXMESH_H_ -#define _MYKFBXMESH_H_ - -#include - -//Show how to create a class derived from existing kfbx class -class MyKFbxMesh : public FbxMesh -{ - FBXSDK_OBJECT_DECLARE(MyKFbxMesh, FbxMesh); - -public: - typedef enum - { - eColor =0, //inherited by FbxMesh - eMY_PROPERTY1, - eMY_PROPERTY2, - eMY_PROPERTY3, - eMY_PROPERTY4, - eMY_PROPERTY5, - eMY_PROPERTY6, - eMY_PROPERTY7, - eMY_PROPERTY8, - eMY_PROPERTY9, - eMY_PROPERTY10, - eMY_PROPERTY11, - eMY_PROPERTY_COUNT - } ePROPERTY; - - //Important to implement - const char* GetTypeName() const override; - FbxProperty GetProperty(int pId); - -protected: - virtual void ConstructProperties(bool pForceSet) override; - -private: - int mExtraOption; -}; - -class MyFbxObject : public FbxObject -{ - FBXSDK_OBJECT_DECLARE(MyFbxObject, FbxObject); - -public: - virtual const char* GetTypeName() const override; - -protected: - virtual void Destruct(bool pRecursive) override; - virtual void ConstructProperties(bool pForceSet) override; -}; - -#endif diff --git a/sdk/Windows/2019.2/samples/ExportScene03/gradient.jpg b/sdk/Windows/2019.2/samples/ExportScene03/gradient.jpg deleted file mode 100755 index 20c1c0f..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/gradient.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e928571b29d43df2dc96a84523638e2537ad55e1cc5376e15bcc17555e70048 -size 19572 diff --git a/sdk/Windows/2019.2/samples/ExportScene03/main.cxx b/sdk/Windows/2019.2/samples/ExportScene03/main.cxx deleted file mode 100755 index 848076b..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/main.cxx +++ /dev/null @@ -1,1631 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a textured cube, a pyramid -// with materials mapped on it's faces and triangle deformed by vertex cache. -// An animation stack displays 6 different angles of all models. -// -// The example illustrates how to: -// 1) create a cube in mesh -// 2) map textures on diffuse, ambient and emissive channel of the cube -// 3) create an UV set for each channel with a texture for the cube -// 4) create a pyramid in mesh -// 5) create and map materials on the diffuse channel for each faces of the pyramid -// 6) create a cube with our custom mesh type -// 7) create and map materials on the diffuse channel for our custom mesh cube -// 8) create and add to our custom meshed cube a User Data Layer -// 9) create vertex cache deformer (by default maya caches are created in 64bits (mcx extension)) -// 10) create an animation stack -// 11) animate vertex -// 12) export a scene in a .FBX file -// -// -// 1. To test vertex (3 doubles) cache (default) : -// -// ./ExportScene03 cacheFileName -// -// 2. To test int32 cache : -// -// ./ExportScene03 cacheFileName 1 -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "MyKFbxMesh.h" - -#define SAMPLE_FILENAME_MC "ExportScene03_MC.fbx" -#define SAMPLE_FILENAME_PC2 "ExportScene03_PC2.fbx" -#define SAMPLE_CACHE_TYPE 2 - -#define PID_MY_GEOMETRY_LEMENT 0 - -// Function prototypes. -bool CreateScene(FbxScene* pScene, char* pSampleFileName); - -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName); -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName); - -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh); -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh); - -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid); -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName); - -void SetCubeDefaultPosition(FbxNode* pCube); -void SetPyramidDefaultPosition(FbxNode* pPyramid); -void SetTriangleDefaultPosition(FbxNode* pTriangle); -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube); - -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer); -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleInt32(FbxNode* pNode, double pFrameRate); -void AnimateVertexCacheOnTriangleFloat(FbxNode* pNode, double pFrameRate); - -bool gExportVertexCacheMCFormat = true; - -// Declare the UV names globally so we can create them on the mesh and then assign them properly -// to our textures when we create them -static const char* gDiffuseElementName = "DiffuseUV"; -static const char* gAmbientElementName = "AmbientUV"; -static const char* gEmissiveElementName = "EmissiveUV"; - -// gCacheType == 0 (default) - double vertex array -// == 1 - int32 array -// == 2 - float array -int gCacheType = -1; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - char* lSampleFileName = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - //Add the new class we have created to the Sdk Manager - //Our class MyKFbxMesh is derived from FbxMesh - lSdkManager->RegisterFbxClass("MyKFbxMesh", FBX_TYPE(MyKFbxMesh), FBX_TYPE(FbxMesh)); - //Now, our class MyKFbxMesh is ready to be used - - lSdkManager->RegisterFbxClass("MyFbxObject", FBX_TYPE(MyFbxObject), FBX_TYPE(FbxObject), "MyFbxObjectType", "MyFbxObjectSubType"); - - //The example can take an output file name as an argument, and a cache format - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if( gCacheType == -1 ) gCacheType = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = gExportVertexCacheMCFormat ? (char *)SAMPLE_FILENAME_MC : (char *)SAMPLE_FILENAME_PC2; - if( gCacheType == -1 ) gCacheType = SAMPLE_CACHE_TYPE; - - // Create the scene. - lResult = CreateScene(lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene, char* pSampleFileName) -{ - FbxNode* lCube = CreateCubeWithTexture(pScene, "Cube"); - FbxNode* lPyramid = CreatePyramidWithMaterials(pScene, "Pyramid"); - FbxNode* lTriangle = CreateTriangle(pScene, "Triangle"); - FbxNode* lMyKFbxMeshCube = CreateCubeWithMaterialAndMyKFbxMesh(pScene, "CubeMyKFbxMesh"); - MyFbxObject* lMyFbxObject = MyFbxObject::Create(pScene, "MyFbxObject 1"); - - MapShapeOnPyramid(pScene, lPyramid); - MapVertexCacheOnTriangle(pScene, lTriangle, pSampleFileName); - - SetCubeDefaultPosition(lCube); - SetPyramidDefaultPosition(lPyramid); - SetTriangleDefaultPosition(lTriangle); - SetMyKFbxMeshCubeDefaultPosition(lMyKFbxMeshCube); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - lRootNode->AddChild(lMyKFbxMeshCube); - lRootNode->AddChild(lTriangle); - lRootNode->ConnectSrcObject(lMyFbxObject); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Show all faces"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - //Create a simple animated fcurve - FbxProperty lMyProperty = lMyFbxObject->FindProperty("MyAnimatedPropertyName"); - if( lMyProperty.IsValid() ) - { - lMyProperty.Set(0.0); //Default value - lMyProperty.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - lMyProperty.CreateCurveNode(lAnimLayer); - FbxAnimCurve* lMyFCurve = lMyProperty.GetCurve(lAnimLayer, true); - if( lMyFCurve ) - { - FbxAnimCurveKey key; - - key.Set(FBXSDK_TIME_ZERO, -100); lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(100), 0) ; lMyFCurve->KeyAdd(key.GetTime(), key); - key.Set(FbxTime(200), 100) ; lMyFCurve->KeyAdd(key.GetTime(), key); - } - } - - Animate(lCube, lAnimLayer); - Animate(lPyramid, lAnimLayer); - Animate(lMyKFbxMeshCube, lAnimLayer); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - switch(gCacheType) - { - case 0: - default: - AnimateVertexCacheOnTriangleDoubleVertex(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 1: - AnimateVertexCacheOnTriangleInt32(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - case 2: - AnimateVertexCacheOnTriangleFloat(lTriangle, FbxTime::GetFrameRate(lGlobalSettings.GetTimeMode())); - break; - } - - return true; -} - -// Create a cube with a texture. -FbxNode* CreateCubeWithTexture(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal= lMesh->CreateElementNormal(); - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Here are two different ways to set the normal values. - bool firstWayNormalCalculations=true; - if (firstWayNormalCalculations) - { - // The first method is to set the actual normal value - // for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - } - else - { - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - } - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( gDiffuseElementName); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - - // Create UV for Ambient channel - FbxGeometryElementUV* lUVAmbientElement = lMesh->CreateElementUV(gAmbientElementName); - - lUVAmbientElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVAmbientElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0, 0); - lVectors1.Set(1, 0); - lVectors2.Set(0, 0.418586879968643); - lVectors3.Set(1, 0.418586879968643); - - lUVAmbientElement->GetDirectArray().Add(lVectors0); - lUVAmbientElement->GetDirectArray().Add(lVectors1); - lUVAmbientElement->GetDirectArray().Add(lVectors2); - lUVAmbientElement->GetDirectArray().Add(lVectors3); - - // Create UV for Emissive channel - FbxGeometryElementUV* lUVEmissiveElement = lMesh->CreateElementUV(gEmissiveElementName); - - lUVEmissiveElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVEmissiveElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - lVectors0.Set(0.2343, 0); - lVectors1.Set(1, 0.555); - lVectors2.Set(0.333, 0.999); - lVectors3.Set(0.555, 0.666); - - lUVEmissiveElement->GetDirectArray().Add(lVectors0); - lUVEmissiveElement->GetDirectArray().Add(lVectors1); - lUVEmissiveElement->GetDirectArray().Add(lVectors2); - lUVEmissiveElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(24); - lUVAmbientElement->GetIndexArray().SetCount(24); - lUVEmissiveElement->GetIndexArray().SetCount(24); - - - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - //we won't use the default way of assigning textures, as we have - //textures on more than just the default (diffuse) channel. - lMesh->BeginPolygon(-1, -1, false); - - - - for(j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[i*4 + j] // Control point index. - ); - //Now we have to update the index array of the UVs for diffuse, ambient and emissive - lUVDiffuseElement->GetIndexArray().SetAt(i*4+j, j); - lUVAmbientElement->GetIndexArray().SetAt(i*4+j, j); - lUVEmissiveElement->GetIndexArray().SetAt(i*4+j, j); - - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - CreateTexture(pScene, lMesh); - - return lNode; -} - -// Create a pyramid with materials. -FbxNode* CreatePyramidWithMaterials(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - - FbxGeometryElementNormal* lNormalElement= lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons. Assign material indices. - - // Pyramid base. - lMesh->BeginPolygon(0); // Material index. - - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(i); // Material index. - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - CreateMaterials(pScene, lMesh); - - return lNode; -} - -FbxNode* CreateTriangle(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene, pName); - - // The three vertices - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(0, 50, -50); - - // Create control points. - lMesh->InitControlPoints(3); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - - // Create the triangle's polygon - lMesh->BeginPolygon(); - lMesh->AddPolygon(0); // Control point 0 - lMesh->AddPolygon(1); // Control point 1 - lMesh->AddPolygon(2); // Control point 2 - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -FbxNode* CreateCubeWithMaterialAndMyKFbxMesh(FbxScene* pScene, const char* pName) -{ - int i, j; - - //create a cube with our newly created class - MyKFbxMesh* lMyKFbxMesh = MyKFbxMesh::Create(pScene,pName); - FbxDouble3 lVector3(0.1, 0.2, 0.3); - FbxDouble4 lVector4(0.1, 0.2, 0.3, 0.4); - FbxDouble4 lVector41(1.1, 1.2, 1.3, 1.4); - FbxDouble4 lVector42(2.1, 2.2, 2.3, 2.4); - FbxDouble4 lVector43(3.1, 3.2, 3.3, 3.4); - FbxDouble4x4 lMatrix(lVector4,lVector41,lVector42,lVector43); - - FbxColor lGreen(0.0, 0.0, 1.0); - - FbxTime lTime(333); - //Set user-specific properties of our classes - FbxString lString = "My Property 5 Value"; - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY1).Set(true); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY2).Set((int) 1); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY3).Set((float)2.2); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY4).Set((double)3.3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY5).Set(lString); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lVector3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY6).Set(lGreen); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY8).Set(lVector4); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY9).Set(lMatrix); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).Set(3); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("AAA"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("BBB"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("CCC"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY10).AddEnumValue("DDD"); - lMyKFbxMesh->GetProperty((int) MyKFbxMesh::eMY_PROPERTY11).Set(lTime); - - FbxVector4 lControlPoint0(-25, 0, 25); - FbxVector4 lControlPoint1(25, 0, 25); - FbxVector4 lControlPoint2(25, 50, 25); - FbxVector4 lControlPoint3(-25, 50, 25); - FbxVector4 lControlPoint4(-25, 0, -25); - FbxVector4 lControlPoint5(25, 0, -25); - FbxVector4 lControlPoint6(25, 50, -25); - FbxVector4 lControlPoint7(-25, 50, -25); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMyKFbxMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMyKFbxMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMyKFbxMesh->CreateElementNormal(); - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - - // The second method is to the possible values of the normals - // in the direct array, and set the index of that value - // in the index array for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Add the 6 different normals to the direct array - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - // Now for each control point, we need to specify which normal to use - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(0); // index of lNormalZPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(1); // index of lNormalXPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(2); // index of lNormalZNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(3); // index of lNormalXNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(4); // index of lNormalYPos in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - lGeometryElementNormal->GetIndexArray().Add(5); // index of lNormalYNeg in the direct array. - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 }; - - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = lMyKFbxMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create UV coordinates. - FbxGeometryElementUV* lUVElement = lMyKFbxMesh->CreateElementUV( ""); - FBX_ASSERT( lUVElement != NULL); - lUVElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVElement->GetDirectArray().Add(lVectors0); - lUVElement->GetDirectArray().Add(lVectors1); - lUVElement->GetDirectArray().Add(lVectors2); - lUVElement->GetDirectArray().Add(lVectors3); - - for(i = 0; i < 6; i++) - { - //we created 6 lambert materials in the MyKFbxMesh - //make each face use a different one - lMyKFbxMesh->BeginPolygon(i); - - for(j = 0; j < 4; j++) - { - lMyKFbxMesh->AddPolygon(lPolygonVertices[i*4 + j], // Control point index. - j); // Valid texture UV index since texture UV mapping is by polygon vertex. - } - - lMyKFbxMesh->EndPolygon (); - } - - - //Add a User Data Element - //As of now, the types supported by a User Data Element are: FbxBoolDT, FbxIntDT, FbxFloatDT and FbxDoubleDT - - //For this example, we will create a element which possess 1 float and 1 bool - - //create a template array of KFbxDataTypes - FbxArray lArrayType; - - //Create a template array of const char* - FbxArray lArrayNames; - - //let's add our types and the names of each of the added types - lArrayType.Add(FbxFloatDT); - lArrayNames.Add("My Float"); - - lArrayType.Add(FbxBoolDT); - lArrayNames.Add("My Bool"); - - - //Now we are ready to create the User Data Element - FbxGeometryElementUserData* lFbxGeometryElementUserData = FbxGeometryElementUserData::Create(lMyKFbxMesh, "My Geometry Element",PID_MY_GEOMETRY_LEMENT,lArrayType, lArrayNames); - //And UserData create function is still in implementing - - - //For this example we will set the mapping mode to POLYGON_VERTEX - lFbxGeometryElementUserData->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - - //As we are using the eDirect Reference mode, and we are using polygon vertex Mapping mode - //we have to resize the direct array to the number of polygon vertex we have in this mesh - lFbxGeometryElementUserData->ResizeAllDirectArrays(lMyKFbxMesh->GetPolygonVertexCount()); - - - //To change the values in the direct array, we simply get the array and modify what we need to - FbxLayerElementArrayTemplate* directArrayF = lFbxGeometryElementUserData->GetDirectArrayVoid("My Float"); - float *lDirectArrayFloat = NULL; - lDirectArrayFloat = directArrayF->GetLocked(lDirectArrayFloat); - - FbxLayerElementArrayTemplate* directArrayB = lFbxGeometryElementUserData->GetDirectArrayVoid("My Bool"); - bool *lDirectArrayBool = NULL; - directArrayB->GetLocked(lDirectArrayBool); - - //Modify every data for each polygon vertex on our mesh with some value - for(i=0; iGetPolygonVertexCount(); ++i) - { - if(lDirectArrayFloat) - lDirectArrayFloat[i]=(float)(i+0.5); - if(lDirectArrayBool) - lDirectArrayBool[i]= (i%2==0); - } - - directArrayF->Release((void**)&lDirectArrayFloat); - directArrayB->Release((void**)&lDirectArrayBool); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMyKFbxMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - //let's create the materials - //6 materials, 1 for each face of the cube - CreateMaterialsWithMyKFbxMesh(pScene, lMyKFbxMesh); - - return lNode; -} - - -// Create texture for cube. -void CreateTexture(FbxScene* pScene, FbxMesh* pMesh) -{ - // A texture need to be connected to a property on the material, - // so let's use the material (if it exists) or create a new one - FbxSurfacePhong* lMaterial = NULL; - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - { - lMaterial = lNode->GetSrcObject(0); - if (lMaterial == NULL) - { - FbxString lMaterialName = "toto"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - - FbxLayer* lLayer = pMesh->GetLayer(0); - - // Create a layer element material to handle proper mapping. - FbxLayerElementMaterial* lLayerElementMaterial = FbxLayerElementMaterial::Create(pMesh, lMaterialName.Buffer()); - - // This allows us to control where the materials are mapped. Using eAllSame - // means that all faces/polygons of the mesh will be assigned the same material. - lLayerElementMaterial->SetMappingMode(FbxLayerElement::eAllSame); - lLayerElementMaterial->SetReferenceMode(FbxLayerElement::eIndexToDirect); - - // Save the material on the layer - lLayer->SetMaterials(lLayerElementMaterial); - - // Add an index to the lLayerElementMaterial. Since we have only one, and are using eAllSame mapping mode, - // we only need to add one. - lLayerElementMaterial->GetIndexArray().Add(0); - - lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial->Emissive .Set(lBlack); - lMaterial->Ambient .Set(lRed); - lMaterial->AmbientFactor .Set(1.); - // Add texture for diffuse channel - lMaterial->Diffuse .Set(lDiffuseColor); - lMaterial->DiffuseFactor .Set(1.); - lMaterial->TransparencyFactor.Set(0.4); - lMaterial->ShadingModel .Set(lShadingName); - lMaterial->Shininess .Set(0.5); - lMaterial->Specular .Set(lBlack); - lMaterial->SpecularFactor .Set(0.3); - lNode->AddMaterial(lMaterial); - } - } - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,"Diffuse Texture"); - - // Set texture properties. - lTexture->SetFileName("scene03.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gDiffuseElementName)); // Connect texture to the proper UV - - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Diffuse.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Ambient Texture"); - - // Set texture properties. - lTexture->SetFileName("gradient.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gAmbientElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Ambient.ConnectSrcObject(lTexture); - - lTexture = FbxFileTexture::Create(pScene,"Emissive Texture"); - - // Set texture properties. - lTexture->SetFileName("spotty.jpg"); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - lTexture->UVSet.Set(FbxString(gEmissiveElementName)); // Connect texture to the proper UV - - // don't forget to connect the texture to the corresponding property of the material - if (lMaterial) - lMaterial->Emissive.ConnectSrcObject(lTexture); -} - -// Create materials for pyramid. -void CreateMaterials(FbxScene* pScene, FbxMesh* pMesh) -{ - int i; - - for (i = 0; i < 5; i++ ) - { - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfacePhong *lMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingName); - lMaterial->Shininess.Set(0.5); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - } -} - -void CreateMaterialsWithMyKFbxMesh(FbxScene* pScene, MyKFbxMesh* pMyKFbxMesh) -{ - int i; - for (i = 0; i != 6; ++i ) - { - FbxString lMaterialName = "material"; - FbxString lShadingModelName = i%2==0 ? "Lambert" : "Phong"; - lMaterialName += i; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lColor; - FbxSurfaceLambert *lMaterial = FbxSurfaceLambert::Create(pScene, lMaterialName.Buffer()); - - - // Generate primary and secondary colors. - - lMaterial->Emissive.Set(lBlack); - lMaterial->Ambient.Set(lRed); - lColor = FbxDouble3(i > 2 ? 1.0 : 0.0, - i > 0 && i < 4 ? 1.0 : 0.0, - i % 2 ? 0.0 : 1.0); - lMaterial->Diffuse.Set(lColor); - lMaterial->TransparencyFactor.Set(0.0); - lMaterial->ShadingModel.Set(lShadingModelName); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMyKFbxMesh->GetNode(); - if(lNode) - lNode->AddMaterial(lMaterial); - - } -} - -// Map pyramid control points onto an upside down shape. -void MapShapeOnPyramid(FbxScene* pScene, FbxNode* pPyramid) -{ - FbxShape* lShape = FbxShape::Create(pScene,"Upside Down"); - - FbxVector4 lControlPoint0(-50, 100, 50); - FbxVector4 lControlPoint1(50, 100, 50); - FbxVector4 lControlPoint2(50, 100, -50); - FbxVector4 lControlPoint3(-50, 100, -50); - FbxVector4 lControlPoint4(0, 0, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, -0.447, 0.894); - FbxVector4 lNormalP2(0.894, -0.447, 0); - FbxVector4 lNormalP3(0, -0.447, -0.894); - FbxVector4 lNormalP4(-0.894, -0.447, 0); - - // Create control points. - lShape->InitControlPoints(16); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - - FbxGeometryElementNormal* lNormalElement = lShape->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP0); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP1); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP2); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP3); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - lNormalElement->GetDirectArray().Add(lNormalP4); - - - FbxBlendShape* lBlendShape = FbxBlendShape::Create(pScene,""); - FbxBlendShapeChannel* lBlendShapeChannel = FbxBlendShapeChannel::Create(pScene, ""); - pPyramid->GetMesh()->AddDeformer(lBlendShape); - lBlendShape->AddBlendShapeChannel(lBlendShapeChannel); - lBlendShapeChannel->AddTargetShape(lShape); -} - -void MapVertexCacheOnTriangle(FbxScene* pScene, FbxNode* pTriangle, char* pSampleFileName) -{ - // By convention, all cache files are created in a _fpc folder located at the same - // place as the .fbx file. - FbxString lFBXAbsolutePath = FbxPathUtils::Resolve(pSampleFileName); - - // Create a cache directory with the same name as the fbx file - FbxString lFPCAbsoluteDirectory; - - lFPCAbsoluteDirectory = FbxPathUtils::GetFolderName(lFBXAbsolutePath); - lFPCAbsoluteDirectory += "/"; - lFPCAbsoluteDirectory += FbxPathUtils::GetFileName(pSampleFileName, false); - lFPCAbsoluteDirectory += "_fpc"; - - // Make this path the shortest possible - lFPCAbsoluteDirectory = FbxPathUtils::Clean(lFPCAbsoluteDirectory); - - // Now get the point cache absolute and relative file name - FbxString lAbsolutePCFileName = lFPCAbsoluteDirectory + FbxString("/") + pTriangle->GetName(); - lAbsolutePCFileName += gExportVertexCacheMCFormat ? ".xml" : ".pc2"; - - FbxString lRelativePCFileName = FbxPathUtils::GetRelativeFilePath(FbxPathUtils::GetFolderName(lFBXAbsolutePath)+"/", lAbsolutePCFileName); - - // Make sure the direcotry exist. - if (!FbxPathUtils::Create(FbxPathUtils::GetFolderName(lAbsolutePCFileName))) - { - // Cannot create this directory. So do not create the point cache - return; - } - - // - // Create the cache file - // - FbxCache* lCache = FbxCache::Create(pScene, pTriangle->GetName()); - - lCache->SetCacheFileName(lRelativePCFileName, lAbsolutePCFileName); - lCache->SetCacheFileFormat(gExportVertexCacheMCFormat ? FbxCache::eMayaCache : FbxCache::eMaxPointCacheV2); - - // - // Create the vertex deformer - // - FbxVertexCacheDeformer* lDeformer = FbxVertexCacheDeformer::Create(pScene, pTriangle->GetName()); - - lDeformer->SetCache(lCache); - lDeformer->Channel = pTriangle->GetName(); - lDeformer->Active = true; - - // Apply the deformer on the mesh - pTriangle->GetGeometry()->AddDeformer(lDeformer); - - if (gExportVertexCacheMCFormat && gCacheType != 1) - { - // - // Create the second deformer for normal data - // - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - - lDeformer = FbxVertexCacheDeformer::Create(pScene, channelName); - // normal cache data is stored with the points data in the same cache file, - // so two deformers are connnected to the same cache file. - lDeformer->SetCache(lCache); - lDeformer->Channel = channelName; - lDeformer->Active = true; - - pTriangle->GetGeometry()->AddDeformer(lDeformer); - } -} - -// Cube is translated to the left. -void SetCubeDefaultPosition(FbxNode* pCube) -{ - pCube->LclTranslation.Set(FbxVector4(-75.0, -50.0, 0.0)); - pCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Pyramid is translated to the right. -void SetPyramidDefaultPosition(FbxNode* pPyramid) -{ - pPyramid->LclTranslation.Set(FbxVector4(75.0, -50.0, 0.0)); - pPyramid->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pPyramid->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetTriangleDefaultPosition(FbxNode* pTriangle) -{ - pTriangle->LclTranslation.Set(FbxVector4(200.0, -50.0, 0.0)); - pTriangle->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pTriangle->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetMyKFbxMeshCubeDefaultPosition(FbxNode* pMyKFbxCube) -{ - pMyKFbxCube->LclTranslation.Set(FbxVector4(-200.0, -25.0, 0.0)); - pMyKFbxCube->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMyKFbxCube->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Displays 6 different angles. -void Animate(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(0.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 180.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 270.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 360.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - lCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.5); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } - - - // The upside down shape is at index 0 because it is the only one. - // The cube has no shape so the function returns NULL is this case. - FbxGeometry* lGeometry = (FbxGeometry*) pNode->GetNodeAttribute(); - lCurve = lGeometry->GetShapeChannel(0, 0, pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 100.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lCurve->KeyModifyEnd(); - } -} - -void AnimateVertexCacheOnTriangleDoubleVertex(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - - unsigned int lFrameCount = (unsigned int)(lStopTime.Get()/lTimeIncrement.Get()); - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eDoubleVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = lCache->OpenFileForWrite(0.0, pFrameRate, lFrameCount, 3, &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - double lVertices[3][3]; - double lScaleFactor = 1.0-double(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0 * lScaleFactor; // X - lVertices[0][1] = 0.0; // Y - lVertices[0][2] = 50.0 * lScaleFactor; // Z - - lVertices[1][0] = 50.0 * lScaleFactor; // X - lVertices[1][1] = 0.0; // Y - lVertices[1][2] = 50.0 * lScaleFactor; // Z - - lVertices[2][0] = 0.0 * lScaleFactor; // X - lVertices[2][1] = 50.0 * lScaleFactor; // Y - lVertices[2][2] = -50.0 * lScaleFactor; // Z - - lCache->BeginWriteAt(lCurrentTime); - if (gExportVertexCacheMCFormat) - { - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - } - else - { - lCache->Write(lCurrentFrame, &lVertices[0][0]); - } - lCache->EndWriteAt(); - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } -} - -void AnimateVertexCacheOnTriangleInt32(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet = false; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - - // Open the file for writing int32 array - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eInt32Array, "positions", &lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - int v[2]; - - v[0] = -10 + lCurrentFrame; - v[1] = v[0]+1; - - if (gExportVertexCacheMCFormat) - { - lCache->Write(lChannelIndex, lCurrentTime, &v[0], 2); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - - FBXSDK_printf("Testing awCache int32 array read and write\n"); - bool passTest = true; - // FBXSDK_printf("Should print out -10 .. 110\n"); - while (lCurrentTime2 <= lStopTime) - { - int v[2]; - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &v[0], 2); - if ((v[0] != -10 + lCurrentFrame) || (v[0]+1 != v[1]) ) - { - FBXSDK_printf("awCache int32 array read/write mismatch\n"); - passTest = false; - break; - } - // FBXSDK_printf("%d ",v[0]); - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache int32 array read and write test passed\n"); - } -} - - -void AnimateVertexCacheOnTriangleFloat(FbxNode* pTriangle, double pFrameRate) -{ - // - // Move the vertices from their original position to the center. - // - FbxVertexCacheDeformer* lDeformer = static_cast(pTriangle->GetGeometry()->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - bool lRet; - - // Write samples for 4 seconds - FbxTime lTimeIncrement, lCurrentTime, lStopTime; - lTimeIncrement.SetTime(0, 0, 0, 1); // 1 frame @ current frame rate - lStopTime.SetTime(0, 0, 4); // 4 seconds - FbxStatus lStatus; - unsigned int lNormalChannelIndex; - - // Open the file for writing - if (gExportVertexCacheMCFormat) - { - // The default maya cache is created in 64bits (mcx extension). To use the legacy 32bit format (mc) replace - // FbxCache::eMCX with FBXCache::eMCC - lRet = lCache->OpenFileForWrite(FbxCache::eMCOneFile, pFrameRate, pTriangle->GetName(), FbxCache::eMCX, FbxCache::eFloatVectorArray, "positions", &lStatus); - if (lRet) - { - FbxString channelName(pTriangle->GetName()); - channelName += "_normals"; - lRet = lCache->AddChannel(channelName, FbxCache::eFloatVectorArray, "normals", lNormalChannelIndex, &lStatus); - } - } - else - { - lRet = false; - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - int lChannelIndex = lCache->GetChannelIndex(pTriangle->GetName()); - unsigned int lCurrentFrame = 0; - - while (lCurrentTime <= lStopTime) - { - float lVertices[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime.GetSecondDouble()/lStopTime.GetSecondDouble()); - - lVertices[0][0] = -50.0f * lScaleFactor; // X - lVertices[0][1] = 0.0f; // Y - lVertices[0][2] = 50.0f * lScaleFactor; // Z - - lVertices[1][0] = 50.0f * lScaleFactor; // X - lVertices[1][1] = 0.0f; // Y - lVertices[1][2] = 50.0f * lScaleFactor; // Z - - lVertices[2][0] = 0.0f * lScaleFactor; // X - lVertices[2][1] = 50.0f * lScaleFactor; // Y - lVertices[2][2] = -50.0f * lScaleFactor; // Z - - float lNormals[3][3]; - - for (int i = 0; i < 3; i++) - { - lNormals[i][0] = 0.0f; - lNormals[i][1] = 1.0f; - lNormals[i][2] = 0.0f; - } - - if (gExportVertexCacheMCFormat) - { - lCache->BeginWriteAt(lCurrentTime); - - lCache->Write(lChannelIndex, lCurrentTime, &lVertices[0][0], 3); - lCache->Write(lNormalChannelIndex, lCurrentTime, &lNormals[0][0], 3); - - lCache->EndWriteAt(); - } - - lCurrentTime += lTimeIncrement; - lCurrentFrame++; - } - - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - // Open the file for reading int32 array - if (gExportVertexCacheMCFormat) - { - lRet = lCache->OpenFileForRead(&lStatus); - } - - if (!lRet) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - return; - } - - FbxTime lCurrentTime2; - lCurrentFrame = 0; - #define AbsFlt(a) (((a) < 0) ? -(a) : (a)) - #define CmpFlt(a,b) (AbsFlt((a)-(b)) > 1e-5) - - FBXSDK_printf("Testing awCache Float3 array read and write\n"); - bool passTest = true; - while (lCurrentTime2 <= lStopTime && passTest) - { - float lVertices[3][3]; - float lNormals[3][3]; - float lScaleFactor = 1.0f-float(lCurrentTime2.GetSecondDouble()/lStopTime.GetSecondDouble()); - - if (gExportVertexCacheMCFormat) - { - lCache->Read(lChannelIndex, lCurrentTime2, &lVertices[0][0], 3); - lCache->Read(lNormalChannelIndex, lCurrentTime2, &lNormals[0][0], 3); - - if ((CmpFlt(lVertices[0][0], -50.0f * lScaleFactor) || CmpFlt(lVertices[0][1], 0.0f ) || CmpFlt(lVertices[0][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[1][0], 50.0f * lScaleFactor) || CmpFlt(lVertices[1][1], 0.0f ) || CmpFlt(lVertices[1][2], 50.0f * lScaleFactor)) || - (CmpFlt(lVertices[2][0], 0.0f * lScaleFactor) || CmpFlt(lVertices[2][1], 50.0f * lScaleFactor) || CmpFlt(lVertices[2][2],-50.0f * lScaleFactor))) - { - FBXSDK_printf("awCache Float3 vertex array read/write mismatch\n"); - passTest = false; - break; - } - - for (int i = 0; i < 3; i++) - { - if ((CmpFlt(lNormals[i][0], 0.0f) || CmpFlt(lNormals[i][1], 1.0f ) || CmpFlt(lNormals[i][2], 0.0f))) - { - FBXSDK_printf("awCache Float3 normal array read/write mismatch\n"); - passTest = false; - break; - } - } - } - - lCurrentTime2 += lTimeIncrement; - lCurrentFrame++; - } - - #undef AbsFlt - #undef CmpFlt - - if (!lCache->CloseFile(&lStatus)) - { - // print out the error - FBXSDK_printf("File open error: %s\n", lStatus.GetErrorString()); - } - - if (passTest) - { - FBXSDK_printf("awCache float3 array read and write test passed\n"); - } - -} - - diff --git a/sdk/Windows/2019.2/samples/ExportScene03/scene03.jpg b/sdk/Windows/2019.2/samples/ExportScene03/scene03.jpg deleted file mode 100755 index 9e51fd9..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/scene03.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5c29a811fa6f65c0e70d5dc2a948efea523e6330a7ff51496eaef249ce80de9 -size 4774 diff --git a/sdk/Windows/2019.2/samples/ExportScene03/spotty.jpg b/sdk/Windows/2019.2/samples/ExportScene03/spotty.jpg deleted file mode 100755 index dd038e3..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene03/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Windows/2019.2/samples/ExportScene04/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportScene04/CMakeLists.txt deleted file mode 100755 index 02ca50e..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene04/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene04 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportScene04/gobo.tif b/sdk/Windows/2019.2/samples/ExportScene04/gobo.tif deleted file mode 100755 index dc4dc2b..0000000 Binary files a/sdk/Windows/2019.2/samples/ExportScene04/gobo.tif and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/ExportScene04/main.cxx b/sdk/Windows/2019.2/samples/ExportScene04/main.cxx deleted file mode 100755 index c3a65b7..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene04/main.cxx +++ /dev/null @@ -1,588 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a group of lights, a marker and -// a camera. An animation stack rotates the lights and moves the camera -// around. -// -// The example illustrates how to: -// 1) create a light and it assign a gobo -// 2) set global light settings -// 3) create a marker -// 4) create a camera and link it to a point of interest -// 5) create an animation stack -// 6) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene04.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName); -FbxNode* CreateLight(FbxScene* pScene, const char* pName); -FbxNode* CreateMarker(FbxScene* pScene, const char* pName); -FbxNode* CreateCamera(FbxScene* pScene, const char* pName); - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest); - -void SetLightGroupDefaultPosition(FbxNode* pLightGroup); -void SetLightDefaultPosition(FbxNode* pLight, int pIndex); -void SetMarkerDefaultPosition(FbxNode* pMarker); -void SetCamera1DefaultPosition(FbxNode* pCamera); -void SetCamera2DefaultPosition(FbxNode* pCamera); - -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer); -void AnimateCamera(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxNode* lLightGroup = CreateLightGroup(pScene, "LightGroup"); - FbxNode* lMarker = CreateMarker(pScene, "Marker"); - FbxNode* lCamera1 = CreateCamera(pScene, "Camera1"); - FbxNode* lCamera2 = CreateCamera(pScene, "Camera2"); - - pScene->GetGlobalSettings().SetAmbientColor(FbxColor(1.0, 0.5, 0.2)); - - SetCameraPointOfInterest(lCamera1, lMarker); - SetCameraPointOfInterest(lCamera2, lCamera1); - - SetLightGroupDefaultPosition(lLightGroup); - SetMarkerDefaultPosition(lMarker); - SetCamera1DefaultPosition(lCamera1); - SetCamera2DefaultPosition(lCamera2); - - // Create the Animation Stack - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Rotating lights"); - - // The animation nodes can only exist on AnimLayers therefore it is mandatory to - // add at least one AnimLayer to the AnimStack. And for the purpose of this example, - // one layer is all we need. - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - // Build the scene graph. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lLightGroup); - lRootNode->AddChild(lMarker); - lRootNode->AddChild(lCamera1); - lCamera1->AddChild(lCamera2); - - - // Set perspective camera as the default camera. - pScene->GetGlobalSettings().SetDefaultCamera(FBXSDK_CAMERA_PERSPECTIVE); - - AnimateLightGroup(lLightGroup, lAnimLayer); - AnimateCamera(lCamera1, lAnimLayer); - - return true; -} - -// Create 6 lights and set global light settings. -FbxNode* CreateLightGroup(FbxScene* pScene, const char* pName) -{ - FbxString lLightName; - FbxNode* lGroup = NULL; - FbxNode* lNode = NULL; - FbxLight* lLight = NULL; - int i; - - lGroup = FbxNode::Create(pScene,pName); - - for(i = 0; i < 6; i++) - { - lLightName = pName; - lLightName += "-Light"; - lLightName += i; - - lNode = CreateLight(pScene, lLightName.Buffer()); - lGroup->AddChild(lNode); - } - - for (i = 0; i < 6; i++) - { - lLight = (FbxLight*) lGroup->GetChild(i)->GetNodeAttribute(); - lLight->FileName.Set("gobo.tif");// Resource file is in current directory. - lLight->DrawGroundProjection.Set(true); - lLight->DrawVolumetricLight.Set(true); - lLight->DrawFrontFacingVolumetricLight.Set(false); - } - - return lGroup; -} - -// Create a spotlight. -FbxNode* CreateLight(FbxScene* pScene, const char* pName) -{ - FbxLight* lLight = FbxLight::Create(pScene,pName); - - lLight->LightType.Set(FbxLight::eSpot); - lLight->CastLight.Set(true); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lLight); - - return lNode; -} - -// Create a marker to use a point of interest for the camera. -FbxNode* CreateMarker(FbxScene* pScene, const char* pName) -{ - FbxMarker* lMarker = FbxMarker::Create(pScene,pName); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMarker); - - return lNode; -} - -FbxNode* CreateCamera(FbxScene* pScene, const char* pName) -{ - FbxCamera* lCamera = FbxCamera::Create(pScene,pName); - - // Modify some camera default settings. - lCamera->SetApertureMode(FbxCamera::eVertical); - lCamera->SetApertureWidth(0.816); - lCamera->SetApertureHeight(0.612); - lCamera->SetSqueezeRatio(0.5); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lCamera); - - return lNode; -} - -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest) -{ - // Set the camera to always point at this node. - pCamera->SetTarget(pPointOfInterest); -} - -// The light group is just over the XZ plane. -void SetLightGroupDefaultPosition(FbxNode* pLightGroup) -{ - int i; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - SetLightDefaultPosition(pLightGroup->GetChild(i), i); - } - - pLightGroup->LclTranslation.Set(FbxVector4(0.0, 15.0, 0.0)); - pLightGroup->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pLightGroup->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -void SetLightDefaultPosition(FbxNode* pLight, int pIndex) -{ - // Set light location depending of it's index. - pLight->LclTranslation.Set(FbxVector4((cos((double)pIndex) * 40.0), 0.0, (sin((double)pIndex) * 40.0))); - pLight->LclRotation.Set(FbxVector4(20.0, (90.0 - pIndex * 60.0), 0.0)); - pLight->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); - - // Set light attributes depending of it's index. - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxLight* light = pLight->GetLight(); - if (light) - { - light->Color.Set(lColor[pIndex % 6]); - light->Intensity.Set(33.0); - light->OuterAngle.Set(90.0); - light->Fog.Set(100.0); - } -} - -void SetMarkerDefaultPosition(FbxNode* pMarker) -{ - // The marker is at the origin. - pMarker->LclTranslation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// The code below shows how to compute the camera rotation. -// In the present case, it wouldn't be necessary since the -// camera is set to point to the marker. -void SetCamera1DefaultPosition(FbxNode* pCamera) -{ - FbxVector4 lCameraLocation(0.0, 100.0, -300.0); - FbxVector4 lDefaultPointOfInterest(1.0, 100.0, -300.0); - FbxVector4 lNewPointOfInterest(0, 0, 0); - FbxVector4 lRotation; - FbxVector4 lScaling(1.0, 1.0, 1.0); - - FbxVector4::AxisAlignmentInEulerAngle(lCameraLocation, lDefaultPointOfInterest, lNewPointOfInterest, lRotation); - - pCamera->LclTranslation.Set(lCameraLocation); - pCamera->LclRotation.Set(lRotation); - pCamera->LclScaling.Set(lScaling); -} - -void SetCamera2DefaultPosition(FbxNode* pCamera) -{ - pCamera->LclTranslation.Set(FbxVector4(-150.0, 0.0, 75.0)); -} - -// The light group rises and rotates. -void AnimateLightGroup(FbxNode* pLightGroup, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i; - int lKeyIndex = 0; - - for (i = 0; i < pLightGroup->GetChildCount(); i++) - { - AnimateLight(pLightGroup->GetChild(i), i, pAnimLayer); - } - - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLightGroup->LclRotation.GetCurveNode(pAnimLayer, true); - pLightGroup->LclTranslation.GetCurveNode(pAnimLayer, true); - - // Y axis rotation. - lCurve = pLightGroup->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 5*360.0); - - lCurve->KeyModifyEnd(); - } - - // Y axis translation. - lCurve = pLightGroup->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 15.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 200.0); - - lCurve->KeyModifyEnd(); - } -} - -// The lights are changing color, intensity, orientation and cone angle. -void AnimateLight(FbxNode* pLight, int pIndex, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int i, j; - int lKeyIndex = 0; - - FbxLight* light = pLight->GetLight(); - - // Intensity fade in/out. - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Intensity.GetCurveNode(pAnimLayer, true); - lCurve = light->Intensity.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // Fog fade in/out - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - light->Fog.GetCurveNode(pAnimLayer, true); - lCurve = light->Fog.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 33.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, 0.0); - - lCurve->KeyModifyEnd(); - } - - // X rotation swoops & cone angle woobles. - { - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - pLight->LclRotation.GetCurveNode(pAnimLayer, true); - light->OuterAngle.GetCurveNode(pAnimLayer, true); - - lCurve = pLight->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - FbxAnimCurve* lConeCurve = light->OuterAngle.GetCurve(pAnimLayer,true); - double lValue; - - lCurve->KeyModifyBegin(); - lConeCurve->KeyModifyBegin(); - - for (i = 0; i < 8; i++) - { - lTime.SetSecondDouble((double)i * 0.833333); - lValue = cos((((double)i) + (((double)pIndex) * 60.0)) * 72.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, float((lValue - 0.4) * 30.0)); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, float((2.0 - (lValue + 1.0)) * 45.0)); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - } - - // Finally, have the lights spread out and lose focus. - lTime.SetSecondDouble(10.0); - - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySetValue(lKeyIndex, -90.0); - lCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lConeCurve->KeyAdd(lTime); - lConeCurve->KeySetValue(lKeyIndex, 180.0); - lConeCurve->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationLinear); - - lCurve->KeyModifyEnd(); - lConeCurve->KeyModifyEnd(); - } - - // Color cycling. - { - FbxDouble3 lColor[6] = - { - FbxDouble3(1.0, 0.0, 0.0), - FbxDouble3(1.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 0.0), - FbxDouble3(0.0, 1.0, 1.0), - FbxDouble3(0.0, 0.0, 1.0), - FbxDouble3(1.0, 0.0, 1.0) - }; - - FbxAnimCurve* lCurveA[3]; - // Create the CurveNodes (they are necessary for the GetCurve to successfully allocate the Animation curve) - light->Color.GetCurveNode(pAnimLayer, true); - lCurveA[0] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_RED, true); - lCurveA[1] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_GREEN, true); - lCurveA[2] = light->Color.GetCurve(pAnimLayer,FBXSDK_CURVENODE_COLOR_BLUE, true); - - if (lCurveA[0] && lCurveA[1] && lCurveA[2]) - { - lCurveA[0]->KeyModifyBegin(); - lCurveA[1]->KeyModifyBegin(); - lCurveA[2]->KeyModifyBegin(); - - for (i = 0; i < 24; i++) - { - j = i + pIndex; - - while (j > 5) - { - j -= 6; - } - - lTime.SetSecondDouble((double)i * 0.4166666); - - lKeyIndex = lCurveA[0]->KeyAdd(lTime); - lCurveA[0]->KeySetValue(lKeyIndex, (float)lColor[j][0]); - lCurveA[0]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[1]->KeyAdd(lTime); - lCurveA[1]->KeySetValue(lKeyIndex, (float)lColor[j][1]); - lCurveA[1]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - - lKeyIndex = lCurveA[2]->KeyAdd(lTime); - lCurveA[2]->KeySetValue(lKeyIndex, (float)lColor[j][2]); - lCurveA[2]->KeySetInterpolation(lKeyIndex, FbxAnimCurveDef::eInterpolationCubic); - } - - lCurveA[0]->KeyModifyEnd(); - lCurveA[1]->KeyModifyEnd(); - lCurveA[2]->KeyModifyEnd(); - } - } -} - -// The camera is rising and rolling twice. -void AnimateCamera(FbxNode* pCamera, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - pCamera->LclTranslation.GetCurveNode(pAnimLayer, true); - - // X translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 200.0); - - lCurve->KeyModifyEnd(); - } - - // Y translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 300.0); - - lCurve->KeyModifyEnd(); - } - - // Camera roll. - FbxCamera* cam = pCamera->GetCamera(); - // Create the CurveNode (it is necessary for the GetCurve to successfully allocate the Animation curve) - cam->Roll.GetCurveNode(pAnimLayer, true); - lCurve = cam->Roll.GetCurve(pAnimLayer, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble (0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(10.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 2*360.0); - - lCurve->KeyModifyEnd(); - } -} - diff --git a/sdk/Windows/2019.2/samples/ExportScene05/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportScene05/CMakeLists.txt deleted file mode 100755 index dbbbe7f..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene05/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportScene05 .) -SET(FBX_TARGET_SOURCE - main.cxx - ../MyOwnWriterReader/MyOwnReader.cxx - ../MyOwnWriterReader/MyOwnWriter.cxx - ../MyOwnWriterReader/MyOwnWriterReader.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportScene05/main.cxx b/sdk/Windows/2019.2/samples/ExportScene05/main.cxx deleted file mode 100755 index c41e4cb..0000000 --- a/sdk/Windows/2019.2/samples/ExportScene05/main.cxx +++ /dev/null @@ -1,332 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a skeleton made of 3 segments. -// The position of a node in a .FBX file is expressed in coordinates -// relative to it's parent. This example shows how to convert to and -// from a global position. -// -// The example illustrates how to: -// 1) create a skeleton segment -// 2) get a node's global default position -// 3) set a node's global default position -// 4) set limits, rotation order and pre/post pivots -// 5) export a scene in a .FBX file -// -///////////////////////////////////////////////////////////////////////// - -#include -#ifdef FBXSDK_ENV_WIN -// On Windows platform need to include this to define _msize() -#include -#endif - -//include needed for custom reader/writer -#include "../MyOwnWriterReader/MyOwnWriterReader.h" - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ExportScene05.fbx" - - -// Function prototypes. -bool CreateScene(FbxScene* pScene); - -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition); -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have an FBX file. Let's try to write to a custom writer and read our file with our custom reader. - - FBXSDK_printf("Writing to file with custom writer\n"); - int lRegisteredCount; - int lPluginId; - - //We need to register the writer for the sdk to be aware. - lSdkManager->GetIOPluginRegistry()->RegisterWriter(CreateMyOwnWriter, GetMyOwnWriterInfo, - lPluginId, lRegisteredCount, FillOwnWriterIOSettings); - - - //The filename - const char* lFileName = "CustomWriter.CFF"; - - //at this point use our custom writer to write: - FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); - - //Here, we set the custom writer. - int lFileFormat = lSdkManager->GetIOPluginRegistry()->FindWriterIDByExtension("CFF"); - - //Initialize the file - if(lExporter->Initialize(lFileName, lFileFormat, lSdkManager->GetIOSettings()) == false) - { - FBXSDK_printf("Call to FbxExporter::Initialize() failed.\n"); - FBXSDK_printf("Error returned: %s\n\n", lExporter->GetStatus().GetErrorString()); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, false); - return 1; - } - - //This will call the write function of the custom writer. - lResult = lExporter->Export(lScene); - if(lResult == false) - { - FBXSDK_printf("Error in write of our custom writer\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - - //At this point, we have written to the custom writer, let's read with our custom reader. - - //Again, we need to register the reader. - lSdkManager->GetIOPluginRegistry()->RegisterReader(CreateMyOwnReader, GetMyOwnReaderInfo, - lPluginId, lRegisteredCount, FillOwnReaderIOSettings); - - //Create the importer - FbxImporter* lImporter = FbxImporter::Create(lSdkManager,""); - - - //We initialize our file. - //Here we can simply pass the filename, and it should automatically find the right file format and reader. - lResult = lImporter->Initialize(lFileName, -1, lSdkManager->GetIOSettings() ); - - //At one point, this will call our read function of our custom reader. - lResult = lImporter->Import(lScene); - - if(lResult == false) - { - FBXSDK_printf("There was a problem in the read of our custom reader\n"); - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 1; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxScene* pScene) -{ - FbxVector4 lT, lR, lS; - FbxAMatrix lGM; - - // Create nodes. - FbxNode* pNodeA = FbxNode::Create(pScene,"A"); - FbxNode* pNodeB = FbxNode::Create(pScene,"B"); - FbxNode* pNodeC = FbxNode::Create(pScene,"C"); - FbxNode* pNodeD = FbxNode::Create(pScene,"D"); - - // Create node attributes. - FbxSkeleton* lSkeletonA = FbxSkeleton::Create(pScene,""); - lSkeletonA->SetSkeletonType(FbxSkeleton::eRoot); - pNodeA->SetNodeAttribute(lSkeletonA); - FbxSkeleton* lSkeletonB = FbxSkeleton::Create(pScene,""); - lSkeletonB->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeB->SetNodeAttribute(lSkeletonB); - FbxSkeleton* lSkeletonC = FbxSkeleton::Create(pScene,""); - lSkeletonC->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeC->SetNodeAttribute(lSkeletonC); - FbxSkeleton* lSkeletonD = FbxSkeleton::Create(pScene,""); - lSkeletonD->SetSkeletonType(FbxSkeleton::eLimbNode); - pNodeD->SetNodeAttribute(lSkeletonD); - - - // On node A we set translation limits - pNodeA->TranslationActive = true; - pNodeA->TranslationMinX = true; - pNodeA->TranslationMinY = true; - pNodeA->TranslationMinZ = true; - pNodeA->TranslationMin = FbxVector4(0.1, 0.2, 0.3); - pNodeA->TranslationMaxX = true; - pNodeA->TranslationMaxY = true; - pNodeA->TranslationMaxZ = true; - pNodeA->TranslationMax = FbxVector4(5.0, 1.0, 0.0); - pNodeA->UpdatePivotsAndLimitsFromProperties(); - - // On node B we set the rotation order and the pre/post pivots - // (for these value to have an effect, we need to enable the RotationActive flag) - pNodeB->RotationActive = true; - pNodeB->RotationMaxX = true; - pNodeB->RotationMaxY = false; - pNodeB->RotationMaxZ = false; - pNodeB->RotationMax = FbxVector4(33.3, 0.0, 0.0); - pNodeB->UpdatePivotsAndLimitsFromProperties(); - - pNodeB->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - pNodeB->SetRotationOrder(FbxNode::eSourcePivot, eSphericXYZ); - pNodeB->SetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot, false); - pNodeB->SetQuaternionInterpolation(FbxNode::eSourcePivot, eQuatInterpClassic); - pNodeB->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(11.1, 22.2, 33.3)); - pNodeB->SetPreRotation(FbxNode::eSourcePivot, FbxVector4(15.0, 30.0, 45.0)); - pNodeB->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(-45.0, -30.0, -15.0)); - - // Set node hierarchy. - pScene->GetRootNode()->AddChild(pNodeA); - pNodeA->AddChild(pNodeB); - pNodeB->AddChild(pNodeC); - pNodeC->AddChild(pNodeD); - - // Set global position of node A. - lT.Set(0.0, 0.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 45.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeA, lGM); - - // Set global position of node B. - lT.Set(30.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeB, lGM); - - // Set global position of node C. - lT.Set(55.0, 20.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, -40.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeC, lGM); - - // Set global position of node D. - lT.Set(70.0, 10.0, 0.0); lGM.SetT(lT); - lR.Set(0.0, 0.0, 0.0); lGM.SetR(lR); - SetGlobalDefaultPosition(pNodeD, lGM); - - // Set meta-data on some of the nodes. - // - // For this sample, we'll use a hiearchical set of meta-data: - // - // Family - // Type - // Instance - // - // Family contains all the common properties, and the lower levels override various - // values. - // - FbxObjectMetaData* pFamilyMetaData = FbxObjectMetaData::Create(pScene, "Family"); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Level", "Level").Set(FbxString("Family")); - FbxProperty::Create(pFamilyMetaData, FbxStringDT, "Type", "Type").Set(FbxString("Wall")); - FbxProperty::Create(pFamilyMetaData, FbxFloatDT, "Width", "Width").Set(10.0f); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Weight", "Weight").Set(25.0); - FbxProperty::Create(pFamilyMetaData, FbxDoubleDT, "Cost", "Cost").Set(1.25); - - FbxObjectMetaData* pTypeMetaData = FbxCast(pFamilyMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pTypeMetaData->SetName("Type"); - - // On this level we'll just override two properties - pTypeMetaData->FindProperty("Cost").Set(2500.0); - pTypeMetaData->FindProperty("Level").Set(FbxString("Type")); - - FbxObjectMetaData* pInstanceMetaData = FbxCast(pTypeMetaData->Clone(FbxObject::eReferenceClone, pScene)); - - pInstanceMetaData->SetName("Instance"); - - // And on this level, we'll go in and add a brand new property, too. - FbxProperty::Create(pInstanceMetaData, FbxStringDT, "Sku", "Sku#").Set(FbxString("143914-10")); - pInstanceMetaData->FindProperty("Width").Set(1100.50f); - pInstanceMetaData->FindProperty("Type").Set(FbxString("Super Heavy Duty Wall")); - pInstanceMetaData->FindProperty("Level").Set(FbxString("Instance")); - - // Finally connect metadata information to some of our nodes. - pNodeA->ConnectSrcObject(pInstanceMetaData); - pNodeC->ConnectSrcObject(pInstanceMetaData); // Share the same object - - pNodeD->ConnectSrcObject(pTypeMetaData); - - return true; -} - -// Function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -void SetGlobalDefaultPosition(FbxNode* pNode, FbxAMatrix pGlobalPosition) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lParentGlobalPosition; - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lLocalPosition = lParentGlobalPosition.Inverse() * pGlobalPosition; - } - else - { - lLocalPosition = pGlobalPosition; - } - - pNode->LclTranslation.Set(lLocalPosition.GetT()); - pNode->LclRotation.Set(lLocalPosition.GetR()); - pNode->LclScaling.Set(lLocalPosition.GetS()); -} - -// Recursive function to get a node's global default position. -// As a prerequisite, parent node's default local position must be already set. -FbxAMatrix GetGlobalDefaultPosition(FbxNode* pNode) -{ - FbxAMatrix lLocalPosition; - FbxAMatrix lGlobalPosition; - FbxAMatrix lParentGlobalPosition; - - lLocalPosition.SetT(pNode->LclTranslation.Get()); - lLocalPosition.SetR(pNode->LclRotation.Get()); - lLocalPosition.SetS(pNode->LclScaling.Get()); - - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalDefaultPosition(pNode->GetParent()); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - else - { - lGlobalPosition = lLocalPosition; - } - - return lGlobalPosition; -} - - diff --git a/sdk/Windows/2019.2/samples/ExportShader/CMakeLists.txt b/sdk/Windows/2019.2/samples/ExportShader/CMakeLists.txt deleted file mode 100755 index 998204f..0000000 --- a/sdk/Windows/2019.2/samples/ExportShader/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ExportShader .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ExportShader/Default_reflection.dds b/sdk/Windows/2019.2/samples/ExportShader/Default_reflection.dds deleted file mode 100755 index 0e212b4..0000000 Binary files a/sdk/Windows/2019.2/samples/ExportShader/Default_reflection.dds and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/ExportShader/glass.fx b/sdk/Windows/2019.2/samples/ExportShader/glass.fx deleted file mode 100755 index 4a0b902..0000000 --- a/sdk/Windows/2019.2/samples/ExportShader/glass.fx +++ /dev/null @@ -1,200 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: glass.fx - -Copyright NVIDIA Corporation 2002-2004 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Glass shader with reflection and refractive dispersion. - -******************************************************************************/ - -float Script : STANDARDSGLOBAL < - string UIWidget = "none"; - string ScriptClass = "object"; - string ScriptOrder = "standard"; - string ScriptOutput = "color"; - string Script = "Technique=dx9;"; -> = 0.8; - -/************* TWEAKABLES **************/ - -float4x4 worldIT : WorldInverseTranspose; -float4x4 wvp : WorldViewProjection; -float4x4 world : World; -float4x4 viewI : ViewInverse; - -float reflectStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Reflection"; -> = 1.0; - -float refractStrength -< - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 2.0; - float UIStep = 0.01; - string UIName = "Refraction"; -> = 1.0; - -half3 etas -< - string UIName = "Refraction indices"; -> = { 0.80, 0.82, 0.84 }; - -texture cubeMap : Environment -< - string ResourceName = "default_reflection.dds"; - string ResourceType = "Cube"; ->; - -texture fresnelTex : Environment -< - string ResourceType = "2D"; - string function = "generateFresnelTex"; - - float2 Dimensions = { 256.0f, 1.0f}; ->; - -samplerCUBE environmentMapSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = Linear; -}; - -sampler2D fresnelSampler = sampler_state -{ - Texture = ; - MinFilter = Linear; - MagFilter = Linear; - MipFilter = None; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float4 Position : POSITION; - float4 UV : TEXCOORD0; - float3 Normal : NORMAL; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float4 TexCoord : TEXCOORD0; - float3 WorldNormal : TEXCOORD1; - float3 WorldView : TEXCOORD2; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN, - uniform float4x4 WorldViewProj, - uniform float4x4 WorldIT, - uniform float4x4 World, - uniform float4x4 viewI -) { - vertexOutput OUT; - float3 normal = normalize(IN.Normal); - OUT.WorldNormal = mul(normal, (float3x3) WorldIT); - float3 Pw = mul(IN.Position, World).xyz; - OUT.TexCoord = IN.UV; - OUT.WorldView = viewI[3].xyz - Pw; - OUT.HPosition = mul(IN.Position, WorldViewProj); - return OUT; -} - -/********* pixel shader ********/ - -// modified refraction function that returns boolean for total internal reflection -float3 -refract2( float3 I, float3 N, float eta, out bool fail ) -{ - float IdotN = dot(I, N); - float k = 1 - eta*eta*(1 - IdotN*IdotN); -// return k < 0 ? (0,0,0) : eta*I - (eta*IdotN + sqrt(k))*N; - fail = k < 0; - return eta*I - (eta*IdotN + sqrt(k))*N; -} - -// approximate Fresnel function -float fresnel(float NdotV, float bias, float power) -{ - return bias + (1.0-bias)*pow(1.0 - max(NdotV, 0), power); -} - -// function to generate a texture encoding the Fresnel function -float4 generateFresnelTex(float NdotV : POSITION) : COLOR -{ - return fresnel(NdotV, 0.2, 4.0); -} - -float4 mainPS(vertexOutput IN, - uniform samplerCUBE EnvironmentMap, - uniform half reflectStrength, - uniform half refractStrength, - uniform half3 etas - ) : COLOR -{ - half3 N = normalize(IN.WorldNormal); - float3 V = normalize(IN.WorldView); - - // reflection - half3 R = reflect(-V, N); - half4 reflColor = texCUBE(EnvironmentMap, R); - -// half fresnel = fresnel(dot(N, V), 0.2, 4.0); - half fresnel = tex2D(fresnelSampler, dot(N, V)); - - // wavelength colors - const half4 colors[3] = { - { 1, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { 0, 0, 1, 0 }, - }; - - // transmission - half4 transColor = 0; - bool fail = false; - for(int i=0; i<3; i++) { - half3 T = refract2(-V, N, etas[i], fail); - transColor += texCUBE(EnvironmentMap, T) * colors[i]; - } - - return lerp(transColor*refractStrength, reflColor*reflectStrength, fresnel); -} - -/*************/ - -technique dx9 < - string Script = "Pass=p0;"; -> { - pass p0 < - string Script = "Draw=geometry;"; - > { - VertexShader = compile vs_2_0 mainVS(wvp,worldIT,world,viewI); - PixelShader = compile ps_2_0 mainPS(environmentMapSampler, - reflectStrength, refractStrength, - etas); - } -} - -/***************************** eof ***/ diff --git a/sdk/Windows/2019.2/samples/ExportShader/main.cxx b/sdk/Windows/2019.2/samples/ExportShader/main.cxx deleted file mode 100755 index d37a3fb..0000000 --- a/sdk/Windows/2019.2/samples/ExportShader/main.cxx +++ /dev/null @@ -1,254 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is two cubes. -// One is linked to a CGFX shader. Another is linked to a HLSL shader. -// -// The example illustrates how to: -// 1) create a CGFX shader -// 2) create a HLSL shader -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" -#include "../Common/GeometryUtility.h" - -#define SAMPLE_FILENAME "ExportShader.fbx" -#define CGFX_SHADERFILE "xfSkyBox.cgfx" -#define HLSL_SHADERFILE "glass.fx" -#define TEXTURE_FILE "Default_reflection.dds" - - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene); -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene); -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, -1, true); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -bool CreateScene(FbxManager *pSdkManager, FbxScene* pScene) -{ - // create scene info - FbxDocumentInfo* sceneInfo = FbxDocumentInfo::Create(pSdkManager,"SceneInfo"); - sceneInfo->mTitle = "Example scene"; - sceneInfo->mSubject = "Illustrates the creation of shader."; - sceneInfo->mAuthor = "ExportShader sample program."; - sceneInfo->mRevision = "rev. 1.0"; - sceneInfo->mKeywords = "shader"; - sceneInfo->mComment = "no particular comments required."; - - pScene->SetSceneInfo(sceneInfo); - - // Cube with CgFX shader - FbxDouble3 lCgfxTranslation(0, 0, 0); - FbxNode* lCgfxNode = CreateCube(pScene, "CgfxCube", lCgfxTranslation); - - FbxSurfaceMaterial* lCgfxMat = CreateCgfxShader(pScene); - lCgfxNode->AddMaterial(lCgfxMat); - - // Cube with HLSL shader - FbxDouble3 lHlslTranslation(20, 0, 0); - FbxNode* lHlslNode = CreateCube(pScene, "HlslCube", lHlslTranslation); - - FbxSurfaceMaterial* lHlslMat = CreateHlslShader(pScene); - lHlslNode->AddMaterial(lHlslMat); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lCgfxNode); - lRootNode->AddChild(lHlslNode); - - return true; -} - -FbxSurfaceMaterial* CreateCgfxShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lCgfxMat = FbxSurfaceMaterial::Create(pScene, "CgfxShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Cgfx_Implementation")); - - lCgfxMat->AddImplementation( lImpl ); - lCgfxMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_OPENGL; - lImpl->RenderAPIVersion = "1.5"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_CGFX; - lImpl->LanguageVersion = "1.5"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = CGFX_SHADERFILE; - // technique name - lTable->DescTAG = "user"; - - FbxProperty lRootProp = FbxProperty::Create( lCgfxMat, FbxCompoundDT, "ShaderExample"); - // Property "SurfColor" - FbxProperty lProp = FbxProperty::Create( lRootProp, FbxDouble3DT, "SurfColor" ); - FbxDouble3 lSurfVal(0, 1, 0); - lProp.Set(lSurfVal); - CreateTableEntry(lTable, lProp); // for every property, create a table entry in binding table - - // Property MasterAlpha - lProp = FbxProperty::Create(lRootProp, FbxFloatDT, "MasterAlpha"); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property EnvSample, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lRootProp, FbxDouble3DT, "EnvSampler", "EnvSampler"); - FbxDouble3 lSampleVal(0, 0, 0); - lProp.Set(lSampleVal); - CreateTableEntry(lTable, lProp); - - // create texture and connect to property - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "EnvSamplerTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - return lCgfxMat; -} - -FbxSurfaceMaterial* CreateHlslShader(FbxScene* pScene) -{ - FbxSurfaceMaterial* lHlslMat = FbxSurfaceMaterial::Create(pScene, "HlslShader" ); - - FbxImplementation* lImpl = FbxImplementation::Create(pScene, FbxString("Hlsl_Implementation")); - - lHlslMat->AddImplementation( lImpl ); - lHlslMat->SetDefaultImplementation( lImpl ); - lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; - lImpl->RenderAPIVersion = "9.0"; - - lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; - lImpl->LanguageVersion = "1.0"; - - FbxBindingTable* lTable = lTable = lImpl->AddNewTable("root", "shader"); - lImpl->RootBindingName = "root"; - - // shader file - lTable->DescAbsoluteURL = HLSL_SHADERFILE; - // technique name - lTable->DescTAG = "dx9"; - - - // Property Script - FbxProperty lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "Script", "Script"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.8); - CreateTableEntry(lTable, lProp); - - // Property reflectStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "reflectStrength", "reflectStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.35); - CreateTableEntry(lTable, lProp); - - // Property refractStrength - lProp = FbxProperty::Create(lHlslMat, FbxFloatDT, "refractStrength", "refractStrength"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - lProp.Set(0.75); - CreateTableEntry(lTable, lProp); - - // Property etas - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "etas", "etas"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lEtasVal(0.8, 0.6, 0.4); - lProp.Set(lEtasVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, not connect a texture to it, just skip it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "fresnelTex", "fresnelTex"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lTexVal(0, 0, 0); - lProp.Set(lTexVal); - CreateTableEntry(lTable, lProp); - - // Property cubeMap, the property type is sample, so connect a texture to it - lProp = FbxProperty::Create(lHlslMat, FbxDouble3DT, "cubeMap", "cubeMap"); - lProp.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - FbxDouble3 lMapVal(0, 1, 0); - lProp.Set(lMapVal); - CreateTableEntry(lTable, lProp); - - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene, "cubeMapTex"); - lTexture->SetFileName(TEXTURE_FILE); - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - - lTexture->ConnectDstProperty(lProp); - - return lHlslMat; -} - -void CreateTableEntry(FbxBindingTable* pTable, FbxProperty& pProp) -{ - // create entry - FbxBindingTableEntry& lEntry = pTable->AddNewEntry(); - // set src to the fbx property, in this sample, fbx properties have the same name with shader parameters - FbxPropertyEntryView lSrc( &lEntry, true, true ); - // Because CgFX uses compound property, so do not use pProp.GetName() - lSrc.SetProperty( pProp.GetHierarchicalName()); - - // set dst to the shader parameter - FbxSemanticEntryView lDst( &lEntry, false, true ); - lDst.SetSemantic( pProp.GetName() ); -} diff --git a/sdk/Windows/2019.2/samples/ExportShader/xfSkyBox.cgfx b/sdk/Windows/2019.2/samples/ExportShader/xfSkyBox.cgfx deleted file mode 100755 index aa40e36..0000000 --- a/sdk/Windows/2019.2/samples/ExportShader/xfSkyBox.cgfx +++ /dev/null @@ -1,142 +0,0 @@ -/*********************************************************************NVMH3**** -Path: NVSDK\Common\media\cgfx -File: $Id: //sw/devtools/FXComposer2/Alpha4+/SDK/MEDIA/CgFX1.4/xfSkyBox.cgfx#1 $ - -Copyright NVIDIA Corporation 2002 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - Projects a cube map across space, with that space defined by a user - coordinate system. Read this into maya, connect an extra transform's - WorldInverse matrix to "CoordSysIXf," and apply to a background - geometry (big sphere, cube, whatever) - $Date: 2006/04/10 $ - -******************************************************************************/ - -// string Category = "Effects\\Cg\\BRDF"; -// string keywords = "dx9,texture,anti-aliasing,derivatives,pointlight"; -// string description = "Analytic Anti-aliasing - No Texture Map"; - -/************* UNTWEAKABLES **************/ - -float4x4 WorldITXf : WorldInverseTranspose; -float4x4 WorldViewProjXf : WorldViewProjection; -float4x4 WorldXf : World; -float4x4 ViewITXf : ViewInverseTranspose; -float4x4 ViewIXf : ViewInverse; -float4x4 WorldViewXf : WorldView; - -/************* TWEAKABLES **************/ - -float3 SurfColor : Diffuse -< - string UIName = "Surface Color"; -> = {1.0f, 1.0f, 1.0f}; - -// float4 userCoords0 = {1,0,0,0}; -// float4 userCoords1 = {0,1,0,0}; -// float4 userCoords2 = {0,0,1,0}; -// float4 userCoords3 = {0,0,0,1}; - -float4x4 CoordSysIXf : WorldInverse; - -float MasterAlpha < - string UIWidget = "slider"; - float UIMin = 0.0; - float UIMax = 1.0; - float UIStep = 0.001; -> = 0.0f; - -////////////////////// - -texture EnvTexture : Environment < - string ResourceName = "Default_reflection.dds"; - string ResourceType = "Cube"; ->; - -samplerCUBE EnvSampler = sampler_state { - Texture = ; - MinFilter = LinearMipMapLinear; - MagFilter = Linear; - WrapS = ClampToEdge; - WrapT = ClampToEdge; - WrapR = ClampToEdge; -}; - -/************* DATA STRUCTS **************/ - -/* data from application vertex buffer */ -struct appdata { - float3 Position : POSITION; -}; - -/* data passed from vertex shader to pixel shader */ -struct vertexOutput { - float4 HPosition : POSITION; - float3 UserPos : TEXCOORD0; -}; - -/*********** vertex shader ******/ - -vertexOutput mainVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - OUT.HPosition = mul(WorldViewProjXf, Po); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - return OUT; -} - -vertexOutput flipVS(appdata IN) { - vertexOutput OUT; - float4 Po = float4(IN.Position.xyz,1.0); - float4 Pw = mul(WorldXf, Po); - OUT.UserPos = mul(CoordSysIXf,Pw).xyz; - OUT.UserPos.y = -OUT.UserPos.y; - OUT.HPosition = mul(WorldViewProjXf, Po); - return OUT; -} - - -/********* pixel shader ********/ - -// PS with box-filtered step function -float4 mainPS(vertexOutput IN) : COLOR { - float3 reflColor = SurfColor * texCUBE(EnvSampler,-IN.UserPos).xyz; - // return float4(IN.UserPos.xyz,1.0f); - return float4(reflColor.xyz,MasterAlpha); -} - -/************************************************************/ - -technique yFlip { - pass p0 { - VertexProgram = compile arbvp1 flipVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -technique user { - pass p0 { - VertexProgram = compile arbvp1 mainVS(); - DepthTestEnable = true; - DepthMask = true; - CullFaceEnable = false; - FragmentProgram = compile arbfp1 mainPS(); - } -} - -/***************************** eof ***/ diff --git a/sdk/Windows/2019.2/samples/FileStream/CMakeLists.txt b/sdk/Windows/2019.2/samples/FileStream/CMakeLists.txt deleted file mode 100755 index 597d4f7..0000000 --- a/sdk/Windows/2019.2/samples/FileStream/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(FileStream .) -SET(FBX_TARGET_SOURCE - main.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Windows/2019.2/samples/FileStream/main.cxx b/sdk/Windows/2019.2/samples/FileStream/main.cxx deleted file mode 100755 index f3afe79..0000000 --- a/sdk/Windows/2019.2/samples/FileStream/main.cxx +++ /dev/null @@ -1,249 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// -// The example illustrates how to: -// 1) create a file custom stream class -// 2) write a text file using the stream -// 3) read the generated file via the stream -// -///////////////////////////////////////////////////////////////////////// - -#include - -// Custom stream -class CustomStreamClass : public FbxStream -{ -public: - CustomStreamClass( FbxManager* pSdkManager, const char* mode ) - { - mFile = NULL; - - // expect the mode to contain something - if (mode == NULL) return; - - - FBXSDK_strcpy(mFileName, 30, "CustomStreamClass_temp.txt"); - FBXSDK_strcpy(mMode, 3, (mode) ? mode : "r"); - - if ( mode[0] == 'r' ) - { - const char* format = "FBX (*.fbx)"; - mReaderID = pSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( format ); - mWriterID = -1; - } - else - { - const char* format = "FBX ascii (*.fbx)"; - mWriterID = pSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription( format ); - mReaderID = -1; - } - } - - ~CustomStreamClass() - { - Close(); - } - - virtual EState GetState() - { - return mFile ? FbxStream::eOpen : eClosed; - } - - /** Open the stream. - * \return True if successful. - */ - virtual bool Open( void* /*pStreamData*/ ) - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle - // multiple opens - if (mFile == NULL) - FBXSDK_fopen(mFile, mFileName, mMode); - - if (mFile != NULL) - fseek( mFile, 0L, SEEK_SET ); - - return ( mFile != NULL ); - } - - /** Close the stream. - * \return True if successful. - */ - virtual bool Close() - { - // This method can be called several times during the - // Initialize phase so it is important that it can handle multiple closes - if ( mFile ) - fclose( mFile ); - mFile = NULL; - return true; - } - - /** Empties the internal data of the stream. - * \return True if successful. - */ - virtual bool Flush() - { - return true; - } - - /** Writes a memory block. - * \param pData Pointer to the memory block to write. - * \param pSize Size (in bytes) of the memory block to write. - * \return The number of bytes written in the stream. - */ - virtual int Write(const void* pData, int pSize) - { - if ( mFile == NULL ) - return 0; - return (int)fwrite( pData, 1, pSize, mFile ); - } - - /** Read bytes from the stream and store them in the memory block. - * \param pData Pointer to the memory block where the read bytes are stored. - * \param pSize Number of bytes read from the stream. - * \return The actual number of bytes successfully read from the stream. - */ - virtual int Read (void* pData, int pSize) const - { - if ( mFile == NULL ) - return 0; - return (int)fread( pData, 1, pSize, mFile ); - } - - virtual int GetReaderID() const - { - return mReaderID; - } - - virtual int GetWriterID() const - { - return mWriterID; - } - - void Seek( const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos ) - { - switch ( pSeekPos ) - { - case FbxFile::eBegin: - fseek( mFile, (long)pOffset, SEEK_SET ); - break; - case FbxFile::eCurrent: - fseek( mFile, (long)pOffset, SEEK_CUR ); - break; - case FbxFile::eEnd: - fseek( mFile, (long)pOffset, SEEK_END ); - break; - } - } - - virtual long GetPosition() const - { - if ( mFile == NULL ) - return 0; - return ftell( mFile ); - } - virtual void SetPosition( long pPosition ) - { - if ( mFile ) - fseek( mFile, pPosition, SEEK_SET ); - } - - virtual int GetError() const - { - if ( mFile == NULL ) - return 0; - return ferror( mFile ); - } - virtual void ClearError() - { - if ( mFile != NULL ) - clearerr( mFile ); - } - -private: - FILE* mFile; - int mReaderID; - int mWriterID; - char mFileName[30]; - char mMode[3]; -}; - - - -int testExport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene. - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an exporter. - FbxExporter* lExporter = FbxExporter::Create( lSdkManager, "" ); - // create a stream. - CustomStreamClass stream( lSdkManager, "wb" ); - // can pass in a void* data pointer to be passed to the stream on FileCreate - void* streamData = NULL; - // initialize the exporter. - if ( !lExporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // export the scene. - if ( !lExporter->Export( lScene ) ) - return -1; - // destroy the exporter. - lExporter->Destroy(); - - return 0; -} - -int testImport() -{ - // create a SdkManager - FbxManager* lSdkManager = FbxManager::Create(); - // create an IOSettings object - FbxIOSettings* ios = FbxIOSettings::Create( lSdkManager, IOSROOT ); - // create an empty scene - FbxScene* lScene = FbxScene::Create( lSdkManager, "" ); - // create an importer. - FbxImporter* lImporter = FbxImporter::Create( lSdkManager, "" ); - // create a stream. (CustomStreamClass – stream initialization in constructor) - CustomStreamClass stream( lSdkManager, "rb" ); - // can pass in a void* data pointer to be passed to the stream on FileOpen - void* streamData = NULL; - // initialize the importer with a stream - if ( !lImporter->Initialize( &stream, streamData, -1, ios ) ) - return -1; - // import the scene. - if ( !lImporter->Import( lScene ) ) - return -1; - // destroy the importer. - lImporter->Destroy(); - - return 0; -} - -int main(int /*argc*/, char** /*argv*/) -{ - int ret; - - ret = testExport(); - if ( ret ) return ret; - - ret = testImport(); - if ( ret ) return ret; - - return 0; -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/CMakeLists.txt b/sdk/Windows/2019.2/samples/ImportScene/CMakeLists.txt deleted file mode 100755 index 3b48664..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ImportScene .) -SET(FBX_TARGET_SOURCE - DisplayAnimation.cxx - DisplayCache.cxx - DisplayCamera.cxx - DisplayCommon.cxx - DisplayGenericInfo.cxx - DisplayGlobalSettings.cxx - DisplayHierarchy.cxx - DisplayLight.cxx - DisplayLink.cxx - DisplayMarker.cxx - DisplayMaterial.cxx - DisplayMesh.cxx - DisplayNurb.cxx - DisplayPatch.cxx - DisplayLodGroup.cxx - DisplayPivotsAndLimits.cxx - DisplayPose.cxx - DisplayShape.cxx - DisplaySkeleton.cxx - DisplayTexture.cxx - DisplayUserProperties.cxx - main.cxx - DisplayAnimation.h - DisplayCache.h - DisplayCamera.h - DisplayCommon.h - DisplayGenericInfo.h - DisplayGlobalSettings.h - DisplayHierarchy.h - DisplayLight.h - DisplayLink.h - DisplayMarker.h - DisplayMaterial.h - DisplayMesh.h - DisplayNurb.h - DisplayPatch.h - DisplayLodGroup.h - DisplayPivotsAndLimits.h - DisplayPose.h - DisplayShape.h - DisplaySkeleton.h - DisplayTexture.h - DisplayUserProperties.h - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.cxx deleted file mode 100755 index b0707c2..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.cxx +++ /dev/null @@ -1,569 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#include "DisplayAnimation.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher = false); -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool isSwitcher = false); - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher); -void DisplayCurveKeys(FbxAnimCurve* pCurve); -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty); - -void DisplayAnimation(FbxScene* pScene) -{ - int i; - for (i = 0; i < pScene->GetSrcObjectCount(); i++) - { - FbxAnimStack* lAnimStack = pScene->GetSrcObject(i); - - FbxString lOutputString = "Animation Stack Name: "; - lOutputString += lAnimStack->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimStack, pScene->GetRootNode()); - } -} - -void DisplayAnimation(FbxAnimStack* pAnimStack, FbxNode* pNode, bool isSwitcher) -{ - int l; - int nbAnimLayers = pAnimStack->GetMemberCount(); - int nbAudioLayers = pAnimStack->GetMemberCount(); - FbxString lOutputString; - - lOutputString = " contains "; - if (nbAnimLayers==0 && nbAudioLayers==0) - lOutputString += "no layers"; - - if (nbAnimLayers) - { - lOutputString += nbAnimLayers; - lOutputString += " Animation Layer"; - if (nbAnimLayers > 1) - lOutputString += "s"; - } - - if (nbAudioLayers) - { - if (nbAnimLayers) - lOutputString += " and "; - - lOutputString += nbAudioLayers; - lOutputString += " Audio Layer"; - if (nbAudioLayers > 1) - lOutputString += "s"; - } - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - for (l = 0; l < nbAnimLayers; l++) - { - FbxAnimLayer* lAnimLayer = pAnimStack->GetMember(l); - - lOutputString = "AnimLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAnimLayer, pNode, isSwitcher); - } - - for (l = 0; l < nbAudioLayers; l++) - { - FbxAudioLayer* lAudioLayer = pAnimStack->GetMember(l); - - lOutputString = "AudioLayer "; - lOutputString += l; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - DisplayAnimation(lAudioLayer, isSwitcher); - FBXSDK_printf("\n"); - } -} - -void DisplayAnimation(FbxAudioLayer* pAudioLayer, bool ) -{ - int lClipCount; - FbxString lOutputString; - - lClipCount = pAudioLayer->GetMemberCount(); - - lOutputString = " Name: "; - lOutputString += pAudioLayer->GetName(); - lOutputString += "\n\n"; - lOutputString += " Nb Audio Clips: "; - lOutputString += lClipCount; - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - - for (int i = 0; i < lClipCount; i++) - { - FbxAudio* lClip = pAudioLayer->GetMember(i); - lOutputString = " Clip["; - lOutputString += i; - lOutputString += "]:\t"; - lOutputString += lClip->GetName(); - lOutputString += "\n"; - FBXSDK_printf(lOutputString); - } -} - -void DisplayAnimation(FbxAnimLayer* pAnimLayer, FbxNode* pNode, bool isSwitcher) -{ - int lModelCount; - FbxString lOutputString; - - lOutputString = " Node Name: "; - lOutputString += pNode->GetName(); - lOutputString += "\n\n"; - FBXSDK_printf(lOutputString); - - DisplayChannels(pNode, pAnimLayer, DisplayCurveKeys, DisplayListCurveKeys, isSwitcher); - FBXSDK_printf ("\n"); - - for(lModelCount = 0; lModelCount < pNode->GetChildCount(); lModelCount++) - { - DisplayAnimation(pAnimLayer, pNode->GetChild(lModelCount), isSwitcher); - } -} - - -void DisplayChannels(FbxNode* pNode, FbxAnimLayer* pAnimLayer, void (*DisplayCurve) (FbxAnimCurve* pCurve), void (*DisplayListCurve) (FbxAnimCurve* pCurve, FbxProperty* pProperty), bool isSwitcher) -{ - FbxAnimCurve* lAnimCurve = NULL; - - // Display general curves. - if (!isSwitcher) - { - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" TX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" TY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" TZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" RX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" RY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" RZ\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X); - if (lAnimCurve) - { - FBXSDK_printf(" SX\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y); - if (lAnimCurve) - { - FBXSDK_printf(" SY\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = pNode->LclScaling.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z); - if (lAnimCurve) - { - FBXSDK_printf(" SZ\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a light or marker. - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - if (lAnimCurve) - { - FBXSDK_printf(" Red\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - if (lAnimCurve) - { - FBXSDK_printf(" Green\n"); - DisplayCurve(lAnimCurve); - } - lAnimCurve = lNodeAttribute->Color.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - if (lAnimCurve) - { - FBXSDK_printf(" Blue\n"); - DisplayCurve(lAnimCurve); - } - - // Display curves specific to a light. - FbxLight* light = pNode->GetLight(); - if (light) - { - lAnimCurve = light->Intensity.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Intensity\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->OuterAngle.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Outer Angle\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = light->Fog.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Fog\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a camera. - FbxCamera* camera = pNode->GetCamera(); - if (camera) - { - lAnimCurve = camera->FieldOfView.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->FieldOfViewY.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Field of View Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterX.GetCurve(pAnimLayer); - if (lAnimCurve) - { - FBXSDK_printf(" Optical Center X\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->OpticalCenterY.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Optical Center Y\n"); - DisplayCurve(lAnimCurve); - } - - lAnimCurve = camera->Roll.GetCurve(pAnimLayer); - if(lAnimCurve) - { - FBXSDK_printf(" Roll\n"); - DisplayCurve(lAnimCurve); - } - } - - // Display curves specific to a geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNurbs || - lNodeAttribute->GetAttributeType() == FbxNodeAttribute::ePatch) - { - FbxGeometry* lGeometry = (FbxGeometry*) lNodeAttribute; - - int lBlendShapeDeformerCount = lGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - const char* lChannelName = lChannel->GetName(); - - lAnimCurve = lGeometry->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer, true); - if(lAnimCurve) - { - FBXSDK_printf(" Shape %s\n", lChannelName); - DisplayCurve(lAnimCurve); - } - } - } - } - } - - // Display curves specific to properties - FbxProperty lProperty = pNode->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - FbxString lFbxFCurveNodeName = lProperty.GetName(); - FbxAnimCurveNode* lCurveNode = lProperty.GetCurveNode(pAnimLayer); - - if (!lCurveNode){ - lProperty = pNode->GetNextProperty(lProperty); - continue; - } - - FbxDataType lDataType = lProperty.GetPropertyDataType(); - if (lDataType.GetType() == eFbxBool || lDataType.GetType() == eFbxDouble || lDataType.GetType() == eFbxFloat || lDataType.GetType() == eFbxInt) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayCurve(lAnimCurve); - } - } - else if(lDataType.GetType() == eFbxDouble3 || lDataType.GetType() == eFbxDouble4 || lDataType.Is(FbxColor3DT) || lDataType.Is(FbxColor4DT)) - { - char* lComponentName1 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_RED : (char*)"X"; - char* lComponentName2 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_GREEN : (char*)"Y"; - char* lComponentName3 = (lDataType.Is(FbxColor3DT) ||lDataType.Is(FbxColor4DT)) ? (char*)FBXSDK_CURVENODE_COLOR_BLUE : (char*)"Z"; - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - } - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName1); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(1U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(1U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName2); - DisplayCurve(lAnimCurve); - } - } - - for( int c = 0; c < lCurveNode->GetCurveCount(2U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(2U, c); - if (lAnimCurve) - { - DisplayString(" Component ", lComponentName3); - DisplayCurve(lAnimCurve); - } - } - } - else if (lDataType.GetType() == eFbxEnum) - { - FbxString lMessage; - - lMessage = " Property "; - lMessage += lProperty.GetName(); - if (lProperty.GetLabel().GetLen() > 0) - { - lMessage += " (Label: "; - lMessage += lProperty.GetLabel(); - lMessage += ")"; - }; - DisplayString(lMessage.Buffer()); - - for( int c = 0; c < lCurveNode->GetCurveCount(0U); c++ ) - { - lAnimCurve = lCurveNode->GetCurve(0U, c); - if (lAnimCurve) - DisplayListCurve(lAnimCurve, &lProperty); - } - } - } - - lProperty = pNode->GetNextProperty(lProperty); - } // while - -} - - -static int InterpolationFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant ) return 1; - if( (flags & FbxAnimCurveDef::eInterpolationLinear) == FbxAnimCurveDef::eInterpolationLinear ) return 2; - if( (flags & FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic ) return 3; - return 0; -} - -static int ConstantmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eConstantStandard) == FbxAnimCurveDef::eConstantStandard ) return 1; - if( (flags & FbxAnimCurveDef::eConstantNext) == FbxAnimCurveDef::eConstantNext ) return 2; - return 0; -} - -static int TangentmodeFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eTangentAuto) == FbxAnimCurveDef::eTangentAuto ) return 1; - if( (flags & FbxAnimCurveDef::eTangentAutoBreak)== FbxAnimCurveDef::eTangentAutoBreak ) return 2; - if( (flags & FbxAnimCurveDef::eTangentTCB) == FbxAnimCurveDef::eTangentTCB ) return 3; - if( (flags & FbxAnimCurveDef::eTangentUser) == FbxAnimCurveDef::eTangentUser ) return 4; - if( (flags & FbxAnimCurveDef::eTangentGenericBreak) == FbxAnimCurveDef::eTangentGenericBreak ) return 5; - if( (flags & FbxAnimCurveDef::eTangentBreak) == FbxAnimCurveDef::eTangentBreak ) return 6; - return 0; -} - -static int TangentweightFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eWeightedNone) == FbxAnimCurveDef::eWeightedNone ) return 1; - if( (flags & FbxAnimCurveDef::eWeightedRight) == FbxAnimCurveDef::eWeightedRight ) return 2; - if( (flags & FbxAnimCurveDef::eWeightedNextLeft) == FbxAnimCurveDef::eWeightedNextLeft ) return 3; - return 0; -} - -static int TangentVelocityFlagToIndex(int flags) -{ - if( (flags & FbxAnimCurveDef::eVelocityNone) == FbxAnimCurveDef::eVelocityNone ) return 1; - if( (flags & FbxAnimCurveDef::eVelocityRight) == FbxAnimCurveDef::eVelocityRight ) return 2; - if( (flags & FbxAnimCurveDef::eVelocityNextLeft) == FbxAnimCurveDef::eVelocityNextLeft ) return 3; - return 0; -} - -void DisplayCurveKeys(FbxAnimCurve* pCurve) -{ - static const char* interpolation[] = { "?", "constant", "linear", "cubic"}; - static const char* constantMode[] = { "?", "Standard", "Next" }; - static const char* cubicMode[] = { "?", "Auto", "Auto break", "Tcb", "User", "Break", "User break" }; - static const char* tangentWVMode[] = { "?", "None", "Right", "Next left" }; - - FbxTime lKeyTime; - float lKeyValue; - char lTimeString[256]; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " [ "; - lOutputString += interpolation[ InterpolationFlagToIndex(pCurve->KeyGetInterpolation(lCount)) ]; - if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationConstant) == FbxAnimCurveDef::eInterpolationConstant) - { - lOutputString += " | "; - lOutputString += constantMode[ ConstantmodeFlagToIndex(pCurve->KeyGetConstantMode(lCount)) ]; - } - else if ((pCurve->KeyGetInterpolation(lCount)&FbxAnimCurveDef::eInterpolationCubic) == FbxAnimCurveDef::eInterpolationCubic) - { - lOutputString += " | "; - lOutputString += cubicMode[ TangentmodeFlagToIndex(pCurve->KeyGetTangentMode(lCount)) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentweightFlagToIndex(pCurve->KeyGet(lCount).GetTangentWeightMode()) ]; - lOutputString += " | "; - lOutputString += tangentWVMode[ TangentVelocityFlagToIndex(pCurve->KeyGet(lCount).GetTangentVelocityMode()) ]; - } - lOutputString += " ]"; - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} - -void DisplayListCurveKeys(FbxAnimCurve* pCurve, FbxProperty* pProperty) -{ - FbxTime lKeyTime; - int lKeyValue; - char lTimeString[256]; - FbxString lListValue; - FbxString lOutputString; - int lCount; - - int lKeyCount = pCurve->KeyGetCount(); - - for(lCount = 0; lCount < lKeyCount; lCount++) - { - lKeyValue = static_cast(pCurve->KeyGetValue(lCount)); - lKeyTime = pCurve->KeyGetTime(lCount); - - lOutputString = " Key Time: "; - lOutputString += lKeyTime.GetTimeString(lTimeString, FbxUShort(256)); - lOutputString += ".... Key Value: "; - lOutputString += lKeyValue; - lOutputString += " ("; - lOutputString += pProperty->GetEnumValue(lKeyValue); - lOutputString += ")"; - - lOutputString += "\n"; - FBXSDK_printf (lOutputString); - } -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.h deleted file mode 100755 index f1a83d5..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayAnimation.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_ANIMATION_H -#define _DISPLAY_ANIMATION_H - -#include "DisplayCommon.h" - -void DisplayAnimation(FbxScene* pScene); -void DisplayDefaultAnimation(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_ANIMATION_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.cxx deleted file mode 100755 index c585308..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.cxx +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - - -#include - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry) -{ - int lVertexCacheDeformerCount = pGeometry->GetDeformerCount( FbxDeformer::eVertexCache ); - - for( int i = 0; i < lVertexCacheDeformerCount; ++i ) - { - FbxVertexCacheDeformer* lDeformer = static_cast(pGeometry->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - if (lCache->OpenFileForRead()) - { - DisplayString(" Vertex Cache"); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - // skip normal channel - if (lChannelIndex < 0) - continue; - - FbxString lChnlName, lChnlInterp; - - FbxCache::EMCDataType lChnlType; - FbxTime start, stop, rate; - FbxCache::EMCSamplingType lChnlSampling; - unsigned int lChnlSampleCount, lDataCount; - - lCache->GetChannelName(lChannelIndex, lChnlName); - DisplayString(" Channel Name: ", lChnlName.Buffer()); - lCache->GetChannelDataType(lChannelIndex, lChnlType); - switch (lChnlType) - { - case FbxCache::eUnknownData: - DisplayString(" Channel Type: Unknown Data"); break; - case FbxCache::eDouble: - DisplayString(" Channel Type: Double"); break; - case FbxCache::eDoubleArray: - DisplayString(" Channel Type: Double Array"); break; - case FbxCache::eDoubleVectorArray: - DisplayString(" Channel Type: Double Vector Array"); break; - case FbxCache::eInt32Array: - DisplayString(" Channel Type: Int32 Array"); break; - case FbxCache::eFloatArray: - DisplayString(" Channel Type: Float Array"); break; - case FbxCache::eFloatVectorArray: - DisplayString(" Channel Type: Float Vector Array"); break; - } - lCache->GetChannelInterpretation(lChannelIndex, lChnlInterp); - DisplayString(" Channel Interpretation: ", lChnlInterp.Buffer()); - lCache->GetChannelSamplingType(lChannelIndex, lChnlSampling); - DisplayInt(" Channel Sampling Type: ", lChnlSampling); - lCache->GetAnimationRange(lChannelIndex, start, stop); - lCache->GetChannelSamplingRate(lChannelIndex, rate); - lCache->GetChannelSampleCount(lChannelIndex, lChnlSampleCount); - DisplayInt(" Channel Sample Count: ", lChnlSampleCount); - - // Only display cache data if the data type is float vector array - if (lChnlType != FbxCache::eFloatVectorArray) - continue; - - if (lChnlInterp == "normals") - DisplayString(" Normal Cache Data"); - else - DisplayString(" Points Cache Data"); - float* lBuffer = NULL; - unsigned int lBufferSize = 0; - int lFrame = 0; - for (FbxTime t = start; t <= stop; t+=rate) - { - DisplayInt(" Frame ", lFrame); - lCache->GetChannelPointCount(lChannelIndex, t, lDataCount); - if (lBuffer == NULL) - { - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else if (lBufferSize < lDataCount*3) - { - delete [] lBuffer; - lBuffer = new float[lDataCount*3]; - lBufferSize = lDataCount*3; - } - else - memset(lBuffer, 0, lBufferSize*sizeof(float)); - - lCache->Read(lChannelIndex, t, lBuffer, lDataCount); - if (lChnlInterp == "normals") - { - // display normals cache data - // the normal data is per-polygon per-vertex. we can get the polygon vertex index - // from the index array of polygon vertex - FbxMesh* lMesh = (FbxMesh*)pGeometry; - - if (lMesh == NULL) - { - // Only Mesh can have normal cache data - continue; - } - - DisplayInt(" Normal Count ", lDataCount); - int pi, j, lPolygonCount = lMesh->GetPolygonCount(); - unsigned lNormalIndex = 0; - for (pi = 0; pi < lPolygonCount && lNormalIndex+2 < lDataCount*3; pi++) - { - DisplayInt(" Polygon ", pi); - DisplayString(" Normals for Each Polygon Vertex: "); - int lPolygonSize = lMesh->GetPolygonSize(pi); - for (j = 0; j < lPolygonSize && lNormalIndex+2 < lDataCount*3; j++) - { - FbxVector4 normal(lBuffer[lNormalIndex], lBuffer[lNormalIndex+1], lBuffer[lNormalIndex+2]); - Display3DVector(" Normal Cache Data ", normal); - lNormalIndex += 3; - } - } - } - else - { - DisplayInt(" Points Count: ", lDataCount); - for (unsigned int j = 0; j < lDataCount*3; j=j+3) - { - FbxVector4 points(lBuffer[j], lBuffer[j+1], lBuffer[j+2]); - Display3DVector(" Points Cache Data: ", points); - } - } - - lFrame++; - } - - if (lBuffer != NULL) - { - delete [] lBuffer; - lBuffer = NULL; - } - - lCache->CloseFile(); - } - } -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.h deleted file mode 100755 index 32a7975..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCache.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CACHE_H -#define _DISPLAY_CACHE_H - -#include "DisplayCommon.h" - -void DisplayCache(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_CACHE_H diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.cxx deleted file mode 100755 index fd27fb7..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.cxx +++ /dev/null @@ -1,288 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - - -void DisplayCamera(FbxNode* pNode) -{ - DisplayCamera((FbxCamera*) pNode->GetNodeAttribute(), (char *) pNode->GetName(), pNode->GetTarget(), pNode->GetTargetUp()); -} - -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString("Camera Name: ", pName); - if (!pCamera) - { - DisplayString("NOT FOUND"); - return; - } - DisplayMetaDataConnections(pCamera); - - DisplayCameraPositionAndOrientation(pCamera, pTargetNode, pTargetUpNode); - - const char* lProjectionTypes[] = { "Perspective", "Orthogonal" }; - - DisplayString(" Projection Type: ", lProjectionTypes[pCamera->ProjectionType.Get()]); - - DisplayViewingAreaControls(pCamera); - - // If camera projection type is set to FbxCamera::eOrthogonal, the - // aperture and film controls are not relevant. - if (pCamera->ProjectionType.Get() != FbxCamera::eOrthogonal) - { - DisplayApertureAndFilmControls(pCamera); - } - - DisplayBackgroundProperties(pCamera); - DisplayCameraViewOptions(pCamera); - DisplayRenderOptions(pCamera); - DisplayDefaultAnimationValues(pCamera); -} - - -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pTargetUpNode) -{ - DisplayString(" Camera Position and Orientation"); - Display3DVector(" Position: ", pCamera->Position.Get()); - - if (pTargetNode) - { - DisplayString(" Camera Interest: ",(char *) pTargetNode->GetName()); - } - else - { - Display3DVector(" Default Camera Interest Position: ", pCamera->InterestPosition.Get()); - } - - if (pTargetUpNode) - { - DisplayString(" Camera Up Target: ", (char *) pTargetUpNode->GetName()); - } - else - { - Display3DVector(" Up Vector: ", pCamera->UpVector.Get()); - } - - DisplayDouble(" Roll: ", pCamera->Roll.Get()); -} - - -void DisplayViewingAreaControls(FbxCamera* pCamera) -{ - DisplayString(" Viewing Area Controls"); - - const char* lCameraFormat[] = { "Custom", "D1 NTSC", "NTSC", "PAL", "D1 PAL", - "HD", "640x480", "320x200", "320x240", "128x128", - "Full Screen" }; - - DisplayString(" Format: ", lCameraFormat[pCamera->GetFormat()]); - - const char* lAspectRatioModes[] = { "Window Size", "Fixed Ratio", "Fixed Resolution", - "Fixed Width", "Fixed Height" }; - - DisplayString(" Aspect Ratio Mode: ", lAspectRatioModes[pCamera->GetAspectRatioMode()]); - - // If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - if (pCamera->GetAspectRatioMode() != FbxCamera::eWindowSize) - { - DisplayDouble(" Aspect Width: ", pCamera->AspectWidth.Get()); - DisplayDouble(" Aspect Height: ", pCamera->AspectHeight.Get()); - } - - DisplayDouble(" Pixel Ratio: ", pCamera->PixelAspectRatio.Get()); - DisplayDouble(" Near Plane: ", pCamera->NearPlane.Get()); - DisplayDouble(" Far Plane: ", pCamera->FarPlane.Get()); - DisplayBool(" Mouse Lock: ", pCamera->LockMode.Get()); -} - - -void DisplayApertureAndFilmControls(FbxCamera* pCamera) -{ - DisplayString(" Aperture and Film Controls"); - - const char* lCameraApertureFormats[] = { "Custom", - "16mm Theatrical", - "Super 16mm", - "35mm Academy", - "35mm TV Projection", - "35mm Full Aperture", - "35mm 1.85 Projection", - "35mm Anamorphic", - "70mm Projection", - "VistaVision", - "Dynavision", - "Imax" }; - - DisplayString(" Aperture Format: ", lCameraApertureFormats[pCamera->GetApertureFormat()]); - - const char* lCameraApertureModes[] = { "Horizontal and Vertical", "Horizontal", "Vertical", "Focal Length" }; - - DisplayString(" Aperture Mode: ", lCameraApertureModes[pCamera->GetApertureMode()]); - - DisplayDouble(" Aperture Width: ", pCamera->GetApertureWidth(), " inches"); - DisplayDouble(" Aperture Height: ", pCamera->GetApertureHeight(), " inches"); - DisplayDouble(" Squeeze Ratio: ", pCamera->GetSqueezeRatio()); - DisplayDouble(" Focal Length: ", pCamera->FocalLength.Get(), "mm"); - DisplayDouble(" Field of View: ", pCamera->FieldOfView.Get(), " degrees"); -} - - -void DisplayBackgroundProperties(FbxCamera* pCamera) -{ - DisplayString(" Background Properties"); - - DisplayString(" Background File Name: \"", (char *) pCamera->GetBackgroundFileName(), "\""); - - const char* lBackgroundDisplayModes[] = { "Disabled", "Always", "When Media" }; - - DisplayString(" Background Display Mode: ", lBackgroundDisplayModes[pCamera->ViewFrustumBackPlaneMode.Get()]); - - DisplayBool(" Foreground Matte Threshold Enable: ", pCamera->ShowFrontplate.Get()); - - // This option is only relevant if background drawing mode is set to eFOREGROUND or eBACKGROUND_AND_FOREGROUND. - if (pCamera->ForegroundOpacity.Get()) - { - DisplayDouble(" Foreground Matte Threshold: ", pCamera->BackgroundAlphaTreshold.Get()); - } - - FbxString lBackgroundPlacementOptions; - - if (pCamera->GetBackPlateFitImage()) - { - lBackgroundPlacementOptions += " Fit,"; - } - if (pCamera->GetBackPlateCenter()) - { - lBackgroundPlacementOptions += " Center,"; - } - if (pCamera->GetBackPlateKeepRatio()) - { - lBackgroundPlacementOptions += " Keep Ratio,"; - } - if (pCamera->GetBackPlateCrop()) - { - lBackgroundPlacementOptions += " Crop,"; - } - if (!lBackgroundPlacementOptions.IsEmpty()) - { - FbxString lString = lBackgroundPlacementOptions.Left(lBackgroundPlacementOptions.GetLen() - 1); - DisplayString(" Background Placement Options: ",lString.Buffer()); - } - - DisplayDouble(" Background Distance: ", pCamera->BackPlaneDistance.Get()); - - const char* lCameraBackgroundDistanceModes[] = { "Relative to Interest", "Absolute from Camera" }; - - DisplayString(" Background Distance Mode: ", lCameraBackgroundDistanceModes[pCamera->BackPlaneDistanceMode.Get()]); -} - - -void DisplayCameraViewOptions(FbxCamera* pCamera) -{ - DisplayString(" Camera View Options"); - - DisplayBool(" View Camera Interest: ", pCamera->ViewCameraToLookAt.Get()); - DisplayBool(" View Near Far Planes: ", pCamera->ViewFrustumNearFarPlane.Get()); - DisplayBool(" Show Grid: ", pCamera->ShowGrid.Get()); - DisplayBool(" Show Axis: ", pCamera->ShowAzimut.Get()); - DisplayBool(" Show Name: ", pCamera->ShowName.Get()); - DisplayBool(" Show Info on Moving: ", pCamera->ShowInfoOnMoving.Get()); - DisplayBool(" Show Time Code: ", pCamera->ShowTimeCode.Get()); - DisplayBool(" Display Safe Area: ", pCamera->DisplaySafeArea.Get()); - - const char* lSafeAreaStyles[] = { "Round", "Square" }; - FbxColor color; - FbxDouble3 c; - - DisplayString(" Safe Area Style: ", lSafeAreaStyles[pCamera->SafeAreaDisplayStyle.Get()]); - DisplayBool(" Show Audio: ", pCamera->ShowAudio.Get()); - - c = pCamera->BackgroundColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Background Color: ", color); - - c = pCamera->AudioColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Audio Color: ", color); - - DisplayBool(" Use Frame Color: ", pCamera->UseFrameColor.Get()); - - c = pCamera->FrameColor.Get(); - color = FbxColor(c[0], c[1], c[2]); - DisplayColor(" Frame Color: ", color); -} - - -void DisplayRenderOptions(FbxCamera* pCamera) -{ - DisplayString(" Render Options"); - - const char* lCameraRenderOptionsUsageTimes[] = { "Interactive", "At Render" }; - - DisplayString(" Render Options Usage Time: ", lCameraRenderOptionsUsageTimes[pCamera->UseRealTimeDOFAndAA.Get()]); - DisplayBool(" Use Antialiasing: ", pCamera->UseAntialiasing.Get()); - DisplayDouble(" Antialiasing Intensity: ", pCamera->AntialiasingIntensity.Get()); - - const char* lCameraAntialiasingMethods[] = { "Oversampling Antialiasing", "Hardware Antialiasing" }; - - DisplayString(" Antialiasing Method: ", lCameraAntialiasingMethods[pCamera->AntialiasingMethod.Get()]); - - // This option is only relevant if antialiasing method is set to eOVERSAMPLING_ANTIALIASING. - if (pCamera->AntialiasingMethod.Get() == FbxCamera::eAAOversampling) - { - DisplayInt(" Number of Samples: ", pCamera->FrameSamplingCount.Get()); - } - - const char* lCameraSamplingTypes[] = { "Uniform", "Stochastic" }; - - DisplayString(" Sampling Type: ", lCameraSamplingTypes[pCamera->FrameSamplingType.Get()]); - DisplayBool(" Use Accumulation Buffer: ", pCamera->UseAccumulationBuffer.Get()); - DisplayBool(" Use Depth of Field: ", pCamera->UseDepthOfField.Get()); - - const char* lCameraFocusDistanceSources[] = { "Camera Interest", "Specific Distance" }; - - DisplayString(" Focus Distance Source: ", lCameraFocusDistanceSources[pCamera->FocusSource.Get()]); - - // This parameter is only relevant if focus distance source is set to eSPECIFIC_DISTANCE. - if (pCamera->FocusSource.Get() == FbxCamera::eFocusSpecificDistance) - { - DisplayDouble(" Specific Distance: ", pCamera->FocusDistance.Get()); - } - - DisplayDouble(" Focus Angle: ", pCamera->FocusAngle.Get(), " degrees"); -} - - -void DisplayDefaultAnimationValues(FbxCamera* pCamera) -{ - DisplayString(" Default Animation Values"); - - DisplayDouble(" Default Field of View: ", pCamera->FieldOfView.Get()); - DisplayDouble(" Default Field of View X: ", pCamera->FieldOfViewX.Get()); - DisplayDouble(" Default Field of View Y: ", pCamera->FieldOfViewY.Get()); - DisplayDouble(" Default Optical Center X: ", pCamera->OpticalCenterX.Get()); - DisplayDouble(" Default Optical Center Y: ", pCamera->OpticalCenterY.Get()); - DisplayDouble(" Default Roll: ", pCamera->Roll.Get()); -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.h deleted file mode 100755 index c631cda..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCamera.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_CAMERA_H -#define _DISPLAY_CAMERA_H - -#include "DisplayCommon.h" - -void DisplayCamera(FbxNode* pNode); -void DisplayCamera(FbxCamera* pCamera, char* pName, FbxNode* pTargetNode = NULL, FbxNode* pTargetUpNode = NULL); -void DisplayDefaultAnimationValues(FbxCamera* pCamera); -void DisplayRenderOptions(FbxCamera* pCamera); -void DisplayCameraViewOptions(FbxCamera* pCamera); -void DisplayBackgroundProperties(FbxCamera* pCamera); -void DisplayApertureAndFilmControls(FbxCamera* pCamera); -void DisplayViewingAreaControls(FbxCamera* pCamera); -void DisplayCameraPositionAndOrientation(FbxCamera* pCamera, FbxNode* pTargetNode, FbxNode* pUpTargetNode); - -#endif // #ifndef _DISPLAY_CAMERA_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.cxx deleted file mode 100755 index 59f5780..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.cxx +++ /dev/null @@ -1,200 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.h deleted file mode 100755 index d39b141..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayCommon.h +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.cxx deleted file mode 100755 index 0f1049f..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.cxx +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayProperties(FbxObject* pObject); -void DisplayGenericInfo(FbxNode* pNode, int pDepth); -void DisplayGenericInfo(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayGenericInfo(lRootNode->GetChild(i), 0); - } - - //Other objects directly connected onto the scene - for( i = 0; i < pScene->GetSrcObjectCount(); ++i ) - { - DisplayProperties(pScene->GetSrcObject(i)); - } -} - - -void DisplayGenericInfo(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - DisplayString(lString.Buffer()); - - //Display generic info about that Node - DisplayProperties(pNode); - DisplayString(""); - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayGenericInfo(pNode->GetChild(i), pDepth + 1); - } -} - -void DisplayProperties(FbxObject* pObject) -{ - - DisplayString("Name: ", (char *)pObject->GetName()); - - // Display all the properties - int i, lCount = 0; - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - lCount++; - lProperty = pObject->GetNextProperty(lProperty); - } - - FbxString lTitleStr = " Property Count: "; - - if (lCount == 0) - return; // there are no properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - i=0; - lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - // exclude user properties - - FbxString lString; - DisplayInt(" Property ", i); - lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - lString = lProperty.GetPropertyDataType().GetName(); - DisplayString(" Type: ",lString.Buffer()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - - switch (lProperty.GetPropertyDataType().GetType()) - { - case eFbxBool: - DisplayBool(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble4: - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - break; - - case eFbxInt: - DisplayInt(" Default Value: ", lProperty.Get()); - break; - - case eFbxDouble3: - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - break; - - //case FbxEnumDT: - // DisplayInt(" Default Value: ", lProperty.Get()); - // break; - - case eFbxFloat: - DisplayDouble(" Default Value: ", lProperty.Get()); - break; - case eFbxString: - lString = lProperty.Get(); - DisplayString(" Default Value: ", lString.Buffer()); - break; - - default: - DisplayString(" Default Value: UNIDENTIFIED"); - break; - } - i++; - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.h deleted file mode 100755 index 9536544..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayGenericInfo.h +++ /dev/null @@ -1,19 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GENERIC_INFO_H_ -#define _DISPLAY_GENERIC_INFO_H_ - -#include "DisplayCommon.h" - -void DisplayGenericInfo(FbxScene* pScene); - -#endif diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx deleted file mode 100755 index 1133f6f..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.cxx +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" -#include "DisplayCamera.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayColor("Ambient Color: ", pGlobalSettings->GetAmbientColor()); - DisplayString(""); -} - - -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings) -{ - DisplayString("Default Camera: ", pGlobalSettings->GetDefaultCamera()); - DisplayString(""); -} - - -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings) -{ - char lTimeString[256]; - - DisplayString("Time Mode : ", FbxGetTimeModeName(pGlobalSettings->GetTimeMode())); - - FbxTimeSpan lTs; - FbxTime lStart, lEnd; - pGlobalSettings->GetTimelineDefaultTimeSpan(lTs); - lStart = lTs.GetStart(); - lEnd = lTs.GetStop(); - DisplayString("Timeline default timespan: "); - DisplayString(" Start: ", lStart.GetTimeString(lTimeString, FbxUShort(256))); - DisplayString(" Stop : ", lEnd.GetTimeString(lTimeString, FbxUShort(256))); - - DisplayString(""); -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.h deleted file mode 100755 index 58c803c..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayGlobalSettings.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_GLOBAL_SETTINGS_H -#define _DISPLAY_GLOBAL_SETTINGS_H - -#include "DisplayCommon.h" - -void DisplayGlobalLightSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalCameraSettings(FbxGlobalSettings* pGlobalSettings); -void DisplayGlobalTimeSettings(FbxGlobalSettings* pGlobalSettings); - -#endif // #ifndef _DISPLAY_GLOBAL_SETTINGS_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.cxx deleted file mode 100755 index d8f45d4..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.cxx +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -// Local functions prototype. -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -void DisplayHierarchy(FbxScene* pScene) -{ - int i; - FbxNode* lRootNode = pScene->GetRootNode(); - - for( i = 0; i < lRootNode->GetChildCount(); i++) - { - DisplayHierarchy(lRootNode->GetChild(i), 0); - } -} - -void DisplayHierarchy(FbxNode* pNode, int pDepth) -{ - FbxString lString; - int i; - - for(i = 0; i < pDepth; i++) - { - lString += " "; - } - - lString += pNode->GetName(); - lString += "\n"; - - FBXSDK_printf(lString.Buffer()); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayHierarchy(pNode->GetChild(i), pDepth + 1); - } -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.h deleted file mode 100755 index 214d8e7..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayHierarchy.h +++ /dev/null @@ -1,22 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_HIERARCHY_H -#define _DISPLAY_HIERARCHY_H - -#include "DisplayCommon.h" - -void DisplayHierarchy(FbxScene* pScene); -void DisplayHierarchy(FbxNode* pNode, int pDepth); - -#endif // #ifndef _DISPLAY_HIERARCHY_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.cxx deleted file mode 100755 index cb2f7dd..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.cxx +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLight.h" - -void DisplayDefaultAnimationValues(FbxLight* pLight); - -void DisplayLight(FbxNode* pNode) -{ - FbxLight* lLight = (FbxLight*) pNode->GetNodeAttribute(); - - DisplayString("Light Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lLight); - - const char* lLightTypes[] = { "Point", "Directional", "Spot", "Area", "Volume" }; - - DisplayString(" Type: ", lLightTypes[lLight->LightType.Get()]); - DisplayBool(" Cast Light: ", lLight->CastLight.Get()); - - if (!(lLight->FileName.Get().IsEmpty())) - { - DisplayString(" Gobo"); - - DisplayString(" File Name: \"", lLight->FileName.Get().Buffer(), "\""); - DisplayBool(" Ground Projection: ", lLight->DrawGroundProjection.Get()); - DisplayBool(" Volumetric Projection: ", lLight->DrawVolumetricLight.Get()); - DisplayBool(" Front Volumetric Projection: ", lLight->DrawFrontFacingVolumetricLight.Get()); - } - - DisplayDefaultAnimationValues(lLight); -} - - -void DisplayDefaultAnimationValues(FbxLight* pLight) -{ - DisplayString(" Default Animation Values"); - - FbxDouble3 c = pLight->Color.Get(); - FbxColor lColor(c[0], c[1], c[2]); - DisplayColor(" Default Color: ", lColor); - DisplayDouble(" Default Intensity: ", pLight->Intensity.Get()); - DisplayDouble(" Default Outer Angle: ", pLight->OuterAngle.Get()); - DisplayDouble(" Default Fog: ", pLight->Fog.Get()); -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.h deleted file mode 100755 index 08ace1e..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLight.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LIGHT_H -#define _DISPLAY_LIGHT_H - -#include "DisplayCommon.h" - -void DisplayLight(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LIGHT_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.cxx deleted file mode 100755 index ea2e688..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.cxx +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayLink.h" -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayLink(FbxGeometry* pGeometry) -{ - //Display cluster now - - //int i, lLinkCount; - //FbxCluster* lLink; - - int i, j; - int lSkinCount=0; - int lClusterCount=0; - FbxCluster* lCluster; - - lSkinCount=pGeometry->GetDeformerCount(FbxDeformer::eSkin); - - - - //lLinkCount = pGeometry->GetLinkCount(); - for(i=0; i!=lSkinCount; ++i) - { - lClusterCount = ((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetClusterCount(); - for (j = 0; j != lClusterCount; ++j) - { - DisplayInt(" Cluster ", i); - - lCluster=((FbxSkin *) pGeometry->GetDeformer(i, FbxDeformer::eSkin))->GetCluster(j); - //lLink = pGeometry->GetLink(i); - - const char* lClusterModes[] = { "Normalize", "Additive", "Total1" }; - - DisplayString(" Mode: ", lClusterModes[lCluster->GetLinkMode()]); - - if(lCluster->GetLink() != NULL) - { - DisplayString(" Name: ", (char *) lCluster->GetLink()->GetName()); - } - - FbxString lString1 = " Link Indices: "; - FbxString lString2 = " Weight Values: "; - - int k, lIndexCount = lCluster->GetControlPointIndicesCount(); - int* lIndices = lCluster->GetControlPointIndices(); - double* lWeights = lCluster->GetControlPointWeights(); - - for(k = 0; k < lIndexCount; k++) - { - lString1 += lIndices[k]; - lString2 += (float) lWeights[k]; - - if (k < lIndexCount - 1) - { - lString1 += ", "; - lString2 += ", "; - } - } - - lString1 += "\n"; - lString2 += "\n"; - - FBXSDK_printf(lString1); - FBXSDK_printf(lString2); - - DisplayString(""); - - FbxAMatrix lMatrix; - - lMatrix = lCluster->GetTransformMatrix(lMatrix); - Display3DVector(" Transform Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Scaling: ", lMatrix.GetS()); - - lMatrix = lCluster->GetTransformLinkMatrix(lMatrix); - Display3DVector(" Transform Link Translation: ", lMatrix.GetT()); - Display3DVector(" Transform Link Rotation: ", lMatrix.GetR()); - Display3DVector(" Transform Link Scaling: ", lMatrix.GetS()); - - if (lCluster->GetAssociateModel() != NULL) - { - lMatrix = lCluster->GetTransformAssociateModelMatrix(lMatrix); - DisplayString(" Associate Model: ", (char *) lCluster->GetAssociateModel()->GetName()); - Display3DVector(" Associate Model Translation: ", lMatrix.GetT()); - Display3DVector(" Associate Model Rotation: ", lMatrix.GetR()); - Display3DVector(" Associate Model Scaling: ", lMatrix.GetS()); - } - - DisplayString(""); - } - } -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.h deleted file mode 100755 index 697a44f..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLink.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LINK_H -#define _DISPLAY_LINK_H - -#include "DisplayCommon.h" - -void DisplayLink(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_LINK_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.cxx deleted file mode 100755 index 565f10a..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode) -{ - const char* lDisplayLevels[] = { "UseLOD", "Show", "Hide" }; - - DisplayString("LodGroup Name: ", (char *) pNode->GetName()); - - DisplayInt(" ", pNode->GetChildCount(), " Geometries"); - for (int i = 0; i < pNode->GetChildCount(); i++) - { - FbxNode* lChildNode = pNode->GetChild(i); - DisplayString(" ", lChildNode->GetName()); - } - - FbxLODGroup *lLodGroupAttr = (FbxLODGroup*)pNode->GetNodeAttribute(); - DisplayBool(" MinMaxDistance Enabled: ", lLodGroupAttr->MinMaxDistance.Get()); - if (lLodGroupAttr->MinMaxDistance.Get()) - { - DisplayDouble(" Min Distance: ", lLodGroupAttr->MinDistance.Get()); - DisplayDouble(" Max Distance: ", lLodGroupAttr->MaxDistance.Get()); - } - DisplayBool(" Is World Space: ", lLodGroupAttr->WorldSpace.Get()); - DisplayBool(" Thresholds used as Percentage: ", lLodGroupAttr->ThresholdsUsedAsPercentage.Get()); - - DisplayString(" Thresholds "); - for (int i = 0; i < lLodGroupAttr->GetNumThresholds(); i++) - { - FbxDistance lThreshVal; - bool res = lLodGroupAttr->GetThreshold(i, lThreshVal); - if (res || (!res && lLodGroupAttr->ThresholdsUsedAsPercentage.Get())) - // when thresholds are used as percentage, the GetThreshold returns false - // and we would need to make sure that the value is not bogus - DisplayDouble(" ", lThreshVal.value()); - } - - DisplayString(" DisplayLevels"); - for (int i = 0; i < lLodGroupAttr->GetNumDisplayLevels(); i++) - { - FbxLODGroup::EDisplayLevel lLevel; - if (lLodGroupAttr->GetDisplayLevel(i, lLevel)) - DisplayString(" ", lDisplayLevels[lLevel]); - } -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.h deleted file mode 100755 index 719f6a4..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayLodGroup.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_LODGROUP_H -#define _DISPLAY_LODGROUP_H - -#include "DisplayCommon.h" - -void DisplayLodGroup(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_LODGROUP_H - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.cxx deleted file mode 100755 index 5360f8a..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.cxx +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode) -{ - FbxMarker* lMarker = (FbxMarker*)pNode->GetNodeAttribute(); - FbxString lString; - - DisplayString("Marker Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMarker); - - // Type - lString = " Marker Type: "; - switch (lMarker->GetType()) - { - case FbxMarker::eStandard: lString += "Standard"; break; - case FbxMarker::eOptical: lString += "Optical"; break; - case FbxMarker::eEffectorIK: lString += "IK Effector"; break; - case FbxMarker::eEffectorFK: lString += "FK Effector"; break; - } - DisplayString(lString.Buffer()); - - // Look - lString = " Marker Look: "; - switch (lMarker->Look.Get()) - { - default: - break; - case FbxMarker::eCube: lString += "Cube"; break; - case FbxMarker::eHardCross: lString += "Hard Cross"; break; - case FbxMarker::eLightCross: lString += "Light Cross"; break; - case FbxMarker::eSphere: lString += "Sphere"; break; - } - DisplayString(lString.Buffer()); - - // Size - lString = FbxString(" Size: ") + FbxString(lMarker->Size.Get()); - DisplayString(lString.Buffer()); - - // Color - FbxDouble3 c = lMarker->Color.Get(); - FbxColor color(c[0], c[1], c[2]); - DisplayColor(" Color: ", color); - - // IKPivot - Display3DVector(" IKPivot: ", lMarker->IKPivot.Get()); -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.h deleted file mode 100755 index 0233171..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMarker.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MARKER_H -#define _DISPLAY_MARKER_H - -#include "DisplayCommon.h" - -void DisplayMarker(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MARKER_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.cxx deleted file mode 100755 index 2614450..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.cxx +++ /dev/null @@ -1,252 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry) -{ - int lMaterialCount = 0; - FbxNode* lNode = NULL; - if(pGeometry){ - lNode = pGeometry->GetNode(); - if(lNode) - lMaterialCount = lNode->GetMaterialCount(); - } - - if (lMaterialCount > 0) - { - FbxPropertyT lKFbxDouble3; - FbxPropertyT lKFbxDouble1; - FbxColor theColor; - - for (int lCount = 0; lCount < lMaterialCount; lCount ++) - { - DisplayInt(" Material ", lCount); - - FbxSurfaceMaterial *lMaterial = lNode->GetMaterial(lCount); - - DisplayString(" Name: \"", (char *) lMaterial->GetName(), "\""); - - //Get the implementation to see if it's a hardware shader. - const FbxImplementation* lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_HLSL); - FbxString lImplemenationType = "HLSL"; - if(!lImplementation) - { - lImplementation = GetImplementation(lMaterial, FBXSDK_IMPLEMENTATION_CGFX); - lImplemenationType = "CGFX"; - } - if(lImplementation) - { - //Now we have a hardware shader, let's read it - FBXSDK_printf(" Hardware Shader Type: %s\n", lImplemenationType.Buffer()); - const FbxBindingTable* lRootTable = lImplementation->GetRootTable(); - FbxString lFileName = lRootTable->DescAbsoluteURL.Get(); - FbxString lTechniqueName = lRootTable->DescTAG.Get(); - - - const FbxBindingTable* lTable = lImplementation->GetRootTable(); - size_t lEntryNum = lTable->GetEntryCount(); - - for(int i=0;i <(int)lEntryNum; ++i) - { - const FbxBindingTableEntry& lEntry = lTable->GetEntry(i); - const char* lEntrySrcType = lEntry.GetEntryType(true); - FbxProperty lFbxProp; - - - FbxString lTest = lEntry.GetSource(); - FBXSDK_printf(" Entry: %s\n", lTest.Buffer()); - - - if ( strcmp( FbxPropertyEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lMaterial->FindPropertyHierarchical(lEntry.GetSource()); - if(!lFbxProp.IsValid()) - { - lFbxProp = lMaterial->RootProperty.FindHierarchical(lEntry.GetSource()); - } - - - } - else if( strcmp( FbxConstantEntryView::sEntryType, lEntrySrcType ) == 0 ) - { - lFbxProp = lImplementation->GetConstants().FindHierarchical(lEntry.GetSource()); - } - if(lFbxProp.IsValid()) - { - if( lFbxProp.GetSrcObjectCount() > 0 ) - { - //do what you want with the textures - for(int j=0; j(); ++j) - { - FbxFileTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" File Texture: %s\n", lTex->GetFileName()); - } - for(int j=0; j(); ++j) - { - FbxLayeredTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Layered Texture: %s\n", lTex->GetName()); - } - for(int j=0; j(); ++j) - { - FbxProceduralTexture *lTex = lFbxProp.GetSrcObject(j); - FBXSDK_printf(" Procedural Texture: %s\n", lTex->GetName()); - } - } - else - { - FbxDataType lFbxType = lFbxProp.GetPropertyDataType(); - FbxString blah = lFbxType.GetName(); - if(FbxBoolDT == lFbxType) - { - DisplayBool(" Bool: ", lFbxProp.Get() ); - } - else if ( FbxIntDT == lFbxType || FbxEnumDT == lFbxType ) - { - DisplayInt(" Int: ", lFbxProp.Get()); - } - else if ( FbxFloatDT == lFbxType) - { - DisplayDouble(" Float: ", lFbxProp.Get()); - - } - else if ( FbxDoubleDT == lFbxType) - { - DisplayDouble(" Double: ", lFbxProp.Get()); - } - else if ( FbxStringDT == lFbxType - || FbxUrlDT == lFbxType - || FbxXRefUrlDT == lFbxType ) - { - DisplayString(" String: ", lFbxProp.Get().Buffer()); - } - else if ( FbxDouble2DT == lFbxType) - { - FbxDouble2 lDouble2 = lFbxProp.Get(); - FbxVector2 lVect; - lVect[0] = lDouble2[0]; - lVect[1] = lDouble2[1]; - - Display2DVector(" 2D vector: ", lVect); - } - else if ( FbxDouble3DT == lFbxType || FbxColor3DT == lFbxType) - { - FbxDouble3 lDouble3 = lFbxProp.Get(); - - - FbxVector4 lVect; - lVect[0] = lDouble3[0]; - lVect[1] = lDouble3[1]; - lVect[2] = lDouble3[2]; - Display3DVector(" 3D vector: ", lVect); - } - - else if ( FbxDouble4DT == lFbxType || FbxColor4DT == lFbxType) - { - FbxDouble4 lDouble4 = lFbxProp.Get(); - FbxVector4 lVect; - lVect[0] = lDouble4[0]; - lVect[1] = lDouble4[1]; - lVect[2] = lDouble4[2]; - lVect[3] = lDouble4[3]; - Display4DVector(" 4D vector: ", lVect); - } - else if ( FbxDouble4x4DT == lFbxType) - { - FbxDouble4x4 lDouble44 = lFbxProp.Get(); - for(int j=0; j<4; ++j) - { - - FbxVector4 lVect; - lVect[0] = lDouble44[j][0]; - lVect[1] = lDouble44[j][1]; - lVect[2] = lDouble44[j][2]; - lVect[3] = lDouble44[j][3]; - Display4DVector(" 4x4D vector: ", lVect); - } - - } - } - - } - } - } - else if (lMaterial->GetClassId().Is(FbxSurfacePhong::ClassId)) - { - // We found a Phong material. Display its properties. - - // Display the Ambient Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Specular Color (unique to Phong materials) - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Specular; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Specular: ", theColor); - - // Display the Emissive Color - lKFbxDouble3 =((FbxSurfacePhong *) lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - //Opacity is Transparency factor now - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - - // Display the Shininess - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->Shininess; - DisplayDouble(" Shininess: ", lKFbxDouble1.Get()); - - // Display the Reflectivity - lKFbxDouble1 =((FbxSurfacePhong *) lMaterial)->ReflectionFactor; - DisplayDouble(" Reflectivity: ", lKFbxDouble1.Get()); - } - else if(lMaterial->GetClassId().Is(FbxSurfaceLambert::ClassId) ) - { - // We found a Lambert material. Display its properties. - // Display the Ambient Color - lKFbxDouble3=((FbxSurfaceLambert *)lMaterial)->Ambient; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Ambient: ", theColor); - - // Display the Diffuse Color - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Diffuse; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Diffuse: ", theColor); - - // Display the Emissive - lKFbxDouble3 =((FbxSurfaceLambert *)lMaterial)->Emissive; - theColor.Set(lKFbxDouble3.Get()[0], lKFbxDouble3.Get()[1], lKFbxDouble3.Get()[2]); - DisplayColor(" Emissive: ", theColor); - - // Display the Opacity - lKFbxDouble1 =((FbxSurfaceLambert *)lMaterial)->TransparencyFactor; - DisplayDouble(" Opacity: ", 1.0-lKFbxDouble1.Get()); - } - else - DisplayString("Unknown type of Material"); - - FbxPropertyT lString; - lString = lMaterial->ShadingModel; - DisplayString(" Shading Model: ", lString.Get().Buffer()); - DisplayString(""); - } - } -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.h deleted file mode 100755 index 73f4343..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMaterial.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MATERIAL_H -#define _DISPLAY_MATERIAL_H - -#include "DisplayCommon.h" - -void DisplayMaterial(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_MATERIAL_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.cxx deleted file mode 100755 index 95e9286..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.cxx +++ /dev/null @@ -1,602 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayMesh.h" - -#include "DisplayMaterial.h" -#include "DisplayTexture.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -#define MAT_HEADER_LENGTH 200 - -void DisplayControlsPoints(FbxMesh* pMesh); -void DisplayPolygons(FbxMesh* pMesh); -void DisplayMaterialMapping(FbxMesh* pMesh); -void DisplayTextureMapping(FbxMesh* pMesh); -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ); -void DisplayMaterialConnections(FbxMesh* pMesh); -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, - char * header, int pMatId, int l ); - -void DisplayMesh(FbxNode* pNode) -{ - FbxMesh* lMesh = (FbxMesh*) pNode->GetNodeAttribute (); - - DisplayString("Mesh Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lMesh); - DisplayControlsPoints(lMesh); - DisplayPolygons(lMesh); - DisplayMaterialMapping(lMesh); - DisplayMaterial(lMesh); - DisplayTexture(lMesh); - DisplayMaterialConnections(lMesh); - DisplayLink(lMesh); - DisplayShape(lMesh); - - DisplayCache(lMesh); -} - - -void DisplayControlsPoints(FbxMesh* pMesh) -{ - int i, lControlPointsCount = pMesh->GetControlPointsCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - - DisplayString(" Control Points"); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - - for (int j = 0; j < pMesh->GetElementNormalCount(); j++) - { - FbxGeometryElementNormal* leNormals = pMesh->GetElementNormal( j); - if (leNormals->GetMappingMode() == FbxGeometryElement::eByControlPoint) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Normal Vector: "); - if (leNormals->GetReferenceMode() == FbxGeometryElement::eDirect) - Display3DVector(header, leNormals->GetDirectArray().GetAt(i)); - } - } - } - - DisplayString(""); -} - - -void DisplayPolygons(FbxMesh* pMesh) -{ - int i, j, lPolygonCount = pMesh->GetPolygonCount(); - FbxVector4* lControlPoints = pMesh->GetControlPoints(); - char header[100]; - - DisplayString(" Polygons"); - - int vertexId = 0; - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - int l; - - for (l = 0; l < pMesh->GetElementPolygonGroupCount(); l++) - { - FbxGeometryElementPolygonGroup* lePolgrp = pMesh->GetElementPolygonGroup(l); - switch (lePolgrp->GetMappingMode()) - { - case FbxGeometryElement::eByPolygon: - if (lePolgrp->GetReferenceMode() == FbxGeometryElement::eIndex) - { - FBXSDK_sprintf(header, 100, " Assigned to group: "); - int polyGroupId = lePolgrp->GetIndexArray().GetAt(i); - DisplayInt(header, polyGroupId); - break; - } - default: - // any other mapping modes don't make sense - DisplayString(" \"unsupported group assignment\""); - break; - } - } - - int lPolygonSize = pMesh->GetPolygonSize(i); - - for (j = 0; j < lPolygonSize; j++) - { - int lControlPointIndex = pMesh->GetPolygonVertex(i, j); - if (lControlPointIndex < 0) - { - DisplayString(" Coordinates: Invalid index found!"); - continue; - } - else - Display3DVector(" Coordinates: ", lControlPoints[lControlPointIndex]); - - for (l = 0; l < pMesh->GetElementVertexColorCount(); l++) - { - FbxGeometryElementVertexColor* leVtxc = pMesh->GetElementVertexColor( l); - FBXSDK_sprintf(header, 100, " Color vertex: "); - - switch (leVtxc->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(lControlPointIndex); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - switch (leVtxc->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - DisplayColor(header, leVtxc->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leVtxc->GetIndexArray().GetAt(vertexId); - DisplayColor(header, leVtxc->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for (l = 0; l < pMesh->GetElementUVCount(); ++l) - { - FbxGeometryElementUV* leUV = pMesh->GetElementUV( l); - FBXSDK_sprintf(header, 100, " Texture UV: "); - - switch (leUV->GetMappingMode()) - { - default: - break; - case FbxGeometryElement::eByControlPoint: - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display2DVector(header, leUV->GetDirectArray().GetAt(lControlPointIndex)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leUV->GetIndexArray().GetAt(lControlPointIndex); - Display2DVector(header, leUV->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - break; - - case FbxGeometryElement::eByPolygonVertex: - { - int lTextureUVIndex = pMesh->GetTextureUVIndex(i, j); - switch (leUV->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - case FbxGeometryElement::eIndexToDirect: - { - Display2DVector(header, leUV->GetDirectArray().GetAt(lTextureUVIndex)); - } - break; - default: - break; // other reference modes not shown here! - } - } - break; - - case FbxGeometryElement::eByPolygon: // doesn't make much sense for UVs - case FbxGeometryElement::eAllSame: // doesn't make much sense for UVs - case FbxGeometryElement::eNone: // doesn't make much sense for UVs - break; - } - } - for( l = 0; l < pMesh->GetElementNormalCount(); ++l) - { - FbxGeometryElementNormal* leNormal = pMesh->GetElementNormal( l); - FBXSDK_sprintf(header, 100, " Normal: "); - - if(leNormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leNormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leNormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leNormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leNormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementTangentCount(); ++l) - { - FbxGeometryElementTangent* leTangent = pMesh->GetElementTangent( l); - FBXSDK_sprintf(header, 100, " Tangent: "); - - if(leTangent->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leTangent->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leTangent->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leTangent->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leTangent->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - - } - for( l = 0; l < pMesh->GetElementBinormalCount(); ++l) - { - - FbxGeometryElementBinormal* leBinormal = pMesh->GetElementBinormal( l); - - FBXSDK_sprintf(header, 100, " Binormal: "); - if(leBinormal->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - switch (leBinormal->GetReferenceMode()) - { - case FbxGeometryElement::eDirect: - Display3DVector(header, leBinormal->GetDirectArray().GetAt(vertexId)); - break; - case FbxGeometryElement::eIndexToDirect: - { - int id = leBinormal->GetIndexArray().GetAt(vertexId); - Display3DVector(header, leBinormal->GetDirectArray().GetAt(id)); - } - break; - default: - break; // other reference modes not shown here! - } - } - } - vertexId++; - } // for polygonSize - } // for polygonCount - - - //check visibility for the edges of the mesh - for(int l = 0; l < pMesh->GetElementVisibilityCount(); ++l) - { - FbxGeometryElementVisibility* leVisibility=pMesh->GetElementVisibility(l); - FBXSDK_sprintf(header, 100, " Edge Visibility : "); - DisplayString(header); - switch(leVisibility->GetMappingMode()) - { - default: - break; - //should be eByEdge - case FbxGeometryElement::eByEdge: - //should be eDirect - for(j=0; j!=pMesh->GetMeshEdgeCount();++j) - { - DisplayInt(" Edge ", j); - DisplayBool(" Edge visibility: ", leVisibility->GetDirectArray().GetAt(j)); - } - - break; - } - } - DisplayString(""); -} - -void DisplayTextureNames( FbxProperty &pProperty, FbxString& pConnectionString ) -{ - int lLayeredTextureCount = pProperty.GetSrcObjectCount(); - if(lLayeredTextureCount > 0) - { - for(int j=0; j(j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - pConnectionString += " Texture "; - - for(int k =0; kGetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " on layer "; - pConnectionString += j; - } - pConnectionString += " |"; - } - else - { - //no layered texture simply get on the property - int lNbTextures = pProperty.GetSrcObjectCount(); - - if(lNbTextures > 0) - { - pConnectionString += " Texture "; - pConnectionString += " "; - - for(int j =0; j(j); - if(lTexture) - { - pConnectionString += "\""; - pConnectionString += (char*)lTexture->GetName(); - pConnectionString += "\""; - pConnectionString += " "; - } - } - pConnectionString += "of "; - pConnectionString += pProperty.GetName(); - pConnectionString += " |"; - } - } -} - -void DisplayMaterialTextureConnections( FbxSurfaceMaterial* pMaterial, char * header, int pMatId, int l ) -{ - if(!pMaterial) - return; - - FbxString lConnectionString = " Material %d -- "; - //Show all the textures - - FbxProperty lProperty; - //Diffuse Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuse); - DisplayTextureNames(lProperty, lConnectionString); - - //DiffuseFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sDiffuseFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Emissive Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissive); - DisplayTextureNames(lProperty, lConnectionString); - - //EmissiveFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sEmissiveFactor); - DisplayTextureNames(lProperty, lConnectionString); - - - //Ambient Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbient); - DisplayTextureNames(lProperty, lConnectionString); - - //AmbientFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sAmbientFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Specular Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecular); - DisplayTextureNames(lProperty, lConnectionString); - - //SpecularFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sSpecularFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Shininess Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - DisplayTextureNames(lProperty, lConnectionString); - - //Bump Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sBump); - DisplayTextureNames(lProperty, lConnectionString); - - //Normal Map Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sNormalMap); - DisplayTextureNames(lProperty, lConnectionString); - - //Transparent Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparentColor); - DisplayTextureNames(lProperty, lConnectionString); - - //TransparencyFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sTransparencyFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Reflection Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflection); - DisplayTextureNames(lProperty, lConnectionString); - - //ReflectionFactor Textures - lProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sReflectionFactor); - DisplayTextureNames(lProperty, lConnectionString); - - //Update header with material info - bool lStringOverflow = (lConnectionString.GetLen() + 10 >= MAT_HEADER_LENGTH); // allow for string length and some padding for "%d" - if (lStringOverflow) - { - // Truncate string! - lConnectionString = lConnectionString.Left(MAT_HEADER_LENGTH - 10); - lConnectionString = lConnectionString + "..."; - } - FBXSDK_sprintf(header, MAT_HEADER_LENGTH, lConnectionString.Buffer(), pMatId, l); - DisplayString(header); -} - -void DisplayMaterialConnections(FbxMesh* pMesh) -{ - int i, l, lPolygonCount = pMesh->GetPolygonCount(); - - char header[MAT_HEADER_LENGTH]; - - DisplayString(" Polygons Material Connections"); - - //check whether the material maps with only one mesh - bool lIsAllSame = true; - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial(l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - lIsAllSame = false; - break; - } - } - - //For eAllSame mapping type, just out the material and texture mapping info once - if(lIsAllSame) - { - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - if( lMaterialElement->GetMappingMode() == FbxGeometryElement::eAllSame) - { - FbxSurfaceMaterial* lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(0)); - int lMatId = lMaterialElement->GetIndexArray().GetAt(0); - if(lMatId >= 0) - { - DisplayInt(" All polygons share the same material in mesh ", l); - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - - //no material - if(l == 0) - DisplayString(" no material applied"); - } - - //For eByPolygon mapping type, just out the material and texture mapping info once - else - { - for (i = 0; i < lPolygonCount; i++) - { - DisplayInt(" Polygon ", i); - - for (l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - - FbxGeometryElementMaterial* lMaterialElement = pMesh->GetElementMaterial( l); - FbxSurfaceMaterial* lMaterial = NULL; - int lMatId = -1; - lMaterial = pMesh->GetNode()->GetMaterial(lMaterialElement->GetIndexArray().GetAt(i)); - lMatId = lMaterialElement->GetIndexArray().GetAt(i); - - if(lMatId >= 0) - { - DisplayMaterialTextureConnections(lMaterial, header, lMatId, l); - } - } - } - } -} - - -void DisplayMaterialMapping(FbxMesh* pMesh) -{ - const char* lMappingTypes[] = { "None", "By Control Point", "By Polygon Vertex", "By Polygon", "By Edge", "All Same" }; - const char* lReferenceMode[] = { "Direct", "Index", "Index to Direct"}; - - int lMtrlCount = 0; - FbxNode* lNode = NULL; - if(pMesh){ - lNode = pMesh->GetNode(); - if(lNode) - lMtrlCount = lNode->GetMaterialCount(); - } - - for (int l = 0; l < pMesh->GetElementMaterialCount(); l++) - { - FbxGeometryElementMaterial* leMat = pMesh->GetElementMaterial( l); - if (leMat) - { - char header[100]; - FBXSDK_sprintf(header, 100, " Material Element %d: ", l); - DisplayString(header); - - - DisplayString(" Mapping: ", lMappingTypes[leMat->GetMappingMode()]); - DisplayString(" ReferenceMode: ", lReferenceMode[leMat->GetReferenceMode()]); - - int lMaterialCount = 0; - FbxString lString; - - if (leMat->GetReferenceMode() == FbxGeometryElement::eDirect || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - lMaterialCount = lMtrlCount; - } - - if (leMat->GetReferenceMode() == FbxGeometryElement::eIndex || - leMat->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - { - int i; - - lString = " Indices: "; - - int lIndexArrayCount = leMat->GetIndexArray().GetCount(); - for (i = 0; i < lIndexArrayCount; i++) - { - lString += leMat->GetIndexArray().GetAt(i); - - if (i < lIndexArrayCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - - FBXSDK_printf(lString); - } - } - } - - DisplayString(""); -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.h deleted file mode 100755 index e98fadf..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayMesh.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_MESH_H -#define _DISPLAY_MESH_H - -#include "DisplayCommon.h" - -void DisplayMesh(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_MESH_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.cxx deleted file mode 100755 index 6bcc77e..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayNurb.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" -#include "DisplayCache.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayNurb(FbxNode* pNode) -{ - FbxNurbs* lNurbs = (FbxNurbs*) pNode->GetNodeAttribute (); - int i; - - DisplayString("Nurb Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lNurbs); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lNurbs->GetSurfaceMode()]); - - int lControlPointsCount = lNurbs->GetControlPointsCount(); - FbxVector4* lControlPoints = lNurbs->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lNurbTypes[] = { "Periodic", "Closed", "Open" }; - - DisplayString(" Nurb U Type: ", lNurbTypes[lNurbs->GetNurbsUType()]); - DisplayInt(" U Count: ", lNurbs->GetUCount()); - DisplayString(" Nurb V Type: ", lNurbTypes[lNurbs->GetNurbsVType()]); - DisplayInt(" V Count: ", lNurbs->GetVCount()); - DisplayInt(" U Order: ", lNurbs->GetUOrder()); - DisplayInt(" V Order: ", lNurbs->GetVOrder()); - DisplayInt(" U Step: ", lNurbs->GetUStep()); - DisplayInt(" V Step: ", lNurbs->GetVStep()); - - FbxString lString; - int lUKnotCount = lNurbs->GetUKnotCount(); - int lVKnotCount = lNurbs->GetVKnotCount(); - int lUMultiplicityCount = lNurbs->GetUCount(); - int lVMultiplicityCount = lNurbs->GetVCount(); - double* lUKnotVector = lNurbs->GetUKnotVector(); - double* lVKnotVector = lNurbs->GetVKnotVector(); - int* lUMultiplicityVector = lNurbs->GetUMultiplicityVector(); - int* lVMultiplicityVector = lNurbs->GetVMultiplicityVector(); - - lString = " U Knot Vector: "; - - for (i = 0; i < lUKnotCount; i++) - { - lString += (float) lUKnotVector[i]; - - if (i < lUKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Knot Vector: "; - - for (i = 0; i < lVKnotCount; i++) - { - lString += (float) lVKnotVector[i]; - - if (i < lVKnotCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " U Multiplicity Vector: "; - - for (i = 0; i < lUMultiplicityCount; i++) - { - lString += lUMultiplicityVector[i]; - - if (i < lUMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - lString = " V Multiplicity Vector: "; - - for (i = 0; i < lVMultiplicityCount; i++) - { - lString += lVMultiplicityVector[i]; - - if (i < lVMultiplicityCount - 1) - { - lString += ", "; - } - } - - lString += "\n"; - FBXSDK_printf(lString); - - DisplayString(""); - - DisplayTexture(lNurbs); - DisplayMaterial(lNurbs); - DisplayLink(lNurbs); - DisplayShape(lNurbs); - DisplayCache(lNurbs); -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.h deleted file mode 100755 index 557f9e3..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayNurb.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_NURB_H -#define _DISPLAY_NURB_H - -#include "DisplayCommon.h" - -void DisplayNurb(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_NURB_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.cxx deleted file mode 100755 index 435cb42..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.cxx +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPatch.h" - -#include "DisplayTexture.h" -#include "DisplayMaterial.h" -#include "DisplayLink.h" -#include "DisplayShape.h" - -void DisplayPatch(FbxNode* pNode) -{ - FbxPatch* lPatch = (FbxPatch*) pNode->GetNodeAttribute(); - - DisplayString("Patch Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lPatch); - - const char* lSurfaceModes[] = { "Raw", "Low No Normals", "Low", "High No Normals", "High" }; - - DisplayString(" Surface Mode: ", lSurfaceModes[lPatch->GetSurfaceMode()]); - - int i, lControlPointsCount = lPatch->GetControlPointsCount(); - FbxVector4* lControlPoints = lPatch->GetControlPoints(); - - for (i = 0; i < lControlPointsCount; i++) - { - DisplayInt(" Control Point ", i); - Display3DVector(" Coordinates: ", lControlPoints[i]); - DisplayDouble(" Weight: ", lControlPoints[i][3]); - } - - const char* lPatchTypes[] = { "Bezier", "Bezier Quadric", "Cardinal", "B-Spline", "Linear" }; - - DisplayString(" Patch U Type: ", lPatchTypes[lPatch->GetPatchUType()]); - DisplayInt(" U Count: ", lPatch->GetUCount()); - DisplayString(" Patch V Type: ", lPatchTypes[lPatch->GetPatchVType()]); - DisplayInt(" V Count: ", lPatch->GetVCount()); - DisplayInt(" U Step: ", lPatch->GetUStep()); - DisplayInt(" V Step: ", lPatch->GetVStep()); - DisplayBool(" U Closed: ", lPatch->GetUClosed()); - DisplayBool(" V Closed: ", lPatch->GetVClosed()); - DisplayBool(" U Capped Top: ", lPatch->GetUCappedTop()); - DisplayBool(" U Capped Bottom: ", lPatch->GetUCappedBottom()); - DisplayBool(" V Capped Top: ", lPatch->GetVCappedTop()); - DisplayBool(" V Capped Bottom: ", lPatch->GetVCappedBottom()); - - DisplayString(""); - - DisplayTexture(lPatch); - DisplayMaterial(lPatch); - DisplayLink(lPatch); - DisplayShape(lPatch); -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.h deleted file mode 100755 index 5e27779..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPatch.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PATCH_H -#define _DISPLAY_PATCH_H - -#include "DisplayCommon.h" - -void DisplayPatch(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PATCH_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx deleted file mode 100755 index 536ba6c..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.cxx +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -void DisplayPivotsAndLimits(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - // - // Pivots - // - FBXSDK_printf(" Pivot Information\n"); - - FbxNode::EPivotState lPivotState; - pNode->GetPivotState(FbxNode::eSourcePivot, lPivotState); - FBXSDK_printf(" Pivot State: %s\n", lPivotState == FbxNode::ePivotActive ? "Active" : "Reference"); - - lTmpVector = pNode->GetPreRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Pre-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetPostRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Post-Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetRotationOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingPivot(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Pivot: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - lTmpVector = pNode->GetScalingOffset(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling Offset: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Limits - // - bool lIsActive, lMinXActive, lMinYActive, lMinZActive; - bool lMaxXActive, lMaxYActive, lMaxZActive; - FbxDouble3 lMinValues, lMaxValues; - - FBXSDK_printf(" Limits Information\n"); - - lIsActive = pNode->TranslationActive; - lMinXActive = pNode->TranslationMinX; - lMinYActive = pNode->TranslationMinY; - lMinZActive = pNode->TranslationMinZ; - lMaxXActive = pNode->TranslationMaxX; - lMaxYActive = pNode->TranslationMaxY; - lMaxZActive = pNode->TranslationMaxZ; - lMinValues = pNode->TranslationMin; - lMaxValues = pNode->TranslationMax; - - FBXSDK_printf(" Translation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->RotationActive; - lMinXActive = pNode->RotationMinX; - lMinYActive = pNode->RotationMinY; - lMinZActive = pNode->RotationMinZ; - lMaxXActive = pNode->RotationMaxX; - lMaxYActive = pNode->RotationMaxY; - lMaxZActive = pNode->RotationMaxZ; - lMinValues = pNode->RotationMin; - lMaxValues = pNode->RotationMax; - - FBXSDK_printf(" Rotation limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); - - lIsActive = pNode->ScalingActive; - lMinXActive = pNode->ScalingMinX; - lMinYActive = pNode->ScalingMinY; - lMinZActive = pNode->ScalingMinZ; - lMaxXActive = pNode->ScalingMaxX; - lMaxYActive = pNode->ScalingMaxY; - lMaxZActive = pNode->ScalingMaxZ; - lMinValues = pNode->ScalingMin; - lMaxValues = pNode->ScalingMax; - - FBXSDK_printf(" Scaling limits: %s\n", lIsActive ? "Active" : "Inactive"); - FBXSDK_printf(" X\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[0]); - FBXSDK_printf(" Max Limit: %s\n", lMaxXActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[0]); - FBXSDK_printf(" Y\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[1]); - FBXSDK_printf(" Max Limit: %s\n", lMaxYActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[1]); - FBXSDK_printf(" Z\n"); - FBXSDK_printf(" Min Limit: %s\n", lMinZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Min Limit Value: %f\n", lMinValues[2]); - FBXSDK_printf(" Max Limit: %s\n", lMaxZActive ? "Active" : "Inactive"); - FBXSDK_printf(" Max Limit Value: %f\n", lMaxValues[2]); -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h deleted file mode 100755 index 99fe6b1..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPivotsAndLimits.h +++ /dev/null @@ -1,20 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_PIVOTS_AND_LIMITS_H -#define _DISPLAY_PIVOTS_AND_LIMITS_H - -#include "DisplayCommon.h" - -void DisplayPivotsAndLimits(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_PIVOTS_AND_LIMITS_H - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.cxx deleted file mode 100755 index 433bdda..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.cxx +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayPose.h" - -void DisplayPose(FbxScene* pScene) -{ - int i,j,k,lPoseCount; - FbxString lName; - - lPoseCount = pScene->GetPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxPose* lPose = pScene->GetPose(i); - - lName = lPose->GetName(); - DisplayString("Pose Name: ", lName.Buffer()); - - DisplayBool(" Is a bind pose: ", lPose->IsBindPose()); - - DisplayInt(" Number of items in the pose: ", lPose->GetCount()); - - DisplayString("",""); - - for (j=0; jGetCount(); j++) - { - lName = lPose->GetNodeName(j).GetCurrentName(); - DisplayString(" Item name: ", lName.Buffer()); - - if (!lPose->IsBindPose()) - { - // Rest pose can have local matrix - DisplayBool(" Is local space matrix: ", lPose->IsLocalMatrix(j)); - } - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxMatrix lMatrix = lPose->GetMatrix(j); - FbxVector4 lRow = lMatrix.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - } - } - - lPoseCount = pScene->GetCharacterPoseCount(); - - for (i = 0; i < lPoseCount; i++) - { - FbxCharacterPose* lPose = pScene->GetCharacterPose(i); - FbxCharacter* lCharacter = lPose->GetCharacter(); - - if (!lCharacter) break; - - DisplayString("Character Pose Name: ", lCharacter->GetName()); - - FbxCharacterLink lCharacterLink; - FbxCharacter::ENodeId lNodeId = FbxCharacter::eHips; - - while (lCharacter->GetCharacterLink(lNodeId, &lCharacterLink)) - { - FbxAMatrix& lGlobalPosition = lCharacterLink.mNode->EvaluateGlobalTransform(FBXSDK_TIME_ZERO); - - DisplayString(" Matrix value: ",""); - - FbxString lMatrixValue; - - for (k=0; k<4; k++) - { - FbxVector4 lRow = lGlobalPosition.GetRow(k); - char lRowValue[1024]; - - FBXSDK_sprintf(lRowValue, 1024, "%9.4f %9.4f %9.4f %9.4f\n", lRow[0], lRow[1], lRow[2], lRow[3]); - lMatrixValue += FbxString(" ") + FbxString(lRowValue); - } - - DisplayString("", lMatrixValue.Buffer()); - - lNodeId = FbxCharacter::ENodeId(int(lNodeId) + 1); - } - } -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.h deleted file mode 100755 index a0a6b2b..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayPose.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_POSE_H -#define _DISPLAY_POSE_H - -#include "DisplayCommon.h" - -void DisplayPose(FbxScene* pScene); - -#endif // #ifndef _DISPLAY_POSE_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.cxx deleted file mode 100755 index 18b03be..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry) -{ - int lBlendShapeCount, lBlendShapeChannelCount, lTargetShapeCount; - FbxBlendShape* lBlendShape; - FbxBlendShapeChannel* lBlendShapeChannel; - FbxShape* lShape; - - lBlendShapeCount = pGeometry->GetDeformerCount(FbxDeformer::eBlendShape); - - for (int lBlendShapeIndex = 0; lBlendShapeIndex < lBlendShapeCount; ++lBlendShapeIndex) - { - lBlendShape = (FbxBlendShape*) pGeometry->GetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - DisplayString(" BlendShape ", (char *) lBlendShape->GetName()); - - lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lBlendShapeChannelIndex = 0; lBlendShapeChannelIndex < lBlendShapeChannelCount; ++lBlendShapeChannelIndex) - { - lBlendShapeChannel = lBlendShape->GetBlendShapeChannel(lBlendShapeChannelIndex); - DisplayString(" BlendShapeChannel ", (char *) lBlendShapeChannel->GetName()); - DisplayDouble(" Default Deform Value: ", lBlendShapeChannel->DeformPercent.Get()); - - lTargetShapeCount = lBlendShapeChannel->GetTargetShapeCount(); - for (int lTargetShapeIndex = 0; lTargetShapeIndex < lTargetShapeCount; ++lTargetShapeIndex) - { - lShape = lBlendShapeChannel->GetTargetShape(lTargetShapeIndex); - DisplayString(" TargetShape ", (char *) lShape->GetName()); - - int j, lControlPointsCount = lShape->GetControlPointsCount(); - FbxVector4* lControlPoints = lShape->GetControlPoints(); - FbxLayerElementArrayTemplate* lNormals = NULL; - bool lStatus = lShape->GetNormals(&lNormals); - - for(j = 0; j < lControlPointsCount; j++) - { - DisplayInt(" Control Point ", j); - Display3DVector(" Coordinates: ", lControlPoints[j]); - - if (lStatus && lNormals && lNormals->GetCount() == lControlPointsCount) - { - Display3DVector(" Normal Vector: ", lNormals->GetAt(j)); - } - } - - DisplayString(""); - } - } - } -} - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.h deleted file mode 100755 index 60d1849..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayShape.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SHAPE_H -#define _DISPLAY_SHAPE_H - -#include "DisplayCommon.h" - -void DisplayShape(FbxGeometry* pGeometry); - -#endif // #ifndef _DISPLAY_SHAPE_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.cxx deleted file mode 100755 index eba260e..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - DisplayString("Skeleton Name: ", (char *) pNode->GetName()); - DisplayMetaDataConnections(lSkeleton); - - const char* lSkeletonTypes[] = { "Root", "Limb", "Limb Node", "Effector" }; - - DisplayString(" Type: ", lSkeletonTypes[lSkeleton->GetSkeletonType()]); - - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimb) - { - DisplayDouble(" Limb Length: ", lSkeleton->LimbLength.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode) - { - DisplayDouble(" Limb Node Size: ", lSkeleton->Size.Get()); - } - else if (lSkeleton->GetSkeletonType() == FbxSkeleton::eRoot) - { - DisplayDouble(" Limb Root Size: ", lSkeleton->Size.Get()); - } - - DisplayColor(" Color: ", lSkeleton->GetLimbNodeColor()); -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.h b/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.h deleted file mode 100755 index 31eef84..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplaySkeleton.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_SKELETON_H -#define _DISPLAY_SKELETON_H - -#include "DisplayCommon.h" - -void DisplaySkeleton(FbxNode* pNode); - -#endif // #ifndef _DISPLAY_SKELETON_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.cxx deleted file mode 100755 index 02d8256..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.cxx +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2017 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include - -#include "DisplayCommon.h" - -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode) -{ - FbxFileTexture *lFileTexture = FbxCast(pTexture); - FbxProceduralTexture *lProceduralTexture = FbxCast(pTexture); - - DisplayString(" Name: \"", (char *) pTexture->GetName(), "\""); - if (lFileTexture) - { - DisplayString(" Type: File Texture"); - DisplayString(" File Name: \"", (char *) lFileTexture->GetFileName(), "\""); - } - else if (lProceduralTexture) - { - DisplayString(" Type: Procedural Texture"); - } - DisplayDouble(" Scale U: ", pTexture->GetScaleU()); - DisplayDouble(" Scale V: ", pTexture->GetScaleV()); - DisplayDouble(" Translation U: ", pTexture->GetTranslationU()); - DisplayDouble(" Translation V: ", pTexture->GetTranslationV()); - DisplayBool(" Swap UV: ", pTexture->GetSwapUV()); - DisplayDouble(" Rotation U: ", pTexture->GetRotationU()); - DisplayDouble(" Rotation V: ", pTexture->GetRotationV()); - DisplayDouble(" Rotation W: ", pTexture->GetRotationW()); - - const char* lAlphaSources[] = { "None", "RGB Intensity", "Black" }; - - DisplayString(" Alpha Source: ", lAlphaSources[pTexture->GetAlphaSource()]); - DisplayDouble(" Cropping Left: ", pTexture->GetCroppingLeft()); - DisplayDouble(" Cropping Top: ", pTexture->GetCroppingTop()); - DisplayDouble(" Cropping Right: ", pTexture->GetCroppingRight()); - DisplayDouble(" Cropping Bottom: ", pTexture->GetCroppingBottom()); - - const char* lMappingTypes[] = { "Null", "Planar", "Spherical", "Cylindrical", - "Box", "Face", "UV", "Environment" }; - - DisplayString(" Mapping Type: ", lMappingTypes[pTexture->GetMappingType()]); - - if (pTexture->GetMappingType() == FbxTexture::ePlanar) - { - const char* lPlanarMappingNormals[] = { "X", "Y", "Z" }; - - DisplayString(" Planar Mapping Normal: ", lPlanarMappingNormals[pTexture->GetPlanarMappingNormal()]); - } - - const char* lBlendModes[] = { "Translucent", "Additive", "Modulate", "Modulate2", "Over", "Normal", "Dissolve", "Darken", "ColorBurn", "LinearBurn", - "DarkerColor", "Lighten", "Screen", "ColorDodge", "LinearDodge", "LighterColor", "SoftLight", "HardLight", "VividLight", - "LinearLight", "PinLight", "HardMix", "Difference", "Exclusion", "Substract", "Divide", "Hue", "Saturation", "Color", - "Luminosity", "Overlay"}; - - if(pBlendMode >= 0) - DisplayString(" Blend Mode: ", lBlendModes[pBlendMode]); - DisplayDouble(" Alpha: ", pTexture->GetDefaultAlpha()); - - if (lFileTexture) - { - const char* lMaterialUses[] = { "Model Material", "Default Material" }; - DisplayString(" Material Use: ", lMaterialUses[lFileTexture->GetMaterialUse()]); - } - - const char* pTextureUses[] = { "Standard", "Shadow Map", "Light Map", - "Spherical Reflexion Map", "Sphere Reflexion Map", "Bump Normal Map" }; - - DisplayString(" Texture Use: ", pTextureUses[pTexture->GetTextureUse()]); - DisplayString(""); - -} - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex){ - - if( pProperty.IsValid() ) - { - int lTextureCount = pProperty.GetSrcObjectCount(); - - for (int j = 0; j < lTextureCount; ++j) - { - //Here we have to check if it's layeredtextures, or just textures: - FbxLayeredTexture *lLayeredTexture = pProperty.GetSrcObject(j); - if (lLayeredTexture) - { - DisplayInt(" Layered Texture: ", j); - int lNbTextures = lLayeredTexture->GetSrcObjectCount(); - for(int k =0; kGetSrcObject(k); - if(lTexture) - { - - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - //NOTE the blend mode is ALWAYS on the LayeredTexture and NOT the one on the texture. - //Why is that? because one texture can be shared on different layered textures and might - //have different blend modes. - - FbxLayeredTexture::EBlendMode lBlendMode; - lLayeredTexture->GetTextureBlendMode(k, lBlendMode); - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", k); - DisplayTextureInfo(lTexture, (int) lBlendMode); - } - - } - } - else - { - //no layered texture simply get on the property - FbxTexture* lTexture = pProperty.GetSrcObject(j); - if(lTexture) - { - //display connected Material header only at the first time - if(pDisplayHeader){ - DisplayInt(" Textures connected to Material ", pMaterialIndex); - pDisplayHeader = false; - } - - DisplayString(" Textures for ", pProperty.GetName()); - DisplayInt(" Texture ", j); - DisplayTextureInfo(lTexture, -1); - } - } - } - }//end if pProperty - -} - - -void DisplayTexture(FbxGeometry* pGeometry) -{ - int lMaterialIndex; - FbxProperty lProperty; - if(pGeometry->GetNode()==NULL) - return; - int lNbMat = pGeometry->GetNode()->GetSrcObjectCount(); - for (lMaterialIndex = 0; lMaterialIndex < lNbMat; lMaterialIndex++){ - FbxSurfaceMaterial *lMaterial = pGeometry->GetNode()->GetSrcObject(lMaterialIndex); - bool lDisplayHeader = true; - - //go through all the possible textures - if(lMaterial){ - - int lTextureIndex; - FBXSDK_FOR_EACH_TEXTURE(lTextureIndex) - { - lProperty = lMaterial->FindProperty(FbxLayerElement::sTextureChannelNames[lTextureIndex]); - FindAndDisplayTextureInfoByProperty(lProperty, lDisplayHeader, lMaterialIndex); - } - - }//end if(lMaterial) - - }// end for lMaterialIndex -} diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.h deleted file mode 100755 index e8375b0..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayTexture.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_TEXTURE_H -#define _DISPLAY_TEXTURE_H - -#include "DisplayCommon.h" - -void FindAndDisplayTextureInfoByProperty(FbxProperty pProperty, bool& pDisplayHeader, int pMaterialIndex); -void DisplayTexture(FbxGeometry* pGeometry); -void DisplayTextureInfo(FbxTexture* pTexture, int pBlendMode); - -#endif // #ifndef _DISPLAY_TEXTURE_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.cxx b/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.cxx deleted file mode 100755 index 285c5d1..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.cxx +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayUserProperties.h" - -void DisplayUserProperties(FbxObject* pObject) -{ - int lCount = 0; - FbxString lTitleStr = " Property Count: "; - - FbxProperty lProperty = pObject->GetFirstProperty(); - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - lCount++; - - lProperty = pObject->GetNextProperty(lProperty); - } - - if (lCount == 0) - return; // there are no user properties to display - - DisplayInt(lTitleStr.Buffer(), lCount); - - lProperty = pObject->GetFirstProperty(); - int i = 0; - while (lProperty.IsValid()) - { - if (lProperty.GetFlag(FbxPropertyFlags::eUserDefined)) - { - DisplayInt(" Property ", i); - FbxString lString = lProperty.GetLabel(); - DisplayString(" Display Name: ", lString.Buffer()); - lString = lProperty.GetName(); - DisplayString(" Internal Name: ", lString.Buffer()); - DisplayString(" Type: ", lProperty.GetPropertyDataType().GetName()); - if (lProperty.HasMinLimit()) DisplayDouble(" Min Limit: ", lProperty.GetMinLimit()); - if (lProperty.HasMaxLimit()) DisplayDouble(" Max Limit: ", lProperty.GetMaxLimit()); - DisplayBool (" Is Animatable: ", lProperty.GetFlag(FbxPropertyFlags::eAnimatable)); - - FbxDataType lPropertyDataType=lProperty.GetPropertyDataType(); - - // BOOL - if (lPropertyDataType.GetType() == eFbxBool) - { - DisplayBool(" Default Value: ", lProperty.Get()); - } - // REAL - else if (lPropertyDataType.GetType() == eFbxDouble || lPropertyDataType.GetType() == eFbxFloat) - { - DisplayDouble(" Default Value: ", lProperty.Get()); - } - // COLOR - else if (lPropertyDataType.Is(FbxColor3DT) || lPropertyDataType.Is(FbxColor4DT)) - { - FbxColor lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "R=%f, G=%f, B=%f, A=%f", lDefault.mRed, lDefault.mGreen, lDefault.mBlue, lDefault.mAlpha); - DisplayString(" Default Value: ", lBuf); - } - // INTEGER - else if (lPropertyDataType.GetType() == eFbxInt) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // VECTOR - else if(lPropertyDataType.GetType() == eFbxDouble3 || lPropertyDataType.GetType() == eFbxDouble4) - { - FbxDouble3 lDefault; - char lBuf[64]; - - lDefault = lProperty.Get(); - FBXSDK_sprintf(lBuf, 64, "X=%f, Y=%f, Z=%f", lDefault[0], lDefault[1], lDefault[2]); - DisplayString(" Default Value: ", lBuf); - } - // LIST - else if (lPropertyDataType.GetType() == eFbxEnum) - { - DisplayInt(" Default Value: ", lProperty.Get()); - } - // UNIDENTIFIED - else - { - DisplayString(" Default Value: UNIDENTIFIED"); - } - i++; - } - - lProperty = pObject->GetNextProperty(lProperty); - } -} - diff --git a/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.h b/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.h deleted file mode 100755 index 3a22f32..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/DisplayUserProperties.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_USER_PROPERTIES_H -#define _DISPLAY_USER_PROPERTIES_H - -#include "DisplayCommon.h" - -void DisplayUserProperties(FbxObject* pObject); - -#endif // #ifndef _DISPLAY_USER_PROPERTIES_H - - diff --git a/sdk/Windows/2019.2/samples/ImportScene/main.cxx b/sdk/Windows/2019.2/samples/ImportScene/main.cxx deleted file mode 100755 index 7591f8a..0000000 --- a/sdk/Windows/2019.2/samples/ImportScene/main.cxx +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to detect if a scene is password -// protected, import and browse the scene to access node and animation -// information. It displays the content of the FBX file which name is -// passed as program argument. You can try it with the various FBX files -// output by the export examples. -// -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" -#include "DisplayCommon.h" -#include "DisplayHierarchy.h" -#include "DisplayAnimation.h" -#include "DisplayMarker.h" -#include "DisplaySkeleton.h" -#include "DisplayMesh.h" -#include "DisplayNurb.h" -#include "DisplayPatch.h" -#include "DisplayLodGroup.h" -#include "DisplayCamera.h" -#include "DisplayLight.h" -#include "DisplayGlobalSettings.h" -#include "DisplayPose.h" -#include "DisplayPivotsAndLimits.h" -#include "DisplayUserProperties.h" -#include "DisplayGenericInfo.h" - -// Local function prototypes. -void DisplayContent(FbxScene* pScene); -void DisplayContent(FbxNode* pNode); -void DisplayTarget(FbxNode* pNode); -void DisplayTransformPropagation(FbxNode* pNode); -void DisplayGeometricTransform(FbxNode* pNode); -void DisplayMetaData(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - // Load the scene. - - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - if( lFilePath.IsEmpty() ) - { - lResult = false; - FBXSDK_printf("\n\nUsage: ImportScene \n\n"); - } - else - { - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - } - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - // Display the scene. - DisplayMetaData(lScene); - - FBXSDK_printf("\n\n---------------------\nGlobal Light Settings\n---------------------\n\n"); - - if( gVerbose ) DisplayGlobalLightSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n----------------------\nGlobal Camera Settings\n----------------------\n\n"); - - if( gVerbose ) DisplayGlobalCameraSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n--------------------\nGlobal Time Settings\n--------------------\n\n"); - - if( gVerbose ) DisplayGlobalTimeSettings(&lScene->GetGlobalSettings()); - - FBXSDK_printf("\n\n---------\nHierarchy\n---------\n\n"); - - if( gVerbose ) DisplayHierarchy(lScene); - - FBXSDK_printf("\n\n------------\nNode Content\n------------\n\n"); - - if( gVerbose ) DisplayContent(lScene); - - FBXSDK_printf("\n\n----\nPose\n----\n\n"); - - if( gVerbose ) DisplayPose(lScene); - - FBXSDK_printf("\n\n---------\nAnimation\n---------\n\n"); - - if( gVerbose ) DisplayAnimation(lScene); - - //now display generic information - - FBXSDK_printf("\n\n---------\nGeneric Information\n---------\n\n"); - if( gVerbose ) DisplayGenericInfo(lScene); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void DisplayContent(FbxScene* pScene) -{ - int i; - FbxNode* lNode = pScene->GetRootNode(); - - if(lNode) - { - for(i = 0; i < lNode->GetChildCount(); i++) - { - DisplayContent(lNode->GetChild(i)); - } - } -} - -void DisplayContent(FbxNode* pNode) -{ - FbxNodeAttribute::EType lAttributeType; - int i; - - if(pNode->GetNodeAttribute() == NULL) - { - FBXSDK_printf("NULL Node Attribute\n\n"); - } - else - { - lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType()); - - switch (lAttributeType) - { - default: - break; - case FbxNodeAttribute::eMarker: - DisplayMarker(pNode); - break; - - case FbxNodeAttribute::eSkeleton: - DisplaySkeleton(pNode); - break; - - case FbxNodeAttribute::eMesh: - DisplayMesh(pNode); - break; - - case FbxNodeAttribute::eNurbs: - DisplayNurb(pNode); - break; - - case FbxNodeAttribute::ePatch: - DisplayPatch(pNode); - break; - - case FbxNodeAttribute::eCamera: - DisplayCamera(pNode); - break; - - case FbxNodeAttribute::eLight: - DisplayLight(pNode); - break; - - case FbxNodeAttribute::eLODGroup: - DisplayLodGroup(pNode); - break; - } - } - - DisplayUserProperties(pNode); - DisplayTarget(pNode); - DisplayPivotsAndLimits(pNode); - DisplayTransformPropagation(pNode); - DisplayGeometricTransform(pNode); - - for(i = 0; i < pNode->GetChildCount(); i++) - { - DisplayContent(pNode->GetChild(i)); - } -} - - -void DisplayTarget(FbxNode* pNode) -{ - if(pNode->GetTarget() != NULL) - { - DisplayString(" Target Name: ", (char *) pNode->GetTarget()->GetName()); - } -} - -void DisplayTransformPropagation(FbxNode* pNode) -{ - FBXSDK_printf(" Transformation Propagation\n"); - - // - // Rotation Space - // - EFbxRotationOrder lRotationOrder; - pNode->GetRotationOrder(FbxNode::eSourcePivot, lRotationOrder); - - FBXSDK_printf(" Rotation Space: "); - - switch (lRotationOrder) - { - case eEulerXYZ: - FBXSDK_printf("Euler XYZ\n"); - break; - case eEulerXZY: - FBXSDK_printf("Euler XZY\n"); - break; - case eEulerYZX: - FBXSDK_printf("Euler YZX\n"); - break; - case eEulerYXZ: - FBXSDK_printf("Euler YXZ\n"); - break; - case eEulerZXY: - FBXSDK_printf("Euler ZXY\n"); - break; - case eEulerZYX: - FBXSDK_printf("Euler ZYX\n"); - break; - case eSphericXYZ: - FBXSDK_printf("Spheric XYZ\n"); - break; - } - - // - // Use the Rotation space only for the limits - // (keep using eEulerXYZ for the rest) - // - FBXSDK_printf(" Use the Rotation Space for Limit specification only: %s\n", - pNode->GetUseRotationSpaceForLimitOnly(FbxNode::eSourcePivot) ? "Yes" : "No"); - - - // - // Inherit Type - // - FbxTransform::EInheritType lInheritType; - pNode->GetTransformationInheritType(lInheritType); - - FBXSDK_printf(" Transformation Inheritance: "); - - switch (lInheritType) - { - case FbxTransform::eInheritRrSs: - FBXSDK_printf("RrSs\n"); - break; - case FbxTransform::eInheritRSrs: - FBXSDK_printf("RSrs\n"); - break; - case FbxTransform::eInheritRrs: - FBXSDK_printf("Rrs\n"); - break; - } -} - -void DisplayGeometricTransform(FbxNode* pNode) -{ - FbxVector4 lTmpVector; - - FBXSDK_printf(" Geometric Transformations\n"); - - // - // Translation - // - lTmpVector = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - FBXSDK_printf(" Translation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Rotation - // - lTmpVector = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - FBXSDK_printf(" Rotation: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); - - // - // Scaling - // - lTmpVector = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - FBXSDK_printf(" Scaling: %f %f %f\n", lTmpVector[0], lTmpVector[1], lTmpVector[2]); -} - - -void DisplayMetaData(FbxScene* pScene) -{ - FbxDocumentInfo* sceneInfo = pScene->GetSceneInfo(); - if (sceneInfo) - { - FBXSDK_printf("\n\n--------------------\nMeta-Data\n--------------------\n\n"); - FBXSDK_printf(" Title: %s\n", sceneInfo->mTitle.Buffer()); - FBXSDK_printf(" Subject: %s\n", sceneInfo->mSubject.Buffer()); - FBXSDK_printf(" Author: %s\n", sceneInfo->mAuthor.Buffer()); - FBXSDK_printf(" Keywords: %s\n", sceneInfo->mKeywords.Buffer()); - FBXSDK_printf(" Revision: %s\n", sceneInfo->mRevision.Buffer()); - FBXSDK_printf(" Comment: %s\n", sceneInfo->mComment.Buffer()); - - FbxThumbnail* thumbnail = sceneInfo->GetSceneThumbnail(); - if (thumbnail) - { - FBXSDK_printf(" Thumbnail:\n"); - - switch (thumbnail->GetDataFormat()) - { - case FbxThumbnail::eRGB_24: - FBXSDK_printf(" Format: RGB\n"); - break; - case FbxThumbnail::eRGBA_32: - FBXSDK_printf(" Format: RGBA\n"); - break; - } - - switch (thumbnail->GetSize()) - { - default: - break; - case FbxThumbnail::eNotSet: - FBXSDK_printf(" Size: no dimensions specified (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e64x64: - FBXSDK_printf(" Size: 64 x 64 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - break; - case FbxThumbnail::e128x128: - FBXSDK_printf(" Size: 128 x 128 pixels (%ld bytes)\n", thumbnail->GetSizeInBytes()); - } - } - } -} - diff --git a/sdk/Windows/2019.2/samples/Instances/CMakeLists.txt b/sdk/Windows/2019.2/samples/Instances/CMakeLists.txt deleted file mode 100755 index bbd3be1..0000000 --- a/sdk/Windows/2019.2/samples/Instances/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Instances .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Windows/2019.2/samples/Instances/main.cxx b/sdk/Windows/2019.2/samples/Instances/main.cxx deleted file mode 100755 index 44d49eb..0000000 --- a/sdk/Windows/2019.2/samples/Instances/main.cxx +++ /dev/null @@ -1,440 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -/****************************************************************************/ -/* This example shows how to instanciate meshes and curves in FBX. */ -/* - Create a cube */ -/* - Create instances of this cube (new nodes that point to the same mesh) */ -/* - Apply the same materials to the polygons of these cubes */ -/* - Create an animation curve */ -/* - Animate all cubes using the same animation curve. */ -/****************************************************************************/ - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Instances.fbx" -#define SAMPLE_INSTANCE_COUNT 10 - -// Globals -int gNbCubes = -1; -FbxDouble3 gRed(1.0, 0.0, 0.0); -FbxDouble3 gGreen(0.0, 1.0, 0.0); -FbxDouble3 gBlue(0.0, 0.0, 1.0); -FbxDouble3 gGray(0.5, 0.5, 0.5); -FbxDouble3 gWhite(1.0, 1.0, 1.0); - -FbxSurfacePhong* gMatWhite; -FbxSurfacePhong* gMatGray; -FbxSurfacePhong* gMatRed; -FbxSurfacePhong* gMatGreen; -FbxSurfacePhong* gMatBlue; - -// Function prototypes. -bool CreateScene(FbxManager* pSdkManager, FbxScene* pScene); -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube); -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor); -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene); -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an output file name as an argument, and a cube number. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else - { - if( !lSampleFileName ) lSampleFileName = argv[i]; - else if ( gNbCubes < 1 ) gNbCubes = atoi(argv[i]); - } - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - if( gNbCubes < 1 ) gNbCubes = SAMPLE_INSTANCE_COUNT; - - // Create the scene. - lResult = CreateScene(lSdkManager, lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Save the scene. - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -bool CreateScene(FbxManager* /*pSdkManager*/, FbxScene* pScene) -{ - // Initial cube position - double lX = 0.0; - double lY = 20.0; - double lZ = 0.0; - - // Create global materials - gMatWhite = CreateMaterial(pScene, gWhite); - gMatGray = CreateMaterial(pScene, gGray); - gMatRed = CreateMaterial(pScene, gRed); - gMatGreen = CreateMaterial(pScene, gGreen); - gMatBlue = CreateMaterial(pScene, gBlue); - - FbxMesh* lCubeMesh = NULL; - FbxNode* lCubeNode = NULL; - - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, "Cube Animation Stack"); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - for (int i = 0; i < gNbCubes; i++) - { - FbxString lCubeName = "Cube "; - lCubeName += (i+1); - - if (i == 0) - { - // Create first cube - lCubeNode = CreateCube(pScene, lCubeName.Buffer()); - lCubeMesh = lCubeNode->GetMesh(); - } - else - { - // Create cube instance - lCubeNode = CreateCubeInstance(pScene, lCubeName.Buffer(), lCubeMesh); - } - - // set the cube position - lCubeNode->LclTranslation.Set(FbxVector4(lX, lY, lZ)); - - // Animate cube - // Create an animation curve for each node. - FbxAnimCurve* lAnimCurve = CreateAnimCurve(pScene); - AnimateCube(lCubeNode, lAnimLayer, lAnimCurve, i%3); - // alternate sides of X - if (lX >= 0) - { - lX += 50; - } - else - { - lX -= 50; - } - lX *= -1.0; - lY += 30.0; - } - - return true; -} - - -// The cube rotates around X, Y or Z. -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, FbxAnimCurve* pAnimCurve, int pRotAxis) -{ - FbxAnimCurveNode *lCurveNode = pCube->LclRotation.GetCurveNode(pAnimLayer, true); - - // Find out which channel to animate: rotate around X axis, Y axis, or Z axis. - if(pRotAxis == 0) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_X); - } - else if(pRotAxis == 1) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Y); - } - else if(pRotAxis == 2) - { - lCurveNode->ConnectToChannel(pAnimCurve, FBXSDK_CURVENODE_COMPONENT_Z); - } -} - -// Create a cube with a fresh new mesh, and add it to the scene. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - // Set the normals on Layer 0. - FbxLayer* lLayer = lMesh->GetLayer(0); - if (lLayer == NULL) - { - lMesh->CreateLayer(); - lLayer = lMesh->GetLayer(0); - } - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxLayerElementNormal* lLayerElementNormal= FbxLayerElementNormal::Create(lMesh, ""); - - lLayerElementNormal->SetMappingMode(FbxLayerElement::eByControlPoint); - - // Set the normal values for every control point. - lLayerElementNormal->SetReferenceMode(FbxLayerElement::eDirect); - - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalXPos); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalZNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalXNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYPos); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - lLayerElementNormal->GetDirectArray().Add(lNormalYNeg); - - lLayer->SetNormals(lLayerElementNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - - - // Create UV for Diffuse channel. - FbxLayerElementUV* lUVDiffuseLayer = FbxLayerElementUV::Create(lMesh, "DiffuseUV"); - lUVDiffuseLayer->SetMappingMode(FbxLayerElement::eByPolygonVertex); - lUVDiffuseLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetUVs(lUVDiffuseLayer, FbxLayerElement::eTextureDiffuse); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseLayer->GetDirectArray().Add(lVectors0); - lUVDiffuseLayer->GetDirectArray().Add(lVectors1); - lUVDiffuseLayer->GetDirectArray().Add(lVectors2); - lUVDiffuseLayer->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseLayer->GetIndexArray().SetCount(24); - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(j = 0; j < 4; j++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i*4 + j]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseLayer->GetIndexArray().SetAt(i*4+j, j); - } - - lMesh->EndPolygon (); - } - - // Set material indices - FbxLayerElementMaterial* lMaterialLayer = FbxLayerElementMaterial::Create(lMesh, "MaterialIndices"); - lMaterialLayer->SetMappingMode(FbxLayerElement::eByPolygon); - lMaterialLayer->SetReferenceMode(FbxLayerElement::eIndexToDirect); - lLayer->SetMaterials(lMaterialLayer); - - for (i = 0; i < 6; i++) - { - // the i-th material on FbxNode is applied to the i-th polygon - lMaterialLayer->GetIndexArray().Add(i); - } - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a cube instance with the given mesh as node attribute, and add it to the scene. -FbxNode* CreateCubeInstance(FbxScene* pScene, const char* pName, FbxMesh* pFirstCube) -{ - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(pFirstCube); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // apply materials to the polygons of this node - if (pFirstCube->GetNodeCount() % 2 == 0) - { - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatWhite); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - lNode->AddMaterial(gMatGray); - } - else - { - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - lNode->AddMaterial(gMatRed); - lNode->AddMaterial(gMatGreen); - lNode->AddMaterial(gMatBlue); - } - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // Add node to the scene - pScene->GetRootNode()->AddChild(lNode); - - // return the FbxNode - return lNode; -} - -// Create a material that will be applied to a polygon -FbxSurfacePhong* CreateMaterial(FbxScene* pScene, FbxDouble3 pColor) -{ - // Create material - FbxSurfacePhong* lMaterial = FbxSurfacePhong::Create(pScene, "Polygon Material"); - - // Set its diffuse color - lMaterial->Diffuse.Set(pColor); - - return lMaterial; -} - -// Create a single animation curve that will be used by all cubes. -FbxAnimCurve* CreateAnimCurve(FbxScene* pScene) -{ - FbxTime lTime; - int lKeyIndex = 0; - - // Create curve - FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); - - // Add keys to the curve - lAnimCurve->KeyModifyBegin(); - - // First key: time 0, value 0 - lTime.SetSecondDouble(0.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - // Second key: time 20s, value -3600 - // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. - lTime.SetSecondDouble(20.0); - lKeyIndex = lAnimCurve->KeyAdd(lTime); - lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); - - // Done adding keys. - lAnimCurve->KeyModifyEnd(); - - return lAnimCurve; -} - diff --git a/sdk/Windows/2019.2/samples/Layers/1.jpg b/sdk/Windows/2019.2/samples/Layers/1.jpg deleted file mode 100755 index 7ae1969..0000000 --- a/sdk/Windows/2019.2/samples/Layers/1.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a273bfe3c0664b39bfeeebb94a923c766217dad1badb33f664dac365de288558 -size 8071 diff --git a/sdk/Windows/2019.2/samples/Layers/CMakeLists.txt b/sdk/Windows/2019.2/samples/Layers/CMakeLists.txt deleted file mode 100755 index b42c48c..0000000 --- a/sdk/Windows/2019.2/samples/Layers/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Layers .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/Layers/main.cxx b/sdk/Windows/2019.2/samples/Layers/main.cxx deleted file mode 100755 index de50ccd..0000000 --- a/sdk/Windows/2019.2/samples/Layers/main.cxx +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a cube with Layered textures and -// with materials mapped on it's faces. -// -// This sample illustrates how to use the following Elements: -// - Normal -// - Material -// - UVs -// - Vertex Color -// - Polygon Group -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Layers.fbx" -#define BACKGROUND_IMAGE_NAME "Spotty" -#define BACKGROUND_IMAGE "spotty.jpg" -#define GEO1_IMAGE_NAME "One" -#define GEO1_IMAGE "1.jpg" -#define GEO2_IMAGE_NAME "Waffle" -#define GEO2_IMAGE "waffle.jpg" - -typedef double Vector4[4]; -typedef double Vector2[2]; - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // 2 uvs - static Vector2 lUVs0[14] = { - { 0.0, 0.0}, - { 1.0, 0.0}, - { 0.0, 1.0}, - { 1.0, 1.0}, - { 0.0, 2.0}, - { 1.0, 2.0}, - { 0.0, 3.0}, - { 1.0, 3.0}, - { 0.0, 4.0}, - { 1.0, 4.0}, - { 2.0, 0.0}, - { 2.0, 1.0}, - {-1.0, 0.0}, - {-1.0, 1.0} - }; - - static Vector2 lUVs1[14] = { - { 0.0, 1.0}, - { 1.0, 0.0}, - { 0.0, 0.0}, - { 1.0, 1.0} - }; - - // indices of the uvs per each polygon - static int uvsId[24] = { - 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 - }; - - // colors - static Vector4 lColors[8] = { - // colors used for the materials - {1.0, 1.0, 1.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}, - {1.0, 0.0, 1.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 0.0, 1.0}, - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the materials. - /* Each polygon face will be assigned a unique material. - */ - FbxGeometryElementMaterial* lMaterialElement = lMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - // Create polygons later after FbxGeometryElementMaterial is created. Assign material indices. - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(f);//Material index. - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - FbxGeometryElementNormal* lNormalElement = lMesh->CreateElementNormal(); - lNormalElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormalElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormalElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // create color vertices - /* We choose to define one color per control point. The other choice would - have been to use the eByPolygonVertex mapping mode. In this second case, - the reference mode should become eIndexToDirect. - */ - FbxGeometryElementVertexColor* lVertexColorElement = lMesh->CreateElementVertexColor(); - lVertexColorElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lVertexColorElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int c=0; c<8; c++) - lVertexColorElement->GetDirectArray().Add(FbxColor(lColors[c][0]*.8, lColors[c][1]*0.8, lColors[c][2]*.8, lColors[c][3]*.8)); - - - - // create polygroups. - /* We are going to make a first group with the 4 sides. - And a second group with the top and bottom sides. - - NOTE that the only reference mode allowed is eIndex - */ - FbxGeometryElementPolygonGroup* lPolygonGroupElement = lMesh->CreateElementPolygonGroup(); - lPolygonGroupElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lPolygonGroupElement->SetReferenceMode(FbxGeometryElement::eIndex); - lPolygonGroupElement->GetIndexArray().Add(0); // front face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // right side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // back face assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(0); // left side assigned to group 0 - lPolygonGroupElement->GetIndexArray().Add(1); // bottom face assigned to group 1 - lPolygonGroupElement->GetIndexArray().Add(1); // top face assigned to group 1 - - - // create the UV textures mapping. - FbxTexture* lTexture[3]; - FbxLayeredTexture::EBlendMode lBlendMode[3]; - - // On layer 0 all the faces have the same texture - FbxGeometryElementUV* lUVElement0 = lMesh->CreateElementUV( BACKGROUND_IMAGE_NAME); - FBX_ASSERT( lUVElement0 != NULL); - lUVElement0->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement0->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - int i; - for (i = 0; i<14; i++) - lUVElement0->GetDirectArray().Add(FbxVector2(lUVs0[i][0], lUVs0[i][1])); - - for (i = 0; i<24; i++) - lUVElement0->GetIndexArray().Add(uvsId[i]); - - // Create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - lNode->SetShadingMode(FbxNode::eTextureShading); - - - // Put a different material on each polygon - FbxSurfacePhong* lMaterial[6]; - for (i = 0; i < 6; i++ ) - { - FbxString lMaterialName = "material"; - lMaterialName += i; - - lMaterial[i] = FbxSurfacePhong::Create(pScene,lMaterialName.Buffer()); - - // Generate primary and secondary colors. - lMaterial[i]->Emissive.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->Ambient.Set(FbxDouble3(lColors[i][0], lColors[i][1], lColors[i][2])); - lMaterial[i]->Diffuse.Set(FbxDouble3(1.0, 1.0, 1.0)); - lMaterial[i]->Specular.Set(FbxDouble3(0.0, 0.0, 0.0)); - lMaterial[i]->TransparencyFactor.Set(0.0); - lMaterial[i]->Shininess.Set(0.5); - lMaterial[i]->ShadingModel.Set(FbxString("phong")); - - // add materials to the node - lNode->AddMaterial(lMaterial[i]); - } - - // Create textures and texture mappings. - lTexture[0] = CreateTexture(pScene, BACKGROUND_IMAGE_NAME, BACKGROUND_IMAGE); - - lBlendMode[0] = FbxLayeredTexture::eTranslucent; - - // create second UVset - FbxGeometryElementUV* lUVElement1 = lMesh->CreateElementUV( GEO1_IMAGE_NAME); - FBX_ASSERT( lUVElement1 != NULL); - lUVElement1->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVElement1->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - for (i = 0; i <4; i++) - lUVElement1->GetDirectArray().Add(FbxVector2(lUVs1[i][0], lUVs1[i][1])); - - for (i = 0; i<24; i++) - lUVElement1->GetIndexArray().Add(uvsId[i%4]); - - lTexture[1] = CreateTexture(pScene, GEO1_IMAGE_NAME, GEO1_IMAGE); - lBlendMode[1] = FbxLayeredTexture::eModulate; - - - - FbxGeometryElementUV* lUVElement2 = lMesh->CreateElementUV( GEO2_IMAGE_NAME); - FBX_ASSERT( lUVElement2 != NULL); - // we re-use the UV mapping. - *lUVElement2 = *lUVElement0; - - lTexture[2] = CreateTexture(pScene, GEO2_IMAGE_NAME, GEO2_IMAGE); - - lBlendMode[2] = FbxLayeredTexture::eModulate; - - // Because we can only connect one texture to the material propery, we need - // to use a layered texture object to connect the multiple textures created above - // we know that 5 faces of the cube will use 2 textures (lTexture[0] and lTexture[1]) - // and only one face uses the three textures. Therefore we need two layered textures. - - FbxLayeredTexture* lLayeredTexture[2]; - - // the lLayeredTexure[1] is used for the 5 faces with two textures and lLayeredTexture[0] for - // the only face that uses the three textures - lLayeredTexture[0] = FbxLayeredTexture::Create(pScene, "layeredTexture0"); - lLayeredTexture[1] = FbxLayeredTexture::Create(pScene, "layeredTexture1"); - - // the first connected texture is the bottom one! - for (i = 0; i < 3; i++) - { - lLayeredTexture[0]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[0]->SetTextureBlendMode(i, lBlendMode[i]); - if (i < 2) - { - lLayeredTexture[1]->ConnectSrcObject(lTexture[i]); - lLayeredTexture[1]->SetTextureBlendMode(i, lBlendMode[i]); - } - } - - // connect the layered textures to the 6 materials allocated before (material[0] is the - // material connected to the face 0 of the cube so it is the one that will have lLayeredTexture[0]. - lMaterial[0]->Diffuse.ConnectSrcObject(lLayeredTexture[0]); - for (i = 1; i < 6; i++) - lMaterial[i]->Diffuse.ConnectSrcObject(lLayeredTexture[1]); - - return lNode; -} - - -FbxTexture* CreateTexture(FbxScene* pScene, const char* name, const char* filename) -{ - FbxFileTexture* lTexture = FbxFileTexture::Create(pScene,name); - lTexture->SetFileName(filename); // Resource file is in current directory. - lTexture->SetTextureUse(FbxTexture::eStandard); - lTexture->SetMappingType(FbxTexture::eUV); - lTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - lTexture->SetSwapUV(false); - lTexture->SetTranslation(0.0, 0.0); - lTexture->SetScale(1.0, 1.0); - lTexture->SetRotation(0.0, 0.0); - return lTexture; -} diff --git a/sdk/Windows/2019.2/samples/Layers/spotty.jpg b/sdk/Windows/2019.2/samples/Layers/spotty.jpg deleted file mode 100755 index dd038e3..0000000 --- a/sdk/Windows/2019.2/samples/Layers/spotty.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa64e1e43f8b0eefff24ecf1bcae0a8a3f1c458c49ce186d6fe727b619a77ed -size 16025 diff --git a/sdk/Windows/2019.2/samples/Layers/waffle.jpg b/sdk/Windows/2019.2/samples/Layers/waffle.jpg deleted file mode 100755 index d49e33b..0000000 --- a/sdk/Windows/2019.2/samples/Layers/waffle.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f7ecae4205d129fbdb98c9c82cb6f8480753bbfc9a951ad1c38dd13653bad95 -size 23416 diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx deleted file mode 100755 index de11d42..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.cxx +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnReader.h" - -MyOwnReader::MyOwnReader(FbxManager &pManager, int pID): -FbxReader(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ -} - -MyOwnReader::~MyOwnReader() -{ - FileClose(); -} - -void MyOwnReader::GetVersion(int& pMajor, int& pMinor, int& pRevision) - -{ - pMajor = 1; - pMinor = 0; - pRevision=0; -} - -bool MyOwnReader::FileOpen(char* pFileName) -{ - if(mFilePointer != NULL) - FileClose(); - FBXSDK_fopen(mFilePointer, pFileName, "r"); - if(mFilePointer == NULL) - return false; - return true; -} -bool MyOwnReader::FileClose() -{ - if(mFilePointer!=NULL) - fclose(mFilePointer); - return true; - -} -bool MyOwnReader::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -bool MyOwnReader::GetReadOptions(bool /*pParseFileAsNeeded*/) -{ - return true; -} - -//Read the custom file and reconstruct node hierarchy. -bool MyOwnReader::Read(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - FbxNode* lRootNode = lScene->GetRootNode(); - FbxNodeAttribute * lRootNodeAttribute = FbxNull::Create(lScene,""); - lRootNode->SetNodeAttribute(lRootNodeAttribute); - - int lSize; - char* lBuffer = NULL; - if(mFilePointer != NULL) - { - //To obtain file size - fseek (mFilePointer , 0 , SEEK_END); - lSize = ftell (mFilePointer); - rewind (mFilePointer); - - //Read file content to a string. - lBuffer = (char*) malloc (sizeof(char)*lSize + 1); - size_t lRead = fread(lBuffer, 1, lSize, mFilePointer); - lBuffer[lRead]='\0'; - FbxString lString(lBuffer); - - //Parse the string to get name and relation of Nodes. - FbxString lSubString, lChildName, lParentName; - FbxNode* lChildNode; - FbxNode* lParentNode; - FbxNodeAttribute* lChildAttribute; - int lEndTokenCount = lString.GetTokenCount("\n"); - - for (int i = 0; i < lEndTokenCount; i++) - { - lSubString = lString.GetToken(i, "\n"); - FbxString lNodeString; - lChildName = lSubString.GetToken(0, "\""); - lParentName = lSubString.GetToken(2, "\""); - - //Build node hierarchy. - if(lParentName == "RootNode") - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(mManager,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lRootNode->AddChild(lChildNode); - } - else - { - lChildNode = FbxNode::Create(lScene,lChildName.Buffer()); - lChildAttribute = FbxNull::Create(lScene,""); - lChildNode->SetNodeAttribute(lChildAttribute); - - lParentNode = lRootNode->FindChild(lParentName.Buffer()); - lParentNode->AddChild(lChildNode); - } - } - free(lBuffer); - } - lResult = true; - } - return lResult; -} diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.h b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.h deleted file mode 100755 index 2542555..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnReader.h +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_READER_H -#define MY_OWN_READER_H - -#include - -// This class is a custom reader. -// The reader provide you the ability to get file version, read options and read hierarchy from file. -class MyOwnReader : public FbxReader -{ -public: - MyOwnReader(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnReader(); - - virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); - virtual bool FileOpen(char* pFileName); - virtual bool FileClose(); - virtual bool IsFileOpen(); - - virtual bool GetReadOptions(bool pParseFileAsNeeded = true); - virtual bool Read(FbxDocument* pDocument); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif /* MY_OWN_READER_H */ diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx deleted file mode 100755 index 5e67e43..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.cxx +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriter.h" - -MyOwnWriter::MyOwnWriter(FbxManager &pManager, int pID): -FbxWriter(pManager, pID, FbxStatusGlobal::GetRef()), -mFilePointer(NULL), -mManager(&pManager) -{ - -} - -MyOwnWriter::~MyOwnWriter() -{ - FileClose(); -} - -// Create a file stream with pFileName -bool MyOwnWriter::FileCreate(char* pFileName) -{ - if(mFilePointer != NULL) - { - FileClose(); - } - FBXSDK_fopen(mFilePointer,pFileName,"w"); - if(mFilePointer == NULL) - { - return false; - } - return true; -} - -// Close the file stream -bool MyOwnWriter::FileClose() -{ - if(mFilePointer != NULL) - { - fclose(mFilePointer); - return true; - } - return false; -} - -// Check whether the file stream is open. -bool MyOwnWriter::IsFileOpen() -{ - if(mFilePointer != NULL) - return true; - return false; -} - -// Get the file stream options -void MyOwnWriter::GetWriteOptions() -{ -} - -// Write file with stream options -bool MyOwnWriter::Write(FbxDocument* pDocument) -{ - if (!pDocument) - { - GetStatus().SetCode(FbxStatus::eFailure, "Invalid document handle"); - return false; - } - - FbxScene* lScene = FbxCast(pDocument); - bool lIsAScene = (lScene != NULL); - bool lResult = false; - - if(lIsAScene) - { - PreprocessScene(*lScene); - FBXSDK_printf("I'm in my own writer\n"); - - FbxNode* lRootNode = lScene->GetRootNode(); - PrintHierarchy(lRootNode); - - PostprocessScene(*lScene); - lResult = true; - } - return lResult; -} - -// Write out Node Hierarchy recursively -void MyOwnWriter::PrintHierarchy(FbxNode* pStartNode) -{ - FbxNode* lChildNode; - const char* lParentName = pStartNode->GetName(); - for(int i = 0; iGetChildCount(); i++) - { - lChildNode = pStartNode->GetChild(i); - const char* lChildName = lChildNode->GetName(); - FBXSDK_fprintf(mFilePointer,"%s%s%s%s%s%s%s","\"",lChildName,"\"",", parent is ","\"",lParentName,"\"\n"); - } - - int lNodeChildCount = pStartNode->GetChildCount (); - while (lNodeChildCount > 0) - { - lNodeChildCount--; - lChildNode = pStartNode->GetChild (lNodeChildCount); - PrintHierarchy(lChildNode); - } -} - -// Pre-process the scene before write it out -bool MyOwnWriter::PreprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in pre-process\n"); - return true; -} - -// Post-process the scene after write it out -bool MyOwnWriter::PostprocessScene(FbxScene& /*pScene*/) -{ - FBXSDK_printf("I'm in post process\n"); - return true; -} diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h deleted file mode 100755 index 2fa4d8e..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriter.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef MY_OWN_WRITER_H -#define MY_OWN_WRITER_H - -#include - -//This class is a custom writer. -//The writer provide you the ability to write out node hierarchy to a custom file format. -class MyOwnWriter : public FbxWriter -{ -public: - MyOwnWriter(FbxManager &pManager, int pID); - - //VERY important to put the file close in the destructor - virtual ~MyOwnWriter(); - - virtual bool FileCreate(char* pFileName) ; - virtual bool FileClose() ; - virtual bool IsFileOpen(); - virtual void GetWriteOptions() ; - virtual void PrintHierarchy(FbxNode* pStartNode); - virtual bool Write(FbxDocument* pDocument); - - virtual bool PreprocessScene(FbxScene &pScene); - virtual bool PostprocessScene(FbxScene &pScene); - -private: - FILE* mFilePointer; - FbxManager* mManager; -}; - -#endif diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx deleted file mode 100755 index 4822ff8..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "MyOwnWriterReader.h" - -// Create your own writer. -// And your writer will get a pPluginID and pSubID. -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& /*pExporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnWriter >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnWriter -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int /*pId*/) -{ - static const char* sExt[] = - { - "CFF", - 0 - }; - - static const char* sDesc[] = - { - "Example Custom FileFormat (*.CFF)", - 0 - }; - - switch (pRequest) - { - case FbxWriter::eInfoExtension: - return sExt; - case FbxWriter::eInfoDescriptions: - return sDesc; - case FbxWriter::eInfoVersions: - return 0; - default: - return 0; - } -} - -void FillOwnWriterIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} - - -// Creates a MyOwnReader in the Sdk Manager -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& /*pImporter*/, int /*pSubID*/, int pPluginID) -{ - // use FbxNew instead of new, since FBX will take charge its deletion - return FbxNew< MyOwnReader >(pManager, pPluginID); -} - -// Get extension, description or version info about MyOwnReader -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId) -{ - switch (pRequest) - { - case FbxReader::eInfoExtension: - return GetMyOwnWriterInfo(FbxWriter::eInfoExtension, pId); - case FbxReader::eInfoDescriptions: - return GetMyOwnWriterInfo(FbxWriter::eInfoDescriptions, pId); - default: - return 0; - } -} - -void FillOwnReaderIOSettings(FbxIOSettings& /*pIOS*/) -{ - // Here you can write your own FbxIOSettings and parse them. -} diff --git a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h b/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h deleted file mode 100755 index e5ff96d..0000000 --- a/sdk/Windows/2019.2/samples/MyOwnWriterReader/MyOwnWriterReader.h +++ /dev/null @@ -1,33 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -//////////////////////////////////////////////////////////////////////////// -// This example illustrates how to create your own writer/reader, -// and this will be used in IOPluginRegistry to RegisterWriter/Reader. -//////////////////////////////////////////////////////////////////////////// - - -#ifndef MY_OWN_WRITER_PLUGIN_H -#define MY_OWN_WRITER_PLUGIN_H - -#include -#include "MyOwnWriter.h" -#include "MyOwnReader.h" - -FbxWriter* CreateMyOwnWriter(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); -void* GetMyOwnWriterInfo(FbxWriter::EInfoRequest pRequest, int pId); -void FillOwnWriterIOSettings(FbxIOSettings& pIOS); - -FbxReader* CreateMyOwnReader(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); -void *GetMyOwnReaderInfo(FbxReader::EInfoRequest pRequest, int pId); -void FillOwnReaderIOSettings(FbxIOSettings& pIOS); - -#endif diff --git a/sdk/Windows/2019.2/samples/Normals/CMakeLists.txt b/sdk/Windows/2019.2/samples/Normals/CMakeLists.txt deleted file mode 100755 index c8b92bc..0000000 --- a/sdk/Windows/2019.2/samples/Normals/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Normals .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Normals/Normals.fbx" "${FBX_BUILD_ROOT}/Normals.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/Normals/Normals.fbx b/sdk/Windows/2019.2/samples/Normals/Normals.fbx deleted file mode 100755 index 801a458..0000000 --- a/sdk/Windows/2019.2/samples/Normals/Normals.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a783718dd72e3d1acd76b6e41c950ca1f9f04743a4c7f3dd4e571169ff464d4 -size 704532 diff --git a/sdk/Windows/2019.2/samples/Normals/main.cxx b/sdk/Windows/2019.2/samples/Normals/main.cxx deleted file mode 100755 index f08b722..0000000 --- a/sdk/Windows/2019.2/samples/Normals/main.cxx +++ /dev/null @@ -1,296 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get normals of mesh. -// 2) get smoothing info of mesh. -// 3) compute smoothing info from normals. -// 4) convert hard/soft edges info to smoothing group info. -// -//Background knowledge: -//There are two kinds of smoothing info: -//1. Smoothing groups info which is saved by polygon. It usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. -//2. Hard/soft edges info which is saved by edge. It usually come from Maya, because Maya can set hard/soft edges. -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Get normals of mesh, according to different mapping mode and reference mode. -// 6. Recursively traverse each node in the scene. -// 7. Computing smoothing info from normals or convert smoothing info -// 8. Get smoothing info of mesh, according to different mapping mode and reference mode. -// 9. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "Normals.fbx" - -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute = false, bool pConvertToSmoothingGroup = false); - -//get mesh normals info -void GetNormals(FbxNode* pNode); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //get normals info, if there're mesh in the scene - GetNormals(lRootNode); - - //set me true to compute smoothing info from normals - bool lComputeFromNormals = false; - //set me true to convert hard/soft edges info to smoothing groups info - bool lConvertToSmoothingGroup = false; - //get smoothing info, if there're mesh in the scene - GetSmoothing(lSdkManager, lRootNode, lComputeFromNormals, lConvertToSmoothingGroup); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//get mesh smoothing info -//set pCompute true to compute smoothing from normals by default -//set pConvertToSmoothingGroup true to convert hard/soft edge info to smoothing group info by default -void GetSmoothing(FbxManager* pSdkManager, FbxNode* pNode, bool pCompute, bool pConvertToSmoothingGroup) -{ - if(!pNode || !pSdkManager) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //if there's no smoothing info in fbx file, but you still want to get smoothing info. - //please compute smoothing info from normals. - //Another case to recompute smoothing info from normals is: - //If users edit normals manually in 3ds Max or Maya and export the scene to FBX with smoothing info, - //The smoothing info may NOT match with normals. - //the mesh called "fbx_customNormals" in Normals.fbx is the case. All edges are hard, but normals actually represent the "soft" looking. - //Generally, the normals in fbx file holds the smoothing result you'd like to get. - //If you want to get correct smoothing info(smoothing group or hard/soft edges) which match with normals, - //please drop the original smoothing info of fbx file, and recompute smoothing info from normals. - //if you want to get soft/hard edge info, please call FbxGeometryConverter::ComputeEdgeSmoothingFromNormals(). - //if you want to get smoothing group info, please get soft/hard edge info first by ComputeEdgeSmoothingFromNormals() - //And then call FbxGeometryConverter::ComputePolygonSmoothingFromEdgeSmoothing(). - if(pCompute) - { - FbxGeometryConverter lGeometryConverter(pSdkManager); - lGeometryConverter.ComputeEdgeSmoothingFromNormals(lMesh); - //convert soft/hard edge info to smoothing group info - if(pConvertToSmoothingGroup) - lGeometryConverter.ComputePolygonSmoothingFromEdgeSmoothing(lMesh); - } - - //if there is smoothing groups info in your fbx file, but you want to get hard/soft edges info - //please use following code: - //FbxGeometryConverter lGeometryConverter(lSdkManager); - //lGeometryConverter.ComputeEdgeSmoothingFromPolygonSmoothing(lMesh); - - //get smoothing info - FbxGeometryElementSmoothing* lSmoothingElement = lMesh->GetElementSmoothing(); - if(lSmoothingElement) - { - //mapping mode is by edge. The mesh usually come from Maya, because Maya can set hard/soft edges. - //we can get smoothing info(which edges are soft, which edges are hard) by retrieving each edge. - if( lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByEdge ) - { - //Let's get smoothing of each edge, since the mapping mode of smoothing element is by edge - for(int lEdgeIndex = 0; lEdgeIndex < lMesh->GetMeshEdgeCount(); lEdgeIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as edge index. - //get smoothing by the index of edge - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lEdgeIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lEdgeIndex); - - //Got smoothing of each vertex. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("hard/soft value for edge[%d]: %d \n", lEdgeIndex, lSmoothingFlag); - //add your custom code here, to output smoothing or get them into a list, such as KArrayTemplate - //. . . - }//end for lEdgeIndex - }//end eByEdge - //mapping mode is by polygon. The mesh usually come from 3ds Max, because 3ds Max can set smoothing groups for polygon. - //we can get smoothing info(smoothing group ID for each polygon) by retrieving each polygon. - else if(lSmoothingElement->GetMappingMode() == FbxGeometryElement::eByPolygon) - { - //Let's get smoothing of each polygon, since the mapping mode of smoothing element is by polygon. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - int lSmoothingIndex = 0; - //reference mode is direct, the smoothing index is same as polygon index. - if( lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lSmoothingIndex = lPolygonIndex; - - //reference mode is index-to-direct, get smoothing by the index-to-direct - if(lSmoothingElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lSmoothingIndex = lSmoothingElement->GetIndexArray().GetAt(lPolygonIndex); - - //Got smoothing of each polygon. - int lSmoothingFlag = lSmoothingElement->GetDirectArray().GetAt(lSmoothingIndex); - if( gVerbose ) FBXSDK_printf("smoothing group ID for polygon[%d]: %d \n", lPolygonIndex, lSmoothingFlag); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lSmoothingElement - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetSmoothing(pSdkManager, pNode->GetChild(i), pCompute, pConvertToSmoothingGroup); - } -} - -//get mesh normals info -void GetNormals(FbxNode* pNode) -{ - if(!pNode) - return; - - //get mesh - FbxMesh* lMesh = pNode->GetMesh(); - if(lMesh) - { - //print mesh node name - FBXSDK_printf("current mesh node: %s\n", pNode->GetName()); - - //get the normal element - FbxGeometryElementNormal* lNormalElement = lMesh->GetElementNormal(); - if(lNormalElement) - { - //mapping mode is by control points. The mesh should be smooth and soft. - //we can get normals by retrieving each control point - if( lNormalElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - //Let's get normals of each vertex, since the mapping mode of normal element is by control point - for(int lVertexIndex = 0; lVertexIndex < lMesh->GetControlPointsCount(); lVertexIndex++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as vertex index. - //get normals by the index of control vertex - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lVertexIndex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lVertexIndex); - - //Got normals of each vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for vertex[%d]: %f %f %f %f \n", lVertexIndex, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - }//end for lVertexIndex - }//end eByControlPoint - //mapping mode is by polygon-vertex. - //we can get normals by retrieving polygon-vertex. - else if(lNormalElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lIndexByPolygonVertex = 0; - //Let's get normals of each polygon, since the mapping mode of normal element is by polygon-vertex. - for(int lPolygonIndex = 0; lPolygonIndex < lMesh->GetPolygonCount(); lPolygonIndex++) - { - //get polygon size, you know how many vertices in current polygon. - int lPolygonSize = lMesh->GetPolygonSize(lPolygonIndex); - //retrieve each vertex of current polygon. - for(int i = 0; i < lPolygonSize; i++) - { - int lNormalIndex = 0; - //reference mode is direct, the normal index is same as lIndexByPolygonVertex. - if( lNormalElement->GetReferenceMode() == FbxGeometryElement::eDirect ) - lNormalIndex = lIndexByPolygonVertex; - - //reference mode is index-to-direct, get normals by the index-to-direct - if(lNormalElement->GetReferenceMode() == FbxGeometryElement::eIndexToDirect) - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndexByPolygonVertex); - - //Got normals of each polygon-vertex. - FbxVector4 lNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - if( gVerbose ) FBXSDK_printf("normals for polygon[%d]vertex[%d]: %f %f %f %f \n", - lPolygonIndex, i, lNormal[0], lNormal[1], lNormal[2], lNormal[3]); - //add your custom code here, to output normals or get them into a list, such as KArrayTemplate - //. . . - - lIndexByPolygonVertex++; - }//end for i //lPolygonSize - }//end for lPolygonIndex //PolygonCount - - }//end eByPolygonVertex - }//end if lNormalElement - - }//end if lMesh - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetNormals(pNode->GetChild(i)); - } -} - diff --git a/sdk/Windows/2019.2/samples/Pivot/CMakeLists.txt b/sdk/Windows/2019.2/samples/Pivot/CMakeLists.txt deleted file mode 100755 index f641891..0000000 --- a/sdk/Windows/2019.2/samples/Pivot/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Pivot .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx - ../Common/GeometryUtility.h - ../Common/GeometryUtility.cxx - ../Common/AnimationUtility.h - ../Common/AnimationUtility.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/Pivot/main.cxx b/sdk/Windows/2019.2/samples/Pivot/main.cxx deleted file mode 100755 index 3c3af16..0000000 --- a/sdk/Windows/2019.2/samples/Pivot/main.cxx +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// Illustrates how to get/set pivots, how to convert pivots -// and how to query local and global transform. -// -//Steps: -// 1. Initialize FBX SDK object. -// 2. Create default animation stack and animation layer. -// 3. Create a pyramid mesh and attach it to a node. -// 4. Set pivots. -// 5. Add animation to the pyramid node. -// 6. Evaluate the local and global transform. -// 7. Save the scene before pivot converting. -// 8. Convert the animation to reset pivots. -// 9. Save the scene after pivot converting. -// -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "../Common/AnimationUtility.h" -#include "../Common/GeometryUtility.h" - -const char * SAMPLE_FILENAME_BEFORE_CONVECTION = "pivot_before_convection.fbx"; -const char * SAMPLE_FILENAME_AFTER_CONVECTION = "pivot_after_convection.fbx"; - -const char * PYRAMID_NAME = "Pyramid"; - -const double KEY_TIME[] = {0.0, 0.5, 1.0}; -const float KEY_VALUE[] = {0.0, 90.0, 180.0}; - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create a animation stack and layer for the scene - FbxAnimStack * lAnimStack; - FbxAnimLayer * lAnimLayer = CreateDefaultAnimStackAndLayer(lScene, lAnimStack); - - // Create a pyramid mesh whose bottom width is 4 and height is 4. - // Attach this pyramid to a node and as a child of the root node of the scene - FbxNode * lPyramidNode = CreatePyramid(lScene, PYRAMID_NAME, 4, 4); - - // Enable pivot - lPyramidNode->SetRotationActive(true); - // Set the rotation pivot at the center of the pyramid - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 2, 0)); - // Add a post rotation for the pyramid - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, -90)); - - // Animate the Y channel of the local rotation - FbxAnimCurve * lAnimCurve = lPyramidNode->LclRotation.GetCurve(lAnimLayer, "Y", true); - if (lAnimCurve) - { - const int lKeyCount = sizeof(KEY_TIME)/sizeof(double); - for (int lKeyIndex = 0; lKeyIndex < lKeyCount; ++lKeyIndex) - { - FbxTime lTime; - FbxAnimCurveKey lKey; - lTime.SetSecondDouble(KEY_TIME[lKeyIndex]); - lKey.Set(lTime, KEY_VALUE[lKeyIndex]); - lAnimCurve->KeyAdd(lTime, lKey); - } - } - - // Query the local transform and global transform of the pyramid node at 0.5 second - FbxTime lTime; - lTime.SetSecondDouble(0.5); - FbxAMatrix lLocalTransform = lPyramidNode->EvaluateLocalTransform(lTime); - FbxAMatrix lGlobalTransform = lPyramidNode->EvaluateGlobalTransform(lTime); - - // Save the scene before pivot converting - bool lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_CONVECTION); - - // Set the target of pivot converting - // Reset the rotation pivot and post rotation, and maintain the animation - lPyramidNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); - lPyramidNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); - lPyramidNode->SetPostRotation(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetRotationPivot(FbxNode::eDestinationPivot, FbxVector4(0, 0, 0)); - - // Convert the animation between source pivot set and destination pivot set with a frame rate of 30 per second - lScene->GetRootNode()->ConvertPivotAnimationRecursive(lAnimStack, FbxNode::eDestinationPivot, 30.0); - - // Copy the rotation pivot and post rotation from destination set to source set in order to save them in file - lPyramidNode->SetRotationPivot(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - lPyramidNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0, 0, 0)); - - // Save the scene after pivot converting - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_CONVECTION); - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} diff --git a/sdk/Windows/2019.2/samples/ProceduralTexture/CMakeLists.txt b/sdk/Windows/2019.2/samples/ProceduralTexture/CMakeLists.txt deleted file mode 100755 index 18e44ec..0000000 --- a/sdk/Windows/2019.2/samples/ProceduralTexture/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ProceduralTexture .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ProceduralTexture/a_texture.jpg" "${FBX_BUILD_ROOT}/${CMAKE_CFG_INTDIR}/a_texture.jpg" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/ProceduralTexture/a_texture.jpg b/sdk/Windows/2019.2/samples/ProceduralTexture/a_texture.jpg deleted file mode 100755 index f162280..0000000 --- a/sdk/Windows/2019.2/samples/ProceduralTexture/a_texture.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5215c1f509cf1a49a75eee9273b4beb9a4fc38268a7a1a4281f7c465c84721a5 -size 5454 diff --git a/sdk/Windows/2019.2/samples/ProceduralTexture/main.cxx b/sdk/Windows/2019.2/samples/ProceduralTexture/main.cxx deleted file mode 100755 index 72f0c54..0000000 --- a/sdk/Windows/2019.2/samples/ProceduralTexture/main.cxx +++ /dev/null @@ -1,385 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The scene created in this example is a plane with a procedural texture applied. -// -// The example illustrates how to: -// 1) Create a procedural texture -// 2) Set the blob property of a procedural texture -// 3) Get the blob property of a procedural texture and dump it on disk -// -///////////////////////////////////////////////////////////////////////// - -#include -#include -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "ProceduralTexture.fbx" -#define TEXTURE_FILENAME "a_texture.jpg" -#define FILENAME_PROP "Filename" - -// Function prototypes. -bool CreateSceneAndSaveFile(int argc, char** argv); -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv); -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene); -bool CreateScene(FbxScene* pScene); -FbxNode* CreatePlane(FbxScene* pScene, const char* pName); -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName); -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName); -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode); -void MapProceduralTexure(FbxProceduralTexture* pProcTex, FbxNode* pNode); - -int main(int argc, char** argv) -{ - bool lResult; - - lResult = CreateSceneAndSaveFile(argc, argv); - if(lResult == false) - { - return 1; - } - - lResult = ReadFileAndDumpProceduralTextureBlobOnDisk(argc, argv); - if(lResult == false) - { - return 1; - } - - return 0; -} - -bool CreateSceneAndSaveFile(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - - lResult = CreateScene(lScene); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while creating the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Save the scene. - // The example can take an output file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Saving the file...\n"); - lResult = SaveScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool ReadFileAndDumpProceduralTextureBlobOnDisk(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // The example can take an input file name as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("Reading the FBX file...\n"); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Create a new file for each procedural texture found in the file. - lResult = DumpProceduralTextureBlobOnDisk(lScene); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while dumping procedural texture blobs on disk...\n"); - DestroySdkObjects(lSdkManager, lResult); - return false; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return true; -} - -bool DumpProceduralTextureBlobOnDisk(FbxScene* pScene) -{ - FBXSDK_printf("Writing the blob on disk...\n"); - // Collect all the procedural textures proxy objects in scene - int lNbProcTex = pScene->GetSrcObjectCount(); - - if (!lNbProcTex) - { - return true; - } - - bool lWroteBlob = false; // Bool: Wrote at least one blob on disk - - // Directory for blob extraction - FbxString lDirPath = FbxGetCurrentWorkPath() + "/Blobs/"; - - for(int lIndex = 0; lIndex < lNbProcTex; lIndex++) - { - FbxProceduralTexture* lProcTex = pScene->GetSrcObject(lIndex); - if(!lProcTex) - { - continue; - } - - FbxProperty lFilenameProp = lProcTex->RootProperty.Find(FILENAME_PROP); - if (!lFilenameProp.IsValid()) - { - continue; - } - - // Read binary blob - void* lBlobBegin = NULL; - size_t lBlobSize = 0; - FbxBlob lBinaryBlob = lProcTex->GetBlob(); - lBlobSize = lBinaryBlob.Size(); - lBlobBegin = const_cast(lBinaryBlob.Access()); - - // Get file name to dump the blob to. - FbxString lFilename = lFilenameProp.Get(); - FbxString lFilePath = lDirPath + FbxPathUtils::GetFileName(lFilename, false) + lIndex + "." + FbxPathUtils::GetExtensionName(lFilename); - - bool lIsWritable = FbxPathUtils::Create(FbxPathUtils::GetFolderName(lFilePath)); - if (lIsWritable) - { - std::ofstream lDataStreamOut(lFilePath.Buffer(), std::ofstream::binary); - lDataStreamOut.write((const char *)lBlobBegin, lBlobSize); - lDataStreamOut.close(); - // So now we wrote the file! - lWroteBlob = true; - FBXSDK_printf("Blob is written on disk! File: %s\n", lFilePath.Buffer()); - } - } - - return lWroteBlob; -} - -bool CreateScene(FbxScene* pScene) -{ - FBXSDK_printf("Creating the scene...\n"); - FbxNode* lPlane = CreatePlane(pScene, "Plane"); - - FbxSurfacePhong* lPhong = CreatePhongMaterial(pScene, "Phong"); - MapPhong(lPhong, lPlane); - FbxProceduralTexture* lProcTex = CreateProceduralTexture(pScene, "ProcTex"); - MapProceduralTexure(lProcTex, lPlane); - - // Build the node tree. - FbxNode* lRootNode = pScene->GetRootNode(); - lRootNode->AddChild(lPlane); - - return true; -} - -// Create a plane. -FbxNode* CreatePlane(FbxScene* pScene, const char* pName) -{ - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lNormal(0, 0, 1); - - // Create control points. - lMesh->InitControlPoints(4); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - - // Set the normals. - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal = lMesh->CreateElementNormal();; - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the actual normal value for all 4 control points. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - lGeometryElementNormal->GetDirectArray().Add(lNormal); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3 }; - - // Create UV for Diffuse channel - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(4); - - // Create polygon - lMesh->BeginPolygon(-1, -1, false); - for (int j = 0; j < 4; j++) - { - //this function points - lMesh->AddPolygon(lPolygonVertices[j]); - //Now we have to update the index array of the UVs for diffuse - lUVDiffuseElement->GetIndexArray().SetAt(j, j); - } - lMesh->EndPolygon(); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - -// Create a procedural texture. -FbxProceduralTexture* CreateProceduralTexture(FbxScene* pScene, const char* pName) -{ - FbxProceduralTexture* lProceduralTexture = FbxProceduralTexture::Create(pScene, pName); - - // For this example we simply dump the binary content of a jpg to the - // procedural texture's blob property. - // In the general case, dump whatever information needed for the procedural - // texture to the blob property. - - FbxString lFilename = TEXTURE_FILENAME; - - //check whether the file is readable - bool lIsReadable = FbxFileUtils::Exist(lFilename); - - if (lIsReadable) - { - // create binary blob from the texture file - FbxBlob lBinaryBlob; - std::ifstream lDataStreamIn(lFilename, std::ifstream::binary); - char* lBlobBegin = (char*)malloc(4096); - char* lBlobEnd = lBlobBegin; - long long lBlobSize = 0; - long long lBlobPointerSize = 4096; - std::streamsize lNbRead = 0; - while(!lDataStreamIn.eof()) - { - lBlobEnd = lBlobBegin + lBlobSize; - lDataStreamIn.read(lBlobEnd, 4096); - lNbRead = lDataStreamIn.gcount(); - lBlobPointerSize += 4096; - lBlobBegin = (char *)realloc(lBlobBegin, size_t(lBlobPointerSize)); - lBlobSize += lNbRead; - } - lDataStreamIn.close(); - lBinaryBlob.Assign(lBlobBegin, (int)lBlobSize); - free(lBlobBegin); - - lProceduralTexture->SetBlob(lBinaryBlob); - } - - // Add a property to retain file name - FbxProperty lFilenameProp = FbxProperty::Create(lProceduralTexture, FbxStringDT, FILENAME_PROP); - if (lFilenameProp.IsValid()) - { - lFilenameProp.Set(lFilename); - } - - return lProceduralTexture; -} - - -FbxSurfacePhong* CreatePhongMaterial(FbxScene* pScene, const char* pName) -{ - FbxSurfacePhong* lPhong = FbxSurfacePhong::Create(pScene, pName); - - return lPhong; -} - -// Map procedural texture over plane. -void MapProceduralTexure(FbxProceduralTexture* pProceduralTexture, FbxNode* pNode) -{ - // The note shading mode has to be set to FbxNode::eTextureShading for the texture to be displayed. - pNode->SetShadingMode(FbxNode::eTextureShading); - - // we have to connect the texture to the material DiffuseColor property - FbxSurfacePhong* lMaterial = pNode->GetSrcObject(0); - if (lMaterial) - { - lMaterial->Diffuse.ConnectSrcObject(pProceduralTexture); - } - -} - -// Map material over mesh. -void MapPhong(FbxSurfacePhong* pPhong, FbxNode* pNode) -{ - // Create MaterialElement in the mesh - FbxMesh* lMesh = pNode->GetMesh(); - FbxGeometryElementMaterial* lGeometryElementMaterial = lMesh->CreateElementMaterial(); - - // The material is mapped to the whole mesh - lGeometryElementMaterial->SetMappingMode(FbxGeometryElement::eAllSame); - - // And the material is avalible in the Direct array - lGeometryElementMaterial->SetReferenceMode(FbxGeometryElement::eDirect); - pNode->AddMaterial(pPhong); -} - diff --git a/sdk/Windows/2019.2/samples/README.txt b/sdk/Windows/2019.2/samples/README.txt deleted file mode 100755 index 006a187..0000000 --- a/sdk/Windows/2019.2/samples/README.txt +++ /dev/null @@ -1,67 +0,0 @@ -================================================================================ - - FBX SDK SAMPLES README - -Welcome to the FBX SDK samples readme! This document explains how to call CMake -to generate the appropriate build files. - -Sincerely, -the Autodesk FBX team - -================================================================================ - -To generate the build files you need to call CMake with the desired generator -and the following options (omitting an option will set it to it's default -value as shown below between [] or explicitly said: - -FBX_SHARED : set at command line with -DFBX_SHARED=1 to enable the sample to - link with the FBX SDK dynamic library - -FBX_STATIC_RTL : set at command line with -DFBX_STATIC_RTL=1 to use the static - MSVCRT (/MT). By default will use the dynamic MSVCRT (/MD). - This option is only meaningful on the Windows platform. - -FBX_VARIANT : set at command line with -DFBX_VARIANT=[debug] or release. - This option is only meaningful on Unix/MacOS platforms. - On Windows, the generated solutions will contain the - Debug, Release and RelWithDebInfo targets. - -FBX_ARCH : set at command line with -DFBX_ARCH=[x64] or x86. - This option is only meaningful with the Make generator. - With the Visual Studio generators, this value is automatically - deduced based on the specified generator. - - -Although you can run cmake in the sample directory, to avoid mixing build files and source files -in the same folder, we strongly suggest you create a separate build folder and run cmake from there. - -Examples: -========== - -1) Building the ViewScene sample on Windows using Visual Studio 2015 (and the default settings): - - 1. cd samples\ViewScene - 2. mkdir build - 3. cd build - 4. cmake -G "Visual Studio 14 Win64" .. - - 5. Now that the ViewScene.sln and all the other related files have been generated in the samples\ViewScene\build, - load the solution in Visual Studio and build it. The build result will be written in the bin directory at the root - level of the FBX SDK installation. - -If you want to re-generate the solution with different settings, it is preferable that you first delete the content of -the build folder to avoid cmake cache incompatibilities. - -2) Building the ViewScene sample on Windows using Visual Studio 2015 32bits /MT - - cmake -G "Visual Studio 14" -DFBX_STATIC_RTL=1 .. - -3) Building the ViewScene sample on Windows using Visual Studio 2015 64 bits DLL - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 .. - -4) Wrong configuration, will display a warning and generates a DLL version - - cmake -G "Visual Studio 14 Win64" -DFBX_SHARED=1 -DFBX_STATIC_RTL=1 .. - Both FBX_SHARED and FBX_STATIC_RTL have been defined. They are mutually exclusive, considering FBX_SHARED only. - diff --git a/sdk/Windows/2019.2/samples/StereoCamera/CMakeLists.txt b/sdk/Windows/2019.2/samples/StereoCamera/CMakeLists.txt deleted file mode 100755 index 2bba2c5..0000000 --- a/sdk/Windows/2019.2/samples/StereoCamera/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(StereoCamera .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/StereoCamera/StereoCamera.fbx" "${FBX_BUILD_ROOT}/StereoCamera.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/StereoCamera/StereoCamera.fbx b/sdk/Windows/2019.2/samples/StereoCamera/StereoCamera.fbx deleted file mode 100755 index a11ebff..0000000 --- a/sdk/Windows/2019.2/samples/StereoCamera/StereoCamera.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8482fd83f99669599757e7bd926f8d6000330e86493f1a6c34824f514c1e0c5 -size 22863 diff --git a/sdk/Windows/2019.2/samples/StereoCamera/main.cxx b/sdk/Windows/2019.2/samples/StereoCamera/main.cxx deleted file mode 100755 index 6672465..0000000 --- a/sdk/Windows/2019.2/samples/StereoCamera/main.cxx +++ /dev/null @@ -1,243 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// The example illustrates how to: -// 1) get a stereo camera from a scene -// 2) evaluate left/right camera -// 3) get local/global matrix of left and right camera -// 4) create stereo camera set -// 5) connect left/right and stereo -// -//steps: -// 1. initialize FBX sdk object. -// 2. load fbx scene form the specified file. -// 3. Get root node of the scene. -// 4. Recursively traverse each node in the scene. -// 5. Detect and get stereo camera by from node attribute type. -// 6. Get left and right camera. -// 7. Evaluate left/right camera. -// 8. Get local/global matrix of left and right camera. -// 9. Create stereo camera set after extracting stereo camera. -// 10. Connect left/right and stereo. -// 11. Get the updated values via connections. -// 12. Destroy all objects. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "StereoCamera.fbx" - -void PrintMatrix(const FbxAMatrix& pMatrix); - -void GetStereoCameraInfo(FbxNode* pNode); - -void CreateStereoCamera(FbxScene* pScene); - -static bool gVerbose = true; - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gVerbose = false; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - if(!lScene) - { - FBX_ASSERT_NOW("null scene"); - } - - //get root node of the fbx scene - FbxNode* lRootNode = lScene->GetRootNode(); - - //This function illustrates how to get stereo camera info from scene. - GetStereoCameraInfo(lRootNode); - - //create your own stereo camera set - CreateStereoCamera(lScene); - } - - //Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -//This function illustrates how to get stereo camera info from scene. -void GetStereoCameraInfo(FbxNode* pNode) -{ - if(!pNode) - return; - - //detect stereo camera by node attribute type - if(pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCameraStereo) - { - //get stereo camera - FbxCameraStereo* lStereoCamera = (FbxCameraStereo*)pNode->GetNodeAttribute(); - - //once we get the FbxCameraStereo, its connection has already been done. - //it's easy to get its left and right camera - //get left camera - FbxCamera* lLeftCamera = lStereoCamera->GetLeftCamera(); - FbxString lLeftName = lLeftCamera->GetName(); - FBXSDK_printf("left camera: %s\n", lLeftName.Buffer()); - //get right camera - FbxCamera* lRightCamera = lStereoCamera->GetRightCamera(); - FbxString lRightName = lRightCamera->GetName(); - FBXSDK_printf("right camera: %s\n", lRightName.Buffer()); - - //FBX SDK support reevaluation functionality - //reevaluate left/right camera - double lLeftOffsetX = lStereoCamera->ReevaluateLeftCameraFilmOffsetX(); - FBXSDK_printf("reevaluated left camera film offset: %f\n", lLeftOffsetX); - double lLeftFbxOffsetX = lLeftCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX left camera film offset: %f\n", lLeftFbxOffsetX); - double lRightOffsetX = lStereoCamera->ReevaluateRightCameraFilmOffsetX(); - FBXSDK_printf("reevaluated right camera film offset: %f\n", lRightOffsetX); - double lRightFbxOffsetX = lRightCamera->FilmOffsetX.Get(); - FBXSDK_printf("The original FBX right camera film offset: %f\n", lRightFbxOffsetX); - - //get local/global matrix of left and right camera - //Then you can get their Translate, Rotate and Scale info. - FbxAMatrix lLeft_localMatrix = lStereoCamera->GetLeftCameraLocalMatrix(); - FbxAMatrix lRight_localMatrix = lStereoCamera->GetRightCameraLocalMatrix(); - FbxAMatrix lLeft_globalMatrix = lStereoCamera->GetLeftCameraGlobalMatrix(); - FbxAMatrix lRight_globalMatrix = lStereoCamera->GetRightCameraGlobalMatrix(); - - //print the local and global TRS for left camera - FBXSDK_printf("===local TRS of left camera===\n"); - PrintMatrix(lLeft_localMatrix); - FBXSDK_printf("===global TRS of left camera===\n"); - PrintMatrix(lLeft_globalMatrix); - - //print the local and global TRS for right camera - FBXSDK_printf("===local TRS of right camera===\n"); - PrintMatrix(lRight_localMatrix); - FBXSDK_printf("===global TRS of right camera===\n"); - PrintMatrix(lRight_globalMatrix); - }// end if pNode->GetNodeAttribute() - - - //recursively traverse each node in the scene - int i, lCount = pNode->GetChildCount(); - for (i = 0; i < lCount; i++) - { - GetStereoCameraInfo(pNode->GetChild(i)); - } -} - -//print the TRS for the given matrix -void PrintMatrix(const FbxAMatrix& pMatrix) -{ - if( !gVerbose ) return; - - //print the TRS - FBXSDK_printf(" T : %f %f %f %f\n", - pMatrix.GetT()[0], - pMatrix.GetT()[1], - pMatrix.GetT()[2], - pMatrix.GetT()[3] ); - - FBXSDK_printf(" R : %f %f %f %f\n", - pMatrix.GetR()[0], - pMatrix.GetR()[1], - pMatrix.GetR()[2], - pMatrix.GetR()[3] ); - - FBXSDK_printf(" S : %f %f %f %f\n", - pMatrix.GetS()[0], - pMatrix.GetS()[1], - pMatrix.GetS()[2], - pMatrix.GetS()[3] ); -} - -//This function illustrates how to create and connect stereo camera. -void CreateStereoCamera(FbxScene* pScene) -{ - if(!pScene) - return; - - //create a fbx node for stereo camera - FbxNode* lMyStereoNode = FbxNode::Create(pScene,"myStereoNode"); - //create a cameraStereo, it's a node attribute of stereo camera node. - FbxCameraStereo* lMyStereoCamera = FbxCameraStereo::Create(pScene,"myStereoCamera"); - //set stereoCamera as a node attribute of the FBX node. - lMyStereoNode->SetNodeAttribute (lMyStereoCamera); - //create a camera(node attribute), it will be left camera of stereo - FbxCamera* lLeftCamera = FbxCamera::Create(pScene, "leftCamera"); - //create a camera(node attribute), it will be right camera of stereo - FbxCamera* lRightCamera = FbxCamera::Create(pScene, "rightCamera"); - //add left camera to stereo - lMyStereoCamera->SetLeftCamera(lLeftCamera); - //add right camera to stereo - lMyStereoCamera->SetRightCamera(lRightCamera); - - //During FBXSDK reevaluating, if ConnectProperties() is called, - //left and right camera property will be connected to stereo camera. - //It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, - //FilmHeight, FilmSqueezeRatio] to stereo camera. - //If these properties of stereo camera have been modified by SDK, - //FBX will not automatically sync and update the corresponding properties of left/right camera. - //However, you could get the newest property of left/right camera since ConnectProperties() is called. - //To get the newest property value, please use lLeft_Camera->FocalLength.GetSrcProperty().Get(&lNewValue, ...); - //Then you can update your left/right camera properties, for example, lLeftCamera->FocalLength.Set(lNewValue); - lMyStereoCamera->ConnectProperties(); - - //test the connection - //get the focal length value of left camera. - double lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - double lFocalLength_Left_src = 0; - //get source property of left focal length, it should be stereo focal length. - FbxProperty lLeftSrcLengthProperty = lLeftCamera->FocalLength.GetSrcProperty(); - if(lLeftSrcLengthProperty.IsValid()) - { - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("Initialized FocalLength of left camera source: %f\n", lFocalLength_Left_src); - //modify the FocalLength of stereo camera - lMyStereoCamera->FocalLength.Set(3.333); - //get the FocalLength of left camera. It's 34.89 now. - //But it should be updated to 3.33 since stereo FocalLength has changed. - //FBX doesn't sync it from stereo camera - lFocalLength_Left = lLeftCamera->FocalLength.Get(); - FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left); - //get the newest value from connected property. - lFocalLength_Left_src = lLeftSrcLengthProperty.Get(); - FBXSDK_printf("FocalLength of left camera source: %f\n", lFocalLength_Left_src); - } -} - - diff --git a/sdk/Windows/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx b/sdk/Windows/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx deleted file mode 100755 index a63f31e..0000000 --- a/sdk/Windows/2019.2/samples/SwitchBinding/Bind_Before_Switch.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31d94ad7a973ec84133ede3ab562703d09e6cbce7bd0f634dfc2f6a30685972d -size 147917 diff --git a/sdk/Windows/2019.2/samples/SwitchBinding/CMakeLists.txt b/sdk/Windows/2019.2/samples/SwitchBinding/CMakeLists.txt deleted file mode 100755 index 8e66e22..0000000 --- a/sdk/Windows/2019.2/samples/SwitchBinding/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(SwitchBinding .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/SwitchBinding/Bind_Before_Switch.fbx" "${FBX_BUILD_ROOT}/Bind_Before_Switch.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() - diff --git a/sdk/Windows/2019.2/samples/SwitchBinding/main.cxx b/sdk/Windows/2019.2/samples/SwitchBinding/main.cxx deleted file mode 100755 index 803c450..0000000 --- a/sdk/Windows/2019.2/samples/SwitchBinding/main.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// Switch binding from one cylinder to the other one. -// Please check out the animation to see difference. -// Illustrates how to: -// 1. Get skin deformer and cluster; -// 2. Detach skin; -// 3. Bind and create corresponding bindpose; -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access the two cylinders -// 4. Get the skin deformer and all clusters from the first cylinder -// 5. Remove clusters, skin deformer and bind pose from the first cylinder -// 6. Move joints to proper position for cylinder2 -// 7. Update clusters, skin deformer and create a bind pose for the second cylinder -// 8. Save the scene to output file -// 9. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" - -const char * SAMPLE_FILENAME_BEFORE_SWITCH = "Bind_Before_Switch.fbx"; -const char * SAMPLE_FILENAME_AFTER_SWITCH = "Bind_After_Switch.fbx"; - -void SwitchBinding( FbxScene* pScene ); - -int main(int /*argc*/, char** /*argv*/) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, SAMPLE_FILENAME_BEFORE_SWITCH); - if( lResult ) - { - //Switch binding from the first cylinder to the second one. - SwitchBinding( lScene ); - - //Save the scene after switching binding. - lResult = SaveScene(lSdkManager, lScene, SAMPLE_FILENAME_AFTER_SWITCH); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void SwitchBinding(FbxScene * pScene) -{ - //Get the two cylinders. - FbxMesh* lCylinder01 = pScene->GetSrcObject(0); - FbxMesh* lCylinder02 = pScene->GetSrcObject(1); - - //Get the skin deformer, which will be switched from the first cylinder to the the second one. - FbxSkin* lSkin = (FbxSkin *) lCylinder01->GetDeformer(0, FbxDeformer::eSkin); - - // Get all clusters through the skin deformer, later they will be re-used for the second cylinder. - FbxArray lClusterArray; - for (int lClusterIndex = 0; lClusterIndex < lSkin->GetClusterCount(); ++lClusterIndex) - { - FbxCluster* lCluster=lSkin->GetCluster(lClusterIndex); - lClusterArray.Add(lCluster); - } - - // Detach the first cylinder. - // Remove clusters from the skin deformer. - for (int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); ++lClusterIndex) - lSkin->RemoveCluster(lClusterArray[lClusterIndex]); - // Remove the skin deformer from the first cylinder. - // Currently, the only deformer connected to lCylinder01 is the skin deformer. - lCylinder01->RemoveDeformer(0); - // Remove the corresponding bindpose. - pScene->RemovePose(0) ; - - // Bind the second cylinder and create the corresponding bind pose. - // Move the joints into the second cylinder. Only need to move the root joint. - lClusterArray[0]->GetLink()->LclTranslation.Set(FbxDouble3 ( -11.0322688253132,5.3883395780739,0) ); - - // Prepare an array to collect nodes for bind pose, which is combined of the geometry and joints. - FbxArray lPoseNodeArray; - - // Add the second cylinder to node array of bind pose. - lPoseNodeArray.Add(lCylinder02->GetNode()); - - // Set proper transformation for each cluster and add them to the skin deformer. - // ThansformMatrix is the global transformation of the mesh when the binding happens. - // TransformLinkMatrix is the global transformation of the joint(Link) when the binding happens. - FbxAMatrix lTransformMatrix, lTransformLinkMatrix; - lTransformMatrix = lCylinder02->GetNode()->EvaluateGlobalTransform(); - for(int lClusterIndex = 0; lClusterIndex < lClusterArray.GetCount(); lClusterIndex++) - { - // All joints have the same TransformMatrix. - lClusterArray[lClusterIndex]->SetTransformMatrix(lTransformMatrix); - - // Compute global transformation of each joint and set it as TransformLinkMatrix. - lTransformLinkMatrix = lClusterArray[lClusterIndex]->GetLink()->EvaluateGlobalTransform(); - lClusterArray[lClusterIndex]->SetTransformLinkMatrix(lTransformLinkMatrix); - - // Add cluster to the skin deformer. - lSkin->AddCluster(lClusterArray[lClusterIndex]); - - // Add each joint(Link) to node array of bindpose. - lPoseNodeArray.Add(lClusterArray[lClusterIndex]->GetLink()); - } - - // Add the skin deformer to the second cylinder. - lCylinder02->AddDeformer(lSkin); - - // Create a pose by the node array and set it as bindpose. - FbxPose* lPose = FbxPose::Create(pScene,lCylinder02->GetNode()->GetName()); - lPose->SetIsBindPose(true); - for(int lPoseNodeIndex = 0; lPoseNodeIndexEvaluateGlobalTransform(); - lPose->Add(lPoseNodeArray[lPoseNodeIndex], lBindMatrix); - } - - // Add the bindpose to the scene. - pScene->AddPose(lPose); -} diff --git a/sdk/Windows/2019.2/samples/Transformations/CMakeLists.txt b/sdk/Windows/2019.2/samples/Transformations/CMakeLists.txt deleted file mode 100755 index e96b8ca..0000000 --- a/sdk/Windows/2019.2/samples/Transformations/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(Transformations .) -SET(FBX_TARGET_SOURCE - main.cxx - DisplayCommon.h - DisplayCommon.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/Transformations/JointHierarchy.fbx" "${FBX_BUILD_ROOT}/JointHierarchy.fbx" -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.cxx b/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.cxx deleted file mode 100755 index 3fb3cdd..0000000 --- a/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.cxx +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DisplayCommon.h" - -#if defined (FBXSDK_ENV_MAC) -// disable the “format not a string literal and no format arguments” warning since -// the FBXSDK_printf calls made here are all valid calls and there is no secuity risk -#pragma GCC diagnostic ignored "-Wformat-security" -#endif - -void DisplayMetaDataConnections(FbxObject* pObject) -{ - int nbMetaData = pObject->GetSrcObjectCount(); - if (nbMetaData > 0) - DisplayString(" MetaData connections "); - - for (int i = 0; i < nbMetaData; i++) - { - FbxObjectMetaData* metaData = pObject->GetSrcObject(i); - DisplayString(" Name: ", (char*)metaData->GetName()); - } -} - -void DisplayString(const char* pHeader, const char* pValue /* = "" */, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue ? "true" : "false"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += pValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue = (float) pValue; - - lFloatValue = pValue <= -HUGE_VAL ? "-INFINITY" : lFloatValue.Buffer(); - lFloatValue = pValue >= HUGE_VAL ? "INFINITY" : lFloatValue.Buffer(); - - lString = pHeader; - lString += lFloatValue; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - FbxString lFloatValue1 = (float)pValue[0]; - FbxString lFloatValue2 = (float)pValue[1]; - FbxString lFloatValue3 = (float)pValue[2]; - FbxString lFloatValue4 = (float)pValue[3]; - - lFloatValue1 = pValue[0] <= -HUGE_VAL ? "-INFINITY" : lFloatValue1.Buffer(); - lFloatValue1 = pValue[0] >= HUGE_VAL ? "INFINITY" : lFloatValue1.Buffer(); - lFloatValue2 = pValue[1] <= -HUGE_VAL ? "-INFINITY" : lFloatValue2.Buffer(); - lFloatValue2 = pValue[1] >= HUGE_VAL ? "INFINITY" : lFloatValue2.Buffer(); - lFloatValue3 = pValue[2] <= -HUGE_VAL ? "-INFINITY" : lFloatValue3.Buffer(); - lFloatValue3 = pValue[2] >= HUGE_VAL ? "INFINITY" : lFloatValue3.Buffer(); - lFloatValue4 = pValue[3] <= -HUGE_VAL ? "-INFINITY" : lFloatValue4.Buffer(); - lFloatValue4 = pValue[3] >= HUGE_VAL ? "INFINITY" : lFloatValue4.Buffer(); - - lString = pHeader; - lString += lFloatValue1; - lString += ", "; - lString += lFloatValue2; - lString += ", "; - lString += lFloatValue3; - lString += ", "; - lString += lFloatValue4; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxPropertyT pValue, const char* pSuffix /* = "" */) - -{ - FbxString lString; - - lString = pHeader; - //lString += (float) pValue.mRed; - //lString += (double)pValue.GetArrayItem(0); - lString += " (red), "; - //lString += (float) pValue.mGreen; - //lString += (double)pValue.GetArrayItem(1); - lString += " (green), "; - //lString += (float) pValue.mBlue; - //lString += (double)pValue.GetArrayItem(2); - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - - -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix /* = "" */) -{ - FbxString lString; - - lString = pHeader; - lString += (float) pValue.mRed; - - lString += " (red), "; - lString += (float) pValue.mGreen; - - lString += " (green), "; - lString += (float) pValue.mBlue; - - lString += " (blue)"; - lString += pSuffix; - lString += "\n"; - FBXSDK_printf(lString); -} - diff --git a/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.h b/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.h deleted file mode 100755 index b38f6d9..0000000 --- a/sdk/Windows/2019.2/samples/Transformations/DisplayCommon.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DISPLAY_COMMON_H -#define _DISPLAY_COMMON_H - -#include - -void DisplayMetaDataConnections(FbxObject* pNode); -void DisplayString(const char* pHeader, const char* pValue = "", const char* pSuffix = ""); -void DisplayBool(const char* pHeader, bool pValue, const char* pSuffix = ""); -void DisplayInt(const char* pHeader, int pValue, const char* pSuffix = ""); -void DisplayDouble(const char* pHeader, double pValue, const char* pSuffix = ""); -void Display2DVector(const char* pHeader, FbxVector2 pValue, const char* pSuffix = ""); -void Display3DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); -void DisplayColor(const char* pHeader, FbxColor pValue, const char* pSuffix = ""); -void Display4DVector(const char* pHeader, FbxVector4 pValue, const char* pSuffix = ""); - -#endif // #ifndef _DISPLAY_COMMON_H - - diff --git a/sdk/Windows/2019.2/samples/Transformations/JointHierarchy.fbx b/sdk/Windows/2019.2/samples/Transformations/JointHierarchy.fbx deleted file mode 100755 index 1efc604..0000000 --- a/sdk/Windows/2019.2/samples/Transformations/JointHierarchy.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bb146cf8c339c49489e4c47bd9191abe45e2ddd77d2731f0d347ad3d8420642 -size 13019 diff --git a/sdk/Windows/2019.2/samples/Transformations/main.cxx b/sdk/Windows/2019.2/samples/Transformations/main.cxx deleted file mode 100755 index e40ea77..0000000 --- a/sdk/Windows/2019.2/samples/Transformations/main.cxx +++ /dev/null @@ -1,331 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// Illustrates the followings: -// 1. How to use FbxAMatrix in transformation calculation. -// 2. What EvaluateGlobalTransform() and EvaluateLocalTransform() actually do. -// 3. How to get global and local transform of each joint in a joint hierarchy. -// -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene. -// 2. Load the input file to scene. -// 3. Calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). -// 4. Alternative way to calculate global and local transform from scratch by node's properties. -// 5. Compare, the above two results should be the same. -// 6. Display the joint's global and local transformation. -// 7. Destroy the FBX SDK Manager and FBX Scene. -// -// Notice: This sample does not take rotation order into consideration. It only shows the transformation -// calculation with XYZ rotation order. -//////////////////////////////////////////////////////////////////////////////////////////////////////// - -#include -#include "../Common/Common.h" -#include "DisplayCommon.h" - -const char * SAMPLE_FILENAME = "JointHierarchy.fbx"; - -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode); -void CompareTransformations( FbxNode* pNode, FbxScene* pScene ); - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - // The example can take a FBX file as an argument. - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) continue; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME; - - FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer()); - lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer()); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - CompareTransformations( lScene->GetRootNode(), lScene ); - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - -void CompareTransformations(FbxNode* pNode, FbxScene * pScene) -{ - if( pNode != pScene->GetRootNode()) - { - DisplayString(pNode->GetName()); - FbxNode* lParentNode = pNode->GetParent(); - - // The first way: calculate global and local transform by EvaluateGlobalTransform() and EvaluateLocalTransform(). - FbxAMatrix lGlobal, lLocal; - lGlobal= pNode->EvaluateGlobalTransform(); - lLocal = pNode->EvaluateLocalTransform(); - - // The second way: calculate global and local transform from scratch by the node's properties. - FbxAMatrix lParentTransform,lLocalTransform, lGlobalTransform; - lGlobalTransform = CalculateGlobalTransform(pNode); - if(lParentNode) - { - // Get parent global transform. - lParentTransform = CalculateGlobalTransform(lParentNode); - // Calculate local transform according to: LocalTransform = ParentGlobalInverse * GlobalTransform. - lLocalTransform = lParentTransform.Inverse() * lGlobalTransform; - } - else - lLocalTransform = lGlobalTransform; - - // Compare, the results are the same. Display the global and local transformation of each joint. - if(lGlobal == lGlobalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("GlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two global transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchGlobalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lGlobalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - - if(lLocal == lLocalTransform) - { - for(int i = 0; i<4; ++i) - { - FbxString lHeader("LocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - } - else - { - FBXSDK_printf("Error: The two local transform results are not equal!\n"); - for(int i = 0; i<4; ++i) - { - FbxString lHeader("KFbxEvaluatorLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocal.GetRow(i)); - } - FBXSDK_printf("\n"); - - for(int i = 0; i<4; ++i) - { - FbxString lHeader("FromScratchLocalTransform Row_"); - FbxString lIndex(i); - lHeader += lIndex; - lHeader += ": "; - - Display4DVector(lHeader, lLocalTransform.GetRow(i)); - } - FBXSDK_printf("\n"); - } - } - - int lChildCount = pNode->GetChildCount(); - for( int i = 0; iGetChild(i), pScene); - } -} - -/* -Terminology: -Suffix "M" means this is a matrix, suffix "V" means it is a vector. -T is translation. -R is rotation. -S is scaling. -SH is shear. -GlobalRM(x) means the Global Rotation Matrix of node "x". -GlobalRM(P(x)) means the Global Rotation Matrix of the parent node of node "x". -All other transforms are described in the similar way. - -The algorithm description: -To calculate global transform of a node x according to different InheritType, -we need to calculate GlobalTM(x) and [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))] separately. -GlobalM(x) = GlobalTM(x) * [GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x))]; - -InhereitType = RrSs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalSM(x); - -InhereitType = RSrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * [GlobalSHM(P(x)) * GlobalSM(P(x))] * LocalRM(x) * LocalSM(x); - -InhereitType = Rrs: -GlobalRM(x) * (GlobalSHM(x) * GlobalSM(x)) = GlobalRM(P(x)) * LocalRM(x) * LocalSM(x); - -LocalM(x)= TM(x) * RoffsetM(x) * RpivotM(x) * RpreM(x) * RM(x) * RpostM(x) * RpivotM(x)^-1 * SoffsetM(x) *SpivotM(x) * SM(x) * SpivotM(x)^-1 -LocalTWithAllPivotAndOffsetInformationV(x) = Local(x).GetT(); -GlobalTV(x) = GlobalM(P(x)) * LocalTWithAllPivotAndOffsetInformationV(x); - -Notice: FBX SDK does not support shear yet, so all local transform won't have shear. -However, global transform might bring in shear by combine the global transform of node in higher hierarchy. -For example, if you scale the parent by a non-uniform scale and then rotate the child node, then a shear will -be generated on the child node's global transform. -In this case, we always compensates shear and store it in the scale matrix too according to following formula: -Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix -*/ -FbxAMatrix CalculateGlobalTransform(FbxNode* pNode) -{ - FbxAMatrix lTranlationM, lScalingM, lScalingPivotM, lScalingOffsetM, lRotationOffsetM, lRotationPivotM, \ - lPreRotationM, lRotationM, lPostRotationM, lTransform; - - FbxAMatrix lParentGX, lGlobalT, lGlobalRS; - - if(!pNode) - { - lTransform.SetIdentity(); - return lTransform; - } - - // Construct translation matrix - FbxVector4 lTranslation = pNode->LclTranslation.Get(); - lTranlationM.SetT(lTranslation); - - // Construct rotation matrices - FbxVector4 lRotation = pNode->LclRotation.Get(); - FbxVector4 lPreRotation = pNode->PreRotation.Get(); - FbxVector4 lPostRotation = pNode->PostRotation.Get(); - lRotationM.SetR(lRotation); - lPreRotationM.SetR(lPreRotation); - lPostRotationM.SetR(lPostRotation); - - // Construct scaling matrix - FbxVector4 lScaling = pNode->LclScaling.Get(); - lScalingM.SetS(lScaling); - - // Construct offset and pivot matrices - FbxVector4 lScalingOffset = pNode->ScalingOffset.Get(); - FbxVector4 lScalingPivot = pNode->ScalingPivot.Get(); - FbxVector4 lRotationOffset = pNode->RotationOffset.Get(); - FbxVector4 lRotationPivot = pNode->RotationPivot.Get(); - lScalingOffsetM.SetT(lScalingOffset); - lScalingPivotM.SetT(lScalingPivot); - lRotationOffsetM.SetT(lRotationOffset); - lRotationPivotM.SetT(lRotationPivot); - - // Calculate the global transform matrix of the parent node - FbxNode* lParentNode = pNode->GetParent(); - if(lParentNode) - { - lParentGX = CalculateGlobalTransform(lParentNode); - } - else - { - lParentGX.SetIdentity(); - } - - //Construct Global Rotation - FbxAMatrix lLRM, lParentGRM; - FbxVector4 lParentGR = lParentGX.GetR(); - lParentGRM.SetR(lParentGR); - lLRM = lPreRotationM * lRotationM * lPostRotationM; - - //Construct Global Shear*Scaling - //FBX SDK does not support shear, to patch this, we use: - //Shear*Scaling = RotationMatrix.Inverse * TranslationMatrix.Inverse * WholeTranformMatrix - FbxAMatrix lLSM, lParentGSM, lParentGRSM, lParentTM; - FbxVector4 lParentGT = lParentGX.GetT(); - lParentTM.SetT(lParentGT); - lParentGRSM = lParentTM.Inverse() * lParentGX; - lParentGSM = lParentGRM.Inverse() * lParentGRSM; - lLSM = lScalingM; - - //Do not consider translation now - FbxTransform::EInheritType lInheritType = pNode->InheritType.Get(); - if(lInheritType == FbxTransform::eInheritRrSs) - { - lGlobalRS = lParentGRM * lLRM * lParentGSM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRSrs) - { - lGlobalRS = lParentGRM * lParentGSM * lLRM * lLSM; - } - else if(lInheritType == FbxTransform::eInheritRrs) - { - FbxAMatrix lParentLSM; - FbxVector4 lParentLS = lParentNode->LclScaling.Get(); - lParentLSM.SetS(lParentLS); - - FbxAMatrix lParentGSM_noLocal = lParentGSM * lParentLSM.Inverse(); - lGlobalRS = lParentGRM * lLRM * lParentGSM_noLocal * lLSM; - } - else - { - FBXSDK_printf("error, unknown inherit type! \n"); - } - - // Construct translation matrix - // Calculate the local transform matrix - lTransform = lTranlationM * lRotationOffsetM * lRotationPivotM * lPreRotationM * lRotationM * lPostRotationM * lRotationPivotM.Inverse()\ - * lScalingOffsetM * lScalingPivotM * lScalingM * lScalingPivotM.Inverse(); - FbxVector4 lLocalTWithAllPivotAndOffsetInfo = lTransform.GetT(); - // Calculate global translation vector according to: - // GlobalTranslation = ParentGlobalTransform * LocalTranslationWithPivotAndOffsetInfo - FbxVector4 lGlobalTranslation = lParentGX.MultT(lLocalTWithAllPivotAndOffsetInfo); - lGlobalT.SetT(lGlobalTranslation); - - //Construct the whole global transform - lTransform = lGlobalT * lGlobalRS; - - return lTransform; -} - - diff --git a/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.cxx b/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.cxx deleted file mode 100755 index d574ab4..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.cxx +++ /dev/null @@ -1,408 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "ImportExport.h" - -// declare global -FbxManager* gSdkManager = NULL; - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(gSdkManager->GetIOSettings())) -#endif - - -// a UI file provide a function to print messages -extern void UI_Printf(const char* msg, ...); - -// to read and write a file using the FBXSDK readers/writers -// -// const char *ImportFileName : the full path of the file to be read -// const char* ExportFileName : the full path of the file to be written -// int pWriteFileFormat : the specific file format number -// for the writer - -void ImportExport( - const char *ImportFileName, - const char* ExportFileName, - int pWriteFileFormat - ) -{ - // Create a scene - FbxScene* lScene = FbxScene::Create(gSdkManager,""); - - UI_Printf("------- Import started ---------------------------"); - - // Load the scene. - bool r = LoadScene(gSdkManager, lScene, ImportFileName); - if(r) - UI_Printf("------- Import succeeded -------------------------"); - else - { - UI_Printf("------- Import failed ----------------------------"); - - // Destroy the scene - lScene->Destroy(); - return; - } - - UI_Printf("\r\n"); // add a blank line - - UI_Printf("------- Export started ---------------------------"); - - // Save the scene. - r = SaveScene(gSdkManager, - lScene, // to export this scene... - ExportFileName, // to this path/filename... - pWriteFileFormat, // using this file format. - false); // Don't embed media files, if any. - - if(r) UI_Printf("------- Export succeeded -------------------------"); - else UI_Printf("------- Export failed ----------------------------"); - - // destroy the scene - lScene->Destroy(); -} - -// Creates an instance of the SDK manager. -void InitializeSdkManager() -{ - // Create the FBX SDK memory manager object. - // The SDK Manager allocates and frees memory - // for almost all the classes in the SDK. - gSdkManager = FbxManager::Create(); - - // create an IOSettings object - FbxIOSettings * ios = FbxIOSettings::Create(gSdkManager, IOSROOT ); - gSdkManager->SetIOSettings(ios); - -} - -// Destroys an instance of the SDK manager -void DestroySdkObjects( - FbxManager* pSdkManager, - bool pExitStatus - ) -{ - // Delete the FBX SDK manager. - // All the objects that - // (1) have been allocated by the memory manager, AND that - // (2) have not been explicitly destroyed - // will be automatically destroyed. - if( pSdkManager ) pSdkManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -// Creates an importer object, and uses it to -// import a file into a scene. -bool LoadScene( - FbxManager* pSdkManager, // Use this memory manager... - FbxScene* pScene, // to import into this scene - const char* pFilename // the data from this file. - ) -{ - int lFileMajor, lFileMinor, lFileRevision; - int lSDKMajor, lSDKMinor, lSDKRevision; - int i, lAnimStackCount; - bool lStatus; - char lPassword[1024]; - - // Get the version number of the FBX files generated by the - // version of FBX SDK that you are using. - FbxManager::GetFileFormatVersion(lSDKMajor, lSDKMinor, lSDKRevision); - - // Create an importer. - FbxImporter* lImporter = FbxImporter::Create(pSdkManager,""); - - // Initialize the importer by providing a filename. - const bool lImportStatus = lImporter->Initialize(pFilename, -1, pSdkManager->GetIOSettings() ); - - // Get the version number of the FBX file format. - lImporter->GetFileVersion(lFileMajor, lFileMinor, lFileRevision); - - if( !lImportStatus ) // Problem with the file to be imported - { - FbxString error = lImporter->GetStatus().GetErrorString(); - UI_Printf("Call to FbxImporter::Initialize() failed."); - UI_Printf("Error returned: %s", error.Buffer()); - - if (lImporter->GetStatus().GetCode() == FbxStatus::eInvalidFileVersion) - { - UI_Printf("FBX version number for this FBX SDK is %d.%d.%d", - lSDKMajor, lSDKMinor, lSDKRevision); - UI_Printf("FBX version number for file %s is %d.%d.%d", - pFilename, lFileMajor, lFileMinor, lFileRevision); - } - - return false; - } - - UI_Printf("FBX version number for this FBX SDK is %d.%d.%d", - lSDKMajor, lSDKMinor, lSDKRevision); - - if (lImporter->IsFBX()) - { - UI_Printf("FBX version number for file %s is %d.%d.%d", - pFilename, lFileMajor, lFileMinor, lFileRevision); - - // In FBX, a scene can have one or more "animation stack". An animation stack is a - // container for animation data. - // You can access a file's animation stack information without - // the overhead of loading the entire file into the scene. - - UI_Printf("Animation Stack Information"); - - lAnimStackCount = lImporter->GetAnimStackCount(); - - UI_Printf(" Number of animation stacks: %d", lAnimStackCount); - UI_Printf(" Active animation stack: \"%s\"", - lImporter->GetActiveAnimStackName().Buffer()); - - for(i = 0; i < lAnimStackCount; i++) - { - FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(i); - - UI_Printf(" Animation Stack %d", i); - UI_Printf(" Name: \"%s\"", lTakeInfo->mName.Buffer()); - UI_Printf(" Description: \"%s\"", - lTakeInfo->mDescription.Buffer()); - - // Change the value of the import name if the animation stack should - // be imported under a different name. - UI_Printf(" Import Name: \"%s\"", lTakeInfo->mImportName.Buffer()); - - // Set the value of the import state to false - // if the animation stack should be not be imported. - UI_Printf(" Import State: %s", lTakeInfo->mSelect ? "true" : "false"); - } - - // Import options determine what kind of data is to be imported. - // The default is true, but here we set the options explictly. - - IOS_REF.SetBoolProp(IMP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(IMP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(IMP_FBX_LINK, true); - IOS_REF.SetBoolProp(IMP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(IMP_FBX_GOBO, true); - IOS_REF.SetBoolProp(IMP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(IMP_FBX_GLOBAL_SETTINGS, true); - } - - // Import the scene. - lStatus = lImporter->Import(pScene); - - if(lStatus == false && // The import file may have a password - lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - UI_Printf("Please enter password: "); - - lPassword[0] = '\0'; - - FBXSDK_CRT_SECURE_NO_WARNING_BEGIN - scanf("%s", lPassword); - FBXSDK_CRT_SECURE_NO_WARNING_END - FbxString lString(lPassword); - - IOS_REF.SetStringProp(IMP_FBX_PASSWORD, lString); - IOS_REF.SetBoolProp(IMP_FBX_PASSWORD_ENABLE, true); - - - lStatus = lImporter->Import(pScene); - - if(lStatus == false && lImporter->GetStatus().GetCode() == FbxStatus::ePasswordError) - { - UI_Printf("Incorrect password: file not imported."); - } - } - - // Destroy the importer - lImporter->Destroy(); - - return lStatus; -} - -// Exports a scene to a file -bool SaveScene( - FbxManager* pSdkManager, - FbxScene* pScene, - const char* pFilename, - int pFileFormat, - bool pEmbedMedia - ) -{ - int lMajor, lMinor, lRevision; - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pSdkManager, ""); - - if( pFileFormat < 0 || - pFileFormat >= - pSdkManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format if pEmbedMedia is true - pFileFormat = - pSdkManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - if (!pEmbedMedia) - { - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = - pSdkManager->GetIOPluginRegistry()-> - GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()-> - WriterIsFBX(lFormatIndex)) - { - FbxString lDesc = pSdkManager->GetIOPluginRegistry()-> - GetWriterFormatDescription(lFormatIndex); - if (lDesc.Find("ascii")>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - } - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pSdkManager->GetIOSettings()) == false) - { - UI_Printf("Call to FbxExporter::Initialize() failed."); - UI_Printf("Error returned: %s", lExporter->GetStatus().GetErrorString()); - return false; - } - - FbxManager::GetFileFormatVersion(lMajor, lMinor, lRevision); - UI_Printf("FBX version number for this FBX SDK is %d.%d.%d", - lMajor, lMinor, lRevision); - - if (pSdkManager->GetIOPluginRegistry()->WriterIsFBX(pFileFormat)) - { - // Export options determine what kind of data is to be imported. - // The default (except for the option eEXPORT_TEXTURE_AS_EMBEDDED) - // is true, but here we set the options explicitly. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(EXP_FBX_GOBO, true); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - } - - // Export the scene. - lStatus = lExporter->Export(pScene); - - // Destroy the exporter. - lExporter->Destroy(); - - return lStatus; -} - -// Get the filters for the dialog -// (description + file extention) -const char *GetReaderOFNFilters() -{ - int nbReaders = - gSdkManager->GetIOPluginRegistry()->GetReaderFormatCount(); - - FbxString s; - int i = 0; - - for(i=0; i < nbReaders; i++) - { - s += gSdkManager->GetIOPluginRegistry()-> - GetReaderFormatDescription(i); - s += "|*."; - s += gSdkManager->GetIOPluginRegistry()-> - GetReaderFormatExtension(i); - s += "|"; - } - - // replace | by \0 - int nbChar = int(strlen(s.Buffer())) + 1; - char *filter = new char[ nbChar ]; - memset(filter, 0, nbChar); - - FBXSDK_strcpy(filter, nbChar, s.Buffer()); - - for(i=0; i < int(strlen(s.Buffer())); i++) - { - if(filter[i] == '|') - { - filter[i] = 0; - } - } - - // the caller must delete this allocated memory - return filter; -} - -// Get the filters for the dialog -// (description + file extention) -const char *GetWriterSFNFilters() -{ - int nbWriters = - gSdkManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - FbxString s; - int i=0; - - for(i=0; i < nbWriters; i++) - { - s += gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatDescription(i); - s += "|*."; - s += gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatExtension(i); - s += "|"; - } - - // replace | by \0 - int nbChar = int(strlen(s.Buffer())) + 1; - char *filter = new char[ nbChar ]; - memset(filter, 0, nbChar); - - FBXSDK_strcpy(filter, nbChar, s.Buffer()); - - for(i=0; i < int(strlen(s.Buffer())); i++) - { - if(filter[i] == '|') - { - filter[i] = 0; - } - } - - // the caller must delete this allocated memory - return filter; -} - -// to get a file extention for a WriteFileFormat -const char *GetFileFormatExt( - const int pWriteFileFormat - ) -{ - char *buf = new char[10]; - memset(buf, 0, 10); - - // add a starting point . - buf[0] = '.'; - const char * ext = gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatExtension(pWriteFileFormat); - FBXSDK_strcat(buf, 10, ext); - - // the caller must delete this allocated memory - return buf; -} \ No newline at end of file diff --git a/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.h b/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.h deleted file mode 100755 index 62bf400..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/Common/ImportExport.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// use the fbxsdk.h -#include - -void ImportExport( - const char *ImportFileName, - const char* ExportFileName, - int pWriteFileFormat - ); - - -void InitializeSdkManager(); - -void DestroySdkObjects( - FbxManager* pSdkManager, - bool pExitStatus - ); - -const char *GetReaderOFNFilters(); - -const char *GetWriterSFNFilters(); - -const char *GetFileFormatExt( - const int pWriteFileFormat - ); - -bool LoadScene( - FbxManager* pSdkManager, - FbxScene* pScene, - const char* pFilename - ); - -bool SaveScene( - FbxManager* pSdkManager, - FbxScene* pScene, - const char* pFilename, - int pFileFormat, - bool pEmbedMedia - ); - - diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/CMakeLists.txt b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/CMakeLists.txt deleted file mode 100755 index a191461..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") -IF(NOT WIN32) - MESSAGE(SEND_ERROR "This sample can only compile on Windows platform.") - RETURN() -ENDIF() - -FBX_PROJECT(UI_Example_CubeCreator .) -SET(FBX_TARGET_SOURCE - "resource.h" - "SDK_Utility.cxx" - "SDK_Utility.h" - "stdafx.h" - "UI.cxx" - "UI.h" - "UI.ico" - "UI.rc" -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - WIN32 #sets the application subsystem to Windows Application instead of Console - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/Crate.jpg b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/Crate.jpg deleted file mode 100755 index 16622b8..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/Crate.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3a1082b6d98ad79709c101299ae4914862806a9c1bce6578eee577e524b441a -size 22162 diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/FBX_banner_545x132_SDK.bmp b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/FBX_banner_545x132_SDK.bmp deleted file mode 100755 index 4d76036..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/FBX_banner_545x132_SDK.bmp and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.cxx b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.cxx deleted file mode 100755 index e13e241..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.cxx +++ /dev/null @@ -1,798 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SDK_Utility.h" - -// declare global -FbxManager* gSdkManager = NULL; -FbxScene* gScene = NULL; -FbxFileTexture* gTexture = NULL; -FbxSurfacePhong* gMaterial = NULL; - -int gCubeNumber = 1; // Cube Number -int gCubeRotationAxis = 1; // Cube Rotation Axis 0==X, 1==Y, 2==Z -double gCubeXPos = 0.0; // initial CubXPos -double gCubeYPos = 20.0; // initial CubeYPos -double gCubeZPos = 0.0; // initial CubeZPos - -FbxAnimLayer* gAnimLayer = NULL; // holder of animation curves -FbxString* gAppPath = NULL; // path where the application started - - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pSdkManager->GetIOSettings())) -#endif - - -bool InitializeSdkObjects(FbxManager*& pManager, FbxScene*& pScene) -{ - //The first thing to do is to create the FBX Manager which is the object allocator for almost all the classes in the SDK - pManager = FbxManager::Create(); - if( !pManager ) - { - FBXSDK_printf("Error: Unable to create FBX Manager!\n"); - exit(1); - } - else FBXSDK_printf("Autodesk FBX SDK version %s\n", pManager->GetVersion()); - - //Create an IOSettings object. This object holds all import/export settings. - FbxIOSettings* ios = FbxIOSettings::Create(pManager, IOSROOT); - pManager->SetIOSettings(ios); - - //Create an FBX scene. This object holds most objects imported/exported from/to files. - pScene = FbxScene::Create(pManager, "My Scene"); - if( !pScene ) - { - FBXSDK_printf("Error: Unable to create FBX scene!\n"); - exit(1); - } - return true; -} - -void DestroySdkObjects(FbxManager* pManager, bool pExitStatus) -{ - //Delete the FBX Manager. All the objects that have been allocated using the FBX Manager and that haven't been explicitly destroyed are also automatically destroyed. - if( pManager ) pManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - - -// to create a basic scene -bool CreateScene() -{ - // Initialize the FbxManager and the FbxScene - if(InitializeSdkObjects(gSdkManager, gScene) == false) - { - return false; - } - - // set the animation stack and use the unique AnimLayer to support all the animation - FbxAnimStack* lAnimStack = FbxAnimStack::Create(gScene, "Animation stack camera animation"); - gAnimLayer = FbxAnimLayer::Create(gScene, "Base Layer"); - lAnimStack->AddMember(gAnimLayer); - - // create a marker - FbxNode* lMarker = CreateMarker(gScene, "Marker"); - - // create a camera - FbxNode* lCamera = CreateCamera(gScene, "Camera"); - - // create a single texture shared by all cubes - CreateTexture(gScene); - - // create a material shared by all faces of all cubes - CreateMaterial(gScene); - - // set the camera point of interest on the marker - SetCameraPointOfInterest(lCamera, lMarker); - - // set the marker position - SetMarkerDefaultPosition(lMarker); - - // set the camera position - SetCameraDefaultPosition(lCamera); - - // animate the camera - AnimateCamera(lCamera, gAnimLayer); - - // build a minimum scene graph - FbxNode* lRootNode = gScene->GetRootNode(); - lRootNode->AddChild(lMarker); - lRootNode->AddChild(lCamera); - - // set camera switcher as the default camera - gScene->GetGlobalSettings().SetDefaultCamera((char *)lCamera->GetName()); - - return true; -} - -// create a new cube -void CreateCube(bool pWithTexture, bool pAnimate) -{ - // make a new cube name - FbxString lCubeName = "Cube number "; - lCubeName += FbxString(gCubeNumber); - - // create a new cube - CreateCubeDetailed( lCubeName.Buffer(), - gCubeXPos, - gCubeYPos, - gCubeZPos, - gCubeRotationAxis, - pWithTexture, - pAnimate - ); - - // compute for next cube creation - gCubeNumber++; // cube number - - // set next pos - if(gCubeXPos >= 0.0) - { - gCubeXPos += 50.0; - gCubeXPos *= -1.0; - gCubeRotationAxis++; // change rotation axis - } - else - { - gCubeXPos *= -1.0; - } - - // go up - gCubeYPos += 30.0; - - if(gCubeRotationAxis > 2) gCubeRotationAxis = 0; // cube rotation -} - -// to remove cubes only -void RemoveCubes() -{ - if(gSdkManager == NULL) return; - - // get the node count - int nc = gScene->GetNodeCount(); - - // we want to keep the root node, the marker node and the camera node - if(nc <= 3) return; - - // remove other nodes (cube nodes) - // start from the end - for(int i=nc-1; i >= 3; i--) - { - FbxNode *node = gScene->GetNode(i); - gScene->RemoveNode(node); - - // remove animation - FbxAnimCurveNode* lCurveNode = node->LclRotation.GetCurveNode(gAnimLayer); - if(lCurveNode != NULL) - { - lCurveNode->Destroy(true); - } - - // remove from memory - node->Destroy(true); - } - - // reset cube data - SetInitialCubeData(); -} - -// create a new cube -void CreateCubeDetailed( char* pCubeName, - double pX, - double pY, - double pZ, - int pRotateAxe, - bool pWithTexture, - bool pAnimate - ) -{ - FbxNode* lCube = CreateCubeMesh(gScene, pCubeName); - - // set the cube position - lCube->LclTranslation.Set(FbxVector4(pX, pY, pZ)); - - if(pAnimate) - { - AnimateCube(lCube, gAnimLayer, pRotateAxe); - } - - if(pWithTexture) - { - // if we asked to create the cube with a texture, we need - // a material present because the texture connects to the - // material DiffuseColor property - AddMaterials(lCube->GetMesh()); - } - - gScene->GetRootNode()->AddChild(lCube); -} - -// to save a scene to a FBX file -bool Export( - const char* pFilename, - int pFileFormat - ) -{ - return SaveScene(gSdkManager, gScene, pFilename, pFileFormat, true); // true -> embed texture file -} - -// to save a scene to a FBX file -bool SaveScene(FbxManager* pSdkManager, FbxDocument* pScene, const char* pFilename, int pFileFormat, bool pEmbedMedia) -{ - if(pSdkManager == NULL) return false; - if(pScene == NULL) return false; - if(pFilename == NULL) return false; - - bool lStatus = true; - - // Create an exporter. - FbxExporter* lExporter = FbxExporter::Create(pSdkManager, ""); - - if( pFileFormat < 0 || pFileFormat >= pSdkManager->GetIOPluginRegistry()->GetWriterFormatCount() ) - { - // Write in fall back format if pEmbedMedia is true - pFileFormat = pSdkManager->GetIOPluginRegistry()->GetNativeWriterFormat(); - - if (!pEmbedMedia) - { - //Try to export in ASCII if possible - int lFormatIndex, lFormatCount = pSdkManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - for (lFormatIndex=0; lFormatIndexGetIOPluginRegistry()->WriterIsFBX(lFormatIndex)) - { - FbxString lDesc =pSdkManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex); - char *lASCII = "ascii"; - if (lDesc.Find(lASCII)>=0) - { - pFileFormat = lFormatIndex; - break; - } - } - } - } - } - - // Initialize the exporter by providing a filename. - if(lExporter->Initialize(pFilename, pFileFormat, pSdkManager->GetIOSettings() ) == false) - { - return false; - } - - // Set the export states. By default, the export states are always set to - // true except for the option eEXPORT_TEXTURE_AS_EMBEDDED. The code below - // shows how to change these states. - IOS_REF.SetBoolProp(EXP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(EXP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(EXP_FBX_EMBEDDED, pEmbedMedia); - IOS_REF.SetBoolProp(EXP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(EXP_FBX_GOBO, true); - IOS_REF.SetBoolProp(EXP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(EXP_FBX_GLOBAL_SETTINGS, true); - - // Export the scene. - lStatus = lExporter->Export(pScene); - - // Destroy the exporter. - lExporter->Destroy(); - - return lStatus; -} - -// to get the filters for the dialog (description + file extention) -const char *GetWriterSFNFilters() -{ - int nbWriters = gSdkManager->GetIOPluginRegistry()->GetWriterFormatCount(); - - FbxString s; - int i=0; - - for(i=0; i < nbWriters; i++) - { - s += gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatDescription(i); - s += "|*."; - s += gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatExtension(i); - s += "|"; - } - - // replace | by \0 - int nbChar = int(strlen(s.Buffer())) + 1; - char *filter = new char[ nbChar ]; - memset(filter, 0, nbChar); - - FBXSDK_strcpy(filter, nbChar, s.Buffer()); - - for(i=0; i < int(strlen(s.Buffer())); i++) - { - if(filter[i] == '|') - { - filter[i] = 0; - } - } - - // the caller must delete this allocated memory - return filter; -} - -// to get a file extention for a WriteFileFormat -const char *GetFileFormatExt( - const int pWriteFileFormat - ) -{ - char *buf = new char[10]; - memset(buf, 0, 10); - - // add a starting point . - buf[0] = '.'; - const char * ext = gSdkManager->GetIOPluginRegistry()-> - GetWriterFormatExtension(pWriteFileFormat); - FBXSDK_strcat(buf, 10, ext); - - // the caller must delete this allocated memory - return buf; -} - -// to get the root node -const FbxNode* GetRootNode() -{ - return gScene->GetRootNode(); -} - -// to get the root node name -const char * GetRootNodeName() -{ - return GetRootNode()->GetName(); -} - -// to get a string from the node name and attribute type -FbxString GetNodeNameAndAttributeTypeName(const FbxNode* pNode) -{ - FbxString s = pNode->GetName(); - - FbxNodeAttribute::EType lAttributeType; - - if(pNode->GetNodeAttribute() == NULL) - { - s += " (No node attribute type)"; - } - else - { - lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType()); - - switch (lAttributeType) - { - case FbxNodeAttribute::eMarker: s += " (Marker)"; break; - case FbxNodeAttribute::eSkeleton: s += " (Skeleton)"; break; - case FbxNodeAttribute::eMesh: s += " (Mesh)"; break; - case FbxNodeAttribute::eCamera: s += " (Camera)"; break; - case FbxNodeAttribute::eLight: s += " (Light)"; break; - case FbxNodeAttribute::eBoundary: s += " (Boundary)"; break; - case FbxNodeAttribute::eOpticalMarker: s += " (Optical marker)"; break; - case FbxNodeAttribute::eOpticalReference: s += " (Optical reference)"; break; - case FbxNodeAttribute::eCameraSwitcher: s += " (Camera switcher)"; break; - case FbxNodeAttribute::eNull: s += " (Null)"; break; - case FbxNodeAttribute::ePatch: s += " (Patch)"; break; - case FbxNodeAttribute::eNurbs: s += " (NURB)"; break; - case FbxNodeAttribute::eNurbsSurface: s += " (Nurbs surface)"; break; - case FbxNodeAttribute::eNurbsCurve: s += " (NURBS curve)"; break; - case FbxNodeAttribute::eTrimNurbsSurface: s += " (Trim nurbs surface)"; break; - case FbxNodeAttribute::eUnknown: s += " (Unidentified)"; break; - } - } - - return s; -} - -// to get a string from the node default translation values -FbxString GetDefaultTranslationInfo( - const FbxNode* pNode - ) -{ - FbxVector4 v4; - v4 = ((FbxNode*)pNode)->LclTranslation.Get(); - - return FbxString("Translation (X,Y,Z): ") + FbxString(v4[0]) + ", " + FbxString(v4[1]) + ", " + FbxString(v4[2]); -} - -// to get a string with info about material, texture, animation -FbxString GetNodeInfo( const FbxNode* pNode ) -{ - FbxString s; - - // check for texture - int lMaterialCount = pNode->GetMaterialCount(); - FbxSurfacePhong* lMaterial = NULL; - bool lTextureExist = false; - if( lMaterialCount > 0) - { - for( int i = 0; i < lMaterialCount; ++i) - { - lMaterial = (FbxSurfacePhong*)pNode->GetMaterial( i); - if( lMaterial->Diffuse.GetSrcObjectCount() > 0) - { - lTextureExist = true; - break; - } - } - } - - if( lTextureExist) s+= "[Texture: Yes] "; - else s+= "[Texture: No] "; - - // check for animation - bool anim = false; - FbxAnimCurveNode* lCurveNode = NULL; - - // check rotation FCurve node - lCurveNode =((FbxNode* )pNode)->LclRotation.GetCurveNode(gAnimLayer); - if(lCurveNode != NULL) anim = true; - - // check Translation FCurve node - lCurveNode = ((FbxNode* )pNode)->LclTranslation.GetCurveNode(gAnimLayer); - if(lCurveNode != NULL) anim = true; - - if(anim == true) - { - s+= "[Animation: Yes] "; - } - else - { - s+= "[Animation: No] "; - } - - return s; -} - -// Create a marker to use a point of interest for the camera. -FbxNode* CreateMarker(FbxScene* pScene, char* pName) -{ - FbxMarker* lMarker = FbxMarker::Create(pScene,pName); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMarker); - - return lNode; -} - -// Create a camera. -FbxNode* CreateCamera(FbxScene* pScene, char* pName) -{ - FbxCamera* lCamera = FbxCamera::Create(pScene,pName); - - // Set camera property for a classic TV projection with aspect ratio 4:3 - lCamera->SetFormat(FbxCamera::eNTSC); - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lCamera); - - return lNode; -} - -// Set target of the camera. -void SetCameraPointOfInterest(FbxNode* pCamera, FbxNode* pPointOfInterest) -{ - // Set the camera to always point at this node. - pCamera->SetTarget(pPointOfInterest); -} - -// Set marker default position. -void SetMarkerDefaultPosition(FbxNode* pMarker) -{ - // The marker is positioned above the origin. There is no rotation and no scaling. - pMarker->LclTranslation.Set(FbxVector4(0.0, 40.0, 0.0)); - pMarker->LclRotation.Set(FbxVector4(0.0, 0.0, 0.0)); - pMarker->LclScaling.Set(FbxVector4(1.0, 1.0, 1.0)); -} - -// Compute the camera position. -void SetCameraDefaultPosition(FbxNode* pCamera) -{ - // set the initial camera position - FbxVector4 lCameraLocation(0.0, 200.0, -100.0); - pCamera->LclTranslation.Set(lCameraLocation); -} - -// The camera move on X and Y axis. -void AnimateCamera(FbxNode* pCamera, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - pCamera->LclTranslation.GetCurveNode(pAnimLayer, true); - - // X translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(20.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 500.0, FbxAnimCurveDef::eInterpolationLinear); - - lCurve->KeyModifyEnd(); - } - - // Y translation. - lCurve = pCamera->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(20.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 800.0, FbxAnimCurveDef::eInterpolationLinear); - - lCurve->KeyModifyEnd(); - } -} - -// The cube rotate on X or Y or Z. -void AnimateCube(FbxNode* pCube, FbxAnimLayer* pAnimLayer, int pRotAxe) -{ - FbxAnimCurve* lCurve = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - pCube->LclRotation.GetCurveNode(pAnimLayer, true); - if(pRotAxe == 0) lCurve = pCube->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - else if(pRotAxe == 1) lCurve = pCube->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - else if(pRotAxe == 2) lCurve = pCube->LclRotation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - - if (lCurve) - { - lCurve->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); - - lTime.SetSecondDouble(20.0); - lKeyIndex = lCurve->KeyAdd(lTime); - lCurve->KeySet(lKeyIndex, lTime, -3500, FbxAnimCurveDef::eInterpolationLinear); - lCurve->KeyModifyEnd(); - } -} - -// Create a cube mesh. -FbxNode* CreateCubeMesh(FbxScene* pScene, char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,pName); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 100, 50); - FbxVector4 lControlPoint3(-50, 100, 50); - FbxVector4 lControlPoint4(-50, 0, -50); - FbxVector4 lControlPoint5(50, 0, -50); - FbxVector4 lControlPoint6(50, 100, -50); - FbxVector4 lControlPoint7(-50, 100, -50); - - FbxVector4 lNormalXPos(1, 0, 0); - FbxVector4 lNormalXNeg(-1, 0, 0); - FbxVector4 lNormalYPos(0, 1, 0); - FbxVector4 lNormalYNeg(0, -1, 0); - FbxVector4 lNormalZPos(0, 0, 1); - FbxVector4 lNormalZNeg(0, 0, -1); - - // Create control points. - lMesh->InitControlPoints(24); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint1; - lControlPoints[5] = lControlPoint5; - lControlPoints[6] = lControlPoint6; - lControlPoints[7] = lControlPoint2; - lControlPoints[8] = lControlPoint5; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint7; - lControlPoints[11] = lControlPoint6; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint0; - lControlPoints[14] = lControlPoint3; - lControlPoints[15] = lControlPoint7; - lControlPoints[16] = lControlPoint3; - lControlPoints[17] = lControlPoint2; - lControlPoints[18] = lControlPoint6; - lControlPoints[19] = lControlPoint7; - lControlPoints[20] = lControlPoint1; - lControlPoints[21] = lControlPoint0; - lControlPoints[22] = lControlPoint4; - lControlPoints[23] = lControlPoint5; - - // We want to have one normal for each vertex (or control point), - // so we set the mapping mode to eByControlPoint. - FbxGeometryElementNormal* lGeometryElementNormal= lMesh->CreateElementNormal(); - - lGeometryElementNormal->SetMappingMode(FbxGeometryElement::eByControlPoint); - - // Set the normal values for every control point. - lGeometryElementNormal->SetReferenceMode(FbxGeometryElement::eDirect); - - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalXPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYPos); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg); - - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - - - // Create UV for Diffuse channel. - FbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV"); - FBX_ASSERT( lUVDiffuseElement != NULL); - lUVDiffuseElement->SetMappingMode(FbxGeometryElement::eByPolygonVertex); - lUVDiffuseElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - FbxVector2 lVectors0(0, 0); - FbxVector2 lVectors1(1, 0); - FbxVector2 lVectors2(1, 1); - FbxVector2 lVectors3(0, 1); - - lUVDiffuseElement->GetDirectArray().Add(lVectors0); - lUVDiffuseElement->GetDirectArray().Add(lVectors1); - lUVDiffuseElement->GetDirectArray().Add(lVectors2); - lUVDiffuseElement->GetDirectArray().Add(lVectors3); - - //Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode - //we must update the size of the index array. - lUVDiffuseElement->GetIndexArray().SetCount(24); - - // Create polygons. Assign texture and texture UV indices. - for(i = 0; i < 6; i++) - { - // all faces of the cube have the same texture - lMesh->BeginPolygon(-1, -1, -1, false); - - for(j = 0; j < 4; j++) - { - // Control point index - lMesh->AddPolygon(lPolygonVertices[i*4 + j]); - - // update the index array of the UVs that map the texture to the face - lUVDiffuseElement->GetIndexArray().SetAt(i*4+j, j); - } - - lMesh->EndPolygon (); - } - - // create a FbxNode - FbxNode* lNode = FbxNode::Create(pScene,pName); - - // set the node attribute - lNode->SetNodeAttribute(lMesh); - - // set the shading mode to view texture - lNode->SetShadingMode(FbxNode::eTextureShading); - - // rescale the cube - lNode->LclScaling.Set(FbxVector4(0.3, 0.3, 0.3)); - - // return the FbxNode - return lNode; -} - -// Create a global texture for cube. -void CreateTexture(FbxScene* pScene) -{ - gTexture = FbxFileTexture::Create(pScene,"Diffuse Texture"); - - // Resource file must be in the application's directory. - FbxString lTexPath = gAppPath ? *gAppPath + "\\Crate.jpg" : ""; - - // Set texture properties. - gTexture->SetFileName(lTexPath.Buffer()); - gTexture->SetTextureUse(FbxTexture::eStandard); - gTexture->SetMappingType(FbxTexture::eUV); - gTexture->SetMaterialUse(FbxFileTexture::eModelMaterial); - gTexture->SetSwapUV(false); - gTexture->SetTranslation(0.0, 0.0); - gTexture->SetScale(1.0, 1.0); - gTexture->SetRotation(0.0, 0.0); -} - - -// Create global material for cube. -void CreateMaterial(FbxScene* pScene) -{ - FbxString lMaterialName = "material"; - FbxString lShadingName = "Phong"; - FbxDouble3 lBlack(0.0, 0.0, 0.0); - FbxDouble3 lRed(1.0, 0.0, 0.0); - FbxDouble3 lDiffuseColor(0.75, 0.75, 0.0); - gMaterial = FbxSurfacePhong::Create(pScene, lMaterialName.Buffer()); - - // Generate primary and secondary colors. - gMaterial->Emissive .Set(lBlack); - gMaterial->Ambient .Set(lRed); - gMaterial->Diffuse .Set(lDiffuseColor); - gMaterial->TransparencyFactor .Set(40.5); - gMaterial->ShadingModel .Set(lShadingName); - gMaterial->Shininess .Set(0.5); - - // the texture need to be connected to the material on the corresponding property - if (gTexture) - gMaterial->Diffuse.ConnectSrcObject(gTexture); -} - -void AddMaterials(FbxMesh* pMesh) -{ - // Set material mapping. - FbxGeometryElementMaterial* lMaterialElement = pMesh->CreateElementMaterial(); - lMaterialElement->SetMappingMode(FbxGeometryElement::eByPolygon); - lMaterialElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); - - //get the node of mesh, add material for it. - FbxNode* lNode = pMesh->GetNode(); - if(lNode == NULL) - return; - lNode->AddMaterial(gMaterial); - - // We are in eByPolygon, so there's only need for 6 index (a cube has 6 polygons). - lMaterialElement->GetIndexArray().SetCount(6); - - // Set the Index 0 to 6 to the material in position 0 of the direct array. - for(int i=0; i<6; ++i) - lMaterialElement->GetIndexArray().SetAt(i,0); -} - -// Reset camera values -void SetInitialCubeData() -{ - gCubeNumber = 1; // Cube Number - gCubeRotationAxis = 1; // Cube Rotation Axis 0==X, 1==Y, 2==Z - gCubeXPos = 0.0; // initial CubXPos - gCubeYPos = 20.0; // initial CubeYPos - gCubeZPos = 0.0; // initial CubeZPos -} diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.h b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.h deleted file mode 100755 index 272159a..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/SDK_Utility.h +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// use the fbxsdk.h -#include - -// to create a basic scene -bool CreateScene(); - -// to save a scene to a FBX file -bool Export( - const char* pFilename, - int pFileFormat - ); - -// to save a scene to a FBX file -bool SaveScene( - FbxManager* pSdkManager, - FbxDocument* pScene, - const char* pFilename, - int pFileFormat, - bool pEmbedMedia - ); - -// to get filters for the dialog (description + file extention) -const char *GetWriterSFNFilters(); - -// to get a file extention for a WriteFileFormat -const char *GetFileFormatExt( - const int pWriteFileFormat - ); - -// to create an instance of the SDK manager -bool InitializeSdkObjects( - FbxManager*& pSdkManager, - FbxScene*& pScene - ); - - -// to destroy an instance of the SDK manager -void DestroySdkObjects( - FbxManager* pSdkManager, - bool pExitStatus - ); - -// to get the root node -const FbxNode* GetRootNode(); - -// to get the root node name -const char * GetRootNodeName(); - -// create a new cube under the root node -void CreateCube(bool pWithTexture, bool pAnimate); - -// remove all cubes from the scene -void RemoveCubes(); - -// to get a string from the node name and attribute type -FbxString GetNodeNameAndAttributeTypeName( - const FbxNode* pNode - ); - -// to get a string from the node default translation values -FbxString GetDefaultTranslationInfo( - const FbxNode* pNode - ); - -// to get a string with info about material, texture, animation -FbxString GetNodeInfo( - const FbxNode* pNode - ); - - -// Create a marker to use a point of interest for the camera. -FbxNode* CreateMarker( - FbxScene* pScene, - char* pName - ); - -// Create a camera -FbxNode* CreateCamera( - FbxScene* pScene, - char* pName - ); - -// Create a cube mesh -FbxNode* CreateCubeMesh( - FbxScene* pScene, - char* pName - ); - -// Create texture -void CreateTexture( - FbxScene* pScene - ); - -// Create material -void CreateMaterial( - FbxScene* pScene - ); - -// Add materials to a mesh -void AddMaterials( - FbxMesh* pMesh - ); - -void SetCameraPointOfInterest( - FbxNode* pCamera, - FbxNode* pPointOfInterest - ); - -void SetMarkerDefaultPosition( - FbxNode* pMarker - ); - -void SetCameraDefaultPosition( - FbxNode* pCamera - ); - -void AnimateCamera( - FbxNode* pCamera, - FbxAnimLayer* pAnimLayer - ); - -void AnimateCube( - FbxNode* pCube, - FbxAnimLayer* pAnimLayer, - int pRotAxe - ); - -void CreateCubeDetailed( - char* pCubeName, - double pX, - double pY, - double pZ, - int pRotateAxe, - bool pWithTexture, - bool pAnim - ); - -void SetInitialCubeData(); diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.cxx b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.cxx deleted file mode 100755 index 6fc2b80..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.cxx +++ /dev/null @@ -1,738 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// UI.cxx : Defines the entry point for the application. - -#include "stdafx.h" -#include // for treeview control - -#include "UI.h" -#include "SDK_Utility.h" - -#define MAX_LOADSTRING 100 - -#define SAVE_TO_BUTTON 1000 -#define SAVE_TO_EDITBOX 1001 -#define ADD_CUBE_BUTTON 1002 -#define REMOVE_CUBES_BUTTON 1003 -#define FBX_TREEVIEW 1004 -#define TEXTURE_CHECKBOX 1005 -#define ANIMATION_CHECKBOX 1006 - -// Global Variables: -HINSTANCE hInst; // current instance -HWND ghWnd = NULL; // main window - -TCHAR szTitle[MAX_LOADSTRING]; // The title bar text -TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name - -char gszOutputFile[_MAX_PATH]; // File name to export -int gWriteFileFormat = -1; // Write file format - -extern FbxManager *gSdkManager; // access to the global SdkManager object -extern FbxScene *gScene; // access to the global scene object - -extern FbxString* gAppPath; // application path - -// Forward declarations of functions included in this code module: -ATOM UIRegisterClass(HINSTANCE hInstance); -BOOL InitInstance(HINSTANCE, int); -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); - -void CreateUIControls(HWND hWndParent); -void GetOutputFileName(HWND hWndParent); - -// used to check if in the filepath the file extention exist -bool ExtExist(const char * filepath, const char * ext); - -// used to get the directory part of a filepath -FbxString GetDirectoryFromFilePath(const char *pFilePath); - -// to save the file selected -void ExportFile(); - -//----------------------------------------------------------- -// treview utility -// used to add a new treeview item -HTREEITEM InsertTreeViewItem(const HWND hTv, const char *txt, HTREEITEM htiParent); - -// used to expand all treeview items -void Expand_All(); -void Expand_All_Recurse(HWND htv, HTREEITEM htvi); - -//----------------------------------------------------------- -// scene nodes utility -// used to display the nodes hierarchy -void DisplayHierarchy(const HWND hTv); -void DisplayHierarchyRecurse(const FbxNode* pNode, HWND hTv, HTREEITEM htiParent); - -// used to add FbxNode attributes parameters -void AddTreeViewItemKFbxNodeParameters(const FbxNode* pNode, HWND hTv, HTREEITEM htiParent); - -// used to fill the treeview with the FBX scene content -void FillTreeView(const HWND mainHwnd); - -static bool gAutoQuit = false; - -//---------------------------------------------------------- -// entry point for the application -int APIENTRY _tWinMain( - HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow - ) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - if( FbxString(lpCmdLine) == "-test" ) gAutoQuit = true; - - MSG msg; - HACCEL hAccelTable; - - // Initialize global strings - LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); - LoadString(hInstance, IDC_UI, szWindowClass, MAX_LOADSTRING); - UIRegisterClass(hInstance); - - // empty our global file name buffer - ZeroMemory(gszOutputFile, sizeof(gszOutputFile) ); - - // Perform application initialization: - if (!InitInstance (hInstance, nCmdShow)) - { - return FALSE; - } - - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_UI)); - - // Main message loop: - while( GetMessage(&msg, NULL, 0, 0) && !gAutoQuit ) - { - if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return (int) msg.wParam; -} - -// -// FUNCTION: UIRegisterClass() -// -// PURPOSE: Registers the window class. -// -ATOM UIRegisterClass( - HINSTANCE hInstance - ) -{ - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UI)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = CreateSolidBrush( GetSysColor(COLOR_3DFACE) ); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_UI); - wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_UI)); - - return RegisterClassEx(&wcex); -} - -// -// FUNCTION: InitInstance(HINSTANCE, int) -// -// PURPOSE: Saves instance handle and creates main window -// -// COMMENTS: -// -// In this function, we save the instance handle in a global variable, -// create and display the main program window. -// -BOOL InitInstance( - HINSTANCE hInstance, - int nCmdShow - ) -{ - hInst = hInstance; // Store instance handle in our global variable - - ghWnd = CreateWindow( - szWindowClass, // LPCTSTR lpClassName - "FBX SDK CubeCreator sample program", // LPCTSTR lpWindowName - WS_OVERLAPPED | WS_SYSMENU, // DWORD dwStyle - 400, // int x - 200, // int Y - 700, // int nWidth - 800, // int nHeight - NULL, // HWND hWndParent - NULL, // HMENU hMenu - hInstance, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - if (!ghWnd) - { - return FALSE; - } - - // Get the path of the application (.exe module) - char szFilePath[_MAX_PATH]; - if( GetModuleFileName(NULL, szFilePath, _MAX_PATH) ) - { - // extract the directory only - gAppPath = new FbxString(); - *gAppPath = GetDirectoryFromFilePath(szFilePath); - } - - ShowWindow(ghWnd, nCmdShow); - UpdateWindow(ghWnd); - - return TRUE; -} - -// -// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) -// -// PURPOSE: Processes messages for the main window. -// -LRESULT CALLBACK WndProc( - HWND hWnd, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - int wmId, wmEvent; - - switch (message) - { - - case WM_CREATE: - { - // Create GUI controls - CreateUIControls(hWnd); - } - break; - - case WM_SHOWWINDOW : - { - if(gSdkManager == NULL) - { - // create a basic scene - CreateScene(); - - // show the scene content in the treeview - FillTreeView( hWnd ); - } - } - break; - - case WM_COMMAND: - - wmId = LOWORD(wParam); - wmEvent = HIWORD(wParam); - - // Parse the menu selections: - switch (wmId) - { - case IDM_ABOUT: - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); - break; - - case IDM_EXIT: - DestroyWindow(hWnd); - break; - - case SAVE_TO_BUTTON: - GetOutputFileName(hWnd); // ask for file name - ExportFile(); // save the file - break; - - case ADD_CUBE_BUTTON: - { - bool lWithTexture = (1 == IsDlgButtonChecked( hWnd, TEXTURE_CHECKBOX )); - bool lWithAnimation = (1 == IsDlgButtonChecked( hWnd, ANIMATION_CHECKBOX )); - - // create a new cube with option selected - CreateCube(lWithTexture, lWithAnimation); - - // show scene content - FillTreeView( hWnd ); - } - break; - - case REMOVE_CUBES_BUTTON: - - // remove all cubes - RemoveCubes(); - - // show scene content - FillTreeView( hWnd ); - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - break; - - case WM_DESTROY: - - // dont forget to delete the SdkManager - // and all objects created by the SDK manager - DestroySdkObjects(gSdkManager, true); - - PostQuitMessage(0); - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; -} - -// Message handler for about box. -INT_PTR CALLBACK About( - HWND hDlg, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - // set the FBX app. icon - HINSTANCE hinst = (HINSTANCE)(LONG_PTR)GetWindowLongPtr(hDlg, GWLP_HINSTANCE); - - - HICON hIconFBX = (HICON) LoadImage( hinst, MAKEINTRESOURCE(IDI_UI), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE); - ::SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIconFBX); - } - return (INT_PTR)TRUE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) - { - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - break; - } - return (INT_PTR)FALSE; -} - -// Create the UI children controls -void CreateUIControls( - HWND hWndParent - ) -{ - DWORD dwStyle = WS_CHILD | WS_VISIBLE; - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Save to ...", // control caption - dwStyle, // DWORD dwStyle - 10, // int x - 10, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) SAVE_TO_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Add cube", // control caption - dwStyle, // DWORD dwStyle - 10, // int x - 710, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) ADD_CUBE_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the checkbox - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Texture", // control caption - dwStyle|BS_AUTOCHECKBOX, // DWORD dwStyle - 150, // int x - 710, // int y - 80, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) TEXTURE_CHECKBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // set checked by default - CheckDlgButton(hWndParent, TEXTURE_CHECKBOX, 1); - - // create the checkbox - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Animation", // control caption - dwStyle|BS_AUTOCHECKBOX, // DWORD dwStyle - 230, // int x - 710, // int y - 90, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) ANIMATION_CHECKBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // set checked by default - CheckDlgButton(hWndParent, ANIMATION_CHECKBOX, 1); - - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Remove cubes", // control caption - dwStyle, // DWORD dwStyle - 555, // int x - 710, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) REMOVE_CUBES_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the edit box - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - "EDIT", // LPCTSTR lpClassName - " <- select a file to save", // control caption - dwStyle|ES_AUTOHSCROLL, // DWORD dwStyle - 150, // int x - 15, // int y - 534, // int nWidth - 20, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) SAVE_TO_EDITBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create a small font - HFONT hf = CreateFont( - 14, // height of font - 6, // average character width - 0, // angle of escapement - 0, // base-line orientation angle - 40, // font weight - 0, // italic attribute option - 0, // underline attribute option - 0, // strikeout attribute option - ANSI_CHARSET, // character set identifier - OUT_DEFAULT_PRECIS, // output precision - CLIP_DEFAULT_PRECIS,// clipping precision - 0, // output quality - 0, // pitch and family - "Arial" // typeface name - ); - - // set the font for the SAVE_TO_EDITBOX - SendMessage(GetDlgItem(hWndParent, SAVE_TO_EDITBOX), WM_SETFONT, (WPARAM) hf, (LPARAM) false ); - - // create the control - dwStyle = dwStyle | TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS; - - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - WC_TREEVIEW, // LPCTSTR lpClassName - "", // control caption - dwStyle, // DWORD dwStyle - 10, // int x - 50, // int y - 674, // int nWidth - 646, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) FBX_TREEVIEW, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); -} - -// show the dialog -void GetOutputFileName( - HWND hWndParent - ) -{ - OPENFILENAME ofn; - ZeroMemory(&ofn, sizeof(ofn)); - - char szFile[_MAX_PATH]; // buffer for file name - ZeroMemory(szFile, sizeof(szFile)); - - // Initialize OPENFILENAME - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = hWndParent; - ofn.lpstrFile = szFile; - ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile); - ofn.nFilterIndex = 1; // *.fbx binairy by default - ofn.lpstrFileTitle = NULL; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = NULL; - ofn.lpstrTitle = "Select the file to export to ... (use the file type filter)"; - ofn.Flags = OFN_EXPLORER | OFN_OVERWRITEPROMPT; - - // get a description of all writers registered in the FBX SDK - const char *filter = GetWriterSFNFilters(); - ofn.lpstrFilter = filter; - - // Display the save as dialog box. - if(GetSaveFileName(&ofn) == false) - { - ZeroMemory(gszOutputFile, sizeof(gszOutputFile) ); - - // User cancel ... - delete filter; - return; - } - - delete filter; - - // keep the selected file format writer - // ofn.nFilterIndex is not 0 based but start at 1, the FBX SDK file format enum start at 0 - gWriteFileFormat = ofn.nFilterIndex - 1; - - // get the extention string from the file format selected by the user - const char * ext = GetFileFormatExt( gWriteFileFormat ); - - // check for file extention - if(ExtExist(szFile, ext) == false) - { - // add the selected file extention - FBXSDK_strcat(szFile, _MAX_PATH, ext); - } - - delete ext; - - // show the file name selected with the extention - SetWindowText( GetDlgItem(hWndParent, SAVE_TO_EDITBOX), szFile); - - // Keep a copy of the file name - FBXSDK_strcpy(gszOutputFile, _MAX_PATH, szFile); -} - -// to save the file selected -void ExportFile() -{ - if(strlen(gszOutputFile) == 0) return; - - Export(gszOutputFile, gWriteFileFormat); -} - -// check if in the filepath the file extention exist -bool ExtExist( - const char * filepath, - const char * ext - ) -{ - int iExtLen = (int)strlen(ext); - int ifpLen = (int)strlen(filepath); - - if( ifpLen < iExtLen) return false; - - int x = ifpLen - iExtLen; - - for(int i=0; i < iExtLen; i++) - { - if(filepath[x] != ext[i] ) return false; - x++; - } - - return true; -} - -// extract the directory from a file path -FbxString GetDirectoryFromFilePath( const char *pFilePath ) -{ - char PathName[1024]; - char* PathNamePtr; - - FBX_ASSERT( pFilePath ); - FBX_ASSERT( strlen( pFilePath ) < 1024 ); - - FBXSDK_strcpy(PathName,1024,pFilePath); - PathNamePtr=strrchr(PathName,'/'); - - if (!PathNamePtr) { - PathNamePtr=strrchr(PathName,'\\'); - } - - if (PathNamePtr) { - (*PathNamePtr) = '\0'; - } - else - { - PathName[0] = 0; - } - - return FbxString(PathName); -} - -// used to add a new treeview item -HTREEITEM InsertTreeViewItem( - const HWND hTv, - const char *txt, - HTREEITEM htiParent - ) -{ - TVITEM tvi = {0}; - tvi.mask = TVIF_TEXT|TVIF_PARAM; // text + param only - tvi.pszText = (LPSTR)txt; // caption - tvi.cchTextMax = static_cast(strlen(txt)); // length of item label - - TVINSERTSTRUCT tvis = {0}; - tvis.item = tvi; - tvis.hInsertAfter = 0; - tvis.hParent = htiParent; // parent item of item to be inserted - - return reinterpret_cast( SendMessage(hTv, TVM_INSERTITEM, 0, reinterpret_cast(&tvis)) ); -} - -// used to expand all treeview nodes -void Expand_All() -{ - // get the handle of the treeview - HWND htv = GetDlgItem(ghWnd, FBX_TREEVIEW); - if(htv == NULL) return; - - Expand_All_Recurse(htv, TreeView_GetRoot(htv)); - - // force the root node visible on expand - TreeView_SelectSetFirstVisible(htv, TreeView_GetRoot(htv) ); -} - -// used to expand all treeview items recursively -void Expand_All_Recurse( - HWND htv, - HTREEITEM htvi - ) -{ - if(htvi == NULL) return; - - TreeView_Expand(htv, htvi, TVE_EXPAND); - - while(htvi) - { - // expand all children - htvi = TreeView_GetChild(htv, htvi); - Expand_All_Recurse(htv, htvi); - - // expand all siblings - while(htvi) - { - htvi = TreeView_GetNextSibling(htv, htvi); - Expand_All_Recurse(htv, htvi); - } - } -} - -// used to add the rootNode name and start to add children nodes -void DisplayHierarchy( - const HWND hTv - ) -{ - HTREEITEM htvi = InsertTreeViewItem(hTv, GetRootNodeName(), TVI_ROOT); - - for(int i = 0; i < GetRootNode()->GetChildCount(); i++) - { - DisplayHierarchyRecurse(GetRootNode()->GetChild(i), hTv, htvi); - } -} - -// used to recursively add children nodes -void DisplayHierarchyRecurse( - const FbxNode* pNode, - const HWND hTv, - HTREEITEM htiParent - ) -{ - // create a new Treeview item with node name and Attribute type name - HTREEITEM htvi = InsertTreeViewItem(hTv, GetNodeNameAndAttributeTypeName(pNode).Buffer(), htiParent); - - // show some FbxNode parameters - AddTreeViewItemKFbxNodeParameters(pNode, hTv, htvi); - - for(int i = 0; i < pNode->GetChildCount(); i++) - { - // recursively call this - DisplayHierarchyRecurse(pNode->GetChild(i), hTv, htvi); - } -} - -// used to add FbxNode parameters -void AddTreeViewItemKFbxNodeParameters( - const FbxNode* pNode, - HWND hTv, - HTREEITEM htiParent - ) -{ - if(pNode == NULL) return; - - // show node default translation - InsertTreeViewItem(hTv, GetDefaultTranslationInfo(pNode).Buffer(), htiParent); - - // show if a material, texture or animation is in the node - InsertTreeViewItem(hTv, GetNodeInfo(pNode).Buffer(), htiParent); -} - - -// fill the treeview with the FBX scene content -void FillTreeView( - const HWND mainHwnd - ) -{ - // get the handle of the treeview - HWND htv = GetDlgItem(mainHwnd, FBX_TREEVIEW); - if(htv == NULL) return; - - // clear the treeview content - TreeView_DeleteAllItems(htv); - - // display scene hierarchy - DisplayHierarchy(htv); - - // expand all items of the treeview - Expand_All(); - - // force the root node visible - TreeView_SelectSetFirstVisible(htv, TreeView_GetRoot(htv) ); -} diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.h b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.h deleted file mode 100755 index 2036b08..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.h +++ /dev/null @@ -1,14 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#pragma once - -#include "resource.h" diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.ico b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.ico deleted file mode 100755 index 3bb0a4b..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.ico and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.rc b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.rc deleted file mode 100755 index 50e7853..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/UI.rc +++ /dev/null @@ -1,169 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_UI ICON "UI.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDC_UI MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "E&xit", IDM_EXIT - END - POPUP "&Help" - BEGIN - MENUITEM "&About ...", IDM_ABOUT - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDC_UI ACCELERATORS -BEGIN - "?", IDM_ABOUT, ASCII, ALT - "/", IDM_ABOUT, ASCII, ALT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOGEX 22, 17, 273, 86 -STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About" -FONT 8, "System", 0, 0, 0x0 -BEGIN - LTEXT "© 2009 Autodesk, Inc. All rights reserved.",IDC_STATIC,3,72,216,8,SS_NOPREFIX - DEFPUSHBUTTON "OK",IDOK,231,70,39,13,WS_GROUP - CONTROL 129,IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,0,0,275,66 -END - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ABOUTBOX, DIALOG - BEGIN - BOTTOMMARGIN, 83 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_APP_TITLE "UI" - IDC_UI "UI" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (Canada) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP1 BITMAP "FBX_banner_545x132_SDK.bmp" -#endif // English (Canada) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/resource.h b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/resource.h deleted file mode 100755 index 22cc70c..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/resource.h +++ /dev/null @@ -1,27 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by UI.rc -// -#define IDC_MYICON 2 -#define IDD_UI_DIALOG 102 -#define IDS_APP_TITLE 103 -#define IDD_ABOUTBOX 103 -#define IDM_ABOUT 104 -#define IDM_EXIT 105 -#define IDI_UI 107 -#define IDC_UI 109 -#define IDR_MAINFRAME 128 -#define IDB_BITMAP1 129 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 130 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif diff --git a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/stdafx.h b/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/stdafx.h deleted file mode 100755 index 9d1507d..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/CubeCreator/stdafx.h +++ /dev/null @@ -1,38 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -// Do not define WIN32_LEAN_AND_MEAN to use OPENFILENAME structure -// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -// C RunTime Header Files -#include -#include -#include -#include - - -// TODO: reference additional headers your program requires here diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/CMakeLists.txt b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/CMakeLists.txt deleted file mode 100755 index 815cf9a..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") -IF(NOT WIN32) - MESSAGE(SEND_ERROR "This sample can only compile on Windows platform.") - RETURN() -ENDIF() - -FBX_PROJECT(UI_Example_ImportExport .) -SET(FBX_TARGET_SOURCE - "../Common/ImportExport.cxx" - "../Common/ImportExport.h" - "../SceneTreeView/UI.ico" - "../SceneTreeView/UI.rc" - "resource.h" - "stdafx.h" - "UI.cxx" - "UI.h" -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - WIN32 #sets the application subsystem to Windows Application instead of Console - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/FBX_banner_545x132_SDK.bmp b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/FBX_banner_545x132_SDK.bmp deleted file mode 100755 index 4d76036..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/FBX_banner_545x132_SDK.bmp and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.cxx b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.cxx deleted file mode 100755 index 65046be..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.cxx +++ /dev/null @@ -1,617 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// UI.cxx : Defines the entry point for the application. -#include "stdafx.h" - -#include "UI.h" - -// FBXSDK calls are done in ImportExport.cxx -#include "../Common/ImportExport.h" - -#define MAX_LOADSTRING 100 - -#define IMPORT_FROM_BUTTON 1000 -#define EXPORT_TO_BUTTON 1001 -#define EXECUTE_BUTTON 1002 - -#define IMPORT_FROM_EDITBOX 1003 -#define EXPORT_TO_EDITBOX 1004 -#define EXECUTE_STATUS 1005 - -// Global Variables: -HINSTANCE hInst; // current instance -HWND ghWnd = NULL; // main window - -TCHAR szTitle[MAX_LOADSTRING]; // The title bar text -TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name - -char gszInputFile[_MAX_PATH]; // File name to import -char gszOutputFile[_MAX_PATH]; // File name to export -int gWriteFileFormat = -1; // Write file format - - -extern FbxManager *gSdkManager; // access to the global SdkManager object - -// Forward declarations of functions included in this code module: -ATOM UIRegisterClass(HINSTANCE hInstance); -BOOL InitInstance(HINSTANCE, int); -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); - -void CreateUIControls(HWND hWndParent); -void GetInputFileName(HWND hWndParent); -void GetOutputFileName(HWND hWndParent); -void ExecuteImportExport(HWND hWndParent); - -// used to show messages from the ImportExport.cxx file -void UI_Printf(const char* msg, ...); - -// used to check if in the filepath the file extention exist -bool ExtExist(const char * filepath, const char * ext); - -static bool gAutoQuit = false; - -// entry point for the application -int APIENTRY _tWinMain( - HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow - ) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - if( FbxString(lpCmdLine) == "-test" ) gAutoQuit = true; - - MSG msg; - HACCEL hAccelTable; - - // Initialize global strings - LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); - LoadString(hInstance, IDC_UI, szWindowClass, MAX_LOADSTRING); - UIRegisterClass(hInstance); - - // empty our global file name buffer - ZeroMemory(gszInputFile, sizeof(gszInputFile) ); - ZeroMemory(gszOutputFile, sizeof(gszOutputFile) ); - - // Perform application initialization: - if (!InitInstance (hInstance, nCmdShow)) - { - return FALSE; - } - - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_UI)); - - // Main message loop: - while( GetMessage(&msg, NULL, 0, 0) && !gAutoQuit ) - { - if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return (int) msg.wParam; -} - -// -// FUNCTION: UIRegisterClass() -// -// PURPOSE: Registers the window class. -// -ATOM UIRegisterClass( - HINSTANCE hInstance - ) -{ - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UI)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = CreateSolidBrush( GetSysColor(COLOR_3DFACE) ); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_UI); - wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_UI)); - - return RegisterClassEx(&wcex); -} - -// -// FUNCTION: InitInstance(HINSTANCE, int) -// -// PURPOSE: Saves instance handle and creates main window -// -// COMMENTS: -// -// In this function, we save the instance handle in a global variable, -// create and display the main program window. -// -BOOL InitInstance( - HINSTANCE hInstance, - int nCmdShow - ) -{ - hInst = hInstance; // Store instance handle in our global variable - - ghWnd = CreateWindow( - szWindowClass, // LPCTSTR lpClassName - "FBX SDK UI Import/Export example", // LPCTSTR caption - WS_OVERLAPPED | WS_SYSMENU, // DWORD dwStyle - 400, // int x - 200, // int Y - 700, // int nWidth - 455, // int nHeight - NULL, // HWND hWndParent - NULL, // HMENU hMenu - hInstance, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - if (!ghWnd) - { - return FALSE; - } - - ShowWindow(ghWnd, nCmdShow); - UpdateWindow(ghWnd); - - return TRUE; -} - -// -// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) -// -// PURPOSE: Processes messages for the main window. -// -LRESULT CALLBACK WndProc( - HWND hWnd, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - int wmId, wmEvent; - - switch (message) - { - - case WM_CREATE: - { - CreateUIControls(hWnd); - - InitializeSdkManager(); - } - break; - - case WM_COMMAND: - - wmId = LOWORD(wParam); - wmEvent = HIWORD(wParam); - - // Parse the menu selections: - switch (wmId) - { - case IDM_ABOUT: - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); - break; - - case IDM_EXIT: - DestroyWindow(hWnd); - break; - - case IMPORT_FROM_BUTTON: - GetInputFileName(hWnd); - break; - - case EXPORT_TO_BUTTON: - GetOutputFileName(hWnd); - break; - - case EXECUTE_BUTTON: - ExecuteImportExport(hWnd); - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - break; - - case WM_DESTROY: - - // dont forget to delete the SdkManager - // and all objects created by the SDK manager - DestroySdkObjects(gSdkManager, true); - - - PostQuitMessage(0); - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; -} - -// Message handler for about box. -INT_PTR CALLBACK About( - HWND hDlg, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - // set the FBX app. icon - HINSTANCE hinst = (HINSTANCE)(LONG_PTR)GetWindowLongPtr(hDlg, GWLP_HINSTANCE); - - HICON hIconFBX = (HICON) LoadImage( hinst, MAKEINTRESOURCE(IDI_UI), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE); - ::SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIconFBX); - } - - return (INT_PTR)TRUE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) - { - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - break; - } - return (INT_PTR)FALSE; -} - - -// Create the UI childs controls -void CreateUIControls( - HWND hWndParent - ) -{ - DWORD dwStyle = WS_CHILD | WS_VISIBLE; - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Import from ...", // LPCTSTR lpWindowName / control caption - dwStyle, // DWORD dwStyle - 10, // int x - 10, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) IMPORT_FROM_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Export to ...", // LPCTSTR lpWindowName / control caption - dwStyle, // DWORD dwStyle - 10, // int x - 50, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) EXPORT_TO_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Execute", // LPCTSTR lpWindowName / control caption - dwStyle, // DWORD dwStyle - 10, // int x - 90, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) EXECUTE_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the edit box - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - "EDIT", // LPCTSTR lpClassName - " <- select a file to import", // LPCTSTR lpWindowName / control caption - dwStyle|ES_AUTOHSCROLL, // DWORD dwStyle - 150, // int x - 15, // int y - 530, // int nWidth - 20, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) IMPORT_FROM_EDITBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the edit box - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - "EDIT", // LPCTSTR lpClassName - " <- select a filename to export", // LPCTSTR lpWindowName / control caption - dwStyle|ES_AUTOHSCROLL, // DWORD dwStyle - 150, // int x - 55, // int y - 530, // int nWidth - 20, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) EXPORT_TO_EDITBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the edit box - DWORD dwStyle_Edit = ES_AUTOHSCROLL | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL; - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - "EDIT", // LPCTSTR lpClassName - "", // LPCTSTR lpWindowName / control caption - dwStyle | dwStyle_Edit, // DWORD dwStyle - 150, // int x - 90, // int y - 530, // int nWidth - 300, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) EXECUTE_STATUS, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); -} - -// show the dialog -void GetInputFileName( - HWND hWndParent - ) -{ - OPENFILENAME ofn; - ZeroMemory(&ofn, sizeof(ofn)); - - char szFile[_MAX_PATH]; // buffer for file name - ZeroMemory(szFile, sizeof(szFile)); - - // Initialize OPENFILENAME - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = hWndParent; - ofn.lpstrFile = szFile; - ofn.nMaxFile = sizeof(szFile); - ofn.nFilterIndex = 1; - ofn.lpstrFileTitle = NULL; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = NULL; - ofn.lpstrTitle = "Select the file to import from ... (use the file type filter)"; - ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; - - // get a description of all readers registered in the FBX SDK - const char *filter = GetReaderOFNFilters(); - ofn.lpstrFilter = filter; - - // Display the Open dialog box. - if(GetOpenFileName(&ofn) == false) - { - // user cancel - delete filter; - return; - } - - delete filter; - - // show the file name selected - SetWindowText( GetDlgItem(hWndParent, IMPORT_FROM_EDITBOX), szFile ); - - // Keep a copy of the file name - FBXSDK_strcpy(gszInputFile, _MAX_PATH, szFile); -} - -// show the dialog -void GetOutputFileName( - HWND hWndParent - ) -{ - OPENFILENAME ofn; - ZeroMemory(&ofn, sizeof(ofn)); - - char szFile[_MAX_PATH]; // buffer for file name - ZeroMemory(szFile, sizeof(szFile)); - - // Initialize OPENFILENAME - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = hWndParent; - ofn.lpstrFile = szFile; - ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile); - ofn.nFilterIndex = 1; // *.fbx binairy by default - ofn.lpstrFileTitle = NULL; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = NULL; - ofn.lpstrTitle = "Select the file to export to ... (use the file type filter)"; - ofn.Flags = OFN_EXPLORER | OFN_OVERWRITEPROMPT; - - // get a description of all writers registered in the FBX SDK - const char *filter = GetWriterSFNFilters(); - ofn.lpstrFilter = filter; - - // Display the save as dialog box. - if(GetSaveFileName(&ofn) == false) - { - // User cancel ... - delete filter; - return; - } - - delete filter; - - // keep the selected file format writer - // ofn.nFilterIndex is not 0 based but start at 1, the FBX SDK file format enum start at 0 - gWriteFileFormat = ofn.nFilterIndex - 1; - - // get the extention string from the file format selected by the user - const char * ext = GetFileFormatExt( gWriteFileFormat ); - - // check for file extention - if(ExtExist(szFile, ext) == false) - { - // add the selected file extention - FBXSDK_strcat(szFile, _MAX_PATH, ext); - } - - delete ext; - - // show the file name selected with the extention - SetWindowText( GetDlgItem(hWndParent, EXPORT_TO_EDITBOX), szFile); - - // Keep a copy of the file name - FBXSDK_strcpy(gszOutputFile, _MAX_PATH, szFile); -} - -// make the Import/Export -void ExecuteImportExport( - HWND hWndParent - ) -{ - // empty the execute status editbox - SetWindowText( GetDlgItem(ghWnd, EXECUTE_STATUS) , ""); - - if(strlen(gszInputFile) == 0) - { - UI_Printf("Error: No import file name selected."); - return; - } - - if(strlen(gszOutputFile) == 0) - { - UI_Printf("Error: No export file name selected."); - return; - } - - // get last changes from user - GetWindowText( GetDlgItem(hWndParent, IMPORT_FROM_EDITBOX), gszInputFile , _MAX_PATH); - GetWindowText( GetDlgItem(hWndParent, EXPORT_TO_EDITBOX), gszOutputFile, _MAX_PATH); - - // check if the file to import still exist - if(FbxFileUtils::Exist(gszInputFile) == false) - { - UI_Printf("Error: Import file not found."); - return; - } - - // show a wait cursor - HCURSOR oldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); - - // OK now we have valid files names - // call the ImportExport function from ImportExport.cxx - ImportExport(gszInputFile, gszOutputFile, gWriteFileFormat); - - // reset to default cursor - SetCursor(oldCursor); -} - -// call this to add a message to the EXECUTE_STATUS edit box -// same variable arguments list as function printf() -void UI_Printf( - const char* pMsg, - ... - ) -{ - if(ghWnd == NULL) return; - - // build the pMsg with variable arguments - char msg[2048]; - va_list Arguments; - va_start( Arguments, pMsg); // Initialize variable arguments. - FBXSDK_vsprintf( msg, 2048, pMsg, Arguments ); - va_end( Arguments ); // Reset variable arguments. - - // get the HWND of the editbox - HWND hWndStatus = GetDlgItem(ghWnd, EXECUTE_STATUS); - - // append \r\n to the msg to print on a new line - int msglen = int(strlen(msg)); - if(msglen < 1) return; - msglen = msglen + int(strlen("\r\n")) + 1; - - char* msgrn = (char*)GlobalAlloc(GPTR, msglen); - memset(msgrn, 0, msglen); - FBXSDK_strcat(msgrn, msglen, msg); - FBXSDK_strcat(msgrn, msglen, "\r\n"); - //---------- - - // append the new message to the end - int len = GetWindowTextLength(hWndStatus); - if(len > 0) - { - // get the Editbox text content - char* buf = (char*)GlobalAlloc(GPTR, len + 1); - GetDlgItemText(ghWnd, EXECUTE_STATUS, buf, len + 1); - - // append the new text - msglen = int(strlen(msgrn)) + len + 1; - char* s = (char*)GlobalAlloc(GPTR, msglen); - memset(s, 0, msglen); - FBXSDK_strcat(s, msglen, buf); - FBXSDK_strcat(s, msglen, msgrn); - - // set the new text - SetWindowText( hWndStatus , s); - - GlobalFree((HANDLE)buf); - GlobalFree((HANDLE)s); - } - else - { - SetWindowText( hWndStatus , msgrn); - } - - GlobalFree((HANDLE)msgrn); - - // scroll to bottom - SendMessage( hWndStatus, (UINT) EM_SCROLL, SB_BOTTOM, (LPARAM) 0 ); -} - -// check if in the filepath the file extention exist -bool ExtExist( - const char * filepath, - const char * ext - ) -{ - int iExtLen = (int)strlen(ext); - int ifpLen = (int)strlen(filepath); - - if( ifpLen < iExtLen) return false; - - int x = ifpLen - iExtLen; - - for(int i=0; i < iExtLen; i++) - { - if(filepath[x] != ext[i] ) return false; - x++; - } - - return true; -} diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.h b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.h deleted file mode 100755 index 2036b08..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.h +++ /dev/null @@ -1,14 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#pragma once - -#include "resource.h" diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.ico b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.ico deleted file mode 100755 index 3bb0a4b..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.ico and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.rc b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.rc deleted file mode 100755 index 49b1adf..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/UI.rc +++ /dev/null @@ -1,153 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_UI ICON "UI.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDC_UI MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "E&xit", IDM_EXIT - END - POPUP "&Help" - BEGIN - MENUITEM "&About ...", IDM_ABOUT - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDC_UI ACCELERATORS -BEGIN - "?", IDM_ABOUT, ASCII, ALT - "/", IDM_ABOUT, ASCII, ALT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOGEX 22, 17, 273, 83 -STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About" -FONT 8, "System", 0, 0, 0x0 -BEGIN - LTEXT "© 2009 Autodesk, Inc. All rights reserved.",IDC_STATIC,3,72,195,8,SS_NOPREFIX - DEFPUSHBUTTON "OK",IDOK,232,68,39,13,WS_GROUP - CONTROL 129,IDC_STATIC,"Static",SS_BITMAP,0,0,273,66 -END - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_APP_TITLE "UI" - IDC_UI "UI" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (Canada) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP1 BITMAP "FBX_banner_545x132_SDK.bmp" -#endif // English (Canada) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/resource.h b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/resource.h deleted file mode 100755 index 22cc70c..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/resource.h +++ /dev/null @@ -1,27 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by UI.rc -// -#define IDC_MYICON 2 -#define IDD_UI_DIALOG 102 -#define IDS_APP_TITLE 103 -#define IDD_ABOUTBOX 103 -#define IDM_ABOUT 104 -#define IDM_EXIT 105 -#define IDI_UI 107 -#define IDC_UI 109 -#define IDR_MAINFRAME 128 -#define IDB_BITMAP1 129 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 130 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif diff --git a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/stdafx.h b/sdk/Windows/2019.2/samples/UI Examples/ImportExport/stdafx.h deleted file mode 100755 index 9d1507d..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/ImportExport/stdafx.h +++ /dev/null @@ -1,38 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -// Do not define WIN32_LEAN_AND_MEAN to use OPENFILENAME structure -// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -// C RunTime Header Files -#include -#include -#include -#include - - -// TODO: reference additional headers your program requires here diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/CMakeLists.txt b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/CMakeLists.txt deleted file mode 100755 index a96b86b..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") -IF(NOT WIN32) - MESSAGE(SEND_ERROR "This sample can only compile on Windows platform.") - RETURN() -ENDIF() - -FBX_PROJECT(UI_Example_SceneTreeView .) -SET(FBX_TARGET_SOURCE - "resource.h" - "SDK_Utility.cxx" - "SDK_Utility.h" - "stdafx.h" - "UI.cxx" - "UI.h" - "UI.ico" - "UI.rc" -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - WIN32 #sets the application subsystem to Windows Application instead of Console - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() \ No newline at end of file diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/FBX_banner_545x132_SDK.bmp b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/FBX_banner_545x132_SDK.bmp deleted file mode 100755 index 4d76036..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/FBX_banner_545x132_SDK.bmp and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.cxx b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.cxx deleted file mode 100755 index cee8865..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.cxx +++ /dev/null @@ -1,210 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SDK_Utility.h" - -#ifdef IOS_REF - #undef IOS_REF - #define IOS_REF (*(pSdkManager->GetIOSettings())) -#endif - - -// declare global -FbxManager* gSdkManager = NULL; -FbxScene* gScene = NULL; - -bool LoadFBXScene( - const char *pFbxFilePath - ) -{ - // Load the scene. - if( LoadScene(gSdkManager, gScene, pFbxFilePath ) == false ) return false; - - return true; -} - -// Creates an instance of the SDK manager -// and use the SDK manager to create a new scene -void InitializeSdkManagerAndScene() -{ - // Create the FBX SDK memory manager object. - // The SDK Manager allocates and frees memory - // for almost all the classes in the SDK. - gSdkManager = FbxManager::Create(); - - // create an IOSettings object - FbxIOSettings * ios = FbxIOSettings::Create(gSdkManager, IOSROOT ); - gSdkManager->SetIOSettings(ios); - - gScene = FbxScene::Create(gSdkManager,""); -} - -// to destroy an instance of the SDK manager -void DestroySdkObjects( - FbxManager* pSdkManager, - bool pExitStatus - ) -{ - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - if( pSdkManager ) pSdkManager->Destroy(); - if( pExitStatus ) FBXSDK_printf("Program Success!\n"); -} - -// to get the filters for the dialog (description + file extention) -const char *GetReaderOFNFilters() -{ - int nbReaders = gSdkManager->GetIOPluginRegistry()->GetReaderFormatCount();; - - FbxString s; - int i = 0; - - for(i=0; i < nbReaders; i++) - { - s += gSdkManager->GetIOPluginRegistry()->GetReaderFormatDescription(i); - s += "|*."; - s += gSdkManager->GetIOPluginRegistry()->GetReaderFormatExtension(i); - s += "|"; - } - - // replace | by \0 - int nbChar = int(strlen(s.Buffer())) + 1; - char *filter = new char[ nbChar ]; - memset(filter, 0, nbChar); - - FBXSDK_strcpy(filter, nbChar, s.Buffer()); - - for(i=0; i < int(strlen(s.Buffer())); i++) - { - if(filter[i] == '|') - { - filter[i] = 0; - } - } - - // the caller must delete this allocated memory - return filter; -} - -// to read a file using an FBXSDK reader -bool LoadScene( - FbxManager *pSdkManager, - FbxScene *pScene, - const char *pFbxFilePath - ) -{ - bool lStatus; - - // Create an importer. - FbxImporter* lImporter = FbxImporter::Create(pSdkManager,""); - - // Initialize the importer by providing a filename. - bool lImportStatus = lImporter->Initialize(pFbxFilePath, -1, pSdkManager->GetIOSettings() ); - - if( !lImportStatus ) - { - // Destroy the importer - lImporter->Destroy(); - return false; - } - - if (lImporter->IsFBX()) - { - // Set the import states. By default, the import states are always set to - // true. The code below shows how to change these states. - IOS_REF.SetBoolProp(IMP_FBX_MATERIAL, true); - IOS_REF.SetBoolProp(IMP_FBX_TEXTURE, true); - IOS_REF.SetBoolProp(IMP_FBX_LINK, true); - IOS_REF.SetBoolProp(IMP_FBX_SHAPE, true); - IOS_REF.SetBoolProp(IMP_FBX_GOBO, true); - IOS_REF.SetBoolProp(IMP_FBX_ANIMATION, true); - IOS_REF.SetBoolProp(IMP_FBX_GLOBAL_SETTINGS, true); - } - - // Import the scene - lStatus = lImporter->Import(pScene); - - // Destroy the importer - lImporter->Destroy(); - - return lStatus; -} - -// to get the root node -const FbxNode* GetRootNode() -{ - return gScene->GetRootNode(); -} - -// to get the root node name -const char * GetRootNodeName() -{ - return GetRootNode()->GetName(); -} - -// to get a string from the node name and attribute type -FbxString GetNodeNameAndAttributeTypeName(const FbxNode* pNode) -{ - FbxString s = pNode->GetName(); - - FbxNodeAttribute::EType lAttributeType; - - if(pNode->GetNodeAttribute() == NULL) - { - s += " (No node attribute type)"; - } - else - { - lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType()); - - switch (lAttributeType) - { - case FbxNodeAttribute::eMarker: s += " (Marker)"; break; - case FbxNodeAttribute::eSkeleton: s += " (Skeleton)"; break; - case FbxNodeAttribute::eMesh: s += " (Mesh)"; break; - case FbxNodeAttribute::eCamera: s += " (Camera)"; break; - case FbxNodeAttribute::eLight: s += " (Light)"; break; - case FbxNodeAttribute::eBoundary: s += " (Boundary)"; break; - case FbxNodeAttribute::eOpticalMarker: s += " (Optical marker)"; break; - case FbxNodeAttribute::eOpticalReference: s += " (Optical reference)"; break; - case FbxNodeAttribute::eCameraSwitcher: s += " (Camera switcher)"; break; - case FbxNodeAttribute::eNull: s += " (Null)"; break; - case FbxNodeAttribute::ePatch: s += " (Patch)"; break; - case FbxNodeAttribute::eNurbs: s += " (NURB)"; break; - case FbxNodeAttribute::eNurbsSurface: s += " (Nurbs surface)"; break; - case FbxNodeAttribute::eNurbsCurve: s += " (NURBS curve)"; break; - case FbxNodeAttribute::eTrimNurbsSurface: s += " (Trim nurbs surface)"; break; - case FbxNodeAttribute::eUnknown: s += " (Unidentified)"; break; - } - } - - return s; -} - -// to get a string from the node default translation values -FbxString GetDefaultTranslationInfo( - const FbxNode* pNode - ) -{ - FbxVector4 v4; - v4 = ((FbxNode*)pNode)->LclTranslation.Get(); - - return FbxString("Translation (X,Y,Z): ") + FbxString(v4[0]) + ", " + FbxString(v4[1]) + ", " + FbxString(v4[2]); -} - -// to get a string from the node visibility value -FbxString GetNodeVisibility( - const FbxNode* pNode - ) -{ - return FbxString("Visibility: ") + (pNode->GetVisibility() ? "Yes":"No"); -} diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.h b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.h deleted file mode 100755 index 01af92d..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/SDK_Utility.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// use the fbxsdk.h -#include - -// to build a scene from an FBX file -bool LoadFBXScene( - const char *pFbxFilePath - ); - -// to read a file using an FBX SDK reader -bool LoadScene( - FbxManager *pSdkManager, - FbxScene *pScene, - const char *pFbxFilePath - ); - - -// to create a SDK manager and a new scene -void InitializeSdkManagerAndScene(); - -// to get the filters for the dialog (description + file extention) -const char *GetReaderOFNFilters(); - - - -// to destroy an instance of the SDK manager -void DestroySdkObjects( - FbxManager* pSdkManager, - bool pExitStatus - ); - -// to get the root node -const FbxNode* GetRootNode(); - -// to get the root node name -const char * GetRootNodeName(); - -// to get a string from the node name and attribute type -FbxString GetNodeNameAndAttributeTypeName( - const FbxNode* pNode - ); - -// to get a string from the node default translation values -FbxString GetDefaultTranslationInfo( - const FbxNode* pNode - ); - -// to get a string from the node visibility value -FbxString GetNodeVisibility( - const FbxNode* pNode - ); - - - - diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.cxx b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.cxx deleted file mode 100755 index 42e5a7d..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.cxx +++ /dev/null @@ -1,548 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -// UI.cxx : Defines the entry point for the application. -#include "stdafx.h" -#include // for treeview control - -#include "UI.h" -#include "SDK_Utility.h" - -#define MAX_LOADSTRING 100 - -#define READ_FROM_BUTTON 1000 -#define READ_FROM_EDITBOX 1001 -#define FBX_TREEVIEW 1002 - -// Global Variables: -HINSTANCE hInst; // current instance -HWND ghWnd = NULL; // main window - -TCHAR szTitle[MAX_LOADSTRING]; // The title bar text -TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name - -char gszInputFile[_MAX_PATH]; // File name to import - -extern FbxManager *gSdkManager; // access to the global SdkManager object -extern FbxScene *gScene; // access to the global scene object - -// Forward declarations of functions included in this code module: -ATOM UIRegisterClass(HINSTANCE hInstance); -BOOL InitInstance(HINSTANCE, int); -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); - -void CreateUIControls(HWND hWndParent); -void GetInputFileName(HWND hWndParent); - -//----------------------------------------------------------- -// treview utility -// used to add a new treeview item -HTREEITEM InsertTreeViewItem(const HWND hTv, const char *txt, HTREEITEM htiParent); - -// used to expand all treeview items -void Expand_All(); -void Expand_All_Recurse(HWND htv, HTREEITEM htvi); - -//----------------------------------------------------------- -// scene nodes utility -// used to display the nodes hierarchy -void DisplayHierarchy(const HWND hTv); -void DisplayHierarchy_Recurse(const FbxNode* pNode, HWND hTv, HTREEITEM htiParent); - -// used to add FbxNode attributes parameters -void Add_TreeViewItem_KFbxNode_Parameters(const FbxNode* pNode, HWND hTv, HTREEITEM htiParent); - -// used to fill the treeview with the FBX scene content -void Fill_TreeView(const HWND mainHwnd); - -static bool gAutoQuit = false; - -//---------------------------------------------------------- -// entry point for the application -int APIENTRY _tWinMain( - HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow - ) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - if( FbxString(lpCmdLine) == "-test" ) gAutoQuit = true; - - MSG msg; - HACCEL hAccelTable; - - // Initialize global strings - LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); - LoadString(hInstance, IDC_UI, szWindowClass, MAX_LOADSTRING); - UIRegisterClass(hInstance); - - // empty our global file name buffer - ZeroMemory(gszInputFile, sizeof(gszInputFile) ); - - // Perform application initialization: - if (!InitInstance (hInstance, nCmdShow)) - { - return FALSE; - } - - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_UI)); - - // Main message loop: - while( GetMessage(&msg, NULL, 0, 0) && !gAutoQuit ) - { - if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return (int) msg.wParam; -} - -// -// FUNCTION: UIRegisterClass() -// -// PURPOSE: Registers the window class. -// -ATOM UIRegisterClass( - HINSTANCE hInstance - ) -{ - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UI)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = CreateSolidBrush( GetSysColor(COLOR_3DFACE) ); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_UI); - wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_UI)); - - return RegisterClassEx(&wcex); -} - -// -// FUNCTION: InitInstance(HINSTANCE, int) -// -// PURPOSE: Saves instance handle and creates main window -// -// COMMENTS: -// -// In this function, we save the instance handle in a global variable, -// create and display the main program window. -// -BOOL InitInstance( - HINSTANCE hInstance, - int nCmdShow - ) -{ - hInst = hInstance; // Store instance handle in our global variable - - ghWnd = CreateWindow( - szWindowClass, // LPCTSTR lpClassName - "FBX SDK SceneTreeView sample program", // LPCTSTR lpWindowName - WS_OVERLAPPED | WS_SYSMENU, // DWORD dwStyle - 400, // int x - 200, // int Y - 700, // int nWidth - 800, // int nHeight - NULL, // HWND hWndParent - NULL, // HMENU hMenu - hInstance, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - if (!ghWnd) - { - return FALSE; - } - - ShowWindow(ghWnd, nCmdShow); - UpdateWindow(ghWnd); - - return TRUE; -} - -// -// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) -// -// PURPOSE: Processes messages for the main window. -// -LRESULT CALLBACK WndProc( - HWND hWnd, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - int wmId, wmEvent; - - switch (message) - { - - case WM_CREATE: - { - CreateUIControls(hWnd); - - InitializeSdkManagerAndScene(); - } - break; - - case WM_COMMAND: - - wmId = LOWORD(wParam); - wmEvent = HIWORD(wParam); - - // Parse the menu selections: - switch (wmId) - { - case IDM_ABOUT: - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); - break; - - case IDM_EXIT: - DestroyWindow(hWnd); - break; - - case READ_FROM_BUTTON: - GetInputFileName(hWnd); // ask user for a FBX file path - Fill_TreeView(hWnd); // fill the treeview with the scene content - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - break; - - case WM_DESTROY: - - DestroySdkObjects(gSdkManager, true); - - PostQuitMessage(0); - break; - - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; -} - -// Message handler for about box. -INT_PTR CALLBACK About( - HWND hDlg, - UINT message, - WPARAM wParam, - LPARAM lParam - ) -{ - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - // set the FBX app. icon - HINSTANCE hinst = (HINSTANCE)(LONG_PTR)GetWindowLongPtr(hDlg, GWLP_HINSTANCE); - - HICON hIconFBX = (HICON) LoadImage( hinst, MAKEINTRESOURCE(IDI_UI), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE); - ::SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIconFBX); - } - - return (INT_PTR)TRUE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) - { - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - break; - } - return (INT_PTR)FALSE; -} - -// Create the UI children controls -void CreateUIControls( - HWND hWndParent - ) -{ - DWORD dwStyle = WS_CHILD | WS_VISIBLE; - - // create the button - CreateWindowEx( - 0, // DWORD dwExStyle, - "BUTTON", // LPCTSTR lpClassName - "Read from ...", // control caption - dwStyle, // DWORD dwStyle - 10, // int x - 10, // int y - 130, // int nWidth - 30, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) READ_FROM_BUTTON, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create the edit box - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - "EDIT", // LPCTSTR lpClassName - " <- select a file to read", // control caption - dwStyle|ES_AUTOHSCROLL, // DWORD dwStyle - 150, // int x - 15, // int y - 534, // int nWidth - 20, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) READ_FROM_EDITBOX, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); - - // create a small font - HFONT hf = CreateFont( - 14, // height of font - 6, // average character width - 0, // angle of escapement - 0, // base-line orientation angle - 40, // font weight - 0, // italic attribute option - 0, // underline attribute option - 0, // strikeout attribute option - ANSI_CHARSET, // character set identifier - OUT_DEFAULT_PRECIS, // output precision - CLIP_DEFAULT_PRECIS,// clipping precision - 0, // output quality - 0, // pitch and family - "Arial" // typeface name - ); - - // set the font for the READ_FROM_EDITBOX - SendMessage(GetDlgItem(hWndParent, READ_FROM_EDITBOX), WM_SETFONT, (WPARAM) hf, (LPARAM) false ); - - - // create the control - dwStyle = dwStyle | TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS; - - CreateWindowEx( - WS_EX_STATICEDGE, // DWORD dwExStyle, - WC_TREEVIEW, // LPCTSTR lpClassName - "", // control caption - dwStyle, // DWORD dwStyle - 10, // int x - 50, // int y - 674, // int nWidth - 686, // int nHeight - hWndParent, // HWND hWndParent - (HMENU) FBX_TREEVIEW, // HMENU hMenu or control's ID for WM_COMMAND - hInst, // HINSTANCE hInstance - NULL // LPVOID lpParam - ); -} - -// show the dialog -void GetInputFileName( - HWND hWndParent - ) -{ - OPENFILENAME ofn; - ZeroMemory(&ofn, sizeof(ofn)); - - char szFile[_MAX_PATH]; // buffer for file name - ZeroMemory(szFile, sizeof(szFile)); - - // Initialize OPENFILENAME - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = hWndParent; - ofn.lpstrFile = szFile; - ofn.nMaxFile = sizeof(szFile); - ofn.nFilterIndex = 1; - ofn.lpstrFileTitle = NULL; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = NULL; - ofn.lpstrTitle = "Select the file to read ... (use the file type filter)"; - ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; - - // get a description of all readers registered in the FBX SDK - const char *filter = GetReaderOFNFilters(); - ofn.lpstrFilter = filter; - - // Display the Open dialog box. - if(GetOpenFileName(&ofn) == false) - { - // user cancel - delete filter; - return; - } - - delete filter; - - // show the file name selected - SetWindowText( GetDlgItem(hWndParent, READ_FROM_EDITBOX), szFile ); - - // Keep a copy of the file name - FBXSDK_strcpy(gszInputFile, _MAX_PATH, szFile); -} - -// used to add a new treeview item -HTREEITEM InsertTreeViewItem( - const HWND hTv, - const char *txt, - HTREEITEM htiParent - ) -{ - TVITEM tvi = {0}; - tvi.mask = TVIF_TEXT|TVIF_PARAM; // text + param only - tvi.pszText = (LPSTR)txt; // caption - tvi.cchTextMax = static_cast(strlen(txt)); // length of item label - - TVINSERTSTRUCT tvis = {0}; - tvis.item = tvi; - tvis.hInsertAfter = 0; - tvis.hParent = htiParent; // parent item of item to be inserted - - return reinterpret_cast( SendMessage(hTv, TVM_INSERTITEM, 0, reinterpret_cast(&tvis)) ); -} - -// used to expand all treeview nodes -void Expand_All() -{ - // get the handle of the treeview - HWND htv = GetDlgItem(ghWnd, FBX_TREEVIEW); - if(htv == NULL) return; - - Expand_All_Recurse(htv, TreeView_GetRoot(htv)); - - // force the root node visible on expand - TreeView_SelectSetFirstVisible(htv, TreeView_GetRoot(htv) ); -} - -// used to expand all treeview items recursively -void Expand_All_Recurse( - HWND htv, - HTREEITEM htvi - ) -{ - if(htvi == NULL) return; - - TreeView_Expand(htv, htvi, TVE_EXPAND); - - while(htvi) - { - // expand all children - htvi = TreeView_GetChild(htv, htvi); - Expand_All_Recurse(htv, htvi); - - // expand all siblings - while(htvi) - { - htvi = TreeView_GetNextSibling(htv, htvi); - Expand_All_Recurse(htv, htvi); - } - } -} - -// used to add the rootNode name and start to add children nodes -void DisplayHierarchy( - const HWND hTv - ) -{ - HTREEITEM htvi = InsertTreeViewItem(hTv, GetRootNodeName(), TVI_ROOT); - - for(int i = 0; i < GetRootNode()->GetChildCount(); i++) - { - DisplayHierarchy_Recurse(GetRootNode()->GetChild(i), hTv, htvi); - } -} - -// used to recursively add children nodes -void DisplayHierarchy_Recurse( - const FbxNode* pNode, - const HWND hTv, - HTREEITEM htiParent - ) -{ - // create a new Treeview item with node name and Attribute type name - HTREEITEM htvi = InsertTreeViewItem(hTv, GetNodeNameAndAttributeTypeName(pNode).Buffer(), htiParent); - - // show some FbxNode parameters - Add_TreeViewItem_KFbxNode_Parameters(pNode, hTv, htvi); - - for(int i = 0; i < pNode->GetChildCount(); i++) - { - // recursively call this - DisplayHierarchy_Recurse(pNode->GetChild(i), hTv, htvi); - } -} - -// used to add FbxNode parameters -void Add_TreeViewItem_KFbxNode_Parameters( - const FbxNode* pNode, - HWND hTv, - HTREEITEM htiParent - ) -{ - if(pNode == NULL) return; - - // show node default translation - InsertTreeViewItem(hTv, GetDefaultTranslationInfo(pNode).Buffer(), htiParent); - - // show node visibility - InsertTreeViewItem(hTv, GetNodeVisibility(pNode).Buffer(), htiParent); -} - - -// fill the treeview with the FBX scene content -void Fill_TreeView( - const HWND mainHwnd - ) -{ - if(strlen(gszInputFile) == 0) return; - - // get the handle of the treeview - HWND htv = GetDlgItem(mainHwnd, FBX_TREEVIEW); - if(htv == NULL) return; - - // clear the treeview content - TreeView_DeleteAllItems(htv); - - // show a wait cursor - HCURSOR oldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); - - // load the FBX scene - if(LoadFBXScene(gszInputFile) == false) - { - // reset to default cursor - SetCursor(oldCursor); - - return; - } - - // display scene hierarchy - DisplayHierarchy(htv); - - // expand all items of the treeview - Expand_All(); - - // force the root node visible - TreeView_SelectSetFirstVisible(htv, TreeView_GetRoot(htv) ); - - // reset to default cursor - SetCursor(oldCursor); -} diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.h b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.h deleted file mode 100755 index 2036b08..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.h +++ /dev/null @@ -1,14 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#pragma once - -#include "resource.h" diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.ico b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.ico deleted file mode 100755 index 3bb0a4b..0000000 Binary files a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.ico and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.rc b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.rc deleted file mode 100755 index baea6f8..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/UI.rc +++ /dev/null @@ -1,153 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_UI ICON "UI.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDC_UI MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "E&xit", IDM_EXIT - END - POPUP "&Help" - BEGIN - MENUITEM "&About ...", IDM_ABOUT - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDC_UI ACCELERATORS -BEGIN - "?", IDM_ABOUT, ASCII, ALT - "/", IDM_ABOUT, ASCII, ALT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOGEX 22, 17, 273, 85 -STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About" -FONT 8, "System", 0, 0, 0x0 -BEGIN - LTEXT "© 2009 Autodesk, Inc. All rights reserved.",IDC_STATIC,3,72,195,8,SS_NOPREFIX - DEFPUSHBUTTON "OK",IDOK,232,69,39,13,WS_GROUP - CONTROL 129,IDC_STATIC,"Static",SS_BITMAP,0,0,273,66 -END - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_APP_TITLE "UI" - IDC_UI "UI" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (Canada) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP1 BITMAP "FBX_banner_545x132_SDK.bmp" -#endif // English (Canada) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/resource.h b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/resource.h deleted file mode 100755 index 22cc70c..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/resource.h +++ /dev/null @@ -1,27 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by UI.rc -// -#define IDC_MYICON 2 -#define IDD_UI_DIALOG 102 -#define IDS_APP_TITLE 103 -#define IDD_ABOUTBOX 103 -#define IDM_ABOUT 104 -#define IDM_EXIT 105 -#define IDI_UI 107 -#define IDC_UI 109 -#define IDR_MAINFRAME 128 -#define IDB_BITMAP1 129 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 130 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif diff --git a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/stdafx.h b/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/stdafx.h deleted file mode 100755 index 9d1507d..0000000 --- a/sdk/Windows/2019.2/samples/UI Examples/SceneTreeView/stdafx.h +++ /dev/null @@ -1,38 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -// Do not define WIN32_LEAN_AND_MEAN to use OPENFILENAME structure -// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -// C RunTime Header Files -#include -#include -#include -#include - - -// TODO: reference additional headers your program requires here diff --git a/sdk/Windows/2019.2/samples/UVSample/CMakeLists.txt b/sdk/Windows/2019.2/samples/UVSample/CMakeLists.txt deleted file mode 100755 index 7d9637e..0000000 --- a/sdk/Windows/2019.2/samples/UVSample/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UVSample .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.fbx" "${FBX_BUILD_ROOT}/sadface.fbx" - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/UVSample/sadface.jpg" "${FBX_BUILD_ROOT}/sadface.jpg" -) - diff --git a/sdk/Windows/2019.2/samples/UVSample/main.cxx b/sdk/Windows/2019.2/samples/UVSample/main.cxx deleted file mode 100755 index 548f7ca..0000000 --- a/sdk/Windows/2019.2/samples/UVSample/main.cxx +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example shows to the user how to get UV information from mesh, -// and how to modify UV information on a specific UV set. -// Steps: -// 1. Initialize FBX SDK Manager and FBX Scene -// 2. Load the input file to scene -// 3. Access Node and its mesh -// 4. Get the UVs Information from the mesh -// 5. Modify the UV information and apply to the mesh -// 6. Save the scene to output file -// 7. Destroy the FBX SDK Manager and FBX Scene -///////////////////////////////////////////////////////////////////////// - -#include "../Common/Common.h" - -//input file path -static const char* sInputFile = "sadface.fbx"; - -//output file path -static const char* sOutputFile = "happyface.fbx"; - - -//We load the all the UV information from the mesh -void LoadUVInformation(FbxMesh* pMesh); - -//We modify certain UV set and save the UV to mesh -void SaveUVInformation(FbxMesh* pMesh); - - -int main() -{ - - //FBX SDK Default Manager - FbxManager* lSdkManager = NULL; - - //Scene to load from file - FbxScene* lScene = NULL; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Load the scene. - bool lResult = LoadScene(lSdkManager, lScene, sInputFile); - - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while loading the scene..."); - } - else - { - //Get the first node in the scene - FbxNode* lNodeOfInterest = lScene->GetRootNode()->GetChild(0); - if(lNodeOfInterest) - { - FbxMesh* lMeshOFInterest = lNodeOfInterest->GetMesh(); - if(lMeshOFInterest) - { - //first, load the UV information and display them - LoadUVInformation(lMeshOFInterest); - - //then, modify certain uv set and save it - SaveUVInformation(lMeshOFInterest); - - //save the modified scene to file - SaveScene(lSdkManager, lScene, sOutputFile); - } - } - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - return 0; -} - -void LoadUVInformation(FbxMesh* pMesh) -{ - //get all UV set names - FbxStringList lUVSetNameList; - pMesh->GetUVSetNames(lUVSetNameList); - - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < lUVSetNameList.GetCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const char* lUVSetName = lUVSetNameList.GetStringAt(lUVSetIndex); - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetName); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //index array, where holds the index referenced to the uv data - const bool lUseIndex = lUVElement->GetReferenceMode() != FbxGeometryElement::eDirect; - const int lIndexCount= (lUseIndex) ? lUVElement->GetIndexArray().GetCount() : 0; - - //iterating through the data by polygon - const int lPolyCount = pMesh->GetPolygonCount(); - - if( lUVElement->GetMappingMode() == FbxGeometryElement::eByControlPoint ) - { - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - FbxVector2 lUVValue; - - //get the index of the current vertex in control points array - int lPolyVertIndex = pMesh->GetPolygonVertex(lPolyIndex,lVertIndex); - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyVertIndex) : lPolyVertIndex; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - } - } - } - else if (lUVElement->GetMappingMode() == FbxGeometryElement::eByPolygonVertex) - { - int lPolyIndexCounter = 0; - for( int lPolyIndex = 0; lPolyIndex < lPolyCount; ++lPolyIndex ) - { - // build the max index array that we need to pass into MakePoly - const int lPolySize = pMesh->GetPolygonSize(lPolyIndex); - for( int lVertIndex = 0; lVertIndex < lPolySize; ++lVertIndex ) - { - if (lPolyIndexCounter < lIndexCount) - { - FbxVector2 lUVValue; - - //the UV index depends on the reference mode - int lUVIndex = lUseIndex ? lUVElement->GetIndexArray().GetAt(lPolyIndexCounter) : lPolyIndexCounter; - - lUVValue = lUVElement->GetDirectArray().GetAt(lUVIndex); - - //User TODO: - //Print out the value of UV(lUVValue) or log it to a file - - lPolyIndexCounter++; - } - } - } - } - } -} - -void SaveUVInformation(FbxMesh* pMesh) -{ - //iterating over all uv sets - for (int lUVSetIndex = 0; lUVSetIndex < pMesh->GetElementUVCount(); lUVSetIndex++) - { - //get lUVSetIndex-th uv set - const FbxGeometryElementUV* lUVElement = pMesh->GetElementUV(lUVSetIndex); - - if(!lUVElement) - continue; - - // only support mapping mode eByPolygonVertex and eByControlPoint - if( lUVElement->GetMappingMode() != FbxGeometryElement::eByPolygonVertex && - lUVElement->GetMappingMode() != FbxGeometryElement::eByControlPoint ) - return; - - //new UV data - int lNewUVCount = 274/2; - double lNewUVData[274] = - { - 0.000499486923217773,0.000499725341796875,0.10039958357811,0.000499695539474487,0.200299650430679,0.0004996657371521,0.300199747085571,0.0004996657371521,0.400099813938141,0.000499635934829712,0.49999988079071,0.000499606132507324,0.59989994764328,0.000499576330184937,0.69980001449585,0.000499546527862549,0.799700140953064,0.000499546527862549,0.899600148200989,0.000499516725540161,0.999500274658203,0.000499486923217773,0.000499516725540161,0.100399821996689,0.100399613380432,0.100399792194366,0.200299680233002,0.100399762392044,0.300199747085571,0.100399762392044,0.400099813938141,0.100399732589722,0.499999910593033,0.100399702787399,0.599900007247925,0.100399672985077,0.699800074100494,0.100399643182755,0.799700140953064,0.100399643182755,0.899600207805634,0.100399613380432,0.999500274658203,0.10039958357811,0.000499546527862549,0.200299888849258,0.100399643182755,0.200299859046936,0.200299710035324,0.400099903345108,0.300199776887894,0.400099903345108,0.400099843740463,0.40009993314743,0.499999940395355,0.400099962949753,0.599900007247925,0.400099992752075,0.699800074100494,0.400100022554398,0.799700140953064,0.400100022554398,0.899600267410278,0.200299680233002,0.999500334262848,0.200299650430679,0.000499546527862549,0.30019998550415,0.100399643182755,0.300199925899506,0.200299710035324,0.300199806690216,0.300199806690216,0.300199836492538,0.400099873542786,0.300199866294861,0.499999940395355,0.300199866294861,0.599900007247925,0.300199925899506,0.699800133705139,0.300199925899506,0.799700140953064,0.300199955701828,0.899600267410278,0.300199747085571,0.999500334262848,0.300199747085571,0.000499576330184937,0.40010005235672,0.100399672985077,0.400100022554398,0.200299739837646,0.200299739837646,0.300199806690216,0.200299769639969,0.400099903345108,0.200299799442291,0.499999970197678,0.200299799442291,0.59990006685257,0.200299829244614,0.699800133705139,0.200299859046936,0.799700200557709,0.200299888849258,0.899600267410278,0.400099813938141,0.999500393867493,0.400099813938141,0.000499606132507324, - 0.50000011920929,0.100399702787399,0.50000011920929,0.200299769639969,0.500000059604645,0.300199866294861,0.500000059604645,0.40009993314743,0.5,0.5,0.5,0.59990006685257,0.499999970197678,0.699800133705139,0.499999940395355,0.799700260162354,0.499999940395355,0.899600267410278,0.499999910593033,0.999500393867493,0.49999988079071,0.000499635934829712,0.599900186061859,0.100399732589722,0.599900186061859,0.200299799442291,0.599900126457214,0.300199866294861,0.599900126457214,0.40009993314743,0.599900126457214,0.5,0.59990006685257,0.599900126457214,0.59990006685257,0.699800193309784,0.599900007247925,0.799700260162354,0.599900007247925,0.899600327014923,0.599900007247925,0.999500393867493,0.59989994764328,0.0004996657371521,0.699800252914429,0.100399762392044,0.699800252914429,0.200299829244614,0.699800252914429,0.300199896097183,0.699800193309784,0.400099962949753,0.699800193309784,0.500000059604645,0.699800133705139,0.599900126457214,0.699800133705139,0.699800193309784,0.699800133705139,0.799700260162354,0.699800074100494,0.899600386619568,0.699800074100494,0.999500453472137,0.69980001449585,0.0004996657371521,0.799700379371643,0.100399762392044,0.799700319766998,0.200299829244614,0.799700260162354,0.300199925899506,0.799700260162354,0.400099992752075,0.799700260162354,0.500000059604645,0.799700260162354,0.599900126457214,0.799700200557709,0.699800252914429,0.799700140953064,0.799700260162354,0.799700140953064,0.899600386619568,0.799700140953064,0.999500453472137,0.799700140953064,0.000499695539474487,0.899600386619568,0.100399792194366,0.899600386619568,0.200299859046936,0.899600386619568,0.300199925899506,0.899600386619568,0.400100022554398,0.899600327014923,0.50000011920929,0.899600267410278,0.599900186061859,0.899600267410278,0.699800252914429,0.899600267410278,0.799700319766998,0.899600267410278,0.899600386619568,0.899600207805634,0.999500513076782,0.899600148200989,0.000499725341796875,0.999500513076782,0.100399821996689,0.999500513076782,0.200299888849258,0.999500453472137,0.30019998550415,0.999500453472137, - 0.40010005235672,0.999500393867493,0.50000011920929,0.999500393867493,0.599900186061859,0.999500393867493,0.699800252914429,0.999500334262848,0.799700379371643,0.999500334262848,0.899600386619568,0.999500274658203,0.999500513076782,0.999500274658203,0.200299710035324,0.200299829244614,0.300199776887894,0.200299829244614,0.400099843740463,0.200299799442291,0.499999940395355,0.200299769639969,0.599900007247925,0.200299739837646,0.699800074100494,0.200299710035324,0.799700140953064,0.200299710035324,0.200299710035324,0.300199925899506,0.799700140953064,0.300199776887894,0.200299739837646,0.400099992752075,0.300199806690216,0.400099962949753,0.400099903345108,0.40009993314743,0.499999970197678,0.40009993314743,0.59990006685257,0.400099903345108,0.699800133705139,0.400099873542786,0.799700200557709,0.400099843740463 - }; - - //new UV index data - int lNewUVIndexCount = 600; - int lNewUVIndices[600] = - { - 11,0,12,1,12,0,12,1,13,2,13,1,13,2,14,3,14,2,14,3,15,4,15,3,15,4,16,5,16,4,16,5,17,6,17,5,17,6,18,7,18,6,18,7,19,8,19,7,19,8,20,9,20,8,20,9,21,10,21,9,22,11,23,12,23,11,23,12,121,13,121,12,121,13,122,14,122,13,122,14,123,15,123,14,123,15,124,16,124,15,124,16,125,17,125,16,125,17,126,18,126,17,126,18,127,19,127,18,127,19,31,20,31,19,31,20,32,21,32,20,33,22,34,23,34,22,34,23,128,121,128,23,35,24,36,25,36,24,36,25,37,26,37,25,37,26,38,27,38,26,38,27,39,28,39,27,39,28,40,29,40,28,40,29,41,30,41,29,129,127,42,31,42,127,42,31,43,32,43,31,44,33,45,34,45,33,45,34,130,128,130,34,46,35,47,36,47,35,47,36,48,37,48,36,48,37,49,38,49,37,49,38,50,39,50,38,50,39,51,40,51,39,51,40,52,41,52,40,136,129,53,42,53,129,53,42,54,43,54,42,55,44,56,45,56,44,56,45,57,130,57,45,57,130,58,131,58,130,58,131,59,132,59,131,59,132,60,133,60,132,60,133,61,134,61,133,61,134,62,135,62,134,62,135,63,136,63,135,63,136,64,53,64,136,64,53,65,54,65,53,66,55,67,56,67,55,67,56,68,57,68,56,68,57,69,58,69,57,69,58,70,59,70,58,70,59,71,60,71,59,71,60,72,61,72,60,72,61,73,62,73,61,73,62,74,63,74,62,74,63,75,64,75,63,75,64,76,65,76,64,77,66,78,67,78,66,78,67,79,68,79,67,79,68,80,69,80,68,80,69,81,70,81,69,81,70,82,71,82,70,82,71,83,72,83,71,83,72,84,73,84,72,84,73,85,74,85,73,85,74,86,75,86,74,86,75,87,76,87,75,88,77,89,78,89,77,89,78,90,79,90,78,90,79,91,80,91,79,91,80,92,81,92,80,92,81,93,82,93,81,93,82,94,83,94,82,94,83,95,84,95,83,95,84,96,85,96,84,96,85,97,86,97,85,97,86,98,87,98,86,99,88,100,89,100,88,100,89,101,90,101,89,101,90,102,91,102,90,102,91,103,92,103,91,103,92,104,93,104,92,104,93,105,94,105,93,105,94,106,95,106,94,106,95,107,96,107,95,107,96,108,97,108,96,108,97,109,98,109,97,110,99,111,100,111,99,111,100,112,101,112,100,112,101,113,102,113,101,113,102,114,103,114,102,114,103,115,104,115,103,115,104,116,105,116,104,116,105,117,106,117,105,117,106,118,107,118,106,118,107,119,108,119,107,119,108,120,109,120,108 - }; - - //set new UV data to direct array - lUVElement->GetDirectArray().Resize(lNewUVCount); - for(int lUVIndex = 0; lUVIndex < lNewUVCount; lUVIndex++) - { - FbxVector2 lUV(lNewUVData[2*lUVIndex], lNewUVData[2*lUVIndex+1]); - lUVElement->GetDirectArray().SetAt(lUVIndex, lUV); - } - - //set new UV index data to index array - lUVElement->GetIndexArray().Resize(lNewUVIndexCount); - for(int lUVIndex = 0; lUVIndex < lNewUVIndexCount; lUVIndex++) - { - lUVElement->GetIndexArray().SetAt(lUVIndex, lNewUVIndices[lUVIndex]); - } - - return; - } -} - diff --git a/sdk/Windows/2019.2/samples/UVSample/sadface.fbx b/sdk/Windows/2019.2/samples/UVSample/sadface.fbx deleted file mode 100755 index 06d3fac..0000000 --- a/sdk/Windows/2019.2/samples/UVSample/sadface.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:619179ea4689ea86114b4ab83b0d07e68ea5cbe28f84c9edf0a9ac293bf01f6e -size 33565 diff --git a/sdk/Windows/2019.2/samples/UVSample/sadface.jpg b/sdk/Windows/2019.2/samples/UVSample/sadface.jpg deleted file mode 100755 index 98a1cc8..0000000 --- a/sdk/Windows/2019.2/samples/UVSample/sadface.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:725930d0108270cf385c655ffc37372961499e352fe1dc941a646892e031e7ce -size 6730 diff --git a/sdk/Windows/2019.2/samples/UserProperties/CMakeLists.txt b/sdk/Windows/2019.2/samples/UserProperties/CMakeLists.txt deleted file mode 100755 index e1bf81e..0000000 --- a/sdk/Windows/2019.2/samples/UserProperties/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(UserProperties .) -SET(FBX_TARGET_SOURCE - main.cxx - ../Common/Common.h - ../Common/Common.cxx -) -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) -SET_SAMPLES_GLOBAL_FLAGS() diff --git a/sdk/Windows/2019.2/samples/UserProperties/main.cxx b/sdk/Windows/2019.2/samples/UserProperties/main.cxx deleted file mode 100755 index d8633ab..0000000 --- a/sdk/Windows/2019.2/samples/UserProperties/main.cxx +++ /dev/null @@ -1,539 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// In this example a scene is created containing a cube and a pyramid. -// -// The example illustrates two things: -// 1) How to create user properties, attach them to the cube and -// animate them. -// 2) How to create a constraint, constraining the pyramid to the cube. -// -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "../Common/Common.h" - -#define SAMPLE_FILENAME "UserProperties.fbx" -#define ANIM_STACK_ANIMATE_LIST "Animate Cube List" -#define ANIM_STACK_ANIMATE_CUBE "Animate Cube" -#define ANIM_STACK_ANIMATE_PYRAMID "Animate Pyramid" - -// Function prototypes. -FbxNode* CreateCube(FbxScene* pScene, const char* pName); -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName); -void CreateUserProperties(FbxNode *pNode); -void AnimateList(FbxScene* pScene, FbxProperty* pList); -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode); -void AnimateCube(FbxScene* pScene, FbxNode* pNode); -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode); -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer); - - -int main(int argc, char** argv) -{ - FbxManager* lSdkManager = NULL; - FbxScene* lScene = NULL; - bool lResult; - - // Prepare the FBX SDK. - InitializeSdkObjects(lSdkManager, lScene); - - // Create the scene. - FbxNode* lCube = CreateCube(lScene, "Cube"); - FbxNode* lPyramid = CreatePyramid(lScene, "Pyramid"); - - // Build the node tree. - FbxNode* lRootNode = lScene->GetRootNode(); - lRootNode->AddChild(lCube); - lRootNode->AddChild(lPyramid); - - // Create the user properties on the Cube. - CreateUserProperties(lCube); - - // - - // animate the list "MyList" - FbxProperty p6 = lCube->FindProperty("MyList", false); - AnimateList(lScene, &p6); - - // Constraint (position constraint) the pyramid to the cube. - FbxConstraintPosition* lPositionConstraint = (FbxConstraintPosition*)CreatePositionConstraint(lScene, lCube, lPyramid); - if( lPositionConstraint ) lPositionConstraint->ConnectDstObject(lScene); - - // Animate the cube: the pyramid will follow, because of the position constraint. - AnimateCube(lScene, lCube); - - // Animate the pyramid: it doesn't actually move, because it is constrained to the immobile cube. - AnimatePyramid(lScene, lPyramid); - - // Save the scene. - - // The example can take an output file name as an argument. - const char* lSampleFileName = NULL; - for( int i = 1; i < argc; ++i ) - { - if( FBXSDK_stricmp(argv[i], "-test") == 0 ) continue; - else if( !lSampleFileName ) lSampleFileName = argv[i]; - } - if( !lSampleFileName ) lSampleFileName = SAMPLE_FILENAME; - - lResult = SaveScene(lSdkManager, lScene, lSampleFileName, lSdkManager->GetIOPluginRegistry()->FindWriterIDByDescription("FBX ascii (*.fbx)") ); - if(lResult == false) - { - FBXSDK_printf("\n\nAn error occurred while saving the scene...\n"); - DestroySdkObjects(lSdkManager, lResult); - return 0; - } - - // Destroy all objects created by the FBX SDK. - DestroySdkObjects(lSdkManager, lResult); - - return 0; -} - - -// Create a cube. -FbxNode* CreateCube(FbxScene* pScene, const char* pName) -{ - typedef double Vector4[4]; - typedef double Vector2[2]; - - // indices of the vertices per each polygon - static int vtxId[24] = { - 0,1,2,3, // front face (Z+) - 1,5,6,2, // right side (X+) - 5,4,7,6, // back face (Z-) - 4,0,3,7, // left side (X-) - 0,4,5,1, // bottom face (Y-) - 3,2,6,7 // top face (Y+) - }; - - // control points - static Vector4 lControlPoints[8] = { - { -50.0, 0.0, 50.0, 1.0}, { 50.0, 0.0, 50.0, 1.0}, { 50.0,100.0, 50.0, 1.0}, { -50.0,100.0, 50.0, 1.0}, - { -50.0, 0.0, -50.0, 1.0}, { 50.0, 0.0, -50.0, 1.0}, { 50.0,100.0, -50.0, 1.0}, { -50.0,100.0, -50.0, 1.0} - }; - - // normals - static Vector4 lNormals[8] = { - {-0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209, 0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209, 0.577350258827209, 1.0}, - {-0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209,-0.577350258827209,-0.577350258827209, 1.0}, - { 0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0}, - {-0.577350258827209, 0.577350258827209,-0.577350258827209, 1.0} - }; - - // create the main structure. - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - // Create control points. - lMesh->InitControlPoints(8); - FbxVector4* vertex = lMesh->GetControlPoints(); - memcpy((void*)vertex, (void*)lControlPoints, 8*sizeof(FbxVector4)); - - // create the polygons - int vId = 0; - for (int f=0; f<6; f++) - { - lMesh->BeginPolygon(); - for (int v=0; v<4; v++) - lMesh->AddPolygon(vtxId[vId++]); - lMesh->EndPolygon(); - } - - // specify normals per control point. - - FbxGeometryElementNormal* lNormlElement= lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - for (int n=0; n<8; n++) - lNormlElement->GetDirectArray().Add(FbxVector4(lNormals[n][0], lNormals[n][1], lNormals[n][2])); - - - // Finally we create the node containing the mesh - FbxNode* lNode = FbxNode::Create(pScene,pName); - pScene->GetRootNode()->AddChild(lNode); - lNode->SetNodeAttribute(lMesh); - - return lNode; -} - - -// Create a pyramid. -FbxNode* CreatePyramid(FbxScene* pScene, const char* pName) -{ - int i, j; - FbxMesh* lMesh = FbxMesh::Create(pScene,""); - - FbxVector4 lControlPoint0(-50, 0, 50); - FbxVector4 lControlPoint1(50, 0, 50); - FbxVector4 lControlPoint2(50, 0, -50); - FbxVector4 lControlPoint3(-50, 0, -50); - FbxVector4 lControlPoint4(0, 100, 0); - - FbxVector4 lNormalP0(0, 1, 0); - FbxVector4 lNormalP1(0, 0.447, 0.894); - FbxVector4 lNormalP2(0.894, 0.447, 0); - FbxVector4 lNormalP3(0, 0.447, -0.894); - FbxVector4 lNormalP4(-0.894, 0.447, 0); - - // Create control points. - lMesh->InitControlPoints(16); - FbxVector4* lControlPoints = lMesh->GetControlPoints(); - - lControlPoints[0] = lControlPoint0; - lControlPoints[1] = lControlPoint1; - lControlPoints[2] = lControlPoint2; - lControlPoints[3] = lControlPoint3; - lControlPoints[4] = lControlPoint0; - lControlPoints[5] = lControlPoint1; - lControlPoints[6] = lControlPoint4; - lControlPoints[7] = lControlPoint1; - lControlPoints[8] = lControlPoint2; - lControlPoints[9] = lControlPoint4; - lControlPoints[10] = lControlPoint2; - lControlPoints[11] = lControlPoint3; - lControlPoints[12] = lControlPoint4; - lControlPoints[13] = lControlPoint3; - lControlPoints[14] = lControlPoint0; - lControlPoints[15] = lControlPoint4; - - // specify normals per control point. - FbxGeometryElementNormal* lNormlElement = lMesh->CreateElementNormal(); - lNormlElement->SetMappingMode(FbxGeometryElement::eByControlPoint); - lNormlElement->SetReferenceMode(FbxGeometryElement::eDirect); - - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP0); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP1); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP2); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP3); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - lNormlElement->GetDirectArray().Add(lNormalP4); - - // Array of polygon vertices. - int lPolygonVertices[] = { 0, 3, 2, 1, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15 }; - - // Create polygons. - - // Pyramid base. - lMesh->BeginPolygon(); - for(j = 0; j < 4; j++) - { - lMesh->AddPolygon(lPolygonVertices[j]); // Control point index. - } - - lMesh->EndPolygon (); - - // Pyramid sides. - for(i = 1; i < 5; i++) - { - lMesh->BeginPolygon(); - - for(j = 0; j < 3; j++) - { - lMesh->AddPolygon(lPolygonVertices[4 + 3*(i - 1) + j]); // Control point index. - } - - lMesh->EndPolygon (); - } - - FbxNode* lNode = FbxNode::Create(pScene,pName); - - lNode->SetNodeAttribute(lMesh); - pScene->GetRootNode()->AddChild(lNode); - - // Translate the pyramid - FbxVector4 lTranslation(-150, 0, 0, 0); - lNode->LclTranslation.Set(lTranslation); - - return lNode; -} - - -void CreateUserProperties(FbxNode *pNode) { - // Now we create the user properties - FbxProperty p1 = FbxProperty::Create(pNode, FbxBoolDT, "MyBooleanProperty", "My Bool"); - FbxProperty p2 = FbxProperty::Create(pNode, FbxFloatDT, "MyRealProperty", "My floating point number"); - FbxProperty p3 = FbxProperty::Create(pNode, FbxColor3DT, "MyColorProperty", "My Color"); - FbxProperty p4 = FbxProperty::Create(pNode, FbxIntDT, "MyInteger", ""); - FbxProperty p5 = FbxProperty::Create(pNode, FbxDouble4DT, "MyVector", ""); - FbxProperty p6 = FbxProperty::Create(pNode, FbxStringListDT, "MyList", ""); - - /* - NOTE: The properties labels exists only while the property object is in memory. - The label is not saved in the FBX file. When loading properties from the FBX file - it will take the same value as the property name. - */ - - // we now fill the properties. All the properties are user properties so we set the - // correct flag - p1.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p2.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p3.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p4.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p5.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - p6.ModifyFlag(FbxPropertyFlags::eUserDefined, true); - - // let's make MyColorProperty, MyVector and MyList animatables - p3.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p5.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - p6.ModifyFlag(FbxPropertyFlags::eAnimatable, true); - - // we set the default values - FbxColor lRed(1.0, 0.0, 0.0); - p1.Set(false); - p2.Set(3.33); - p3.Set(lRed); - p4.Set(11); - p5.Set(FbxDouble3(-1.1, 2.2, -3.3)); - p6.Set(2); - - // and some limits - p4.SetLimits(-5.0, 9.0); - p5.SetLimits(0.0, 2.1); - - // add elements to the list - p6.AddEnumValue("one"); - p6.AddEnumValue("two"); - p6.AddEnumValue("three"); - p6.AddEnumValue("Four"); - p6.InsertEnumValue(0, "zero"); -} - - -// Animate the user property given by pList. -void AnimateList(FbxScene* pScene, FbxProperty* pList) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_LIST); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - FbxAnimCurveNode* lFbxFCurveNode = pList->GetCurveNode(lAnimLayer, true); - if (lFbxFCurveNode) - { - FbxTime lKeyTime; - FbxAnimCurve* lFCurve = lFbxFCurveNode->GetCurve(0U); - if (lFCurve == NULL) - lFCurve = lFbxFCurveNode->CreateCurve(lFbxFCurveNode->GetName()); - - lFCurve->KeyModifyBegin(); - lFCurve->ResizeKeyBuffer(5); - - // One way of setting a keyframe value - lKeyTime.SetSecondDouble(0.0); - FbxAnimCurveKey lKey1(lKeyTime, 0.0); - lKey1.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey1.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(0, lKey1); - - lKeyTime.SetSecondDouble(1.0); - FbxAnimCurveKey lKey2(lKeyTime, 1.0); - lKey2.SetInterpolation(FbxAnimCurveDef::eInterpolationConstant); - lKey2.SetConstantMode(FbxAnimCurveDef::eConstantStandard); - lFCurve->KeySet(1, lKey2); - - // an other way of setting a keyframe value - lKeyTime.SetSecondDouble(2.0); - - // the cast to TangentMode is intended - lFCurve->KeySet(2, lKeyTime, 2.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(3.0); - lFCurve->KeySet(3, lKeyTime, 3.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lKeyTime.SetSecondDouble(4.0); - lFCurve->KeySet(4, lKeyTime, 0.0, FbxAnimCurveDef::eInterpolationConstant, (FbxAnimCurveDef::ETangentMode)FbxAnimCurveDef::eConstantStandard); - - lFCurve->KeyModifyEnd(); - } -} - - -// Create a position constraint whith pSourceNode as source node and pConstraintedNode as constrained node. -FbxConstraintPosition* CreatePositionConstraint(FbxScene* pScene, FbxNode* pSourceNode, FbxNode* pConstrainedNode) -{ - FbxConstraintPosition *lPositionConstraint = FbxConstraintPosition::Create(pScene,"Position"); - - // set constrained object - lPositionConstraint->SetConstrainedObject(pConstrainedNode); - - // set source - lPositionConstraint->AddConstraintSource(pSourceNode, 100.0); - - // Constrain the position in X, Y and Z - lPositionConstraint->AffectX = true; - lPositionConstraint->AffectY = true; - lPositionConstraint->AffectZ = true; - - // keep offset between source and constrained object - FbxVector4 lPositionSource; - FbxVector4 lPositionConstrainedObj; - lPositionSource = pSourceNode->LclTranslation.Get(); - lPositionConstrainedObj = pConstrainedNode->LclTranslation.Get(); - FbxVector4 lOffset = lPositionConstrainedObj - lPositionSource; - lPositionConstraint->Translation = FbxDouble3(lOffset); - - // activate property - FbxProperty lActive = lPositionConstraint->FindProperty("Active", false); - lActive.Set(true); - - - return lPositionConstraint; -} - - -// Animate the cube by translating it in X, Y and Z. -void AnimateCube(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_CUBE); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); - -} - - -void AnimatePyramid(FbxScene* pScene, FbxNode* pNode) -{ - // This is represented by the AnimStack object and in order to be able to add - // animation curves, we need to define at least one AnimLayer. - FbxAnimStack* lAnimStack = FbxAnimStack::Create(pScene, ANIM_STACK_ANIMATE_PYRAMID); - FbxAnimLayer* lAnimLayer = FbxAnimLayer::Create(pScene, "Base Layer"); - lAnimStack->AddMember(lAnimLayer); - - AnimateNode(pNode, lAnimLayer); -} - - -// Animate a given node. -void AnimateNode(FbxNode* pNode, FbxAnimLayer* pAnimLayer) -{ - FbxAnimCurve* lCurveX = NULL; - FbxAnimCurve* lCurveY = NULL; - FbxAnimCurve* lCurveZ = NULL; - FbxTime lTime; - int lKeyIndex = 0; - - // The CurveNode must be created in order to access the AnimCurves - pNode->LclTranslation.GetCurveNode(pAnimLayer, true); - lCurveX = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_X, true); - lCurveY = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Y, true); - lCurveZ = pNode->LclTranslation.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COMPONENT_Z, true); - - if (lCurveX) - { - lCurveX->KeyModifyBegin(); - - lTime.SetSecondDouble(0.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(1.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveX->KeyAdd(lTime); - lCurveX->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveX->KeyModifyEnd(); - } - - if (lCurveY) - { - lCurveY->KeyModifyBegin(); - - lTime.SetSecondDouble(2.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(3.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(4.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveY->KeyAdd(lTime); - lCurveY->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveY->KeyModifyEnd(); - } - - if (lCurveZ) - { - lCurveZ->KeyModifyBegin(); - - lTime.SetSecondDouble(5.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(6.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(7.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(8.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, -100.0, FbxAnimCurveDef::eInterpolationCubic); - - lTime.SetSecondDouble(9.0); - lKeyIndex = lCurveZ->KeyAdd(lTime); - lCurveZ->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationCubic); - - lCurveZ->KeyModifyEnd(); - } - -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/CMakeLists.txt b/sdk/Windows/2019.2/samples/ViewScene/CMakeLists.txt deleted file mode 100755 index b18af5b..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -SET(CMAKE_MIN_REQ_VERSION 2.4) -cmake_minimum_required(VERSION ${CMAKE_MIN_REQ_VERSION}) -INCLUDE("../CMakeSettings.txt") - -FBX_PROJECT(ViewScene .) -IF(CMAKE_OSX_SYSROOT MATCHES "Platforms/iPhone*") - MESSAGE(FATAL_ERROR "on iOS we don't have OpenGL stuff so we cannot compile ViewScene") - RETURN() -ENDIF() - -SET(FBX_TARGET_SOURCE - DrawScene.h - GetPosition.h - GlFunctions.h - SetCamera.h - SceneCache.h - SceneContext.h - DrawText.h - targa.h - DrawScene.cxx - GetPosition.cxx - GlFunctions.cxx - SetCamera.cxx - SceneCache.cxx - SceneContext.cxx - DrawText.cxx - main.cxx - targa.cxx - ../Common/Common.h - ../Common/Common.cxx -) - -ADD_DEFINITIONS( - ${FBX_BUILD_DEFINES} - ${FBX_DEPENDENTS_DEFINES} -) - -ADD_EXECUTABLE( - ${FBX_TARGET_NAME} - ${FBX_TARGET_SOURCE} -) - -SET(SRC_LIB_ROOT ${FBX_ROOT}/samples/ViewScene/libs) -IF(WIN32) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.dll" "${FBX_BUILD_ROOT}/glew32.dll" - ) - ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} PRE_LINK - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.dll" "${FBX_BUILD_ROOT}/glut32.dll" - ) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glew32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY "${SRC_LIB_ROOT}/win/glut${FBX_ARCH}/glut32.lib" ${FBX_REQUIRED_LIBS_DEPENDENCY}) -ELSE(WIN32) - IF (APPLE) - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW32.a) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/macos/libGLEW64.a) - ENDIF() - SET(FBX_LINKER_FLAGS "-framework GLUT -framework OpenGL -framework Cocoa") - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - ELSEIF(LINUX) - IF(FBX_ARCH STREQUAL "x64") - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW_amd64.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc34-amd64.a) - ELSE() - SET(LIB_GLEW ${SRC_LIB_ROOT}/linux/libGLEW.a) - SET(LIB_GLUT ${SRC_LIB_ROOT}/linux/libglut_gcc32.a) - ENDIF() - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLEW} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${LIB_GLUT} ${FBX_REQUIRED_LIBS_DEPENDENCY}) - SET(FBX_REQUIRED_LIBS_DEPENDENCY ${FBX_REQUIRED_LIBS_DEPENDENCY} GLU GL X11) - ENDIF(APPLE) -ENDIF(WIN32) - -SET_SAMPLES_GLOBAL_FLAGS() - -ADD_CUSTOM_COMMAND( - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/humanoid.fbx" "${FBX_BUILD_ROOT}/humanoid.fbx" - - TARGET ${FBX_TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FBX_ROOT}/samples/ViewScene/FBX_ASCII_TEXTURE" "${FBX_BUILD_ROOT}/FBX_ASCII_TEXTURE" -) diff --git a/sdk/Windows/2019.2/samples/ViewScene/DrawScene.cxx b/sdk/Windows/2019.2/samples/ViewScene/DrawScene.cxx deleted file mode 100755 index a22c0f2..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/DrawScene.cxx +++ /dev/null @@ -1,948 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawScene.h" -#include "SceneCache.h" -#include "GetPosition.h" - -void DrawNode(FbxNode* pNode, - FbxTime& lTime, - FbxAnimLayer * pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, - ShadingMode pShadingMode); -void DrawMarker(FbxAMatrix& pGlobalPosition); -void DrawSkeleton(FbxNode* pNode, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition); -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode); -void ComputeShapeDeformation(FbxMesh* pMesh, - FbxTime& pTime, - FbxAnimLayer * pAnimLayer, - FbxVector4* pVertexArray); -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose); -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose); -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray); -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition); -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition); -void DrawNull(FbxAMatrix& pGlobalPosition); -void MatrixScale(FbxAMatrix& pMatrix, double pValue); -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue); -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix); - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose) -{ - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - LightCache::IntializeEnvironment(pScene->GetGlobalSettings().GetAmbientColor()); - - // Setting the lights before drawing the whole scene - const int lLightCount = pScene->GetSrcObjectCount(); - for (int lLightIndex = 0; lLightIndex < lLightCount; ++lLightIndex) - { - FbxLight * lLight = pScene->GetSrcObject(lLightIndex); - FbxNode * lNode = lLight->GetNode(); - if (lNode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(lNode, pTime, pPose); - FbxAMatrix lGeometryOffset = GetGeometry(lNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - DrawLight(lNode, pTime, lGlobalOffPosition); - } - } -} - -// Draw recursively each node of the scene. To avoid recomputing -// uselessly the global positions, the global position of each -// node is passed to it's children while browsing the node tree. -// If the node is part of the given pose for the current scene, -// it will be drawn at the position specified in the pose, Otherwise -// it will be drawn at the given time. -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, FbxPose* pPose, - ShadingMode pShadingMode) -{ - FbxAMatrix lGlobalPosition = GetGlobalPosition(pNode, pTime, pPose, &pParentGlobalPosition); - - if (pNode->GetNodeAttribute()) - { - // Geometry offset. - // it is not inherited by the children. - FbxAMatrix lGeometryOffset = GetGeometry(pNode); - FbxAMatrix lGlobalOffPosition = lGlobalPosition * lGeometryOffset; - - DrawNode(pNode, pTime, pAnimLayer, pParentGlobalPosition, lGlobalOffPosition, pPose, pShadingMode); - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - DrawNodeRecursive(pNode->GetChild(lChildIndex), pTime, pAnimLayer, lGlobalPosition, pPose, pShadingMode); - } -} - -// Draw the node following the content of it's node attribute. -void DrawNode(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxAMatrix& pGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - - if (lNodeAttribute) - { - // All lights has been processed before the whole scene because they influence every geometry. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMarker) - { - DrawMarker(pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - DrawSkeleton(pNode, pParentGlobalPosition, pGlobalPosition); - } - // NURBS and patch have been converted into triangluation meshes. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - DrawMesh(pNode, pTime, pAnimLayer, pGlobalPosition, pPose, pShadingMode); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eCamera) - { - DrawCamera(pNode, pTime, pAnimLayer, pGlobalPosition); - } - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eNull) - { - DrawNull(pGlobalPosition); - } - } - else - { - // Draw a Null for nodes without attribute. - DrawNull(pGlobalPosition); - } -} - - -// Draw a small box where the node is located. -void DrawMarker(FbxAMatrix& pGlobalPosition) -{ - GlDrawMarker(pGlobalPosition); -} - - -// Draw a limb between the node and its parent. -void DrawSkeleton(FbxNode* pNode, FbxAMatrix& pParentGlobalPosition, FbxAMatrix& pGlobalPosition) -{ - FbxSkeleton* lSkeleton = (FbxSkeleton*) pNode->GetNodeAttribute(); - - // Only draw the skeleton if it's a limb node and if - // the parent also has an attribute of type skeleton. - if (lSkeleton->GetSkeletonType() == FbxSkeleton::eLimbNode && - pNode->GetParent() && - pNode->GetParent()->GetNodeAttribute() && - pNode->GetParent()->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton) - { - GlDrawLimbNode(pParentGlobalPosition, pGlobalPosition); - } -} - - -// Draw the vertices of a mesh. -void DrawMesh(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition, FbxPose* pPose, ShadingMode pShadingMode) -{ - FbxMesh* lMesh = pNode->GetMesh(); - const int lVertexCount = lMesh->GetControlPointsCount(); - - // No vertex to draw. - if (lVertexCount == 0) - { - return; - } - - const VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - - // If it has some defomer connection, update the vertices position - const bool lHasVertexCache = lMesh->GetDeformerCount(FbxDeformer::eVertexCache) && - (static_cast(lMesh->GetDeformer(0, FbxDeformer::eVertexCache)))->Active.Get(); - const bool lHasShape = lMesh->GetShapeCount() > 0; - const bool lHasSkin = lMesh->GetDeformerCount(FbxDeformer::eSkin) > 0; - const bool lHasDeformation = lHasVertexCache || lHasShape || lHasSkin; - - FbxVector4* lVertexArray = NULL; - if (!lMeshCache || lHasDeformation) - { - lVertexArray = new FbxVector4[lVertexCount]; - memcpy(lVertexArray, lMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - } - - if (lHasDeformation) - { - // Active vertex cache deformer will overwrite any other deformer - if (lHasVertexCache) - { - ReadVertexCacheData(lMesh, pTime, lVertexArray); - } - else - { - if (lHasShape) - { - // Deform the vertex array with the shapes. - ComputeShapeDeformation(lMesh, pTime, pAnimLayer, lVertexArray); - } - - //we need to get the number of clusters - const int lSkinCount = lMesh->GetDeformerCount(FbxDeformer::eSkin); - int lClusterCount = 0; - for (int lSkinIndex = 0; lSkinIndex < lSkinCount; ++lSkinIndex) - { - lClusterCount += ((FbxSkin *)(lMesh->GetDeformer(lSkinIndex, FbxDeformer::eSkin)))->GetClusterCount(); - } - if (lClusterCount) - { - // Deform the vertex array with the skin deformer. - ComputeSkinDeformation(pGlobalPosition, lMesh, pTime, lVertexArray, pPose); - } - } - - if (lMeshCache) - lMeshCache->UpdateVertexPosition(lMesh, lVertexArray); - } - - glPushMatrix(); - glMultMatrixd((const double*)pGlobalPosition); - - if (lMeshCache) - { - lMeshCache->BeginDraw(pShadingMode); - const int lSubMeshCount = lMeshCache->GetSubMeshCount(); - for (int lIndex = 0; lIndex < lSubMeshCount; ++lIndex) - { - if (pShadingMode == SHADING_MODE_SHADED) - { - const FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lIndex); - if (lMaterial) - { - const MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - if (lMaterialCache) - { - lMaterialCache->SetCurrentMaterial(); - } - } - else - { - // Draw green for faces without material - MaterialCache::SetDefaultMaterial(); - } - } - - lMeshCache->Draw(lIndex, pShadingMode); - } - lMeshCache->EndDraw(); - } - else - { - // OpenGL driver is too lower and use Immediate Mode - glColor4f(0.5f, 0.5f, 0.5f, 1.0f); - const int lPolygonCount = lMesh->GetPolygonCount(); - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; lPolygonIndex++) - { - const int lVerticeCount = lMesh->GetPolygonSize(lPolygonIndex); - glBegin(GL_LINE_LOOP); - for (int lVerticeIndex = 0; lVerticeIndex < lVerticeCount; lVerticeIndex++) - { - int index = lMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - if (index < 0) - { - FBX_ASSERT_NOW("Invalid index!"); - continue; - } - glVertex3dv((GLdouble *)lVertexArray[index]); - } - glEnd(); - } - } - - glPopMatrix(); - - delete [] lVertexArray; -} - - -// Deform the vertex array with the shapes contained in the mesh. -void ComputeShapeDeformation(FbxMesh* pMesh, FbxTime& pTime, FbxAnimLayer * pAnimLayer, FbxVector4* pVertexArray) -{ - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lSrcVertexArray = pVertexArray; - FbxVector4* lDstVertexArray = new FbxVector4[lVertexCount]; - memcpy(lDstVertexArray, pVertexArray, lVertexCount * sizeof(FbxVector4)); - - int lBlendShapeDeformerCount = pMesh->GetDeformerCount(FbxDeformer::eBlendShape); - for(int lBlendShapeIndex = 0; lBlendShapeIndexGetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape); - - int lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount(); - for(int lChannelIndex = 0; lChannelIndexGetBlendShapeChannel(lChannelIndex); - if(lChannel) - { - // Get the percentage of influence on this channel. - FbxAnimCurve* lFCurve = pMesh->GetShapeChannel(lBlendShapeIndex, lChannelIndex, pAnimLayer); - if (!lFCurve) continue; - double lWeight = lFCurve->Evaluate(pTime); - - /* - If there is only one targetShape on this channel, the influence is easy to calculate: - influence = (targetShape - baseGeometry) * weight * 0.01 - dstGeometry = baseGeometry + influence - - But if there are more than one targetShapes on this channel, this is an in-between - blendshape, also called progressive morph. The calculation of influence is different. - - For example, given two in-between targets, the full weight percentage of first target - is 50, and the full weight percentage of the second target is 100. - When the weight percentage reach 50, the base geometry is already be fully morphed - to the first target shape. When the weight go over 50, it begin to morph from the - first target shape to the second target shape. - - To calculate influence when the weight percentage is 25: - 1. 25 falls in the scope of 0 and 50, the morphing is from base geometry to the first target. - 2. And since 25 is already half way between 0 and 50, so the real weight percentage change to - the first target is 50. - influence = (firstTargetShape - baseGeometry) * (25-0)/(50-0) * 100 - dstGeometry = baseGeometry + influence - - To calculate influence when the weight percentage is 75: - 1. 75 falls in the scope of 50 and 100, the morphing is from the first target to the second. - 2. And since 75 is already half way between 50 and 100, so the real weight percentage change - to the second target is 50. - influence = (secondTargetShape - firstTargetShape) * (75-50)/(100-50) * 100 - dstGeometry = firstTargetShape + influence - */ - - // Find the two shape indices for influence calculation according to the weight. - // Consider index of base geometry as -1. - - int lShapeCount = lChannel->GetTargetShapeCount(); - double* lFullWeights = lChannel->GetTargetShapeFullWeights(); - - // Find out which scope the lWeight falls in. - int lStartIndex = -1; - int lEndIndex = -1; - for(int lShapeIndex = 0; lShapeIndex 0 && lWeight <= lFullWeights[0]) - { - lEndIndex = 0; - break; - } - if(lWeight > lFullWeights[lShapeIndex] && lWeight < lFullWeights[lShapeIndex+1]) - { - lStartIndex = lShapeIndex; - lEndIndex = lShapeIndex + 1; - break; - } - } - - FbxShape* lStartShape = NULL; - FbxShape* lEndShape = NULL; - if(lStartIndex > -1) - { - lStartShape = lChannel->GetTargetShape(lStartIndex); - } - if(lEndIndex > -1) - { - lEndShape = lChannel->GetTargetShape(lEndIndex); - } - - //The weight percentage falls between base geometry and the first target shape. - if(lStartIndex == -1 && lEndShape) - { - double lEndWeight = lFullWeights[0]; - // Calculate the real weight. - lWeight = (lWeight/lEndWeight) * 100; - // Initialize the lDstVertexArray with vertex of base geometry. - memcpy(lDstVertexArray, lSrcVertexArray, lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the mesh vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lSrcVertexArray[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - //The weight percentage falls between two target shapes. - else if(lStartShape && lEndShape) - { - double lStartWeight = lFullWeights[lStartIndex]; - double lEndWeight = lFullWeights[lEndIndex]; - // Calculate the real weight. - lWeight = ((lWeight-lStartWeight)/(lEndWeight-lStartWeight)) * 100; - // Initialize the lDstVertexArray with vertex of the previous target shape geometry. - memcpy(lDstVertexArray, lStartShape->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - for (int j = 0; j < lVertexCount; j++) - { - // Add the influence of the shape vertex to the previous shape vertex. - FbxVector4 lInfluence = (lEndShape->GetControlPoints()[j] - lStartShape->GetControlPoints()[j]) * lWeight * 0.01; - lDstVertexArray[j] += lInfluence; - } - } - }//If lChannel is valid - }//For each blend shape channel - }//For each blend shape deformer - - memcpy(pVertexArray, lDstVertexArray, lVertexCount * sizeof(FbxVector4)); - - delete [] lDstVertexArray; -} - -//Compute the transform matrix that the cluster will transform the vertex. -void ComputeClusterDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxCluster* pCluster, - FbxAMatrix& pVertexTransformMatrix, - FbxTime pTime, - FbxPose* pPose) -{ - FbxCluster::ELinkMode lClusterMode = pCluster->GetLinkMode(); - - FbxAMatrix lReferenceGlobalInitPosition; - FbxAMatrix lReferenceGlobalCurrentPosition; - FbxAMatrix lAssociateGlobalInitPosition; - FbxAMatrix lAssociateGlobalCurrentPosition; - FbxAMatrix lClusterGlobalInitPosition; - FbxAMatrix lClusterGlobalCurrentPosition; - - FbxAMatrix lReferenceGeometry; - FbxAMatrix lAssociateGeometry; - FbxAMatrix lClusterGeometry; - - FbxAMatrix lClusterRelativeInitPosition; - FbxAMatrix lClusterRelativeCurrentPositionInverse; - - if (lClusterMode == FbxCluster::eAdditive && pCluster->GetAssociateModel()) - { - pCluster->GetTransformAssociateModelMatrix(lAssociateGlobalInitPosition); - // Geometric transform of the model - lAssociateGeometry = GetGeometry(pCluster->GetAssociateModel()); - lAssociateGlobalInitPosition *= lAssociateGeometry; - lAssociateGlobalCurrentPosition = GetGlobalPosition(pCluster->GetAssociateModel(), pTime, pPose); - - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - lReferenceGlobalCurrentPosition = pGlobalPosition; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - // Multiply lClusterGlobalInitPosition by Geometric Transformation - lClusterGeometry = GetGeometry(pCluster->GetLink()); - lClusterGlobalInitPosition *= lClusterGeometry; - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the shift of the link relative to the reference. - //ModelM-1 * AssoM * AssoGX-1 * LinkGX * LinkM-1*ModelM - pVertexTransformMatrix = lReferenceGlobalInitPosition.Inverse() * lAssociateGlobalInitPosition * lAssociateGlobalCurrentPosition.Inverse() * - lClusterGlobalCurrentPosition * lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - } - else - { - pCluster->GetTransformMatrix(lReferenceGlobalInitPosition); - lReferenceGlobalCurrentPosition = pGlobalPosition; - // Multiply lReferenceGlobalInitPosition by Geometric Transformation - lReferenceGeometry = GetGeometry(pMesh->GetNode()); - lReferenceGlobalInitPosition *= lReferenceGeometry; - - // Get the link initial global position and the link current global position. - pCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition); - lClusterGlobalCurrentPosition = GetGlobalPosition(pCluster->GetLink(), pTime, pPose); - - // Compute the initial position of the link relative to the reference. - lClusterRelativeInitPosition = lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition; - - // Compute the current position of the link relative to the reference. - lClusterRelativeCurrentPositionInverse = lReferenceGlobalCurrentPosition.Inverse() * lClusterGlobalCurrentPosition; - - // Compute the shift of the link relative to the reference. - pVertexTransformMatrix = lClusterRelativeCurrentPositionInverse * lClusterRelativeInitPosition; - } -} - -// Deform the vertex array in classic linear way. -void ComputeLinearDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - FbxAMatrix* lClusterDeformation = new FbxAMatrix[lVertexCount]; - memset(lClusterDeformation, 0, lVertexCount * sizeof(FbxAMatrix)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - if (lClusterMode == FbxCluster::eAdditive) - { - for (int i = 0; i < lVertexCount; ++i) - { - lClusterDeformation[i].SetIdentity(); - } - } - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - { - continue; - } - - // Compute the influence of the link on the vertex. - FbxAMatrix lInfluence = lVertexTransformMatrix; - MatrixScale(lInfluence, lWeight); - - if (lClusterMode == FbxCluster::eAdditive) - { - // Multiply with the product of the deformations on the vertex. - MatrixAddToDiagonal(lInfluence, 1.0 - lWeight); - lClusterDeformation[lIndex] = lInfluence * lClusterDeformation[lIndex]; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - // Add to the sum of the deformations on the vertex. - MatrixAdd(lClusterDeformation[lIndex], lInfluence); - - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeight = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeight != 0.0) - { - lDstVertex = lClusterDeformation[i].MultT(lSrcVertex); - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeight; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeight); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array in Dual Quaternion Skinning way. -void ComputeDualQuaternionDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - // All the links must have the same link mode. - FbxCluster::ELinkMode lClusterMode = ((FbxSkin*)pMesh->GetDeformer(0, FbxDeformer::eSkin))->GetCluster(0)->GetLinkMode(); - - int lVertexCount = pMesh->GetControlPointsCount(); - int lSkinCount = pMesh->GetDeformerCount(FbxDeformer::eSkin); - - FbxDualQuaternion* lDQClusterDeformation = new FbxDualQuaternion[lVertexCount]; - memset(lDQClusterDeformation, 0, lVertexCount * sizeof(FbxDualQuaternion)); - - double* lClusterWeight = new double[lVertexCount]; - memset(lClusterWeight, 0, lVertexCount * sizeof(double)); - - // For all skins and all clusters, accumulate their deformation and weight - // on each vertices and store them in lClusterDeformation and lClusterWeight. - for ( int lSkinIndex=0; lSkinIndexGetDeformer(lSkinIndex, FbxDeformer::eSkin); - int lClusterCount = lSkinDeformer->GetClusterCount(); - for ( int lClusterIndex=0; lClusterIndexGetCluster(lClusterIndex); - if (!lCluster->GetLink()) - continue; - - FbxAMatrix lVertexTransformMatrix; - ComputeClusterDeformation(pGlobalPosition, pMesh, lCluster, lVertexTransformMatrix, pTime, pPose); - - FbxQuaternion lQ = lVertexTransformMatrix.GetQ(); - FbxVector4 lT = lVertexTransformMatrix.GetT(); - FbxDualQuaternion lDualQuaternion(lQ, lT); - - int lVertexIndexCount = lCluster->GetControlPointIndicesCount(); - for (int k = 0; k < lVertexIndexCount; ++k) - { - int lIndex = lCluster->GetControlPointIndices()[k]; - - // Sometimes, the mesh can have less points than at the time of the skinning - // because a smooth operator was active when skinning but has been deactivated during export. - if (lIndex >= lVertexCount) - continue; - - double lWeight = lCluster->GetControlPointWeights()[k]; - - if (lWeight == 0.0) - continue; - - // Compute the influence of the link on the vertex. - FbxDualQuaternion lInfluence = lDualQuaternion * lWeight; - if (lClusterMode == FbxCluster::eAdditive) - { - // Simply influenced by the dual quaternion. - lDQClusterDeformation[lIndex] = lInfluence; - - // Set the link to 1.0 just to know this vertex is influenced by a link. - lClusterWeight[lIndex] = 1.0; - } - else // lLinkMode == FbxCluster::eNormalize || lLinkMode == FbxCluster::eTotalOne - { - if(lClusterIndex == 0) - { - lDQClusterDeformation[lIndex] = lInfluence; - } - else - { - // Add to the sum of the deformations on the vertex. - // Make sure the deformation is accumulated in the same rotation direction. - // Use dot product to judge the sign. - double lSign = lDQClusterDeformation[lIndex].GetFirstQuaternion().DotProduct(lDualQuaternion.GetFirstQuaternion()); - if( lSign >= 0.0 ) - { - lDQClusterDeformation[lIndex] += lInfluence; - } - else - { - lDQClusterDeformation[lIndex] -= lInfluence; - } - } - // Add to the sum of weights to either normalize or complete the vertex. - lClusterWeight[lIndex] += lWeight; - } - }//For each vertex - }//lClusterCount - } - - //Actually deform each vertices here by information stored in lClusterDeformation and lClusterWeight - for (int i = 0; i < lVertexCount; i++) - { - FbxVector4 lSrcVertex = pVertexArray[i]; - FbxVector4& lDstVertex = pVertexArray[i]; - double lWeightSum = lClusterWeight[i]; - - // Deform the vertex if there was at least a link with an influence on the vertex, - if (lWeightSum != 0.0) - { - lDQClusterDeformation[i].Normalize(); - lDstVertex = lDQClusterDeformation[i].Deform(lDstVertex); - - if (lClusterMode == FbxCluster::eNormalize) - { - // In the normalized link mode, a vertex is always totally influenced by the links. - lDstVertex /= lWeightSum; - } - else if (lClusterMode == FbxCluster::eTotalOne) - { - // In the total 1 link mode, a vertex can be partially influenced by the links. - lSrcVertex *= (1.0 - lWeightSum); - lDstVertex += lSrcVertex; - } - } - } - - delete [] lDQClusterDeformation; - delete [] lClusterWeight; -} - -// Deform the vertex array according to the links contained in the mesh and the skinning type. -void ComputeSkinDeformation(FbxAMatrix& pGlobalPosition, - FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray, - FbxPose* pPose) -{ - FbxSkin * lSkinDeformer = (FbxSkin *)pMesh->GetDeformer(0, FbxDeformer::eSkin); - FbxSkin::EType lSkinningType = lSkinDeformer->GetSkinningType(); - - if(lSkinningType == FbxSkin::eLinear || lSkinningType == FbxSkin::eRigid) - { - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eDualQuaternion) - { - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, pVertexArray, pPose); - } - else if(lSkinningType == FbxSkin::eBlend) - { - int lVertexCount = pMesh->GetControlPointsCount(); - - FbxVector4* lVertexArrayLinear = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayLinear, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - FbxVector4* lVertexArrayDQ = new FbxVector4[lVertexCount]; - memcpy(lVertexArrayDQ, pMesh->GetControlPoints(), lVertexCount * sizeof(FbxVector4)); - - ComputeLinearDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayLinear, pPose); - ComputeDualQuaternionDeformation(pGlobalPosition, pMesh, pTime, lVertexArrayDQ, pPose); - - // To blend the skinning according to the blend weights - // Final vertex = DQSVertex * blend weight + LinearVertex * (1- blend weight) - // DQSVertex: vertex that is deformed by dual quaternion skinning method; - // LinearVertex: vertex that is deformed by classic linear skinning method; - int lBlendWeightsCount = lSkinDeformer->GetControlPointIndicesCount(); - for(int lBWIndex = 0; lBWIndexGetControlPointBlendWeights()[lBWIndex]; - pVertexArray[lBWIndex] = lVertexArrayDQ[lBWIndex] * lBlendWeight + lVertexArrayLinear[lBWIndex] * (1 - lBlendWeight); - } - } -} - - -void ReadVertexCacheData(FbxMesh* pMesh, - FbxTime& pTime, - FbxVector4* pVertexArray) -{ - FbxVertexCacheDeformer* lDeformer = static_cast(pMesh->GetDeformer(0, FbxDeformer::eVertexCache)); - FbxCache* lCache = lDeformer->GetCache(); - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - unsigned int lVertexCount = (unsigned int)pMesh->GetControlPointsCount(); - bool lReadSucceed = false; - float* lReadBuf = NULL; - unsigned int BufferSize = 0; - - if (lDeformer->Type.Get() != FbxVertexCacheDeformer::ePositions) - // only process positions - return; - - unsigned int Length = 0; - lCache->Read(NULL, Length, FBXSDK_TIME_ZERO, lChannelIndex); - if (Length != lVertexCount*3) - // the content of the cache is by vertex not by control points (we don't support it here) - return; - - lReadSucceed = lCache->Read(&lReadBuf, BufferSize, pTime, lChannelIndex); - if (lReadSucceed) - { - unsigned int lReadBufIndex = 0; - - while (lReadBufIndex < 3*lVertexCount) - { - // In statements like "pVertexArray[lReadBufIndex/3].SetAt(2, lReadBuf[lReadBufIndex++])", - // on Mac platform, "lReadBufIndex++" is evaluated before "lReadBufIndex/3". - // So separate them. - pVertexArray[lReadBufIndex/3].mData[0] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[1] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - pVertexArray[lReadBufIndex/3].mData[2] = lReadBuf[lReadBufIndex]; lReadBufIndex++; - } - } -} - - -// Draw an oriented camera box where the node is located. -void DrawCamera(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - FbxAMatrix& pGlobalPosition) -{ - FbxAMatrix lCameraGlobalPosition; - FbxVector4 lCameraPosition, lCameraDefaultDirection, lCameraInterestPosition; - - lCameraPosition = pGlobalPosition.GetT(); - - // By default, FBX cameras point towards the X positive axis. - FbxVector4 lXPositiveAxis(1.0, 0.0, 0.0); - lCameraDefaultDirection = lCameraPosition + lXPositiveAxis; - - lCameraGlobalPosition = pGlobalPosition; - - // If the camera is linked to an interest, get the interest position. - if (pNode->GetTarget()) - { - lCameraInterestPosition = GetGlobalPosition(pNode->GetTarget(), pTime).GetT(); - - // Compute the required rotation to make the camera point to it's interest. - FbxVector4 lCameraDirection; - FbxVector4::AxisAlignmentInEulerAngle(lCameraPosition, - lCameraDefaultDirection, - lCameraInterestPosition, - lCameraDirection); - - // Must override the camera rotation - // to make it point to it's interest. - lCameraGlobalPosition.SetR(lCameraDirection); - } - - // Get the camera roll. - FbxCamera* cam = pNode->GetCamera(); - double lRoll = 0; - - if (cam) - { - lRoll = cam->Roll.Get(); - FbxAnimCurve* fc = cam->Roll.GetCurve(pAnimLayer); - if (fc) fc->Evaluate(pTime); - } - GlDrawCamera(lCameraGlobalPosition, lRoll); -} - - -// Draw a colored sphere or cone where the node is located. -void DrawLight(const FbxNode* pNode, const FbxTime& pTime, const FbxAMatrix& pGlobalPosition) -{ - const FbxLight* lLight = pNode->GetLight(); - if (!lLight) - return; - - // Must rotate the light's global position because - // FBX lights point towards the Y negative axis. - FbxAMatrix lLightRotation; - const FbxVector4 lYNegativeAxis(-90.0, 0.0, 0.0); - lLightRotation.SetR(lYNegativeAxis); - const FbxAMatrix lLightGlobalPosition = pGlobalPosition * lLightRotation; - - glPushMatrix(); - glMultMatrixd((const double*)lLightGlobalPosition); - - const LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - if (lLightCache) - { - lLightCache->SetLight(pTime); - } - - glPopMatrix(); -} - - -// Draw a cross hair where the node is located. -void DrawNull(FbxAMatrix& pGlobalPosition) -{ - GlDrawCrossHair(pGlobalPosition); -} - - -// Scale all the elements of a matrix. -void MatrixScale(FbxAMatrix& pMatrix, double pValue) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pMatrix[i][j] *= pValue; - } - } -} - - -// Add a value to all the elements in the diagonal of the matrix. -void MatrixAddToDiagonal(FbxAMatrix& pMatrix, double pValue) -{ - pMatrix[0][0] += pValue; - pMatrix[1][1] += pValue; - pMatrix[2][2] += pValue; - pMatrix[3][3] += pValue; -} - - -// Sum two matrices element by element. -void MatrixAdd(FbxAMatrix& pDstMatrix, FbxAMatrix& pSrcMatrix) -{ - int i,j; - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 4; j++) - { - pDstMatrix[i][j] += pSrcMatrix[i][j]; - } - } -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/DrawScene.h b/sdk/Windows/2019.2/samples/ViewScene/DrawScene.h deleted file mode 100755 index 0fd3509..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/DrawScene.h +++ /dev/null @@ -1,29 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_SCENE_H -#define _DRAW_SCENE_H - -#include "GlFunctions.h" - -void InitializeLights(const FbxScene* pScene, const FbxTime & pTime, FbxPose* pPose = NULL); - -void DrawNodeRecursive(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer, - FbxAMatrix& pParentGlobalPosition, - FbxPose* pPose, ShadingMode pShadingMode); - -#endif // #ifndef _DRAW_SCENE_H - - - - - - diff --git a/sdk/Windows/2019.2/samples/ViewScene/DrawText.cxx b/sdk/Windows/2019.2/samples/ViewScene/DrawText.cxx deleted file mode 100755 index d962a72..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/DrawText.cxx +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "DrawText.h" - -namespace -{ - const float DEFAULT_POINT_SIZE = 20.f; - const float DEFAULT_GAP = 0.f; - - // The font texture contains all printable ASCII (0x20-0x7E) in value order. - const char * TEXTURE_FILENAME = "FBX_ASCII_TEXTURE"; - const int TEXTURE_WIDTH = 256; - const int TEXTURE_HEIGHT = 256; - const char TEXTURE_MIN_GLYPH = 0x20; - const char TEXTURE_MAX_GLYPH = 0x7E; - const int TEXTURE_GLYPH_COUNT = TEXTURE_MAX_GLYPH - TEXTURE_MIN_GLYPH + 1; -} - -DrawText::DrawText() : mGlyph(NULL), mTextureName(0), mPointSize(DEFAULT_POINT_SIZE), mGap(DEFAULT_GAP) -{ - Initialize(); -} - -DrawText::~DrawText() -{ - delete [] mGlyph; - - glDeleteTextures(1, &mTextureName); -} - -void DrawText::Display(const char * pText) -{ - if (!mGlyph || mTextureName == 0) - return; - - // Push OpenGL attributes. - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_COLOR_BUFFER_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - glBindTexture(GL_TEXTURE_2D, mTextureName); - glEnable(GL_TEXTURE_2D); - - // Blend with background color - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - // Visible for double side - glDisable(GL_CULL_FACE); - - // Blend with foreground color - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glPushMatrix(); - const char * pCharacter = pText; - while (*pCharacter != '\0') - { - if (*pCharacter == '\n') - { - glPopMatrix(); - // Move to the next line, left align - glTranslatef(0, -mPointSize, 0); - glPushMatrix(); - } - else - { - Glyph * lGlyph = mGlyph + (*pCharacter - TEXTURE_MIN_GLYPH); - if (lGlyph) - { - // Draw a rectangle with texture, alpha on. - glBegin(GL_POLYGON); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_bottom); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_bottom * mPointSize); - glTexCoord2f(lGlyph->texture_right, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_right * mPointSize, lGlyph->vertex_top * mPointSize); - glTexCoord2f(lGlyph->texture_left, lGlyph->texture_top); - glVertex2f(lGlyph->vertex_left * mPointSize, lGlyph->vertex_top * mPointSize); - glEnd(); - - const float advance = lGlyph->advance * mPointSize + mGap; - glTranslatef(advance, 0, 0); - } - else - { - FBXSDK_printf("Invalid character: %c.\n", *pCharacter); - } - - } - ++pCharacter; - } - glPopMatrix(); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); -} - -void DrawText::Initialize() -{ - FILE * lFile = NULL; - FBXSDK_fopen(lFile, TEXTURE_FILENAME, "rb"); - if (lFile == NULL) - { - FBXSDK_printf("Warning: Failed to open %s and no text will be displayed.\n", TEXTURE_FILENAME); - return; - } - - // Load the texture coordinates and vertex coordinates. - mGlyph = new Glyph[TEXTURE_GLYPH_COUNT]; - fread(mGlyph, sizeof(Glyph), TEXTURE_GLYPH_COUNT, lFile); - - // Load the texture data, two bytes every pixel. - // One byte for luminance, always be 0xFF; The other for alpha. - const int lTextureSize = TEXTURE_WIDTH * TEXTURE_HEIGHT * 2; - unsigned char * lTextureData = new unsigned char[lTextureSize]; - if (fread(lTextureData, 1, lTextureSize, lFile) == lTextureSize) - { - // Save the texture data in GPU - glGenTextures(1, &mTextureName); - glBindTexture(GL_TEXTURE_2D, mTextureName); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, lTextureData); - glBindTexture(GL_TEXTURE_2D, 0); - } - delete [] lTextureData; - - fclose(lFile); -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/DrawText.h b/sdk/Windows/2019.2/samples/ViewScene/DrawText.h deleted file mode 100755 index e94b934..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/DrawText.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _DRAW_TEXT_H -#define _DRAW_TEXT_H - -#include "GlFunctions.h" - -// Utility classes for display text in OpenGL. - -class DrawText -{ -public: - DrawText(); - ~DrawText(); - - // Set the size of glyphs. - void SetPointSize(float pPointSize) { mPointSize = pPointSize; } - - // Set the extra horizontal size between two consecutive glyphs. - void SetGap(float pGap) { mGap = pGap; } - - // Display a string (ASCII only). - void Display(const char * pText); - -private: - // Initialize with pre-generated texture, containing glyph coordinates and bitmaps. - void Initialize(); - - struct Glyph - { - float advance; // horizontal distance from the origin of this glyph to next origin. - float texture_left; // texture coordinates of this glyph, range in [0, 1] - float texture_right; - float texture_bottom; - float texture_top; - float vertex_left; // vertex coordinates of this glyph - float vertex_right; // range almost in [0, 1], except some glyph with descend like 'g' or 'p' - float vertex_bottom; - float vertex_top; - }; - - Glyph * mGlyph; - GLuint mTextureName; - - float mPointSize; - float mGap; -}; - -#endif // _DRAW_TEXT_H - diff --git a/sdk/Windows/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE b/sdk/Windows/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE deleted file mode 100755 index ecb7a6e..0000000 Binary files a/sdk/Windows/2019.2/samples/ViewScene/FBX_ASCII_TEXTURE and /dev/null differ diff --git a/sdk/Windows/2019.2/samples/ViewScene/GL/glew.h b/sdk/Windows/2019.2/samples/ViewScene/GL/glew.h deleted file mode 100755 index 6cee2fb..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GL/glew.h +++ /dev/null @@ -1,15304 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * 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 - * BRIAN PAUL 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. - */ - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#ifndef __glew_h__ -#define __glew_h__ -#define __GLEW_H__ - -#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) -#error gl.h included before glew.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error glext.h included before glew.h -#endif -#if defined(__gl_ATI_h_) -#error glATI.h included before glew.h -#endif - -#define __gl_h_ -#define __GL_H__ -#define __X_GL_H -#define __glext_h_ -#define __GLEXT_H_ -#define __gl_ATI_h_ - -#if defined(_WIN32) - -/* - * GLEW does not include to avoid name space pollution. - * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t - * defined properly. - */ -/* */ -#ifndef APIENTRY -#define GLEW_APIENTRY_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define APIENTRY __stdcall -# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -#endif -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# endif -#endif -/* */ -#ifndef CALLBACK -#define GLEW_CALLBACK_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define CALLBACK __attribute__ ((__stdcall__)) -# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -#endif -/* and */ -#ifndef WINGDIAPI -#define GLEW_WINGDIAPI_DEFINED -#define WINGDIAPI __declspec(dllimport) -#endif -/* */ -#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -#endif -/* */ -#if !defined(_W64) -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif -#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) -# ifdef _WIN64 -typedef __int64 ptrdiff_t; -# else -typedef _W64 int ptrdiff_t; -# endif -# define _PTRDIFF_T_DEFINED -# define _PTRDIFF_T_ -#endif - -#ifndef GLAPI -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define GLAPI extern -# else -# define GLAPI WINGDIAPI -# endif -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -/* - * GLEW_STATIC needs to be set when using the static version. - * GLEW_BUILD is set when building the DLL version. - */ -#ifdef GLEW_STATIC -# define GLEWAPI extern -#else -# ifdef GLEW_BUILD -# define GLEWAPI extern __declspec(dllexport) -# else -# define GLEWAPI extern __declspec(dllimport) -# endif -#endif - -#else /* _UNIX */ - -/* - * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO - * C. On my system, this amounts to _3 lines_ of included code, all of - * them pretty much harmless. If you know of a way of detecting 32 vs - * 64 _targets_ at compile time you are free to replace this with - * something that's portable. For now, _this_ is the portable solution. - * (mem, 2004-01-04) - */ - -#include - -/* SGI MIPSPro doesn't like stdint.h in C++ mode */ - -#if defined(__sgi) && !defined(__GNUC__) -#include -#else -#include -#endif - -#define GLEW_APIENTRY_DEFINED -#define APIENTRY -#define GLEWAPI extern - -/* */ -#ifndef GLAPI -#define GLAPI extern -#endif -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#endif /* _WIN32 */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ - -#ifndef GL_VERSION_1_1 -#define GL_VERSION_1_1 1 - -typedef unsigned int GLenum; -typedef unsigned int GLbitfield; -typedef unsigned int GLuint; -typedef int GLint; -typedef int GLsizei; -typedef unsigned char GLboolean; -typedef signed char GLbyte; -typedef short GLshort; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLulong; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; -#if defined(_MSC_VER) -# if _MSC_VER < 1400 -typedef __int64 GLint64EXT; -typedef unsigned __int64 GLuint64EXT; -# else -typedef signed long long GLint64EXT; -typedef unsigned long long GLuint64EXT; -# endif -#else -# if defined(__MINGW32__) || defined(__CYGWIN__) -#include -# endif -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#endif -typedef GLint64EXT GLint64; -typedef GLuint64EXT GLuint64; -typedef struct __GLsync *GLsync; - -typedef char GLchar; -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, - GLenum category, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For ARB_debug_output */ - -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, - GLenum type, - GLuint id, - GLenum severity, - GLsizei length, - const GLchar* message, - GLvoid* userParam); - -/* For GL_ARB_cl_event */ - -typedef struct _cl_context *cl_context; -typedef struct _cl_event *cl_event; - -#define GL_ACCUM 0x0100 -#define GL_LOAD 0x0101 -#define GL_RETURN 0x0102 -#define GL_MULT 0x0103 -#define GL_ADD 0x0104 -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000fffff -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_TRUE 1 -#define GL_FALSE 0 -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LIST_MODE 0x0B30 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_SHADE_MODEL 0x0B54 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_FOG 0x0B60 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_NORMALIZE 0x0BA1 -#define GL_VIEWPORT 0x0BA2 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_INDEX_MODE 0x0C30 -#define GL_RGBA_MODE 0x0C31 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_RENDER_MODE 0x0C40 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_INDEX_BITS 0x0D51 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_COLOR_INDEX 0x1900 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_BITMAP 0x1A00 -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_RENDER 0x1C00 -#define GL_FEEDBACK 0x1C01 -#define GL_SELECT 0x1C02 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_ENV 0x2300 -#define GL_EYE_LINEAR 0x2400 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_SPHERE_MAP 0x2402 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_PLANE 0x2502 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D -#define GL_LOGIC_OP GL_INDEX_LOGIC_OP -#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 - -GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); -GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); -GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -GLAPI void GLAPIENTRY glArrayElement (GLint i); -GLAPI void GLAPIENTRY glBegin (GLenum mode); -GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); -GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GLAPI void GLAPIENTRY glCallList (GLuint list); -GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -GLAPI void GLAPIENTRY glClear (GLbitfield mask); -GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); -GLAPI void GLAPIENTRY glClearIndex (GLfloat c); -GLAPI void GLAPIENTRY glClearStencil (GLint s); -GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); -GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); -GLAPI void GLAPIENTRY glColor3iv (const GLint *v); -GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); -GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); -GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); -GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); -GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -GLAPI void GLAPIENTRY glColor4iv (const GLint *v); -GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); -GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glCullFace (GLenum mode); -GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); -GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GLAPI void GLAPIENTRY glDepthFunc (GLenum func); -GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); -GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); -GLAPI void GLAPIENTRY glDisable (GLenum cap); -GLAPI void GLAPIENTRY glDisableClientState (GLenum array); -GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); -GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); -GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); -GLAPI void GLAPIENTRY glEnable (GLenum cap); -GLAPI void GLAPIENTRY glEnableClientState (GLenum array); -GLAPI void GLAPIENTRY glEnd (void); -GLAPI void GLAPIENTRY glEndList (void); -GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); -GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); -GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); -GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); -GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); -GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); -GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -GLAPI void GLAPIENTRY glFinish (void); -GLAPI void GLAPIENTRY glFlush (void); -GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glFrontFace (GLenum mode); -GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); -GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); -GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); -GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); -GLAPI GLenum GLAPIENTRY glGetError (void); -GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v); -GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v); -GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v); -GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values); -GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values); -GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values); -GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, GLvoid* *params); -GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); -GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); -GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); -GLAPI void GLAPIENTRY glIndexMask (GLuint mask); -GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glIndexd (GLdouble c); -GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); -GLAPI void GLAPIENTRY glIndexf (GLfloat c); -GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); -GLAPI void GLAPIENTRY glIndexi (GLint c); -GLAPI void GLAPIENTRY glIndexiv (const GLint *c); -GLAPI void GLAPIENTRY glIndexs (GLshort c); -GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); -GLAPI void GLAPIENTRY glIndexub (GLubyte c); -GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); -GLAPI void GLAPIENTRY glInitNames (void); -GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); -GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); -GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); -GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); -GLAPI void GLAPIENTRY glLineWidth (GLfloat width); -GLAPI void GLAPIENTRY glListBase (GLuint base); -GLAPI void GLAPIENTRY glLoadIdentity (void); -GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glLoadName (GLuint name); -GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); -GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); -GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); -GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); -GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); -GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); -GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); -GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void GLAPIENTRY glPassThrough (GLfloat token); -GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values); -GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values); -GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values); -GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor); -GLAPI void GLAPIENTRY glPointSize (GLfloat size); -GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask); -GLAPI void GLAPIENTRY glPopAttrib (void); -GLAPI void GLAPIENTRY glPopClientAttrib (void); -GLAPI void GLAPIENTRY glPopMatrix (void); -GLAPI void GLAPIENTRY glPopName (void); -GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushMatrix (void); -GLAPI void GLAPIENTRY glPushName (GLuint name); -GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); -GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); -GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); -GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); -GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); -GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); -GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); -GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); -GLAPI void GLAPIENTRY glShadeModel (GLenum mode); -GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GLAPI void GLAPIENTRY glStencilMask (GLuint mask); -GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s); -GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); -GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord1i (GLint s); -GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); -GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); -GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); -GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); -GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) - -#endif /* GL_VERSION_1_1 */ - -/* ---------------------------------- GLU ---------------------------------- */ - -/* this is where we can safely include GLU */ -#if defined(__APPLE__) && defined(__MACH__) -#include -#else -#include -#endif - -/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 - -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_RESCALE_NORMAL 0x803A -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E - -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); - -#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) -#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) -#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) -#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) - -#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) - -#endif /* GL_VERSION_1_2 */ - -/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ - -#ifndef GL_VERSION_1_2_1 -#define GL_VERSION_1_2_1 1 - -#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) - -#endif /* GL_VERSION_1_2_1 */ - -/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 - -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_SUBTRACT 0x84E7 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#define GL_MULTISAMPLE_BIT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); - -#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) -#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) -#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) -#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) -#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) -#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) -#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) -#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) -#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) -#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) -#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) -#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) -#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) -#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) -#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) -#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) -#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) -#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) -#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) -#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) -#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) -#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) -#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) -#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) -#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) -#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) -#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) -#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) -#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) -#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) -#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) -#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) -#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) -#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) -#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) -#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) -#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) -#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) -#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) -#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) -#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) -#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) -#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) -#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) -#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) -#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) - -#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) - -#endif /* GL_VERSION_1_3 */ - -/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 - -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_COMPARE_R_TO_TEXTURE 0x884E - -typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); - -#define glBlendColor GLEW_GET_FUN(__glewBlendColor) -#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) -#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) -#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) -#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) -#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) -#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) -#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) -#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) -#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) -#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) -#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) -#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) -#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) -#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) -#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) -#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) -#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) -#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) -#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) -#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) -#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) -#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) -#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) -#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) -#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) -#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) -#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) -#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) -#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) -#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) -#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) -#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) -#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) -#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) -#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) -#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) -#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) -#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) -#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) -#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) -#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) -#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) -#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) -#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) -#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) -#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) - -#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) - -#endif /* GL_VERSION_1_4 */ - -/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 - -#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE -#define GL_FOG_COORD GL_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY -#define GL_SRC0_RGB GL_SOURCE0_RGB -#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER -#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE -#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA -#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE -#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA -#define GL_SRC1_RGB GL_SOURCE1_RGB -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING -#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA -#define GL_SRC2_RGB GL_SOURCE2_RGB -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 - -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); -typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); - -#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) -#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) -#define glBufferData GLEW_GET_FUN(__glewBufferData) -#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) -#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) -#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) -#define glEndQuery GLEW_GET_FUN(__glewEndQuery) -#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) -#define glGenQueries GLEW_GET_FUN(__glewGenQueries) -#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) -#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) -#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) -#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) -#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) -#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) -#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) -#define glIsQuery GLEW_GET_FUN(__glewIsQuery) -#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) -#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) - -#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) - -#endif /* GL_VERSION_1_5 */ - -/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 - -#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 - -typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLint obj, GLsizei maxLength, GLsizei* length, GLchar* source); -typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - -#define glAttachShader GLEW_GET_FUN(__glewAttachShader) -#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) -#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) -#define glCompileShader GLEW_GET_FUN(__glewCompileShader) -#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) -#define glCreateShader GLEW_GET_FUN(__glewCreateShader) -#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) -#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) -#define glDetachShader GLEW_GET_FUN(__glewDetachShader) -#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) -#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) -#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) -#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) -#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) -#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) -#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) -#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) -#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) -#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) -#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) -#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) -#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) -#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) -#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) -#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) -#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) -#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) -#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) -#define glIsProgram GLEW_GET_FUN(__glewIsProgram) -#define glIsShader GLEW_GET_FUN(__glewIsShader) -#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) -#define glShaderSource GLEW_GET_FUN(__glewShaderSource) -#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) -#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) -#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) -#define glUniform1f GLEW_GET_FUN(__glewUniform1f) -#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) -#define glUniform1i GLEW_GET_FUN(__glewUniform1i) -#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) -#define glUniform2f GLEW_GET_FUN(__glewUniform2f) -#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) -#define glUniform2i GLEW_GET_FUN(__glewUniform2i) -#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) -#define glUniform3f GLEW_GET_FUN(__glewUniform3f) -#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) -#define glUniform3i GLEW_GET_FUN(__glewUniform3i) -#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) -#define glUniform4f GLEW_GET_FUN(__glewUniform4f) -#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) -#define glUniform4i GLEW_GET_FUN(__glewUniform4i) -#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) -#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) -#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) -#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) -#define glUseProgram GLEW_GET_FUN(__glewUseProgram) -#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) -#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) -#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) -#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) -#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) -#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) -#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) -#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) -#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) -#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) -#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) -#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) -#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) -#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) -#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) -#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) -#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) -#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) -#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) -#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) -#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) -#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) -#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) -#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) -#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) -#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) -#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) -#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) -#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) -#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) -#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) -#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) -#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) -#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) -#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) -#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) -#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) -#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) - -#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) - -#endif /* GL_VERSION_2_0 */ - -/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 - -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B - -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); - -#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) -#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) -#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) -#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) -#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) -#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) - -#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) - -#endif /* GL_VERSION_2_1 */ - -/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ - -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 - -#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES -#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 -#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 -#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 -#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB -#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 -#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 -#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 -#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_DEPTH_BUFFER 0x8223 -#define GL_STENCIL_BUFFER 0x8224 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_ALPHA_INTEGER 0x8D97 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); -typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLint*); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLchar **, GLenum); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); - -#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) -#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) -#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) -#define glClampColor GLEW_GET_FUN(__glewClampColor) -#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) -#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) -#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) -#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) -#define glColorMaski GLEW_GET_FUN(__glewColorMaski) -#define glDisablei GLEW_GET_FUN(__glewDisablei) -#define glEnablei GLEW_GET_FUN(__glewEnablei) -#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) -#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) -#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) -#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) -#define glGetStringi GLEW_GET_FUN(__glewGetStringi) -#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) -#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) -#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) -#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) -#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) -#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) -#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) -#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) -#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) -#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) -#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) -#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) -#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) -#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) -#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) -#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) -#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) -#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) -#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) -#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) -#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) -#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) -#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) -#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) -#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) -#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) -#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) -#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) -#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) -#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) -#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) -#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) -#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) -#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) -#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) -#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) -#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) -#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) -#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) - -#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) - -#endif /* GL_VERSION_3_0 */ - -/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ - -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 - -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint); - -#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) -#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) -#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) -#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) - -#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) - -#endif /* GL_VERSION_3_1 */ - -/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ - -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 - -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum, GLenum, GLint64 *); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *); - -#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) -#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) -#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) - -#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) - -#endif /* GL_VERSION_3_2 */ - -/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ - -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_RGB10_A2UI 0x906F - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) - -#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) - -#endif /* GL_VERSION_3_3 */ - -/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ - -#ifndef GL_VERSION_4_0 -#define GL_VERSION_4_0 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); - -#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) -#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) -#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) -#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) -#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) - -#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) - -#endif /* GL_VERSION_4_0 */ - -/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ - -#ifndef GL_VERSION_4_1 -#define GL_VERSION_4_1 1 - -#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) - -#endif /* GL_VERSION_4_1 */ - -/* -------------------------- GL_3DFX_multisample -------------------------- */ - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 - -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 - -#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) - -#endif /* GL_3DFX_multisample */ - -/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 - -typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); - -#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) - -#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) - -#endif /* GL_3DFX_tbuffer */ - -/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 - -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 - -#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) - -#endif /* GL_3DFX_texture_compression_FXT1 */ - -/* ----------------------- GL_AMD_conservative_depth ----------------------- */ - -#ifndef GL_AMD_conservative_depth -#define GL_AMD_conservative_depth 1 - -#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) - -#endif /* GL_AMD_conservative_depth */ - -/* -------------------------- GL_AMD_debug_output -------------------------- */ - -#ifndef GL_AMD_debug_output -#define GL_AMD_debug_output 1 - -#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 -#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 -#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 -#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A -#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B -#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C -#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D -#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E -#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F -#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, char* message); - -#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) -#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) -#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) -#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) - -#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) - -#endif /* GL_AMD_debug_output */ - -/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ - -#ifndef GL_AMD_draw_buffers_blend -#define GL_AMD_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); - -#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) -#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) -#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) -#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) - -#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) - -#endif /* GL_AMD_draw_buffers_blend */ - -/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ - -#ifndef GL_AMD_name_gen_delete -#define GL_AMD_name_gen_delete 1 - -#define GL_DATA_BUFFER_AMD 0x9151 -#define GL_PERFORMANCE_MONITOR_AMD 0x9152 -#define GL_QUERY_OBJECT_AMD 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 -#define GL_SAMPLER_OBJECT_AMD 0x9155 - -typedef void (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); -typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); - -#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) -#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) -#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) - -#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) - -#endif /* GL_AMD_name_gen_delete */ - -/* ----------------------- GL_AMD_performance_monitor ---------------------- */ - -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 - -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 - -typedef void (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void* data); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char *counterString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, char *groupString); -typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); - -#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) -#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) -#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) -#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) -#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) -#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) -#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) -#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) -#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) -#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) -#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) - -#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) - -#endif /* GL_AMD_performance_monitor */ - -/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ - -#ifndef GL_AMD_seamless_cubemap_per_texture -#define GL_AMD_seamless_cubemap_per_texture 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F - -#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) - -#endif /* GL_AMD_seamless_cubemap_per_texture */ - -/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ - -#ifndef GL_AMD_shader_stencil_export -#define GL_AMD_shader_stencil_export 1 - -#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) - -#endif /* GL_AMD_shader_stencil_export */ - -/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ - -#ifndef GL_AMD_texture_texture4 -#define GL_AMD_texture_texture4 1 - -#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) - -#endif /* GL_AMD_texture_texture4 */ - -/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ - -#ifndef GL_AMD_transform_feedback3_lines_triangles -#define GL_AMD_transform_feedback3_lines_triangles 1 - -#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) - -#endif /* GL_AMD_transform_feedback3_lines_triangles */ - -/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ - -#ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator 1 - -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_DISCRETE_AMD 0x9006 -#define GL_CONTINUOUS_AMD 0x9007 - -typedef void (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); - -#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) -#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) - -#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) - -#endif /* GL_AMD_vertex_shader_tessellator */ - -/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ - -#ifndef GL_APPLE_aux_depth_stencil -#define GL_APPLE_aux_depth_stencil 1 - -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 - -#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) - -#endif /* GL_APPLE_aux_depth_stencil */ - -/* ------------------------ GL_APPLE_client_storage ------------------------ */ - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 - -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 - -#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) - -#endif /* GL_APPLE_client_storage */ - -/* ------------------------- GL_APPLE_element_array ------------------------ */ - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 - -#define GL_ELEMENT_ARRAY_APPLE 0x8A0C -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); - -#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) -#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) -#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) -#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) -#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) - -#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) - -#endif /* GL_APPLE_element_array */ - -/* ----------------------------- GL_APPLE_fence ---------------------------- */ - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 - -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); - -#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) -#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) -#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) -#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) -#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) -#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) -#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) -#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) - -#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) - -#endif /* GL_APPLE_fence */ - -/* ------------------------- GL_APPLE_float_pixels ------------------------- */ - -#ifndef GL_APPLE_float_pixels -#define GL_APPLE_float_pixels 1 - -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F - -#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) - -#endif /* GL_APPLE_float_pixels */ - -/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 - -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 - -typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); - -#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) -#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) - -#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) - -#endif /* GL_APPLE_flush_buffer_range */ - -/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ - -#ifndef GL_APPLE_object_purgeable -#define GL_APPLE_object_purgeable 1 - -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_RETAINED_APPLE 0x8A1B -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_PURGEABLE_APPLE 0x8A1D - -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); - -#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) -#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) -#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) - -#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) - -#endif /* GL_APPLE_object_purgeable */ - -/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ - -#ifndef GL_APPLE_pixel_buffer -#define GL_APPLE_pixel_buffer 1 - -#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 - -#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) - -#endif /* GL_APPLE_pixel_buffer */ - -/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ - -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 - -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#define GL_RGB_422_APPLE 0x8A1F - -#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) - -#endif /* GL_APPLE_rgb_422 */ - -/* --------------------------- GL_APPLE_row_bytes -------------------------- */ - -#ifndef GL_APPLE_row_bytes -#define GL_APPLE_row_bytes 1 - -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 - -#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) - -#endif /* GL_APPLE_row_bytes */ - -/* ------------------------ GL_APPLE_specular_vector ----------------------- */ - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 - -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 - -#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) - -#endif /* GL_APPLE_specular_vector */ - -/* ------------------------- GL_APPLE_texture_range ------------------------ */ - -#ifndef GL_APPLE_texture_range -#define GL_APPLE_texture_range 1 - -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); -typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); - -#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) -#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) - -#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) - -#endif /* GL_APPLE_texture_range */ - -/* ------------------------ GL_APPLE_transform_hint ------------------------ */ - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 - -#define GL_TRANSFORM_HINT_APPLE 0x85B1 - -#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) - -#endif /* GL_APPLE_transform_hint */ - -/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) -#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) -#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) -#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) - -#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) - -#endif /* GL_APPLE_vertex_array_object */ - -/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CLIENT_APPLE 0x85B4 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) -#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) -#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) - -#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) - -#endif /* GL_APPLE_vertex_array_range */ - -/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ - -#ifndef GL_APPLE_vertex_program_evaluators -#define GL_APPLE_vertex_program_evaluators 1 - -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 -#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 -#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 -#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 -#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 -#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 -#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 - -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points); -typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); - -#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) -#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) -#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) -#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) -#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) -#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) -#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) - -#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) - -#endif /* GL_APPLE_vertex_program_evaluators */ - -/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 - -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB - -#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) - -#endif /* GL_APPLE_ycbcr_422 */ - -/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ - -#ifndef GL_ARB_ES2_compatibility -#define GL_ARB_ES2_compatibility 1 - -#define GL_FIXED 0x140C -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); -typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid*binary, GLsizei length); - -#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) -#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) -#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) -#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) -#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) - -#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) - -#endif /* GL_ARB_ES2_compatibility */ - -/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ - -#ifndef GL_ARB_blend_func_extended -#define GL_ARB_blend_func_extended 1 - -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name); - -#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) -#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) - -#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) - -#endif /* GL_ARB_blend_func_extended */ - -/* ---------------------------- GL_ARB_cl_event ---------------------------- */ - -#ifndef GL_ARB_cl_event -#define GL_ARB_cl_event 1 - -#define GL_SYNC_CL_EVENT_ARB 0x8240 -#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 - -typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); - -#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) - -#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) - -#endif /* GL_ARB_cl_event */ - -/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 - -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D - -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); - -#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) - -#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) - -#endif /* GL_ARB_color_buffer_float */ - -/* -------------------------- GL_ARB_compatibility ------------------------- */ - -#ifndef GL_ARB_compatibility -#define GL_ARB_compatibility 1 - -#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) - -#endif /* GL_ARB_compatibility */ - -/* --------------------------- GL_ARB_copy_buffer -------------------------- */ - -#ifndef GL_ARB_copy_buffer -#define GL_ARB_copy_buffer 1 - -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 - -typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); - -#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) - -#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) - -#endif /* GL_ARB_copy_buffer */ - -/* -------------------------- GL_ARB_debug_output -------------------------- */ - -#ifndef GL_ARB_debug_output -#define GL_ARB_debug_output 1 - -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 -#define GL_DEBUG_SOURCE_API_ARB 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A -#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B -#define GL_DEBUG_TYPE_ERROR_ARB 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E -#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 -#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 -#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 - -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, void* userParam); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); -typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* buf); -typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog); - -#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) -#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) -#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) -#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) - -#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) - -#endif /* GL_ARB_debug_output */ - -/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ - -#ifndef GL_ARB_depth_buffer_float -#define GL_ARB_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD - -#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) - -#endif /* GL_ARB_depth_buffer_float */ - -/* --------------------------- GL_ARB_depth_clamp -------------------------- */ - -#ifndef GL_ARB_depth_clamp -#define GL_ARB_depth_clamp 1 - -#define GL_DEPTH_CLAMP 0x864F - -#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) - -#endif /* GL_ARB_depth_clamp */ - -/* -------------------------- GL_ARB_depth_texture ------------------------- */ - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B - -#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) - -#endif /* GL_ARB_depth_texture */ - -/* -------------------------- GL_ARB_draw_buffers -------------------------- */ - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) - -#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) - -#endif /* GL_ARB_draw_buffers */ - -/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ - -#ifndef GL_ARB_draw_buffers_blend -#define GL_ARB_draw_buffers_blend 1 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); - -#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) -#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) -#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) -#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) - -#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) - -#endif /* GL_ARB_draw_buffers_blend */ - -/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ - -#ifndef GL_ARB_draw_elements_base_vertex -#define GL_ARB_draw_elements_base_vertex 1 - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void* indices, GLint basevertex); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei* count, GLenum type, GLvoid**indices, GLsizei primcount, GLint *basevertex); - -#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) -#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) -#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) -#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) - -#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) - -#endif /* GL_ARB_draw_elements_base_vertex */ - -/* -------------------------- GL_ARB_draw_indirect ------------------------- */ - -#ifndef GL_ARB_draw_indirect -#define GL_ARB_draw_indirect 1 - -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect); - -#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) -#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) - -#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) - -#endif /* GL_ARB_draw_indirect */ - -/* ------------------------- GL_ARB_draw_instanced ------------------------- */ - -#ifndef GL_ARB_draw_instanced -#define GL_ARB_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); - -#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) -#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) - -#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) - -#endif /* GL_ARB_draw_instanced */ - -/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ - -#ifndef GL_ARB_explicit_attrib_location -#define GL_ARB_explicit_attrib_location 1 - -#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) - -#endif /* GL_ARB_explicit_attrib_location */ - -/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ - -#ifndef GL_ARB_fragment_coord_conventions -#define GL_ARB_fragment_coord_conventions 1 - -#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) - -#endif /* GL_ARB_fragment_coord_conventions */ - -/* ------------------------ GL_ARB_fragment_program ------------------------ */ - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 - -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 - -#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) - -#endif /* GL_ARB_fragment_program */ - -/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 - -#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) - -#endif /* GL_ARB_fragment_program_shadow */ - -/* ------------------------- GL_ARB_fragment_shader ------------------------ */ - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 - -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B - -#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) - -#endif /* GL_ARB_fragment_shader */ - -/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ - -#ifndef GL_ARB_framebuffer_object -#define GL_ARB_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_INDEX 0x8222 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_SRGB 0x8C40 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) -#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) -#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) -#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) -#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) -#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) -#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) -#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) -#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) -#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) -#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) -#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) -#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) -#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) -#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) -#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) -#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) -#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) -#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) -#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) - -#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) - -#endif /* GL_ARB_framebuffer_object */ - -/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ - -#ifndef GL_ARB_framebuffer_sRGB -#define GL_ARB_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB 0x8DB9 - -#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) - -#endif /* GL_ARB_framebuffer_sRGB */ - -/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ - -#ifndef GL_ARB_geometry_shader4 -#define GL_ARB_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_ARB 0xA -#define GL_LINE_STRIP_ADJACENCY_ARB 0xB -#define GL_TRIANGLES_ADJACENCY_ARB 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) -#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) -#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) -#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) - -#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) - -#endif /* GL_ARB_geometry_shader4 */ - -/* ----------------------- GL_ARB_get_program_binary ----------------------- */ - -#ifndef GL_ARB_get_program_binary -#define GL_ARB_get_program_binary 1 - -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, GLvoid*binary); -typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); - -#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) -#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) -#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) - -#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) - -#endif /* GL_ARB_get_program_binary */ - -/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ - -#ifndef GL_ARB_gpu_shader5 -#define GL_ARB_gpu_shader5 1 - -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) - -#endif /* GL_ARB_gpu_shader5 */ - -/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ - -#ifndef GL_ARB_gpu_shader_fp64 -#define GL_ARB_gpu_shader_fp64 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); - -#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) -#define glProgramUniform1dEXT GLEW_GET_FUN(__glewProgramUniform1dEXT) -#define glProgramUniform1dvEXT GLEW_GET_FUN(__glewProgramUniform1dvEXT) -#define glProgramUniform2dEXT GLEW_GET_FUN(__glewProgramUniform2dEXT) -#define glProgramUniform2dvEXT GLEW_GET_FUN(__glewProgramUniform2dvEXT) -#define glProgramUniform3dEXT GLEW_GET_FUN(__glewProgramUniform3dEXT) -#define glProgramUniform3dvEXT GLEW_GET_FUN(__glewProgramUniform3dvEXT) -#define glProgramUniform4dEXT GLEW_GET_FUN(__glewProgramUniform4dEXT) -#define glProgramUniform4dvEXT GLEW_GET_FUN(__glewProgramUniform4dvEXT) -#define glProgramUniformMatrix2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2dvEXT) -#define glProgramUniformMatrix2x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3dvEXT) -#define glProgramUniformMatrix2x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4dvEXT) -#define glProgramUniformMatrix3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3dvEXT) -#define glProgramUniformMatrix3x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2dvEXT) -#define glProgramUniformMatrix3x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4dvEXT) -#define glProgramUniformMatrix4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4dvEXT) -#define glProgramUniformMatrix4x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2dvEXT) -#define glProgramUniformMatrix4x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3dvEXT) -#define glUniform1d GLEW_GET_FUN(__glewUniform1d) -#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) -#define glUniform2d GLEW_GET_FUN(__glewUniform2d) -#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) -#define glUniform3d GLEW_GET_FUN(__glewUniform3d) -#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) -#define glUniform4d GLEW_GET_FUN(__glewUniform4d) -#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) -#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) -#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) -#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) -#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) -#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) -#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) -#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) -#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) -#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) - -#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) - -#endif /* GL_ARB_gpu_shader_fp64 */ - -/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 - -#define GL_HALF_FLOAT_ARB 0x140B - -#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) - -#endif /* GL_ARB_half_float_pixel */ - -/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ - -#ifndef GL_ARB_half_float_vertex -#define GL_ARB_half_float_vertex 1 - -#define GL_HALF_FLOAT 0x140B - -#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) - -#endif /* GL_ARB_half_float_vertex */ - -/* ----------------------------- GL_ARB_imaging ---------------------------- */ - -#ifndef GL_ARB_imaging -#define GL_ARB_imaging 1 - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_IGNORE_BORDER 0x8150 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_WRAP_BORDER 0x8152 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); - -#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) -#define glColorTable GLEW_GET_FUN(__glewColorTable) -#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) -#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) -#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) -#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) -#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) -#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) -#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) -#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) -#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) -#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) -#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) -#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) -#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) -#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) -#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) -#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) -#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) -#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) -#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) -#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) -#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) -#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) -#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) -#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) -#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) -#define glHistogram GLEW_GET_FUN(__glewHistogram) -#define glMinmax GLEW_GET_FUN(__glewMinmax) -#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) -#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) -#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) - -#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) - -#endif /* GL_ARB_imaging */ - -/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ - -#ifndef GL_ARB_instanced_arrays -#define GL_ARB_instanced_arrays 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) - -#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) - -#endif /* GL_ARB_instanced_arrays */ - -/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ - -#ifndef GL_ARB_map_buffer_range -#define GL_ARB_map_buffer_range 1 - -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 - -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - -#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) -#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) - -#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) - -#endif /* GL_ARB_map_buffer_range */ - -/* ------------------------- GL_ARB_matrix_palette ------------------------- */ - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 - -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 - -typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); - -#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) -#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) -#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) -#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) -#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) - -#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) - -#endif /* GL_ARB_matrix_palette */ - -/* --------------------------- GL_ARB_multisample -------------------------- */ - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 - -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); - -#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) - -#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) - -#endif /* GL_ARB_multisample */ - -/* -------------------------- GL_ARB_multitexture -------------------------- */ - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) -#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) -#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) -#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) -#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) -#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) -#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) -#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) -#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) -#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) -#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) -#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) -#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) -#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) -#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) -#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) -#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) -#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) -#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) -#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) -#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) -#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) -#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) -#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) -#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) -#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) -#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) -#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) -#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) -#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) -#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) -#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) -#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) -#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) - -#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) - -#endif /* GL_ARB_multitexture */ - -/* ------------------------- GL_ARB_occlusion_query ------------------------ */ - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 - -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); - -#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) -#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) -#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) -#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) -#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) -#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) -#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) -#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) - -#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) - -#endif /* GL_ARB_occlusion_query */ - -/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ - -#ifndef GL_ARB_occlusion_query2 -#define GL_ARB_occlusion_query2 1 - -#define GL_ANY_SAMPLES_PASSED 0x8C2F - -#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) - -#endif /* GL_ARB_occlusion_query2 */ - -/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF - -#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) - -#endif /* GL_ARB_pixel_buffer_object */ - -/* ------------------------ GL_ARB_point_parameters ------------------------ */ - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 - -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) -#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) - -#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) - -#endif /* GL_ARB_point_parameters */ - -/* -------------------------- GL_ARB_point_sprite -------------------------- */ - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 - -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 - -#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) - -#endif /* GL_ARB_point_sprite */ - -/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ - -#ifndef GL_ARB_provoking_vertex -#define GL_ARB_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); - -#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) - -#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) - -#endif /* GL_ARB_provoking_vertex */ - -/* --------------------------- GL_ARB_robustness --------------------------- */ - -#ifndef GL_ARB_robustness -#define GL_ARB_robustness 1 - -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 -#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 - -typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); -typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); -typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); -typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); -typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); -typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); -typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); -typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, GLvoid*column, GLvoid*span); -typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); -typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); - -#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) -#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) -#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) -#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) -#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) -#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) -#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) -#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) -#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) -#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) -#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) -#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) -#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) -#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) -#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) -#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) -#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) -#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) -#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) - -#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) - -#endif /* GL_ARB_robustness */ - -/* ------------------------- GL_ARB_sample_shading ------------------------- */ - -#ifndef GL_ARB_sample_shading -#define GL_ARB_sample_shading 1 - -#define GL_SAMPLE_SHADING_ARB 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 - -typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); - -#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) - -#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) - -#endif /* GL_ARB_sample_shading */ - -/* ------------------------- GL_ARB_sampler_objects ------------------------ */ - -#ifndef GL_ARB_sampler_objects -#define GL_ARB_sampler_objects 1 - -#define GL_SAMPLER_BINDING 0x8919 - -typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); -typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); -typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); - -#define glBindSampler GLEW_GET_FUN(__glewBindSampler) -#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) -#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) -#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) -#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) -#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) -#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) -#define glIsSampler GLEW_GET_FUN(__glewIsSampler) -#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) -#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) -#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) -#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) -#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) -#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) - -#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) - -#endif /* GL_ARB_sampler_objects */ - -/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ - -#ifndef GL_ARB_seamless_cube_map -#define GL_ARB_seamless_cube_map 1 - -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F - -#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) - -#endif /* GL_ARB_seamless_cube_map */ - -/* --------------------- GL_ARB_separate_shader_objects -------------------- */ - -#ifndef GL_ARB_separate_shader_objects -#define GL_ARB_separate_shader_objects 1 - -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_ALL_SHADER_BITS 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const char ** strings); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, char *infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); - -#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) -#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) -#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) -#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) -#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) -#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) -#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) -#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) -#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) -#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) -#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) -#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) -#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) -#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) -#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) -#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) -#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) -#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) -#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) -#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) -#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) -#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) -#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) -#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) -#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) -#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) -#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) -#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) -#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) -#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) -#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) -#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) -#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) -#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) -#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) -#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) -#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) -#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) -#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) -#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) -#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) -#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) -#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) -#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) -#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) -#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) -#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) -#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) -#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) -#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) -#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) -#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) -#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) -#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) -#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) -#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) -#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) -#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) -#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) -#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) - -#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) - -#endif /* GL_ARB_separate_shader_objects */ - -/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ - -#ifndef GL_ARB_shader_bit_encoding -#define GL_ARB_shader_bit_encoding 1 - -#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) - -#endif /* GL_ARB_shader_bit_encoding */ - -/* ------------------------- GL_ARB_shader_objects ------------------------- */ - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 - -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 - -typedef char GLcharARB; -typedef unsigned int GLhandleARB; - -typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); -typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); - -#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) -#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) -#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) -#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) -#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) -#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) -#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) -#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) -#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) -#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) -#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) -#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) -#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) -#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) -#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) -#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) -#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) -#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) -#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) -#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) -#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) -#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) -#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) -#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) -#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) -#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) -#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) -#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) -#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) -#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) -#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) -#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) -#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) -#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) -#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) -#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) -#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) -#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) -#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) - -#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) - -#endif /* GL_ARB_shader_objects */ - -/* ------------------------ GL_ARB_shader_precision ------------------------ */ - -#ifndef GL_ARB_shader_precision -#define GL_ARB_shader_precision 1 - -#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) - -#endif /* GL_ARB_shader_precision */ - -/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ - -#ifndef GL_ARB_shader_stencil_export -#define GL_ARB_shader_stencil_export 1 - -#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) - -#endif /* GL_ARB_shader_stencil_export */ - -/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ - -#ifndef GL_ARB_shader_subroutine -#define GL_ARB_shader_subroutine 1 - -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B - -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); -typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); -typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name); -typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); -typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); - -#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) -#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) -#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) -#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) -#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) -#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) -#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) -#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) - -#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) - -#endif /* GL_ARB_shader_subroutine */ - -/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ - -#ifndef GL_ARB_shader_texture_lod -#define GL_ARB_shader_texture_lod 1 - -#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) - -#endif /* GL_ARB_shader_texture_lod */ - -/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 - -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C - -#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) - -#endif /* GL_ARB_shading_language_100 */ - -/* -------------------- GL_ARB_shading_language_include -------------------- */ - -#ifndef GL_ARB_shading_language_include -#define GL_ARB_shading_language_include 1 - -#define GL_SHADER_INCLUDE_ARB 0x8DAE -#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 -#define GL_NAMED_STRING_TYPE_ARB 0x8DEA - -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length); -typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name); -typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string); - -#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) -#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) -#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) -#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) -#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) -#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) - -#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) - -#endif /* GL_ARB_shading_language_include */ - -/* ----------------------------- GL_ARB_shadow ----------------------------- */ - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 - -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E - -#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) - -#endif /* GL_ARB_shadow */ - -/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 - -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF - -#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) - -#endif /* GL_ARB_shadow_ambient */ - -/* ------------------------------ GL_ARB_sync ------------------------------ */ - -#ifndef GL_ARB_sync -#define GL_ARB_sync 1 - -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF - -typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); -typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); -typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); -typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); -typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); -typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); - -#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) -#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) -#define glFenceSync GLEW_GET_FUN(__glewFenceSync) -#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) -#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) -#define glIsSync GLEW_GET_FUN(__glewIsSync) -#define glWaitSync GLEW_GET_FUN(__glewWaitSync) - -#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) - -#endif /* GL_ARB_sync */ - -/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ - -#ifndef GL_ARB_tessellation_shader -#define GL_ARB_tessellation_shader 1 - -#define GL_PATCHES 0xE -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_PATCH_VERTICES 0x8E72 -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_ISOLINES 0x8E7A -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A - -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); -typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); - -#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) -#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) - -#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) - -#endif /* GL_ARB_tessellation_shader */ - -/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_ARB 0x812D - -#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) - -#endif /* GL_ARB_texture_border_clamp */ - -/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ - -#ifndef GL_ARB_texture_buffer_object -#define GL_ARB_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) - -#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) - -#endif /* GL_ARB_texture_buffer_object */ - -/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ - -#ifndef GL_ARB_texture_buffer_object_rgb32 -#define GL_ARB_texture_buffer_object_rgb32 1 - -#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) - -#endif /* GL_ARB_texture_buffer_object_rgb32 */ - -/* ----------------------- GL_ARB_texture_compression ---------------------- */ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 - -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 - -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); - -#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) -#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) -#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) -#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) -#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) -#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) -#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) - -#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) - -#endif /* GL_ARB_texture_compression */ - -/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ - -#ifndef GL_ARB_texture_compression_bptc -#define GL_ARB_texture_compression_bptc 1 - -#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F - -#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) - -#endif /* GL_ARB_texture_compression_bptc */ - -/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ - -#ifndef GL_ARB_texture_compression_rgtc -#define GL_ARB_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE - -#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) - -#endif /* GL_ARB_texture_compression_rgtc */ - -/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 - -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C - -#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) - -#endif /* GL_ARB_texture_cube_map */ - -/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ - -#ifndef GL_ARB_texture_cube_map_array -#define GL_ARB_texture_cube_map_array 1 - -#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F - -#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) - -#endif /* GL_ARB_texture_cube_map_array */ - -/* ------------------------- GL_ARB_texture_env_add ------------------------ */ - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 - -#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) - -#endif /* GL_ARB_texture_env_add */ - -/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 - -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A - -#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) - -#endif /* GL_ARB_texture_env_combine */ - -/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 - -#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) - -#endif /* GL_ARB_texture_env_crossbar */ - -/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 - -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF - -#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) - -#endif /* GL_ARB_texture_env_dot3 */ - -/* -------------------------- GL_ARB_texture_float ------------------------- */ - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 - -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 - -#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) - -#endif /* GL_ARB_texture_float */ - -/* ------------------------- GL_ARB_texture_gather ------------------------- */ - -#ifndef GL_ARB_texture_gather -#define GL_ARB_texture_gather 1 - -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F - -#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) - -#endif /* GL_ARB_texture_gather */ - -/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_ARB 0x8370 - -#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) - -#endif /* GL_ARB_texture_mirrored_repeat */ - -/* ----------------------- GL_ARB_texture_multisample ---------------------- */ - -#ifndef GL_ARB_texture_multisample -#define GL_ARB_texture_multisample 1 - -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); - -#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) -#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) -#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) -#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) - -#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) - -#endif /* GL_ARB_texture_multisample */ - -/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 - -#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) - -#endif /* GL_ARB_texture_non_power_of_two */ - -/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ - -#ifndef GL_ARB_texture_query_lod -#define GL_ARB_texture_query_lod 1 - -#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) - -#endif /* GL_ARB_texture_query_lod */ - -/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 - -#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) - -#endif /* GL_ARB_texture_rectangle */ - -/* --------------------------- GL_ARB_texture_rg --------------------------- */ - -#ifndef GL_ARB_texture_rg -#define GL_ARB_texture_rg 1 - -#define GL_RED 0x1903 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C - -#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) - -#endif /* GL_ARB_texture_rg */ - -/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ - -#ifndef GL_ARB_texture_rgb10_a2ui -#define GL_ARB_texture_rgb10_a2ui 1 - -#define GL_RGB10_A2UI 0x906F - -#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) - -#endif /* GL_ARB_texture_rgb10_a2ui */ - -/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ - -#ifndef GL_ARB_texture_swizzle -#define GL_ARB_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 - -#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) - -#endif /* GL_ARB_texture_swizzle */ - -/* --------------------------- GL_ARB_timer_query -------------------------- */ - -#ifndef GL_ARB_timer_query -#define GL_ARB_timer_query 1 - -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); -typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); - -#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) -#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) -#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) - -#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) - -#endif /* GL_ARB_timer_query */ - -/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ - -#ifndef GL_ARB_transform_feedback2 -#define GL_ARB_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); - -#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) -#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) -#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) -#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) -#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) -#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) -#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) - -#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) - -#endif /* GL_ARB_transform_feedback2 */ - -/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ - -#ifndef GL_ARB_transform_feedback3 -#define GL_ARB_transform_feedback3 1 - -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_MAX_VERTEX_STREAMS 0x8E71 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); -typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); - -#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) -#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) -#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) -#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) - -#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) - -#endif /* GL_ARB_transform_feedback3 */ - -/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 - -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 - -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); - -#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) -#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) -#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) -#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) - -#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) - -#endif /* GL_ARB_transpose_matrix */ - -/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ - -#ifndef GL_ARB_uniform_buffer_object -#define GL_ARB_uniform_buffer_object 1 - -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, char* uniformName); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); -typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const char* uniformBlockName); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const char** uniformNames, GLuint* uniformIndices); -typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); - -#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) -#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) -#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) -#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) -#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) -#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) -#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) -#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) -#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) -#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) - -#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) - -#endif /* GL_ARB_uniform_buffer_object */ - -/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ - -#ifndef GL_ARB_vertex_array_bgra -#define GL_ARB_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) - -#endif /* GL_ARB_vertex_array_bgra */ - -/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ - -#ifndef GL_ARB_vertex_array_object -#define GL_ARB_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); - -#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) -#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) -#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) -#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) - -#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) - -#endif /* GL_ARB_vertex_array_object */ - -/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_ARB_vertex_attrib_64bit -#define GL_ARB_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) -#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) -#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) -#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) -#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) -#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) -#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) -#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) -#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) -#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) - -#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) - -#endif /* GL_ARB_vertex_attrib_64bit */ - -/* -------------------------- GL_ARB_vertex_blend -------------------------- */ - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 - -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F - -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); -typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); - -#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) -#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) -#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) -#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) -#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) -#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) -#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) -#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) -#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) -#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) - -#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) - -#endif /* GL_ARB_vertex_blend */ - -/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 - -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA - -typedef ptrdiff_t GLsizeiptrARB; -typedef ptrdiff_t GLintptrARB; - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); - -#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) -#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) -#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) -#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) -#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) -#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) -#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) -#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) -#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) -#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) -#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) - -#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) - -#endif /* GL_ARB_vertex_buffer_object */ - -/* ------------------------- GL_ARB_vertex_program ------------------------- */ - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 - -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF - -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); - -#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) -#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) -#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) -#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) -#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) -#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) -#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) -#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) -#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) -#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) -#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) -#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) -#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) -#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) -#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) -#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) -#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) -#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) -#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) -#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) -#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) -#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) -#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) -#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) -#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) -#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) -#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) -#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) -#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) -#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) -#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) -#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) -#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) -#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) -#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) -#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) -#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) -#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) -#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) -#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) -#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) -#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) -#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) -#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) -#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) -#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) -#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) -#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) -#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) -#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) -#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) -#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) -#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) -#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) -#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) -#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) -#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) -#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) -#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) -#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) -#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) -#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) - -#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) - -#endif /* GL_ARB_vertex_program */ - -/* -------------------------- GL_ARB_vertex_shader ------------------------- */ - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 - -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A - -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); - -#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) -#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) -#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) - -#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) - -#endif /* GL_ARB_vertex_shader */ - -/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ - -#ifndef GL_ARB_vertex_type_2_10_10_10_rev -#define GL_ARB_vertex_type_2_10_10_10_rev 1 - -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_INT_2_10_10_10_REV 0x8D9F - -typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); -typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); -typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); - -#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) -#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) -#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) -#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) -#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) -#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) -#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) -#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) -#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) -#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) -#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) -#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) -#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) -#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) -#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) -#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) -#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) -#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) -#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) -#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) -#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) -#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) -#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) -#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) -#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) -#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) -#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) -#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) -#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) -#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) -#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) -#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) -#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) -#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) -#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) -#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) -#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) -#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) - -#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) - -#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ - -/* ------------------------- GL_ARB_viewport_array ------------------------- */ - -#ifndef GL_ARB_viewport_array -#define GL_ARB_viewport_array 1 - -#define GL_DEPTH_RANGE 0x0B70 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_MAX_VIEWPORTS 0x825B -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_UNDEFINED_VERTEX 0x8260 -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F - -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); - -#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) -#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) -#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) -#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) -#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) -#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) -#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) -#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) -#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) -#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) - -#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) - -#endif /* GL_ARB_viewport_array */ - -/* --------------------------- GL_ARB_window_pos --------------------------- */ - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); - -#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) -#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) -#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) -#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) -#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) -#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) -#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) -#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) -#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) -#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) -#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) -#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) -#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) -#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) -#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) -#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) - -#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) - -#endif /* GL_ARB_window_pos */ - -/* ------------------------- GL_ATIX_point_sprites ------------------------- */ - -#ifndef GL_ATIX_point_sprites -#define GL_ATIX_point_sprites 1 - -#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 -#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 -#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 -#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 -#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 -#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 - -#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) - -#endif /* GL_ATIX_point_sprites */ - -/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ - -#ifndef GL_ATIX_texture_env_combine3 -#define GL_ATIX_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATIX 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 -#define GL_MODULATE_SUBTRACT_ATIX 0x8746 - -#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) - -#endif /* GL_ATIX_texture_env_combine3 */ - -/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ - -#ifndef GL_ATIX_texture_env_route -#define GL_ATIX_texture_env_route 1 - -#define GL_SECONDARY_COLOR_ATIX 0x8747 -#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 -#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 - -#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) - -#endif /* GL_ATIX_texture_env_route */ - -/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ - -#ifndef GL_ATIX_vertex_shader_output_point_size -#define GL_ATIX_vertex_shader_output_point_size 1 - -#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E - -#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) - -#endif /* GL_ATIX_vertex_shader_output_point_size */ - -/* -------------------------- GL_ATI_draw_buffers -------------------------- */ - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) - -#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) - -#endif /* GL_ATI_draw_buffers */ - -/* -------------------------- GL_ATI_element_array ------------------------- */ - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 - -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); - -#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) -#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) -#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) - -#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) - -#endif /* GL_ATI_element_array */ - -/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 - -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C - -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); - -#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) -#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) -#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) -#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) - -#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) - -#endif /* GL_ATI_envmap_bumpmap */ - -/* ------------------------- GL_ATI_fragment_shader ------------------------ */ - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 - -#define GL_RED_BIT_ATI 0x00000001 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B - -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); - -#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) -#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) -#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) -#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) -#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) -#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) -#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) -#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) -#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) -#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) -#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) -#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) -#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) -#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) - -#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) - -#endif /* GL_ATI_fragment_shader */ - -/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 - -typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); - -#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) -#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) - -#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) - -#endif /* GL_ATI_map_object_buffer */ - -/* ----------------------------- GL_ATI_meminfo ---------------------------- */ - -#ifndef GL_ATI_meminfo -#define GL_ATI_meminfo 1 - -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD - -#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) - -#endif /* GL_ATI_meminfo */ - -/* -------------------------- GL_ATI_pn_triangles -------------------------- */ - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 - -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 - -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); - -#define glPNTrianglesfATI GLEW_GET_FUN(__glPNTrianglewesfATI) -#define glPNTrianglesiATI GLEW_GET_FUN(__glPNTrianglewesiATI) - -#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) - -#endif /* GL_ATI_pn_triangles */ - -/* ------------------------ GL_ATI_separate_stencil ------------------------ */ - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 - -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 - -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); - -#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) -#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) - -#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) - -#endif /* GL_ATI_separate_stencil */ - -/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ - -#ifndef GL_ATI_shader_texture_lod -#define GL_ATI_shader_texture_lod 1 - -#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) - -#endif /* GL_ATI_shader_texture_lod */ - -/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 - -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 - -#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) - -#endif /* GL_ATI_text_fragment_shader */ - -/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ - -#ifndef GL_ATI_texture_compression_3dc -#define GL_ATI_texture_compression_3dc 1 - -#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 - -#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) - -#endif /* GL_ATI_texture_compression_3dc */ - -/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 - -#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) - -#endif /* GL_ATI_texture_env_combine3 */ - -/* -------------------------- GL_ATI_texture_float ------------------------- */ - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 - -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F - -#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) - -#endif /* GL_ATI_texture_float */ - -/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 - -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 - -#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) - -#endif /* GL_ATI_texture_mirror_once */ - -/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 - -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 - -typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); -typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); -typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); - -#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) -#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) -#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) -#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) -#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) -#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) -#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) -#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) -#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) -#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) -#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) -#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) - -#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) - -#endif /* GL_ATI_vertex_array_object */ - -/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); - -#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) -#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) -#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) - -#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) - -#endif /* GL_ATI_vertex_attrib_array_object */ - -/* ------------------------- GL_ATI_vertex_streams ------------------------- */ - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 - -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_SOURCE_ATI 0x876C -#define GL_VERTEX_STREAM0_ATI 0x876D -#define GL_VERTEX_STREAM1_ATI 0x876E -#define GL_VERTEX_STREAM2_ATI 0x876F -#define GL_VERTEX_STREAM3_ATI 0x8770 -#define GL_VERTEX_STREAM4_ATI 0x8771 -#define GL_VERTEX_STREAM5_ATI 0x8772 -#define GL_VERTEX_STREAM6_ATI 0x8773 -#define GL_VERTEX_STREAM7_ATI 0x8774 - -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); - -#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) -#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) -#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) -#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) -#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) -#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) -#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) -#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) -#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) -#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) -#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) -#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) -#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) -#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) -#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) -#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) -#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) -#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) -#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) -#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) -#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) -#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) -#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) -#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) -#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) -#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) -#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) -#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) -#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) -#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) -#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) -#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) -#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) -#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) -#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) -#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) -#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) - -#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) - -#endif /* GL_ATI_vertex_streams */ - -/* --------------------------- GL_EXT_422_pixels --------------------------- */ - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 - -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF - -#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) - -#endif /* GL_EXT_422_pixels */ - -/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ - -#ifndef GL_EXT_Cg_shader -#define GL_EXT_Cg_shader 1 - -#define GL_CG_VERTEX_SHADER_EXT 0x890E -#define GL_CG_FRAGMENT_SHADER_EXT 0x890F - -#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) - -#endif /* GL_EXT_Cg_shader */ - -/* ------------------------------ GL_EXT_abgr ------------------------------ */ - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 - -#define GL_ABGR_EXT 0x8000 - -#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) - -#endif /* GL_EXT_abgr */ - -/* ------------------------------ GL_EXT_bgra ------------------------------ */ - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 - -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 - -#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) - -#endif /* GL_EXT_bgra */ - -/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 - -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF - -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); - -#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) -#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) -#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) - -#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) - -#endif /* GL_EXT_bindable_uniform */ - -/* --------------------------- GL_EXT_blend_color -------------------------- */ - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 - -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 - -typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - -#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) - -#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) - -#endif /* GL_EXT_blend_color */ - -/* --------------------- GL_EXT_blend_equation_separate -------------------- */ - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 - -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); - -#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) - -#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) - -#endif /* GL_EXT_blend_equation_separate */ - -/* ----------------------- GL_EXT_blend_func_separate ---------------------- */ - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 - -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB - -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); - -#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) - -#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) - -#endif /* GL_EXT_blend_func_separate */ - -/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 - -#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) - -#endif /* GL_EXT_blend_logic_op */ - -/* -------------------------- GL_EXT_blend_minmax -------------------------- */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 - -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); - -#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) - -#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) - -#endif /* GL_EXT_blend_minmax */ - -/* ------------------------- GL_EXT_blend_subtract ------------------------- */ - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 - -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B - -#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) - -#endif /* GL_EXT_blend_subtract */ - -/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 - -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 - -#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) - -#endif /* GL_EXT_clip_volume_hint */ - -/* ------------------------------ GL_EXT_cmyka ----------------------------- */ - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 - -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F - -#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) - -#endif /* GL_EXT_cmyka */ - -/* ------------------------- GL_EXT_color_subtable ------------------------- */ - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); - -#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) -#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) - -#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) - -#endif /* GL_EXT_color_subtable */ - -/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 - -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 - -typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); - -#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) -#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) - -#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) - -#endif /* GL_EXT_compiled_vertex_array */ - -/* --------------------------- GL_EXT_convolution -------------------------- */ - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 - -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 - -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); - -#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) -#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) -#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) -#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) -#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) -#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) -#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) -#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) -#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) -#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) -#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) -#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) -#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) - -#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) - -#endif /* GL_EXT_convolution */ - -/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 - -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 - -typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); - -#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) -#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) - -#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) - -#endif /* GL_EXT_coordinate_frame */ - -/* -------------------------- GL_EXT_copy_texture -------------------------- */ - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 - -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) -#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) -#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) -#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) -#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) - -#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) - -#endif /* GL_EXT_copy_texture */ - -/* --------------------------- GL_EXT_cull_vertex -------------------------- */ - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 - -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC - -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); - -#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) -#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) - -#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) - -#endif /* GL_EXT_cull_vertex */ - -/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 - -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 - -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); - -#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) - -#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) - -#endif /* GL_EXT_depth_bounds_test */ - -/* ----------------------- GL_EXT_direct_state_access ---------------------- */ - -#ifndef GL_EXT_direct_state_access -#define GL_EXT_direct_state_access 1 - -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F - -typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); -typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid** param); -typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid** param); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); -typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); - -#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) -#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) -#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) -#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) -#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) -#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) -#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) -#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) -#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) -#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) -#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) -#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) -#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) -#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) -#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) -#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) -#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) -#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) -#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) -#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) -#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) -#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) -#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) -#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) -#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) -#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) -#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) -#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) -#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) -#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) -#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) -#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) -#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) -#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) -#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) -#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) -#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) -#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) -#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) -#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) -#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) -#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) -#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) -#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) -#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) -#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) -#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) -#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) -#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) -#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) -#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) -#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) -#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) -#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) -#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) -#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) -#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) -#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) -#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) -#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) -#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) -#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) -#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) -#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) -#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) -#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) -#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) -#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) -#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) -#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) -#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) -#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) -#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) -#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) -#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) -#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) -#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) -#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) -#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) -#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) -#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) -#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) -#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) -#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) -#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) -#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) -#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) -#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) -#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) -#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) -#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) -#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) -#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) -#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) -#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) -#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) -#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) -#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) -#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) -#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) -#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) -#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) -#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) -#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) -#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) -#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) -#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) -#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) -#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) -#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) -#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) -#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) -#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) -#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) -#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) -#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) -#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) -#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) -#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) -#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) -#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) -#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) -#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) -#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) -#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) -#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) -#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) -#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) -#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) -#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) -#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) -#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) -#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) -#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) -#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) -#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) -#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) -#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) -#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) -#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) -#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) -#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) -#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) -#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) -#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) -#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) -#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) -#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) -#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) -#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) -#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) -#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) -#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) -#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) -#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) -#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) -#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) -#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) -#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) -#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) -#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) -#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) -#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) -#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) -#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) -#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) -#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) -#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) -#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) -#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) -#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) -#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) -#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) -#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) -#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) -#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) -#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) -#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) -#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) -#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) -#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) -#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) -#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) -#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) -#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) -#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) -#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) -#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) -#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) -#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) -#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) -#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) -#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) -#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) -#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) -#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) -#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) -#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) -#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) -#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) -#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) -#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) -#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) -#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) -#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) -#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) -#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) -#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) -#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) -#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) -#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) -#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) -#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) - -#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) - -#endif /* GL_EXT_direct_state_access */ - -/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 - -typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); -typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); - -#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) -#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) -#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) -#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) -#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) -#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) - -#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) - -#endif /* GL_EXT_draw_buffers2 */ - -/* ------------------------- GL_EXT_draw_instanced ------------------------- */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); - -#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) -#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) - -#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) - -#endif /* GL_EXT_draw_instanced */ - -/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 - -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 - -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); - -#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) - -#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) - -#endif /* GL_EXT_draw_range_elements */ - -/* ---------------------------- GL_EXT_fog_coord --------------------------- */ - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 - -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 - -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); - -#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) -#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) -#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) -#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) -#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) - -#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) - -#endif /* GL_EXT_fog_coord */ - -/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ - -#ifndef GL_EXT_fragment_lighting -#define GL_EXT_fragment_lighting 1 - -#define GL_FRAGMENT_LIGHTING_EXT 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 -#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 -#define GL_LIGHT_ENV_MODE_EXT 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B -#define GL_FRAGMENT_LIGHT0_EXT 0x840C -#define GL_FRAGMENT_LIGHT7_EXT 0x8413 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); - -#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) -#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) -#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) -#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) -#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) -#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) -#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) -#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) -#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) -#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) -#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) -#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) -#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) -#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) -#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) -#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) -#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) -#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) - -#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) - -#endif /* GL_EXT_fragment_lighting */ - -/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 - -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA - -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - -#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) - -#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) - -#endif /* GL_EXT_framebuffer_blit */ - -/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 - -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) - -#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) - -#endif /* GL_EXT_framebuffer_multisample */ - -/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) -#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) -#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) -#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) -#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) -#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) -#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) -#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) -#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) -#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) -#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) -#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) -#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) -#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) -#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) -#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) -#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) - -#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) - -#endif /* GL_EXT_framebuffer_object */ - -/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA - -#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) - -#endif /* GL_EXT_framebuffer_sRGB */ - -/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_EXT 0xA -#define GL_LINE_STRIP_ADJACENCY_EXT 0xB -#define GL_TRIANGLES_ADJACENCY_EXT 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) -#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) -#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) -#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) - -#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) - -#endif /* GL_EXT_geometry_shader4 */ - -/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); - -#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) -#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) - -#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) - -#endif /* GL_EXT_gpu_program_parameters */ - -/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); - -#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) -#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) -#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) -#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) -#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) -#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) -#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) -#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) -#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) -#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) -#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) -#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) -#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) -#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) -#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) -#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) -#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) -#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) -#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) -#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) -#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) -#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) -#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) -#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) -#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) -#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) -#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) -#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) -#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) -#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) -#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) -#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) -#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) -#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) - -#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) - -#endif /* GL_EXT_gpu_shader4 */ - -/* ---------------------------- GL_EXT_histogram --------------------------- */ - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 - -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 - -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); - -#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) -#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) -#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) -#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) -#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) -#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) -#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) -#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) -#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) -#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) - -#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) - -#endif /* GL_EXT_histogram */ - -/* ----------------------- GL_EXT_index_array_formats ---------------------- */ - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 - -#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) - -#endif /* GL_EXT_index_array_formats */ - -/* --------------------------- GL_EXT_index_func --------------------------- */ - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 - -typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); - -#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) - -#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) - -#endif /* GL_EXT_index_func */ - -/* ------------------------- GL_EXT_index_material ------------------------- */ - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 - -typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) - -#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) - -#endif /* GL_EXT_index_material */ - -/* -------------------------- GL_EXT_index_texture ------------------------- */ - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 - -#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) - -#endif /* GL_EXT_index_texture */ - -/* -------------------------- GL_EXT_light_texture ------------------------- */ - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 - -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 - -typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) -#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) -#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) - -#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) - -#endif /* GL_EXT_light_texture */ - -/* ------------------------- GL_EXT_misc_attribute ------------------------- */ - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 - -#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) - -#endif /* GL_EXT_misc_attribute */ - -/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); - -#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) -#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) - -#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) - -#endif /* GL_EXT_multi_draw_arrays */ - -/* --------------------------- GL_EXT_multisample -------------------------- */ - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 - -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); - -#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) -#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) - -#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) - -#endif /* GL_EXT_multisample */ - -/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 - -#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) - -#endif /* GL_EXT_packed_depth_stencil */ - -/* -------------------------- GL_EXT_packed_float -------------------------- */ - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 - -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C - -#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) - -#endif /* GL_EXT_packed_float */ - -/* -------------------------- GL_EXT_packed_pixels ------------------------- */ - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 - -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 - -#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) - -#endif /* GL_EXT_packed_pixels */ - -/* ------------------------ GL_EXT_paletted_texture ------------------------ */ - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 - -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 -#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); - -#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) -#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) -#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) -#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) - -#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) - -#endif /* GL_EXT_paletted_texture */ - -/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF - -#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) - -#endif /* GL_EXT_pixel_buffer_object */ - -/* ------------------------- GL_EXT_pixel_transform ------------------------ */ - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 - -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 - -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) -#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) -#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) -#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) -#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) -#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) - -#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) - -#endif /* GL_EXT_pixel_transform */ - -/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 - -#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) - -#endif /* GL_EXT_pixel_transform_color_table */ - -/* ------------------------ GL_EXT_point_parameters ------------------------ */ - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 - -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); - -#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) -#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) - -#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) - -#endif /* GL_EXT_point_parameters */ - -/* ------------------------- GL_EXT_polygon_offset ------------------------- */ - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 - -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 - -typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); - -#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) - -#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) - -#endif /* GL_EXT_polygon_offset */ - -/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ - -#ifndef GL_EXT_provoking_vertex -#define GL_EXT_provoking_vertex 1 - -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_PROVOKING_VERTEX_EXT 0x8E4F - -typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); - -#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) - -#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) - -#endif /* GL_EXT_provoking_vertex */ - -/* ------------------------- GL_EXT_rescale_normal ------------------------- */ - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 - -#define GL_RESCALE_NORMAL_EXT 0x803A - -#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) - -#endif /* GL_EXT_rescale_normal */ - -/* -------------------------- GL_EXT_scene_marker -------------------------- */ - -#ifndef GL_EXT_scene_marker -#define GL_EXT_scene_marker 1 - -typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); - -#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) -#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) - -#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) - -#endif /* GL_EXT_scene_marker */ - -/* ------------------------- GL_EXT_secondary_color ------------------------ */ - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 - -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E - -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); - -#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) -#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) -#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) -#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) -#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) -#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) -#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) -#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) -#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) -#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) -#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) -#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) -#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) -#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) -#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) -#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) -#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) - -#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) - -#endif /* GL_EXT_secondary_color */ - -/* --------------------- GL_EXT_separate_shader_objects -------------------- */ - -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 - -#define GL_ACTIVE_PROGRAM_EXT 0x8B8D - -typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const char* string); -typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); - -#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) -#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) -#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) - -#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) - -#endif /* GL_EXT_separate_shader_objects */ - -/* --------------------- GL_EXT_separate_specular_color -------------------- */ - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 - -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA - -#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) - -#endif /* GL_EXT_separate_specular_color */ - -/* --------------------- GL_EXT_shader_image_load_store -------------------- */ - -#ifndef GL_EXT_shader_image_load_store -#define GL_EXT_shader_image_load_store 1 - -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 -#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 -#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 -#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 -#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 -#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 -#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 -#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 -#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 -#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 -#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 -#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A -#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B -#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C -#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D -#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E -#define GL_IMAGE_1D_EXT 0x904C -#define GL_IMAGE_2D_EXT 0x904D -#define GL_IMAGE_3D_EXT 0x904E -#define GL_IMAGE_2D_RECT_EXT 0x904F -#define GL_IMAGE_CUBE_EXT 0x9050 -#define GL_IMAGE_BUFFER_EXT 0x9051 -#define GL_IMAGE_1D_ARRAY_EXT 0x9052 -#define GL_IMAGE_2D_ARRAY_EXT 0x9053 -#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 -#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 -#define GL_INT_IMAGE_1D_EXT 0x9057 -#define GL_INT_IMAGE_2D_EXT 0x9058 -#define GL_INT_IMAGE_3D_EXT 0x9059 -#define GL_INT_IMAGE_2D_RECT_EXT 0x905A -#define GL_INT_IMAGE_CUBE_EXT 0x905B -#define GL_INT_IMAGE_BUFFER_EXT 0x905C -#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D -#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E -#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F -#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 -#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 -#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 -#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C -#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D -#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E -#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF - -typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); -typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); - -#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) -#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) - -#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) - -#endif /* GL_EXT_shader_image_load_store */ - -/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 - -#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) - -#endif /* GL_EXT_shadow_funcs */ - -/* --------------------- GL_EXT_shared_texture_palette --------------------- */ - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 - -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB - -#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) - -#endif /* GL_EXT_shared_texture_palette */ - -/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 - -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 - -#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) - -#endif /* GL_EXT_stencil_clear_tag */ - -/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 - -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 - -typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); - -#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) - -#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) - -#endif /* GL_EXT_stencil_two_side */ - -/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 - -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 - -#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) - -#endif /* GL_EXT_stencil_wrap */ - -/* --------------------------- GL_EXT_subtexture --------------------------- */ - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 - -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); - -#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) -#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) -#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) - -#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) - -#endif /* GL_EXT_subtexture */ - -/* ----------------------------- GL_EXT_texture ---------------------------- */ - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 - -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 - -#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) - -#endif /* GL_EXT_texture */ - -/* ---------------------------- GL_EXT_texture3D --------------------------- */ - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 - -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); - -#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) - -#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) - -#endif /* GL_EXT_texture3D */ - -/* -------------------------- GL_EXT_texture_array ------------------------- */ - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 - -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D - -#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) - -#endif /* GL_EXT_texture_array */ - -/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) - -#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) - -#endif /* GL_EXT_texture_buffer_object */ - -/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ - -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 - -#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) - -#endif /* GL_EXT_texture_compression_dxt1 */ - -/* -------------------- GL_EXT_texture_compression_latc -------------------- */ - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 - -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 - -#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) - -#endif /* GL_EXT_texture_compression_latc */ - -/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE - -#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) - -#endif /* GL_EXT_texture_compression_rgtc */ - -/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 - -#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) - -#endif /* GL_EXT_texture_compression_s3tc */ - -/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ - -#ifndef GL_EXT_texture_cube_map -#define GL_EXT_texture_cube_map 1 - -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C - -#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) - -#endif /* GL_EXT_texture_cube_map */ - -/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ - -#ifndef GL_EXT_texture_edge_clamp -#define GL_EXT_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_EXT 0x812F - -#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) - -#endif /* GL_EXT_texture_edge_clamp */ - -/* --------------------------- GL_EXT_texture_env -------------------------- */ - -#ifndef GL_EXT_texture_env -#define GL_EXT_texture_env 1 - -#define GL_TEXTURE_ENV0_EXT 0 -#define GL_ENV_BLEND_EXT 0 -#define GL_TEXTURE_ENV_SHIFT_EXT 0 -#define GL_ENV_REPLACE_EXT 0 -#define GL_ENV_ADD_EXT 0 -#define GL_ENV_SUBTRACT_EXT 0 -#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 -#define GL_ENV_REVERSE_SUBTRACT_EXT 0 -#define GL_ENV_REVERSE_BLEND_EXT 0 -#define GL_ENV_COPY_EXT 0 -#define GL_ENV_MODULATE_EXT 0 - -#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) - -#endif /* GL_EXT_texture_env */ - -/* ------------------------- GL_EXT_texture_env_add ------------------------ */ - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 - -#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) - -#endif /* GL_EXT_texture_env_add */ - -/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 - -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A - -#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) - -#endif /* GL_EXT_texture_env_combine */ - -/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 - -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 - -#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) - -#endif /* GL_EXT_texture_env_dot3 */ - -/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 - -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF - -#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) - -#endif /* GL_EXT_texture_filter_anisotropic */ - -/* ------------------------- GL_EXT_texture_integer ------------------------ */ - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 - -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E - -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); - -#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) -#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) -#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) -#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) -#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) -#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) - -#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) - -#endif /* GL_EXT_texture_integer */ - -/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 - -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 - -#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) - -#endif /* GL_EXT_texture_lod_bias */ - -/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 - -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 - -#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) - -#endif /* GL_EXT_texture_mirror_clamp */ - -/* ------------------------- GL_EXT_texture_object ------------------------- */ - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 - -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A - -typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); -typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); -typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); -typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); - -#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) -#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) -#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) -#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) -#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) -#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) - -#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) - -#endif /* GL_EXT_texture_object */ - -/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 - -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF - -typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); - -#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) - -#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) - -#endif /* GL_EXT_texture_perturb_normal */ - -/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ - -#ifndef GL_EXT_texture_rectangle -#define GL_EXT_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 - -#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) - -#endif /* GL_EXT_texture_rectangle */ - -/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F - -#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) - -#endif /* GL_EXT_texture_sRGB */ - -/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 - -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F - -#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) - -#endif /* GL_EXT_texture_shared_exponent */ - -/* -------------------------- GL_EXT_texture_snorm ------------------------- */ - -#ifndef GL_EXT_texture_snorm -#define GL_EXT_texture_snorm 1 - -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_ALPHA_SNORM 0x9010 -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_ALPHA8_SNORM 0x9014 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_ALPHA16_SNORM 0x9018 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_INTENSITY16_SNORM 0x901B - -#define GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) - -#endif /* GL_EXT_texture_snorm */ - -/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ - -#ifndef GL_EXT_texture_swizzle -#define GL_EXT_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 - -#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) - -#endif /* GL_EXT_texture_swizzle */ - -/* --------------------------- GL_EXT_timer_query -------------------------- */ - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 - -#define GL_TIME_ELAPSED_EXT 0x88BF - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); - -#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) -#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) - -#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) - -#endif /* GL_EXT_timer_query */ - -/* ----------------------- GL_EXT_transform_feedback ----------------------- */ - -#ifndef GL_EXT_transform_feedback -#define GL_EXT_transform_feedback 1 - -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F - -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); - -#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) -#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) -#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) -#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) -#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) -#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) -#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) - -#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) - -#endif /* GL_EXT_transform_feedback */ - -/* -------------------------- GL_EXT_vertex_array -------------------------- */ - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 - -#define GL_DOUBLE_EXT 0x140A -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 - -typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); - -#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) -#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) -#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) -#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) -#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) -#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) -#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) -#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) - -#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) - -#endif /* GL_EXT_vertex_array */ - -/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ - -#ifndef GL_EXT_vertex_array_bgra -#define GL_EXT_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) - -#endif /* GL_EXT_vertex_array_bgra */ - -/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ - -#ifndef GL_EXT_vertex_attrib_64bit -#define GL_EXT_vertex_attrib_64bit 1 - -#define GL_DOUBLE_MAT2_EXT 0x8F46 -#define GL_DOUBLE_MAT3_EXT 0x8F47 -#define GL_DOUBLE_MAT4_EXT 0x8F48 -#define GL_DOUBLE_VEC2_EXT 0x8FFC -#define GL_DOUBLE_VEC3_EXT 0x8FFD -#define GL_DOUBLE_VEC4_EXT 0x8FFE - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - -#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) -#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) -#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) -#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) -#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) -#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) -#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) -#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) -#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) -#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) -#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) - -#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) - -#endif /* GL_EXT_vertex_attrib_64bit */ - -/* -------------------------- GL_EXT_vertex_shader ------------------------- */ - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 - -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED - -typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); -typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); -typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); -typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); - -#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) -#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) -#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) -#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) -#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) -#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) -#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) -#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) -#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) -#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) -#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) -#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) -#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) -#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) -#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) -#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) -#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) -#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) -#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) -#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) -#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) -#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) -#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) -#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) -#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) -#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) -#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) -#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) -#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) -#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) -#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) -#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) -#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) -#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) -#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) -#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) -#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) -#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) -#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) -#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) -#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) -#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) - -#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) - -#endif /* GL_EXT_vertex_shader */ - -/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 - -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 - -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); - -#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) -#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) -#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) - -#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) - -#endif /* GL_EXT_vertex_weighting */ - -/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ - -#ifndef GL_GREMEDY_frame_terminator -#define GL_GREMEDY_frame_terminator 1 - -typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); - -#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) - -#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) - -#endif /* GL_GREMEDY_frame_terminator */ - -/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 - -typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); - -#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) - -#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) - -#endif /* GL_GREMEDY_string_marker */ - -/* --------------------- GL_HP_convolution_border_modes -------------------- */ - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 - -#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) - -#endif /* GL_HP_convolution_border_modes */ - -/* ------------------------- GL_HP_image_transform ------------------------- */ - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 - -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) -#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) -#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) -#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) -#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) -#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) - -#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) - -#endif /* GL_HP_image_transform */ - -/* -------------------------- GL_HP_occlusion_test ------------------------- */ - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 - -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 - -#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) - -#endif /* GL_HP_occlusion_test */ - -/* ------------------------- GL_HP_texture_lighting ------------------------ */ - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 - -#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) - -#endif /* GL_HP_texture_lighting */ - -/* --------------------------- GL_IBM_cull_vertex -------------------------- */ - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 - -#define GL_CULL_VERTEX_IBM 103050 - -#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) - -#endif /* GL_IBM_cull_vertex */ - -/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); - -#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) -#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) - -#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) - -#endif /* GL_IBM_multimode_draw_arrays */ - -/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 - -#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 - -#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) - -#endif /* GL_IBM_rasterpos_clip */ - -/* --------------------------- GL_IBM_static_data -------------------------- */ - -#ifndef GL_IBM_static_data -#define GL_IBM_static_data 1 - -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 - -#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) - -#endif /* GL_IBM_static_data */ - -/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_IBM_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_IBM 0x8370 - -#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) - -#endif /* GL_IBM_texture_mirrored_repeat */ - -/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 - -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); - -#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) -#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) -#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) -#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) -#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) -#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) -#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) -#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) - -#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) - -#endif /* GL_IBM_vertex_array_lists */ - -/* -------------------------- GL_INGR_color_clamp -------------------------- */ - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 - -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 - -#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) - -#endif /* GL_INGR_color_clamp */ - -/* ------------------------- GL_INGR_interlace_read ------------------------ */ - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 - -#define GL_INTERLACE_READ_INGR 0x8568 - -#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) - -#endif /* GL_INGR_interlace_read */ - -/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 - -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); - -#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) -#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) -#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) -#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) - -#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) - -#endif /* GL_INTEL_parallel_arrays */ - -/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ - -#ifndef GL_INTEL_texture_scissor -#define GL_INTEL_texture_scissor 1 - -typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); -typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); - -#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) -#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) - -#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) - -#endif /* GL_INTEL_texture_scissor */ - -/* -------------------------- GL_KTX_buffer_region ------------------------- */ - -#ifndef GL_KTX_buffer_region -#define GL_KTX_buffer_region 1 - -#define GL_KTX_FRONT_REGION 0x0 -#define GL_KTX_BACK_REGION 0x1 -#define GL_KTX_Z_REGION 0x2 -#define GL_KTX_STENCIL_REGION 0x3 - -typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); -typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glBufferRegionEnabledEXT GLEW_GET_FUN(__glewBufferRegionEnabledEXT) -#define glDeleteBufferRegionEXT GLEW_GET_FUN(__glewDeleteBufferRegionEXT) -#define glDrawBufferRegionEXT GLEW_GET_FUN(__glewDrawBufferRegionEXT) -#define glNewBufferRegionEXT GLEW_GET_FUN(__glewNewBufferRegionEXT) -#define glReadBufferRegionEXT GLEW_GET_FUN(__glewReadBufferRegionEXT) - -#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) - -#endif /* GL_KTX_buffer_region */ - -/* ------------------------- GL_MESAX_texture_stack ------------------------ */ - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 - -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E - -#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) - -#endif /* GL_MESAX_texture_stack */ - -/* -------------------------- GL_MESA_pack_invert -------------------------- */ - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 - -#define GL_PACK_INVERT_MESA 0x8758 - -#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) - -#endif /* GL_MESA_pack_invert */ - -/* ------------------------- GL_MESA_resize_buffers ------------------------ */ - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 - -typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); - -#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) - -#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) - -#endif /* GL_MESA_resize_buffers */ - -/* --------------------------- GL_MESA_window_pos -------------------------- */ - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); - -#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) -#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) -#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) -#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) -#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) -#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) -#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) -#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) -#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) -#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) -#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) -#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) -#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) -#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) -#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) -#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) -#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) -#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) -#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) -#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) -#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) -#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) -#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) -#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) - -#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) - -#endif /* GL_MESA_window_pos */ - -/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 - -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 - -#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) - -#endif /* GL_MESA_ycbcr_texture */ - -/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ - -#ifndef GL_NVX_gpu_memory_info -#define GL_NVX_gpu_memory_info 1 - -#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 -#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 -#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 -#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A -#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B - -#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) - -#endif /* GL_NVX_gpu_memory_info */ - -/* --------------------------- GL_NV_blend_square -------------------------- */ - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 - -#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) - -#endif /* GL_NV_blend_square */ - -/* ------------------------ GL_NV_conditional_render ----------------------- */ - -#ifndef GL_NV_conditional_render -#define GL_NV_conditional_render 1 - -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); - -#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) -#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) - -#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) - -#endif /* GL_NV_conditional_render */ - -/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 - -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F - -#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) - -#endif /* GL_NV_copy_depth_to_color */ - -/* ---------------------------- GL_NV_copy_image --------------------------- */ - -#ifndef GL_NV_copy_image -#define GL_NV_copy_image 1 - -typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); - -#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) - -#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) - -#endif /* GL_NV_copy_image */ - -/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); - -#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) -#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) -#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) - -#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) - -#endif /* GL_NV_depth_buffer_float */ - -/* --------------------------- GL_NV_depth_clamp --------------------------- */ - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 - -#define GL_DEPTH_CLAMP_NV 0x864F - -#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) - -#endif /* GL_NV_depth_clamp */ - -/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ - -#ifndef GL_NV_depth_range_unclamped -#define GL_NV_depth_range_unclamped 1 - -#define GL_SAMPLE_COUNT_BITS_NV 0x8864 -#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 -#define GL_QUERY_RESULT_NV 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 -#define GL_SAMPLE_COUNT_NV 0x8914 - -#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) - -#endif /* GL_NV_depth_range_unclamped */ - -/* ---------------------------- GL_NV_evaluators --------------------------- */ - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 - -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 - -typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) -#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) -#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) -#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) -#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) -#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) -#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) -#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) -#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) - -#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) - -#endif /* GL_NV_evaluators */ - -/* ----------------------- GL_NV_explicit_multisample ---------------------- */ - -#ifndef GL_NV_explicit_multisample -#define GL_NV_explicit_multisample 1 - -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); - -#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) -#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) -#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) - -#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) - -#endif /* GL_NV_explicit_multisample */ - -/* ------------------------------ GL_NV_fence ------------------------------ */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 - -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); -typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); - -#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) -#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) -#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) -#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) -#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) -#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) -#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) - -#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) - -#endif /* GL_NV_fence */ - -/* --------------------------- GL_NV_float_buffer -------------------------- */ - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 - -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E - -#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) - -#endif /* GL_NV_float_buffer */ - -/* --------------------------- GL_NV_fog_distance -------------------------- */ - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 - -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C - -#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) - -#endif /* GL_NV_fog_distance */ - -/* ------------------------- GL_NV_fragment_program ------------------------ */ - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 - -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); - -#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) -#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) -#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) -#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) -#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) -#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) - -#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) - -#endif /* GL_NV_fragment_program */ - -/* ------------------------ GL_NV_fragment_program2 ------------------------ */ - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 - -#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) - -#endif /* GL_NV_fragment_program2 */ - -/* ------------------------ GL_NV_fragment_program4 ------------------------ */ - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 - -#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) - -#endif /* GL_NV_fragment_program4 */ - -/* --------------------- GL_NV_fragment_program_option --------------------- */ - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 - -#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) - -#endif /* GL_NV_fragment_program_option */ - -/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 - -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) - -#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) - -#endif /* GL_NV_framebuffer_multisample_coverage */ - -/* ------------------------ GL_NV_geometry_program4 ------------------------ */ - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 - -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 - -typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); - -#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) - -#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) - -#endif /* GL_NV_geometry_program4 */ - -/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 - -#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) - -#endif /* GL_NV_geometry_shader4 */ - -/* --------------------------- GL_NV_gpu_program4 -------------------------- */ - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 - -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); - -#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) -#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) -#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) -#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) -#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) -#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) -#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) -#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) -#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) -#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) -#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) -#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) - -#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) - -#endif /* GL_NV_gpu_program4 */ - -/* --------------------------- GL_NV_gpu_program5 -------------------------- */ - -#ifndef GL_NV_gpu_program5 -#define GL_NV_gpu_program5 1 - -#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C -#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F - -#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) - -#endif /* GL_NV_gpu_program5 */ - -/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ - -#ifndef GL_NV_gpu_program_fp64 -#define GL_NV_gpu_program_fp64 1 - -#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) - -#endif /* GL_NV_gpu_program_fp64 */ - -/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ - -#ifndef GL_NV_gpu_shader5 -#define GL_NV_gpu_shader5 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F -#define GL_INT8_NV 0x8FE0 -#define GL_INT8_VEC2_NV 0x8FE1 -#define GL_INT8_VEC3_NV 0x8FE2 -#define GL_INT8_VEC4_NV 0x8FE3 -#define GL_INT16_NV 0x8FE4 -#define GL_INT16_VEC2_NV 0x8FE5 -#define GL_INT16_VEC3_NV 0x8FE6 -#define GL_INT16_VEC4_NV 0x8FE7 -#define GL_INT64_VEC2_NV 0x8FE9 -#define GL_INT64_VEC3_NV 0x8FEA -#define GL_INT64_VEC4_NV 0x8FEB -#define GL_UNSIGNED_INT8_NV 0x8FEC -#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED -#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE -#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF -#define GL_UNSIGNED_INT16_NV 0x8FF0 -#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 -#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 -#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 -#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 -#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 -#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB - -typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) -#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) -#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) -#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) -#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) -#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) -#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) -#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) -#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) -#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) -#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) -#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) -#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) -#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) -#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) -#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) -#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) -#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) -#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) -#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) -#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) -#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) -#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) -#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) -#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) -#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) -#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) -#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) -#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) -#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) -#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) -#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) -#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) -#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) - -#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) - -#endif /* GL_NV_gpu_shader5 */ - -/* ---------------------------- GL_NV_half_float --------------------------- */ - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 - -#define GL_HALF_FLOAT_NV 0x140B - -typedef unsigned short GLhalf; - -typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); -typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); -typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); - -#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) -#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) -#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) -#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) -#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) -#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) -#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) -#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) -#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) -#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) -#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) -#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) -#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) -#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) -#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) -#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) -#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) -#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) -#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) -#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) -#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) -#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) -#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) -#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) -#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) -#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) -#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) -#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) -#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) -#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) -#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) -#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) -#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) -#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) -#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) -#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) -#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) -#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) -#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) -#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) -#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) -#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) -#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) -#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) -#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) -#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) - -#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) - -#endif /* GL_NV_half_float */ - -/* ------------------------ GL_NV_light_max_exponent ----------------------- */ - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 - -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 - -#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) - -#endif /* GL_NV_light_max_exponent */ - -/* ----------------------- GL_NV_multisample_coverage ---------------------- */ - -#ifndef GL_NV_multisample_coverage -#define GL_NV_multisample_coverage 1 - -#define GL_COVERAGE_SAMPLES_NV 0x80A9 -#define GL_COLOR_SAMPLES_NV 0x8E20 - -#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) - -#endif /* GL_NV_multisample_coverage */ - -/* --------------------- GL_NV_multisample_filter_hint --------------------- */ - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 - -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 - -#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) - -#endif /* GL_NV_multisample_filter_hint */ - -/* ------------------------- GL_NV_occlusion_query ------------------------- */ - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 - -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 - -typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); - -#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) -#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) -#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) -#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) -#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) -#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) -#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) - -#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) - -#endif /* GL_NV_occlusion_query */ - -/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA - -#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) - -#endif /* GL_NV_packed_depth_stencil */ - -/* --------------------- GL_NV_parameter_buffer_object --------------------- */ - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 - -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 - -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); - -#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) -#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) -#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) - -#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) - -#endif /* GL_NV_parameter_buffer_object */ - -/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ - -#ifndef GL_NV_parameter_buffer_object2 -#define GL_NV_parameter_buffer_object2 1 - -#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) - -#endif /* GL_NV_parameter_buffer_object2 */ - -/* ------------------------- GL_NV_pixel_data_range ------------------------ */ - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 - -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D - -typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); - -#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) -#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) - -#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) - -#endif /* GL_NV_pixel_data_range */ - -/* --------------------------- GL_NV_point_sprite -------------------------- */ - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 - -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); - -#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) -#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) - -#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) - -#endif /* GL_NV_point_sprite */ - -/* -------------------------- GL_NV_present_video -------------------------- */ - -#ifndef GL_NV_present_video -#define GL_NV_present_video 1 - -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B - -typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); - -#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) -#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) -#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) -#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) -#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) -#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) - -#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) - -#endif /* GL_NV_present_video */ - -/* ------------------------ GL_NV_primitive_restart ------------------------ */ - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 - -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 - -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); - -#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) -#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) - -#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) - -#endif /* GL_NV_primitive_restart */ - -/* ------------------------ GL_NV_register_combiners ----------------------- */ - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 - -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 - -typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); - -#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) -#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) -#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) -#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) -#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) -#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) -#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) -#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) -#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) -#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) -#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) -#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) -#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) - -#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) - -#endif /* GL_NV_register_combiners */ - -/* ----------------------- GL_NV_register_combiners2 ----------------------- */ - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 - -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 - -typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); - -#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) -#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) - -#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) - -#endif /* GL_NV_register_combiners2 */ - -/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ - -#ifndef GL_NV_shader_buffer_load -#define GL_NV_shader_buffer_load 1 - -#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D -#define GL_GPU_ADDRESS_NV 0x8F34 -#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 - -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); -typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); -typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); - -#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) -#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) -#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) -#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) -#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) -#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) -#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) -#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) -#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) -#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) -#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) -#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) -#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) - -#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) - -#endif /* GL_NV_shader_buffer_load */ - -/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ - -#ifndef GL_NV_tessellation_program5 -#define GL_NV_tessellation_program5 1 - -#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 -#define GL_TESS_CONTROL_PROGRAM_NV 0x891E -#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F -#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 -#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 - -#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) - -#endif /* GL_NV_tessellation_program5 */ - -/* -------------------------- GL_NV_texgen_emboss -------------------------- */ - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 - -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F - -#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) - -#endif /* GL_NV_texgen_emboss */ - -/* ------------------------ GL_NV_texgen_reflection ------------------------ */ - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 - -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 - -#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) - -#endif /* GL_NV_texgen_reflection */ - -/* ------------------------- GL_NV_texture_barrier ------------------------- */ - -#ifndef GL_NV_texture_barrier -#define GL_NV_texture_barrier 1 - -typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); - -#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) - -#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) - -#endif /* GL_NV_texture_barrier */ - -/* --------------------- GL_NV_texture_compression_vtc --------------------- */ - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 - -#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) - -#endif /* GL_NV_texture_compression_vtc */ - -/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 - -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B - -#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) - -#endif /* GL_NV_texture_env_combine4 */ - -/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 - -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F - -#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) - -#endif /* GL_NV_texture_expand_normal */ - -/* ------------------------ GL_NV_texture_rectangle ------------------------ */ - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 - -#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) - -#endif /* GL_NV_texture_rectangle */ - -/* -------------------------- GL_NV_texture_shader ------------------------- */ - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 - -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F - -#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) - -#endif /* GL_NV_texture_shader */ - -/* ------------------------- GL_NV_texture_shader2 ------------------------- */ - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 - -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D - -#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) - -#endif /* GL_NV_texture_shader2 */ - -/* ------------------------- GL_NV_texture_shader3 ------------------------- */ - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 - -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 - -#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) - -#endif /* GL_NV_texture_shader3 */ - -/* ------------------------ GL_NV_transform_feedback ----------------------- */ - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 - -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F - -typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); - -#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) -#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) -#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) -#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) -#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) -#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) -#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) -#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) -#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) -#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) -#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) - -#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) - -#endif /* GL_NV_transform_feedback */ - -/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ - -#ifndef GL_NV_transform_feedback2 -#define GL_NV_transform_feedback2 1 - -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 - -typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); -typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); -typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); - -#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) -#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) -#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) -#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) -#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) -#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) -#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) - -#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) - -#endif /* GL_NV_transform_feedback2 */ - -/* -------------------------- GL_NV_vdpau_interop -------------------------- */ - -#ifndef GL_NV_vdpau_interop -#define GL_NV_vdpau_interop 1 - -#define GL_SURFACE_STATE_NV 0x86EB -#define GL_SURFACE_REGISTERED_NV 0x86FD -#define GL_SURFACE_MAPPED_NV 0x8700 -#define GL_WRITE_DISCARD_NV 0x88BE - -typedef GLintptr GLvdpauSurfaceNV; - -typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); -typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const GLvoid*getProcAddress); -typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); -typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); -typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); -typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); - -#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) -#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) -#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) -#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) -#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) -#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) -#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) -#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) -#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) -#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) - -#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) - -#endif /* GL_NV_vdpau_interop */ - -/* ------------------------ GL_NV_vertex_array_range ----------------------- */ - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) -#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) - -#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) - -#endif /* GL_NV_vertex_array_range */ - -/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 - -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 - -#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) - -#endif /* GL_NV_vertex_array_range2 */ - -/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ - -#ifndef GL_NV_vertex_attrib_integer_64bit -#define GL_NV_vertex_attrib_integer_64bit 1 - -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); - -#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) -#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) -#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) -#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) -#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) -#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) -#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) -#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) -#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) -#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) -#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) -#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) -#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) -#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) -#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) -#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) -#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) -#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) -#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) - -#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) - -#endif /* GL_NV_vertex_attrib_integer_64bit */ - -/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ - -#ifndef GL_NV_vertex_buffer_unified_memory -#define GL_NV_vertex_buffer_unified_memory 1 - -#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E -#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F -#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 -#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 -#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 -#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 -#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 -#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 -#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 -#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 -#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 -#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 -#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A -#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B -#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C -#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D -#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E -#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F -#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 -#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 -#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 -#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 -#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 -#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 -#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 - -typedef void (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); -typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); -typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); -typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); - -#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) -#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) -#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) -#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) -#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) -#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) -#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) -#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) -#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) -#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) -#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) -#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) - -#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) - -#endif /* GL_NV_vertex_buffer_unified_memory */ - -/* -------------------------- GL_NV_vertex_program ------------------------- */ - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 - -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F - -typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); - -#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) -#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) -#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) -#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) -#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) -#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) -#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) -#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) -#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) -#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) -#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) -#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) -#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) -#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) -#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) -#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) -#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) -#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) -#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) -#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) -#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) -#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) -#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) -#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) -#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) -#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) -#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) -#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) -#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) -#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) -#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) -#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) -#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) -#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) -#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) -#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) -#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) -#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) -#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) -#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) -#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) -#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) -#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) -#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) -#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) -#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) -#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) -#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) -#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) -#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) -#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) -#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) -#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) -#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) -#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) -#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) -#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) -#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) -#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) -#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) -#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) -#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) -#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) -#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) - -#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) - -#endif /* GL_NV_vertex_program */ - -/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 - -#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) - -#endif /* GL_NV_vertex_program1_1 */ - -/* ------------------------- GL_NV_vertex_program2 ------------------------- */ - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 - -#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) - -#endif /* GL_NV_vertex_program2 */ - -/* ---------------------- GL_NV_vertex_program2_option --------------------- */ - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 - -#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) - -#endif /* GL_NV_vertex_program2_option */ - -/* ------------------------- GL_NV_vertex_program3 ------------------------- */ - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 - -#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C - -#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) - -#endif /* GL_NV_vertex_program3 */ - -/* ------------------------- GL_NV_vertex_program4 ------------------------- */ - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD - -#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) - -#endif /* GL_NV_vertex_program4 */ - -/* ------------------------ GL_OES_byte_coordinates ------------------------ */ - -#ifndef GL_OES_byte_coordinates -#define GL_OES_byte_coordinates 1 - -#define GL_BYTE 0x1400 - -#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) - -#endif /* GL_OES_byte_coordinates */ - -/* ------------------- GL_OES_compressed_paletted_texture ------------------ */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 - -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 - -#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) - -#endif /* GL_OES_compressed_paletted_texture */ - -/* --------------------------- GL_OES_read_format -------------------------- */ - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 - -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B - -#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) - -#endif /* GL_OES_read_format */ - -/* ------------------------ GL_OES_single_precision ------------------------ */ - -#ifndef GL_OES_single_precision -#define GL_OES_single_precision 1 - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); -typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - -#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) -#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) -#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) -#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) -#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) -#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) - -#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) - -#endif /* GL_OES_single_precision */ - -/* ---------------------------- GL_OML_interlace --------------------------- */ - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 - -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 - -#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) - -#endif /* GL_OML_interlace */ - -/* ---------------------------- GL_OML_resample ---------------------------- */ - -#ifndef GL_OML_resample -#define GL_OML_resample 1 - -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 - -#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) - -#endif /* GL_OML_resample */ - -/* ---------------------------- GL_OML_subsample --------------------------- */ - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 - -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 - -#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) - -#endif /* GL_OML_subsample */ - -/* --------------------------- GL_PGI_misc_hints --------------------------- */ - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 - -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 -#define GL_CONSERVE_MEMORY_HINT_PGI 107005 -#define GL_RECLAIM_MEMORY_HINT_PGI 107006 -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 -#define GL_ALWAYS_FAST_HINT_PGI 107020 -#define GL_ALWAYS_SOFT_HINT_PGI 107021 -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 -#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 -#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 -#define GL_STRICT_LIGHTING_HINT_PGI 107031 -#define GL_STRICT_SCISSOR_HINT_PGI 107032 -#define GL_FULL_STIPPLE_HINT_PGI 107033 -#define GL_CLIP_NEAR_HINT_PGI 107040 -#define GL_CLIP_FAR_HINT_PGI 107041 -#define GL_WIDE_LINE_HINT_PGI 107042 -#define GL_BACK_NORMALS_HINT_PGI 107043 - -#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) - -#endif /* GL_PGI_misc_hints */ - -/* -------------------------- GL_PGI_vertex_hints -------------------------- */ - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 - -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_VERTEX_DATA_HINT_PGI 107050 -#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 -#define GL_MATERIAL_SIDE_HINT_PGI 107052 -#define GL_MAX_VERTEX_HINT_PGI 107053 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 - -#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) - -#endif /* GL_PGI_vertex_hints */ - -/* ----------------------- GL_REND_screen_coordinates ---------------------- */ - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 - -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 - -#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) - -#endif /* GL_REND_screen_coordinates */ - -/* ------------------------------- GL_S3_s3tc ------------------------------ */ - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 - -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA4_DXT5_S3TC 0x83A5 - -#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) - -#endif /* GL_S3_s3tc */ - -/* -------------------------- GL_SGIS_color_range -------------------------- */ - -#ifndef GL_SGIS_color_range -#define GL_SGIS_color_range 1 - -#define GL_EXTENDED_RANGE_SGIS 0x85A5 -#define GL_MIN_RED_SGIS 0x85A6 -#define GL_MAX_RED_SGIS 0x85A7 -#define GL_MIN_GREEN_SGIS 0x85A8 -#define GL_MAX_GREEN_SGIS 0x85A9 -#define GL_MIN_BLUE_SGIS 0x85AA -#define GL_MAX_BLUE_SGIS 0x85AB -#define GL_MIN_ALPHA_SGIS 0x85AC -#define GL_MAX_ALPHA_SGIS 0x85AD - -#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) - -#endif /* GL_SGIS_color_range */ - -/* ------------------------- GL_SGIS_detail_texture ------------------------ */ - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 - -typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); - -#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) -#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) - -#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) - -#endif /* GL_SGIS_detail_texture */ - -/* -------------------------- GL_SGIS_fog_function ------------------------- */ - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 - -typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); - -#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) -#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) - -#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) - -#endif /* GL_SGIS_fog_function */ - -/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 - -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 - -#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) - -#endif /* GL_SGIS_generate_mipmap */ - -/* -------------------------- GL_SGIS_multisample -------------------------- */ - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 - -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); - -#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) -#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) - -#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) - -#endif /* GL_SGIS_multisample */ - -/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 - -#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) - -#endif /* GL_SGIS_pixel_texture */ - -/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 - -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 - -#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) - -#endif /* GL_SGIS_point_line_texgen */ - -/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 - -typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); -typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); - -#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) -#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) - -#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) - -#endif /* GL_SGIS_sharpen_texture */ - -/* --------------------------- GL_SGIS_texture4D --------------------------- */ - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); - -#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) -#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) - -#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) - -#endif /* GL_SGIS_texture4D */ - -/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_SGIS 0x812D - -#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) - -#endif /* GL_SGIS_texture_border_clamp */ - -/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_SGIS 0x812F - -#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) - -#endif /* GL_SGIS_texture_edge_clamp */ - -/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 - -typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); -typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); - -#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) -#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) - -#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) - -#endif /* GL_SGIS_texture_filter4 */ - -/* -------------------------- GL_SGIS_texture_lod -------------------------- */ - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 - -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D - -#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) - -#endif /* GL_SGIS_texture_lod */ - -/* ------------------------- GL_SGIS_texture_select ------------------------ */ - -#ifndef GL_SGIS_texture_select -#define GL_SGIS_texture_select 1 - -#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) - -#endif /* GL_SGIS_texture_select */ - -/* ----------------------------- GL_SGIX_async ----------------------------- */ - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 - -#define GL_ASYNC_MARKER_SGIX 0x8329 - -typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); -typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); - -#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) -#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) -#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) -#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) -#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) -#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) - -#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) - -#endif /* GL_SGIX_async */ - -/* ------------------------ GL_SGIX_async_histogram ------------------------ */ - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 - -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D - -#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) - -#endif /* GL_SGIX_async_histogram */ - -/* -------------------------- GL_SGIX_async_pixel -------------------------- */ - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 - -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 - -#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) - -#endif /* GL_SGIX_async_pixel */ - -/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 - -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 - -#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) - -#endif /* GL_SGIX_blend_alpha_minmax */ - -/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 - -#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) - -#endif /* GL_SGIX_clipmap */ - -/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 - -#define GL_CONVOLUTION_HINT_SGIX 0x8316 - -#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) - -#endif /* GL_SGIX_convolution_accuracy */ - -/* ------------------------- GL_SGIX_depth_texture ------------------------- */ - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 - -#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) - -#endif /* GL_SGIX_depth_texture */ - -/* -------------------------- GL_SGIX_flush_raster ------------------------- */ - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 - -typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); - -#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) - -#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) - -#endif /* GL_SGIX_flush_raster */ - -/* --------------------------- GL_SGIX_fog_offset -------------------------- */ - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 - -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 - -#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) - -#endif /* GL_SGIX_fog_offset */ - -/* -------------------------- GL_SGIX_fog_texture -------------------------- */ - -#ifndef GL_SGIX_fog_texture -#define GL_SGIX_fog_texture 1 - -#define GL_TEXTURE_FOG_SGIX 0 -#define GL_FOG_PATCHY_FACTOR_SGIX 0 -#define GL_FRAGMENT_FOG_SGIX 0 - -typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); - -#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) - -#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) - -#endif /* GL_SGIX_fog_texture */ - -/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ - -#ifndef GL_SGIX_fragment_specular_lighting -#define GL_SGIX_fragment_specular_lighting 1 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); - -#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) -#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) -#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) -#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) -#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) -#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) -#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) -#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) -#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) -#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) -#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) -#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) -#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) -#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) -#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) -#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) -#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) - -#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) - -#endif /* GL_SGIX_fragment_specular_lighting */ - -/* --------------------------- GL_SGIX_framezoom --------------------------- */ - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 - -typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); - -#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) - -#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) - -#endif /* GL_SGIX_framezoom */ - -/* --------------------------- GL_SGIX_interlace --------------------------- */ - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 - -#define GL_INTERLACE_SGIX 0x8094 - -#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) - -#endif /* GL_SGIX_interlace */ - -/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 - -#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) - -#endif /* GL_SGIX_ir_instrument1 */ - -/* ------------------------- GL_SGIX_list_priority ------------------------- */ - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 - -#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) - -#endif /* GL_SGIX_list_priority */ - -/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 - -typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); - -#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) - -#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) - -#endif /* GL_SGIX_pixel_texture */ - -/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ - -#ifndef GL_SGIX_pixel_texture_bits -#define GL_SGIX_pixel_texture_bits 1 - -#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) - -#endif /* GL_SGIX_pixel_texture_bits */ - -/* ------------------------ GL_SGIX_reference_plane ------------------------ */ - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 - -typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); - -#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) - -#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) - -#endif /* GL_SGIX_reference_plane */ - -/* ---------------------------- GL_SGIX_resample --------------------------- */ - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 - -#define GL_PACK_RESAMPLE_SGIX 0x842E -#define GL_UNPACK_RESAMPLE_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 - -#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) - -#endif /* GL_SGIX_resample */ - -/* ----------------------------- GL_SGIX_shadow ---------------------------- */ - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 - -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D - -#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) - -#endif /* GL_SGIX_shadow */ - -/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 - -#define GL_SHADOW_AMBIENT_SGIX 0x80BF - -#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) - -#endif /* GL_SGIX_shadow_ambient */ - -/* ----------------------------- GL_SGIX_sprite ---------------------------- */ - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 - -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); - -#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) -#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) -#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) -#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) - -#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) - -#endif /* GL_SGIX_sprite */ - -/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 - -typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); - -#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) - -#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) - -#endif /* GL_SGIX_tag_sample_buffer */ - -/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 - -#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) - -#endif /* GL_SGIX_texture_add_env */ - -/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 - -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B - -#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) - -#endif /* GL_SGIX_texture_coordinate_clamp */ - -/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 - -#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) - -#endif /* GL_SGIX_texture_lod_bias */ - -/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 - -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E - -#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) - -#endif /* GL_SGIX_texture_multi_buffer */ - -/* ------------------------- GL_SGIX_texture_range ------------------------- */ - -#ifndef GL_SGIX_texture_range -#define GL_SGIX_texture_range 1 - -#define GL_RGB_SIGNED_SGIX 0x85E0 -#define GL_RGBA_SIGNED_SGIX 0x85E1 -#define GL_ALPHA_SIGNED_SGIX 0x85E2 -#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 -#define GL_INTENSITY_SIGNED_SGIX 0x85E4 -#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 -#define GL_RGB16_SIGNED_SGIX 0x85E6 -#define GL_RGBA16_SIGNED_SGIX 0x85E7 -#define GL_ALPHA16_SIGNED_SGIX 0x85E8 -#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 -#define GL_INTENSITY16_SIGNED_SGIX 0x85EA -#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB -#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC -#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED -#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE -#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF -#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 -#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 -#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 -#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 -#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 -#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 -#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 -#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 -#define GL_MIN_LUMINANCE_SGIS 0x85F8 -#define GL_MAX_LUMINANCE_SGIS 0x85F9 -#define GL_MIN_INTENSITY_SGIS 0x85FA -#define GL_MAX_INTENSITY_SGIS 0x85FB - -#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) - -#endif /* GL_SGIX_texture_range */ - -/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 - -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C - -#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) - -#endif /* GL_SGIX_texture_scale_bias */ - -/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) - -#endif /* GL_SGIX_vertex_preclip */ - -/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ - -#ifndef GL_SGIX_vertex_preclip_hint -#define GL_SGIX_vertex_preclip_hint 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) - -#endif /* GL_SGIX_vertex_preclip_hint */ - -/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 - -#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) - -#endif /* GL_SGIX_ycrcb */ - -/* -------------------------- GL_SGI_color_matrix -------------------------- */ - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 - -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB - -#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) - -#endif /* GL_SGI_color_matrix */ - -/* --------------------------- GL_SGI_color_table -------------------------- */ - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 - -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); - -#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) -#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) -#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) -#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) -#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) -#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) -#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) - -#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) - -#endif /* GL_SGI_color_table */ - -/* ----------------------- GL_SGI_texture_color_table ---------------------- */ - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 - -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD - -#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) - -#endif /* GL_SGI_texture_color_table */ - -/* ------------------------- GL_SUNX_constant_data ------------------------- */ - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 - -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 - -typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); - -#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) - -#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) - -#endif /* GL_SUNX_constant_data */ - -/* -------------------- GL_SUN_convolution_border_modes -------------------- */ - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 - -#define GL_WRAP_BORDER_SUN 0x81D4 - -#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) - -#endif /* GL_SUN_convolution_border_modes */ - -/* -------------------------- GL_SUN_global_alpha -------------------------- */ - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 - -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA - -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); - -#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) -#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) -#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) -#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) -#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) -#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) -#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) -#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) - -#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) - -#endif /* GL_SUN_global_alpha */ - -/* --------------------------- GL_SUN_mesh_array --------------------------- */ - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 - -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 - -#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) - -#endif /* GL_SUN_mesh_array */ - -/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ - -#ifndef GL_SUN_read_video_pixels -#define GL_SUN_read_video_pixels 1 - -typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); - -#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) - -#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) - -#endif /* GL_SUN_read_video_pixels */ - -/* --------------------------- GL_SUN_slice_accum -------------------------- */ - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 - -#define GL_SLICE_ACCUM_SUN 0x85CC - -#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) - -#endif /* GL_SUN_slice_accum */ - -/* -------------------------- GL_SUN_triangle_list ------------------------- */ - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 - -#define GL_RESTART_SUN 0x01 -#define GL_REPLACE_MIDDLE_SUN 0x02 -#define GL_REPLACE_OLDEST_SUN 0x03 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB - -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); - -#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) -#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) -#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) -#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) -#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) -#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) -#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) - -#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) - -#endif /* GL_SUN_triangle_list */ - -/* ----------------------------- GL_SUN_vertex ----------------------------- */ - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 - -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); - -#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) -#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) -#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) -#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) -#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) -#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) -#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) -#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) -#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) -#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) -#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) -#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) -#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) -#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) -#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) -#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) -#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) -#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) -#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) -#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) -#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) -#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) -#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) -#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) -#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) -#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) -#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) -#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) -#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) - -#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) - -#endif /* GL_SUN_vertex */ - -/* -------------------------- GL_WIN_phong_shading ------------------------- */ - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 - -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB - -#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) - -#endif /* GL_WIN_phong_shading */ - -/* -------------------------- GL_WIN_specular_fog -------------------------- */ - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 - -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC - -#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) - -#endif /* GL_WIN_specular_fog */ - -/* ---------------------------- GL_WIN_swap_hint --------------------------- */ - -#ifndef GL_WIN_swap_hint -#define GL_WIN_swap_hint 1 - -typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); - -#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) - -#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) - -#endif /* GL_WIN_swap_hint */ - -/* ------------------------------------------------------------------------- */ - -#if defined(GLEW_MX) && defined(_WIN32) -#define GLEW_FUN_EXPORT -#else -#define GLEW_FUN_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) -#define GLEW_VAR_EXPORT -#else -#define GLEW_VAR_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) && defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; - -GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; -GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; -GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; -GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; -GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; -GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; -GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; -GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; -GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; -GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; -GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; -GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; - -GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; -GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; -GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; -GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; -GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; -GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; -GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; -GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; -GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; -GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; -GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; -GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; -GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; -GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; -GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; -GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; - -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; -GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; -GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; -GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; -GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; -GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; -GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; -GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; -GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; -GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; - -GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; - -GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; -GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; -GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; - -GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; -GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; -GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; -GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; - -GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; -GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; -GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; -GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; -GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; - -GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; -GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; - -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; -GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; -GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; -GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; -GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; -GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; -GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; - -GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; - -GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; - -GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; - -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; -GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; -GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; -GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DEXTPROC __glewProgramUniform1dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVEXTPROC __glewProgramUniform1dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DEXTPROC __glewProgramUniform2dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVEXTPROC __glewProgramUniform2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DEXTPROC __glewProgramUniform3dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVEXTPROC __glewProgramUniform3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DEXTPROC __glewProgramUniform4dEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVEXTPROC __glewProgramUniform4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC __glewProgramUniformMatrix2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC __glewProgramUniformMatrix2x3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC __glewProgramUniformMatrix2x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC __glewProgramUniformMatrix3dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC __glewProgramUniformMatrix3x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC __glewProgramUniformMatrix3x4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC __glewProgramUniformMatrix4dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC __glewProgramUniformMatrix4x2dvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC __glewProgramUniformMatrix4x3dvEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; -GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; -GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; -GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; -GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; -GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; -GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; -GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; -GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; -GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; -GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; - -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; -GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; - -GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; - -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; -GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; -GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; -GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; - -GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; -GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; -GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; -GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; -GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; -GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; -GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; -GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; -GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; -GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; -GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; - -GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; - -GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; -GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; -GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; -GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; -GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; - -GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; -GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; - -GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; -GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; -GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; -GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; -GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; -GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; -GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; - -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; -GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; -GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; - -GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; -GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; -GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; -GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; -GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; - -GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; -GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; -GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; -GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; -GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; -GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; -GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; - -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; -GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; - -GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; - -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; -GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; -GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; -GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; -GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; - -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; -GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; -GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; -GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; -GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; - -GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; -GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; -GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; -GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; -GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; -GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; - -GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; -GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; - -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; - -GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; -GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; -GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; -GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; -GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; -GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; -GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; -GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; -GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; - -GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; -GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; -GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; -GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; -GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; - -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; - -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; -GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; -GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; -GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; - -GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; - -GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glPNTrianglewesfATI; -GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glPNTrianglewesiATI; - -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; - -GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; -GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; -GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; -GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; -GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; - -GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; - -GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; -GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; - -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; - -GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; - -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; -GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; - -GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; -GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; -GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; -GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; - -GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; -GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; - -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; - -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; -GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; -GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; -GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; - -GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; - -GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; - -GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; -GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; - -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; - -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; - -GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; - -GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; -GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; - -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; - -GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; -GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; - -GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; -GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; - -GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; - -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; - -GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; -GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; - -GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; -GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; -GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; -GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; -GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; - -GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; - -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; - -GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; -GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; -GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; -GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; -GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; - -GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; -GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; -GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; -GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; -GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; -GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; -GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; -GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; -GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; -GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; -GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; -GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; - -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; - -GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; - -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; - -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; - -GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; -GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; - -GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDEXTPROC __glewBufferRegionEnabledEXT; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONEXTPROC __glewDeleteBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONEXTPROC __glewDrawBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONEXTPROC __glewNewBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONEXTPROC __glewReadBufferRegionEXT; - -GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; - -GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; - -GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; -GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; -GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; -GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; -GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; -GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; -GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; -GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; -GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; -GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; - -GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; -GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; - -GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; -GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; - -GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; -GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; - -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; -GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; -GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; - -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; -GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; -GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; -GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; -GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; - -GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; - -GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; -GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; - -GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; -GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; - -GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; -GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; -GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; -GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; -GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; -GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; - -GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; -GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; -GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; -GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; -GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; -GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; -GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; -GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; - -GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; -GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; -GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; -GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; -GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; -GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; -GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; -GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; -GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; -GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; -GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; - -GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; - -GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; - -GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; -GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; - -GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; -GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; - -GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; - -GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; - -GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; - -GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; - -GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; - -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; - -GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; - -GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; - -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; - -GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; - -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; - -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; - -GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; - -#if defined(GLEW_MX) && !defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; -GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; -GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; - -#ifdef GLEW_MX -}; /* GLEWContextStruct */ -#endif /* GLEW_MX */ - -/* ------------------------------------------------------------------------- */ - -/* error codes */ -#define GLEW_OK 0 -#define GLEW_NO_ERROR 0 -#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ -#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* GL 1.1 and up are not supported */ -#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* GLX 1.2 and up are not supported */ - -/* string codes */ -#define GLEW_VERSION 1 -#define GLEW_VERSION_MAJOR 2 -#define GLEW_VERSION_MINOR 3 -#define GLEW_VERSION_MICRO 4 - -/* API */ -#ifdef GLEW_MX - -typedef struct GLEWContextStruct GLEWContext; -GLEWAPI GLenum glewContextInit (GLEWContext* ctx); -GLEWAPI GLboolean glewContextIsSupported (GLEWContext* ctx, const char* name); - -#define glewInit() glewContextInit(glewGetContext()) -#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) -#ifdef _WIN32 -# define GLEW_GET_FUN(x) glewGetContext()->x -#else -# define GLEW_GET_FUN(x) x -#endif - -#else /* GLEW_MX */ - -GLEWAPI GLenum glewInit (); -GLEWAPI GLboolean glewIsSupported (const char* name); -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) -#define GLEW_GET_FUN(x) x - -#endif /* GLEW_MX */ - -GLEWAPI GLboolean glewExperimental; -GLEWAPI GLboolean glewGetExtension (const char* name); -GLEWAPI const GLubyte* glewGetErrorString (GLenum error); -GLEWAPI const GLubyte* glewGetString (GLenum name); - -#ifdef __cplusplus -} -#endif - -#ifdef GLEW_APIENTRY_DEFINED -#undef GLEW_APIENTRY_DEFINED -#undef APIENTRY -#undef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifdef GLEW_CALLBACK_DEFINED -#undef GLEW_CALLBACK_DEFINED -#undef CALLBACK -#endif - -#ifdef GLEW_WINGDIAPI_DEFINED -#undef GLEW_WINGDIAPI_DEFINED -#undef WINGDIAPI -#endif - -#undef GLAPI -/* #undef GLEWAPI */ - -#endif /* __glew_h__ */ diff --git a/sdk/Windows/2019.2/samples/ViewScene/GL/glut.h b/sdk/Windows/2019.2/samples/ViewScene/GL/glut.h deleted file mode 100755 index aa7428f..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GL/glut.h +++ /dev/null @@ -1,716 +0,0 @@ -#ifndef __glut_h__ -#define __glut_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#if defined(_WIN32) - -/* GLUT 3.7 now tries to avoid including - to avoid name space pollution, but Win32's - needs APIENTRY and WINGDIAPI defined properly. */ -# if 0 - /* This would put tons of macros and crap in our clean name space. */ -# define WIN32_LEAN_AND_MEAN -# include -# else - /* XXX This is from Win32's */ -# ifndef APIENTRY -# define GLUT_APIENTRY_DEFINED -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif - /* XXX This is from Win32's */ -# ifndef CALLBACK -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) || defined(__LCC__) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* XXX Hack for lcc compiler. It doesn't support __declspec(dllimport), just __stdcall. */ -# if defined( __LCC__ ) -# undef WINGDIAPI -# define WINGDIAPI __stdcall -# else - /* XXX This is from Win32's and */ -# ifndef WINGDIAPI -# define GLUT_WINGDIAPI_DEFINED -# define WINGDIAPI __declspec(dllimport) -# endif -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA - in your compile preprocessor options. */ -# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) -# pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */ -/* To enable automatic SGI OpenGL for Windows library usage for GLUT, - define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */ -# ifdef GLUT_USE_SGI_OPENGL -# pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */ -# pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */ -# pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */ -# else -# pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */ -# pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */ -# pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */ -# endif -# endif - -/* To disable supression of annoying warnings about floats being promoted - to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor - options. */ -# ifndef GLUT_NO_WARNING_DISABLE -# pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */ -# pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -# endif - -/* Win32 has an annoying issue where there are multiple C run-time - libraries (CRTs). If the executable is linked with a different CRT - from the GLUT DLL, the GLUT DLL will not share the same CRT static - data seen by the executable. In particular, atexit callbacks registered - in the executable will not be called if GLUT calls its (different) - exit routine). GLUT is typically built with the - "/MD" option (the CRT with multithreading DLL support), but the Visual - C++ linker default is "/ML" (the single threaded CRT). - - One workaround to this issue is requiring users to always link with - the same CRT as GLUT is compiled with. That requires users supply a - non-standard option. GLUT 3.7 has its own built-in workaround where - the executable's "exit" function pointer is covertly passed to GLUT. - GLUT then calls the executable's exit function pointer to ensure that - any "atexit" calls registered by the application are called if GLUT - needs to exit. - - Note that the __glut*WithExit routines should NEVER be called directly. - To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ - -/* XXX This is from Win32's */ -# if !defined(_MSC_VER) && !defined(__cdecl) - /* Define __cdecl for non-Microsoft compilers. */ -# define __cdecl -# define GLUT_DEFINED___CDECL -# endif -# ifndef _CRTIMP -# ifdef _NTSDK - /* Definition compatible with NT SDK */ -# define _CRTIMP -# else - /* Current definition */ -# ifdef _DLL -# define _CRTIMP __declspec(dllimport) -# else -# define _CRTIMP -# endif -# endif -# define GLUT_DEFINED__CRTIMP -# endif - -/* GLUT API entry point declarations for Win32. */ -# ifdef GLUT_BUILDING_LIB -# define GLUTAPI __declspec(dllexport) -# else -# ifdef _DLL -# define GLUTAPI __declspec(dllimport) -# else -# define GLUTAPI extern -# endif -# endif - -/* GLUT callback calling convention for Win32. */ -# define GLUTCALLBACK __cdecl - -#endif /* _WIN32 */ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) -# ifndef GLUT_BUILDING_LIB -extern _CRTIMP void __cdecl exit(int); -# endif -#else -/* non-Win32 case. */ -/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */ -# define APIENTRY -# define GLUT_APIENTRY_DEFINED -# define CALLBACK -/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */ -# define GLUTAPI extern -# define GLUTCALLBACK -/* Prototype exit for the non-Win32 case (see above). */ -extern void exit(int); -#endif - -/** - GLUT API revision history: - - GLUT_API_VERSION is updated to reflect incompatible GLUT - API changes (interface changes, semantic changes, deletions, - or additions). - - GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 - - GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, - extension. Supports new input devices like tablet, dial and button - box, and Spaceball. Easy to query OpenGL extensions. - - GLUT_API_VERSION=3 glutMenuStatus added. - - GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, - glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic - video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc, - glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, - glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!). -**/ -#ifndef GLUT_API_VERSION /* allow this to be overriden */ -#define GLUT_API_VERSION 3 -#endif - -/** - GLUT implementation revision history: - - GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT - API revisions and implementation revisions (ie, bug fixes). - - GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of - GLUT Xlib-based implementation. 11/29/94 - - GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of - GLUT Xlib-based implementation providing GLUT version 2 - interfaces. - - GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 - - GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 - - GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 - - GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 - - GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner - and video resize. 1/3/97 - - GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines. - - GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release. - - GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling. - - GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support. - - GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface. - - GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa -**/ -#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */ -#define GLUT_XLIB_IMPLEMENTATION 15 -#endif - -/* Display mode bit masks. */ -#define GLUT_RGB 0 -#define GLUT_RGBA GLUT_RGB -#define GLUT_INDEX 1 -#define GLUT_SINGLE 0 -#define GLUT_DOUBLE 2 -#define GLUT_ACCUM 4 -#define GLUT_ALPHA 8 -#define GLUT_DEPTH 16 -#define GLUT_STENCIL 32 -#if (GLUT_API_VERSION >= 2) -#define GLUT_MULTISAMPLE 128 -#define GLUT_STEREO 256 -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_LUMINANCE 512 -#endif - -/* Mouse buttons. */ -#define GLUT_LEFT_BUTTON 0 -#define GLUT_MIDDLE_BUTTON 1 -#define GLUT_RIGHT_BUTTON 2 - -/* Mouse button state. */ -#define GLUT_DOWN 0 -#define GLUT_UP 1 - -#if (GLUT_API_VERSION >= 2) -/* function keys */ -#define GLUT_KEY_F1 1 -#define GLUT_KEY_F2 2 -#define GLUT_KEY_F3 3 -#define GLUT_KEY_F4 4 -#define GLUT_KEY_F5 5 -#define GLUT_KEY_F6 6 -#define GLUT_KEY_F7 7 -#define GLUT_KEY_F8 8 -#define GLUT_KEY_F9 9 -#define GLUT_KEY_F10 10 -#define GLUT_KEY_F11 11 -#define GLUT_KEY_F12 12 -/* directional keys */ -#define GLUT_KEY_LEFT 100 -#define GLUT_KEY_UP 101 -#define GLUT_KEY_RIGHT 102 -#define GLUT_KEY_DOWN 103 -#define GLUT_KEY_PAGE_UP 104 -#define GLUT_KEY_PAGE_DOWN 105 -#define GLUT_KEY_HOME 106 -#define GLUT_KEY_END 107 -#define GLUT_KEY_INSERT 108 -#endif - -/* Entry/exit state. */ -#define GLUT_LEFT 0 -#define GLUT_ENTERED 1 - -/* Menu usage state. */ -#define GLUT_MENU_NOT_IN_USE 0 -#define GLUT_MENU_IN_USE 1 - -/* Visibility state. */ -#define GLUT_NOT_VISIBLE 0 -#define GLUT_VISIBLE 1 - -/* Window status state. */ -#define GLUT_HIDDEN 0 -#define GLUT_FULLY_RETAINED 1 -#define GLUT_PARTIALLY_RETAINED 2 -#define GLUT_FULLY_COVERED 3 - -/* Color index component selection values. */ -#define GLUT_RED 0 -#define GLUT_GREEN 1 -#define GLUT_BLUE 2 - -#if defined(_WIN32) -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN ((void*)0) -#define GLUT_STROKE_MONO_ROMAN ((void*)1) - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 ((void*)2) -#define GLUT_BITMAP_8_BY_13 ((void*)3) -#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4) -#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 ((void*)6) -#define GLUT_BITMAP_HELVETICA_12 ((void*)7) -#define GLUT_BITMAP_HELVETICA_18 ((void*)8) -#endif -#else -/* Stroke font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutStrokeRoman; -GLUTAPI void *glutStrokeMonoRoman; - -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN (&glutStrokeRoman) -#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) - -/* Bitmap font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutBitmap9By15; -GLUTAPI void *glutBitmap8By13; -GLUTAPI void *glutBitmapTimesRoman10; -GLUTAPI void *glutBitmapTimesRoman24; -GLUTAPI void *glutBitmapHelvetica10; -GLUTAPI void *glutBitmapHelvetica12; -GLUTAPI void *glutBitmapHelvetica18; - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) -#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13) -#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10) -#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10) -#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12) -#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18) -#endif -#endif - -/* glutGet parameters. */ -#define GLUT_WINDOW_X ((GLenum) 100) -#define GLUT_WINDOW_Y ((GLenum) 101) -#define GLUT_WINDOW_WIDTH ((GLenum) 102) -#define GLUT_WINDOW_HEIGHT ((GLenum) 103) -#define GLUT_WINDOW_BUFFER_SIZE ((GLenum) 104) -#define GLUT_WINDOW_STENCIL_SIZE ((GLenum) 105) -#define GLUT_WINDOW_DEPTH_SIZE ((GLenum) 106) -#define GLUT_WINDOW_RED_SIZE ((GLenum) 107) -#define GLUT_WINDOW_GREEN_SIZE ((GLenum) 108) -#define GLUT_WINDOW_BLUE_SIZE ((GLenum) 109) -#define GLUT_WINDOW_ALPHA_SIZE ((GLenum) 110) -#define GLUT_WINDOW_ACCUM_RED_SIZE ((GLenum) 111) -#define GLUT_WINDOW_ACCUM_GREEN_SIZE ((GLenum) 112) -#define GLUT_WINDOW_ACCUM_BLUE_SIZE ((GLenum) 113) -#define GLUT_WINDOW_ACCUM_ALPHA_SIZE ((GLenum) 114) -#define GLUT_WINDOW_DOUBLEBUFFER ((GLenum) 115) -#define GLUT_WINDOW_RGBA ((GLenum) 116) -#define GLUT_WINDOW_PARENT ((GLenum) 117) -#define GLUT_WINDOW_NUM_CHILDREN ((GLenum) 118) -#define GLUT_WINDOW_COLORMAP_SIZE ((GLenum) 119) -#if (GLUT_API_VERSION >= 2) -#define GLUT_WINDOW_NUM_SAMPLES ((GLenum) 120) -#define GLUT_WINDOW_STEREO ((GLenum) 121) -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_WINDOW_CURSOR ((GLenum) 122) -#endif -#define GLUT_SCREEN_WIDTH ((GLenum) 200) -#define GLUT_SCREEN_HEIGHT ((GLenum) 201) -#define GLUT_SCREEN_WIDTH_MM ((GLenum) 202) -#define GLUT_SCREEN_HEIGHT_MM ((GLenum) 203) -#define GLUT_MENU_NUM_ITEMS ((GLenum) 300) -#define GLUT_DISPLAY_MODE_POSSIBLE ((GLenum) 400) -#define GLUT_INIT_WINDOW_X ((GLenum) 500) -#define GLUT_INIT_WINDOW_Y ((GLenum) 501) -#define GLUT_INIT_WINDOW_WIDTH ((GLenum) 502) -#define GLUT_INIT_WINDOW_HEIGHT ((GLenum) 503) -#define GLUT_INIT_DISPLAY_MODE ((GLenum) 504) -#if (GLUT_API_VERSION >= 2) -#define GLUT_ELAPSED_TIME ((GLenum) 700) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_WINDOW_FORMAT_ID ((GLenum) 123) -#endif - -#if (GLUT_API_VERSION >= 2) -/* glutDeviceGet parameters. */ -#define GLUT_HAS_KEYBOARD ((GLenum) 600) -#define GLUT_HAS_MOUSE ((GLenum) 601) -#define GLUT_HAS_SPACEBALL ((GLenum) 602) -#define GLUT_HAS_DIAL_AND_BUTTON_BOX ((GLenum) 603) -#define GLUT_HAS_TABLET ((GLenum) 604) -#define GLUT_NUM_MOUSE_BUTTONS ((GLenum) 605) -#define GLUT_NUM_SPACEBALL_BUTTONS ((GLenum) 606) -#define GLUT_NUM_BUTTON_BOX_BUTTONS ((GLenum) 607) -#define GLUT_NUM_DIALS ((GLenum) 608) -#define GLUT_NUM_TABLET_BUTTONS ((GLenum) 609) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_DEVICE_IGNORE_KEY_REPEAT ((GLenum) 610) -#define GLUT_DEVICE_KEY_REPEAT ((GLenum) 611) -#define GLUT_HAS_JOYSTICK ((GLenum) 612) -#define GLUT_OWNS_JOYSTICK ((GLenum) 613) -#define GLUT_JOYSTICK_BUTTONS ((GLenum) 614) -#define GLUT_JOYSTICK_AXES ((GLenum) 615) -#define GLUT_JOYSTICK_POLL_RATE ((GLenum) 616) -#endif - -#if (GLUT_API_VERSION >= 3) -/* glutLayerGet parameters. */ -#define GLUT_OVERLAY_POSSIBLE ((GLenum) 800) -#define GLUT_LAYER_IN_USE ((GLenum) 801) -#define GLUT_HAS_OVERLAY ((GLenum) 802) -#define GLUT_TRANSPARENT_INDEX ((GLenum) 803) -#define GLUT_NORMAL_DAMAGED ((GLenum) 804) -#define GLUT_OVERLAY_DAMAGED ((GLenum) 805) - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* glutVideoResizeGet parameters. */ -#define GLUT_VIDEO_RESIZE_POSSIBLE ((GLenum) 900) -#define GLUT_VIDEO_RESIZE_IN_USE ((GLenum) 901) -#define GLUT_VIDEO_RESIZE_X_DELTA ((GLenum) 902) -#define GLUT_VIDEO_RESIZE_Y_DELTA ((GLenum) 903) -#define GLUT_VIDEO_RESIZE_WIDTH_DELTA ((GLenum) 904) -#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA ((GLenum) 905) -#define GLUT_VIDEO_RESIZE_X ((GLenum) 906) -#define GLUT_VIDEO_RESIZE_Y ((GLenum) 907) -#define GLUT_VIDEO_RESIZE_WIDTH ((GLenum) 908) -#define GLUT_VIDEO_RESIZE_HEIGHT ((GLenum) 909) -#endif - -/* glutUseLayer parameters. */ -#define GLUT_NORMAL ((GLenum) 0) -#define GLUT_OVERLAY ((GLenum) 1) - -/* glutGetModifiers return mask. */ -#define GLUT_ACTIVE_SHIFT 1 -#define GLUT_ACTIVE_CTRL 2 -#define GLUT_ACTIVE_ALT 4 - -/* glutSetCursor parameters. */ -/* Basic arrows. */ -#define GLUT_CURSOR_RIGHT_ARROW 0 -#define GLUT_CURSOR_LEFT_ARROW 1 -/* Symbolic cursor shapes. */ -#define GLUT_CURSOR_INFO 2 -#define GLUT_CURSOR_DESTROY 3 -#define GLUT_CURSOR_HELP 4 -#define GLUT_CURSOR_CYCLE 5 -#define GLUT_CURSOR_SPRAY 6 -#define GLUT_CURSOR_WAIT 7 -#define GLUT_CURSOR_TEXT 8 -#define GLUT_CURSOR_CROSSHAIR 9 -/* Directional cursors. */ -#define GLUT_CURSOR_UP_DOWN 10 -#define GLUT_CURSOR_LEFT_RIGHT 11 -/* Sizing cursors. */ -#define GLUT_CURSOR_TOP_SIDE 12 -#define GLUT_CURSOR_BOTTOM_SIDE 13 -#define GLUT_CURSOR_LEFT_SIDE 14 -#define GLUT_CURSOR_RIGHT_SIDE 15 -#define GLUT_CURSOR_TOP_LEFT_CORNER 16 -#define GLUT_CURSOR_TOP_RIGHT_CORNER 17 -#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18 -#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19 -/* Inherit from parent window. */ -#define GLUT_CURSOR_INHERIT 100 -/* Blank cursor. */ -#define GLUT_CURSOR_NONE 101 -/* Fullscreen crosshair (if available). */ -#define GLUT_CURSOR_FULL_CROSSHAIR 102 -#endif - -/* GLUT initialization sub-API. */ -GLUTAPI void APIENTRY glutInit(int *argcp, char **argv); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } -#define glutInit glutInit_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutInitDisplayString(const char *string); -#endif -GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y); -GLUTAPI void APIENTRY glutInitWindowSize(int width, int height); -GLUTAPI void APIENTRY glutMainLoop(void); - -/* GLUT window sub-API. */ -GLUTAPI int APIENTRY glutCreateWindow(const char *title); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } -#define glutCreateWindow glutCreateWindow_ATEXIT_HACK -#endif -#endif -GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height); -GLUTAPI void APIENTRY glutDestroyWindow(int win); -GLUTAPI void APIENTRY glutPostRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutSwapBuffers(void); -GLUTAPI int APIENTRY glutGetWindow(void); -GLUTAPI void APIENTRY glutSetWindow(int win); -GLUTAPI void APIENTRY glutSetWindowTitle(const char *title); -GLUTAPI void APIENTRY glutSetIconTitle(const char *title); -GLUTAPI void APIENTRY glutPositionWindow(int x, int y); -GLUTAPI void APIENTRY glutReshapeWindow(int width, int height); -GLUTAPI void APIENTRY glutPopWindow(void); -GLUTAPI void APIENTRY glutPushWindow(void); -GLUTAPI void APIENTRY glutIconifyWindow(void); -GLUTAPI void APIENTRY glutShowWindow(void); -GLUTAPI void APIENTRY glutHideWindow(void); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutFullScreen(void); -GLUTAPI void APIENTRY glutSetCursor(int cursor); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWarpPointer(int x, int y); -#endif - -/* GLUT overlay sub-API. */ -GLUTAPI void APIENTRY glutEstablishOverlay(void); -GLUTAPI void APIENTRY glutRemoveOverlay(void); -GLUTAPI void APIENTRY glutUseLayer(GLenum layer); -GLUTAPI void APIENTRY glutPostOverlayRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutShowOverlay(void); -GLUTAPI void APIENTRY glutHideOverlay(void); -#endif - -/* GLUT menu sub-API. */ -GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int)); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); } -#define glutCreateMenu glutCreateMenu_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutDestroyMenu(int menu); -GLUTAPI int APIENTRY glutGetMenu(void); -GLUTAPI void APIENTRY glutSetMenu(int menu); -GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value); -GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu); -GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value); -GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu); -GLUTAPI void APIENTRY glutRemoveMenuItem(int item); -GLUTAPI void APIENTRY glutAttachMenu(int button); -GLUTAPI void APIENTRY glutDetachMenu(int button); - -/* GLUT window callback sub-API. */ -GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height)); -GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value); -GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state)); -#if (GLUT_API_VERSION >= 2) -GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value)); -GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y)); -GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void)); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state)); -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval); -#endif -#endif -#endif - -/* GLUT color index sub-API. */ -GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue); -GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component); -GLUTAPI void APIENTRY glutCopyColormap(int win); - -/* GLUT state retrieval sub-API. */ -GLUTAPI int APIENTRY glutGet(GLenum type); -GLUTAPI int APIENTRY glutDeviceGet(GLenum type); -#if (GLUT_API_VERSION >= 2) -/* GLUT extension support sub-API */ -GLUTAPI int APIENTRY glutExtensionSupported(const char *name); -#endif -#if (GLUT_API_VERSION >= 3) -GLUTAPI int APIENTRY glutGetModifiers(void); -GLUTAPI int APIENTRY glutLayerGet(GLenum type); -#endif - -/* GLUT font sub-API */ -GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character); -GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character); -GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character); -GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string); -GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string); -#endif - -/* GLUT pre-built models sub-API */ -GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCube(GLdouble size); -GLUTAPI void APIENTRY glutSolidCube(GLdouble size); -GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutWireDodecahedron(void); -GLUTAPI void APIENTRY glutSolidDodecahedron(void); -GLUTAPI void APIENTRY glutWireTeapot(GLdouble size); -GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size); -GLUTAPI void APIENTRY glutWireOctahedron(void); -GLUTAPI void APIENTRY glutSolidOctahedron(void); -GLUTAPI void APIENTRY glutWireTetrahedron(void); -GLUTAPI void APIENTRY glutSolidTetrahedron(void); -GLUTAPI void APIENTRY glutWireIcosahedron(void); -GLUTAPI void APIENTRY glutSolidIcosahedron(void); - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* GLUT video resize sub-API. */ -GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param); -GLUTAPI void APIENTRY glutSetupVideoResizing(void); -GLUTAPI void APIENTRY glutStopVideoResizing(void); -GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height); -GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height); - -/* GLUT debugging sub-API. */ -GLUTAPI void APIENTRY glutReportErrors(void); -#endif - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -/* GLUT device control sub-API. */ -/* glutSetKeyRepeat modes. */ -#define GLUT_KEY_REPEAT_OFF 0 -#define GLUT_KEY_REPEAT_ON 1 -#define GLUT_KEY_REPEAT_DEFAULT 2 - -/* Joystick button masks. */ -#define GLUT_JOYSTICK_BUTTON_A 1 -#define GLUT_JOYSTICK_BUTTON_B 2 -#define GLUT_JOYSTICK_BUTTON_C 4 -#define GLUT_JOYSTICK_BUTTON_D 8 - -GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore); -GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode); -GLUTAPI void APIENTRY glutForceJoystickFunc(void); - -/* GLUT game mode sub-API. */ -/* glutGameModeGet. */ -#define GLUT_GAME_MODE_ACTIVE ((GLenum) 0) -#define GLUT_GAME_MODE_POSSIBLE ((GLenum) 1) -#define GLUT_GAME_MODE_WIDTH ((GLenum) 2) -#define GLUT_GAME_MODE_HEIGHT ((GLenum) 3) -#define GLUT_GAME_MODE_PIXEL_DEPTH ((GLenum) 4) -#define GLUT_GAME_MODE_REFRESH_RATE ((GLenum) 5) -#define GLUT_GAME_MODE_DISPLAY_CHANGED ((GLenum) 6) - -GLUTAPI void APIENTRY glutGameModeString(const char *string); -GLUTAPI int APIENTRY glutEnterGameMode(void); -GLUTAPI void APIENTRY glutLeaveGameMode(void); -GLUTAPI int APIENTRY glutGameModeGet(GLenum mode); -#endif - -#ifdef __cplusplus -} - -#endif - -#ifdef GLUT_APIENTRY_DEFINED -# undef GLUT_APIENTRY_DEFINED -# undef APIENTRY -#endif - -#ifdef GLUT_WINGDIAPI_DEFINED -# undef GLUT_WINGDIAPI_DEFINED -# undef WINGDIAPI -#endif - -#ifdef GLUT_DEFINED___CDECL -# undef GLUT_DEFINED___CDECL -# undef __cdecl -#endif - -#ifdef GLUT_DEFINED__CRTIMP -# undef GLUT_DEFINED__CRTIMP -# undef _CRTIMP -#endif - -#endif /* __glut_h__ */ diff --git a/sdk/Windows/2019.2/samples/ViewScene/GetPosition.cxx b/sdk/Windows/2019.2/samples/ViewScene/GetPosition.cxx deleted file mode 100755 index edcccf8..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GetPosition.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains the functions to get the global -// position of a node for a given time in the current animation stack. -// -///////////////////////////////////////////////////////////////////////// - -#include "GetPosition.h" - -// Get the global position of the node for the current pose. -// If the specified node is not part of the pose or no pose is specified, get its -// global position at the current time. -FbxAMatrix GetGlobalPosition(FbxNode* pNode, const FbxTime& pTime, FbxPose* pPose, FbxAMatrix* pParentGlobalPosition) -{ - FbxAMatrix lGlobalPosition; - bool lPositionFound = false; - - if (pPose) - { - int lNodeIndex = pPose->Find(pNode); - - if (lNodeIndex > -1) - { - // The bind pose is always a global matrix. - // If we have a rest pose, we need to check if it is - // stored in global or local space. - if (pPose->IsBindPose() || !pPose->IsLocalMatrix(lNodeIndex)) - { - lGlobalPosition = GetPoseMatrix(pPose, lNodeIndex); - } - else - { - // We have a local matrix, we need to convert it to - // a global space matrix. - FbxAMatrix lParentGlobalPosition; - - if (pParentGlobalPosition) - { - lParentGlobalPosition = *pParentGlobalPosition; - } - else - { - if (pNode->GetParent()) - { - lParentGlobalPosition = GetGlobalPosition(pNode->GetParent(), pTime, pPose); - } - } - - FbxAMatrix lLocalPosition = GetPoseMatrix(pPose, lNodeIndex); - lGlobalPosition = lParentGlobalPosition * lLocalPosition; - } - - lPositionFound = true; - } - } - - if (!lPositionFound) - { - // There is no pose entry for that node, get the current global position instead. - - // Ideally this would use parent global position and local position to compute the global position. - // Unfortunately the equation - // lGlobalPosition = pParentGlobalPosition * lLocalPosition - // does not hold when inheritance type is other than "Parent" (RSrs). - // To compute the parent rotation and scaling is tricky in the RrSs and Rrs cases. - lGlobalPosition = pNode->EvaluateGlobalTransform(pTime); - } - - return lGlobalPosition; -} - -// Get the matrix of the given pose -FbxAMatrix GetPoseMatrix(FbxPose* pPose, int pNodeIndex) -{ - FbxAMatrix lPoseMatrix; - FbxMatrix lMatrix = pPose->GetMatrix(pNodeIndex); - - memcpy((double*)lPoseMatrix, (double*)lMatrix, sizeof(lMatrix.mData)); - - return lPoseMatrix; -} - -// Get the geometry offset to a node. It is never inherited by the children. -FbxAMatrix GetGeometry(FbxNode* pNode) -{ - const FbxVector4 lT = pNode->GetGeometricTranslation(FbxNode::eSourcePivot); - const FbxVector4 lR = pNode->GetGeometricRotation(FbxNode::eSourcePivot); - const FbxVector4 lS = pNode->GetGeometricScaling(FbxNode::eSourcePivot); - - return FbxAMatrix(lT, lR, lS); -} - diff --git a/sdk/Windows/2019.2/samples/ViewScene/GetPosition.h b/sdk/Windows/2019.2/samples/ViewScene/GetPosition.h deleted file mode 100755 index 8a38826..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GetPosition.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GET_POSITION_H -#define _GET_POSITION_H - -#include - -FbxAMatrix GetGlobalPosition(FbxNode* pNode, - const FbxTime& pTime, - FbxPose* pPose = NULL, - FbxAMatrix* pParentGlobalPosition = NULL); -FbxAMatrix GetPoseMatrix(FbxPose* pPose, - int pNodeIndex); -FbxAMatrix GetGeometry(FbxNode* pNode); - -#endif // #ifndef _GET_POSITION_H - - - diff --git a/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.cxx b/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.cxx deleted file mode 100755 index 4bf3753..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.cxx +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "GlFunctions.h" - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glTranslated( pFilmOffsetX, pFilmOffsetY, 0); - gluPerspective(pFieldOfViewY, - pAspect, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(pLeftPlane, - pRightPlane, - pBottomPlane, - pTopPlane, - pNearPlane, - pFarPlane); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(pEye[0], pEye[1], pEye[2], - pCenter[0], pCenter[1], pCenter[2], - pUp[0], pUp[1], pUp[2]); -} - - -void GlDrawMarker(FbxAMatrix& pGlobalPosition) -{ - glColor3f(0.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - glBegin(GL_LINE_LOOP); - glVertex3f(+1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - - glVertex3f(+1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, +1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - - glVertex3f(-1.0f, -1.0f, +1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, +1.0f); - - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(-1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, +1.0f, -1.0f); - glVertex3f(+1.0f, -1.0f, -1.0f); - glEnd(); - - glPopMatrix(); -} - - -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, FbxAMatrix& pGlobalEndPosition) -{ - glColor3f(1.0, 0.0, 0.0); - glLineWidth(2.0); - - glBegin(GL_LINES); - - glVertex3dv((GLdouble *)pGlobalBasePosition.GetT()); - glVertex3dv((GLdouble *)pGlobalEndPosition.GetT()); - - glEnd(); -} - -void GlDrawCamera(FbxAMatrix& pGlobalPosition, double pRoll) -{ - glColor3d(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - glRotated(pRoll, 1.0, 0.0, 0.0); - - int i; - float lCamera[10][2] = {{ 0, 5.5 }, { -3, 4.5 }, - { -3, 7.5 }, { -6, 10.5 }, { -23, 10.5 }, - { -23, -4.5 }, { -20, -7.5 }, { -3, -7.5 }, - { -3, -4.5 }, { 0, -5.5 } }; - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - } - glEnd(); - - glBegin( GL_LINE_LOOP ); - { - for (i = 0; i < 10; i++) - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - } - } - glEnd(); - - for (i = 0; i < 10; i++) - { - glBegin( GL_LINES ); - { - glVertex3f(lCamera[i][0], lCamera[i][1], -4.5); - glVertex3f(lCamera[i][0], lCamera[i][1], 4.5); - } - glEnd(); - } - - glPopMatrix(); -} - - -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition) -{ - glColor3f(1.0, 1.0, 1.0); - glLineWidth(1.0); - - glPushMatrix(); - glMultMatrixd((double*) pGlobalPosition); - - double lCrossHair[6][3] = { { -3, 0, 0 }, { 3, 0, 0 }, - { 0, -3, 0 }, { 0, 3, 0 }, - { 0, 0, -3 }, { 0, 0, 3 } }; - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[0]); - glVertex3dv(lCrossHair[1]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[2]); - glVertex3dv(lCrossHair[3]); - - glEnd(); - - glBegin(GL_LINES); - - glVertex3dv(lCrossHair[4]); - glVertex3dv(lCrossHair[5]); - - glEnd(); - - glPopMatrix(); -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.h b/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.h deleted file mode 100755 index 2d1515b..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/GlFunctions.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _GL_FUNCTIONS_H -#define _GL_FUNCTIONS_H - -#include - -#include "GL/glew.h" -#define GLUT_DISABLE_ATEXIT_HACK -#if defined(__MACH__) -#include -#else -#include "GL/gl.h" -#include "GL/glu.h" -#endif - -#include - -enum ShadingMode -{ - SHADING_MODE_WIREFRAME, - SHADING_MODE_SHADED, -}; - -void GlSetCameraPerspective(double pFieldOfViewY, - double pAspect, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp, - double pFilmOffsetX, - double pFilmOffsetY); -void GlSetCameraOrthogonal(double pLeftPlane, - double pRightPlane, - double pBottomPlane, - double pTopPlane, - double pNearPlane, - double pFarPlane, - FbxVector4& pEye, - FbxVector4& pCenter, - FbxVector4& pUp); - -void GlDrawMarker(FbxAMatrix& pGlobalPosition); -void GlDrawLimbNode(FbxAMatrix& pGlobalBasePosition, - FbxAMatrix& pGlobalEndPosition); -void GlDrawCamera(FbxAMatrix& pGlobalPosition, - double pRoll); -void GlDrawCrossHair(FbxAMatrix& pGlobalPosition); - -#endif // #ifndef _GL_FUNCTIONS_H - - diff --git a/sdk/Windows/2019.2/samples/ViewScene/SceneCache.cxx b/sdk/Windows/2019.2/samples/ViewScene/SceneCache.cxx deleted file mode 100755 index 3d4c7b7..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SceneCache.cxx +++ /dev/null @@ -1,690 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneCache.h" - -namespace -{ - const float ANGLE_TO_RADIAN = 3.1415926f / 180.f; - const GLfloat BLACK_COLOR[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat GREEN_COLOR[] = {0.0f, 1.0f, 0.0f, 1.0f}; - const GLfloat WHITE_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat WIREFRAME_COLOR[] = {0.5f, 0.5f, 0.5f, 1.0f}; - - const int TRIANGLE_VERTEX_COUNT = 3; - - // Four floats for every position. - const int VERTEX_STRIDE = 4; - // Three floats for every normal. - const int NORMAL_STRIDE = 3; - // Two floats for every UV. - const int UV_STRIDE = 2; - - const GLfloat DEFAULT_LIGHT_POSITION[] = {0.0f, 0.0f, 0.0f, 1.0f}; - const GLfloat DEFAULT_DIRECTION_LIGHT_POSITION[] = {0.0f, 0.0f, 1.0f, 0.0f}; - const GLfloat DEFAULT_SPOT_LIGHT_DIRECTION[] = {0.0f, 0.0f, -1.0f}; - const GLfloat DEFAULT_LIGHT_COLOR[] = {1.0f, 1.0f, 1.0f, 1.0f}; - const GLfloat DEFAULT_LIGHT_SPOT_CUTOFF = 180.0f; - - // Get specific property value and connected texture if any. - // Value = Property value * Factor property value (if no factor property, multiply by 1). - FbxDouble3 GetMaterialProperty(const FbxSurfaceMaterial * pMaterial, - const char * pPropertyName, - const char * pFactorPropertyName, - GLuint & pTextureName) - { - FbxDouble3 lResult(0, 0, 0); - const FbxProperty lProperty = pMaterial->FindProperty(pPropertyName); - const FbxProperty lFactorProperty = pMaterial->FindProperty(pFactorPropertyName); - if (lProperty.IsValid() && lFactorProperty.IsValid()) - { - lResult = lProperty.Get(); - double lFactor = lFactorProperty.Get(); - if (lFactor != 1) - { - lResult[0] *= lFactor; - lResult[1] *= lFactor; - lResult[2] *= lFactor; - } - } - - if (lProperty.IsValid()) - { - const int lTextureCount = lProperty.GetSrcObjectCount(); - if (lTextureCount) - { - const FbxFileTexture* lTexture = lProperty.GetSrcObject(); - if (lTexture && lTexture->GetUserDataPtr()) - { - pTextureName = *(static_cast(lTexture->GetUserDataPtr())); - } - } - } - - return lResult; - } -} - -VBOMesh::VBOMesh() : mHasNormal(false), mHasUV(false), mAllByControlPoint(true) -{ - // Reset every VBO to zero, which means no buffer. - for (int lVBOIndex = 0; lVBOIndex < VBO_COUNT; ++lVBOIndex) - { - mVBONames[lVBOIndex] = 0; - } -} - -VBOMesh::~VBOMesh() -{ - // Delete VBO objects, zeros are ignored automatically. - glDeleteBuffers(VBO_COUNT, mVBONames); - -// FbxArrayDelete(mSubMeshes); - - for(int i=0; i < mSubMeshes.GetCount(); i++) - { - delete mSubMeshes[i]; - } - - mSubMeshes.Clear(); - -} - -bool VBOMesh::Initialize(const FbxMesh *pMesh) -{ - if (!pMesh->GetNode()) - return false; - - const int lPolygonCount = pMesh->GetPolygonCount(); - - // Count the polygon count of each material - FbxLayerElementArrayTemplate* lMaterialIndice = NULL; - FbxGeometryElement::EMappingMode lMaterialMappingMode = FbxGeometryElement::eNone; - if (pMesh->GetElementMaterial()) - { - lMaterialIndice = &pMesh->GetElementMaterial()->GetIndexArray(); - lMaterialMappingMode = pMesh->GetElementMaterial()->GetMappingMode(); - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - FBX_ASSERT(lMaterialIndice->GetCount() == lPolygonCount); - if (lMaterialIndice->GetCount() == lPolygonCount) - { - // Count the faces of each material - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - const int lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - if (mSubMeshes.GetCount() < lMaterialIndex + 1) - { - mSubMeshes.Resize(lMaterialIndex + 1); - } - if (mSubMeshes[lMaterialIndex] == NULL) - { - mSubMeshes[lMaterialIndex] = new SubMesh; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Make sure we have no "holes" (NULL) in the mSubMeshes table. This can happen - // if, in the loop above, we resized the mSubMeshes by more than one slot. - for (int i = 0; i < mSubMeshes.GetCount(); i++) - { - if (mSubMeshes[i] == NULL) - mSubMeshes[i] = new SubMesh; - } - - // Record the offset (how many vertex) - const int lMaterialCount = mSubMeshes.GetCount(); - int lOffset = 0; - for (int lIndex = 0; lIndex < lMaterialCount; ++lIndex) - { - mSubMeshes[lIndex]->IndexOffset = lOffset; - lOffset += mSubMeshes[lIndex]->TriangleCount * 3; - // This will be used as counter in the following procedures, reset to zero - mSubMeshes[lIndex]->TriangleCount = 0; - } - FBX_ASSERT(lOffset == lPolygonCount * 3); - } - } - } - - // All faces will use the same material. - if (mSubMeshes.GetCount() == 0) - { - mSubMeshes.Resize(1); - mSubMeshes[0] = new SubMesh(); - } - - // Congregate all the data of a mesh to be cached in VBOs. - // If normal or UV is by polygon vertex, record all vertex attributes by polygon vertex. - mHasNormal = pMesh->GetElementNormalCount() > 0; - mHasUV = pMesh->GetElementUVCount() > 0; - FbxGeometryElement::EMappingMode lNormalMappingMode = FbxGeometryElement::eNone; - FbxGeometryElement::EMappingMode lUVMappingMode = FbxGeometryElement::eNone; - if (mHasNormal) - { - lNormalMappingMode = pMesh->GetElementNormal(0)->GetMappingMode(); - if (lNormalMappingMode == FbxGeometryElement::eNone) - { - mHasNormal = false; - } - if (mHasNormal && lNormalMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - if (mHasUV) - { - lUVMappingMode = pMesh->GetElementUV(0)->GetMappingMode(); - if (lUVMappingMode == FbxGeometryElement::eNone) - { - mHasUV = false; - } - if (mHasUV && lUVMappingMode != FbxGeometryElement::eByControlPoint) - { - mAllByControlPoint = false; - } - } - - // Allocate the array memory, by control point or by polygon vertex. - int lPolygonVertexCount = pMesh->GetControlPointsCount(); - if (!mAllByControlPoint) - { - lPolygonVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - } - float * lVertices = new float[lPolygonVertexCount * VERTEX_STRIDE]; - unsigned int * lIndices = new unsigned int[lPolygonCount * TRIANGLE_VERTEX_COUNT]; - float * lNormals = NULL; - if (mHasNormal) - { - lNormals = new float[lPolygonVertexCount * NORMAL_STRIDE]; - } - float * lUVs = NULL; - FbxStringList lUVNames; - pMesh->GetUVSetNames(lUVNames); - const char * lUVName = NULL; - if (mHasUV && lUVNames.GetCount()) - { - lUVs = new float[lPolygonVertexCount * UV_STRIDE]; - lUVName = lUVNames[0]; - } - - // Populate the array with vertex attribute, if by control point. - const FbxVector4 * lControlPoints = pMesh->GetControlPoints(); - FbxVector4 lCurrentVertex; - FbxVector4 lCurrentNormal; - FbxVector2 lCurrentUV; - if (mAllByControlPoint) - { - const FbxGeometryElementNormal * lNormalElement = NULL; - const FbxGeometryElementUV * lUVElement = NULL; - if (mHasNormal) - { - lNormalElement = pMesh->GetElementNormal(0); - } - if (mHasUV) - { - lUVElement = pMesh->GetElementUV(0); - } - for (int lIndex = 0; lIndex < lPolygonVertexCount; ++lIndex) - { - // Save the vertex position. - lCurrentVertex = lControlPoints[lIndex]; - lVertices[lIndex * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - - // Save the normal. - if (mHasNormal) - { - int lNormalIndex = lIndex; - if (lNormalElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lNormalIndex = lNormalElement->GetIndexArray().GetAt(lIndex); - } - lCurrentNormal = lNormalElement->GetDirectArray().GetAt(lNormalIndex); - lNormals[lIndex * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lIndex * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lIndex * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - // Save the UV. - if (mHasUV) - { - int lUVIndex = lIndex; - if (lUVElement->GetReferenceMode() == FbxLayerElement::eIndexToDirect) - { - lUVIndex = lUVElement->GetIndexArray().GetAt(lIndex); - } - lCurrentUV = lUVElement->GetDirectArray().GetAt(lUVIndex); - lUVs[lIndex * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lIndex * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - - } - - int lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - // The material for current face. - int lMaterialIndex = 0; - if (lMaterialIndice && lMaterialMappingMode == FbxGeometryElement::eByPolygon) - { - lMaterialIndex = lMaterialIndice->GetAt(lPolygonIndex); - } - - // Where should I save the vertex attribute index, according to the material - const int lIndexOffset = mSubMeshes[lMaterialIndex]->IndexOffset + - mSubMeshes[lMaterialIndex]->TriangleCount * 3; - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - if (mAllByControlPoint) - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lControlPointIndex); - } - // Populate the array with vertex attribute, if by polygon vertex. - else - { - lIndices[lIndexOffset + lVerticeIndex] = static_cast(lVertexCount); - - lCurrentVertex = lControlPoints[lControlPointIndex]; - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(lCurrentVertex[0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(lCurrentVertex[1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(lCurrentVertex[2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - - if (mHasNormal) - { - pMesh->GetPolygonVertexNormal(lPolygonIndex, lVerticeIndex, lCurrentNormal); - lNormals[lVertexCount * NORMAL_STRIDE] = static_cast(lCurrentNormal[0]); - lNormals[lVertexCount * NORMAL_STRIDE + 1] = static_cast(lCurrentNormal[1]); - lNormals[lVertexCount * NORMAL_STRIDE + 2] = static_cast(lCurrentNormal[2]); - } - - if (mHasUV) - { - bool lUnmappedUV; - pMesh->GetPolygonVertexUV(lPolygonIndex, lVerticeIndex, lUVName, lCurrentUV, lUnmappedUV); - lUVs[lVertexCount * UV_STRIDE] = static_cast(lCurrentUV[0]); - lUVs[lVertexCount * UV_STRIDE + 1] = static_cast(lCurrentUV[1]); - } - } - } - ++lVertexCount; - } - mSubMeshes[lMaterialIndex]->TriangleCount += 1; - } - - // Create VBOs - glGenBuffers(VBO_COUNT, mVBONames); - - // Save vertex attributes into GPU - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - - if (mHasNormal) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * NORMAL_STRIDE * sizeof(float), lNormals, GL_STATIC_DRAW); - delete [] lNormals; - } - - if (mHasUV) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * UV_STRIDE * sizeof(float), lUVs, GL_STATIC_DRAW); - delete [] lUVs; - } - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, lPolygonCount * TRIANGLE_VERTEX_COUNT * sizeof(unsigned int), lIndices, GL_STATIC_DRAW); - delete [] lIndices; - - return true; -} - -void VBOMesh::UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const -{ - // Convert to the same sequence with data in GPU. - float * lVertices = NULL; - int lVertexCount = 0; - if (mAllByControlPoint) - { - lVertexCount = pMesh->GetControlPointsCount(); - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - for (int lIndex = 0; lIndex < lVertexCount; ++lIndex) - { - lVertices[lIndex * VERTEX_STRIDE] = static_cast(pVertices[lIndex][0]); - lVertices[lIndex * VERTEX_STRIDE + 1] = static_cast(pVertices[lIndex][1]); - lVertices[lIndex * VERTEX_STRIDE + 2] = static_cast(pVertices[lIndex][2]); - lVertices[lIndex * VERTEX_STRIDE + 3] = 1; - } - } - else - { - const int lPolygonCount = pMesh->GetPolygonCount(); - lVertexCount = lPolygonCount * TRIANGLE_VERTEX_COUNT; - lVertices = new float[lVertexCount * VERTEX_STRIDE]; - - lVertexCount = 0; - for (int lPolygonIndex = 0; lPolygonIndex < lPolygonCount; ++lPolygonIndex) - { - for (int lVerticeIndex = 0; lVerticeIndex < TRIANGLE_VERTEX_COUNT; ++lVerticeIndex) - { - const int lControlPointIndex = pMesh->GetPolygonVertex(lPolygonIndex, lVerticeIndex); - // If the lControlPointIndex is -1, we probably have a corrupted mesh data. At this point, - // it is not guaranteed that the cache will work as expected. - if (lControlPointIndex >= 0) - { - lVertices[lVertexCount * VERTEX_STRIDE] = static_cast(pVertices[lControlPointIndex][0]); - lVertices[lVertexCount * VERTEX_STRIDE + 1] = static_cast(pVertices[lControlPointIndex][1]); - lVertices[lVertexCount * VERTEX_STRIDE + 2] = static_cast(pVertices[lControlPointIndex][2]); - lVertices[lVertexCount * VERTEX_STRIDE + 3] = 1; - } - ++lVertexCount; - } - } - } - - // Transfer into GPU. - if (lVertices) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glBufferData(GL_ARRAY_BUFFER, lVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW); - delete [] lVertices; - } -} - -void VBOMesh::Draw(int pMaterialIndex, ShadingMode pShadingMode) const -{ -#if _MSC_VER >= 1900 && defined(_WIN64) - // this warning occurs when building 64bit. - #pragma warning( push ) - #pragma warning( disable : 4312) -#endif - - // Where to start. - GLsizei lOffset = mSubMeshes[pMaterialIndex]->IndexOffset * sizeof(unsigned int); - if ( pShadingMode == SHADING_MODE_SHADED) - { - const GLsizei lElementCount = mSubMeshes[pMaterialIndex]->TriangleCount * 3; - glDrawElements(GL_TRIANGLES, lElementCount, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - } - else - { - for (int lIndex = 0; lIndex < mSubMeshes[pMaterialIndex]->TriangleCount; ++lIndex) - { - // Draw line loop for every triangle. - glDrawElements(GL_LINE_LOOP, TRIANGLE_VERTEX_COUNT, GL_UNSIGNED_INT, reinterpret_cast(lOffset)); - lOffset += sizeof(unsigned int) * TRIANGLE_VERTEX_COUNT; - } - } -#if _MSC_VER >= 1900 && defined(_WIN64) - #pragma warning( pop ) -#endif -} - -void VBOMesh::BeginDraw(ShadingMode pShadingMode) const -{ - // Push OpenGL attributes. - glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_CURRENT_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glPushAttrib(GL_TEXTURE_BIT); - - // Set vertex position array. - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]); - glVertexPointer(VERTEX_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_VERTEX_ARRAY); - - // Set normal array. - if (mHasNormal && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]); - glNormalPointer(GL_FLOAT, 0, 0); - glEnableClientState(GL_NORMAL_ARRAY); - } - - // Set UV array. - if (mHasUV && pShadingMode == SHADING_MODE_SHADED) - { - glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]); - glTexCoordPointer(UV_STRIDE, GL_FLOAT, 0, 0); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - } - - // Set index array. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]); - - if (pShadingMode == SHADING_MODE_SHADED) - { - glEnable(GL_LIGHTING); - - glEnable(GL_TEXTURE_2D); - - glEnable(GL_NORMALIZE); - } - else - { - glColor4fv(WIREFRAME_COLOR); - } -} - -void VBOMesh::EndDraw() const -{ - // Reset VBO binding. - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - - // Pop OpenGL attributes. - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopAttrib(); - glPopClientAttrib(); -} - -MaterialCache::MaterialCache() : mShinness(0) -{ - -} - -MaterialCache::~MaterialCache() -{ - -} - -// Bake material properties. -bool MaterialCache::Initialize(const FbxSurfaceMaterial * pMaterial) -{ - const FbxDouble3 lEmissive = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sEmissive, FbxSurfaceMaterial::sEmissiveFactor, mEmissive.mTextureName); - mEmissive.mColor[0] = static_cast(lEmissive[0]); - mEmissive.mColor[1] = static_cast(lEmissive[1]); - mEmissive.mColor[2] = static_cast(lEmissive[2]); - - const FbxDouble3 lAmbient = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sAmbient, FbxSurfaceMaterial::sAmbientFactor, mAmbient.mTextureName); - mAmbient.mColor[0] = static_cast(lAmbient[0]); - mAmbient.mColor[1] = static_cast(lAmbient[1]); - mAmbient.mColor[2] = static_cast(lAmbient[2]); - - const FbxDouble3 lDiffuse = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sDiffuse, FbxSurfaceMaterial::sDiffuseFactor, mDiffuse.mTextureName); - mDiffuse.mColor[0] = static_cast(lDiffuse[0]); - mDiffuse.mColor[1] = static_cast(lDiffuse[1]); - mDiffuse.mColor[2] = static_cast(lDiffuse[2]); - - const FbxDouble3 lSpecular = GetMaterialProperty(pMaterial, - FbxSurfaceMaterial::sSpecular, FbxSurfaceMaterial::sSpecularFactor, mSpecular.mTextureName); - mSpecular.mColor[0] = static_cast(lSpecular[0]); - mSpecular.mColor[1] = static_cast(lSpecular[1]); - mSpecular.mColor[2] = static_cast(lSpecular[2]); - - FbxProperty lShininessProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); - if (lShininessProperty.IsValid()) - { - double lShininess = lShininessProperty.Get(); - mShinness = static_cast(lShininess); - } - - return true; -} - -void MaterialCache::SetCurrentMaterial() const -{ - glMaterialfv(GL_FRONT, GL_EMISSION, mEmissive.mColor); - glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient.mColor); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mDiffuse.mColor); - glMaterialfv(GL_FRONT, GL_SPECULAR, mSpecular.mColor); - glMaterialf(GL_FRONT, GL_SHININESS, mShinness); - - glBindTexture(GL_TEXTURE_2D, mDiffuse.mTextureName); -} - -void MaterialCache::SetDefaultMaterial() -{ - glMaterialfv(GL_FRONT, GL_EMISSION, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_AMBIENT, BLACK_COLOR); - glMaterialfv(GL_FRONT, GL_DIFFUSE, GREEN_COLOR); - glMaterialfv(GL_FRONT, GL_SPECULAR, BLACK_COLOR); - glMaterialf(GL_FRONT, GL_SHININESS, 0); - - glBindTexture(GL_TEXTURE_2D, 0); -} - -int LightCache::sLightCount = 0; - -LightCache::LightCache() : mType(FbxLight::ePoint) -{ - mLightIndex = GL_LIGHT0 + sLightCount++; -} - -LightCache::~LightCache() -{ - glDisable(mLightIndex); - --sLightCount; -} - -// Bake light properties. -bool LightCache::Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer) -{ - mType = pLight->LightType.Get(); - - FbxPropertyT lColorProperty = pLight->Color; - FbxDouble3 lLightColor = lColorProperty.Get(); - mColorRed.mValue = static_cast(lLightColor[0]); - mColorGreen.mValue = static_cast(lLightColor[1]); - mColorBlue.mValue = static_cast(lLightColor[2]); - - if (pAnimLayer) - { - mColorRed.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_RED); - mColorGreen.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_GREEN); - mColorBlue.mAnimCurve = lColorProperty.GetCurve(pAnimLayer, FBXSDK_CURVENODE_COLOR_BLUE); - } - - if (mType == FbxLight::eSpot) - { - FbxPropertyT lConeAngleProperty = pLight->InnerAngle; - mConeAngle.mValue = static_cast(lConeAngleProperty.Get()); - if (pAnimLayer) - mConeAngle.mAnimCurve = lConeAngleProperty.GetCurve(pAnimLayer); - } - - return true; -} - -void LightCache::SetLight(const FbxTime & pTime) const -{ - const GLfloat lLightColor[4] = {mColorRed.Get(pTime), mColorGreen.Get(pTime), mColorBlue.Get(pTime), 1.0f}; - const GLfloat lConeAngle = mConeAngle.Get(pTime); - - glColor3fv(lLightColor); - - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_POLYGON_BIT); - // Visible for double side. - glDisable(GL_CULL_FACE); - // Draw wire-frame geometry. - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - if (mType == FbxLight::eSpot) - { - // Draw a cone for spot light. - glPushMatrix(); - glScalef(1.0f, 1.0f, -1.0f); - const double lRadians = ANGLE_TO_RADIAN * lConeAngle; - const double lHeight = 15.0; - const double lBase = lHeight * tan(lRadians / 2); - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluCylinder(lQuadObj, 0.0, lBase, lHeight, 18, 1); - gluDeleteQuadric(lQuadObj); - glPopMatrix(); - } - else - { - // Draw a sphere for other types. - GLUquadricObj * lQuadObj = gluNewQuadric(); - gluSphere(lQuadObj, 1.0, 10, 10); - gluDeleteQuadric(lQuadObj); - } - glPopAttrib(); - glPopAttrib(); - - // The transform have been set, so set in local coordinate. - if (mType == FbxLight::eDirectional) - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - } - else - { - glLightfv(mLightIndex, GL_POSITION, DEFAULT_LIGHT_POSITION); - } - - glLightfv(mLightIndex, GL_DIFFUSE, lLightColor); - glLightfv(mLightIndex, GL_SPECULAR, lLightColor); - - if (mType == FbxLight::eSpot && lConeAngle != 0.0) - { - glLightfv(mLightIndex, GL_SPOT_DIRECTION, DEFAULT_SPOT_LIGHT_DIRECTION); - - // If the cone angle is 0, equal to a point light. - if (lConeAngle != 0.0f) - { - // OpenGL use cut off angle, which is half of the cone angle. - glLightf(mLightIndex, GL_SPOT_CUTOFF, lConeAngle/2); - } - } - glEnable(mLightIndex); -} - -void LightCache::IntializeEnvironment(const FbxColor & pAmbientLight) -{ - glLightfv(GL_LIGHT0, GL_POSITION, DEFAULT_DIRECTION_LIGHT_POSITION); - glLightfv(GL_LIGHT0, GL_DIFFUSE, DEFAULT_LIGHT_COLOR); - glLightfv(GL_LIGHT0, GL_SPECULAR, DEFAULT_LIGHT_COLOR); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, DEFAULT_LIGHT_SPOT_CUTOFF); - glEnable(GL_LIGHT0); - - // Set ambient light. - GLfloat lAmbientLight[] = {static_cast(pAmbientLight[0]), static_cast(pAmbientLight[1]), - static_cast(pAmbientLight[2]), 1.0f}; - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lAmbientLight); -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/SceneCache.h b/sdk/Windows/2019.2/samples/ViewScene/SceneCache.h deleted file mode 100755 index 1d73fa2..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SceneCache.h +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CACHE_H -#define _SCENE_CACHE_H - -#include "GlFunctions.h" - -// Save mesh vertices, normals, UVs and indices in GPU with OpenGL Vertex Buffer Objects -class VBOMesh -{ -public: - VBOMesh(); - ~VBOMesh(); - - // Save up data into GPU buffers. - bool Initialize(const FbxMesh * pMesh); - - // Update vertex positions for deformed meshes. - void UpdateVertexPosition(const FbxMesh * pMesh, const FbxVector4 * pVertices) const; - - // Bind buffers, set vertex arrays, turn on lighting and texture. - void BeginDraw(ShadingMode pShadingMode) const; - // Draw all the faces with specific material with given shading mode. - void Draw(int pMaterialIndex, ShadingMode pShadingMode) const; - // Unbind buffers, reset vertex arrays, turn off lighting and texture. - void EndDraw() const; - - // Get the count of material groups - int GetSubMeshCount() const { return mSubMeshes.GetCount(); } - -private: - enum - { - VERTEX_VBO, - NORMAL_VBO, - UV_VBO, - INDEX_VBO, - VBO_COUNT, - }; - - // For every material, record the offsets in every VBO and triangle counts - struct SubMesh - { - SubMesh() : IndexOffset(0), TriangleCount(0) {} - - int IndexOffset; - int TriangleCount; - }; - - GLuint mVBONames[VBO_COUNT]; - FbxArray mSubMeshes; - bool mHasNormal; - bool mHasUV; - bool mAllByControlPoint; // Save data in VBO by control point or by polygon vertex. -}; - -// Cache for FBX material -class MaterialCache -{ -public: - MaterialCache(); - ~MaterialCache(); - - bool Initialize(const FbxSurfaceMaterial * pMaterial); - - // Set material colors and binding diffuse texture if exists. - void SetCurrentMaterial() const; - - bool HasTexture() const { return mDiffuse.mTextureName != 0; } - - // Set default green color. - static void SetDefaultMaterial(); - -private: - struct ColorChannel - { - ColorChannel() : mTextureName(0) - { - mColor[0] = 0.0f; - mColor[1] = 0.0f; - mColor[2] = 0.0f; - mColor[3] = 1.0f; - } - - GLuint mTextureName; - GLfloat mColor[4]; - }; - ColorChannel mEmissive; - ColorChannel mAmbient; - ColorChannel mDiffuse; - ColorChannel mSpecular; - GLfloat mShinness; -}; - -// Property cache, value and animation curve. -struct PropertyChannel -{ - PropertyChannel() : mAnimCurve(NULL), mValue(0.0f) {} - // Query the channel value at specific time. - GLfloat Get(const FbxTime & pTime) const - { - if (mAnimCurve) - { - return mAnimCurve->Evaluate(pTime); - } - else - { - return mValue; - } - } - - FbxAnimCurve * mAnimCurve; - GLfloat mValue; -}; - -// Cache for FBX lights -class LightCache -{ -public: - LightCache(); - ~LightCache(); - - // Set ambient light. Turn on light0 and set its attributes to default (white directional light in Z axis). - // If the scene contains at least one light, the attributes of light0 will be overridden. - static void IntializeEnvironment(const FbxColor & pAmbientLight); - - bool Initialize(const FbxLight * pLight, FbxAnimLayer * pAnimLayer); - - // Draw a geometry (sphere for point and directional light, cone for spot light). - // And set light attributes. - void SetLight(const FbxTime & pTime) const; - -private: - static int sLightCount; // How many lights in this scene. - - GLuint mLightIndex; - FbxLight::EType mType; - PropertyChannel mColorRed; - PropertyChannel mColorGreen; - PropertyChannel mColorBlue; - PropertyChannel mConeAngle; -}; - -#endif // _SCENE_CACHE_H diff --git a/sdk/Windows/2019.2/samples/ViewScene/SceneContext.cxx b/sdk/Windows/2019.2/samples/ViewScene/SceneContext.cxx deleted file mode 100755 index ef30da5..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SceneContext.cxx +++ /dev/null @@ -1,1019 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#include "SceneContext.h" - -#include "SceneCache.h" -#include "SetCamera.h" -#include "DrawScene.h" -#include "DrawText.h" -#include "targa.h" -#include "../Common/Common.h" - -namespace -{ - // Default file of ViewScene example - const char * SAMPLE_FILENAME = "humanoid.fbx"; - - // Button and action definition - const int LEFT_BUTTON = 0; - const int MIDDLE_BUTTON = 1; - const int RIGHT_BUTTON = 2; - - const int BUTTON_DOWN = 0; - const int BUTTON_UP = 1; - - // Find all the cameras under this node recursively. - void FillCameraArrayRecursive(FbxNode* pNode, FbxArray& pCameraArray) - { - if (pNode) - { - if (pNode->GetNodeAttribute()) - { - if (pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eCamera) - { - pCameraArray.Add(pNode); - } - } - - const int lCount = pNode->GetChildCount(); - for (int i = 0; i < lCount; i++) - { - FillCameraArrayRecursive(pNode->GetChild(i), pCameraArray); - } - } - } - - // Find all the cameras in this scene. - void FillCameraArray(FbxScene* pScene, FbxArray& pCameraArray) - { - pCameraArray.Clear(); - - FillCameraArrayRecursive(pScene->GetRootNode(), pCameraArray); - } - - // Find all poses in this scene. - void FillPoseArray(FbxScene* pScene, FbxArray& pPoseArray) - { - const int lPoseCount = pScene->GetPoseCount(); - - for (int i=0; i < lPoseCount; ++i) - { - pPoseArray.Add(pScene->GetPose(i)); - } - } - - void PreparePointCacheData(FbxScene* pScene, FbxTime &pCache_Start, FbxTime &pCache_Stop) - { - // This function show how to cycle through scene elements in a linear way. - const int lNodeCount = pScene->GetSrcObjectCount(); - FbxStatus lStatus; - - for (int lIndex=0; lIndexGetSrcObject(lIndex); - - if (lNode->GetGeometry()) - { - int i, lVertexCacheDeformerCount = lNode->GetGeometry()->GetDeformerCount(FbxDeformer::eVertexCache); - - // There should be a maximum of 1 Vertex Cache Deformer for the moment - lVertexCacheDeformerCount = lVertexCacheDeformerCount > 0 ? 1 : 0; - - for (i=0; i(lNode->GetGeometry()->GetDeformer(i, FbxDeformer::eVertexCache)); - if( !lDeformer ) continue; - FbxCache* lCache = lDeformer->GetCache(); - if( !lCache ) continue; - - // Process the point cache data only if the constraint is active - if (lDeformer->Active.Get()) - { - if (lCache->GetCacheFileFormat() == FbxCache::eMaxPointCacheV2) - { - // This code show how to convert from PC2 to MC point cache format - // turn it on if you need it. -#if 0 - if (!lCache->ConvertFromPC2ToMC(FbxCache::eMCOneFile, - FbxTime::GetFrameRate(pScene->GetGlobalTimeSettings().GetTimeMode()))) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lCache->GetStaus().GetErrorString(); - } -#endif - } - else if (lCache->GetCacheFileFormat() == FbxCache::eMayaCache) - { - // This code show how to convert from MC to PC2 point cache format - // turn it on if you need it. - //#if 0 - if (!lCache->ConvertFromMCToPC2(FbxTime::GetFrameRate(pScene->GetGlobalSettings().GetTimeMode()), 0, &lStatus)) - { - // Conversion failed, retrieve the error here - FbxString lTheErrorIs = lStatus.GetErrorString(); - } - //#endif - } - - - // Now open the cache file to read from it - if (!lCache->OpenFileForRead(&lStatus)) - { - // Cannot open file - FbxString lTheErrorIs = lStatus.GetErrorString(); - - // Set the deformer inactive so we don't play it back - lDeformer->Active = false; - } - else - { - // get the start and stop time of the cache - FbxTime lChannel_Start; - FbxTime lChannel_Stop; - int lChannelIndex = lCache->GetChannelIndex(lDeformer->Channel.Get()); - if(lCache->GetAnimationRange(lChannelIndex, lChannel_Start, lChannel_Stop)) - { - // get the smallest start time - if(lChannel_Start < pCache_Start) pCache_Start = lChannel_Start; - - // get the biggest stop time - if(lChannel_Stop > pCache_Stop) pCache_Stop = lChannel_Stop; - } - } - } - } - } - } - } - - // Load a texture file (TGA only now) into GPU and return the texture object name - bool LoadTextureFromFile(const FbxString & pFilePath, unsigned int & pTextureObject) - { - if (pFilePath.Right(3).Upper() == "TGA") - { - tga_image lTGAImage; - - if (tga_read(&lTGAImage, pFilePath.Buffer()) == TGA_NOERR) - { - // Make sure the image is left to right - if (tga_is_right_to_left(&lTGAImage)) - tga_flip_horiz(&lTGAImage); - - // Make sure the image is bottom to top - if (tga_is_top_to_bottom(&lTGAImage)) - tga_flip_vert(&lTGAImage); - - // Make the image BGR 24 - tga_convert_depth(&lTGAImage, 24); - - // Transfer the texture date into GPU - glGenTextures(1, &pTextureObject); - glBindTexture(GL_TEXTURE_2D, pTextureObject); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexImage2D(GL_TEXTURE_2D, 0, 3, lTGAImage.width, lTGAImage.height, 0, GL_BGR, - GL_UNSIGNED_BYTE, lTGAImage.image_data); - glBindTexture(GL_TEXTURE_2D, 0); - - tga_free_buffers(&lTGAImage); - - return true; - } - } - - return false; - } - - // Bake node attributes and materials under this node recursively. - // Currently only mesh, light and material. - void LoadCacheRecursive(FbxNode * pNode, FbxAnimLayer * pAnimLayer, bool pSupportVBO) - { - // Bake material and hook as user data. - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && !lMaterial->GetUserDataPtr()) - { - FbxAutoPtr lMaterialCache(new MaterialCache); - if (lMaterialCache->Initialize(lMaterial)) - { - lMaterial->SetUserDataPtr(lMaterialCache.Release()); - } - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Bake mesh as VBO(vertex buffer object) into GPU. - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (pSupportVBO && lMesh && !lMesh->GetUserDataPtr()) - { - FbxAutoPtr lMeshCache(new VBOMesh); - if (lMeshCache->Initialize(lMesh)) - { - lMesh->SetUserDataPtr(lMeshCache.Release()); - } - } - } - // Bake light properties. - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && !lLight->GetUserDataPtr()) - { - FbxAutoPtr lLightCache(new LightCache); - if (lLightCache->Initialize(lLight, pAnimLayer)) - { - lLight->SetUserDataPtr(lLightCache.Release()); - } - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - LoadCacheRecursive(pNode->GetChild(lChildIndex), pAnimLayer, pSupportVBO); - } - } - - // Unload the cache and release the memory under this node recursively. - void UnloadCacheRecursive(FbxNode * pNode) - { - // Unload the material cache - const int lMaterialCount = pNode->GetMaterialCount(); - for (int lMaterialIndex = 0; lMaterialIndex < lMaterialCount; ++lMaterialIndex) - { - FbxSurfaceMaterial * lMaterial = pNode->GetMaterial(lMaterialIndex); - if (lMaterial && lMaterial->GetUserDataPtr()) - { - MaterialCache * lMaterialCache = static_cast(lMaterial->GetUserDataPtr()); - lMaterial->SetUserDataPtr(NULL); - delete lMaterialCache; - } - } - - FbxNodeAttribute* lNodeAttribute = pNode->GetNodeAttribute(); - if (lNodeAttribute) - { - // Unload the mesh cache - if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) - { - FbxMesh * lMesh = pNode->GetMesh(); - if (lMesh && lMesh->GetUserDataPtr()) - { - VBOMesh * lMeshCache = static_cast(lMesh->GetUserDataPtr()); - lMesh->SetUserDataPtr(NULL); - delete lMeshCache; - } - } - // Unload the light cache - else if (lNodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) - { - FbxLight * lLight = pNode->GetLight(); - if (lLight && lLight->GetUserDataPtr()) - { - LightCache * lLightCache = static_cast(lLight->GetUserDataPtr()); - lLight->SetUserDataPtr(NULL); - delete lLightCache; - } - } - } - - const int lChildCount = pNode->GetChildCount(); - for (int lChildIndex = 0; lChildIndex < lChildCount; ++lChildIndex) - { - UnloadCacheRecursive(pNode->GetChild(lChildIndex)); - } - } - - // Bake node attributes and materials for this scene and load the textures. - void LoadCacheRecursive(FbxScene * pScene, FbxAnimLayer * pAnimLayer, const char * pFbxFileName, bool pSupportVBO) - { - // Load the textures into GPU, only for file texture now - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && !lFileTexture->GetUserDataPtr()) - { - // Try to load the texture from absolute path - const FbxString lFileName = lFileTexture->GetFileName(); - - // Only TGA textures are supported now. - if (lFileName.Right(3).Upper() != "TGA") - { - FBXSDK_printf("Only TGA textures are supported now: %s\n", lFileName.Buffer()); - continue; - } - - GLuint lTextureObject = 0; - bool lStatus = LoadTextureFromFile(lFileName, lTextureObject); - - const FbxString lAbsFbxFileName = FbxPathUtils::Resolve(pFbxFileName); - const FbxString lAbsFolderName = FbxPathUtils::GetFolderName(lAbsFbxFileName); - if (!lStatus) - { - // Load texture from relative file name (relative to FBX file) - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lFileTexture->GetRelativeFileName()); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - // Load texture from file name only (relative to FBX file) - const FbxString lTextureFileName = FbxPathUtils::GetFileName(lFileName); - const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lTextureFileName); - lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); - } - - if (!lStatus) - { - FBXSDK_printf("Failed to load texture file: %s\n", lFileName.Buffer()); - continue; - } - - if (lStatus) - { - GLuint * lTextureName = new GLuint(lTextureObject); - lFileTexture->SetUserDataPtr(lTextureName); - } - } - } - - LoadCacheRecursive(pScene->GetRootNode(), pAnimLayer, pSupportVBO); - } - - // Unload the cache and release the memory fro this scene and release the textures in GPU - void UnloadCacheRecursive(FbxScene * pScene) - { - const int lTextureCount = pScene->GetTextureCount(); - for (int lTextureIndex = 0; lTextureIndex < lTextureCount; ++lTextureIndex) - { - FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); - FbxFileTexture * lFileTexture = FbxCast(lTexture); - if (lFileTexture && lFileTexture->GetUserDataPtr()) - { - GLuint * lTextureName = static_cast(lFileTexture->GetUserDataPtr()); - lFileTexture->SetUserDataPtr(NULL); - glDeleteTextures(1, lTextureName); - delete lTextureName; - } - } - - UnloadCacheRecursive(pScene->GetRootNode()); - } -} - -bool InitializeOpenGL() -{ - // Initialize GLEW. - GLenum lError = glewInit(); - if (lError != GLEW_OK) - { - FBXSDK_printf("GLEW Error: %s\n", glewGetErrorString(lError)); - return false; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glClearColor(0.0, 0.0, 0.0, 0.0); - - // OpenGL 1.5 at least. - if (!GLEW_VERSION_1_5) - { - FBXSDK_printf("The OpenGL version should be at least 1.5 to display shaded scene!\n"); - return false; - } - - return true; -} - -SceneContext::SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO) -: mFileName(pFileName), mStatus(UNLOADED), -mSdkManager(NULL), mScene(NULL), mImporter(NULL), mCurrentAnimLayer(NULL), mSelectedNode(NULL), -mPoseIndex(-1), mCameraStatus(CAMERA_NOTHING), mPause(false), mShadingMode(SHADING_MODE_SHADED), -mSupportVBO(pSupportVBO), mCameraZoomMode(ZOOM_FOCAL_LENGTH), -mWindowWidth(pWindowWidth), mWindowHeight(pWindowHeight), mDrawText(new DrawText) -{ - if (mFileName == NULL) - mFileName = SAMPLE_FILENAME; - - // initialize cache start and stop time - mCache_Start = FBXSDK_TIME_INFINITE; - mCache_Stop = FBXSDK_TIME_MINUS_INFINITE; - - // Create the FBX SDK manager which is the object allocator for almost - // all the classes in the SDK and create the scene. - InitializeSdkObjects(mSdkManager, mScene); - - if (mSdkManager) - { - // Create the importer. - int lFileFormat = -1; - mImporter = FbxImporter::Create(mSdkManager,""); - if (!mSdkManager->GetIOPluginRegistry()->DetectReaderFileFormat(mFileName, lFileFormat) ) - { - // Unrecognizable file format. Try to fall back to FbxImporter::eFBX_BINARY - lFileFormat = mSdkManager->GetIOPluginRegistry()->FindReaderIDByDescription( "FBX binary (*.fbx)" );; - } - - // Initialize the importer by providing a filename. - if(mImporter->Initialize(mFileName, lFileFormat) == true) - { - // The file is going to be imported at - // the end of the first display callback. - mWindowMessage = "Importing file "; - mWindowMessage += mFileName; - mWindowMessage += "\nPlease wait!"; - - // Set scene status flag to ready to load. - mStatus = MUST_BE_LOADED; - } - else - { - mWindowMessage = "Unable to open file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - mWindowMessage += "\nEsc to exit"; - } - } - else - { - mWindowMessage = "Unable to create the FBX SDK manager"; - mWindowMessage += "\nEsc to exit"; - } -} - -SceneContext::~SceneContext() -{ - FbxArrayDelete(mAnimStackNameArray); - - delete mDrawText; - - // Unload the cache and free the memory - if (mScene) - { - UnloadCacheRecursive(mScene); - } - - // Delete the FBX SDK manager. All the objects that have been allocated - // using the FBX SDK manager and that haven't been explicitly destroyed - // are automatically destroyed at the same time. - DestroySdkObjects(mSdkManager, true); -} - -bool SceneContext::LoadFile() -{ - bool lResult = false; - // Make sure that the scene is ready to load. - if (mStatus == MUST_BE_LOADED) - { - if (mImporter->Import(mScene) == true) - { - // Check the scene integrity! - FbxStatus status; - FbxArray< FbxString*> details; - FbxSceneCheckUtility sceneCheck(FbxCast(mScene), &status, &details); - lResult = sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData); - if (lResult == false) - { - if (details.GetCount()) - { - mStatus = UNLOADED; - FBXSDK_printf("Scene integrity verification failed with the following errors:\n"); - - for (int i = 0; i < details.GetCount(); i++) - FBXSDK_printf(" %s\n", details[i]->Buffer()); - - FbxArrayDelete(details); - } - } - - if (lResult) - { - // Set the scene status flag to refresh - // the scene in the first timer callback. - mStatus = MUST_BE_REFRESHED; - - // Convert Axis System to what is used in this example, if needed - FbxAxisSystem SceneAxisSystem = mScene->GetGlobalSettings().GetAxisSystem(); - FbxAxisSystem OurAxisSystem(FbxAxisSystem::eYAxis, FbxAxisSystem::eParityOdd, FbxAxisSystem::eRightHanded); - if (SceneAxisSystem != OurAxisSystem) - { - OurAxisSystem.ConvertScene(mScene); - } - - // Convert Unit System to what is used in this example, if needed - FbxSystemUnit SceneSystemUnit = mScene->GetGlobalSettings().GetSystemUnit(); - if (SceneSystemUnit.GetScaleFactor() != 1.0) - { - //The unit in this example is centimeter. - FbxSystemUnit::cm.ConvertScene(mScene); - } - - // Get the list of all the animation stack. - mScene->FillAnimStackNameArray(mAnimStackNameArray); - - // Get the list of all the cameras in the scene. - FillCameraArray(mScene, mCameraArray); - - // Convert mesh, NURBS and patch into triangle mesh - FbxGeometryConverter lGeomConverter(mSdkManager); - lGeomConverter.Triangulate(mScene, /*replace*/true); - - // Bake the scene for one frame - LoadCacheRecursive(mScene, mCurrentAnimLayer, mFileName, mSupportVBO); - - // Convert any .PC2 point cache data into the .MC format for - // vertex cache deformer playback. - PreparePointCacheData(mScene, mCache_Start, mCache_Stop); - - // Get the list of pose in the scene - FillPoseArray(mScene, mPoseArray); - - // Initialize the window message. - mWindowMessage = "File "; - mWindowMessage += mFileName; - mWindowMessage += "\nClick on the right mouse button to enter menu."; - mWindowMessage += "\nEsc to exit."; - - // Initialize the frame period. - mFrameTime.SetTime(0, 0, 0, 1, 0, mScene->GetGlobalSettings().GetTimeMode()); - - // Print the keyboard shortcuts. - FBXSDK_printf("Play/Pause Animation: Space Bar.\n"); - FBXSDK_printf("Camera Rotate: Left Mouse Button.\n"); - FBXSDK_printf("Camera Pan: Left Mouse Button + Middle Mouse Button.\n"); - FBXSDK_printf("Camera Zoom: Middle Mouse Button.\n"); - } - } - else - { - // Import failed, set the scene status flag accordingly. - mStatus = UNLOADED; - - mWindowMessage = "Unable to import file "; - mWindowMessage += mFileName; - mWindowMessage += "\nError reported: "; - mWindowMessage += mImporter->GetStatus().GetErrorString(); - } - - // Destroy the importer to release the file. - mImporter->Destroy(); - mImporter = NULL; - } - - return lResult; -} - -bool SceneContext::SetCurrentAnimStack(int pIndex) -{ - const int lAnimStackCount = mAnimStackNameArray.GetCount(); - if (!lAnimStackCount || pIndex >= lAnimStackCount) - { - return false; - } - - // select the base layer from the animation stack - FbxAnimStack * lCurrentAnimationStack = mScene->FindMember(mAnimStackNameArray[pIndex]->Buffer()); - if (lCurrentAnimationStack == NULL) - { - // this is a problem. The anim stack should be found in the scene! - return false; - } - - // we assume that the first animation layer connected to the animation stack is the base layer - // (this is the assumption made in the FBXSDK) - mCurrentAnimLayer = lCurrentAnimationStack->GetMember(); - mScene->SetCurrentAnimationStack(lCurrentAnimationStack); - - FbxTakeInfo* lCurrentTakeInfo = mScene->GetTakeInfo(*(mAnimStackNameArray[pIndex])); - if (lCurrentTakeInfo) - { - mStart = lCurrentTakeInfo->mLocalTimeSpan.GetStart(); - mStop = lCurrentTakeInfo->mLocalTimeSpan.GetStop(); - } - else - { - // Take the time line value - FbxTimeSpan lTimeLineTimeSpan; - mScene->GetGlobalSettings().GetTimelineDefaultTimeSpan(lTimeLineTimeSpan); - - mStart = lTimeLineTimeSpan.GetStart(); - mStop = lTimeLineTimeSpan.GetStop(); - } - - // check for smallest start with cache start - if(mCache_Start < mStart) - mStart = mCache_Start; - - // check for biggest stop with cache stop - if(mCache_Stop > mStop) - mStop = mCache_Stop; - - // move to beginning - mCurrentTime = mStart; - - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - return true; -} - -bool SceneContext::SetCurrentCamera(const char * pCameraName) -{ - if (!pCameraName) - { - return false; - } - - FbxGlobalSettings& lGlobalCameraSettings = mScene->GetGlobalSettings(); - lGlobalCameraSettings.SetDefaultCamera(pCameraName); - mStatus = MUST_BE_REFRESHED; - return true; -} - -bool SceneContext::SetCurrentPoseIndex(int pPoseIndex) -{ - mPoseIndex = pPoseIndex; - mStatus = MUST_BE_REFRESHED; - return true; -} - -void SceneContext::OnTimerClick() const -{ - // Loop in the animation stack if not paused. - if (mStop > mStart && !mPause) - { - // Set the scene status flag to refresh - // the scene in the next timer callback. - mStatus = MUST_BE_REFRESHED; - - mCurrentTime += mFrameTime; - - if (mCurrentTime > mStop) - { - mCurrentTime = mStart; - } - } - // Avoid displaying the same frame on - // and on if the animation stack has no length. - else - { - // Set the scene status flag to avoid refreshing - // the scene in the next timer callback. - mStatus = REFRESHED; - } -} - -// Redraw the scene -bool SceneContext::OnDisplay() -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // Test if the scene has been loaded yet. - if (mStatus != UNLOADED && mStatus != MUST_BE_LOADED) - { - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_LIGHTING_BIT); - glEnable(GL_DEPTH_TEST); - // Draw the front face only, except for the texts and lights. - glEnable(GL_CULL_FACE); - - // Set the view to the current camera settings. - SetCamera(mScene, mCurrentTime, mCurrentAnimLayer, mCameraArray, - mWindowWidth, mWindowHeight); - - FbxPose * lPose = NULL; - if (mPoseIndex != -1) - { - lPose = mScene->GetPose(mPoseIndex); - } - - // If one node is selected, draw it and its children. - FbxAMatrix lDummyGlobalPosition; - - if (mSelectedNode) - { - // Set the lighting before other things. - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mSelectedNode, mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - // Otherwise, draw the whole scene. - else - { - InitializeLights(mScene, mCurrentTime, lPose); - DrawNodeRecursive(mScene->GetRootNode(), mCurrentTime, mCurrentAnimLayer, lDummyGlobalPosition, lPose, mShadingMode); - DisplayGrid(lDummyGlobalPosition); - } - - glPopAttrib(); - glPopAttrib(); - } - - DisplayWindowMessage(); - - return true; -} - -void SceneContext::OnReshape(int pWidth, int pHeight) -{ - glViewport(0, 0, (GLsizei)pWidth, (GLsizei)pHeight); - mWindowWidth = pWidth; - mWindowHeight = pHeight; -} - -void SceneContext::OnKeyboard(unsigned char pKey) -{ - // Zoom In on '+' or '=' keypad keys - if (pKey == 43 || pKey == 61) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // Zoom Out on '-' or '_' keypad keys - if (pKey == 45 || pKey == 95) - { - FbxCamera* lCamera = GetCurrentCamera(mScene); - if(lCamera) - { - //double lOriginalAperture = sqrt(lCamera->GetApertureWidth()); - CameraZoom(mScene, 0 - 10, mCameraZoomMode); - mStatus = MUST_BE_REFRESHED; - } - } - - // 'N' enable/disable normal display - if (pKey == 'N' || pKey == 'n') - { - //gOGLScene->GetShadingManager()->SetDrawNormal(!gOGLScene->GetShadingManager()->IsDrawNormal()); - } - - // Pause and unpause when spacebar is pressed. - if (pKey == ' ') - { - SetPause(!GetPause()); - } -} - -void SceneContext::OnMouse(int pButton, int pState, int pX, int pY) -{ - // Move the camera (orbit, zoom or pan) with the mouse. - FbxCamera* lCamera = GetCurrentCamera(mScene); - if (lCamera) - { - mCamPosition = lCamera->Position.Get(); - mCamCenter = lCamera->InterestPosition.Get(); - mRoll = lCamera->Roll.Get(); - } - mLastX = pX; - mLastY = pY; - - switch (pButton) - { - case LEFT_BUTTON: - // ORBIT (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ZOOM) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ORBIT; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ZOOM; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - - case MIDDLE_BUTTON: - // ZOOM (or PAN) - switch (pState) - { - case BUTTON_DOWN: - if (mCameraStatus == CAMERA_ORBIT) - { - mCameraStatus = CAMERA_PAN; - } - else - { - mCameraStatus = CAMERA_ZOOM; - } - break; - - default: - if (mCameraStatus == CAMERA_PAN) - { - mCameraStatus = CAMERA_ORBIT; - } - else - { - mCameraStatus = CAMERA_NOTHING; - } - break; - } - break; - } -} - -void SceneContext::OnMouseMotion(int pX, int pY) -{ - int motion; - - switch (mCameraStatus) - { - default: - break; - case CAMERA_ORBIT: - CameraOrbit(mScene, mCamPosition, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_ZOOM: - motion = mLastY-pY; - CameraZoom(mScene, motion, mCameraZoomMode); - mLastY = pY; - mStatus = MUST_BE_REFRESHED; - break; - - case CAMERA_PAN: - CameraPan(mScene, mCamPosition, mCamCenter, mRoll, pX-mLastX, mLastY-pY); - mStatus = MUST_BE_REFRESHED; - break; - } -} - -void SceneContext::SetSelectedNode(FbxNode * pSelectedNode) -{ - mSelectedNode = pSelectedNode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::SetShadingMode(ShadingMode pMode) -{ - mShadingMode = pMode; - mStatus = MUST_BE_REFRESHED; -} - -void SceneContext::DisplayWindowMessage() -{ - glColor3f(1.0, 1.0, 1.0); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, mWindowWidth, 0, mWindowHeight); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - // Display message in the left up corner of the window - const float lX = 5; - const float lY = static_cast(mWindowHeight) - 20; - glTranslatef(lX, lY, 0); - - mDrawText->SetPointSize(15.f); - mDrawText->Display(mWindowMessage.Buffer()); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); -} - -void SceneContext::DisplayGrid(const FbxAMatrix & pTransform) -{ - glPushMatrix(); - glMultMatrixd(pTransform); - - // Draw a grid 500*500 - glColor3f(0.3f, 0.3f, 0.3f); - glLineWidth(1.0); - const int hw = 500; - const int step = 20; - const int bigstep = 100; - int i; - - // Draw Grid - for (i = -hw; i <= hw; i+=step) { - - if (i % bigstep == 0) { - glLineWidth(2.0); - } else { - glLineWidth(1.0); - } - glBegin(GL_LINES); - glVertex3i(i,0,-hw); - glVertex3i(i,0,hw); - glEnd(); - glBegin(GL_LINES); - glVertex3i(-hw,0,i); - glVertex3i(hw,0,i); - glEnd(); - - } - - // Write some grid info - const GLfloat zoffset = -2.f; - const GLfloat xoffset = 1.f; - mDrawText->SetPointSize(4.f); - for (i = -hw; i <= hw; i+=bigstep) - { - - FbxString scoord; - int lCount; - - // Don't display origin - //if (i == 0) continue; - if (i == 0) { - scoord = "0"; - lCount = (int)scoord.GetLen(); - glPushMatrix(); - glVertex3f(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - - mDrawText->Display(scoord.Buffer()); - - glPopMatrix(); - - continue; - } - - // X coordinates - scoord = "X: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(i+xoffset,0,zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - // Z coordinates - scoord = "Z: "; - scoord += i; - lCount = (int)scoord.GetLen(); - - glPushMatrix(); - glTranslatef(xoffset,0,i+zoffset); - glRotatef(-90,1,0,0); - mDrawText->Display(scoord.Buffer()); - glPopMatrix(); - - } - - glPopMatrix(); -} - - -void SceneContext::SetZoomMode( CameraZoomMode pZoomMode) -{ - if( pZoomMode == ZOOM_POSITION) - { - mCameraZoomMode = ZOOM_POSITION; - } - else - { - mCameraZoomMode = ZOOM_FOCAL_LENGTH; - } - -} diff --git a/sdk/Windows/2019.2/samples/ViewScene/SceneContext.h b/sdk/Windows/2019.2/samples/ViewScene/SceneContext.h deleted file mode 100755 index 7b748e3..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SceneContext.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SCENE_CONTEXT_H -#define _SCENE_CONTEXT_H - -#include "GlFunctions.h" - -class DrawText; - -// This class is responsive for loading files and recording current status as -// a bridge between window system such as GLUT or Qt and a specific FBX scene. -class SceneContext -{ -public: - enum Status - { - UNLOADED, // Unload file or load failure; - MUST_BE_LOADED, // Ready for loading file; - MUST_BE_REFRESHED, // Something changed and redraw needed; - REFRESHED // No redraw needed. - }; - Status GetStatus() const { return mStatus; } - - // Initialize with a .FBX, .DAE or .OBJ file name and current window size. - SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO); - ~SceneContext(); - - // Return the FBX scene for more informations. - const FbxScene * GetScene() const { return mScene; } - // Load the FBX or COLLADA file into memory. - bool LoadFile(); - - // The time period for one frame. - const FbxTime GetFrameTime() const { return mFrameTime; } - - // Call this method when redraw is needed. - bool OnDisplay(); - // Call this method when window size is changed. - void OnReshape(int pWidth, int pHeight); - // Call this method when keyboard input occurs. - void OnKeyboard(unsigned char pKey); - // Call this method when mouse buttons are pushed or released. - void OnMouse(int pButton, int pState, int pX, int pY); - // Call this method when mouse is moved. - void OnMouseMotion(int pX, int pY); - // Call this method when timer is finished, for animation display. - void OnTimerClick() const; - - // Methods for creating menus. - // Get all the cameras in current scene, including producer cameras. - const FbxArray & GetCameraArray() const { return mCameraArray; } - // Get all the animation stack names in current scene. - const FbxArray & GetAnimStackNameArray() const { return mAnimStackNameArray; } - // Get all the pose in current scene. - const FbxArray & GetPoseArray() const { return mPoseArray; } - - // The input index is corresponding to the array returned from GetAnimStackNameArray. - bool SetCurrentAnimStack(int pIndex); - // Set the current camera with its name. - bool SetCurrentCamera(const char * pCameraName); - // The input index is corresponding to the array returned from GetPoseArray. - bool SetCurrentPoseIndex(int pPoseIndex); - // Set the currently selected node from external window system. - void SetSelectedNode(FbxNode * pSelectedNode); - // Set the shading mode, wire-frame or shaded. - void SetShadingMode(ShadingMode pMode); - - // Pause the animation. - void SetPause(bool pPause) { mPause = pPause; } - // Check whether the animation is paused. - bool GetPause() const { return mPause; } - - - enum CameraZoomMode - { - ZOOM_FOCAL_LENGTH, - ZOOM_POSITION - }; - CameraZoomMode GetZoomMode() { return mCameraZoomMode; } - void SetZoomMode( CameraZoomMode pZoomMode); - -private: - // Display information about current status in the left-up corner of the window. - void DisplayWindowMessage(); - // Display a X-Z grid. - void DisplayGrid(const FbxAMatrix & pTransform); - - enum CameraStatus - { - CAMERA_NOTHING, - CAMERA_ORBIT, - CAMERA_ZOOM, - CAMERA_PAN - }; - - const char * mFileName; - mutable Status mStatus; - mutable FbxString mWindowMessage; - - FbxManager * mSdkManager; - FbxScene * mScene; - FbxImporter * mImporter; - FbxAnimLayer * mCurrentAnimLayer; - FbxNode * mSelectedNode; - - int mPoseIndex; - FbxArray mAnimStackNameArray; - FbxArray mCameraArray; - FbxArray mPoseArray; - - mutable FbxTime mFrameTime, mStart, mStop, mCurrentTime; - mutable FbxTime mCache_Start, mCache_Stop; - - // Data for camera manipulation - mutable int mLastX, mLastY; - mutable FbxVector4 mCamPosition, mCamCenter; - mutable double mRoll; - mutable CameraStatus mCameraStatus; - - bool mPause; - ShadingMode mShadingMode; - bool mSupportVBO; - - //camera zoom mode - CameraZoomMode mCameraZoomMode; - - int mWindowWidth, mWindowHeight; - // Utility class for draw text in OpenGL. - DrawText * mDrawText; -}; - -// Initialize GLEW, must be called after the window is created. -bool InitializeOpenGL(); - -#endif // _SCENE_CONTEXT_H - diff --git a/sdk/Windows/2019.2/samples/ViewScene/SetCamera.cxx b/sdk/Windows/2019.2/samples/ViewScene/SetCamera.cxx deleted file mode 100755 index 6e4a1cd..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SetCamera.cxx +++ /dev/null @@ -1,896 +0,0 @@ -/**************************************************************************************** - - Copyright (C) 2015 Autodesk, Inc. - All rights reserved. - - Use of this software is subject to the terms of the Autodesk license agreement - provided at the time of installation or download, or which otherwise accompanies - this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This file contains functions to: -// 1) find the current camera; -// 2) get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 3) compute the orientation of a camera. -// -///////////////////////////////////////////////////////////////////////// - -#include - -#include "GetPosition.h" -#include "GlFunctions.h" -#include "SetCamera.h" -#include "SceneContext.h" - -#define HFOV2VFOV(h, ar) (2.0 * atan((ar) * tan( (h * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectY / aspectX -#define VFOV2HFOV(v, ar) (2.0 * atan((ar) * tan( (v * FBXSDK_PI_DIV_180) * 0.5)) * FBXSDK_180_DIV_PI) //ar : aspectX / aspectY - -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray); -void GetCameraAnimatedParameters(FbxNode* pNode, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer); -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera); - -static double gsOrthoCameraScale = 178.0; - - -// Set the view to the current camera settings. -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight) -{ - // Find the current camera at the given time. - FbxCamera* lCamera = GetCurrentCamera(pScene, pTime, pAnimLayer, pCameraArray); - if( lCamera == NULL) - return; - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lUp(0,1,0); - FbxVector4 lForward, lRight; - - if (lCamera) - { - lEye = lCamera->Position.Get(); - lUp = lCamera->UpVector.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = GetGlobalPosition(lCameraNode->GetTarget(), pTime).GetT(); - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - lCenter = lCamera->InterestPosition.Get(); - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector(GetGlobalPosition(lCameraNode, pTime).GetR()); - lGlobalRotation.SetR(lRotationVector); - - // Get the length - FbxVector4 lInterestPosition(lCamera->InterestPosition.Get()); - FbxVector4 lCameraGlobalPosition(GetGlobalPosition(lCameraNode, pTime).GetT()); - double lLength = (FbxVector4(lInterestPosition - lCameraGlobalPosition).Length()); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lCenter = lGlobalRotation.MultT(lRotationVector); - lCenter *= lLength; - lCenter += lEye; - - // Update the default up vector with the camera rotation. - lRotationVector = FbxVector4(0,1.0,0); - lUp = lGlobalRotation.MultT(lRotationVector); - } - } - - // Align the up vector. - lForward = lCenter - lEye; - lForward.Normalize(); - lRight = lForward.CrossProduct(lUp); - lRight.Normalize(); - lUp = lRight.CrossProduct(lForward); - lUp.Normalize(); - - // Rotate the up vector with the roll value. - double lRadians = 0; - - if (lCamera) - lRadians = lCamera->Roll.Get() * FBXSDK_PI_DIV_180; - lUp = lUp * cos( lRadians) + lRight * sin(lRadians); - - - double lNearPlane = 0.01; - if (lCamera) - lNearPlane = lCamera->GetNearPlane(); - double lFarPlane = 4000.0; - if (lCamera) - lFarPlane = lCamera->GetFarPlane(); - - //Get global scaling. - FbxVector4 lCameraScaling = GetGlobalPosition(lCameraNode, pTime).GetS(); - static const int FORWARD_SCALE = 2; - - //scaling near plane and far plane - lNearPlane *= lCameraScaling[ FORWARD_SCALE]; - lFarPlane *= lCameraScaling[ FORWARD_SCALE]; - - - - - - - // Get the relevant camera settings for a perspective view. - if (lCamera && lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - //get the aspect ratio - FbxCamera::EAspectRatioMode lCamAspectRatioMode = lCamera->GetAspectRatioMode(); - double lAspectX = lCamera->AspectWidth.Get(); - double lAspectY = lCamera->AspectHeight.Get(); - double lAspectRatio = 1.333333; - switch( lCamAspectRatioMode) - { - case FbxCamera::eWindowSize: - lAspectRatio = lAspectX / lAspectY; - break; - case FbxCamera::eFixedRatio: - lAspectRatio = lAspectX; - - break; - case FbxCamera::eFixedResolution: - lAspectRatio = lAspectX / lAspectY * lCamera->GetPixelRatio(); - break; - case FbxCamera::eFixedWidth: - lAspectRatio = lCamera->GetPixelRatio() / lAspectY; - break; - case FbxCamera::eFixedHeight: - lAspectRatio = lCamera->GetPixelRatio() * lAspectX; - break; - default: - break; - - } - - //get the aperture ratio - double lFilmHeight = lCamera->GetApertureHeight(); - double lFilmWidth = lCamera->GetApertureWidth() * lCamera->GetSqueezeRatio(); - //here we use Height : Width - double lApertureRatio = lFilmHeight / lFilmWidth; - - - //change the aspect ratio to Height : Width - lAspectRatio = 1 / lAspectRatio; - //revise the aspect ratio and aperture ratio - FbxCamera::EGateFit lCameraGateFit = lCamera->GateFit.Get(); - switch( lCameraGateFit ) - { - - case FbxCamera::eFitFill: - if( lApertureRatio > lAspectRatio) // the same as eHORIZONTAL_FIT - { - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - } - else if( lApertureRatio < lAspectRatio) //the same as eVERTICAL_FIT - { - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - } - break; - case FbxCamera::eFitVertical: - lFilmWidth = lFilmHeight / lAspectRatio; - lCamera->SetApertureWidth( lFilmWidth); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitHorizontal: - lFilmHeight = lFilmWidth * lAspectRatio; - lCamera->SetApertureHeight( lFilmHeight); - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitStretch: - lAspectRatio = lApertureRatio; - break; - case FbxCamera::eFitOverscan: - if( lFilmWidth > lFilmHeight) - { - lFilmHeight = lFilmWidth * lAspectRatio; - } - else - { - lFilmWidth = lFilmHeight / lAspectRatio; - } - lApertureRatio = lFilmHeight / lFilmWidth; - break; - case FbxCamera::eFitNone: - default: - break; - } - //change the aspect ratio to Width : Height - lAspectRatio = 1 / lAspectRatio; - - double lFieldOfViewX = 0.0; - double lFieldOfViewY = 0.0; - if ( lCamera->GetApertureMode() == FbxCamera::eVertical) - { - lFieldOfViewY = lCamera->FieldOfView.Get(); - lFieldOfViewX = VFOV2HFOV( lFieldOfViewY, 1 / lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizontal) - { - lFieldOfViewX = lCamera->FieldOfView.Get(); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eFocalLength) - { - lFieldOfViewX = lCamera->ComputeFieldOfView(lCamera->FocalLength.Get()); //get HFOV - lFieldOfViewY = HFOV2VFOV( lFieldOfViewX, lApertureRatio); - } - else if (lCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - lFieldOfViewX = lCamera->FieldOfViewX.Get(); - lFieldOfViewY = lCamera->FieldOfViewY.Get(); - } - - - - double lRealScreenRatio = (double)pWindowWidth / (double)pWindowHeight; - int lViewPortPosX = 0, - lViewPortPosY = 0, - lViewPortSizeX = pWindowWidth, - lViewPortSizeY = pWindowHeight; - //compute the view port - if( lRealScreenRatio > lAspectRatio) - { - lViewPortSizeY = pWindowHeight; - lViewPortSizeX = (int)( lViewPortSizeY * lAspectRatio); - lViewPortPosY = 0; - lViewPortPosX = (int)((pWindowWidth - lViewPortSizeX) * 0.5); - } - else - { - lViewPortSizeX = pWindowWidth; - lViewPortSizeY = (int)(lViewPortSizeX / lAspectRatio); - lViewPortPosX = 0; - lViewPortPosY = (int)((pWindowHeight - lViewPortSizeY) * 0.5); - } - - //revise the Perspective since we have film offset - double lFilmOffsetX = lCamera->FilmOffsetX.Get(); - double lFilmOffsetY = lCamera->FilmOffsetY.Get(); - lFilmOffsetX = 0 - lFilmOffsetX / lFilmWidth * 2.0; - lFilmOffsetY = 0 - lFilmOffsetY / lFilmHeight * 2.0; - - GlSetCameraPerspective( lFieldOfViewY, lAspectRatio, lNearPlane, lFarPlane, lEye, lCenter, lUp, lFilmOffsetX, lFilmOffsetY); - - - - //glMatrixMode(GL_PROJECTION); - //double lTestPerpMatrix[ 16]; - //glGetDoublev( GL_PROJECTION_MATRIX, lTestPerpMatrix); - - //lTestPerpMatrix[ 8] -= lFilmOffsetX; - //lTestPerpMatrix[ 9] -= lFilmOffsetY; - // - //glLoadMatrixd( lTestPerpMatrix); - //glMatrixMode(GL_MODELVIEW); - - - glViewport( lViewPortPosX, lViewPortPosY, lViewPortSizeX, lViewPortSizeY); - - - } - // Get the relevant camera settings for an orthogonal view. - else - { - double lPixelRatio = 1.0; - if (lCamera) - lPixelRatio = lCamera->GetPixelRatio(); - - double lLeftPlane, lRightPlane, lBottomPlane, lTopPlane; - - if(pWindowWidth < pWindowHeight) - { - lLeftPlane = -gsOrthoCameraScale * lPixelRatio; - lRightPlane = gsOrthoCameraScale * lPixelRatio; - lBottomPlane = -gsOrthoCameraScale * pWindowHeight / pWindowWidth; - lTopPlane = gsOrthoCameraScale * pWindowHeight / pWindowWidth; - } - else - { - pWindowWidth *= (int) lPixelRatio; - lLeftPlane = -gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lRightPlane = gsOrthoCameraScale * pWindowWidth / pWindowHeight; - lBottomPlane = -gsOrthoCameraScale; - lTopPlane = gsOrthoCameraScale; - } - - GlSetCameraOrthogonal(lLeftPlane, - lRightPlane, - lBottomPlane, - lTopPlane, - lNearPlane, - lFarPlane, - lEye, - lCenter, - lUp); - } -} - - -// Find the current camera at the given time. -FbxCamera* GetCurrentCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray) -{ - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxString lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - // check if we need to create the Producer cameras! - if (lGlobalCameraSettings.GetCameraProducerPerspective() == NULL && - lGlobalCameraSettings.GetCameraProducerBottom() == NULL && - lGlobalCameraSettings.GetCameraProducerTop() == NULL && - lGlobalCameraSettings.GetCameraProducerFront() == NULL && - lGlobalCameraSettings.GetCameraProducerBack() == NULL && - lGlobalCameraSettings.GetCameraProducerRight() == NULL && - lGlobalCameraSettings.GetCameraProducerLeft() == NULL) - { - lGlobalCameraSettings.CreateProducerCameras(); - } - - if (lCurrentCameraName.Compare(FBXSDK_CAMERA_PERSPECTIVE) == 0) - { - return lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BOTTOM) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_TOP) == 0) - { - return lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_FRONT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_BACK) == 0) - { - return lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_RIGHT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_LEFT) == 0) - { - return lGlobalCameraSettings.GetCameraProducerLeft(); - } - else if (lCurrentCameraName.Compare(FBXSDK_CAMERA_SWITCHER) == 0) - { - FbxCameraSwitcher* lCameraSwitcher = pScene->GlobalCameraSettings().GetCameraSwitcher(); - FbxAnimCurve* lCurve = NULL; - if (lCameraSwitcher) - { - lCurve = lCameraSwitcher->CameraIndex.GetCurve(pAnimLayer); - int lCameraIndex = lCurve ? int(lCurve->Evaluate(pTime)) - 1 : 0; - if (lCameraIndex >= 0 && lCameraIndex < pCameraArray.GetCount()) - { - FbxNode* lNode = pCameraArray[lCameraIndex]; - - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - } - else - { - int i; - FbxNode* lNode = NULL; - - // Find the camera in the camera array. - for (i = 0; i < pCameraArray.GetCount(); i++) - { - if (lCurrentCameraName.Compare(pCameraArray[i]->GetName()) == 0) - { - lNode = pCameraArray[i]; - break; - } - } - - if (lNode) - { - // Get the animated parameters of the camera. - GetCameraAnimatedParameters(lNode, pTime, pAnimLayer); - - return (FbxCamera*) lNode->GetNodeAttribute(); - } - } - - return lGlobalCameraSettings.GetCameraProducerPerspective(); -} - -// Get the animated parameters of a camera contained in the scene -// and store them in the associated member variables contained in -// the camera. -void GetCameraAnimatedParameters(FbxNode* pNode, FbxTime& pTime, FbxAnimLayer* pAnimLayer) -{ - FbxCamera* lCamera = (FbxCamera*) pNode->GetNodeAttribute(); - lCamera->Position.Set(GetGlobalPosition(pNode, pTime).GetT()); - - FbxAnimCurve* fc = lCamera->Roll.GetCurve(pAnimLayer); - if (fc) - lCamera->Roll.Set(fc->Evaluate(pTime)); - - FbxCamera::EApertureMode lCameraApertureMode = lCamera->GetApertureMode(); - if (lCameraApertureMode == FbxCamera::eHorizontal || - lCameraApertureMode == FbxCamera::eVertical) - { - double lFieldOfView = lCamera->FieldOfView.Get(); - fc = lCamera->FieldOfView.GetCurve(pAnimLayer); - if (fc) - lFieldOfView = fc->Evaluate(pTime); - - //update FOV and focal length - lCamera->FieldOfView.Set( lFieldOfView); - lCamera->FocalLength.Set( lCamera->ComputeFocalLength( lFieldOfView)); - - } - else if ( lCameraApertureMode == FbxCamera::eHorizAndVert) - { - double lOldFieldOfViewX = lCamera->FieldOfViewX.Get(); - double lOldFieldOfViewY = lCamera->FieldOfViewY.Get(); - - //update FOV - double lNewFieldOfViewX = lOldFieldOfViewX; - double lNewFieldOfViewY = lOldFieldOfViewY; - fc = lCamera->FieldOfViewX.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewX = fc->Evaluate(pTime); - - fc = lCamera->FieldOfViewY.GetCurve(pAnimLayer); - if (fc) - lNewFieldOfViewY = fc->Evaluate(pTime); - - lCamera->FieldOfViewX.Set(lNewFieldOfViewX); - lCamera->FieldOfViewY.Set(lNewFieldOfViewY); - - //update aspect - double lUpdatedApertureX = lCamera->GetApertureWidth(); - double lUpdatedApertureY = lCamera->GetApertureHeight(); - lUpdatedApertureX *= tan( lNewFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewX * 0.5 * FBXSDK_PI_DIV_180); - lUpdatedApertureY *= tan( lNewFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180) / tan( lOldFieldOfViewY * 0.5 * FBXSDK_PI_DIV_180); - - lCamera->FilmWidth.Set( lUpdatedApertureX); - lCamera->FilmHeight.Set( lUpdatedApertureY); - lCamera->FilmAspectRatio.Set( lUpdatedApertureX / lUpdatedApertureY); - - - } - else if ( lCameraApertureMode == FbxCamera::eFocalLength) - { - double lFocalLength = lCamera->FocalLength.Get(); - fc = lCamera->FocalLength.GetCurve(pAnimLayer); - if (fc && fc ->Evaluate(pTime)) - lFocalLength = fc->Evaluate( pTime); - - - //update FOV and focal length - lCamera->FocalLength.Set( lFocalLength); - lCamera->FieldOfView.Set( lCamera->ComputeFieldOfView( lFocalLength)); - } -} - -bool IsProducerCamera(FbxScene* pScene, FbxCamera* pCamera) -{ - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (pCamera == lGlobalCameraSettings.GetCameraProducerPerspective()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerTop()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBottom()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerFront()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerBack()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerRight()) - return true; - if (pCamera == lGlobalCameraSettings.GetCameraProducerLeft()) - return true; - - return false; -} - -FbxCamera* GetCurrentCamera(FbxScene* pScene) -{ - FbxCamera* lRet = NULL; - FbxString lCurrentCameraName; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - FbxGlobalSettings& lGlobalSettings = pScene->GetGlobalSettings(); - - lCurrentCameraName = lGlobalSettings.GetDefaultCamera(); - - if (lCurrentCameraName == FBXSDK_CAMERA_PERSPECTIVE) - { - lRet = lGlobalCameraSettings.GetCameraProducerPerspective(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_TOP) - { - lRet = lGlobalCameraSettings.GetCameraProducerTop(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BOTTOM) - { - lRet = lGlobalCameraSettings.GetCameraProducerBottom(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_FRONT) - { - lRet = lGlobalCameraSettings.GetCameraProducerFront(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_BACK) - { - lRet = lGlobalCameraSettings.GetCameraProducerBack(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_RIGHT) - { - lRet = lGlobalCameraSettings.GetCameraProducerRight(); - } - else if (lCurrentCameraName == FBXSDK_CAMERA_LEFT) - { - lRet = lGlobalCameraSettings.GetCameraProducerLeft(); - } - else - { - FbxNode* lCameraNode = pScene->FindNodeByName( lCurrentCameraName); - if( lCameraNode) - { - lRet = lCameraNode->GetCamera(); - } - } - return lRet; -} - - -double TransformAperture( double pAperture, double pTransform) -{ - double lTransformAperture = ( pAperture + pTransform); - if( lTransformAperture < 0.25) - { - lTransformAperture = 0.25; - } - if( lTransformAperture > 179.0) - { - lTransformAperture = 179.0; - } - return lTransformAperture; -} - -void UpdatePerspCameraAttributes( FbxCamera* pCamera, double pNewApertureW, double pNewApertureH) -{ - - if( pCamera == NULL || FbxAnimUtilities::IsAnimated( pCamera)) - return; - // update focal length or field of view. - double lApertureWidthOrig = pCamera->GetApertureWidth(); - double lApertureHeightOrig = pCamera->GetApertureHeight(); - - if (pCamera->GetApertureMode() == FbxCamera::eFocalLength) { - // update focal length according to hypothetic new apertures. - double lFLOrig = pCamera->FocalLength.Get(); - double lFOVOrig = pCamera->ComputeFieldOfView(lFLOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth( pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFLNew = pCamera->ComputeFocalLength(lFOVOrig); - double lFOVNew = pCamera->ComputeFieldOfView(lFLNew); - pCamera->FocalLength.Set(lFLNew); - pCamera->FieldOfView.Set(lFOVNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eVertical - || pCamera->GetApertureMode() == FbxCamera::eHorizontal) { - double lFOVOrig = pCamera->FieldOfView.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrig); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNew = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNew); - pCamera->FieldOfView.Set(lFOVNew); - pCamera->FocalLength.Set(lFLNew); - } else if (pCamera->GetApertureMode() == FbxCamera::eHorizAndVert) { - double lFOVOrigX = pCamera->FieldOfViewX.Get(); - double lFLOrig = pCamera->ComputeFocalLength(lFOVOrigX); // recompute to be sure. - // transform aperture width and height temporarily - pCamera->SetApertureWidth(pNewApertureW ); - pCamera->SetApertureHeight(pNewApertureH ); - double lFOVNewX = pCamera->ComputeFieldOfView(lFLOrig); - double lFOVNewY = pCamera->ComputeFieldOfView(lFLOrig); - double lFLNew = pCamera->ComputeFocalLength(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewX); - pCamera->FieldOfViewY.Set(lFOVNewY); - pCamera->FocalLength.Set(lFLNew); - } - // reset aperture width and height - pCamera->SetApertureWidth(lApertureWidthOrig); - pCamera->SetApertureHeight(lApertureHeightOrig); -} - - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode) -{ - FbxCamera* lCamera = GetCurrentCamera(pScene); - if( lCamera == NULL) - return; - if( pZoomMode == SceneContext::ZOOM_FOCAL_LENGTH) - { - if (lCamera->ProjectionType.Get() == FbxCamera::ePerspective) - { - double lTransform = 0 - pZoomDepth / 400.0; - - double lApertureW = lCamera->GetApertureWidth(); - lApertureW = TransformAperture( lApertureW, lTransform); - - double lApertureH = lCamera->GetApertureHeight(); - lApertureH = TransformAperture( lApertureH, lTransform); - - UpdatePerspCameraAttributes( lCamera, lApertureW, lApertureH); - - - } - else - { - if( pZoomDepth > 0) - gsOrthoCameraScale *= 0.8; - else - gsOrthoCameraScale *= 1.25; - } - } - else - { - FbxNode* lCameraNode = lCamera ? lCamera->GetNode() : NULL; - - // Compute the camera position and direction. - FbxVector4 lEye(0,0,1); - FbxVector4 lCenter(0,0,0); - FbxVector4 lForward(0,0,0); - - if (lCamera) - { - lEye = lCamera->Position.Get(); - } - - if (lCameraNode && lCameraNode->GetTarget()) - { - lCenter = lCameraNode->GetTarget()->LclTranslation.Get(); - lForward = lCenter - lEye; - } - else - { - if (!lCameraNode || IsProducerCamera(pScene, lCamera)) - { - if (lCamera) - { - lCenter = lCamera->InterestPosition.Get(); - lForward = lCenter - lEye; - } - } - else - { - // Get the direction - FbxAMatrix lGlobalRotation; - FbxVector4 lRotationVector( lCameraNode->LclRotation.Get()); - lGlobalRotation.SetR(lRotationVector); - - // Set the center. - // A camera with rotation = {0,0,0} points to the X direction. So create a - // vector in the X direction, rotate that vector by the global rotation amount - // and then position the center by scaling and translating the resulting vector - lRotationVector = FbxVector4(1.0,0,0); - lForward = lGlobalRotation.MultT(lRotationVector); - } - } - lForward.Normalize(); - lEye += lForward * pZoomDepth; - FbxDouble3 lPosition(lEye[0], lEye[1], lEye[2]); - lCamera->Position.Set(lPosition); - - } -} - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY) -{ - // Orbit the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - if (lCamera != lGlobalCameraSettings.GetCameraProducerPerspective()) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxVector4 lRotationVector, lNewPosition, lCurPosition; - FbxAMatrix lRotation; - FbxVector4 lCenter = lCamera->InterestPosition.Get(); - - // current position - FbxVector4 lPosition = lCamera->Position.Get(); - lCurPosition = lPosition-lCenter; - - // translate - lNewPosition = lOrigCamPos-lCenter; - - int rotX; - if (lNewPosition[2] == 0) { - rotX = 90; - } else { - rotX = (int) (atan((double)lNewPosition[0]/(double)lNewPosition[2]) * FBXSDK_180_DIV_PI); - } - bool bRoll = (((int)OrigRoll % 360) != 0); - if ( (lNewPosition[2] < 0 && !bRoll) - || (lNewPosition[2] > 0 && bRoll) ) { - dY = -dY; - } - if (bRoll) dX = -dX; - - // Center on the X axis (push) - lRotationVector[1] = -rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the vertical movement: around the X axis - lRotationVector[1] = 0; - lRotationVector[0] = dY; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Back from the X axis (pop) - lRotationVector[0] = 0; - lRotationVector[1] = rotX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - // Rotation for the horizontal movement - lRotationVector[1] = -dX; - lRotation.SetR(lRotationVector); - lNewPosition = lRotation.MultT(lNewPosition); - - // Detect camera flip - if ( lNewPosition[0]*lCurPosition[0] < 0 - && lNewPosition[2]*lCurPosition[2] < 0) { - // flip -> roll 180. - double lRoll = lCamera->Roll.Get(); - lRoll = 180.0-lRoll; - lCamera->Roll.Set(lRoll); - } - - // Back from center - lNewPosition = lNewPosition + lCenter; - - lCamera->Position.Set(lNewPosition); - -} - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, double OrigRoll, int dX, int dY) { - // Pan the camera horizontally dX degrees, vertically dY degrees. - FbxCamera* lCamera = GetCurrentCamera(pScene); - if (!lCamera) return; - if (!IsProducerCamera(pScene, lCamera)) return; - if (lCamera->LockMode.Get()) return; - if (dX == 0 && dY == 0) return; - - FbxGlobalCameraSettings& lGlobalCameraSettings = pScene->GlobalCameraSettings(); - - FbxVector4 lRotationXV, lRotationYV, lTranslationV; - FbxAMatrix lRotationX, lRotationY, lRotationXInverse, lRotationYInverse, lTranslation; - FbxVector4 lNewPosition = lOrigCamPos; - FbxVector4 lNewCenter = lOrigCamCenter; - - // Translate the camera in dX and dY according to its point of view. - if (lCamera == lGlobalCameraSettings.GetCameraProducerTop()) { - lTranslationV[0] = -dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBottom()) { - lTranslationV[0] = dX; - lTranslationV[1] = 0; - lTranslationV[2] = dY; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerFront()) { - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerBack()) { - lTranslationV[0] = dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerRight()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = dX; - } else if (lCamera == lGlobalCameraSettings.GetCameraProducerLeft()) { - lTranslationV[0] = 0; - lTranslationV[1] = -dY; - lTranslationV[2] = -dX; - } else { - // Perspective view. More computation. - - // Adjust displacement when there is roll - bool bRoll = (((int)OrigRoll % 360) != 0); - if (bRoll) { - dX = -dX; - dY = -dY; - } - - // Compute angles aY and aZ of the camera with Y and Z axis. - double aZ, aY; - /// Vector of distance between camera and center (lookat) - FbxVector4 lDist = lNewPosition - lNewCenter; - // Euclidian distance between camera and lookat - double dist = (double)(lDist[0]*lDist[0]+lDist[1]*lDist[1]+lDist[2]*lDist[2]); - // aZ - if (lDist[2] == 0) { - aZ = 90.0; - } else { - aZ = (atan((double)lDist[0]/(double)lDist[2]) * FBXSDK_180_DIV_PI); - } - if (lNewPosition[2] < lNewCenter[2]) aZ += 180; - // aY - if (dist > 0.001) { - aY = (asin(sqrt((double)(lDist[1]*lDist[1])/ dist)) * FBXSDK_180_DIV_PI); - } else { - aY = 0; - } - if (lNewPosition[1] < lNewCenter[1]) aY = -aY; - - - // Basis translation - lTranslationV[0] = -dX; - lTranslationV[1] = -dY; - lTranslationV[2] = 0; - - // Rotation around Y axis - lRotationYV[0] = 0; - lRotationYV[1] = -aZ; - lRotationYV[2] = 0; - lRotationY.SetR(lRotationYV); - // Rotation around X axis - lRotationXV[0] = aY; - lRotationXV[1] = 0; - lRotationXV[2] = 0; - lRotationX.SetR(lRotationXV); - - // Modify translation according to aY and aZ. - lTranslation.SetT(lTranslationV); - lRotationYInverse = lRotationY.Inverse(); - lRotationXInverse = lRotationX.Inverse(); - lTranslation = lRotationYInverse * lRotationXInverse * lTranslation * lRotationY * lRotationX; - lTranslationV = lTranslation.GetT(); - } - - // Translate camera and center according to pan. - lNewPosition += lTranslationV; - lNewCenter += lTranslationV; - - lCamera->Position.Set(lNewPosition); - lCamera->InterestPosition.Set(lNewCenter); -} - diff --git a/sdk/Windows/2019.2/samples/ViewScene/SetCamera.h b/sdk/Windows/2019.2/samples/ViewScene/SetCamera.h deleted file mode 100755 index 147ec68..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/SetCamera.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -#ifndef _SET_CAMERA_H -#define _SET_CAMERA_H - -void SetCamera(FbxScene* pScene, - FbxTime& pTime, - FbxAnimLayer* pAnimLayer, - const FbxArray& pCameraArray, - int pWindowWidth, int pWindowHeight); - -FbxCamera* GetCurrentCamera(FbxScene* pScene); - -void CameraZoom(FbxScene* pScene, int pZoomDepth, int pZoomMode); - -void CameraOrbit(FbxScene* pScene, FbxVector4 lOrigCamPos, double OrigRoll, int dX, int dY); - -void CameraPan(FbxScene* pScene, FbxVector4 lOrigCamPos, FbxVector4 lOrigCamCenter, - double OrigRoll, int dX, int dY); - -#endif // #ifndef _SET_CAMERA_H - - - - - - diff --git a/sdk/Windows/2019.2/samples/ViewScene/humanoid.fbx b/sdk/Windows/2019.2/samples/ViewScene/humanoid.fbx deleted file mode 100755 index 57d0733..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/humanoid.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ce40cb9b86d0bcdfb66a3382a80349b70037d65197906be34eab0db6eb9418c -size 8983744 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.dll b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.dll deleted file mode 100755 index 8ffa414..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7ae7970c22b1d0909f937dacd3d1a3024fc831465cd707572b6dd5ef862d938 -size 326144 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.lib b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.lib deleted file mode 100755 index 33bab0e..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glew32.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cc5a395563604839bb880e377fa7f5012558e65ece6c3428749b8e8fd642ebb3 -size 479556 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.dll b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.dll deleted file mode 100755 index b3bafe4..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ef0e256baecd575571999a11a7ca8d035c58cd920a2c19ab52a18c78816422c -size 206336 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.lib b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.lib deleted file mode 100755 index 840890e..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx64/glut32.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:457462e909d6e79e2acc147b3b2cf263425f4171367c640d63f01ae653baded5 -size 26598 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.dll b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.dll deleted file mode 100755 index 2aef73f..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3cf99b63596a09f0048f69fecd41f34887f326e2fbd3b2d9b9cf1ce93b521a05 -size 315392 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.lib b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.lib deleted file mode 100755 index 674a3b3..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glew32.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:250e965f0783cfe2da4ba22ea1ffc4d4c9320d67f2f2a5f7e54f96d2ef20aaf2 -size 487006 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.dll b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.dll deleted file mode 100755 index 30f0c7a..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:722b8d2c4912ab640fc766424fe1bffd45a0e735293ac2d763eb4031684bb468 -size 237568 diff --git a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.lib b/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.lib deleted file mode 100755 index 86e8893..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/libs/win/glutx86/glut32.lib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:618684f0e71e75febceca90f8fad3d3b722ecff3cec7cd380bc4f426ebba7085 -size 28728 diff --git a/sdk/Windows/2019.2/samples/ViewScene/main.cxx b/sdk/Windows/2019.2/samples/ViewScene/main.cxx deleted file mode 100755 index 178e091..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/main.cxx +++ /dev/null @@ -1,466 +0,0 @@ -/**************************************************************************************** - -Copyright (C) 2015 Autodesk, Inc. -All rights reserved. - -Use of this software is subject to the terms of the Autodesk license agreement -provided at the time of installation or download, or which otherwise accompanies -this software in either electronic or hard copy form. - -****************************************************************************************/ - -///////////////////////////////////////////////////////////////////////// -// -// This example illustrates how to display the content of a FBX or a OBJ file -// in a graphical window. This program is based on the OpenGL Utility Toolkit -// (GLUT). Start the program on the command line by providing a FBX or a -// OBJ file name. A menu is provided to select the current camera and the current -// animation stack. -// -// Among other things, the example illustrates how to: -// 1) Use a custom memory allocator -// 2) Import a scene from a .FBX, .DAE or .OBJ file; -// 3) Convert the nurbs and patch attribute types of a scene into mesh -// node attributes; And trianglate all meshes. -// 4) Get the list of all the cameras in the scene; -// 5) Find the current camera; -// 6) Get the relevant settings of a camera depending on it's projection -// type and aperture mode; -// 7) Compute the local and global positions of a node; -// 8) Compute the orientation of a camera; -// 9) Compute the orientation of a light; -// 10) Compute the shape deformation of mesh vertices; -// 11) Compute the link deformation of mesh vertices. -// 12) Display the point cache simulation of a mesh. -// 13) Get the list of all pose in the scene; -// 14) Show the scene using at a specific pose. -// -///////////////////////////////////////////////////////////////////////// - -#include "SceneContext.h" -#include "GL/glut.h" - -void ExitFunction(); -void CreateMenus(); -void CameraSelectionCallback(int pItem); -void CameraZoomModeCallback(int pItem); -void AnimStackSelectionCallback(int pItem); -void MenuSelectionCallback(int pItem); -void PoseSelectionCallback(int pItem); -void ShadingModeSelectionCallback(int pItem); -void TimerCallback(int); -void DisplayCallback(); -void ReshapeCallback(int pWidth, int pHeight); -void KeyboardCallback(unsigned char pKey, int, int); -void MouseCallback(int button, int state, int x, int y); -void MotionCallback(int x, int y); - -SceneContext * gSceneContext; - -// Menu item ids. -#define PRODUCER_PERSPECTIVE_ITEM 100 -#define PRODUCER_TOP_ITEM 101 -#define PRODUCER_BOTTOM_ITEM 102 -#define PRODUCER_FRONT_ITEM 103 -#define PRODUCER_BACK_ITEM 104 -#define PRODUCER_RIGHT_ITEM 105 -#define PRODUCER_LEFT_ITEM 106 -#define CAMERA_SWITCHER_ITEM 107 -#define PLAY_ANIMATION 200 - - -const int MENU_SHADING_MODE_WIREFRAME = 300; -const int MENU_SHADING_MODE_SHADED = 301; -const char * MENU_STRING_SHADING_MODE_WIREFRAME = "Wireframe"; -const char * MENU_STRING_SHADING_MODE_SHADED = "Shaded"; - -const int MENU_ZOOM_FOCAL_LENGTH = 401; -const int MENU_ZOOM_POSITION = 402; - -const int MENU_EXIT = 400; - -const int DEFAULT_WINDOW_WIDTH = 720; -const int DEFAULT_WINDOW_HEIGHT = 486; - -class MyMemoryAllocator -{ -public: - static void* MyMalloc(size_t pSize) - { - char *p = (char*)malloc(pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyCalloc(size_t pCount, size_t pSize) - { - char *p = (char*)calloc(pCount, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - - static void* MyRealloc(void* pData, size_t pSize) - { - if (pData) - { - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - char *p = (char*)realloc((char*)pData - FBXSDK_MEMORY_ALIGNMENT, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - else - { // Mismatch - char *p = (char*)realloc((char*)pData, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - else - { - char *p = (char*)realloc(NULL, pSize + FBXSDK_MEMORY_ALIGNMENT); - memset(p, '#', FBXSDK_MEMORY_ALIGNMENT); - return p + FBXSDK_MEMORY_ALIGNMENT; - } - } - - static void MyFree(void* pData) - { - if (pData==NULL) - return; - FBX_ASSERT(*((char*)pData-1)=='#'); - if (*((char*)pData-1)=='#') - { - free((char*)pData - FBXSDK_MEMORY_ALIGNMENT); - } - else - { // Mismatch - free(pData); - } - } -}; - -static bool gAutoQuit = false; - -int main(int argc, char** argv) -{ - // Set exit function to destroy objects created by the FBX SDK. - atexit(ExitFunction); - - // Use a custom memory allocator - FbxSetMallocHandler(MyMemoryAllocator::MyMalloc); - FbxSetReallocHandler(MyMemoryAllocator::MyRealloc); - FbxSetFreeHandler(MyMemoryAllocator::MyFree); - FbxSetCallocHandler(MyMemoryAllocator::MyCalloc); - - // glut initialisation - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT); - glutInitWindowPosition(100, 100); - glutCreateWindow("ViewScene"); - - // Initialize OpenGL. - const bool lSupportVBO = InitializeOpenGL(); - - // set glut callbacks - glutDisplayFunc(DisplayCallback); - glutReshapeFunc(ReshapeCallback); - glutKeyboardFunc(KeyboardCallback); - glutMouseFunc(MouseCallback); - glutMotionFunc(MotionCallback); - - FbxString lFilePath(""); - for( int i = 1, c = argc; i < c; ++i ) - { - if( FbxString(argv[i]) == "-test" ) gAutoQuit = true; - else if( lFilePath.IsEmpty() ) lFilePath = argv[i]; - } - - gSceneContext = new SceneContext(!lFilePath.IsEmpty() ? lFilePath.Buffer() : NULL, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT, lSupportVBO); - - glutMainLoop(); - - return 0; -} - - -// Function to destroy objects created by the FBX SDK. -void ExitFunction() -{ - delete gSceneContext; -} - -// Create the menus to select the current camera and the current animation stack. -void CreateMenus() -{ - // Create the submenu to select the current camera. - int lCameraMenu = glutCreateMenu(CameraSelectionCallback); - - // Add the producer cameras. - glutAddMenuEntry(FBXSDK_CAMERA_PERSPECTIVE, PRODUCER_PERSPECTIVE_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_TOP, PRODUCER_TOP_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BOTTOM, PRODUCER_BOTTOM_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_FRONT, PRODUCER_FRONT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_BACK, PRODUCER_BACK_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_RIGHT, PRODUCER_RIGHT_ITEM); - glutAddMenuEntry(FBXSDK_CAMERA_LEFT, PRODUCER_LEFT_ITEM); - - // Add the camera switcher if there is at least one camera in the scene. - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (lCameraArray.GetCount() > 0) - { - glutAddMenuEntry(FBXSDK_CAMERA_SWITCHER, CAMERA_SWITCHER_ITEM); - } - - // Add the cameras contained in the scene. - for (int lCameraIndex = 0; lCameraIndex < lCameraArray.GetCount(); ++lCameraIndex) - { - glutAddMenuEntry(lCameraArray[lCameraIndex]->GetName(), lCameraIndex); - } - - // Create the submenu to select the current animation stack. - int lAnimStackMenu = glutCreateMenu(AnimStackSelectionCallback); - int lCurrentAnimStackIndex = 0; - - // Add the animation stack names. - const FbxArray & lAnimStackNameArray = gSceneContext->GetAnimStackNameArray(); - for (int lPoseIndex = 0; lPoseIndex < lAnimStackNameArray.GetCount(); ++lPoseIndex) - { - glutAddMenuEntry(lAnimStackNameArray[lPoseIndex]->Buffer(), lPoseIndex); - - // Track the current animation stack index. - if (lAnimStackNameArray[lPoseIndex]->Compare(gSceneContext->GetScene()->ActiveAnimStackName.Get()) == 0) - { - lCurrentAnimStackIndex = lPoseIndex; - } - } - - // Call the animation stack selection callback immediately to - // initialize the start, stop and current time. - AnimStackSelectionCallback(lCurrentAnimStackIndex); - - const int lShadingModeMenu = glutCreateMenu(ShadingModeSelectionCallback); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_WIREFRAME, MENU_SHADING_MODE_WIREFRAME); - glutAddMenuEntry(MENU_STRING_SHADING_MODE_SHADED, MENU_SHADING_MODE_SHADED); - - int lBindPoseCount = 0; - int lRestPoseCount = 0; - // Create a submenu for bind poses - int lBindPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - const FbxArray & lPoseArray = gSceneContext->GetPoseArray(); - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsBindPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lBindPoseCount++; - } - } - - // Create a submenu for rest poses - int lRestPoseMenu = glutCreateMenu(PoseSelectionCallback); - - // Add the list of bind poses - for (int lPoseIndex = 0; lPoseIndex < lPoseArray.GetCount(); ++lPoseIndex) - { - if (lPoseArray[lPoseIndex]->IsRestPose()) - { - glutAddMenuEntry(lPoseArray[lPoseIndex]->GetName(), lPoseIndex); - lRestPoseCount++; - } - } - - // Create the submenu to go to a specific pose - int lPoseMenu = 0; - if (lBindPoseCount>0 || lRestPoseCount>0) - { - lPoseMenu = glutCreateMenu(PoseSelectionCallback); - if (lBindPoseCount>0) - glutAddSubMenu("Bind Pose", lBindPoseMenu); - if (lRestPoseCount>0) - glutAddSubMenu("Rest Pose", lRestPoseMenu); - } - - // Create the submenu to zoom mode - int lZoomMenu = glutCreateMenu( CameraZoomModeCallback); - glutAddMenuEntry( "Zooming lens", MENU_ZOOM_FOCAL_LENGTH); - glutAddMenuEntry( "Zooming Position", MENU_ZOOM_POSITION); - - // Build the main menu. - glutCreateMenu(MenuSelectionCallback); - glutAddSubMenu("Select Camera", lCameraMenu); - glutAddSubMenu("Select Animation Stack", lAnimStackMenu); - glutAddSubMenu("Select Shading Mode", lShadingModeMenu); - if (lBindPoseCount>0 || lRestPoseCount>0) - glutAddSubMenu("Go to Pose", lPoseMenu); - glutAddSubMenu( "Zoom Mode", lZoomMenu); - glutAddMenuEntry("Play", PLAY_ANIMATION); - glutAddMenuEntry("Exit", MENU_EXIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -// Select the current camera. -void CameraSelectionCallback(int pItem) -{ - const FbxArray & lCameraArray = gSceneContext->GetCameraArray(); - if (pItem == PRODUCER_PERSPECTIVE_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_PERSPECTIVE); - } - else if (pItem == PRODUCER_TOP_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_TOP); - } - else if (pItem == PRODUCER_BOTTOM_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BOTTOM); - } - else if (pItem == PRODUCER_FRONT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_FRONT); - } - else if (pItem == PRODUCER_BACK_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_BACK); - } - else if (pItem == PRODUCER_RIGHT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_RIGHT); - } - else if (pItem == PRODUCER_LEFT_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_LEFT); - } - else if (pItem == CAMERA_SWITCHER_ITEM) - { - gSceneContext->SetCurrentCamera(FBXSDK_CAMERA_SWITCHER); - } - else if (pItem >= 0 && pItem < lCameraArray.GetCount()) - { - gSceneContext->SetCurrentCamera(lCameraArray[pItem]->GetName()); - } -} - -void CameraZoomModeCallback(int pItem) -{ - if( pItem == MENU_ZOOM_FOCAL_LENGTH) - gSceneContext->SetZoomMode( SceneContext::ZOOM_FOCAL_LENGTH); - else - gSceneContext->SetZoomMode(SceneContext::ZOOM_POSITION); -} - -// Select the current animation stack and set the start, stop and current time. -void AnimStackSelectionCallback( int pItem ) -{ - gSceneContext->SetCurrentAnimStack(pItem); -} - -void PoseSelectionCallback(int pItem) -{ - gSceneContext->SetCurrentPoseIndex(pItem); -} - -void ShadingModeSelectionCallback(int pItem) -{ - if (pItem == MENU_SHADING_MODE_WIREFRAME) - { - gSceneContext->SetShadingMode(SHADING_MODE_WIREFRAME); - } - else if (pItem == MENU_SHADING_MODE_SHADED) - { - gSceneContext->SetShadingMode(SHADING_MODE_SHADED); - } -} - -// Exit the application from the main menu. -void MenuSelectionCallback(int pItem) -{ - if (pItem == PLAY_ANIMATION) - { - gSceneContext->SetCurrentPoseIndex(-1); - } - else if (pItem == MENU_EXIT) - { - exit(0); - } -} - - -// Trigger the display of the current frame. -void TimerCallback(int) -{ - // Ask to display the current frame only if necessary. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_REFRESHED) - { - glutPostRedisplay(); - } - - gSceneContext->OnTimerClick(); - - // Call the timer to display the next frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); -} - - -// Refresh the application window. -void DisplayCallback() -{ - gSceneContext->OnDisplay(); - - glutSwapBuffers(); - - // Import the scene if it's ready to load. - if (gSceneContext->GetStatus() == SceneContext::MUST_BE_LOADED) - { - // This function is only called in the first display callback - // to make sure that the application window is opened and a - // status message is displayed before. - if (!gSceneContext->LoadFile()) - exit(1); - - CreateMenus(); - - // Call the timer to display the first frame. - glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0); - } - - if( gAutoQuit ) exit(0); -} - - -// Resize the application window. -void ReshapeCallback(int pWidth, int pHeight) -{ - gSceneContext->OnReshape(pWidth, pHeight); -} - -// Exit the application from the keyboard. -void KeyboardCallback(unsigned char pKey, int /*pX*/, int /*pY*/) -{ - // Exit on ESC key. - if (pKey == 27) - { - exit(0); - } - - gSceneContext->OnKeyboard(pKey); -} - -void MouseCallback(int button, int state, int x, int y) -{ - gSceneContext->OnMouse(button, state, x, y); -} - - -void MotionCallback(int x, int y) -{ - gSceneContext->OnMouseMotion(x, y); -} - - - - diff --git a/sdk/Windows/2019.2/samples/ViewScene/targa.cxx b/sdk/Windows/2019.2/samples/ViewScene/targa.cxx deleted file mode 100755 index 159b7d8..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/targa.cxx +++ /dev/null @@ -1,1115 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without changes, for - * free or for profit, is allowed as long as this copyright notice is kept - * intact. Modified versions must be clearly marked as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -/*@unused@*/ static const char rcsid[] = - "$Id: targa.c,v 1.7 2003/06/21 09:30:53 emikulic Exp $"; - -#define TGA_KEEP_MACROS /* BIT, htole16, letoh16 */ -#ifdef __cplusplus -extern "C" { -#endif -#include "targa.h" -#ifdef __cplusplus -} -#endif - -#include -#include /* memcpy, memcmp */ - -#define SANE_DEPTH(x) ((x) == 8 || (x) == 16 || (x) == 24 || (x) == 32) -#define UNMAP_DEPTH(x) ((x) == 16 || (x) == 24 || (x) == 32) - -#ifdef _MSC_VER -#pragma warning(disable:4244) -#pragma warning(disable:4996) -#endif - -static const char tga_id[] = - "\0\0\0\0" /* extension area offset */ - "\0\0\0\0" /* developer directory offset */ - "TRUEVISION-XFILE."; - -static const size_t tga_id_length = 26; /* tga_id + \0 */ - - - -/* helpers */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp); -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row); -typedef enum { RAW, RLE } packet_type; -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp); -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type); - - - -uint8_t tga_get_attribute_bits(const tga_image *tga) -{ - return tga->image_descriptor & TGA_ATTRIB_BITS; -} - -int tga_is_right_to_left(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_R_TO_L_BIT) != 0; -} - -int tga_is_top_to_bottom(const tga_image *tga) -{ - return (tga->image_descriptor & TGA_T_TO_B_BIT) != 0; -} - -int tga_is_colormapped(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP || - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE - ); -} - -int tga_is_rle(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_COLORMAP_RLE || - tga->image_type == TGA_IMAGE_TYPE_BGR_RLE || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - -int tga_is_mono(const tga_image *tga) -{ - return ( - tga->image_type == TGA_IMAGE_TYPE_MONO || - tga->image_type == TGA_IMAGE_TYPE_MONO_RLE - ); -} - - - -/* --------------------------------------------------------------------------- - * Convert the numerical into a verbose error string. - * - * Returns: an error string - */ -const char *tga_error(const tga_result errcode) -{ - switch (errcode) - { - case TGA_NOERR: - return "no error"; - case TGAERR_FOPEN: - return "error opening file"; - case TGAERR_EOF: - return "premature end of file"; - case TGAERR_WRITE: - return "error writing to file"; - case TGAERR_CMAP_TYPE: - return "invalid color map type"; - case TGAERR_IMG_TYPE: - return "invalid image type"; - case TGAERR_NO_IMG: - return "no image data included"; - case TGAERR_CMAP_MISSING: - return "color-mapped image without color map"; - case TGAERR_CMAP_PRESENT: - return "non-color-mapped image with extraneous color map"; - case TGAERR_CMAP_LENGTH: - return "color map has zero length"; - case TGAERR_CMAP_DEPTH: - return "invalid color map depth"; - case TGAERR_ZERO_SIZE: - return "the image dimensions are zero"; - case TGAERR_PIXEL_DEPTH: - return "invalid pixel depth"; - case TGAERR_NO_MEM: - return "out of memory"; - case TGAERR_NOT_CMAP: - return "image is not color mapped"; - case TGAERR_RLE: - return "RLE data is corrupt"; - case TGAERR_INDEX_RANGE: - return "color map index out of range"; - case TGAERR_MONO: - return "image is mono"; - default: - return "unknown error code"; - } -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from a file named to . This is just a - * wrapper around tga_read_from_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_read(tga_image *dest, const char *filename) -{ - tga_result result; - FILE *fp = fopen(filename, "rb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_read_from_FILE(dest, fp); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Read a Targa image from to . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. In the - * case of failure, the contents of dest are not guaranteed to be - * valid. - */ -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp) -{ - #define BARF(errcode) \ - { tga_free_buffers(dest); return errcode; } - - #define READ(destptr, size) \ - if (fread(destptr, size, 1, fp) != 1) BARF(TGAERR_EOF) - - #define READ16(dest) \ - { if (fread(&(dest), 2, 1, fp) != 1) BARF(TGAERR_EOF); \ - dest = letoh16(dest); } - - dest->image_id = NULL; - dest->color_map_data = NULL; - dest->image_data = NULL; - - READ(&dest->image_id_length,1); - READ(&dest->color_map_type,1); - if (dest->color_map_type != TGA_COLOR_MAP_ABSENT && - dest->color_map_type != TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_TYPE); - - READ(&dest->image_type, 1); - if (dest->image_type == TGA_IMAGE_TYPE_NONE) - BARF(TGAERR_NO_IMG); - - if (dest->image_type != TGA_IMAGE_TYPE_COLORMAP && - dest->image_type != TGA_IMAGE_TYPE_BGR && - dest->image_type != TGA_IMAGE_TYPE_MONO && - dest->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - dest->image_type != TGA_IMAGE_TYPE_BGR_RLE && - dest->image_type != TGA_IMAGE_TYPE_MONO_RLE) - BARF(TGAERR_IMG_TYPE); - - if (tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_ABSENT) - BARF(TGAERR_CMAP_MISSING); - - if (!tga_is_colormapped(dest) && - dest->color_map_type == TGA_COLOR_MAP_PRESENT) - BARF(TGAERR_CMAP_PRESENT); - - READ16(dest->color_map_origin); - READ16(dest->color_map_length); - READ(&dest->color_map_depth, 1); - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (dest->color_map_length == 0) - BARF(TGAERR_CMAP_LENGTH); - - if (!UNMAP_DEPTH(dest->color_map_depth)) - BARF(TGAERR_CMAP_DEPTH); - } - - READ16(dest->origin_x); - READ16(dest->origin_y); - READ16(dest->width); - READ16(dest->height); - - if (dest->width == 0 || dest->height == 0) - BARF(TGAERR_ZERO_SIZE); - - READ(&dest->pixel_depth, 1); - if (!SANE_DEPTH(dest->pixel_depth) || - (dest->pixel_depth != 8 && tga_is_colormapped(dest)) ) - BARF(TGAERR_PIXEL_DEPTH); - - READ(&dest->image_descriptor, 1); - - if (dest->image_id_length > 0) - { - dest->image_id = (uint8_t*)malloc(dest->image_id_length); - if (dest->image_id == NULL) BARF(TGAERR_NO_MEM); - READ(dest->image_id, dest->image_id_length); - } - - if (dest->color_map_type == TGA_COLOR_MAP_PRESENT) - { - dest->color_map_data = (uint8_t*)malloc( - (dest->color_map_origin + dest->color_map_length) * - dest->color_map_depth / 8); - if (dest->color_map_data == NULL) BARF(TGAERR_NO_MEM); - READ(dest->color_map_data + - (dest->color_map_origin * dest->color_map_depth / 8), - dest->color_map_length * dest->color_map_depth / 8); - } - - dest->image_data = (uint8_t*) malloc( - dest->width * dest->height * dest->pixel_depth / 8); - if (dest->image_data == NULL) - BARF(TGAERR_NO_MEM); - - if (tga_is_rle(dest)) - { - /* read RLE */ - tga_result result = tga_read_rle(dest, fp); - if (result != TGA_NOERR) BARF(result); - } - else - { - /* uncompressed */ - READ(dest->image_data, - dest->width * dest->height * dest->pixel_depth / 8); - } - - return TGA_NOERR; - #undef BARF - #undef READ - #undef READ16 -} - - - -/* --------------------------------------------------------------------------- - * Helper function for tga_read_from_FILE(). Decompresses RLE image data from - * . Assumes header fields are set correctly. - */ -static tga_result tga_read_rle(tga_image *dest, FILE *fp) -{ - #define RLE_BIT BIT(7) - #define READ(dest, size) \ - if (fread(dest, size, 1, fp) != 1) return TGAERR_EOF - - uint8_t *pos; - uint32_t p_loaded = 0, - p_expected = dest->width * dest->height; - uint8_t bpp = dest->pixel_depth/8; /* bytes per pixel */ - - pos = dest->image_data; - - while ((p_loaded < p_expected) && !feof(fp)) - { - uint8_t b; - READ(&b, 1); - if (b & RLE_BIT) - { - /* is an RLE packet */ - uint8_t count, tmp[4], i; - - count = (b & ~RLE_BIT) + 1; - READ(tmp, bpp); - - for (i=0; i p_expected) return TGAERR_RLE; - memcpy(pos, tmp, bpp); - pos += bpp; - } - } - else /* RAW packet */ - { - uint8_t count; - - count = (b & ~RLE_BIT) + 1; - if (p_loaded + count > p_expected) return TGAERR_RLE; - - p_loaded += count; - READ(pos, bpp*count); - pos += count * bpp; - } - } - return TGA_NOERR; - #undef RLE_BIT - #undef READ -} - - - -/* --------------------------------------------------------------------------- - * Write a Targa image to a file named from . This is just a - * wrapper around tga_write_to_FILE(). - * - * Returns: TGA_NOERR on success, or a matching TGAERR_* code on failure. - */ -tga_result tga_write(const char *filename, const tga_image *src) -{ - tga_result result; - FILE *fp = fopen(filename, "wb"); - if (fp == NULL) return TGAERR_FOPEN; - result = tga_write_to_FILE(fp, src); - fclose(fp); - return result; -} - - - -/* --------------------------------------------------------------------------- - * Write one row of an image to using RLE. This is a helper function - * called from tga_write_to_FILE(). It assumes that has its header - * fields set up correctly. - */ -#define PIXEL(ofs) ( row + (ofs)*bpp ) -static tga_result tga_write_row_RLE(FILE *fp, - const tga_image *src, const uint8_t *row) -{ - #define WRITE(src, size) \ - if (fwrite(src, size, 1, fp) != 1) return TGAERR_WRITE - - uint16_t pos = 0; - uint16_t bpp = src->pixel_depth / 8; - - while (pos < src->width) - { - packet_type type = rle_packet_type(row, pos, src->width, bpp); - uint8_t len = rle_packet_len(row, pos, src->width, bpp, type); - uint8_t packet_header; - - packet_header = len - 1; - if (type == RLE) packet_header |= BIT(7); - - WRITE(&packet_header, 1); - if (type == RLE) - { - WRITE(PIXEL(pos), bpp); - } - else /* type == RAW */ - { - WRITE(PIXEL(pos), bpp*len); - } - - pos += len; - } - - return TGA_NOERR; - #undef WRITE -} - - - -/* --------------------------------------------------------------------------- - * Determine whether the next packet should be RAW or RLE for maximum - * efficiency. This is a helper function called from rle_packet_len() and - * tga_write_row_RLE(). - */ -#define SAME(ofs1, ofs2) (memcmp(PIXEL(ofs1), PIXEL(ofs2), bpp) == 0) - -static packet_type rle_packet_type(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp) -{ - if (pos == width - 1) return RAW; /* one pixel */ - if (SAME(pos,pos+1)) /* dupe pixel */ - { - if (bpp > 1) return RLE; /* inefficient for bpp=1 */ - - /* three repeats makes the bpp=1 case efficient enough */ - if ((pos < width - 2) && SAME(pos+1,pos+2)) return RLE; - } - return RAW; -} - - - -/* --------------------------------------------------------------------------- - * Find the length of the current RLE packet. This is a helper function - * called from tga_write_row_RLE(). - */ -static uint8_t rle_packet_len(const uint8_t *row, const uint16_t pos, - const uint16_t width, const uint16_t bpp, const packet_type type) -{ - uint8_t len = 2; - - if (pos == width - 1) return 1; - if (pos == width - 2) return 2; - - if (type == RLE) - { - while (pos + len < width) - { - if (SAME(pos, pos+len)) - len++; - else - return len; - - if (len == 128) return 128; - } - } - else /* type == RAW */ - { - while (pos + len < width) - { - if (rle_packet_type(row, pos+len, width, bpp) == RAW) - len++; - else - return len; - if (len == 128) return 128; - } - } - return len; /* hit end of row (width) */ -} -#undef SAME -#undef PIXEL - - - -/* --------------------------------------------------------------------------- - * Writes a Targa image to from . - * - * Returns: TGA_NOERR on success, or a TGAERR_* code on failure. - * On failure, the contents of the file are not guaranteed - * to be valid. - */ -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src) -{ - #define WRITE(srcptr, size) \ - if (fwrite(srcptr, size, 1, fp) != 1) return TGAERR_WRITE - - #define WRITE16(src) \ - { uint16_t _temp = htole16(src); \ - if (fwrite(&_temp, 2, 1, fp) != 1) return TGAERR_WRITE; } - - WRITE(&src->image_id_length, 1); - - if (src->color_map_type != TGA_COLOR_MAP_ABSENT && - src->color_map_type != TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_TYPE; - WRITE(&src->color_map_type, 1); - - if (src->image_type == TGA_IMAGE_TYPE_NONE) - return TGAERR_NO_IMG; - if (src->image_type != TGA_IMAGE_TYPE_COLORMAP && - src->image_type != TGA_IMAGE_TYPE_BGR && - src->image_type != TGA_IMAGE_TYPE_MONO && - src->image_type != TGA_IMAGE_TYPE_COLORMAP_RLE && - src->image_type != TGA_IMAGE_TYPE_BGR_RLE && - src->image_type != TGA_IMAGE_TYPE_MONO_RLE) - return TGAERR_IMG_TYPE; - WRITE(&src->image_type, 1); - - if (tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_ABSENT) - return TGAERR_CMAP_MISSING; - if (!tga_is_colormapped(src) && - src->color_map_type == TGA_COLOR_MAP_PRESENT) - return TGAERR_CMAP_PRESENT; - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - { - if (src->color_map_length == 0) - return TGAERR_CMAP_LENGTH; - - if (!UNMAP_DEPTH(src->color_map_depth)) - return TGAERR_CMAP_DEPTH; - } - WRITE16(src->color_map_origin); - WRITE16(src->color_map_length); - WRITE(&src->color_map_depth, 1); - - WRITE16(src->origin_x); - WRITE16(src->origin_y); - - if (src->width == 0 || src->height == 0) - return TGAERR_ZERO_SIZE; - WRITE16(src->width); - WRITE16(src->height); - - if (!SANE_DEPTH(src->pixel_depth) || - (src->pixel_depth != 8 && tga_is_colormapped(src)) ) - return TGAERR_PIXEL_DEPTH; - WRITE(&src->pixel_depth, 1); - - WRITE(&src->image_descriptor, 1); - - if (src->image_id_length > 0) - WRITE(&src->image_id, src->image_id_length); - - if (src->color_map_type == TGA_COLOR_MAP_PRESENT) - WRITE(src->color_map_data + - (src->color_map_origin * src->color_map_depth / 8), - src->color_map_length * src->color_map_depth / 8); - - if (tga_is_rle(src)) - { - uint16_t row; - for (row=0; rowheight; row++) - { - tga_result result = tga_write_row_RLE(fp, src, - src->image_data + row*src->width*src->pixel_depth/8); - if (result != TGA_NOERR) return result; - } - } - else - { - /* uncompressed */ - WRITE(src->image_data, - src->width * src->height * src->pixel_depth / 8); - } - - WRITE(tga_id, tga_id_length); - - return TGA_NOERR; - #undef WRITE - #undef WRITE16 -} - - - -/* Convenient writing functions --------------------------------------------*/ - -/* - * This is just a helper function to initialise the header fields in a - * tga_image struct. - */ -static void init_tga_image(tga_image *img, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - img->image_id_length = 0; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->image_type = TGA_IMAGE_TYPE_NONE; /* override this below! */ - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - img->origin_x = 0; - img->origin_y = 0; - img->width = width; - img->height = height; - img->pixel_depth = depth; - img->image_descriptor = TGA_T_TO_B_BIT; - img->image_id = NULL; - img->color_map_data = NULL; - img->image_data = image; -} - - - -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO; - return tga_write(filename, &img); -} - - - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height) -{ - tga_image img; - init_tga_image(&img, image, width, height, 8); - img.image_type = TGA_IMAGE_TYPE_MONO_RLE; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - return tga_write(filename, &img); -} - - - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Note: this function will MODIFY */ -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth) -{ - tga_image img; - init_tga_image(&img, image, width, height, depth); - img.image_type = TGA_IMAGE_TYPE_BGR_RLE; - (void)tga_swap_red_blue(&img); - return tga_write(filename, &img); -} - - - -/* Convenient manipulation functions ---------------------------------------*/ - -/* --------------------------------------------------------------------------- - * Horizontally flip the image in place. Reverses the right-to-left bit in - * the image descriptor. - */ -tga_result tga_flip_horiz(tga_image *img) -{ - uint16_t row; - size_t bpp; - uint8_t *left, *right; - int r_to_l; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - - for (row=0; rowheight; row++) - { - left = img->image_data + row * img->width * bpp; - right = left + (img->width - 1) * bpp; - - /* reverse from left to right */ - while (left < right) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, left, bpp); - memcpy(left, right, bpp); - memcpy(right, buffer, bpp); - - left += bpp; - right -= bpp; - } - } - - /* Correct image_descriptor's left-to-right-ness. */ - r_to_l = tga_is_right_to_left(img); - img->image_descriptor &= ~TGA_R_TO_L_BIT; /* mask out r-to-l bit */ - if (!r_to_l) - /* was l-to-r, need to set r_to_l */ - img->image_descriptor |= TGA_R_TO_L_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Vertically flip the image in place. Reverses the top-to-bottom bit in - * the image descriptor. - */ -tga_result tga_flip_vert(tga_image *img) -{ - uint16_t col; - size_t bpp, line; - uint8_t *top, *bottom; - int t_to_b; - - if (!SANE_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - bpp = (size_t)(img->pixel_depth / 8); /* bytes per pixel */ - line = bpp * img->width; /* bytes per line */ - - for (col=0; colwidth; col++) - { - top = img->image_data + col * bpp; - bottom = top + (img->height - 1) * line; - - /* reverse from top to bottom */ - while (top < bottom) - { - uint8_t buffer[4]; - - /* swap */ - memcpy(buffer, top, bpp); - memcpy(top, bottom, bpp); - memcpy(bottom, buffer, bpp); - - top += line; - bottom -= line; - } - } - - /* Correct image_descriptor's top-to-bottom-ness. */ - t_to_b = tga_is_top_to_bottom(img); - img->image_descriptor &= ~TGA_T_TO_B_BIT; /* mask out t-to-b bit */ - if (!t_to_b) - /* was b-to-t, need to set t_to_b */ - img->image_descriptor |= TGA_T_TO_B_BIT; - /* else bit is already rubbed out */ - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Convert a color-mapped image to unmapped BGR. Reallocates image_data to a - * bigger size, then converts the image backwards to avoid using a secondary - * buffer. Alters the necessary header fields and deallocates the color map. - */ -tga_result tga_color_unmap(tga_image *img) -{ - uint8_t bpp = img->color_map_depth / 8; /* bytes per pixel */ - int pos; - void *tmp; - - if (!tga_is_colormapped(img)) return TGAERR_NOT_CMAP; - if (img->pixel_depth != 8) return TGAERR_PIXEL_DEPTH; - if (!SANE_DEPTH(img->color_map_depth)) return TGAERR_CMAP_DEPTH; - - tmp = realloc(img->image_data, img->width * img->height * bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - for (pos = img->width * img->height - 1; pos >= 0; pos--) - { - uint8_t c_index = img->image_data[pos]; - uint8_t *c_bgr = img->color_map_data + (c_index * bpp); - - if (c_index >= img->color_map_origin + img->color_map_length) - return TGAERR_INDEX_RANGE; - - memcpy(img->image_data + (pos*bpp), c_bgr, (size_t)bpp); - } - - /* clean up */ - img->image_type = TGA_IMAGE_TYPE_BGR; - img->pixel_depth = img->color_map_depth; - - free(img->color_map_data); - img->color_map_data = NULL; - img->color_map_type = TGA_COLOR_MAP_ABSENT; - img->color_map_origin = 0; - img->color_map_length = 0; - img->color_map_depth = 0; - - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Return a pointer to a given pixel. Accounts for image orientation (T_TO_B, - * R_TO_L, etc). Returns NULL if the pixel is out of range. - */ -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y) -{ - if (x >= img->width || y >= img->height) - return NULL; - - if (!tga_is_top_to_bottom(img)) y = img->height - 1 - y; - if (tga_is_right_to_left(img)) x = img->width - 1 - x; - return img->image_data + (x + y * img->width) * img->pixel_depth/8; -} - - - -/* --------------------------------------------------------------------------- - * Unpack the pixel at the src pointer according to bits. Any of b,g,r,a can - * be set to NULL if not wanted. Returns TGAERR_PIXEL_DEPTH if a stupid - * number of bits is given. - */ -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a) -{ - switch (bits) - { - case 32: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = src[3]; - break; - - case 24: - if (b) *b = src[0]; - if (g) *g = src[1]; - if (r) *r = src[2]; - if (a) *a = 0; - break; - - case 16: - { - uint16_t src16 = (uint16_t)(src[1] << 8) | (uint16_t)src[0]; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - if (b) *b = (uint8_t)(((src16 ) & FIVE_BITS) << 3); - if (g) *g = (uint8_t)(((src16 >> 5) & FIVE_BITS) << 3); - if (r) *r = (uint8_t)(((src16 >> 10) & FIVE_BITS) << 3); - if (a) *a = (uint8_t)( (src16 & BIT(15)) ? 255 : 0 ); - #undef FIVE_BITS - break; - } - - case 8: - if (b) *b = *src; - if (g) *g = *src; - if (r) *r = *src; - if (a) *a = 0; - break; - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Pack the pixel at the dest pointer according to bits. Returns - * TGAERR_PIXEL_DEPTH if a stupid number of bits is given. - */ -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a) -{ - switch (bits) - { - case 32: - dest[0] = b; - dest[1] = g; - dest[2] = r; - dest[3] = a; - break; - - case 24: - dest[0] = b; - dest[1] = g; - dest[2] = r; - break; - - case 16: - { - uint16_t tmp; - - #define FIVE_BITS (BIT(0)|BIT(1)|BIT(2)|BIT(3)|BIT(4)) - tmp = (uint16_t)((b >> 3) & FIVE_BITS); - tmp |= ((g >> 3) & FIVE_BITS) << 5; - tmp |= ((r >> 3) & FIVE_BITS) << 10; - if (a > 127) tmp |= BIT(15); - #undef FIVE_BITS - - dest[0] = (uint8_t) (tmp & 0x00FF); - dest[1] = (uint8_t)((tmp & 0xFF00) >> 8); - break; - } - - default: - return TGAERR_PIXEL_DEPTH; - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Desaturate the specified Targa using the specified coefficients: - * output = ( red * cr + green * cg + blue * cb ) / dv - */ -tga_result tga_desaturate(tga_image *img, const int cr, const int cg, - const int cb, const int dv) -{ - uint8_t bpp = img->pixel_depth / 8; /* bytes per pixel */ - uint8_t *dest, *src, *tmp; - - if (tga_is_mono(img)) return TGAERR_MONO; - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width*img->height*bpp; - src += bpp) - { - uint8_t b, g, r; - (void)tga_unpack_pixel(src, img->pixel_depth, &b, &g, &r, NULL); - - *dest = (uint8_t)( ( (int)b * cb + - (int)g * cg + - (int)r * cr ) / dv ); - dest++; - } - - /* shrink */ - tmp = (uint8_t*)realloc(img->image_data, img->width * img->height); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - - img->pixel_depth = 8; - img->image_type = TGA_IMAGE_TYPE_MONO; - return TGA_NOERR; -} - -tga_result tga_desaturate_rec_601_1(tga_image *img) -{ - return tga_desaturate(img, 2989, 5866, 1145, 10000); -} - -tga_result tga_desaturate_rec_709(tga_image *img) -{ - return tga_desaturate(img, 2126, 7152, 722, 10000); -} - -tga_result tga_desaturate_itu(tga_image *img) -{ - return tga_desaturate(img, 2220, 7067, 713, 10000); -} - -tga_result tga_desaturate_avg(tga_image *img) -{ - return tga_desaturate(img, 1,1,1, 3); -} - - - -/* --------------------------------------------------------------------------- - * Convert an image to the given pixel depth. (one of 32, 24, 16) Avoids - * using a secondary buffer to do the conversion. - */ -tga_result tga_convert_depth(tga_image *img, const uint8_t bits) -{ - size_t src_size, dest_size; - uint8_t src_bpp, dest_bpp; - uint8_t *src, *dest; - - if (!UNMAP_DEPTH(bits) || - !SANE_DEPTH(img->pixel_depth) - ) return TGAERR_PIXEL_DEPTH; - - if (tga_is_colormapped(img)) - { - tga_result result = tga_color_unmap(img); - if (result != TGA_NOERR) return result; - } - - if (img->pixel_depth == bits) return TGA_NOERR; /* no op, no err */ - - src_bpp = img->pixel_depth / 8; - dest_bpp = bits / 8; - - src_size = (size_t)( img->width * img->height * src_bpp ); - dest_size = (size_t)( img->width * img->height * dest_bpp ); - - if (src_size > dest_size) - { - void *tmp; - - /* convert forwards */ - dest = img->image_data; - for (src = img->image_data; - src < img->image_data + img->width * img->height * src_bpp; - src += src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest += dest_bpp; - } - - /* shrink */ - tmp = realloc(img->image_data, img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*)tmp; - } - else - { - /* expand */ - void *tmp = realloc(img->image_data, - img->width * img->height * dest_bpp); - if (tmp == NULL) return TGAERR_NO_MEM; - img->image_data = (uint8_t*) tmp; - - /* convert backwards */ - dest = img->image_data + (img->width*img->height - 1) * dest_bpp; - for (src = img->image_data + (img->width*img->height - 1) * src_bpp; - src >= img->image_data; - src -= src_bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(src, img->pixel_depth, &r, &g, &b, &a); - (void)tga_pack_pixel(dest, bits, r, g, b, a); - dest -= dest_bpp; - } - } - - img->pixel_depth = bits; - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Swap red and blue (RGB becomes BGR and vice verse). (in-place) - */ -tga_result tga_swap_red_blue(tga_image *img) -{ - uint8_t *ptr; - uint8_t bpp = img->pixel_depth / 8; - - if (!UNMAP_DEPTH(img->pixel_depth)) return TGAERR_PIXEL_DEPTH; - - for (ptr = img->image_data; - ptr < img->image_data + (img->width * img->height - 1) * bpp; - ptr += bpp) - { - uint8_t r,g,b,a; - (void)tga_unpack_pixel(ptr, img->pixel_depth, &b,&g,&r,&a); - (void)tga_pack_pixel(ptr, img->pixel_depth, r,g,b,a); - } - return TGA_NOERR; -} - - - -/* --------------------------------------------------------------------------- - * Free the image_id, color_map_data and image_data buffers of the specified - * tga_image, if they're not already NULL. - */ -void tga_free_buffers(tga_image *img) -{ - if (img->image_id != NULL) - { - free(img->image_id); - img->image_id = NULL; - } - if (img->color_map_data != NULL) - { - free(img->color_map_data); - img->color_map_data = NULL; - } - if (img->image_data != NULL) - { - free(img->image_data); - img->image_data = NULL; - } -} - -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ - diff --git a/sdk/Windows/2019.2/samples/ViewScene/targa.h b/sdk/Windows/2019.2/samples/ViewScene/targa.h deleted file mode 100755 index ed6a59c..0000000 --- a/sdk/Windows/2019.2/samples/ViewScene/targa.h +++ /dev/null @@ -1,209 +0,0 @@ -/* --------------------------------------------------------------------------- - * Truevision Targa Reader/Writer - * $Id: targa.h,v 1.7 2003/06/21 09:30:53 emikulic Exp $ - * - * Copyright (C) 2001-2003, Emil Mikulic. - * - * Source and binary redistribution of this code, with or without - * changes, for free or for profit, is allowed as long as this copyright - * notice is kept intact. Modified versions have to be clearly marked - * as modified. - * - * This code is provided without any warranty. The copyright holder is - * not liable for anything bad that might happen as a result of the - * code. - * -------------------------------------------------------------------------*/ - -#ifndef _TARGA_H_ -#define _TARGA_H_ - -#include -#ifndef _MSC_VER -# include -#else /* MSVC */ - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif - -#define BIT(index) (1 << (index)) - -#ifdef _BIG_ENDIAN -# define htole16(x) ( (((x) & 0x00FF) << 8) | (((x) & 0xFF00) >> 8) ) -# define letoh16(x) htole16(x) -#else /* little endian */ -# define htole16(x) (x) -# define letoh16(x) (x) -#endif /* endianness */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Targa image and header fields -------------------------------------------*/ -typedef struct -{ - /* Note that Targa is stored in little-endian order */ - uint8_t image_id_length; - - uint8_t color_map_type; - /* color map = palette */ - #define TGA_COLOR_MAP_ABSENT 0 - #define TGA_COLOR_MAP_PRESENT 1 - - uint8_t image_type; - #define TGA_IMAGE_TYPE_NONE 0 /* no image data */ - #define TGA_IMAGE_TYPE_COLORMAP 1 /* uncompressed, color-mapped */ - #define TGA_IMAGE_TYPE_BGR 2 /* uncompressed, true-color */ - #define TGA_IMAGE_TYPE_MONO 3 /* uncompressed, black and white */ - #define TGA_IMAGE_TYPE_COLORMAP_RLE 9 /* run-length, color-mapped */ - #define TGA_IMAGE_TYPE_BGR_RLE 10 /* run-length, true-color */ - #define TGA_IMAGE_TYPE_MONO_RLE 11 /* run-length, black and white */ - - /* color map specification */ - uint16_t color_map_origin; /* index of first entry */ - uint16_t color_map_length; /* number of entries included */ - uint8_t color_map_depth; /* number of bits per entry */ - - /* image specification */ - uint16_t origin_x; - uint16_t origin_y; - uint16_t width; - uint16_t height; - uint8_t pixel_depth; - - uint8_t image_descriptor; - /* bits 0,1,2,3 - attribute bits per pixel - * bit 4 - set if image is stored right-to-left - * bit 5 - set if image is stored top-to-bottom - * bits 6,7 - unused (must be set to zero) - */ - #define TGA_ATTRIB_BITS (uint8_t)(BIT(0)|BIT(1)|BIT(2)|BIT(3)) - #define TGA_R_TO_L_BIT (uint8_t)BIT(4) - #define TGA_T_TO_B_BIT (uint8_t)BIT(5) - #define TGA_UNUSED_BITS (uint8_t)(BIT(6)|BIT(7)) - /* Note: right-to-left order is not honored by some Targa readers */ - - uint8_t *image_id; - /* The length of this field is given in image_id_length, it's read raw - * from the file so it's not not guaranteed to be zero-terminated. If - * it's not NULL, it needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *color_map_data; - /* See the "color map specification" fields above. If not NULL, this - * field needs to be deallocated. see: tga_free_buffers() - */ - - uint8_t *image_data; - /* Follows image specification fields (see above) */ - - /* Extension area and developer area are silently ignored. The Targa 2.0 - * spec says we're not required to read or write them. - */ - -} tga_image; - - - -/* For decoding header bits ------------------------------------------------*/ -uint8_t tga_get_attribute_bits(const tga_image *tga); -int tga_is_right_to_left(const tga_image *tga); -int tga_is_top_to_bottom(const tga_image *tga); -int tga_is_colormapped(const tga_image *tga); -int tga_is_rle(const tga_image *tga); -int tga_is_mono(const tga_image *tga); - - - -/* Error handling ----------------------------------------------------------*/ -typedef enum { - TGA_NOERR, - TGAERR_FOPEN, - TGAERR_EOF, - TGAERR_WRITE, - TGAERR_CMAP_TYPE, - TGAERR_IMG_TYPE, - TGAERR_NO_IMG, - TGAERR_CMAP_MISSING, - TGAERR_CMAP_PRESENT, - TGAERR_CMAP_LENGTH, - TGAERR_CMAP_DEPTH, - TGAERR_ZERO_SIZE, - TGAERR_PIXEL_DEPTH, - TGAERR_NO_MEM, - TGAERR_NOT_CMAP, - TGAERR_RLE, - TGAERR_INDEX_RANGE, - TGAERR_MONO -} tga_result; - -const char *tga_error(const tga_result errcode); - - - -/* Load/save ---------------------------------------------------------------*/ -tga_result tga_read(tga_image *dest, const char *filename); -tga_result tga_read_from_FILE(tga_image *dest, FILE *fp); -tga_result tga_write(const char *filename, const tga_image *src); -tga_result tga_write_to_FILE(FILE *fp, const tga_image *src); - - - -/* Convenient writing functions --------------------------------------------*/ -tga_result tga_write_mono(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_mono_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height); - -tga_result tga_write_bgr(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_bgr_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -/* These functions will use tga_swap_red_blue to MODIFY your image data */ -tga_result tga_write_rgb(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - -tga_result tga_write_rgb_rle(const char *filename, uint8_t *image, - const uint16_t width, const uint16_t height, const uint8_t depth); - - - -/* Manipulation ------------------------------------------------------------*/ -tga_result tga_flip_horiz(tga_image *img); -tga_result tga_flip_vert(tga_image *img); -tga_result tga_color_unmap(tga_image *img); - -uint8_t *tga_find_pixel(const tga_image *img, uint16_t x, uint16_t y); -tga_result tga_unpack_pixel(const uint8_t *src, const uint8_t bits, - uint8_t *b, uint8_t *g, uint8_t *r, uint8_t *a); -tga_result tga_pack_pixel(uint8_t *dest, const uint8_t bits, - const uint8_t b, const uint8_t g, const uint8_t r, const uint8_t a); - -tga_result tga_desaturate(tga_image *img, - const int cr, const int cg, const int cb, const int dv); -tga_result tga_desaturate_rec_601_1(tga_image *img); -tga_result tga_desaturate_rec_709(tga_image *img); -tga_result tga_desaturate_itu(tga_image *img); -tga_result tga_desaturate_avg(tga_image *img); -tga_result tga_convert_depth(tga_image *img, const uint8_t bits); -tga_result tga_swap_red_blue(tga_image *img); - -void tga_free_buffers(tga_image *img); - - - -#ifndef TGA_KEEP_MACROS /* useful for targa.c */ -# undef htole16 -# undef letoh16 -#endif - -#ifdef __cplusplus -} // extern C -#endif - -#endif /* !_TARGA_H_ */ -/* vim:set tabstop=4 shiftwidth=4 textwidth=78 expandtab: */ diff --git a/sdk/Windows/2019.2/uninstall.exe b/sdk/Windows/2019.2/uninstall.exe deleted file mode 100755 index 939af95..0000000 Binary files a/sdk/Windows/2019.2/uninstall.exe and /dev/null differ